def opt1():
	gaussian.job( filetypes.parse_xyz('xyz/3_2_2_dmf_dma_pbi2_7.xyz'), 'HSEH1PBE/LanL2DZ', 'batch', 'x_both_3_2_2_dmf_dma_pbi2_7', 'Opt', extra_section='B 13 36 F\nB 13 29 F\nA 13 36 29 F\nA 36 13 29F')
	gaussian.job( filetypes.parse_xyz('xyz/3_1_2_dmf_dma_pbi2_7.xyz'), 'HSEH1PBE/LanL2DZ', 'batch', 'x_both_3_1_2_dmf_dma_pbi2_7', 'Opt', extra_section='B 13 36 F\nB 13 29 F\nA 13 36 29 F\nA 36 13 29F')
	gaussian.job( filetypes.parse_xyz('xyz/3_3_1_dmf_dma_pbi2_7.xyz'), 'HSEH1PBE/LanL2DZ', 'batch', 'x_both_3_3_1_dmf_dma_pbi2_7', 'Opt', extra_section='B 13 36 F\nB 13 29 F\nA 13 36 29 F\nA 36 13 29F')
	gaussian.job( filetypes.parse_xyz('xyz/3_2_2_dmf_dma_pbi2_7.xyz'), 'HSEH1PBE/LanL2DZ', 'batch', 'x_n_3_2_2_dmf_dma_pbi2_7', 'Opt', extra_section='B 13 29 F\nA 13 29 36 F\nA 29 13 36F')
	gaussian.job( filetypes.parse_xyz('xyz/3_1_2_dmf_dma_pbi2_7.xyz'), 'HSEH1PBE/LanL2DZ', 'batch', 'x_n_3_1_2_dmf_dma_pbi2_7', 'Opt', extra_section='B 13 29 F\nA 13 29 36 F\nA 29 13 36F')
	gaussian.job( filetypes.parse_xyz('xyz/3_2_2_dmf_dma_pbi2_7.xyz'), 'HSEH1PBE/LanL2DZ', 'batch', 'x_i_3_2_2_dmf_dma_pbi2_7', 'Opt', extra_section='B 13 36 F\nA 13 29 36 F\nA 29 13 36F')
	gaussian.job( filetypes.parse_xyz('xyz/3_1_2_dmf_dma_pbi2_7.xyz'), 'HSEH1PBE/LanL2DZ', 'batch', 'x_i_3_1_2_dmf_dma_pbi2_7', 'Opt', extra_section='B 13 36 F\nA 13 29 36 F\nA 29 13 36F')
	gaussian.job( filetypes.parse_xyz('xyz/3_3_1_dmf_dma_pbi2_7.xyz'), 'HSEH1PBE/LanL2DZ', 'batch', 'x_i_3_3_1_dmf_dma_pbi2_7', 'Opt', extra_section='B 13 36 F\nA 13 29 36 F\nA 29 13 36F')
def acetone_and_pbi2():
	acetone1 = gaussian.atoms('acetone')
	pbi2 = filetypes.parse_xyz('xyz/Optimized Molecules/pbi2.xyz')

	for atom in acetone1:
		atom.x = atom.x + 10
	

	atoms = acetone1+pbi2

	filetypes.write_xyz('pbi2_1acetone', atoms)
def react_dots(
    params,
    dot_size1,
    dot_size2,
    prior_run_name1,
    prior_run_name2,
    random_seed=1,
    run_name_prefix="react_",
    on_queue=True,
    method="metadynamics",
):
    random_s = str(random_seed)
    random.seed(random_seed)
    run_name = run_name_prefix + str(dot_size1) + "_" + str(dot_size2)

    spoc = utils.Molecule("/fs/home/jms875/Documents/nanocrystals/pb_oleate_hydrate_morse/" + spoc_name + ".arc")

    atoms1, bonds1, angles1, dihedrals1 = cPickle.load(open("lammps/" + prior_run_name1 + ".pickle", "rb"))
    atoms1, bonds1, angles1, dihedrals1 = remove_unattached_ligands(atoms1, bonds1, angles1, dihedrals1, spoc)
    atoms2, bonds2, angles2, dihedrals2 = cPickle.load(open("lammps/" + prior_run_name2 + ".pickle", "rb"))
    atoms2, bonds2, angles2, dihedrals2 = remove_unattached_ligands(atoms2, bonds2, angles2, dihedrals2, spoc)

    atoms1_xyz = filetypes.parse_xyz(prior_run_name1 + ".xyz")
    atoms2_xyz = filetypes.parse_xyz(prior_run_name2 + ".xyz")
    goal_atoms = filetypes.parse_xyz("dot" + str(dot_size1 + dot_size2) + ".xyz")

    # set starting coordinates
    for a, b in zip(atoms1, atoms1_xyz):
        a.x = b.x
        a.y = b.y
        a.z = b.z

    for a, b in zip(atoms2, atoms2_xyz):
        a.x = b.x
        a.y = b.y
        a.z = b.z

    atoms = atoms1 + atoms2
    bonds = bonds1 + bonds2
    angles = angles1 + angles2
    dihedrals = dihedrals1 + dihedrals2
    # make sure atom types are the same in atom1 and atom2
    atom_types_by_type_index = dict([(t.type.index, t.type) for t in atoms])
    for i, a in enumerate(atoms):
        a.type = atom_types_by_type_index[a.type.index]
        a.index = i + 1
        if coul_on and a.type.index in params:
            a.charge = params[a.type.index]
        else:
            a.charge = a.type.charge

    atom_types = dict([(t.type, True) for t in atoms]).keys()
    atom_types.sort(key=lambda t: -t.element - t.index * 0.00001)

    offset = (
        radius_of_gyration([a for a in atoms1 if (a.type.notes == "PbS Nanocrystal Pb" or a.element == "S")])
        + radius_of_gyration([a for a in atoms2 if (a.type.notes == "PbS Nanocrystal Pb" or a.element == "S")])
        + 10.0
    )
    offset_vector = utils.matvec(utils.rand_rotation(), [offset, offset, offset])
    rot = utils.rand_rotation()
    for a in atoms2:  # offset by random orientation vector
        a.x, a.y, a.z = utils.matvec(rot, [a.x, a.y, a.z])
        a.x += offset_vector[0]
        a.y += offset_vector[1]
        a.z += offset_vector[2]
    box_size = [
        15.0 + max([a.x for a in atoms]) - min([a.x for a in atoms]),
        15.0 + max([a.y for a in atoms]) - min([a.y for a in atoms]),
        15.0 + max([a.z for a in atoms]) - min([a.z for a in atoms]),
    ]

    # goal_atoms = cPickle.load( open('lammps/dot'+str(dot_size1+dot_size2)+'.pickle', 'rb') )[0]

    # filetypes.write_xyz('out_meta', atoms)
    # exit()

    os.chdir("lammps")
    save_to_file(atoms, bonds, angles, dihedrals, atom_types, run_name)
    lammps.write_data_file_general(
        atoms, bonds, angles, dihedrals, box_size, run_name, atom_types=atom_types, pair_coeffs_included=False
    )
    os.system("cp ../" + sys.argv[0] + " " + run_name + ".py")

    starting_rxn_coord = radius_of_gyration(
        [a for a in atoms if (a.type.notes == "PbS Nanocrystal Pb" or a.element == "S")]
    )
    print len([a for a in atoms if (a.type.notes == "PbS Nanocrystal Pb" or a.element == "S")])
    goal_rxn_coord = radius_of_gyration(goal_atoms[0 : 2 * (dot_size1 + dot_size2)])

    colvars_file = open(run_name + ".colvars", "w")
    colvars_file.write(
        """
colvarsTrajFrequency 10000
colvarsRestartFrequency 100000

colvar {
  name gyr
  width 0.1 #size of bins, in Angstroms
  upperBoundary """
        + str(starting_rxn_coord)
        + """ #two separate dots
  lowerBoundary """
        + str(goal_rxn_coord)
        + """ #one unified dot
  lowerwallconstant 10.0
  upperwallconstant 10.0
  gyration {
	atoms {
	  atomNumbers """
        + (" ".join([str(a.index) for a in atoms if (a.type.notes == "PbS Nanocrystal Pb" or a.element == "S")]))
        + """
	}
  }
}
"""
    )
    if method.lower() == "abf":
        colvars_file.write(
            """
abf {
  colvars gyr
  hideJacobian # when using distance-based colvar: makes pmf flat at infinity
  fullSamples 1000
}
"""
        )
    elif method.lower() == "metadynamics":
        colvars_file.write(
            """
metadynamics {
  colvars gyr
  hillWeight 0.1
  newHillFrequency 1000
}
"""
        )
    else:
        raise Exception('Invalid free energy method "%s"' % method)
    colvars_file.close()

    f = open(run_name + ".in", "w")
    write_input_header(f, run_name, atom_types, read_restart=False)
    f.write(
        """
dump	1 all xyz 10000 """
        + run_name
        + """.xyz
minimize 0.0 1.0e-8 10000 1000
neigh_modify check yes every 1 delay 0
thermo_style custom pe temp
thermo 10000
restart 100000 """
        + run_name
        + """.restart1 """
        + run_name
        + """.restart2
fix motion all nve
fix implicit_solvent all langevin 400.0 400.0 100.0 """
        + random_s
        + """ zero yes gjf yes
fix		col all colvars """
        + run_name
        + """.colvars output """
        + run_name
        + """ seed """
        + random_s
        + """ tstat implicit_solvent
velocity	all create 400.0 """
        + random_s
        + """ mom yes
timestep	2.0
thermo_style	custom step temp etotal pe ke epair ebond f_col tpcpu
run """
        + str(int(1e7))
        + """
write_restart """
        + run_name
        + """.restart
"""
    )
    f.close()
    # run_job(run_name, on_queue)
    os.chdir("..")
def d2o():
	for step in range(3,4):
		gaussian.job( filetypes.parse_xyz('xyz/pbi2_d2o_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'pbi2_d2o_%d' % step, 'opt guess=read geom=(read,newdefinition)', previous='')
def dmso():
	for step in range(7):
		gaussian.job( filetypes.parse_xyz('xyz/4_dp_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', '4_dp_%d' % step, 'opt')
def opt2():
	gaussian.job( filetypes.parse_xyz('xyz/DMSO.xyz'), 'HSEH1PBE/LanL2DZ', 'batch', 'DMSO', 'Opt')
def opt():
	gaussian.job( filetypes.parse_xyz('xyz/2_dmf_dma_pbi2_1.xyz'), 'HSEH1PBE/LanL2DZ', 'batch', '2_dmf_dma_pbi2_1', 'opt')
def start_stuff():
	for step in range(10):
		gaussian.job( filetypes.parse_xyz('xyz/3_1_1_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'n_3_1_1_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 29 F\nA 13 29 36 F\nA 29 13 36F')
		gaussian.job( filetypes.parse_xyz('xyz/3_1_1_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'i_3_1_1_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 36 F\nA 13 29 36 F\nA 29 13 36F')
		gaussian.job( filetypes.parse_xyz('xyz/3_1_1_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'both_3_1_1_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 36 F\nB 13 29 F\nA 13 36 29 F\nA 36 13 29F')
		gaussian.job( filetypes.parse_xyz('xyz/3_2_1_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'n_3_2_1_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 29 F\nA 13 29 36 F\nA 29 13 36F')
		gaussian.job( filetypes.parse_xyz('xyz/3_2_1_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'i_3_2_1_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 36 F\nA 13 29 36 F\nA 29 13 36F')
		gaussian.job( filetypes.parse_xyz('xyz/3_2_1_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'both_3_2_1_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 36 F\nB 13 29 F\nA 13 36 29 F\nA 36 13 29F')
		gaussian.job( filetypes.parse_xyz('xyz/3_3_1_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'n_3_3_1_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 29 F\nA 13 29 36 F\nA 29 13 36F')
		gaussian.job( filetypes.parse_xyz('xyz/3_3_1_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'i_3_3_1_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 36 F\nA 13 29 36 F\nA 29 13 36F')
		gaussian.job( filetypes.parse_xyz('xyz/3_3_1_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'both_3_3_1_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 36 F\nB 13 29 F\nA 13 36 29 F\nA 36 13 29F')
		gaussian.job( filetypes.parse_xyz('xyz/3_1_2_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'n_3_1_2_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 29 F\nA 13 29 36 F\nA 29 13 36F')
		gaussian.job( filetypes.parse_xyz('xyz/3_1_2_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'i_3_1_2_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 36 F\nA 13 29 36 F\nA 29 13 36F')
		gaussian.job( filetypes.parse_xyz('xyz/3_1_2_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'both_3_1_2_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 36 F\nB 13 29 F\nA 13 36 29 F\nA 36 13 29F')
		gaussian.job( filetypes.parse_xyz('xyz/3_2_2_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'n_3_2_2_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 29 F\nA 13 29 36 F\nA 29 13 36F')
		gaussian.job( filetypes.parse_xyz('xyz/3_2_2_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'i_3_2_2_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 36 F\nA 13 29 36 F\nA 29 13 36F')
		gaussian.job( filetypes.parse_xyz('xyz/3_2_2_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'both_3_2_2_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 36 F\nB 13 29 F\nA 13 36 29 F\nA 36 13 29F')
		gaussian.job( filetypes.parse_xyz('xyz/3_3_2_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'n_3_3_2_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 29 F\nA 13 29 36 F\nA 29 13 36F')
		gaussian.job( filetypes.parse_xyz('xyz/3_3_2_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'i_3_3_2_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 36 F\nA 13 29 36 F\nA 29 13 36F')
		gaussian.job( filetypes.parse_xyz('xyz/3_3_2_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', 'both_3_3_2_dmf_dma_pbi2_%d' % step, 'Opt=ModRedundant', extra_section='B 13 36 F\nB 13 29 F\nA 13 36 29 F\nA 36 13 29F')
def dmf2():
	for step in range(9):
		gaussian.job( filetypes.parse_xyz('xyz/3_dmf_dma_pbi2_%d.xyz' % step), 'HSEH1PBE/LanL2DZ', 'batch', '3_dmf_dma_pbi2_%d' % step, 'opt')
Exemplo n.º 10
0
def make_lattice(params, system_size, prior_run_name, lc_x=1, lc_y=1, lc_z=1, random_seed=1, run_name_prefix='lattice_', on_queue=True):
	atoms, bonds, angles, dihedrals = [], [], [], []
	x, y, z = 0, 0, 0
	spacer = utils.Molecule('ma.arc')
	for xi in range(system_size):
		x, y, z = 0, 0, 0
		for yi in range(system_size):
			x, y, z = 0, 0, 0
			for zi in range(system_size):
				x=xi*lc_x
				y=yi*lc_y
				z=zi*lc_z
				unbonded_atoms = filetypes.parse_xyz('/fs/home/jar528/Desktop/nano/xyz/unbonded.xyz')
				for a in unbonded_atoms:
					a.x += x
					a.y += y
					a.z += z
				atoms = atoms + unbonded_atoms
				spacer.add_to(x, y, z, atoms, bonds, angles, dihedrals)
	
	iodine_type = [t for t in utils.Molecule.atom_types if t.element_name=='I'][-1]
	lead_type = [t for t in utils.Molecule.atom_types if t.element_name=='Pb'][-1]
	
	for a in atoms:
		if a.element=='I':
			a.type=iodine_type
		if a.element=='Pb':
			a.type=lead_type
	
	#filetypes.write_xyz('/fs/home/jar528/Desktop/nano/out', atoms)
	#exit()
	
	random_s = str(random_seed)
	random.seed(random_seed)
	run_name = run_name_prefix+str(system_size)

	# make sure atom types are the same in atom1 and atom2
	atom_types_by_type_index = dict( [(t.type.index,t.type) for t in atoms] )
	for i,a in enumerate(atoms):
		a.type = atom_types_by_type_index[ a.type.index ]
		a.index = i+1
		if coul_on and a.type.index in params:
			a.charge = params[a.type.index]
		else:
			a.charge = a.type.charge
	
	atom_types = dict( [(t.type,True) for t in atoms] ).keys()
	atom_types.sort(key=lambda t:-t.element-t.index*0.00001)
	
	box_size = [ 3.24+max([a.x for a in atoms])-min([a.x for a in atoms]),
				 3.24+max([a.y for a in atoms])-min([a.y for a in atoms]),
				 3.24+max([a.z for a in atoms])-min([a.z for a in atoms]) ]
	
	os.chdir('lammps')
	save_to_file( atoms, bonds, angles, dihedrals, atom_types, run_name )
	lammps.write_data_file_general(atoms, bonds, angles, dihedrals, box_size, run_name, atom_types=atom_types, pair_coeffs_included=False)
	os.system('cp ../'+sys.argv[0]+' '+run_name+'.py')
	
	f = open(run_name+'.in', 'w')
	write_input_header(f, run_name, atom_types, read_restart=False)
	f.write('''
dump	1 all xyz 10000 '''+run_name+'''.xyz
minimize 0.0 1.0e-8 10000 1000
neigh_modify check yes every 1 delay 0
thermo 10000
restart 100000 '''+run_name+'''.restart1 '''+run_name+'''.restart2
#fix motion all nve
#fix implicit_solvent all langevin 400.0 400.0 1000.0 '''+random_s+''' zero yes gjf yes
fix motion all npt temp 450.0 450.0 100.0 aniso 1.0 1.0 1000.0
velocity	all create 400.0 '''+random_s+''' mom yes
timestep	2.0
thermo_style	custom step temp etotal pe tpcpu
run '''+str(int(1e6))+'''
#thermo 1
#run 1000
minimize 0.0 1.0e-8 10000 1000
write_restart '''+run_name+'''.restart
''')
	f.close()
	run_job(run_name, on_queue)
	os.chdir('..')
Exemplo n.º 11
0
def SVD(dot_size,Niter):
	lattice_start = []
	lattice_end = []
	dot1 = [1, 2, 4, 5, 7, 9, 10]
	dot4 = [4, 5, 6, 8]
	for run in dot4:
		# W is the optimal rotation matrix that minimizes the differences between the start and end coordinates
		# read xyz file and compare the start and end structures
		f = open('/fs/home/ja539/Desktop/C/jovana_test/HSEHsol_test_iter'+str(Niter)+'_'+str(run)+'_'+str(dot_size)+'.xyz')
		Natoms = int(f.readline())
		f.close()
		atoms = filetypes.parse_xyz('/fs/home/ja539/Desktop/C/jovana_test/HSEHsol_test_iter'+str(Niter)+'_'+str(run)+'_'+str(dot_size)+'.xyz')
		start_atoms = atoms[-Natoms:]
		energy, end_atoms = gaussian.parse_atoms('HSEHsol_testopt4_iter'+str(Niter)+'_'+str(run)+'_'+str(dot_size),check_convergence=False)
		#energy, end_atoms = gaussian.parse_atoms('/fs/home/jms875/Documents/nanocrystals/pb_oleate_hydrate/gaussian/dot2_m06_6.log',check_convergence=False)
		#energy, end_atoms = gaussian.parse_atoms('gaussian/HSEHsol_core1_dot6_2.log')
	
		startx,starty,startz,endx,endy,endz,start_com,end_com = unweighted_COM(start_atoms,end_atoms)
		A = np.array([startx,starty,startz])
		#print A.shape
		B = np.array([endx,endy,endz])
		BT = B.transpose()
		C = np.dot(A,BT)
		#print C.shape
		
		U, s, V = np.linalg.svd(C, full_matrices=True)
		#print U.shape, V.shape
		if np.linalg.det(V) < 0:
			for i in range(3):
				V[2][i] =  V[2][i]*-1.0
		#print U.shape, V.shape
		W = np.dot(V.transpose(),U.transpose())	
		A_new = np.dot(W,A)
		
		# piece together an xyz file that has the end and shifted start one after the other
		for i in range(len(start_atoms)):
			start_atoms[i].x = A_new[0][i]
			start_atoms[i].y = A_new[1][i]
			start_atoms[i].z = A_new[2][i]
			end_atoms[i].x = B[0][i]
			end_atoms[i].y = B[1][i]
			end_atoms[i].z = B[2][i]
		
		make_xyz_file('SVD_iter'+str(Niter)+'_'+str(run)+'_'+str(dot_size), end_atoms, 'w')
		make_xyz_file('SVD_iter'+str(Niter)+'_'+str(run)+'_'+str(dot_size), start_atoms, 'a')
		
		# calculate RMS translation
		D = 0.0
		for a,b in zip(start_atoms,end_atoms):
			D += ((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y) + (a.z-b.z)*(a.z-b.z))**(0.5)
		#procrustes_distance = (D/len(start_atoms))**0.5
		procrustes_distance = D/len(start_atoms)
		#print procrustes_distance
		
		# relative separations
		# for the core:
		coreD = 0.0
		for a1,b1 in zip(start_atoms[0:dot_size*2],end_atoms[0:dot_size*2]):
			for a2,b2 in zip(start_atoms[0:dot_size*2],end_atoms[0:dot_size*2]):
				coreD += abs(((a1.x-a2.x)*(a1.x-a2.x) + (a1.y-a2.y)*(a1.y-a2.y) + (a1.z-a2.z)*(a1.z-a2.z))**(0.5) - ((b1.x-b2.x)*(b1.x-b2.x) + (b1.y-b2.y)*(b1.y-b2.y) + (b1.z-b2.z)*(b1.z-b2.z))**(0.5))
		
		coreD = coreD/(dot_size*2)/(dot_size*2-1)
		print 'core:', coreD
		
		# for the ligands (average over all the ligands)
		ligD = [0.0]*((Natoms-2*dot_size)/10)
		for i in range((Natoms-2*dot_size)/10):
			for a1,b1 in zip(start_atoms[dot_size*2+10*i:dot_size*2+10*(i+1)],end_atoms[dot_size*2+10*i:dot_size*2+10*(i+1)]):
				for a2,b2 in zip(start_atoms[dot_size*2+10*i:dot_size*2+10*(i+1)],end_atoms[dot_size*2+10*i:dot_size*2+10*(i+1)]):
					ligD[i] += abs(((a1.x-a2.x)*(a1.x-a2.x) + (a1.y-a2.y)*(a1.y-a2.y) + (a1.z-a2.z)*(a1.z-a2.z))**(0.5) - ((b1.x-b2.x)*(b1.x-b2.x) + (b1.y-b2.y)*(b1.y-b2.y) + (b1.z-b2.z)*(b1.z-b2.z))**(0.5))
		
			ligD[i] = ligD[i]/10/9
		#print ligD
		ligDavg = (sum(a for a in ligD))/len(ligD)
		print 'lig:', ligDavg
		allD = 0.0
		for a1,b1 in zip(start_atoms,end_atoms):
			for a2,b2 in zip(start_atoms,end_atoms):
				allD += abs(((a1.x-a2.x)*(a1.x-a2.x) + (a1.y-a2.y)*(a1.y-a2.y) + (a1.z-a2.z)*(a1.z-a2.z))**(0.5) - ((b1.x-b2.x)*(b1.x-b2.x) + (b1.y-b2.y)*(b1.y-b2.y) + (b1.z-b2.z)*(b1.z-b2.z))**(0.5))
		
		allD = allD/Natoms/(Natoms-1)
		print 'all:', allD
		
		
		for a1,b1 in zip(start_atoms[0:dot_size],end_atoms[0:dot_size]):
			for a2,b2 in zip(start_atoms[dot_size:dot_size*2],end_atoms[dot_size:dot_size*2]):
				lattice_start += [((a1.x-a2.x)*(a1.x-a2.x) + (a1.y-a2.y)*(a1.y-a2.y) + (a1.z-a2.z)*(a1.z-a2.z))**(0.5)]
				lattice_end += [((b1.x-b2.x)*(b1.x-b2.x) + (b1.y-b2.y)*(b1.y-b2.y) + (b1.z-b2.z)*(b1.z-b2.z))**(0.5)]
Exemplo n.º 12
0
def binding():
    #for n in ['propanenitrile', 'butanenitrile', 'pentanenitrile', 'hexanenitrile', 'aminopropane2', 'aminobutane2', 'aminopentane2', 'aminohexane2', 'hexane2', 'methane', 'hcn2', 'cyanoacetylene2', 'acrylonitrile2', 'cyanoallene2', 'acetonitrile2', 'hc5n2']:
    for n in ['aminobutane2']:

        contents = open('lammps/bind3_' + n + '.log').read()

        opls_binding_e = float(
            re.search('\n1\s+(\S+)\s+Loop time of', contents).group(1))

        atoms = filetypes.parse_xyz('bind3_' + n + '.xyz')

        #opt0: use B97D
        #gaussian.job(atoms, 'B97D/TZVP/Fit', 'batch', 'bind3_'+n+'_opt0', 'Opt=Cartesian', procs=1)

        #opt1: use M062X
        #os.system('cp gaussian/bind3_'+n+'_opt0.chk gaussian/bind3_'+n+'_opt1.chk')
        #gaussian.job([], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt1', 'Opt=Cartesian Geom=AllCheck Guess=Read', procs=1)
        #opt2: M062X with solvent
        #os.system('cp gaussian/bind3_'+n+'_opt0.chk gaussian/bind3_'+n+'_opt2.chk')
        #gaussian.job([], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt2', 'Opt=Cartesian Geom=AllCheck Guess=Read SCRF(Solvent=n-Hexane)', procs=1)
        '''
		jlist = subprocess.Popen('jlist', shell=True, stdout=subprocess.PIPE).communicate()[0]
		if ' bind3_'+n+'_opt1 ' not in jlist and ' bind3_'+n+'_opt1.1 ' not in jlist and gaussian.parse_atoms('gaussian/bind3_'+n+'_opt1.log') is None and (not os.path.isfile('gaussian/bind3_'+n+'_opt1.1.log') or gaussian.parse_atoms('gaussian/bind3_'+n+'_opt1.1.log') is None):
			os.system('cp gaussian/bind3_'+n+'_opt1.chk gaussian/bind3_'+n+'_opt1.1.chk')
			#gaussian.job([], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt1.1', 'Opt=Restart', procs=1)
			#gaussian.job([], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt1.1', 'Opt=Cartesian Geom=AllCheck Guess=Read', procs=1)
			print 'bind3_'+n+'_opt1.1'
		if ' bind3_'+n+'_opt2 ' not in jlist and ' bind3_'+n+'_opt2.1 ' not in jlist and gaussian.parse_atoms('gaussian/bind3_'+n+'_opt2.log') is None and (not os.path.isfile('gaussian/bind3_'+n+'_opt2.1.log') or gaussian.parse_atoms('gaussian/bind3_'+n+'_opt2.1.log') is None):
			os.system('cp gaussian/bind3_'+n+'_opt2.chk gaussian/bind3_'+n+'_opt2.1.chk')
			#gaussian.job([], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt2.1', 'Opt=Restart SCRF(Solvent=n-Hexane)', procs=1)
			#gaussian.job([], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt2.1', 'Opt=Cartesian Geom=AllCheck Guess=Read SCRF(Solvent=n-Hexane)', procs=1)
			print 'bind3_'+n+'_opt2.1'
		continue
		'''

        #Find BSSE without solvent (on opt1)
        #os.system('cp gaussian/'+n+'_0.chk gaussian/bind3_'+n+'_opt1a.chk')
        #os.system('cp gaussian/'+n+'_0.chk gaussian/bind3_'+n+'_opt1b.chk')
        #os.system('cp gaussian/bind3_'+n+'_opt1.chk gaussian/bind3_'+n+'_opt1a_Bq.chk')
        #os.system('cp gaussian/bind3_'+n+'_opt1.chk gaussian/bind3_'+n+'_opt1b_Bq.chk')
        #os.system('cp gaussian/bind3_'+n+'_opt1.1.chk gaussian/bind3_'+n+'_opt1a_Bq.chk')
        #os.system('cp gaussian/bind3_'+n+'_opt1.1.chk gaussian/bind3_'+n+'_opt1b_Bq.chk')
        try:
            atoms = gaussian.parse_atoms('gaussian/bind3_' + n + '_opt1.1.log',
                                         check_convergence=False)[1]
        except:
            atoms = gaussian.parse_atoms('gaussian/bind3_' + n + '_opt1.log',
                                         check_convergence=False)[1]
        #gaussian.job(atoms[ : len(atoms)/2 ], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt1a', 'Guess=Read', procs=1)
        #gaussian.job(atoms[ len(atoms)/2 : ], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt1b', 'Guess=Read', procs=1)
        atoms_a = copy.deepcopy(atoms)
        for a in atoms_a[:len(atoms) / 2]:
            a.element = a.element + '-Bq'
        #gaussian.job(atoms_a, 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt1a_Bq', 'Guess=Read', procs=1)
        for a in atoms[len(atoms) / 2:]:
            a.element = a.element + '-Bq'
        #gaussian.job(atoms, 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt1b_Bq', 'Guess=Read', procs=1)

        #Find BSSE with solvent (on opt2)
        #os.system('cp gaussian/'+n+'_1.chk gaussian/bind3_'+n+'_opt2a.chk')
        #os.system('cp gaussian/'+n+'_1.chk gaussian/bind3_'+n+'_opt2b.chk')
        #os.system('cp gaussian/bind3_'+n+'_opt2.chk gaussian/bind3_'+n+'_opt2a_Bq.chk')
        #os.system('cp gaussian/bind3_'+n+'_opt2.chk gaussian/bind3_'+n+'_opt2b_Bq.chk')
        #os.system('cp gaussian/bind3_'+n+'_opt2.1.chk gaussian/bind3_'+n+'_opt2a_Bq.chk')
        #os.system('cp gaussian/bind3_'+n+'_opt2.1.chk gaussian/bind3_'+n+'_opt2b_Bq.chk')
        try:
            atoms = gaussian.parse_atoms('gaussian/bind3_' + n + '_opt2.1.log',
                                         check_convergence=False)[1]
        except:
            atoms = gaussian.parse_atoms('gaussian/bind3_' + n + '_opt2.log',
                                         check_convergence=False)[1]
        #gaussian.job(atoms[ : len(atoms)/2 ], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt2a', 'Guess=Read SCRF(Solvent=n-Hexane)', procs=1)
        #gaussian.job(atoms[ len(atoms)/2 : ], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt2b', 'Guess=Read SCRF(Solvent=n-Hexane)', procs=1)
        atoms_a = copy.deepcopy(atoms)
        for a in atoms_a[:len(atoms) / 2]:
            a.element = a.element + '-Bq'
        gaussian.job(atoms_a,
                     'M062X/aug-cc-pVDZ',
                     'batch',
                     'bind3_' + n + '_opt2a_Bq',
                     'Guess=Read SCRF(Solvent=n-Hexane)',
                     procs=1)
        for a in atoms[len(atoms) / 2:]:
            a.element = a.element + '-Bq'
        #gaussian.job(atoms, 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt2b_Bq', 'Guess=Read SCRF(Solvent=n-Hexane)', procs=1)

        continue

        #atoms = atoms[ : len(atoms)/2 ]
        #atoms = atoms[ len(atoms)/2 : ]

        #for a in atoms[ len(atoms)/2 : ]:
        #	a.element = a.element + '-Bq'

        #gaussian.job(atoms, 'M062X/cc-pVDZ', 'batch', n+'_sp4', 'SP', procs=1) #sp0 is pair, sp1,sp2 are single, sp3,sp4 with ghost atoms

        os.system('cp gaussian/' + n + '_sp0.chk gaussian/' + n + '_scrf0.chk')
        gaussian.job(atoms,
                     'M062X/aug-cc-pVDZ',
                     'batch',
                     n + '_scrf0',
                     'SP SCRF(Solvent=n-Hexane) Guess=Read',
                     procs=1)  #scrf0, scrf1, scrf2
        atoms1 = copy.deepcopy(atoms)
        for a in atoms1[:len(atoms) / 2]:
            a.element = a.element + '-Bq'
        os.system('cp gaussian/' + n + '_sp0.chk gaussian/' + n + '_scrf1.chk')
        gaussian.job(atoms1,
                     'M062X/aug-cc-pVDZ',
                     'batch',
                     n + '_scrf1',
                     'SP SCRF(Solvent=n-Hexane) Guess=Read',
                     procs=1)
        atoms2 = copy.deepcopy(atoms)
        for a in atoms2[len(atoms) / 2:]:
            a.element = a.element + '-Bq'
        os.system('cp gaussian/' + n + '_sp0.chk gaussian/' + n + '_scrf2.chk')
        gaussian.job(atoms2,
                     'M062X/aug-cc-pVDZ',
                     'batch',
                     n + '_scrf2',
                     'SP SCRF(Solvent=n-Hexane) Guess=Read',
                     procs=1)

        #pair = gaussian.parse_atoms('gaussian/'+n+'_sp0.log')[0]
        #single = gaussian.parse_atoms('gaussian/'+n+'_sp1.log')[0]

        #print n, opls_binding_e, 627.5*(pair - single*2)
        '''
Exemplo n.º 13
0
def binding():
	#for n in ['propanenitrile', 'butanenitrile', 'pentanenitrile', 'hexanenitrile', 'aminopropane2', 'aminobutane2', 'aminopentane2', 'aminohexane2', 'hexane2', 'methane', 'hcn2', 'cyanoacetylene2', 'acrylonitrile2', 'cyanoallene2', 'acetonitrile2', 'hc5n2']:
	for n in ['aminobutane2']:
		
		contents = open('lammps/bind3_'+n+'.log').read()
		
		opls_binding_e = float(re.search('\n1\s+(\S+)\s+Loop time of', contents).group(1))
		
		atoms = filetypes.parse_xyz('bind3_'+n+'.xyz')
		
		#opt0: use B97D
		#gaussian.job(atoms, 'B97D/TZVP/Fit', 'batch', 'bind3_'+n+'_opt0', 'Opt=Cartesian', procs=1)
		
		#opt1: use M062X
		#os.system('cp gaussian/bind3_'+n+'_opt0.chk gaussian/bind3_'+n+'_opt1.chk')
		#gaussian.job([], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt1', 'Opt=Cartesian Geom=AllCheck Guess=Read', procs=1)
		#opt2: M062X with solvent
		#os.system('cp gaussian/bind3_'+n+'_opt0.chk gaussian/bind3_'+n+'_opt2.chk')
		#gaussian.job([], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt2', 'Opt=Cartesian Geom=AllCheck Guess=Read SCRF(Solvent=n-Hexane)', procs=1)
		
		'''
		jlist = subprocess.Popen('jlist', shell=True, stdout=subprocess.PIPE).communicate()[0]
		if ' bind3_'+n+'_opt1 ' not in jlist and ' bind3_'+n+'_opt1.1 ' not in jlist and gaussian.parse_atoms('gaussian/bind3_'+n+'_opt1.log') is None and (not os.path.isfile('gaussian/bind3_'+n+'_opt1.1.log') or gaussian.parse_atoms('gaussian/bind3_'+n+'_opt1.1.log') is None):
			os.system('cp gaussian/bind3_'+n+'_opt1.chk gaussian/bind3_'+n+'_opt1.1.chk')
			#gaussian.job([], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt1.1', 'Opt=Restart', procs=1)
			#gaussian.job([], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt1.1', 'Opt=Cartesian Geom=AllCheck Guess=Read', procs=1)
			print 'bind3_'+n+'_opt1.1'
		if ' bind3_'+n+'_opt2 ' not in jlist and ' bind3_'+n+'_opt2.1 ' not in jlist and gaussian.parse_atoms('gaussian/bind3_'+n+'_opt2.log') is None and (not os.path.isfile('gaussian/bind3_'+n+'_opt2.1.log') or gaussian.parse_atoms('gaussian/bind3_'+n+'_opt2.1.log') is None):
			os.system('cp gaussian/bind3_'+n+'_opt2.chk gaussian/bind3_'+n+'_opt2.1.chk')
			#gaussian.job([], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt2.1', 'Opt=Restart SCRF(Solvent=n-Hexane)', procs=1)
			#gaussian.job([], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt2.1', 'Opt=Cartesian Geom=AllCheck Guess=Read SCRF(Solvent=n-Hexane)', procs=1)
			print 'bind3_'+n+'_opt2.1'
		continue
		'''
		
		#Find BSSE without solvent (on opt1)
		#os.system('cp gaussian/'+n+'_0.chk gaussian/bind3_'+n+'_opt1a.chk')
		#os.system('cp gaussian/'+n+'_0.chk gaussian/bind3_'+n+'_opt1b.chk')
		#os.system('cp gaussian/bind3_'+n+'_opt1.chk gaussian/bind3_'+n+'_opt1a_Bq.chk')
		#os.system('cp gaussian/bind3_'+n+'_opt1.chk gaussian/bind3_'+n+'_opt1b_Bq.chk')
		#os.system('cp gaussian/bind3_'+n+'_opt1.1.chk gaussian/bind3_'+n+'_opt1a_Bq.chk')
		#os.system('cp gaussian/bind3_'+n+'_opt1.1.chk gaussian/bind3_'+n+'_opt1b_Bq.chk')
		try:
			atoms = gaussian.parse_atoms('gaussian/bind3_'+n+'_opt1.1.log', check_convergence=False)[1]
		except:
			atoms = gaussian.parse_atoms('gaussian/bind3_'+n+'_opt1.log', check_convergence=False)[1]
		#gaussian.job(atoms[ : len(atoms)/2 ], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt1a', 'Guess=Read', procs=1)
		#gaussian.job(atoms[ len(atoms)/2 : ], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt1b', 'Guess=Read', procs=1)
		atoms_a = copy.deepcopy(atoms)
		for a in atoms_a[ : len(atoms)/2 ]:
			a.element = a.element + '-Bq'
		#gaussian.job(atoms_a, 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt1a_Bq', 'Guess=Read', procs=1)
		for a in atoms[ len(atoms)/2 : ]:
			a.element = a.element + '-Bq'
		#gaussian.job(atoms, 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt1b_Bq', 'Guess=Read', procs=1)
		
		
		#Find BSSE with solvent (on opt2)
		#os.system('cp gaussian/'+n+'_1.chk gaussian/bind3_'+n+'_opt2a.chk')
		#os.system('cp gaussian/'+n+'_1.chk gaussian/bind3_'+n+'_opt2b.chk')
		#os.system('cp gaussian/bind3_'+n+'_opt2.chk gaussian/bind3_'+n+'_opt2a_Bq.chk')
		#os.system('cp gaussian/bind3_'+n+'_opt2.chk gaussian/bind3_'+n+'_opt2b_Bq.chk')
		#os.system('cp gaussian/bind3_'+n+'_opt2.1.chk gaussian/bind3_'+n+'_opt2a_Bq.chk')
		#os.system('cp gaussian/bind3_'+n+'_opt2.1.chk gaussian/bind3_'+n+'_opt2b_Bq.chk')
		try:
			atoms = gaussian.parse_atoms('gaussian/bind3_'+n+'_opt2.1.log', check_convergence=False)[1]
		except:
			atoms = gaussian.parse_atoms('gaussian/bind3_'+n+'_opt2.log', check_convergence=False)[1]
		#gaussian.job(atoms[ : len(atoms)/2 ], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt2a', 'Guess=Read SCRF(Solvent=n-Hexane)', procs=1)
		#gaussian.job(atoms[ len(atoms)/2 : ], 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt2b', 'Guess=Read SCRF(Solvent=n-Hexane)', procs=1)
		atoms_a = copy.deepcopy(atoms)
		for a in atoms_a[ : len(atoms)/2 ]:
			a.element = a.element + '-Bq'
		gaussian.job(atoms_a, 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt2a_Bq', 'Guess=Read SCRF(Solvent=n-Hexane)', procs=1)
		for a in atoms[ len(atoms)/2 : ]:
			a.element = a.element + '-Bq'
		#gaussian.job(atoms, 'M062X/aug-cc-pVDZ', 'batch', 'bind3_'+n+'_opt2b_Bq', 'Guess=Read SCRF(Solvent=n-Hexane)', procs=1)
		
		continue
		
		#atoms = atoms[ : len(atoms)/2 ]
		#atoms = atoms[ len(atoms)/2 : ]
		
		#for a in atoms[ len(atoms)/2 : ]:
		#	a.element = a.element + '-Bq'
		
		#gaussian.job(atoms, 'M062X/cc-pVDZ', 'batch', n+'_sp4', 'SP', procs=1) #sp0 is pair, sp1,sp2 are single, sp3,sp4 with ghost atoms
		
		os.system('cp gaussian/'+n+'_sp0.chk gaussian/'+n+'_scrf0.chk')
		gaussian.job(atoms, 'M062X/aug-cc-pVDZ', 'batch', n+'_scrf0', 'SP SCRF(Solvent=n-Hexane) Guess=Read', procs=1) #scrf0, scrf1, scrf2
		atoms1 = copy.deepcopy(atoms)
		for a in atoms1[ : len(atoms)/2 ]:
			a.element = a.element + '-Bq'
		os.system('cp gaussian/'+n+'_sp0.chk gaussian/'+n+'_scrf1.chk')
		gaussian.job(atoms1, 'M062X/aug-cc-pVDZ', 'batch', n+'_scrf1', 'SP SCRF(Solvent=n-Hexane) Guess=Read', procs=1)
		atoms2 = copy.deepcopy(atoms)
		for a in atoms2[ len(atoms)/2 : ]:
			a.element = a.element + '-Bq'
		os.system('cp gaussian/'+n+'_sp0.chk gaussian/'+n+'_scrf2.chk')
		gaussian.job(atoms2, 'M062X/aug-cc-pVDZ', 'batch', n+'_scrf2', 'SP SCRF(Solvent=n-Hexane) Guess=Read', procs=1)
		
		#pair = gaussian.parse_atoms('gaussian/'+n+'_sp0.log')[0]
		#single = gaussian.parse_atoms('gaussian/'+n+'_sp1.log')[0]
		
		#print n, opls_binding_e, 627.5*(pair - single*2)
		
		'''