Ejemplo n.º 1
0
def test_alignments(amine2, amine2_alt3, aldehyde3, aldehyde3_alt3):
    # Regular cage topology.
    bb_positions = {
        amine2: [0, 1, 2, 3, 4],
        amine2_alt3: [5],
        aldehyde3: [0, 1, 2],
        aldehyde3_alt3: [3]
    }

    bbs = [amine2, amine2_alt3, aldehyde3, aldehyde3_alt3]
    for fg in range(3):
        top = stk.FourPlusSix(bb_positions=bb_positions,
                              A_alignments=[0, 0, 0, fg],
                              B_alignments=[1, 1, 1, 1, 1, 1])
        c = stk.Cage(bbs, top)
        c.write(join(test_dir, f'4p6_valignment_{fg}.mol'))

    top = stk.FourPlusSix(bb_positions=bb_positions,
                          A_alignments=[0, 0, 0, 0],
                          B_alignments=[1, 1, 1, 1, 1, -1])
    c = stk.Cage(bbs, top)
    c.write(join(test_dir, f'4p6_edge_alignment.mol'))

    # No linker topology.
    bbs = [aldehyde3, aldehyde3_alt3]
    bb_positions = {aldehyde3: [1, 2, 3], aldehyde3_alt3: [0]}
    for fg in range(3):
        top = stk.TwoPlusTwo(bb_positions=bb_positions,
                             alignments=[fg, 0, 0, 0])
        c = stk.Cage(bbs, top)
        c.write(join(test_dir, f'2p2_valignment_{fg}.mol'))
Ejemplo n.º 2
0
def test_multiconformer(tmp_amine2, tmp_aldehyde3):
    top = stk.FourPlusSix()
    amine_fg_count = 2
    amine_count = 6
    aldehyde_count = 4

    c = stk.Cage([tmp_amine2, tmp_aldehyde3],
                 stk.FourPlusSix(),
                 bb_conformers=[0, 0])
    c.add_conformer([1, 0])
    c.add_conformer([0, 1])
    c.add_conformer([1, 1])

    c.write(join(test_dir, 'FourPlusSix_conf1.mol'), 0)
    c.write(join(test_dir, 'FourPlusSix_conf2.mol'), 1)
    c.write(join(test_dir, 'FourPlusSix_conf3.mol'), 2)
    c.write(join(test_dir, 'FourPlusSix_conf4.mol'), 3)

    assert c.bonds_made == amine_fg_count * amine_count
    assert (c.mol.GetNumAtoms() == tmp_amine2.mol.GetNumAtoms() * amine_count +
            tmp_aldehyde3.mol.GetNumAtoms() * aldehyde_count -
            c.bonds_made * 3)
    assert (c.mol.GetNumBonds() == tmp_amine2.mol.GetNumBonds() * amine_count +
            tmp_aldehyde3.mol.GetNumBonds() * aldehyde_count -
            c.bonds_made * 2)
    assert c.topology == top
    assert c.bb_counter[tmp_amine2] == amine_count
    assert c.bb_counter[tmp_aldehyde3] == aldehyde_count
Ejemplo n.º 3
0
def test_multiFourPlusFour(aldehyde3, aldehyde3_alt1, aldehyde3_alt2):
    top = stk.FourPlusFour(bb_positions={
        aldehyde3: [0, 1],
        aldehyde3_alt1: [2, 3, 4, 6, 7],
        aldehyde3_alt2: [5]
    })
    bbs = [aldehyde3, aldehyde3_alt1, aldehyde3_alt2]
    c = stk.Cage(bbs, top)
    c.write(join(test_dir, 'multi_FourPlusFour.mol'))

    assert c.bb_counter[aldehyde3] == 2
    assert c.bb_counter[aldehyde3_alt1] == 5
    assert c.bb_counter[aldehyde3_alt2] == 1
Ejemplo n.º 4
0
def test_cage_complex(amine2, amine2_alt1, aldehyde3, chained_c60):
    c = stk.Cage(
        [amine2, amine2_alt1, aldehyde3],
        stk.FourPlusSix(bb_positions={
            amine2: [5],
            amine2_alt1: [0, 1, 2, 3, 4],
            aldehyde3: [0, 1, 2, 3]
        }))

    n = 3
    for i in range(n):
        cage_complex = stk.CageComplex([c, chained_c60],
                                       stk.CageWithGuest(
                                           axis=[1, 0, 0],
                                           angle=2 * np.pi * i / n,
                                           displacement=[2 * i, 0, 0]))
        cage_complex.write(join(test_dir, f'cage_with_guest_{i}.mol'))
Ejemplo n.º 5
0
def test_SixPlusEight(aldehyde3, amine4):
    top = stk.SixPlusEight()
    amine_fg_count = 4
    amine_count = 6
    aldehyde_count = 8

    c = stk.Cage([aldehyde3, amine4], top)
    c.write(join(test_dir, 'SixPlusEight.mol'))

    assert c.bonds_made == amine_fg_count * amine_count
    assert (c.mol.GetNumAtoms() == amine4.mol.GetNumAtoms() * amine_count +
            aldehyde3.mol.GetNumAtoms() * aldehyde_count - c.bonds_made * 3)
    assert (c.mol.GetNumBonds() == amine4.mol.GetNumBonds() * amine_count +
            aldehyde3.mol.GetNumBonds() * aldehyde_count - c.bonds_made * 2)
    assert c.topology == top
    assert c.bb_counter[amine4] == amine_count
    assert c.bb_counter[aldehyde3] == aldehyde_count
Ejemplo n.º 6
0
def test_Dodecahedron(amine2, aldehyde3):
    top = stk.Dodecahedron()
    amine_fg_count = 2
    amine_count = 30
    aldehyde_count = 20

    c = stk.Cage([amine2, aldehyde3], top)
    c.write(join(test_dir, 'Dodecahedron.mol'))

    assert c.bonds_made == amine_fg_count * amine_count
    assert (c.mol.GetNumAtoms() == amine2.mol.GetNumAtoms() * amine_count +
            aldehyde3.mol.GetNumAtoms() * aldehyde_count - c.bonds_made * 3)
    assert (c.mol.GetNumBonds() == amine2.mol.GetNumBonds() * amine_count +
            aldehyde3.mol.GetNumBonds() * aldehyde_count - c.bonds_made * 2)
    assert c.topology == top
    assert c.bb_counter[amine2] == amine_count
    assert c.bb_counter[aldehyde3] == aldehyde_count
Ejemplo n.º 7
0
def test_EightPlusTwelve(amine2, aldehyde3):
    top = stk.EightPlusTwelve()
    amine_fg_count = 2
    amine_count = 12
    aldehyde_count = 8

    c = stk.Cage([amine2, aldehyde3], top)
    c.write(join(test_dir, 'EightPlusTwelve.mol'))

    assert c.bonds_made == amine_fg_count * amine_count
    assert (c.mol.GetNumAtoms() == amine2.mol.GetNumAtoms() * amine_count +
            aldehyde3.mol.GetNumAtoms() * aldehyde_count - c.bonds_made * 3)
    assert (c.mol.GetNumBonds() == amine2.mol.GetNumBonds() * amine_count +
            aldehyde3.mol.GetNumBonds() * aldehyde_count - c.bonds_made * 2)
    assert c.topology == top
    assert c.bb_counter[amine2] == amine_count
    assert c.bb_counter[aldehyde3] == aldehyde_count
Ejemplo n.º 8
0
def test_FourPlusSix2(amine2, aldehyde3):
    top = stk.FourPlusSix2()
    amine_fg_count = 2
    amine_count = 6
    aldehyde_count = 4

    c = stk.Cage([amine2, aldehyde3], top)
    c.write(join(test_dir, 'FourPlusSix2.mol'))

    assert c.bonds_made == amine_fg_count * amine_count
    assert (c.mol.GetNumAtoms() == amine2.mol.GetNumAtoms() * amine_count +
            aldehyde3.mol.GetNumAtoms() * aldehyde_count - c.bonds_made * 3)
    assert (c.mol.GetNumBonds() == amine2.mol.GetNumBonds() * amine_count +
            aldehyde3.mol.GetNumBonds() * aldehyde_count - c.bonds_made * 2)
    assert c.topology == top
    assert c.bb_counter[amine2] == amine_count
    assert c.bb_counter[aldehyde3] == aldehyde_count
Ejemplo n.º 9
0
def test_FourPlusFour(amine3, aldehyde3):
    top = stk.FourPlusFour(bb_positions={0: [4, 1, 6, 3], 1: [0, 5, 2, 7]})
    amine_fg_count = 3
    amine_count = 4
    aldehyde_count = 4

    c = stk.Cage([aldehyde3, amine3], top)
    c.write(join(test_dir, 'FourPlusFour.mol'))

    assert c.bonds_made == amine_fg_count * amine_count
    assert (c.mol.GetNumAtoms() == amine3.mol.GetNumAtoms() * amine_count +
            aldehyde3.mol.GetNumAtoms() * aldehyde_count - c.bonds_made * 3)
    assert (c.mol.GetNumBonds() == amine3.mol.GetNumBonds() * amine_count +
            aldehyde3.mol.GetNumBonds() * aldehyde_count - c.bonds_made * 2)
    assert c.topology == top
    assert c.bb_counter[amine3] == amine_count
    assert c.bb_counter[aldehyde3] == aldehyde_count
Ejemplo n.º 10
0
def test_TwoPlusTwo(amine3, aldehyde3):
    top = stk.TwoPlusTwo(bb_positions={0: [0, 1], 1: [2, 3]})
    amine_fg_count = 3
    amine_count = 2
    aldehyde_count = 2

    c = stk.Cage([aldehyde3, amine3], top)
    c.write(join(test_dir, 'TwoPlusTwo.mol'))

    assert c.bonds_made == amine_fg_count * amine_count
    assert (c.mol.GetNumAtoms() == amine3.mol.GetNumAtoms() * amine_count +
            aldehyde3.mol.GetNumAtoms() * aldehyde_count - c.bonds_made * 3)
    assert (c.mol.GetNumBonds() == amine3.mol.GetNumBonds() * amine_count +
            aldehyde3.mol.GetNumBonds() * aldehyde_count - c.bonds_made * 2)
    assert c.topology == top
    assert c.bb_counter[amine3] == amine_count
    assert c.bb_counter[aldehyde3] == aldehyde_count
Ejemplo n.º 11
0
def test_OnePlusOne(amine3, aldehyde3):
    top = stk.OnePlusOne(bb_positions={0: [0], 1: [1]})
    amine_fg_count = 3
    amine_count = 1
    aldehyde_count = 1

    c = stk.Cage([aldehyde3, amine3], top)
    c.write(join(test_dir, 'OnePlusOne.mol'))

    assert c.bonds_made == amine_fg_count * amine_count
    assert (c.mol.GetNumAtoms() == amine3.mol.GetNumAtoms() * amine_count +
            aldehyde3.mol.GetNumAtoms() * aldehyde_count - c.bonds_made * 3)
    assert (c.mol.GetNumBonds() == amine3.mol.GetNumBonds() * amine_count +
            aldehyde3.mol.GetNumBonds() * aldehyde_count - c.bonds_made * 2)
    assert c.topology == top
    assert c.bb_counter[amine3] == amine_count
    assert c.bb_counter[aldehyde3] == aldehyde_count
Ejemplo n.º 12
0
def test_TenPlusTwenty(aldehyde2, amine4):
    top = stk.TenPlusTwenty()
    amine_fg_count = 4
    amine_count = 10
    aldehyde_count = 20

    c = stk.Cage([amine4, aldehyde2], top)
    c.write(join(test_dir, 'TenPlusTwenty.mol'))

    assert c.bonds_made == amine_fg_count * amine_count
    assert (c.mol.GetNumAtoms() == amine4.mol.GetNumAtoms() * amine_count +
            aldehyde2.mol.GetNumAtoms() * aldehyde_count - c.bonds_made * 3)
    assert (c.mol.GetNumBonds() == amine4.mol.GetNumBonds() * amine_count +
            aldehyde2.mol.GetNumBonds() * aldehyde_count - c.bonds_made * 2)
    assert c.topology == top
    assert c.bb_counter[amine4] == amine_count
    assert c.bb_counter[aldehyde2] == aldehyde_count
Ejemplo n.º 13
0
def test_FivePlusTen(aldehyde2, amine4):
    top = stk.FivePlusTen()
    amine_fg_count = 4
    amine_count = 5
    aldehyde_count = 10

    c = stk.Cage([aldehyde2, amine4], top)
    c.write(join(test_dir, 'FivePlusTen.mol'))

    assert c.bonds_made == amine_fg_count * amine_count
    assert (c.mol.GetNumAtoms() == amine4.mol.GetNumAtoms() * amine_count +
            aldehyde2.mol.GetNumAtoms() * aldehyde_count - c.bonds_made * 3)
    assert (c.mol.GetNumBonds() == amine4.mol.GetNumBonds() * amine_count +
            aldehyde2.mol.GetNumBonds() * aldehyde_count - c.bonds_made * 2)
    assert c.topology == top
    assert c.bb_counter[amine4] == amine_count
    assert c.bb_counter[aldehyde2] == aldehyde_count
Ejemplo n.º 14
0
def test_ThreePlusSix(aldehyde2, amine4):
    top = stk.ThreePlusSix()
    amine_fg_count = 4
    amine_count = 3
    aldehyde_count = 6

    c = stk.Cage([aldehyde2, amine4], top)
    c.write(join(test_dir, 'ThreePlusSix.mol'))

    assert c.bonds_made == amine_fg_count * amine_count
    assert (c.mol.GetNumAtoms() == amine4.mol.GetNumAtoms() * amine_count +
            aldehyde2.mol.GetNumAtoms() * aldehyde_count - c.bonds_made * 3)
    assert (c.mol.GetNumBonds() == amine4.mol.GetNumBonds() * amine_count +
            aldehyde2.mol.GetNumBonds() * aldehyde_count - c.bonds_made * 2)
    assert c.topology == top
    assert c.bb_counter[amine4] == amine_count
    assert c.bb_counter[aldehyde2] == aldehyde_count
Ejemplo n.º 15
0
def test_multiFourPlusSix(amine2, amine2_alt1, amine2_alt2, aldehyde3,
                          aldehyde3_alt1, aldehyde3_alt2):
    top = stk.FourPlusSix(bb_positions={
        0: [0, 1],
        1: [2, 3, 4],
        2: [5],
        3: [0],
        4: [1, 2],
        5: [3]
    })

    amine_fg_count = 2

    bbs = [
        amine2, amine2_alt1, amine2_alt2, aldehyde3, aldehyde3_alt1,
        aldehyde3_alt2
    ]

    c = stk.Cage(bbs, top)
    c.write(join(test_dir, 'multi_FourPlusSix.mol'))

    assert c.bonds_made == amine_fg_count * 6
    assert c.topology == top
    assert c.bb_counter[amine2] == 2
    assert c.bb_counter[amine2_alt1] == 3
    assert c.bb_counter[amine2_alt2] == 1
    assert c.bb_counter[aldehyde3] == 1
    assert c.bb_counter[aldehyde3_alt1] == 2
    assert c.bb_counter[aldehyde3_alt2] == 1

    assert (c.mol.GetNumAtoms() == amine2.mol.GetNumAtoms() * 2 +
            amine2_alt1.mol.GetNumAtoms() * 3 +
            amine2_alt2.mol.GetNumAtoms() * 1 +
            aldehyde3.mol.GetNumAtoms() * 1 +
            aldehyde3_alt1.mol.GetNumAtoms() * 2 +
            aldehyde3_alt2.mol.GetNumAtoms() * 1 - c.bonds_made * 3)
    assert (c.mol.GetNumBonds() == amine2.mol.GetNumBonds() * 2 +
            amine2_alt1.mol.GetNumBonds() * 3 +
            amine2_alt2.mol.GetNumBonds() * 1 +
            aldehyde3.mol.GetNumBonds() * 1 +
            aldehyde3_alt1.mol.GetNumBonds() * 2 +
            aldehyde3_alt2.mol.GetNumBonds() * 1 - c.bonds_made * 2)
Ejemplo n.º 16
0
def test_multiconformer(tmp_amine2, tmp_aldehyde3):
    top = stk.FourPlusSix()
    amine_fg_count = 2
    amine_count = 6
    aldehyde_count = 4

    # Add conformers.
    tmp_amine2.mol.AddConformer(tmp_amine2.mol.GetConformer(), True)
    tmp_aldehyde3.mol.AddConformer(tmp_aldehyde3.mol.GetConformer(), True)

    # Give conformers distinct geometries.
    tmp_amine2.set_position_from_matrix(
        pos_mat=tmp_amine2.mol.GetConformer().GetPositions().T * 4,
        conformer=1)
    tmp_aldehyde3.set_position_from_matrix(
        pos_mat=tmp_aldehyde3.mol.GetConformer().GetPositions().T * 4,
        conformer=1)

    c = stk.Cage([tmp_amine2, tmp_aldehyde3],
                 stk.FourPlusSix(),
                 bb_conformers=[0, 0])
    c.add_conformer([1, 0])
    c.add_conformer([0, 1])
    c.add_conformer([1, 1])

    c.write(join(test_dir, 'FourPlusSix_conf1.mol'), 0)
    c.write(join(test_dir, 'FourPlusSix_conf2.mol'), 1)
    c.write(join(test_dir, 'FourPlusSix_conf3.mol'), 2)
    c.write(join(test_dir, 'FourPlusSix_conf4.mol'), 3)

    assert c.bonds_made == amine_fg_count * amine_count
    assert (c.mol.GetNumAtoms() == tmp_amine2.mol.GetNumAtoms() * amine_count +
            tmp_aldehyde3.mol.GetNumAtoms() * aldehyde_count -
            c.bonds_made * 3)
    assert (c.mol.GetNumBonds() == tmp_amine2.mol.GetNumBonds() * amine_count +
            tmp_aldehyde3.mol.GetNumBonds() * aldehyde_count -
            c.bonds_made * 2)
    assert c.topology == top
    assert c.bb_counter[tmp_amine2] == amine_count
    assert c.bb_counter[tmp_aldehyde3] == aldehyde_count
Ejemplo n.º 17
0
def tmp_cage(amine2, aldehyde3):
    return stk.Cage([amine2, aldehyde3], stk.FourPlusSix(), 'tmp_cage')