Exemplo n.º 1
0
 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
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
  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
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
    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)