Skip to content

Hybridization Analysis

Assign per-atom hybridization status from connectivity-derived metrics.

This module classifies atoms into configured hybridization states using bond-order-sum targets and tolerances, optionally with element-specific rules. It focuses on hybridization labels and summary tables rather than coordination or event-detection logic.

Usage context

  • Hybridization tagging: Label atoms as sp, sp2, sp3, or custom states.
  • Force-field validation: Compare expected hybridization against trajectories.
  • Chemistry post-processing: Feed state labels into reporting or filtering flows.

Request: HybridizationStatusRequest

Request for per-atom hybridization-status classification.

Fields

Field Type Default Help Choices
hybridizations Optional[Mapping[str, float]] Global hybridization mapping as state->target sum_BOs. Example: {'sp': 1, 'sp2': 2, 'sp3': 3}.
element_hybridizations Optional[Mapping[str, Mapping[str, float]]] Per-element hybridization map overriding global values. Example: {'C': {'sp': 1, 'sp2': 2, 'sp3': 3}}.
target_elements Optional[Sequence[str]] Optional element filter. Example: ['C', 'O'].
target_atom_ids Optional[Sequence[int]] Optional atom-id filter (1-based). Example: [1, 2, 5].
threshold float 0.3 Absolute tolerance for match classification. Example: 0.2.
frames Optional[Sequence[int]] Optional frame indices to evaluate. Example: [0, 10, 20].
every int 1 Stride for selected frames. Example: every=5.
require_defined_hybridization bool True If true, fail when an element has no mapping. If false, emit undefined rows instead. True, False

Examples

req = HybridizationStatusRequest(
    hybridizations={"sp": 1.0, "sp2": 2.0, "sp3": 3.0},
    target_elements=["C"],
    threshold=0.2,
)

Sample output: HybridizationStatusRequest(...) Meaning: The request configures atom selection and matching tolerance for hybridization classification.

Task: HybridizationStatusTask

Per-atom hybridization status over selected frames.

Return default table presentation for hybridization outputs.

Works on

Analyzer task output payloads

Parameters

Name Type Description
_result HybridizationStatusResult Analysis result object for the executed task.
_payload dict[str, Any] Serialized result payload.

Returns

Type Description
list[PresentationSpec] Table presentation specification.

Examples

specs = HybridizationStatusTask.recommended_presentations(result, payload)

Sample output: [PresentationSpec(renderer="table", ...)] Meaning: Hybridization results default to tabular rendering.

Method: run(data: ConnectivityData, request: HybridizationStatusRequest, reporter=None)

Classify per-atom hybridization status across selected frames.

For example, with hybridizations={"sp": 1.0, "sp2": 2.0, "sp3": 3.0} and threshold=0.2, a carbon atom with a sum of bond orders of 2.1 would be classified as sp2 (matched), while one with a sum of 1.7 would be classified as sp (unmatched).

Works on

ConnectivityData plus HybridizationStatusRequest analyzer inputs

Parameters

Name Type Description
data ConnectivityData Connectivity input containing sum bond orders or bond-order matrices.
request HybridizationStatusRequest Selection and hybridization-target configuration.
reporter Any, optional Optional progress callback invoked during frame processing.

Returns

Type Description
HybridizationStatusResult Result table with matched/unmatched hybridization assignments.

Examples

result = HybridizationStatusTask().run(data, req)

Sample output: result.table with status_label and hybridization columns. Meaning: One row is produced per selected atom per selected frame.

Result: HybridizationStatusResult

Hybridization-status analysis result.

Fields

Field Type Default Help Choices
table pd.DataFrame
request HybridizationStatusRequest

Examples

result = HybridizationStatusTask().run(data, req)
result.table.head()

Sample output: DataFrame rows with matched/unmatched hybridization assignments. Meaning: Each row captures one atom-frame classification decision.