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)))
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))
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))
def test_structure_data(self): fname = resource_filename('sknano', 'data/nanotubes/1005_5cells.data') swnt = SWNTGenerator(n=10, m=5, nz=5) swnt_atoms = swnt.atoms swnt_atoms.compute_POAVs() data = DATAReader(fname) atoms = data.atoms atoms.compute_POAVs() assert_equals(swnt_atoms.Natoms, atoms.Natoms)
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])
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)))