vibesketcher.chem.frameworks¶
Metal-organic frameworks assembled from a node, a ditopic linker and a net.
Reticular construction (Yaghi et al., Nature 423, 705, 2003; O’Keeffe et al., Acc. Chem. Res. 41, 1782, 2008, for the RCSR net symbols): a secondary building unit (SBU) sits on each vertex of a net, a linker on each edge, and each carboxylate’s O-C-O plane is shared by the SBU and the linker it binds. The lattice constant follows from the construction, edge = 2 x_C + L, with x_C the SBU centre to carboxylate-carbon distance and L the linker’s carboxylate-carbon separation. Nothing is relaxed; coordinates are an unrelaxed starting geometry.
- Nodes
zn4o: the octahedral Zn4O(CO2)6 cluster of MOF-5 and the IRMOF series (Li, Eddaoudi, O’Keeffe and Yaghi, Nature 402, 276, 1999; Eddaoudi et al., Science 295, 469, 2002) on the pcu net. Neighbouring clusters are related by inversion so both ends of a linker see the same carboxylate plane; the conventional cell therefore holds eight clusters (the Fm-3m cell of MOF-5), the primitive face-centred cell two.paddlewheel: the M2(CO2)4 paddlewheel (Cu: Chui et al., Science 283, 1148, 1999) as a square-grid (sql) layer, optionally joined through its axial sites by a ditopic N-donor pillar into a pcu framework (Zn2(bdc)2(dabco), DMOF-1: Dybtsev, Chun and Kim, Angew. Chem. Int. Ed. 43, 5033, 2004).
Linkers are preset para-oligophenylene dicarboxylates (BDC, BPDC, TPDC; rings kept coplanar) or any dicarboxylic acid given as SMILES, embedded with RDKit’s ETKDG v3 (Wang, Witek, Landrum and Riniker, J. Chem. Inf. Model. 60, 2044, 2020) and MMFF94 (Halgren, J. Comput. Chem. 17, 490, 1996) under a fixed seed. A SMILES linker must be linear ditopic: both carboxylate bonds within 15 degrees of the axis through the carboxylate carbons.
Functions
A MOF from its node, linker and (implied) net; refuses what it cannot build. |
|
|
Framework nodes, preset linkers and pillars, for clients that present choices. |
Classes
|
A MOF from a node, a ditopic dicarboxylate linker and the net they imply. |
- class vibesketcher.chem.frameworks.FrameworkRecipe(*, kind='framework', identifier, node, metal=None, linker=None, linker_smiles=None, pillar=None, cell='conventional', vacuum=15.0)[source]¶
Bases:
BaseModelA MOF from a node, a ditopic dicarboxylate linker and the net they imply.
- Parameters:
kind (Literal['framework'])
identifier (Annotated[str, _PydanticGeneralMetadata(pattern='^[A-Za-z][A-Za-z0-9_-]{0,63}$')])
node (Literal['zn4o', 'paddlewheel'])
metal (str | None)
linker (Literal['bdc', 'bpdc', 'tpdc'] | None)
linker_smiles (Annotated[str | None, MinLen(min_length=1), MaxLen(max_length=500)])
pillar (Literal['dabco', 'bipyridine'] | None)
cell (Literal['conventional', 'primitive'])
vacuum (Annotated[float, Ge(ge=5), Le(le=200), AllowInfNan(allow_inf_nan=False)])
- model_config = {'extra': 'forbid'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- kind: Literal['framework']¶
- node: Literal['zn4o', 'paddlewheel']¶
- cell: Literal['conventional', 'primitive']¶
- vibesketcher.chem.frameworks.build_framework(p)[source]¶
A MOF from its node, linker and (implied) net; refuses what it cannot build.
- Parameters:
p (FrameworkRecipe)
- Return type: