VOLT
Plugins

Pattern Structure Matching

Classify atoms against user-defined lattice patterns and emit a reconstructed-state contract consumable by OpenDXA.

PatternStructureMatching classifies atoms against lattice templates the user defines in the VOLT form. From each pattern it derives a matching lattice and an OpenDXA reference lattice, so it can serve as the upstream structure-identification algorithm for OpenDXA.

Parameters

The form requires a pattern_definitions list, each entry one crystal template. Two top-level options control matrix-phase resolution and clustering.

ParameterTypeDefaultDescription
pattern_definitionslist— (required)One or more custom lattice templates. Each entry holds the fields below.
matrix_pattern_namestring""Matrix Pattern Name override. Takes precedence when resolving which pattern is the matrix phase.
dissolve_small_clustersbooleanfalseMark small clusters as OTHER after clustering.

Each entry in pattern_definitions has these fields:

FieldTypeDefaultOptionsDescription
namestring""Pattern name.
is_matrix_phasebooleanfalseUse this pattern as the matrix phase.
coordination_numbernumber12min 1, step 1Coordination number of the template.
scalenumber1.0min 0.000001, step 0.1Lattice scale factor.
coordinate_modeselectfractionalfractional, cartesianInterpretation of cell/basis coordinates.
reference_basis_indexnumber0min 0, step 1Basis atom used as origin when deriving the OpenDXA neighbor vectors.
cell_atuple{x:1, y:0, z:0}First cell vector (x, y, z).
cell_btuple{x:0, y:1, z:0}Second cell vector (x, y, z).
cell_ctuple{x:0, y:0, z:1}Third cell vector (x, y, z).
basis_atomslist— (required)Nested list of basis atoms; each has species (number, default 1), x, y, z.

Matrix-phase resolution order:

  1. matrix_pattern_name, if set.
  2. The single pattern marked is_matrix_phase.
  3. The only pattern, when exactly one is defined.

If multiple patterns are defined and none is unambiguously the matrix phase, execution fails with a validation error.

The wrapper materializes the patterns into generated lattice YAMLs and passes them as --lattice_dir and --reference_lattice_dir. The binary's CLI options are --lattice_dir, --reference_lattice_dir, --patterns (CSV filter), and --dissolve_small_clusters.

Output

The binary writes a single parquet result file. Per-atom data goes to a LAMMPS dump ({outputBase}_annotated.dump); the cluster graph goes to two text tables ({outputBase}_clusters.table, {outputBase}_cluster_transitions.table) that OpenDXA consumes. No separate _atoms.parquet is produced.

{outputBase}_pattern_analysis.parquet

interface SelectedPattern {
    pattern_id: int;
    structure_type: int;
    pattern_name: string;
}

interface StructureCount {
    structure_name: string;
    count: int;
}

interface PatternCount {
    pattern_id: int;
    pattern_name: string;
    count: int;
}

interface PatternAnalysisOutput {
    is_failed: boolean;
    lattice_directory: string;
    reference_lattice_directory: string;
    cluster_mode: string; // "cluster-builder"
    selected_patterns: SelectedPattern[];
    main_listing: StructureCount[]; // atom count per resolved structure name
    pattern_listing: PatternCount[]; // atom count per matched pattern (sorted by name)
    input_dump: string; // path to the annotated LAMMPS dump
    clusters_table: string; // path to the cluster graph table
    cluster_transitions_table: string; // path to the cluster transitions table
}

See Also

On this page