#include "ChemLib.h" #include bool ChemEntry::isSameEntry(const std::string residueName, const std::string atomName) const { if(residueName == residueName_ && atomName == atomName_) return true; return false; } ChemLib::ChemLib(const std::string libFileName) { loadLibrary(libFileName); } void ChemLib::loadLibrary(const std::string libFileName) { std::ifstream libFile(libFileName); if(!libFile) { std::cerr << "Can't find library file: " << libFileName << std::endl; exit(1); } std::string line; while (!libFile.eof()) { getline(libFile, line); boost::trim(line); // remove all spaces // skip comments if (line[0] == '#' || line[0] == '\0') continue; std::vector < std::string > splitResults; boost::split(splitResults, line, boost::is_any_of(" "), boost::token_compress_on); for(unsigned int i=0; i::const_iterator iter = libVector.begin(); iter != libVector.end(); iter++) if((*iter).isSameEntry(residueName, atomName)) { libEntry = &(*iter); break; } return libEntry; } float ChemLib::getAtomRadius(const char* residueName, const char* atomPDBType) const { const ChemEntry* libEntry = getLibEntry(residueName, atomPDBType); if(libEntry!=NULL) return libEntry->getEntryRadius(); return 1.5; } float ChemLib::getAtomCharge(const char* residueName, const char* atomPDBType) const { const ChemEntry* libEntry = getLibEntry(residueName, atomPDBType); if(libEntry!=NULL) return libEntry->getEntryCharge(); return 0.0; } int ChemLib::getAtomChemType(const char* residueName, const char* atomPDBType) const { const ChemEntry* libEntry = getLibEntry(residueName, atomPDBType); if(libEntry!=NULL) return libEntry->getEntryChemType(); return 0; } void ChemLib::printLibrary(std::ostream& outFile) const { for(std::vector::const_iterator iter = libVector.begin(); iter != libVector.end(); iter++) { outFile << *iter << std::endl; } }