VOLT

MultiSOM

Identify structures without labels by clustering atoms with a multilayer self-organizing map trained on per-atom features from other plugins.

MultiSOM groups atoms into structural classes without being told what the classes are. It trains a self-organizing map (SOM) on per-atom features, such as the coordination number, the centrosymmetry parameter or Steinhardt order parameters, and splits the atoms into clusters, then splits each cluster again in further layers. Use it when no template method fits your system, for example in complex alloys, amorphous–crystalline mixtures or unknown phases, and inspect the resulting clusters against the features.

KeyVersionBuilds
multisom1.1.0Linux, macOS, Windows

MultiSOM is a Python plugin with no browser build, so it can't be installed on a machine that runs in the browser or the desktop app. The machine running it creates a virtual environment and installs its requirements (numpy, pandas, pyarrow) the first time.

As published, MultiSOM 1.1.0 can't complete a run in VOLT. Its workflow passes the script only the output folder and the form's options, while the script also expects the frame path as its first argument and the feature tables in a --features argument, which nothing in the workflow sets. The stage fails before training.

How it works

  1. Features. The feature plugins you pick run inside the MultiSOM stage, each in its own folder, and their per-atom tables supply the feature columns.
  2. Layers. The first layer scales its features, trains a SOM with N output neurons on them and assigns every atom to its best-matching neuron, which splits the atoms into up to N clusters. Each later layer splits every cluster of the previous layer again, with its own features and settings.
  3. Cluster IDs. Cluster ID Mapping combines the per-layer assignments into one cluster_id per atom, and the IDs are renumbered densely.
  4. Frames. With Reference frame training, the first frame of the run trains the map and the other frames are labeled with it, so a cluster ID means the same thing in every frame. With Per frame, each frame trains its own map.

Inputs

  • At least one feature plugin installed and published in your team: Coordination Analysis, Centrosymmetry Parameter or Steinhardt Order Parameters. You choose them in this stage's form; no separate stages are needed.

Arguments

ArgumentTypeDefaultAllowed valuesDescription
Feature Plugins feature_pluginspluginReference(none)One or more of coordination-analysis, centrosymmetry-parameter, steinhardt-order-parametersRequired. The plugins that compute the features. You can set each one's own arguments here.
SOM Layers layerslistTwo layers, see belowItems with the fields belowThe layers of the map, in order.
Training Mode trainingselectreferencereference (Reference frame (stable cluster IDs)), per_frame (Per frame (retrain each frame))Train once on the first frame, or on every frame.
Cluster ID Mapping mappingselectlinearlinear (Linear), godel (Godel), default (Default)How per-layer assignments become one ID. godel encodes each atom's path through the layers with prime numbers; default keeps the plain per-layer numbers without ancestry.
Random Seed seednumber1982≥ 0, step 1Random seed, for reproducible clusters.

Each item of SOM Layers has these fields:

FieldTypeDefaultAllowed valuesDescription
Label labelstringLayerName of the layer in the form.
Features featuresselect, multiple(none)Per-atom properties of the selected feature plugins, such as coordination, csp, q_6The features this layer trains on.
Scaling scalingselectnormalnormal (Normal (min-max)), standard (Standard (z-score)), robust (Robust (median/IQR))How each feature is scaled before training.
Training fraction (f) fnumber10.01 to 1, step 0.05Fraction of the atoms, sampled at random, used to train the layer.
Sigma (neighborhood width) sigmanumber0.5≥ 0.01, step 0.1Initial width of the SOM neighborhood function.
Eta (learning rate) etanumber0.5≥ 0.01, step 0.1Initial learning rate.
N (output neurons / sub-clusters) Nnumber5≥ 2, step 1Number of output neurons, the most clusters the layer can split a group into.
Batched training batchedbooleantrueTrain in batches.
Batch size batch_sizenumber100≥ 1, step 1Atoms per batch. Shown when Batched training is on.

The default layers are:

LayerFeaturesScalingfSigmaEtaNBatchedBatch size
Layer 1coordination, cspnormal10.50.55yes100
Layer 2csprobust10.71.02yes100

They expect Coordination Analysis and Centrosymmetry Parameter as feature plugins.

Outputs

ExposureWhat you get
MultiSOMA listing with the number of atoms, clusters and layers and the features used, and a clusters sub-listing with each cluster's atom count.
MultiSOM ModelA listing, and a 3D model of the atoms grouped by cluster (Cluster_0, Cluster_1, …).

The per-atom table has cluster_id (also as structure_id) and one column per layer with the atom's assignment in that layer.

Reference

T. Kohonen, "Self-organized formation of topologically correct feature maps", Biol. Cybern. 43, 59 (1982). The multilayer SOM code is by Franco Aquistapace (2021, Apache-2.0).

On this page