utils
tit.sim.utils ¶
Shared utilities for TI/mTI simulations.
- Montage file I/O (montage_list.json CRUD)
- Montage loading (EEG-cap + flex/freehand)
- Directory setup (BIDS output structure)
- Montage visualization
- Post-processing helpers (field extraction, NIfTI, T1→MNI, file moves)
- Simulation orchestration (sequential + parallel)
ensure_montage_file ¶
Return path to montage_list.json, creating it with default schema if absent.
Source code in tit/sim/utils.py
upsert_montage ¶
upsert_montage(*, project_dir: str, eeg_net: str, montage_name: str, electrode_pairs: list[list[str]], mode: str) -> None
mode: 'U' → uni_polar_montages, 'M' → multi_polar_montages
Source code in tit/sim/utils.py
list_montage_names ¶
mode: 'U' or 'M'. Returns [] for missing nets.
Source code in tit/sim/utils.py
extract_fields ¶
extract_fields(input_mesh: str, output_dir: str, base_name: str, m2m_dir: str, subject_id: str, logger) -> None
Extract GM (tag 2) and WM (tag 1) meshes from a full-head mesh.
Source code in tit/sim/utils.py
transform_to_nifti ¶
transform_to_nifti(mesh_dir: str, output_dir: str, subject_id: str, m2m_dir: str, logger, fields: list[str] | None = None, skip_patterns: list[str] | None = None) -> None
Convert mesh files to NIfTI (subject + MNI space).
Source code in tit/sim/utils.py
convert_t1_to_mni ¶
Convert T1 to MNI space (no-op if already done).
Source code in tit/sim/utils.py
run_simulation ¶
run_simulation(config: SimulationConfig, logger=None, progress_callback: Callable[[int, int, str], None] | None = None) -> list[dict]
Run TI/mTI simulations sequentially. Mode is auto-detected per montage.
Montages are read from config.montages.
Returns list of result dicts: montage_name, montage_type, status, output_mesh.