Esempio n. 1
0
def test_add_atom_bond_creation():
    molecule = mol.Molecule()
    mol.add_atom(molecule, 6, 0, 0, 0)
    mol.add_atom(molecule, 6, 1, 0, 0)
    mol.add_bond(molecule, 0, 1, 1)
    npt.assert_equal(molecule.total_num_bonds, 1)
    npt.assert_equal(molecule.total_num_atoms, 2)
Esempio n. 2
0
def test_stick(interactive=False):
    molecule = mol.Molecule()
    mol.add_atom(molecule, 6, 0, 0, 0)
    mol.add_atom(molecule, 6, 2, 0, 0)

    # Test errors for inadequate bonding data
    npt.assert_raises(ValueError, mol.stick, molecule)
    mol.add_bond(molecule, 0, 1, 1)

    colormodes = ['discrete', 'single']
    bond_thickness = [0.1, 0.12]
    table = mol.PTable()
    colors = np.array([[table.atom_color(6)],
                       [[150/255, 150/255, 150/255],
                        [50/255, 50/255, 50/255]]], dtype=object)
    scene = window.Scene()
    for i, colormode in enumerate(colormodes):
        test_actor = mol.stick(molecule, colormode, bond_thickness[i])
        scene.add(test_actor)
        scene.reset_camera()
        scene.reset_clipping_range()

        if interactive:
            window.show(scene)

        npt.assert_equal(scene.GetActors().GetNumberOfItems(), 1)

        arr = window.snapshot(scene)
        report = window.analyze_snapshot(arr, colors=colors[i])
        npt.assert_equal(report.objects, 1)
        scene.clear()

    # Testing warnings
    npt.assert_warns(UserWarning, mol.stick, molecule, 'multiple')
Esempio n. 3
0
def test_deep_copy_molecule():
    molecule1 = mol.Molecule()
    mol.add_atom(molecule1, 6, 0, 0, 0)
    mol.add_atom(molecule1, 6, 1, 0, 0)
    mol.add_bond(molecule1, 0, 1, 1)
    molecule2 = mol.Molecule()
    mol.deep_copy_molecule(molecule2, molecule1)
    npt.assert_equal(molecule2.total_num_bonds, 1)
    npt.assert_equal(molecule2.total_num_atoms, 2)
Esempio n. 4
0
def test_atomic_number():
    # Testing atomic number get/set functions
    molecule = mol.Molecule()
    mol.add_atom(molecule, 4, 0, 0, 0)

    # Testing get_atomic_number
    npt.assert_equal(mol.get_atomic_number(molecule, 0), 4)

    # Testing set_atomic_number
    mol.set_atomic_number(molecule, 0, 6)
    npt.assert_equal(mol.get_atomic_number(molecule, 0), 6)
Esempio n. 5
0
def test_atomic_position():
    # Testing atomic position get/set functions
    molecule = mol.Molecule()
    mol.add_atom(molecule, 4, 0, 0, 0)

    # Testing get_atomic_position
    npt.assert_array_almost_equal(mol.get_atomic_position(molecule, 0),
                                  np.array([0, 0, 0]))

    # Testing set_atomic_number
    mol.set_atomic_position(molecule, 0, 1, 1, 1)
    npt.assert_array_almost_equal(mol.get_atomic_position(molecule, 0),
                                  np.array([1, 1, 1]))
Esempio n. 6
0
def test_bond_order():
    # Testing bond order get/set functions

    # Testing get_bond_order
    molecule = mol.Molecule()
    mol.add_atom(molecule, 6, 0, 0, 0)
    mol.add_atom(molecule, 6, 1, 0, 0)
    mol.add_bond(molecule, 0, 1, 3)
    npt.assert_equal(mol.get_bond_order(molecule, 0), 3)

    # Testing set_bond_order
    mol.set_bond_order(molecule, 0, 2)
    npt.assert_equal(mol.get_bond_order(molecule, 0), 2)

    # Testing get_all_bond_orders
    npt.assert_array_almost_equal(mol.get_all_bond_orders(molecule),
                                  np.array([2]))
Esempio n. 7
0
def test_bounding_box(interactive=False):
    scene = window.Scene()
    molecule = mol.Molecule()
    mol.add_atom(molecule, 6, 0, 0, 0)
    mol.add_atom(molecule, 6, 1, 1, 1)
    mol.add_bond(molecule, 0, 1, 1)

    molecule_actor = mol.stick(molecule)
    test_box = mol.bounding_box(molecule, colors=(0, 1, 1), linewidth=0.1)
    scene.add(molecule_actor)
    scene.add(test_box)

    if interactive:
        window.show(scene)

    npt.assert_equal(scene.GetActors().GetNumberOfItems(), 2)

    table = mol.PTable()
    colors = np.array([table.atom_color(1), table.atom_color(6)])
    arr = window.snapshot(scene)
    report = window.analyze_snapshot(arr, colors=colors)
    npt.assert_equal(report.objects, 1)
    scene.clear()