Skip to content

Isomer Detection Analysis

Detect molecular formulas and isomer groups from structure connectivity.

This module identifies molecules, groups them by formula, and derives isomer partitions from single-structure connectivity representations. It is scoped to graph-based molecule/isomer detection and does not perform time-resolved molecular tracking.

Usage context

  • Structure decomposition: Enumerate molecules present in one geometry.
  • Isomer counting: Split molecules into isomer classes per formula.
  • Topology summaries: Export formula/isomer tables for structural reports.

Request: MoleculeIsomerDetectionRequest

Request payload for single-structure molecule/isomer detection.

This request controls component-size thresholds and optional element/motif inclusion or exclusion filters applied before formula/isomer grouping.

Fields

Field Type Default Help Choices
min_atoms_per_molecule int 1 Minimum component size retained as a molecule.
include_any_elements tuple[str, ...] \| None Keep molecules containing at least one of these elements.
include_all_elements tuple[str, ...] \| None Keep molecules containing all listed elements.
exclude_any_elements tuple[str, ...] \| None Exclude molecules containing any listed element.
include_motifs tuple[str, ...] \| None Keep molecules matching at least one motif rule (e.g. 'SFx' or 'only:F,S;S==1;F>=1').
exclude_motifs tuple[str, ...] \| None Exclude molecules matching any motif rule (e.g. 'SFx' or 'only:F,S;S==1;F>=1').

Examples

request = MoleculeIsomerDetectionRequest(
    min_atoms_per_molecule=2,
    include_motifs=("SFx",),
    exclude_any_elements=("H",),
)

The request keeps sulfur/fluorine motif matches while excluding hydrogen-containing molecules.

Task: MoleculeIsomerDetectionTask

Connected-components molecule detection + formula + graph isomer grouping.

Recommend the default isomer summary table presentation.

The isomer table is the canonical human-readable summary and is exposed as the default view for this analyzer.

Works on Analyzer task output for molecule_isomer_detection.

Parameters

Name Type Description
_result MoleculeIsomerDetectionResult Typed analyzer result instance (unused by current logic).
_payload dict[str, Any] Serialized payload (unused for this fixed recommendation).

Returns

Type Description
list[PresentationSpec] Single table presentation specification.

Examples

specs = MoleculeIsomerDetectionTask.recommended_presentations(_result, {})

The returned list contains one table presentation spec.

Method: run(data: GeometryData, request: MoleculeIsomerDetectionRequest, reporter=None)

Run molecule detection, formula grouping, and isomer partitioning.

Builds molecular connected components from geometry connectivity, applies request filters, groups molecules by formula, and splits each formula into graph-isomorphic isomer classes.

Works on GeometryData representing one structure with coordinates and connectivity.

Parameters

Name Type Description
data GeometryData Parsed geometry model containing atom and connectivity tables.
request MoleculeIsomerDetectionRequest Component threshold and element/motif filter configuration.
reporter Any, optional Progress callback accepted by analyzer tasks.

Returns

Type Description
MoleculeIsomerDetectionResult Result containing formula, isomer, and molecule summary tables.

Examples

result = MoleculeIsomerDetectionTask().run(
    data,
    MoleculeIsomerDetectionRequest(min_atoms_per_molecule=2),
)

result.isomer_table contains grouped isomer classes for retained molecules.

Result: MoleculeIsomerDetectionResult

Result payload for molecule and isomer detection outputs.

The analyzer returns three related summary tables over one geometry: formula-level counts, isomer-level groupings, and per-molecule assignments.

Fields

Field Type Default Help Choices
table pd.DataFrame
formula_table pd.DataFrame
isomer_table pd.DataFrame
molecule_table pd.DataFrame
request MoleculeIsomerDetectionRequest

Examples

isomer_row = {
    "formula": "C2H6O1",
    "isomer_id": 1,
    "molecule_count": 2,
    "atom_count": 9,
    "representative_molecule_id": 3,
}

The sample row summarizes one detected isomer class for a formula.