def test_freeze_with_adf(): mol = molkit.from_smiles('CO') s = Settings() s.freeze = ["C", "O"] expected_settings = Settings({ 'freeze': ["C", "O"], 'specific': { 'adf': { 'constraints': { 'atom 1': '', 'atom 2': '' }, 'geometry': { 'optim': 'cartesian' } } } }) assert str(adf.generic2specific(s, mol)) == str(expected_settings) s.freeze = [1, 2] expected_settings = Settings({ 'freeze': [1, 2], 'specific': { 'adf': { 'constraints': { 'atom 1': '', 'atom 2': '' }, 'geometry': { 'optim': 'cartesian' } } } }) assert str(adf.generic2specific(s, mol)) == str(expected_settings)
def test_freeze_with_orca(): mol = molkit.from_smiles('CO') s = Settings() s.freeze = ["C", "O"] expected_settings = Settings({ 'freeze': ['C', 'O'], 'specific': { 'orca': { 'geom': { 'Constraints': { '_end': '{ C 0 C }{ C 1 C }' } } } } }) assert str(orca.generic2specific(s, mol)) == str(expected_settings) s.freeze = [1, 2] expected_settings = Settings({ 'freeze': [1, 2], 'specific': { 'orca': { 'geom': { 'Constraints': { '_end': '{ C 0 C }{ C 1 C }' } } } } }) assert str(orca.generic2specific(s, mol)) == str(expected_settings)
def test_freeze_with_adf(): mol = molkit.from_smiles('CO') s = Settings() s.freeze = ["C", "O"] expected_settings = Settings({'freeze': ["C", "O"], 'specific': adf_const}) assert str(adf.generic2specific(s, mol)) == str(expected_settings) s.freeze = [1, 2] expected_settings = Settings({'freeze': [1, 2], 'specific': adf_const}) assert str(adf.generic2specific(s, mol)) == str(expected_settings)
def test_freeze_with_dftb(): mol = molkit.from_smiles('CO') s = Settings() s.freeze = ["C", "O"] expected_settings = Settings( {'freeze': ['C', 'O'], 'specific': dftb_const}) assert str(dftb.generic2specific(s, mol)) == str(expected_settings) s.freeze = [1, 2] expected_settings = Settings( {'freeze': [1, 2], 'specific': dftb_const}) assert str(dftb.generic2specific(s, mol)) == str(expected_settings)
def test_freeze_with_adf(): mol = molkit.from_smiles('CO') s = Settings() s.freeze = ["C", "O"] expected_settings = Settings( {'freeze': ["C", "O"], 'specific': adf_const}) assert str(adf.generic2specific(s, mol)) == str(expected_settings) s.freeze = [1, 2] expected_settings = Settings( {'freeze': [1, 2], 'specific': adf_const}) assert str(adf.generic2specific(s, mol)) == str(expected_settings)
def test_freeze_with_dftb(): """Test freeze keyword for DFTB.""" mol = molkit.from_smiles('CO') s = Settings() s.freeze = ["C", "O"] expected_settings = Settings( {'freeze': ['C', 'O'], 'specific': dftb_const}) assertion.eq(str(dftb.generic2specific(s, mol)), str(expected_settings)) s.freeze = [1, 2] expected_settings = Settings( {'freeze': [1, 2], 'specific': dftb_const}) assertion.eq(str(dftb.generic2specific(s, mol)), str(expected_settings))
def test_freeze_with_adf(): """Test the freeze keyword with ADF.""" mol = molkit.from_smiles('CO') s = Settings() s.freeze = ["C", "O"] expected_settings = Settings( {'freeze': ["C", "O"], 'specific': adf_const}) assertion.eq(str(adf.generic2specific(s, mol)), str(expected_settings)) s.freeze = [1, 2] expected_settings = Settings( {'freeze': [1, 2], 'specific': adf_const}) assertion.eq(str(adf.generic2specific(s, mol)), str(expected_settings))
def test_freeze_with_dftb(): mol = molkit.from_smiles('CO') s = Settings() s.freeze = ["C", "O"] expected_settings = Settings({ 'freeze': ['C', 'O'], 'specific': dftb_const }) assert str(dftb.generic2specific(s, mol)) == str(expected_settings) s.freeze = [1, 2] expected_settings = Settings({'freeze': [1, 2], 'specific': dftb_const}) assert str(dftb.generic2specific(s, mol)) == str(expected_settings)
def test_freeze_with_gamess(): mol = molkit.from_smiles('CO') s = Settings() s.freeze = ["C", "O"] expected_settings = Settings({ 'freeze': ['C', 'O'], 'specific': { 'gamess': { 'statpt': 'IFREEZ(1)=1,2,3,4,5,6' } } }) assert str(gamess.generic2specific(s, mol)) == str(expected_settings) s = Settings() s.freeze = [1, 2] expected_settings = Settings({ 'freeze': [1, 2], 'specific': { 'gamess': { 'statpt': 'IFREEZ(1)=1,2,3,4,5,6' } } }) assert str(gamess.generic2specific(s, mol)) == str(expected_settings)
def example_partial_geometry_opt(): """ Performa partial optimization freezing the Hydrogen atoms """ methanol = molkit.from_smiles('CO') # optimize only H atoms s = Settings() s.freeze = [1, 2] geom_job1 = adf(templates.geometry.overlay(s), methanol, job_name='geom_job1').molecule # optimize only H atoms s = Settings() s.selected_atoms = ['H'] geom_job2 = adf(templates.geometry.overlay(s), methanol, job_name='geom_job2').molecule geom1, geom2 = run(gather(geom_job1, geom_job2), n_processes=1) return geom1, geom2
def example_partial_geometry_opt(): """Performa partial optimization freezing the Hydrogen atoms.""" methanol = molkit.from_smiles('CO') # optimize only H atoms s = Settings() s.freeze = [1, 2] geom_job1 = adf(templates.geometry.overlay(s), methanol, job_name='geom_job1').molecule # optimize only H atoms s = Settings() s.selected_atoms = ['H'] geom_job2 = adf(templates.geometry.overlay(s), methanol, job_name='geom_job2').molecule geom1, geom2 = run(gather(geom_job1, geom_job2), n_processes=1) return geom1, geom2
newmol = molkit.apply_template(HH, template) # Change the 2 hydrogens to dummy atoms temp = molkit.modify_atom(newmol, 47, '*') temp = molkit.modify_atom(temp, 48, '*') # Put coordinates of dummy atoms to 0.0, this will force generating new # coordinates for the new atoms temp.atoms[47].move_to((0.0, 0.0, 0.0)) temp.atoms[48].move_to((0.0, 0.0, 0.0)) # Replace dummy atoms by new groups, generate coordinates only for new atoms job_list = [] for mod, smirks in list_of_modifications.items(): print(mod) temp2, freeze = molkit.apply_reaction_smarts(temp, smirks, complete=True) # generate job s = Settings() s.freeze = freeze s.specific.dftb.dftb.resourcesdir = 'QUASINANO2015' partial_geometry = dftb(templates.geometry.overlay(s), temp2, job_name="partial_opt_" + mod) freq_dftb = dftb(templates.freq.overlay(s), partial_geometry.molecule, job_name="freq_" + mod) s = Settings() s.specific.orca.main = "B97-D" s.specific.orca.basis.basis = "_6_31G" s.specific.orca.basis.pol = "_d" s.inithess = freq_dftb.hessian ts = orca(templates.ts.overlay(s), freq_dftb.molecule, job_name="ts_" + mod)