analyse module¶
Package for dealing with analysis methods of the ampObject and generating reports Copyright: Joshua Steer 2020, Joshua.Steer@soton.ac.uk
-
CMapOut
(amp, colors) Colour Map with 4 views (copied Josh’s code)
-
MeasurementsOut
(amp, pos) Calculates perimeter of limb/cast at intervals from mid-patella to the end of stump Takes position of mid-patella (x,y,z) coordinates as input Also creates images of limb views and graphs of CSA/Widths, which are used in the PDF. Calls the function responsible for adding the information to the PDF template. TODO: Split this into functions for each part i.e. Volume measure, CSA, widths
Returns: Return type: The path to the output file
-
calc_csa
(polys) Calculate the cross sectional area of each polygon from the slicing of the AmpObject
Parameters: polys (list) – A list of numpy arrays, each array contains the vertices of the polygon generated from the slice. Generate using ampscan.analyse.create_slices() Returns: csa – Returns the cross-sectional area of the limb in mm^2 along the axis Return type: array_like
-
calc_perimeter
(polys) Calculate the perimeter of each polygon from the slicing of the AmpObject
Parameters: polys (list) – A list of numpy arrays, each array contains the vertices of the polygon generated from the slice. Generate using ampscan.analyse.create_slices() Returns: perimeter – Returns the perimeter of the limb in mm along the axis Return type: array_like
-
calc_volume_closed
(amp_in, return_closed=False) Calculates the volume of a closed surface. If the surface is not closed the algorithm fills in the holes using a simple hole filling algorithm, the surface without holes can be accessed if return_closed is set to True.
Parameters: - amp (AmpObject) – The AmpObject to analyse
- return_closed (bool, default False) – Indicate whether to return the shape with holes filled in
Returns: - vol (float) – The volume of the AmpObject
- amp (AmpObject) – If return_closed is True, then the closed shape is returned
-
calc_widths
(polys) Calculate the coronal and sagittal widths of each polygon from the slicing of the AmpObject
Parameters: polys (list) – A list of numpy arrays, each array contains the vertices of the polygon generated from the slice. Generate using ampscan.analyse.create_slices() Returns: - cor_width (array_like) – Returns the coronal width in mm along the axis
- sag_width (array_like) – Returns the sagittal width in mm along the axis
-
create_slices
(amp, *args, typ='slices', axis=2) Generate polygons from planar slices through the AmpObject. The slices are either defined as a list of positions in some axis
Parameters: - amp (AmpObject) – The AmpObject to analyse
- slices (array_like) – An array of the slice positions to take in the specified axis
- limits (array_like) – The limits of the slices, either in real world units or normalised depending on that specified in typ
- intervals (float) – The distance between slices, use in conjunction with
- typ (str, 'slices', 'real_intervals', 'norm_intervals') – The height of the slice planes
- axis (int, default 2) – The index of the axis to take the slices along
Returns: polys – A list of numpy arrays, each array contains the vertices of the polygon generated from the slice
Return type: list
Examples
>>> amp = AmpObject(filename) >>> polys = create_slices(amp, [0.05, 0.95], 0.01, typ='norm_intervals', axis=2) >>> polys = create_slices(amp, [-150, -100, -50, 0], typ='slices', axis=2) >>> polys = create_slices(amp, [-150, 0], 10, typ='real_intervals', axis=2)
-
est_volume
(polys) Estimate the volume of the limb using bounds of the slices
Parameters: polys (list) – A list of numpy arrays, each array contains the vertices of the polygon generated from the slice. Generate using ampscan.analyse.create_slices() Returns: Volume – Returns the estimated volume of the limb in mm^3 along the axis Return type: float
-
logEuPath
(arr) Calculate the eularian path for an array of edges so the vertices all connect
-
planeEdgeIntersect_cy
(arr, plane, axisInd) Calculate the intersection between a an array of edges and a plane
Parameters: - edges (array_like) – The edge array which have been calculated to cross the plane
- plane (float) – The height of the plane
- axis (int, default 2) – The index of the axis of the slice
Returns: intersectPoints – The intersection points between the edges and the plane
Return type: ndarray
-
planeEdgeintersect
(edges, plane, axis=2) Calculate the intersection between a an array of edges and a plane
Parameters: - edges (array_like) – The edge array which have been calculated to cross the plane
- plane (float) – The height of the plane
- axis (int, default 2) – The index of the axis of the slice
Returns: intersectPoints – The intersection points between the edges and the plane
Return type: ndarray
-
plot_slices
(amp, axis=2, slWidth=10) Generate a mpl figure with information about the AmpObject
Top Left - Slices Top Right - Change in cross sectional area through slices Bottom Left - Rendering of shape Bottom Right - Rendering of shape with values
TODO: Split this up so each figure is it’s own function, top level function to tailor figure to user
Parameters: - axis (int, default 2) – Axis along which to take slices
- slWidth (float, default 10) – Distance between slices
Returns: - fig (mpl figure) – The mpl figure generated by the function
- ax (tuple) – A tuple of axes used for each subplot in the figure
-
visualise_slices
(amp) Create an mpl figure with the 3D rendering, slices, slice height and cross sectional area