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.
For a quick reference of all metadata keys, see Metadata.
Workflow Integration¶
Initial Generation¶
When a structure is first generated using pyxtal() (or through sample()), 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.