-
Notifications
You must be signed in to change notification settings - Fork 51
Description
I would like to generate a MOF and then write this to a cif file. so I can pass it into mofdescribe (the features I want to calculate require the unit cell info). To do this I need info on the periodicity but I don't know how to get this. I generate a MOF using your example code:
Produce a Pd+2 atom with 4 functional groups.
palladium_atom = stk.BuildingBlock(
smiles='[Pd+2]',
functional_groups=(
stk.SingleAtom(stk.Pd(0, charge=2))
for i in range(4)
),
position_matrix=[[0., 0., 0.]],
)
Build a building block with two functional groups using
the SmartsFunctionalGroupFactory.
bb1 = stk.BuildingBlock(
smiles=(
'C1=NC=CC(C2=CC=CC(C3=C'
'C=NC=C3)=C2)=C1'
),
functional_groups=[
stk.SmartsFunctionalGroupFactory(
smarts='[#6][#7X2][#6]',
bonders=(1, ),
deleters=(),
),
],
)
cage1 = stk.ConstructedMolecule(
stk.cage.M2L4Lantern(
building_blocks=(palladium_atom, bb1),
# Ensure that bonds between the
# GenericFunctionalGroups of the ligand and the
# SingleAtom functional groups of the metal are
# dative.
reaction_factory=stk.DativeReactionFactory(
stk.GenericReactionFactory(
bond_orders={
frozenset({
stk.GenericFunctionalGroup,
stk.SingleAtom,
}): 9,
},
),
),
),
)
stk.MolWriter().write(cage1, "test.xyz")
If I understand correctly, it should be possible to get the lattice parameters from this, because I specify a topology when building the MOF, but I don't know how to do it. Maybe the directions of the lattice vectors and their relative lengths, and the angles, are known for each topology, then I can measure the size of the molecule to scale the lattice vectors? I would optimise the structure first. It seems like the organic cage building option gives lattice parameters.
I've read the docs but not found the answer sorry.