def __init__(self, molecule, **kwargs): self.molecule = qtk.toMolecule(molecule) if 'temperature' not in kwargs: kwargs['temperatur'] = 298 if 'temperature_tolerance' not in kwargs: kwargs['temperature_tolerance'] = 50 if 'md_sample_period' not in kwargs: kwargs['md_sample_period'] = 50 self.setting = kwargs
def ESP(self, coord=None, **kwargs): """ method for electron density Note: CUBE file is assumed to be orthorohmbic """ data = self.data grid = self.grid if 'molecule' not in kwargs: mol = self.molecule else: try: mol = copy.deepcopy(qtk.toMolecule(kwargs['molecule'])) except: qtk.exit("error when loading molecule:%s" % \ str(kwargs['molecule'])) N = mol.N Q = self.integrate() Z_sum = sum(mol.Z) ne_diff = abs(Q - Z_sum) ve_diff = abs(Q - mol.getValenceElectrons()) if min(ne_diff, ve_diff) > 1E-2: qtk.warning("charge not conserved... ESP is wrong!") qtk.warning("charge integrate to %.2f, " % Q + \ "while nuclear charge adds to %.2f" % Z_sum) if ve_diff < ne_diff: Z = [qtk.n2ve(qtk.Z2n(z)) for z in mol.Z] Z = np.array(Z).reshape(N, 1) else: Z = mol.Z.reshape(N, 1) structure = np.hstack([Z, mol.R * 1.889725989]) if coord is not None: x, y, z = np.array(coord) * 1.889725989 V = ESP_c.esp_point(grid, structure, data, x, y, z) return V else: qtk.warning("known issue: unidentifed memory leak") out = copy.deepcopy(self) out.molecule = mol out.data = np.nan_to_num( ESP_cube_c.esp_cube(grid, structure, data) ) return out
def ESP(self, coord=None, **kwargs): """ method for electron density Note: CUBE file is assumed to be orthorohmbic """ data = self.data grid = self.grid if 'molecule' not in kwargs: mol = self.molecule else: try: mol = copy.deepcopy(qtk.toMolecule(kwargs['molecule'])) except: qtk.exit("error when loading molecule:%s" % \ str(kwargs['molecule'])) N = mol.N Q = self.integrate() Z_sum = sum(mol.Z) ne_diff = abs(Q - Z_sum) ve_diff = abs(Q - mol.getValenceElectrons()) if min(ne_diff, ve_diff) > 1E-2: qtk.warning("charge not conserved... ESP is wrong!") qtk.warning("charge integrate to %.2f, " % Q + \ "while nuclear charge adds to %.2f" % Z_sum) if ve_diff < ne_diff: Z = [qtk.n2ve(qtk.Z2n(z)) for z in mol.Z] Z = np.array(Z).reshape(N, 1) else: Z = mol.Z.reshape(N, 1) structure = np.hstack([Z, mol.R * 1.889725989]) if coord is not None: x, y, z = np.array(coord) * 1.889725989 V = ESP_c.esp_point(grid, structure, data, x, y, z) return V else: qtk.warning("known issue: unidentifed memory leak") out = copy.deepcopy(self) out.molecule = mol out.data = np.nan_to_num(ESP_cube_c.esp_cube( grid, structure, data)) return out
def __init__(self, xyz_file, parameter_file, **kwargs): self.structure = qtk.toMolecule(xyz_file) # mutation related variables self.mutation_list = [] self.mutation_target = [] self.mutation_size = 0 # stretching related variables self.stretching_list = [] self.stretching_direction = [] self.stretching_range = [] # rotation related variables self.rotation_list = [] self.rotation_center = [] self.rotation_axis = [] self.rotation_range = [] # replacing realted variables # not yet implemented # constraint variables # self.constraint = False self.forbiden_bonds = [] self.ztotal = 0 self.vtotal = 0 self.element_count = {} # setup all parameters self.read_param(parameter_file) self.coor = flatten([ ['m' for _ in flatten(self.mutation_list)], ['s' for _ in flatten(self.stretching_list)], ['r' for _ in flatten(self.rotation_list)], ]) MList = self.mutation_list _flatten = [item for sublist in MList for item in sublist] vlen = np.vectorize(len) try: lenList = vlen(MList) except TypeError: lenList = [len(MList[0]) for i in range(len(MList))] if not qtk.setting.quiet: report_itr = False if self.mutation_list: report_itr += True qtk.report('', "===== CCS REPORT =====", color=None) qtk.report("generating molecule", xyz_file) qtk.report("ccs parameter file", parameter_file) qtk.report("mutation indices", self.mutation_list) qtk.report("target atomic numbers", self.mutation_target) qtk.report("length of mutation vector", len(_flatten), "<=>", lenList) #print "" if self.stretching_list: qtk.report("stretching indices", self.stretching_list) qtk.report("stretching range", self.stretching_range) qtk.report("stretching direction indices", self.stretching_direction) #print "" if self.rotation_list: qtk.report("rotation indices", self.rotation_list) qtk.report("rotation center", self.rotation_center) qtk.report("rotation axis", self.rotation_axis) qtk.report("rotation range", self.rotation_range) #print "" qtk.status("ccs coordinate", self.coor) qtk.report('', "========= END ========", color=None)