Пример #1
0
 def __init__(self,
              universe,
              force_field,
              subset1=None,
              subset2=None,
              threads=None,
              mpi_communicator=None):
     if not Universe.isUniverse(universe):
         raise TypeError("energy evaluator defined only for universes")
     self.universe = universe
     self.universe_version = self.universe._version
     self.ff = force_field
     self.configuration = self.universe.configuration()
     self.global_data = ForceFieldData()
     if subset1 is not None and subset2 is None:
         subset2 = subset1
     terms = self.ff.evaluatorTerms(self.universe, subset1, subset2,
                                    self.global_data)
     if not isinstance(terms, type([])):
         raise ValueError("evaluator term list not a list")
     from MMTK_forcefield import Evaluator
     if threads is None:
         import MMTK.ForceFields
         threads = MMTK.ForceFields.default_energy_threads
     self.evaluator = Evaluator(Numeric.array(terms), threads,
                                mpi_communicator)
Пример #2
0
def viewConfigurationVMD(object, configuration=None, format='pdb', label=None):
    from MMTK import Universe
    format = format.lower()
    if format != 'pdb':
        return genericViewConfiguration(object, configuration, format)
    tempfile.tempdir = tempdir
    filename = tempfile.mktemp()
    filename_tcl = filename.replace('\\', '\\\\')
    script = tempfile.mktemp()
    script_tcl = script.replace('\\', '\\\\')
    tempfile.tempdir = None
    object.writeToFile(filename, configuration, format)
    file = open(script, 'w')
    file.write('mol load pdb ' + filename_tcl + '\n')
    if isCalpha(object):
        file.write('mol modstyle 0 all trace\n')
    file.write('color Name 1 white\n')
    file.write('color Name 2 white\n')
    file.write('color Name 3 white\n')
    if Universe.isUniverse(object):
        # add a box around periodic universes
        basis = object.basisVectors()
        if basis is not None:
            v1, v2, v3 = basis
            p = -0.5 * (v1 + v2 + v3)
            for p1, p2 in [(p, p + v1), (p, p + v2), (p + v1, p + v1 + v2),
                           (p + v2, p + v1 + v2), (p, p + v3),
                           (p + v1, p + v1 + v3), (p + v2, p + v2 + v3),
                           (p + v1 + v2, p + v1 + v2 + v3),
                           (p + v3, p + v1 + v3), (p + v3, p + v2 + v3),
                           (p + v1 + v3, p + v1 + v2 + v3),
                           (p + v2 + v3, p + v1 + v2 + v3)]:
                file.write('graphics 0 line {%f %f %f} {%f %f %f}\n' %
                           (tuple(p1 / Units.Ang) + tuple(p2 / Units.Ang)))
    file.write('file delete ' + filename_tcl + '\n')
    if sys.platform != 'win32':
        # Under Windows, it seems to be impossible to delete
        # the script file while it is still in use. For the moment
        # we just don't delete it at all.
        file.write('file delete ' + script_tcl + '\n')
    file.close()
    subprocess.Popen([viewer['pdb'][1], '-nt', '-e', script])
Пример #3
0
    def __init__(self, universe, force_field, subset1=None, subset2=None,
                 threads=None, mpi_communicator=None):
	if not Universe.isUniverse(universe):
	    raise TypeError, "energy evaluator defined only for universes"
	self.universe = universe
	self.universe_version = self.universe._version
	self.ff = force_field
	self.configuration = self.universe.configuration()
	self.global_data = ForceFieldData()
	if subset1 is not None and subset2 is None:
	    subset2 = subset1
	terms = self.ff.evaluatorTerms(self.universe,
                                            subset1, subset2,
                                            self.global_data)
        from MMTK_forcefield import Evaluator
        if threads is None:
            import MMTK.ForceFields
            threads = MMTK.ForceFields.default_energy_threads;
        self.evaluator = Evaluator(Numeric.array(terms), threads,
                                   mpi_communicator)
Пример #4
0
def viewConfigurationVMD(object, configuration = None, format = 'pdb',
                      label = None):
    from MMTK import Universe
    format = format.lower()
    if format != 'pdb':
        return genericViewConfiguration(object, configuration, format)
    tempfile.tempdir = tempdir
    filename = tempfile.mktemp()
    filename_tcl = filename.replace('\\', '\\\\')
    script = tempfile.mktemp()
    script_tcl = script.replace('\\', '\\\\')
    tempfile.tempdir = None
    object.writeToFile(filename, configuration, format)
    file = open(script, 'w')
    file.write('mol load pdb ' + filename_tcl + '\n')
    if isCalpha(object):
        file.write('mol modstyle 0 all trace\n')
    file.write('color Name 1 white\n')
    file.write('color Name 2 white\n')
    file.write('color Name 3 white\n')
    if Universe.isUniverse(object):
        # add a box around periodic universes
        basis = object.basisVectors()
        if basis is not None:
            v1, v2, v3 = basis
            p = -0.5*(v1+v2+v3)
            for p1, p2 in [(p, p+v1), (p, p+v2), (p+v1, p+v1+v2),
                           (p+v2, p+v1+v2), (p, p+v3), (p+v1, p+v1+v3),
                           (p+v2, p+v2+v3), (p+v1+v2, p+v1+v2+v3),
                           (p+v3, p+v1+v3), (p+v3, p+v2+v3),
                           (p+v1+v3, p+v1+v2+v3), (p+v2+v3, p+v1+v2+v3)]:
                file.write('graphics 0 line {%f %f %f} {%f %f %f}\n' %
                           (tuple(p1/Units.Ang) + tuple(p2/Units.Ang)))
    file.write('file delete ' + filename_tcl + '\n')
    if sys.platform != 'win32':
            # Under Windows, it seems to be impossible to delete
            # the script file while it is still in use. For the moment
            # we just don't delete it at all.
        file.write('file delete ' + script_tcl + '\n')
    file.close()
    subprocess.Popen([viewer['pdb'][1], '-nt', '-e', script])