Пример #1
0
    def test_POAV_angles(self):
        atoms = \
            generate_atoms(generator_class='SWNTGenerator', n=10, m=0, nz=2)
        # atoms.NNrc = 2.0
        atoms.assign_unique_ids()
        atoms.compute_POAVs()

        for i, atom in enumerate(atoms):
            print('atom{}: {}'.format(atom.id, atom))
            for POAV in ('POAV1', 'POAV2', 'POAVR'):
                if getattr(atom, POAV) is not None:
                    atom_POAV = getattr(atom, POAV)
                    sigma_pi_angles = np.degrees(atom_POAV.sigma_pi_angles)
                    assert_false(np.all(np.isclose(sigma_pi_angles,
                                                   3 * [np.nan],
                                                   equal_nan=True)))
                    print('atom{}.{}.sigma_pi_angles:\n{}'.format(
                        atom.id, POAV, sigma_pi_angles))

                    pyramidalization_angles = \
                        np.degrees(atom_POAV.pyramidalization_angles)
                    print('atom{}.{}.pyramidalization_angles:\n{}'.format(
                        atom.id, POAV, pyramidalization_angles))
                    assert_false(np.all(np.isclose(pyramidalization_angles,
                                                   3 * [np.nan],
                                                   equal_nan=True)))

                    misalignment_angles = \
                        np.degrees(atom_POAV.misalignment_angles)
                    print('atom{}.{}.misalignment_angles:\n{}\n'.format(
                        atom.id, POAV, misalignment_angles))
                    assert_false(np.all(np.isclose(misalignment_angles,
                                                   3 * [np.nan],
                                                   equal_nan=True)))
Пример #2
0
    def test_POAVs(self):
        atoms = \
            generate_atoms(generator_class='SWNTGenerator', n=5, m=0, nz=5)
        atoms.compute_POAVs()
        atoms.filter(atoms.coordination_numbers == 3)
        atom = atoms[10]
        assert_equals(atom.bonds.Nbonds, 3)
        for POAV in ('POAV1', 'POAV2', 'POAVR'):
            atom_POAV = getattr(atom, POAV)
            assert_is_instance(atom_POAV, getattr(sknano.core.atoms, POAV))

            sigma_pi_angles = np.degrees(atom_POAV.sigma_pi_angles)
            assert_false(np.all(np.isclose(sigma_pi_angles, 3 * [np.nan],
                                           equal_nan=True)))
            pyramidalization_angles = \
                np.degrees(atom_POAV.pyramidalization_angles)
            assert_false(np.all(np.isclose(pyramidalization_angles,
                                           3 * [np.nan],
                                           equal_nan=True)))
            misalignment_angles = \
                np.degrees(atom_POAV.misalignment_angles)
            assert_false(np.all(np.isclose(misalignment_angles,
                                           3 * [np.nan],
                                           equal_nan=True)))
            print(getattr(atom, POAV))
Пример #3
0
def test7():
    atoms = generate_atoms(generator_class='SWNTGenerator', n=5, m=0, nz=5)
    atoms.update_attrs()
    filtered = atoms.filtered_ids(list(range(5, 26)))
    atoms.filter_ids(list(range(5, 26)))
    assert_equal(filtered, atoms)
    assert_true(atoms.Natoms, 20)
Пример #4
0
def test8():
    atoms = generate_atoms(generator_class='SWNTGenerator', n=5, m=0, nz=5)
    atoms.update_attrs()
    filtered1 = atoms.filtered(atoms.coordination_numbers > 1)
    filtered2 = atoms.filtered("coordination_numbers > 1")
    atoms.filter(atoms.coordination_numbers > 1)
    assert_equal(filtered1, atoms)
    assert_equal(filtered1, filtered2)
Пример #5
0
def test5():
    atoms = \
        generate_atoms(generator_class='SWNTGenerator', n=5, m=5, nz=5,
                       verbose=True)
    atoms.assign_unique_ids()
    for i, atom in enumerate(atoms):
        assert_true(atoms[i] is atoms.get_atom(atom.id))
        assert_equal(i, atoms.index(atom))
Пример #6
0
def test6():
    atoms = generate_atoms(generator_class='SWNTGenerator', n=3, m=3, nz=10)
    atoms.assign_unique_ids()
    atoms.center_centroid()
    atoms.kNN = 6
    atoms.NNrc = 9.0
    new_atoms = atoms.filtered((atoms.z >= -5) & (atoms.z <= 5))
    assert_equal(atoms.kNN, 6)
    assert_equal(atoms.NNrc, 9.0)
    assert_equal(atoms.kNN, new_atoms.kNN)
    assert_equal(atoms.NNrc, new_atoms.NNrc)
Пример #7
0
def test_find_target_atom():
    atoms = generate_atoms(generator_class='SWNTGenerator', n=10, m=10, nz=3)
    atoms.center_centroid()
    atoms.assign_unique_ids()
    atoms.update_attrs()
    target_atom = find_target_atom(atoms, target_coords=[0.0, 5.0, 0.0],
                                   search_radius=1.0, nearest_target=True)

    print('atoms.z.min(), atoms.z.max(): {}, {}'.format(
        atoms.z.min(), atoms.z.max()))
    print('atom_ids: {}'.format(atoms.atom_ids))
    print('CNs: {}'.format(atoms.coordination_numbers))

    print('target_atom: {}'.format(target_atom))
Пример #8
0
def test3():
    atoms = generate_atoms(elements='periodic_table')
    atoms.assign_unique_ids()
    print(atoms[:5])

    atoms_slice = atoms[5:10]

    atoms[:5] = atoms_slice
    assert_equal(atoms[:5], atoms[5:10])
    print(atoms[:5])

    atoms[:5] = ['C', 'H', 'N', 'Ar', 'He']
    print(atoms[:8])

    atoms[0] = 'Au'
    print(atoms[:2])
Пример #9
0
def test5():
    atoms = \
        BasisAtoms(atoms=generate_atoms(elements='periodic_table').symbols)
    print(atoms[:5])

    atoms_slice = atoms[5:10]

    atoms[:5] = atoms_slice
    assert_equal(atoms[:5], atoms[5:10])
    print(atoms[:5])

    atoms[:5] = ['C', 'H', 'N', 'Ar', 'He']
    print(atoms[:8])

    atoms[0] = 'Au'
    print(atoms[:2])
Пример #10
0
    def test_atom_bonds(self):
        atoms = \
            generate_atoms(generator_class='SWNTGenerator', n=10, m=5, nz=1)
        atoms.kNN = 3
        atoms.NNrc = 2.0
        atoms.compute_POAVs()
        bonds = atoms.bonds
        assert_equal(len(bonds), atoms.coordination_numbers.sum())
        assert_equal(bonds.Nbonds, atoms.coordination_numbers.sum())

        for i, atom in enumerate(atoms):
            if atom.bonds.Nbonds > 1:
                print('atom.bonds.angles:\n'
                      '{}'.format(np.degrees(atom.bonds.angles)))
                for j, bond in enumerate(atom.bonds):
                    assert_true(np.allclose(bond.vector,
                                            atom.bonds.vectors[j]))
                    assert_equal(bond.length, atom.bonds.lengths[j])
Пример #11
0
def test4():
    atoms = generate_atoms(elements='periodic_table')
    atoms.assign_unique_ids()
    a1 = atoms[:10]
    a2 = atoms[:5]
    assert_equal(a1 + a2, atoms[:10])

    a1 = atoms[:5]
    a2 = atoms[:10]
    assert_equal(a1 + a2, atoms[:10])

    assert_equal(atoms + atoms.__atom_class__('H', id=1), atoms)
    assert_equal(atoms.__atom_class__('H', id=1) + atoms, atoms)

    a1 = atoms[:25]
    a2 = atoms[25:]
    assert_equal((a1 + a2).elements.tolist(), element_symbols)
    assert_equal((a1 + a2), atoms)
Пример #12
0
 def test3(self):
     atoms = \
         generate_atoms(generator_class='SWNTGenerator', n=10, m=0, nz=5)
     atoms.kNN = 30
     atoms.NNrc = 10
     atoms.update_neighbors(cutoffs=[1.5, 2.5, 2.9, 3.8, 4.3])
     # print(atoms.neighbors.tolist())
     print(atoms.neighbor_distances.tolist())
     # print('first_neighbors:\n{}'.format(atoms.first_neighbors))
     # print('second_neighbors:\n{}'.format(atoms.second_neighbors))
     print('len(first_neighbors): {}'.format(
           [len(atom.first_neighbors) for atom in atoms]))
     print('len(second_neighbors): {}'.format(
           [len(atom.second_neighbors) for atom in atoms]))
     print('len(third_neighbors): {}'.format(
           [len(atom.third_neighbors) for atom in atoms]))
     print('len(4th_neighbors): {}'.format(
           [len(atom.get_neighbors(4)) for atom in atoms]))
     print('len(5th_neighbors): {}'.format(
           [len(atom.get_neighbors(5)) for atom in atoms]))
Пример #13
0
def test_generate_atoms():
    atoms = generate_atoms(elements=element_symbols)
    assert_equals(atoms.Natoms, len(element_symbols))
    atoms = generate_atoms(generator_class="SWNTGenerator", n=10, m=10, nz=10)
    assert_equals(atoms.Natoms, 400)
Пример #14
0
 def test3(self):
     atoms = generate_atoms(elements='periodic_table')
     atoms.assign_unique_ids()
     atoms.kNN = 3
     atoms_cp = atoms.copy()
     assert_equal(atoms.kNN, atoms_cp.kNN)
Пример #15
0
 def test4(self):
     atoms = \
         generate_atoms(generator_class='SWNTGenerator', n=3, m=0, nz=5)
     assert_equal(compute_Natoms((3, 0), nz=5), atoms.Natoms)
     assert_equal(atoms.Natoms, atoms.ids[-1])
Пример #16
0
def test2():
    atoms = generate_atoms(elements='periodic_table')
    atoms.assign_unique_ids()

    atoms_slice = atoms[5:10]
    print(atoms_slice)
Пример #17
0
 def test3(self):
     atoms = generate_atoms(elements='periodic_table')
     atoms.assign_unique_ids()
     atoms.kNN = 3
     atoms_cp = atoms.copy()
     assert_equal(atoms.kNN, atoms_cp.kNN)