field_selector
tit.analyzer.field_selector ¶
Field selection utilities for automatic field file determination.
Resolves the correct field file path and SimNIBS field name for a given subject, simulation, and analysis space (mesh or voxel).
Public API¶
select_field_file Resolve the field path and SimNIBS field name for a subject/simulation. simulation_nifti_path Locate a named NIfTI of a TI or mTI simulation (used by the group tools).
See Also¶
tit.analyzer.analyzer : Analyzer class that consumes the resolved paths.
select_field_file ¶
select_field_file(subject_id: str, simulation: str, space: str, tissue_type: str = 'GM', field: str | None = None) -> tuple[Path, str]
Return the field file path and SimNIBS field name.
Detects whether the simulation is TI (2 channels) or mTI (4+) by checking for the existence of the mTI mesh directory.
Parameters¶
subject_id : str
Subject identifier (without sub- prefix).
simulation : str
Simulation (montage) folder name.
space : str
"mesh" or "voxel".
tissue_type : str, optional
"GM", "WM", or "both" (voxel only). Default "GM".
field : str or None, optional
Field name from constants.FIELD_REGISTRY (e.g. "hf_peak").
Default None resolves :func:default_field: TI_max (TI), mTI_max
(mTI), or hf_peak for a carrier-only control.
"TI_max"/"mTI_max" are treated as aliases for the same
quantity; the on-disk spelling is always chosen by the detected
simulation type, regardless of which alias is passed.
Returns¶
field_path : pathlib.Path
Resolved absolute path to the field file.
field_name : str
SimNIBS field name (e.g. "TI_max", "mTI_max").
Raises¶
FileNotFoundError
If the expected field file does not exist.
ValueError
If space is not "mesh"/"voxel", field is unknown, or
TI_normal is requested in voxel space (it has no NIfTI export).
See Also¶
Analyzer : Consumes the resolved path to load and analyze fields.
Source code in tit/analyzer/field_selector.py
default_field ¶
The field an analysis with no field (the app's Auto) analyses.
The envelope -- TI_max, or mTI_max for an mTI run -- except for a carrier-only
control (its run record's carrier_only), which has no envelope: there it is
hf_peak. A run without a record is not carrier-only.
Raises:
| Type | Description |
|---|---|
ValueError
|
the run record is not JSON. |
Source code in tit/analyzer/field_selector.py
is_mti_simulation ¶
Whether simulation is an mTI (multipolar) run.
The only signal is whether the simulation wrote an mTI/mesh/
directory; there is no flag stored anywhere else.
Parameters¶
subject_id : str
Subject identifier (without sub- prefix).
simulation : str
Simulation (montage) folder name.
Returns¶
bool
True for an mTI simulation, False for two-channel TI.
Source code in tit/analyzer/field_selector.py
simulation_nifti_path ¶
The NIfTI nifti_file_pattern names in simulation, for TI and mTI alike.
Patterns use the TI spelling (grey_{simulation_name}_TI_MNI_MNI_TI_max.nii.gz,
read from TI/niftis/). An mTI run writes the same files from its <sim>_mTI.msh
into mTI/niftis/, and of its fields only the envelope is spelled differently
(mTI_max; TI_avg, hf_peak and hf_rms keep their names). So for mTI the
mesh token before the space (_TI_subject_ / _TI_MNI_) becomes _mTI_ and a
trailing _TI_max becomes _mTI_max: grey_<sim>_mTI_MNI_MNI_mTI_max.nii.gz,
grey_<sim>_mTI_MNI_MNI_TI_avg.nii.gz. A pattern already spelled for mTI is unchanged.
Parameters¶
subject_id : str
Subject identifier (without sub- prefix).
simulation : str
Simulation (montage) folder name.
nifti_file_pattern : str
File name with {subject_id}/{simulation_name} placeholders.
Returns¶
pathlib.Path Where the file is (or would be); existence is not checked.