本文整理汇总了C++中OBSmartsPattern::NumAtoms方法的典型用法代码示例。如果您正苦于以下问题:C++ OBSmartsPattern::NumAtoms方法的具体用法?C++ OBSmartsPattern::NumAtoms怎么用?C++ OBSmartsPattern::NumAtoms使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OBSmartsPattern
的用法示例。
在下文中一共展示了OBSmartsPattern::NumAtoms方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ParseLine
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));
}
}
示例2: main
//.........这里部分代码省略.........
}
}
if (! conv.SetInAndOutFormats(pFormat, pFormat))
{
cerr << program_name << ": cannot read or write to this file format" << endl;
return (-1);
}
// Match the SMART
OBSmartsPattern sp;
vector< vector <int> > maplist; // list of matched atoms
sp.Init(Pattern);
OBMol mol;
bool impossible_match;
// Search for pattern
for (c=0;;)
{
mol.Clear();
conv.Read(&mol);
if (mol.Empty())
break;
////////////////////////////////////////////////////////////////
// Do not loose time trying to match the pattern if the matching
// is impossible.
// It is impossible to make a full match if the number of atoms is
// different
if (full )
impossible_match = (sp.NumAtoms() == mol.NumHvyAtoms()) ? false : true;
else
impossible_match = false;
if (impossible_match)
{ // -> avoid useless SMART matching attempt
if (invert)
{
if (!count)
{
if ( name_only )
cout << mol.GetTitle() << endl;
else
conv.Write(&mol, &cout);
}
numMatching++;
}
continue;
}
////////////////////////////////////////////////////////////////
// perform SMART matching
pattern_matched = sp.Match(mol);
// the number of times the match occured may matter
if ( ntimes )
{ // ntimes is a positive integer of requested matches
// Here, a match mean a unique match (same set of atoms)
// so we need to get the unique match list size
maplist = sp.GetUMapList();