Lineage Tracking

ASSYST automatically tracks the history of structures as they are generated and modified through the workflow. This is achieved using UUIDs (Universally Unique Identifiers) stored in the structure’s info dictionary.

Keys in Atoms.info

Every structure managed by ASSYST will contain the following keys in its info attribute:

  • uuid: A unique identifier for the current structure.

  • seed: The UUID of the initial structure from which this structure was derived.

  • lineage: A list of UUIDs of all parent structures, in the order they were generated.

Workflow Integration

Initial Generation

When a structure is first generated using pyxtal() (or through sample_space_groups()), it is assigned a new UUID. At this stage, the seed is set to the same UUID, and the lineage is empty.

Perturbations

Whenever a PerturbationABC (like Rattle or Stretch) is applied to a structure, a new UUID is generated. The previous UUID is appended to the lineage list. The seed remains unchanged.

Relaxations

Similarly, the Relax.relax() method generates a new UUID for the relaxed structure and updates the lineage.

Example

For a practical demonstration of how these fields are updated, please refer to the Lineage Notebook.