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
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
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