Exemple #1
0
#### Corin Wagen and Eugene Kwan, 2019

filenames = sys.argv[1]
info = []
text_width = 70

to_rotate = [[1, 3, 5, 7], [9, 11, 13, 15], [5, 3, 6, 8], [12, 11, 14, 16]]

ensemble = ConformationalEnsemble()

for filename in sorted(glob.glob(filenames, recursive=True)):
    if re.search("slurm", filename):
        continue

    try:
        output_file = GaussianFile.read_file(filename)

        if len(output_file.energies) > 0:
            mol = output_file.get_molecule()
            ensemble.add_molecule(mol,
                                  energy=output_file.energies[-1] * 627.509)
    except:
        print(f"skipping f{filename} due to error...")

print(f"{len(ensemble.molecules)} conformers before elimination of redundant")
ensemble.eliminate_redundant(cutoff=0.6)
print(f"{len(ensemble.molecules)} conformers after elimination of redundant")

best_confs = ensemble.get_within_cutoff(cutoff=10)
for idx, molecule in enumerate(best_confs):
    GaussianFile.write_molecule_to_file(
Exemple #2
0
import sys, os, argparse, glob, re, copy
import numpy as np

from cctk import GaussianFile, Molecule, Group, Ensemble
from cctk.load_groups import load_group

parser = argparse.ArgumentParser(prog="hammett_swap.py")
parser.add_argument("filename")
args = vars(parser.parse_args(sys.argv[1:]))
assert args["filename"], "Can't resubmit files without a filename!"

#### read in output file
output_file = GaussianFile.read_file(args["filename"])

#### read in genecp footer
footer = ""
with open('footer', 'r') as file:
    footer = file.read()

#### define groups and atoms
groups = ["NMe2", "OMe", "Me", "CF3", "CO2Me", "CN", "NO2", "F", "Cl", "SF5"]
p_atoms = [19, 30, 41]

ensemble = Ensemble()
headers = []
args = []

for group_name in groups:
    print(f"adding {group_name}")
    mol = copy.deepcopy(output_file.get_molecule().assign_connectivity())
    group = load_group(group_name)
Exemple #3
0
filenames = sys.argv[1]

energies = {}
dipole = {}
nics = {}
C1_charge = {}
O7_charge = {}
C8_charge = {}
C9_charge = {}
C12_charge = {}

for filename in sorted(glob.glob(filenames, recursive=True)):
    if re.search("slurm", filename):
        continue

    (output_file, lines) = GaussianFile.read_file(filename, return_lines=True)
    dist = int(round(output_file.get_molecule().get_distance(1, 8) * 1000))

    energies[dist] = output_file.energies[-1]

    try:
        nics[dist] = -1 * parse.find_parameter(lines, "17  Bq   Isotropic", 8,
                                               4)[0]
    except:
        pass

    try:
        dipole_line = parse.search_for_block(lines, "Dipole", "Quadrupole")
        fields = re.split(" +", dipole_line)
        fields = list(filter(None, fields))
        dipole[dist] = float(fields[-1])
Exemple #4
0
import numpy as np
from cctk import ConformationalEnsemble, GaussianFile

path = "starting_structure.gjf"
cent = 1
lg = 7
nu = 8

file = GaussianFile.read_file(path)
mol = file.get_molecule()
mol.assign_connectivity()

footer = f"B {cent} {lg} F\nB {cent} {nu} F\n"

for lg_dist in np.arange(1.5, 3.3, 0.1):
    for nu_dist in np.arange(1.2, 3.0, 0.1):
        mol.set_distance(cent, lg, lg_dist)
        mol.set_distance(cent, nu, nu_dist)

        mol.check_for_conflicts()
        GaussianFile.write_molecule_to_file(
            f"scan_{int(round(lg_dist*100))}_{int(round(nu_dist*100))}.gjf",
            mol,
            "#p opt=modredundant b3lyp/6-31+g(d) scrf=(smd, solvent=tetrahydrofuran)",
            footer=footer)