-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconf_gen.py
78 lines (56 loc) · 1.78 KB
/
conf_gen.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
from ase.calculators.gaussian import Gaussian as ASE_Gaussian
from autotst.calculators.gaussian import read_gaussian_out
from autotst.calculators.gaussian import Gaussian as AutoTST_Gaussian
from autotst.calculators.statmech import StatMech as AutoTST_StatMech
from autotst.species import Conformer, Species
from autotst.job import Job as AutoTST_Job
from hotbit import Hotbit
import os
import subprocess
import shlex
import datetime
import pickle
from rdkit import Chem
SMILES_list = [
'CCCCO',
'CCCC[O]',
'CCC[CH]O',
'CC[CH]CO',
'C[CH]CCO',
'[CH2]CCCO',
'CCOC',
'C[CH]OC',
'CCO[CH2]',
'[CH2]COC',
'COC(C)C',
'CO[C](C)C',
'[CH2]OC(C)C',
'[CH2]C(C)OC',
'CCC(=O)OC',
'C[CH]C(=O)OC',
'[CH2]CC(=O)OC',
'[CH2]OC(=O)CC'
]
base_path = '/home/underkoffler.c/Code/Hindered_Rotors'
master_log_name = 'Conf_Gen_Log.txt'
def hotbit_lowest_conf(SMILES):
SMILES_list = [SMILES]
spec = Species(SMILES_list)
spec.generate_conformers(calculator=Hotbit())
lowest_conf = None
lowest_energy = None
for smiles, confs in spec.conformers.items():
for conf in confs:
conf.ase_molecule.set_calculator(Hotbit())
conf.energy = conf.ase_molecule.get_potential_energy()
if (conf.energy < lowest_energy) or (lowest_energy is None):
lowest_energy = conf.energy
lowest_conf = conf
return lowest_conf
for SMILES in SMILES_list:
path = '{0}/{1}/From_Workflow'.format(base_path, SMILES)
os.chdir(path)
lowest_conf = hotbit_lowest_conf(SMILES)
with open('{}_lowest_conf.pickle'.format(SMILES), 'wb') as conf_f:
pickle.dump(lowest_conf, conf_f)
lowest_conf = pickle.load('{}_lowest_conf.pickle'.format(SMILES))