Lifecycle#

The information about a candidate MOF is accrued in a MOFRecord object. The record contains identifying information about a MOF that remains unchanged during a run, and a series of properties which are gradually gathered during execution.

MOF Definition#

MOFA starts by defining a MOF uniquely using the type of metal node, which molecules connect them, and the connection topology. Each portion is defined with a different data model.

  • Metal Node: The XYZ coordinates and name described by a NodeDescription object.

  • Ligand: Each ligand is a molecule described using a LigandDescription object, which holds a molecular graph description (i.e., SMILES string) and 3D coordinates of the atoms. The description also retains data about how it was created (e.g., the atoms used to prompt a generator, model version) and how it links to the larger MOF (e.g., identity of the anchor atoms shared with the node).

The node and ligand definition are included in the MOFRecord along with the 3D topology and catenation degree. The node, ligand, topology, and catenation uniquely define a MOF.

The MOF is also assigned by a globally-unique name and can be further identified with other names, such as its record identifier from another database.

Assembly#

Most computations of a MOF require defining a 3D structure, which MOFA generates using the assemble_mof() function.

The structure is stored in a common text-based format in the MOF record.

The as-assembled structure is an estimate that maybe be further refined by MOFA.

Property Calculation#

Each type of property calculation performed by MOFs has at least one attribute in the MOFRecord.

The property attributes are nested dictionaries where the first key is a name signifying the level of fidelity and any metadata about the computation.

The steering process is responsible for storing data with the appropriate name.

Note

TODO: Describe the types of properties and the associated codes in greater detail.

Workflow Tracking#

The times and in_progress fields are used in MOFA to track when different data were acquired and if any computations are on-going.