Skip to content

M6L4-TT

Enumerates substructures of the M6L4-TT (Truncated Tetrahedron) cage.

Template

M and X have two and one binding sites respectively. L has three sites (0, 1, 2).

from nasap_net import Assembly, Bond, Component, enumerate_assemblies

M = Component(kind='M', sites=[0, 1])
L = Component(kind='L', sites=[0, 1, 2])
X = Component(kind='X', sites=[0])

# upper-half (top-view)              lower-half (top-view)
#
# M0                        M3       M0                        M3
# (0)                      (0)       (1)-------(1)L3(2)-------(1)
#  \                        /                    (0)
#   \                      /                      |
#   (1)                  (2)                     (1)
#    L0(0)--(0)M4(1)--(0)L2                       M5
#   (2)                  (1)                     (0)
#   /                      \                      |
#  /                        \                    (0)
# (0)                      (0)       (1)-------(2)L1(1)-------(1)
# M1                        M2       M1                        M2

M6L4TT = Assembly(
    components={
        'M0': M, 'M1': M, 'M2': M, 'M3': M, 'M4': M, 'M5': M,
        'L0': L, 'L1': L, 'L2': L, 'L3': L,
    },
    bonds=[
        # Upper half
        Bond('M0', 0, 'L0', 1), Bond('M1', 0, 'L0', 2),
        Bond('M2', 0, 'L2', 1), Bond('M3', 0, 'L2', 2),
        Bond('M4', 0, 'L0', 0), Bond('M4', 1, 'L2', 0),
        # Lower half
        Bond('M0', 1, 'L3', 1), Bond('M1', 1, 'L1', 2),
        Bond('M2', 1, 'L1', 1), Bond('M3', 1, 'L3', 2),
        Bond('M5', 0, 'L1', 0), Bond('M5', 1, 'L3', 0),
    ],
)

Subassembly enumeration

assemblies = list(enumerate_assemblies(
    template=M6L4TT,
    leaving_ligand=X,
    metal_kinds='M',
))

56 assemblies are enumerated.

Saving

import os
from nasap_net import save_assemblies

os.makedirs('output', exist_ok=True)
save_assemblies(assemblies, 'output/assemblies.yaml', overwrite=True)