/** module initialization */ bool TopparManager::load() { SysConfig *pconf = SysConfig::getInstance(); SysConfig::Section *psec = pconf->getSection("toppar"); bool bOK = false; if (psec!=NULL) { SysConfig::const_iterator iter = psec->begin(); iter=psec->findName(iter, "toppar_file"); for (; iter!=psec->end(); iter=psec->findName(++iter, "toppar_file")) { SysConfig::Section *pchild = *iter; LString val = pchild->getStringData(); if (val.isEmpty()) continue;; int cpos = val.indexOf(':'); if (cpos<0) continue; LString type = val.substr(0, cpos); LString fnam = val.substr(cpos+1); fnam = pconf->convPathName(fnam); /*if (!fnam.startsWith(MB_PATH_SEPARATOR)) { LString config_dir = pconf->get("config_dir"); fnam = config_dir + MB_PATH_SEPARATOR + fnam; }*/ if (readPrmTop(fnam, type)) bOK = true; } } if (!bOK) { // // read from default directory with default type/filename // LString type("cns"); LString fnam; for ( ;; ) { fnam = "queptl.prm"; if (!readPrmTop(fnam, type)) break; fnam = "queptl.top"; if (!readPrmTop(fnam, type)) break; fnam = "queptl.lin"; if (!readPrmTop(fnam, type)) break; return true; } LOG_DPRINTLN("Toppar> warning: no mol topology/parameter files is loaded."); } // m_pTopoDB->dump(); return true; }
LString PDBFileWriter::formatAtomName(MolAtomPtr pAtom) { LString atomnam = pAtom->getName(); char cConfID = pAtom->getConfID(); int elem = pAtom->getElement(); if (cConfID=='\0') cConfID = ' '; // invalid name case if (atomnam.length()>=4|| elem==ElemSym::XX) { return LString::format("%4s%c", atomnam.c_str(), cConfID); } LString elenam = ElemSym::symID2Str(elem); elenam = elenam.toUpperCase(); int elepos = atomnam.indexOf(elenam); if (elepos<0) { return LString::format("%4s%c", atomnam.c_str(), cConfID); } LString atommod; // if (atomnam.equals(elenam)) { // // atom name==elem name // shead += LString::format(" %2s ", elenam.c_str()); // break; // } elepos += elenam.length(); atommod = atomnam.substr(elepos); elenam = atomnam.substr(0, elepos); if (atommod.length()<=2) { return LString::format("%2s%-2s%c", elenam.c_str(), atommod.c_str(), cConfID); } return LString::format("%4s%c", atomnam.c_str(), cConfID); }