Esempio n. 1
0
    def test_consistent_atom_order(self):
        """Test that the atom order is preserved whether starting from SMILES or from xyz"""
        spc1 = ARCSpecies(label='spc1', smiles='CCCO')
        xyz1 = spc1.get_xyz()
        for adj, coord in zip(spc1.mol.toAdjacencyList().splitlines(), xyz1.splitlines()):
            if adj and coord:
                self.assertEqual(adj.split()[1], coord.split()[0])

        xyz2 = """C      -0.37147383   -0.54225753    0.07779977
C       0.99011397    0.11006088   -0.10715587
H      -0.33990169   -1.22256017    0.93731544
H      -0.60100180   -1.16814809   -0.79292035
H       1.26213386    0.70273091    0.77209458
O       1.96607463   -0.90691160   -0.28642183
H       0.99631715    0.75813344   -0.98936747
H      -1.27803075    1.09840370    1.16400304
C      -1.46891192    0.48768649    0.27579733
H      -2.43580767   -0.00829320    0.40610628
H      -1.54270451    1.15356356   -0.58992943
H       2.82319256   -0.46240839   -0.40178723"""
        spc2 = ARCSpecies(label='spc2', xyz=xyz2)
        for adj, coord in zip(spc2.mol.toAdjacencyList().splitlines(), xyz2.splitlines()):
            if adj and coord:
                self.assertEqual(adj.split()[1], coord.split()[0])

        n3_xyz = str("""N      -1.1997440839    -0.1610052059     0.0274738287
        H      -1.4016624407    -0.6229695533    -0.8487034080
        H      -0.0000018759     1.2861082773     0.5926077870
        N       0.0000008520     0.5651072858    -0.1124621525
        H      -1.1294692206    -0.8709078271     0.7537518889
        N       1.1997613019    -0.1609980472     0.0274604887
        H       1.1294795781    -0.8708998550     0.7537444446
        H       1.4015274689    -0.6230592706    -0.8487058662""")
        spc3 = ARCSpecies(label=str('N3'), xyz=n3_xyz, multiplicity=1, smiles=str('NNN'))
        self.assertEqual(spc3.mol.atoms[1].symbol, 'H')
        spc3.generate_conformers()
        self.assertEqual(len(spc3.conformers), 5)

        xyz4 = """O      -1.48027320    0.36597456    0.41386552
        C      -0.49770656   -0.40253648   -0.26500019
        C       0.86215119    0.24734211   -0.11510338
        H      -0.77970114   -0.46128090   -1.32025907
        H      -0.49643724   -1.41548311    0.14879346
        H       0.84619526    1.26924854   -0.50799415
        H       1.14377239    0.31659216    0.94076336
        H       1.62810781   -0.32407050   -0.64676910
        H      -1.22610851    0.40421362    1.35170355"""
        spc4 = ARCSpecies(label='CCO', smiles='CCO', xyz=xyz4)  # define from xyz for consistent atom order
        for atom1, atom2 in zip(spc4.mol.atoms, spc4.mol_list[0].atoms):
            self.assertEqual(atom1.symbol, atom2.symbol)
Esempio n. 2
0
 def test_save_conformers_file(self):
     """test the save_conformers_file function"""
     project = 'arc_project_for_testing_delete_after_usage'
     project_directory = os.path.join(arc_path, 'Projects', project)
     label = 'butanol'
     spc1 = ARCSpecies(label=label, smiles='CCCCO')
     spc1.generate_conformers(n_confs=3)
     self.assertIn(len(spc1.conformers), [2, 3])
     plotter.save_conformers_file(project_directory=project_directory, label=spc1.label,
                                  xyzs=spc1.conformers, level_of_theory='APFD/def2tzvp',
                                  multiplicity=spc1.multiplicity, charge=spc1.charge, is_ts=False,
                                  energies=spc1.conformer_energies)
     conf_file_path = os.path.join(project_directory, 'output', 'Species', label, 'geometry', 'conformers',
                                   'conformers_before_optimization.txt')
     self.assertTrue(os.path.isfile(conf_file_path))
Esempio n. 3
0
    def test_conformers(self):
        """Test conformer generation"""
        self.spc1.conformers = list()
        self.spc1.conformer_energies = list()
        self.assertEqual(len(self.spc1.conformers), len(self.spc1.conformer_energies))
        self.spc1.generate_conformers()
        self.assertIn(len(self.spc1.conformers), [2, 3])
        self.assertEqual(len(self.spc1.conformers), len(self.spc1.conformer_energies))

        self.spc2.conformers = list()
        self.spc2.generate_conformers()
        self.assertEqual(len(self.spc2.conformers), 1)

        self.spc3.conformers = list()
        self.spc3.generate_conformers()
        self.assertEqual(len(self.spc3.conformers), 1)

        self.spc4.conformers = list()
        self.spc4.generate_conformers()
        self.assertIn(len(self.spc4.conformers), [3, 4, 5])

        self.spc5.conformers = list()
        self.spc5.generate_conformers()
        self.assertEqual(len(self.spc5.conformers), 3)

        self.spc6.conformers = list()
        self.spc6.generate_conformers()
        self.assertEqual(len(self.spc6.conformers), 4)

        self.spc8.conformers = list()
        self.spc8.generate_conformers()
        self.assertEqual(len(self.spc8.conformers), 4)

        self.spc9.conformers = list()
        self.spc9.generate_conformers()
        self.assertEqual(len(self.spc9.conformers), 1)

        self.spc10.conformers = list()
        self.spc10.generate_conformers(confs_to_dft=1)
        self.assertEqual(len(self.spc10.conformers), 1)

        self.spc10.conformers = list()
        self.spc10.generate_conformers(confs_to_dft=2)
        self.assertEqual(len(self.spc10.conformers), 2)

        self.spc10.conformers = list()
        self.spc10.generate_conformers(confs_to_dft=3)
        self.assertEqual(len(self.spc10.conformers), 3)

        self.spc11.conformers = list()
        self.spc11.generate_conformers(confs_to_dft=1)
        self.assertEqual(len(self.spc11.conformers), 2)  # has more confs due to chiral center

        self.spc11.conformers = list()
        self.spc11.generate_conformers(confs_to_dft=2)
        self.assertEqual(len(self.spc11.conformers), 3)

        self.spc11.conformers = list()
        self.spc11.generate_conformers(confs_to_dft=3)
        self.assertIn(len(self.spc11.conformers), [3, 4])

        xyz12 = """C       0.00000000    0.00000000    0.00000000
H       1.07008000   -0.14173100    0.00385900
H      -0.65776100   -0.85584100   -0.00777700
H      -0.41231900    0.99757300    0.00391900"""
        spc12 = ARCSpecies(label='CH3', smiles='[CH3]', xyz=xyz12)
        spc12.generate_conformers()
        self.assertEqual(len(spc12.conformers), 2)
        self.assertEqual(len(spc12.conformer_energies), 2)