Lesion-Extracting GSSF Component
This component wraps a separate tool, go-smart-lesion, which uses VTK routines to extract a lesion surface. More generally, this component extracts an isosurface based on certain criteria.
Configuration
When running go-smart-lesion as part of the GSSF workflow, the Python component can be configured as follows:
<lesion field="FIELD"
[ threshold_lower="THRESHOLDLOWER" ] [ threshold_upper="THRESHOLDUPPER" ]
[ selection="(most-recent|largest-time):most-recent" ]
[ connectivity="BOOL:false" ]
[ scaling="FLOAT" ] />
If scaling
is omitted, the inverse of
simulationscaling
is used. This returns the simulation
to the original, input length scale. If connectivity
is true
, the largest
component only will be extracted. To choose a specific simulation timeslice for
input, the selection
attribute can be set to either most-recent
, for the
most recently modified file in the Elmer output directory, or
largest-time
to choose the timeslice with the highest timestep suffix. On a
clean run, these should pick the same output VTU file. The THRESHOLDUPPER
and
THRESHOLDLOWER
values, if provided, will be used in a VTK ThresholdBetween
call. If only one is provided, ThresholdUpper
or ThresholdLower
will be
used. Note that this is the reverse of the VTK definition - we treat
THRESHOLDUPPER
as the maximum accepted value within the lesion, and
THRESHOLDLOWER
as the minimum. FIELD
should be a field present in the VTU
file, which should correspond to variables output from the SIF template. Note
that Elmer seems to lowercase variable names before output, so FIELD
should
also be lowercase even if the SIF template uses mixed/uppercase.
go-smart-lesion
go-smart-lesion may be run standalone from the shell. If so, the syntax is as follows:
go-smart-lesion OPTIONS
Optional arguments
Argument | Description |
---|---|
-h [ --help ] |
produce help message |
-t [ --threshold-lower ] arg |
threshold for chosen variable (remove cells with values below this limit) |
-T [ --threshold-upper ] arg |
threshold for chosen variable (remove cells with values above this limit) |
-S [ --scale ] arg (=1) |
pre-scaling of results; default 1 |
-f [ --field ] arg |
field to threshold on |
-p [ --parallel ] |
assume input data is PVTU not VTU |
-x [ --threshold ] |
switch from using an IsoVolume to using a Threshold |
-c [ --connectivity ] |
extract largest connected component of thresholded surface |
-s [ --subdivide ] |
subdivide before thresholding |
-i [ --smoothing-iterations ] arg (=0) |
number of iterations in smoother (0 to skip) |
-e [ --exclude-subdomain ] arg (=-1) |
exclude subdomain of given index |
-i [ --input ] arg |
input volume mesh file |
-a [ --analysis ] arg |
analysis output file |
-o [ --output ] arg |
output file |
-r [ --retain-subdomain-boundaries ] |
retain all internal inter-zone boundary facets |
-g [ --geometry-filter ] |
use geometry filter instead of vtkDataSetSurfaceFilter to extract surface |
Implementation
TODO-RMV: after refactoring