void OpTransform::ParseLine(const char *buffer) { vector<string> vs; if (buffer[0] == '#') return; if (EQn(buffer,"TRANSFORM",7)) { //Split into TRANSFORM reactantSMARTS ProductSMARTS tokenize(vs, buffer, " >\t\n"); OBChemTsfm tr; if (vs.empty() || vs.size() < 3 || vs[1].empty() || vs[2].empty()) { string mes("Could not parse line:\n"); obErrorLog.ThrowError(__FUNCTION__, mes + buffer, obWarning); } else { if(!tr.Init(vs[1],vs[2])) { string mes("Could not make valid transform from the line:\n"); obErrorLog.ThrowError(__FUNCTION__, mes + buffer, obWarning); } else _transforms.push_back(tr); } } }
void OBPhModel::ParseLine(const char *buffer) { vector<string> vs; OBSmartsPattern *sp; if (buffer[0] == '#') return; if (EQn(buffer,"TRANSFORM",7)) { tokenize(vs,buffer); if (vs.size() < 5) { obErrorLog.ThrowError(__FUNCTION__, " Could not parse line in phmodel table from phmodel.txt", obInfo); return; } OBChemTsfm *tsfm = new OBChemTsfm; if (!tsfm->Init(vs[1],vs[3])) { delete tsfm; tsfm = NULL; obErrorLog.ThrowError(__FUNCTION__, " Could not parse line in phmodel table from phmodel.txt", obInfo); return; } _vtsfm.push_back(tsfm); _vpKa.push_back(atof(vs[4].c_str())); } else if (EQn(buffer,"SEEDCHARGE",10)) { tokenize(vs,buffer); if (vs.size() < 2) { obErrorLog.ThrowError(__FUNCTION__, " Could not parse line in phmodel table from phmodel.txt", obInfo); return; } sp = new OBSmartsPattern; if (!sp->Init(vs[1]) || (vs.size()-2) != sp->NumAtoms()) { delete sp; sp = NULL; obErrorLog.ThrowError(__FUNCTION__, " Could not parse line in phmodel table from phmodel.txt", obInfo); return; } vector<double> vf; vector<string>::iterator i; for (i = vs.begin()+2;i != vs.end();++i) vf.push_back(atof((char*)i->c_str())); _vschrg.push_back(pair<OBSmartsPattern*,vector<double> > (sp,vf)); } }