VOLT
Plugins

Cluster Analysis

Find connected particle clusters using a distance cutoff.

Parameters

ParameterTypeDefaultDescription
cutofffloat3.2Cutoff radius used to define connectivity.
sort_by_sizebooltrueSort clusters by size in descending order.
unwrapboolfalseUnwrap particle coordinates inside each cluster.
centers_of_massboolfalseCompute cluster centers with uniform weights.
radius_of_gyrationboolfalseCompute radii and tensors of gyration with uniform weights.

Output

{outputBase}_cluster_analysis.parquet

type Vec3 = [float, float, float];
type GyrationTensor = [float, float, float, float, float, float];

interface Cluster {
    cluster_id: int;
    size: int;
    center?: Vec3;
    radius_of_gyration?: float;
    gyration_tensor?: GyrationTensor;
}

interface ClusterAnalysisOutput {
    main_listing: {
        total_atoms: int;
        clusters: int;
        largest_cluster_size: int;
        has_zero_weight_cluster: boolean;
    };
    sub_listings: {
        clusters: Cluster[];
    };
}

{outputBase}_atoms.parquet

Per-atom data in the canonical AtomisticExporter format consumed by the VOLT viewer. Atoms are grouped into named buckets: Cluster_<n> for clustered atoms, Unclustered for unassigned atoms.

type Vec3 = [float, float, float];

interface AtomEntry {
    id: int;
    pos: Vec3;
    structure_id: int;
    structure_name: string;
    cluster_id: int;
    pos_unwrapped?: Vec3;   // present only when `unwrap` is true
}

interface AtomsOutput {
    main_listing: {
        total_atoms: int;
        structure_count: int;
    };
    sub_listings: {
        structures: Array<{
            structure_id: int;
            structure_name: string;
            atom_count: int;
        }>;
    };
    export: {
        AtomisticExporter: {
            [bucketName: string]: AtomEntry[];
        };
    };
}

This file also feeds the cluster-model-export node in the workflow DAG, which produces a GLB 3D model via the AtomisticExporter.

See Also

On this page