Пример #1
0
 def _GetEnergyModel(self):
     if hasattr(self, "parent"):
         site = self.parent
         ceModel = site.parent
         energyModel = ceModel.energyModel
     else:
         raise ContinuumElectrostaticsError("Energy model is undefined.")
     return energyModel
Пример #2
0
 def interactions(self):
     # . Return a list of interactions of the current instance with other instances
     if not hasattr(self, "parent"):
         raise ContinuumElectrostaticsError("Energy model is undefined.")
     site = self.parent
     ceModel = site.parent
     energyModel = ceModel.energyModel
     energies = []
     for indexOther in range(ceModel.ninstances):
         energies.append(
             energyModel.GetInteractionSymmetric(self._instIndexGlobal,
                                                 indexOther))
     return energies
Пример #3
0
    def WriteJobFiles(self, log=logFile):
        """Write files: PQR, FPT, OGM and MGM."""
        if self.isInitialized:
            # . Get atomic charges and radii for the system
            system = self.owner

            systemCharges = system.AtomicCharges()
            systemRadii = []
            systemTypes = system.energyModel.mmAtoms.AtomTypes()
            radii = YAMLUnpickle("%s/%s" % (YAMLPATHIN, "radii.yaml"))

            for atomType in systemTypes:
                if radii.has_key(atomType):
                    radius = radii[atomType]
                else:
                    generalAtomType = "%s*" % atomType[0]
                    if radii.has_key(generalAtomType):
                        radius = radii[generalAtomType]
                    else:
                        raise ContinuumElectrostaticsError(
                            "Cannot find atomic radius for atom type %s" %
                            atomType)
                systemRadii.append(radius)

            # . Prepare scratch space
            if not os.path.exists(self.pathScratch):
                try:
                    os.makedirs(self.pathScratch)
                except:
                    raise ContinuumElectrostaticsError(
                        "Cannot create scratch directory %s" %
                        self.pathScratch)

            # . Create subdirectories, if necessary
            if self.splitToDirectories:
                for site in self.sites:
                    sitePqr = site.instances[0].sitePqr
                    directory = os.path.dirname(sitePqr)
                    if not os.path.exists(directory):
                        try:
                            os.makedirs(directory)
                        except:
                            raise ContinuumElectrostaticsError(
                                "Cannot create directory %s" % directory)

            # . Write PQR, OGM and MGM files of all instances of all sites
            for site in self.sites:
                site._WriteMEADFiles(system, systemCharges, systemRadii)

            # . Write background PQR file
            PQRFile_FromSystem(self.pathPqrBack,
                               system,
                               selection=Selection(self.backAtomIndices),
                               charges=systemCharges,
                               radii=systemRadii)

            # . Write full-protein PQR file (to be used as eps2set_region)
            PQRFile_FromSystem(self.pathPqrProtein,
                               system,
                               selection=Selection(self.proteinAtomIndices),
                               charges=systemCharges,
                               radii=systemRadii)

            # . Write FPT-file
            lines = []
            for siteIndex, site in enumerate(self.sites):
                for instanceIndex, instance in enumerate(site.instances):
                    for atomIndex, charge in zip(site.siteAtomIndices,
                                                 instance.charges):
                        x, y, z = system.coordinates3[atomIndex]
                        line = "%d %d %f %f %f %f\n" % (
                            siteIndex, instanceIndex, x, y, z, charge)
                        lines.append(line)
            WriteInputFile(self.pathFptSites, lines)

            self.isFilesWritten = True