Skip to content

flex

tit.opt.flex

Flex-search optimization subpackage.

Provides differential-evolution (DE) electrode placement optimization via SimNIBS TesFlexOptimization. The optimizer finds continuous electrode positions on the scalp that maximize field strength, peak intensity, or focality in a target ROI.

Public API

run_flex_search Main entry point -- accepts a :class:~tit.opt.config.FlexConfig and returns a :class:~tit.opt.config.FlexResult.

Submodules

builder SimNIBS object construction and HTML report generation. manifest Read/write flex_meta.json run manifests. pareto Pareto-front sweep over focality threshold grids. utils ROI configuration, output naming, and log-line parsing.

See Also

tit.opt.config.FlexConfig : Configuration dataclass for flex-search. tit.opt.config.FlexResult : Result container.

run_flex_search(config: FlexConfig) -> FlexResult

Run differential-evolution electrode placement optimization.

Uses scipy.optimize.differential_evolution (via SimNIBS TesFlexOptimization) to find electrode positions that maximize field strength, peak intensity, or focality in a target ROI.

Multiple independent restarts (controlled by config.n_multistart) are executed sequentially; the best run's output is promoted to the base output folder.

Parameters

config : FlexConfig Fully specified optimization configuration including subject, ROI definition, electrode geometry, and DE hyperparameters.

Returns

FlexResult Optimization outcomes including best montage, objective value, and convergence diagnostics.

See Also

FlexConfig : Configuration dataclass for flex-search. FlexResult : Result container with per-restart function values. tit.opt.ex.ex.run_ex_search : Alternative exhaustive grid search.

Source code in tit/opt/flex/flex.py
def run_flex_search(config: FlexConfig) -> FlexResult:
    """Run differential-evolution electrode placement optimization.

    Uses ``scipy.optimize.differential_evolution`` (via SimNIBS
    ``TesFlexOptimization``) to find electrode positions that maximize
    field strength, peak intensity, or focality in a target ROI.

    Multiple independent restarts (controlled by
    ``config.n_multistart``) are executed sequentially; the best run's
    output is promoted to the base output folder.

    Parameters
    ----------
    config : FlexConfig
        Fully specified optimization configuration including subject,
        ROI definition, electrode geometry, and DE hyperparameters.

    Returns
    -------
    FlexResult
        Optimization outcomes including best montage, objective value,
        and convergence diagnostics.

    See Also
    --------
    FlexConfig : Configuration dataclass for flex-search.
    FlexResult : Result container with per-restart function values.
    tit.opt.ex.ex.run_ex_search : Alternative exhaustive grid search.
    """
    from tit.telemetry import track_operation
    from tit import constants as const

    _validate_flex_inputs(config)
    with track_operation(const.TELEMETRY_OP_FLEX_SEARCH):
        return _run_flex_search_inner(config)