本文整理汇总了C++中OBConversion::FindFormat方法的典型用法代码示例。如果您正苦于以下问题:C++ OBConversion::FindFormat方法的具体用法?C++ OBConversion::FindFormat怎么用?C++ OBConversion::FindFormat使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OBConversion
的用法示例。
在下文中一共展示了OBConversion::FindFormat方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc,char *argv[])
{
// turn off slow sync with C-style output (we don't use it anyway).
std::ios::sync_with_stdio(false);
OBConversion conv;
OBFormat *inFormat, *canFormat;
OBMol mol;
ifstream ifs;
vector<OBMol> fragments;
unsigned int fragmentCount = 0; // track how many in library -- give a running count
map<string, int> index; // index of cansmi
string currentCAN;
unsigned int size;
OBAtom *atom;
OBBond *bond;
bool nonRingAtoms, nonRingBonds;
char buffer[BUFF_SIZE];
canFormat = conv.FindFormat("can");
conv.SetOutFormat(canFormat);
if (argc < 2)
{
cout << "Usage: obfragment <file>" << endl;
return(-1);
}
for (int i = 1; i < argc; i++) {
cerr << " Reading file " << argv[i] << endl;
inFormat = conv.FormatFromExt(argv[i]);
if(inFormat==NULL || !conv.SetInFormat(inFormat))
{
cerr << " Cannot read file format for " << argv[i] << endl;
continue; // try next file
}
ifs.open(argv[i]);
if (!ifs)
{
cerr << "Cannot read input file: " << argv[i] << endl;
continue;
}
while(ifs.peek() != EOF && ifs.good())
{
conv.Read(&mol, &ifs);
if (!mol.Has3D()) continue; // invalid coordinates!
mol.DeleteHydrogens(); // remove these before we do anything else
do {
nonRingAtoms = false;
size = mol.NumAtoms();
for (unsigned int i = 1; i <= size; ++i)
{
atom = mol.GetAtom(i);
if (!atom->IsInRing()) {
mol.DeleteAtom(atom);
nonRingAtoms = true;
break; // don't know how many atoms there are
}
// Previously, we changed atoms to carbon here.
// Now we perform this alchemy in terms of string-rewriting
// once the canonical SMILES is generated
}
} while (nonRingAtoms);
if (mol.NumAtoms() < 3)
continue;
if (mol.NumBonds() == 0)
continue;
do {
nonRingBonds = false;
size = mol.NumBonds();
for (unsigned int i = 0; i < size; ++i)
{
bond = mol.GetBond(i);
if (!bond->IsInRing()) {
mol.DeleteBond(bond);
nonRingBonds = true;
break; // don't know how many bonds there are
}
}
} while (nonRingBonds);
fragments = mol.Separate();
for (unsigned int i = 0; i < fragments.size(); ++i)
{
if (fragments[i].NumAtoms() < 3) // too small to care
continue;
currentCAN = conv.WriteString(&fragments[i], true);
currentCAN = RewriteSMILES(currentCAN); // change elements to "a/A" for compression
if (index.find(currentCAN) != index.end()) { // already got this
index[currentCAN] += 1; // add to the count for bookkeeping
//.........这里部分代码省略.........
示例2: main
///////////////////////////////////////////////////////////////////////////////
//! \brief Generate rough 3D coordinates for SMILES (or other 0D files).
//
int main(int argc,char **argv)
{
char *program_name= argv[0];
int c;
string basename, filename = "", option, option2, ff = "MMFF94";
list<string> argl(argv+1, argv+argc);
list<string>::iterator optff = find(argl.begin(), argl.end(), "-ff");
if (optff != argl.end()) {
list<string>::iterator optffarg = optff;
++optffarg;
if (optffarg != argl.end()) {
ff = *optffarg;
argl.erase(optff,++optffarg);
} else {
argl.erase(optff);
}
}
if (argl.empty()) {
cout << "Usage: obgen <filename> [options]" << endl;
cout << endl;
cout << "options: description:" << endl;
cout << endl;
cout << " -ff select a forcefield" << endl;
cout << endl;
OBPlugin::List("forcefields", "verbose");
exit(-1);
}
basename = filename = *argl.begin();
size_t extPos = filename.rfind('.');
if (extPos!= string::npos) {
basename = filename.substr(0, extPos);
}
// Find Input filetype
OBConversion conv;
OBFormat *format_in = conv.FormatFromExt(filename.c_str());
OBFormat *format_out = conv.FindFormat("sdf");
if (!format_in || !format_out || !conv.SetInAndOutFormats(format_in, format_out)) {
cerr << program_name << ": cannot read input/output format!" << endl;
exit (-1);
}
ifstream ifs;
ofstream ofs;
// Read the file
ifs.open(filename.c_str());
if (!ifs) {
cerr << program_name << ": cannot read input file!" << endl;
exit (-1);
}
OBMol mol;
for (c=1;;c++) {
mol.Clear();
if (!conv.Read(&mol, &ifs))
break;
if (mol.Empty())
break;
OBForceField* pFF = OBForceField::FindForceField(ff);
if (!pFF) {
cerr << program_name << ": could not find forcefield '" << ff << "'." <<endl;
exit (-1);
}
//mol.AddHydrogens(false, true); // hydrogens must be added before Setup(mol) is called
pFF->SetLogFile(&cerr);
pFF->SetLogLevel(OBFF_LOGLVL_LOW);
//pFF->GenerateCoordinates();
OBBuilder builder;
builder.Build(mol);
mol.AddHydrogens(false, true); // hydrogens must be added before Setup(mol) is called
if (!pFF->Setup(mol)) {
cerr << program_name << ": could not setup force field." << endl;
exit (-1);
}
pFF->SteepestDescent(500, 1.0e-4);
pFF->WeightedRotorSearch(250, 50);
pFF->SteepestDescent(500, 1.0e-6);
pFF->UpdateCoordinates(mol);
//pFF->ValidateGradients();
//pFF->SetLogLevel(OBFF_LOGLVL_HIGH);
//.........这里部分代码省略.........
示例3: main
int main(int argc,char **argv)
{
char *program_name= argv[0];
int c;
int steps = 2500;
double crit = 1e-6;
bool sd = false;
bool cut = false;
bool newton = false;
bool hydrogens = false;
double rvdw = 6.0;
double rele = 10.0;
int freq = 10;
string basename, filename = "", option, option2, ff = "MMFF94";
char *oext;
OBConversion conv;
OBFormat *format_out = conv.FindFormat("pdb"); // default output format
if (argc < 2) {
cout << "Usage: obminimize [options] <filename>" << endl;
cout << endl;
cout << "options: description:" << endl;
cout << endl;
cout << " -c crit set convergence criteria (default=1e-6)" << endl;
cout << endl;
cout << " -cg use conjugate gradients algorithm (default)" << endl;
cout << endl;
cout << " -sd use steepest descent algorithm" << endl;
cout << endl;
cout << " -newton use Newton2Num linesearch (default=Simple)" << endl;
cout << endl;
cout << " -ff ffid select a forcefield:" << endl;
cout << endl;
cout << " -h add hydrogen atoms" << endl;
cout << endl;
cout << " -n steps specify the maximum numer of steps (default=2500)" << endl;
cout << endl;
cout << " -cut use cut-off (default=don't use cut-off)" << endl;
cout << endl;
cout << " -rvdw rvdw specify the VDW cut-off distance (default=6.0)" << endl;
cout << endl;
cout << " -rele rele specify the Electrostatic cut-off distance (default=10.0)" << endl;
cout << endl;
cout << " -pf freq specify the frequency to update the non-bonded pairs (default=10)" << endl;
cout << endl;
OBPlugin::List("forcefields", "verbose");
exit(-1);
} else {
int ifile = 1;
for (int i = 1; i < argc; i++) {
option = argv[i];
// steps
if ((option == "-n") && (argc > (i+1))) {
steps = atoi(argv[i+1]);
ifile += 2;
}
// vdw cut-off
if ((option == "-rvdw") && (argc > (i+1))) {
rvdw = atof(argv[i+1]);
ifile += 2;
}
// ele cut-off
if ((option == "-rele") && (argc > (i+1))) {
rele = atof(argv[i+1]);
ifile += 2;
}
// pair update frequency
if ((option == "-pf") && (argc > (i+1))) {
freq = atoi(argv[i+1]);
ifile += 2;
}
// steepest descent
if (option == "-sd") {
sd = true;
ifile++;
}
// enable cut-off
if (option == "-cut") {
cut = true;
ifile++;
}
// enable Newton2Num
if (option == "-newton") {
newton = true;
ifile++;
}
if (strncmp(option.c_str(), "-o", 2) == 0) {
oext = argv[i] + 2;
if(!*oext) {
oext = argv[++i]; //space left after -o: use next argument
ifile++;
}
format_out = conv.FindFormat(oext);
ifile++;
}
if (option == "-h") {
//.........这里部分代码省略.........
示例4: residue_test
void residue_test()
{
cout << "# Unit tests for OBResidue \n";
// OBResidue isolation tests
OBResidue emptyResidue, testRes1;
// chains parser tests
// PR#1515198
static const string loopTest1("C1(C(NC(C(N1C(C(NC(C=Cc1ccccc1)=O)C)=O)Cc1ccccc1)=O)Cc1ccccc1)=O");
OBConversion conv;
OBMol mol;
OBFormat *inFormat = conv.FindFormat("SMI");
conv.SetInFormat(inFormat);
conv.ReadString(&mol, loopTest1);
chainsparser.PerceiveChains(mol);
// parse common residues
unsigned int testCount = 3;
static const string ala("NC(C)C(O)(=O)");
CheckValidResidue(conv, ala, ++testCount);
static const string arg("NC(CCCNC(N)=N)C(O)(=O)");
CheckValidResidue(conv, arg, ++testCount);
static const string asn("NC(CC(N)=O)C(O)(=O)");
CheckValidResidue(conv, asn, ++testCount);
static const string asp("NC(CC(O)=O)C(O)(=O)");
CheckValidResidue(conv, asp, ++testCount);
static const string cys("NC(CS)C(O)(=O)");
CheckValidResidue(conv, cys, ++testCount);
static const string glu("NC(CCC(O)=O)C(O)(=O)");
CheckValidResidue(conv, glu, ++testCount);
static const string gln("NC(CCC(N)=O)C(O)(=O)");
CheckValidResidue(conv, gln, ++testCount);
static const string gly("NC([H])C(O)(=O)");
CheckValidResidue(conv, gly, ++testCount);
static const string his("NC(CC1=CNC=N1)C(O)(=O)");
CheckValidResidue(conv, his, ++testCount);
static const string ile("NC(C(CC)C)C(O)(=O)");
CheckValidResidue(conv, ile, ++testCount);
static const string leu("NC(CC(C)C)C(O)(=O)");
CheckValidResidue(conv, leu, ++testCount);
static const string lys("NC(CCCCN)C(O)(=O)");
CheckValidResidue(conv, lys, ++testCount);
static const string met("NC(CCSC)C(O)(=O)");
CheckValidResidue(conv, met, ++testCount);
static const string phe("NC(CC1=CC=CC=C1)C(O)(=O)");
CheckValidResidue(conv, phe, ++testCount);
static const string pro("OC(C1CCCN1)(=O)");
CheckValidResidue(conv, pro, ++testCount);
static const string ser("NC(CO)C(O)(=O)");
CheckValidResidue(conv, ser, ++testCount);
static const string thr("NC(C(C)O)C(O)(=O)");
CheckValidResidue(conv, thr, ++testCount);
static const string trp("NC(CC1=CNC2=C1C=CC=C2)C(O)(=O)");
CheckValidResidue(conv, trp, ++testCount);
static const string tyr("NC(CC1=CC=C(O)C=C1)C(O)(=O)");
CheckValidResidue(conv, tyr, ++testCount);
static const string val("NC(C(C)C)C(O)(=O)");
CheckValidResidue(conv, val, ++testCount);
// nucleics
static const string a("OC[[email protected]]1O[[email protected]](C[[email protected]@H]1O)n1cnc2c(ncnc12)N");
CheckValidResidue(conv, a, ++testCount);
static const string g("OC[[email protected]]1O[[email protected]](C[[email protected]@H]1O)n1c(nc(cc1)N)=O");
CheckValidResidue(conv, g, ++testCount);
static const string c("OC[[email protected]]1O[[email protected]](C[[email protected]@H]1O)n1cnc2c([nH]c(nc12)N)=O");
CheckValidResidue(conv, c, ++testCount);
static const string t("OC[[email protected]]1O[[email protected]](C[[email protected]@H]1O)n1c([nH]c(c(c1)C)=O)=O");
CheckValidResidue(conv, t, ++testCount);
static const string u("OC[[email protected]]1O[[email protected]]([[email protected]@H]([[email protected]@H]1O)O)n1c([nH]c(cc1)=O)=O");
CheckValidResidue(conv, u, ++testCount);
// invalid residues
static const string benzene("c1ccccc1");
CheckInvalidResidue(conv, benzene, ++testCount);
static const string pyrrole("c1cccn[H]1");
CheckInvalidResidue(conv, pyrrole, ++testCount);
static const string amine("CC(=O)CCN");
CheckInvalidResidue(conv, amine, ++testCount);
// check some dipeptides
static const string ala_val("NC(C)C(=O)NC(C(C)C)C(=O)O");
CheckValidDipeptide(conv, ala_val, ++testCount);
static const string cys_leu("NC(CS)C(=O)NC(CC(C)C)C(=O)O");
CheckValidDipeptide(conv, cys_leu, ++testCount);
}
示例5: main
int main(int argc,char *argv[])
{
// turn off slow sync with C-style output (we don't use it anyway).
std::ios::sync_with_stdio(false);
if (argc != 1)
{
cout << "Usage: residue" << endl;
cout << " Unit tests for OBResidue " << endl;
return(-1);
}
cout << "# Unit tests for OBResidue \n";
cout << "ok 1\n"; // for loading tests
// OBResidue isolation tests
OBResidue emptyResidue, testRes1;
cout << "ok 2\n"; // ctor works
// chains parser tests
// PR#1515198
static const string loopTest1("C1(C(NC(C(N1C(C(NC(C=Cc1ccccc1)=O)C)=O)Cc1ccccc1)=O)Cc1ccccc1)=O");
OBConversion conv;
OBMol mol;
OBFormat *inFormat = conv.FindFormat("SMI");
conv.SetInFormat(inFormat);
conv.ReadString(&mol, loopTest1);
chainsparser.PerceiveChains(mol);
// OK if it doesn't crash
cout << "ok 3\n";
// parse common residues
unsigned int testCount = 3;
static const string ala("NC(C)C(O)(=O)");
CheckValidResidue(conv, ala, ++testCount);
static const string arg("NC(CCCNC(N)=N)C(O)(=O)");
CheckValidResidue(conv, arg, ++testCount);
static const string asn("NC(CC(N)=O)C(O)(=O)");
CheckValidResidue(conv, asn, ++testCount);
static const string asp("NC(CC(O)=O)C(O)(=O)");
CheckValidResidue(conv, asp, ++testCount);
static const string cys("NC(CS)C(O)(=O)");
CheckValidResidue(conv, cys, ++testCount);
static const string glu("NC(CCC(O)=O)C(O)(=O)");
CheckValidResidue(conv, glu, ++testCount);
static const string gln("NC(CCC(N)=O)C(O)(=O)");
CheckValidResidue(conv, gln, ++testCount);
static const string gly("NC([H])C(O)(=O)");
CheckValidResidue(conv, gly, ++testCount);
static const string his("NC(CC1=CNC=N1)C(O)(=O)");
CheckValidResidue(conv, his, ++testCount);
static const string ile("NC(C(CC)C)C(O)(=O)");
CheckValidResidue(conv, ile, ++testCount);
static const string leu("NC(CC(C)C)C(O)(=O)");
CheckValidResidue(conv, leu, ++testCount);
static const string lys("NC(CCCCN)C(O)(=O)");
CheckValidResidue(conv, lys, ++testCount);
static const string met("NC(CCSC)C(O)(=O)");
CheckValidResidue(conv, met, ++testCount);
static const string phe("NC(CC1=CC=CC=C1)C(O)(=O)");
CheckValidResidue(conv, phe, ++testCount);
static const string pro("OC(C1CCCN1)(=O)");
CheckValidResidue(conv, pro, ++testCount);
static const string ser("NC(CO)C(O)(=O)");
CheckValidResidue(conv, ser, ++testCount);
static const string thr("NC(C(C)O)C(O)(=O)");
CheckValidResidue(conv, thr, ++testCount);
static const string trp("NC(CC1=CNC2=C1C=CC=C2)C(O)(=O)");
CheckValidResidue(conv, trp, ++testCount);
static const string tyr("NC(CC1=CC=C(O)C=C1)C(O)(=O)");
CheckValidResidue(conv, tyr, ++testCount);
static const string val("NC(C(C)C)C(O)(=O)");
CheckValidResidue(conv, val, ++testCount);
// nucleics
static const string a("OC[[email protected]]1O[[email protected]](C[[email protected]@H]1O)n1cnc2c(ncnc12)N");
CheckValidResidue(conv, a, ++testCount);
static const string g("OC[[email protected]]1O[[email protected]](C[[email protected]@H]1O)n1c(nc(cc1)N)=O");
CheckValidResidue(conv, g, ++testCount);
static const string c("OC[[email protected]]1O[[email protected]](C[[email protected]@H]1O)n1cnc2c([nH]c(nc12)N)=O");
CheckValidResidue(conv, c, ++testCount);
static const string t("OC[[email protected]]1O[[email protected]](C[[email protected]@H]1O)n1c([nH]c(c(c1)C)=O)=O");
CheckValidResidue(conv, t, ++testCount);
static const string u("OC[[email protected]]1O[[email protected]]([[email protected]@H]([[email protected]@H]1O)O)n1c([nH]c(cc1)=O)=O");
CheckValidResidue(conv, u, ++testCount);
// invalid residues
static const string benzene("c1ccccc1");
CheckInvalidResidue(conv, benzene, ++testCount);
static const string pyrrole("c1cccn[H]1");
CheckInvalidResidue(conv, pyrrole, ++testCount);
static const string amine("CC(=O)CCN");
CheckInvalidResidue(conv, amine, ++testCount);
// check some dipeptides
static const string ala_val("NC(C)C(=O)NC(C(C)C)C(=O)O");
//.........这里部分代码省略.........
示例6: mmff94_validate
void mmff94_validate()
{
OBForceField* pFF = OBForceField::FindForceField("MMFF94");
OBConversion conv;
OBFormat *format_in = conv.FindFormat("mol2");
vector<string> vs;
vector<int> types;
vector<double> fcharges, pcharges;
vector<double> bond_lengths;
char buffer[BUFF_SIZE], _logbuf[BUFF_SIZE];
bool molfound, atomfound, bondfound, fchgfound, pchgfound;
double etot, ebond, eangle, eoop, estbn, etor, evdw, eeq;
double termcount; //1=bond, 2=angle, 3=strbnd, 4=torsion, 5=oop
int n = 0;
BOOST_REQUIRE_MESSAGE( format_in && conv.SetInFormat(format_in), "Could not set mol2 input format" );
ifstream ifs, ifs2;
ofstream ofs;
ifs.open("MMFF94_dative.mol2");
BOOST_REQUIRE_MESSAGE( ifs, "Could not open ./MMFF94_dative.mol2" );
ifs2.open("MMFF94_opti.log");
BOOST_REQUIRE_MESSAGE( ifs2, "Could not open ./MMFF94_opti.log" );
ofs.open("MMFF94_openbabel.log");
BOOST_REQUIRE_MESSAGE( ofs, "Could not open ./MMFF94_openbabel.log" );
pFF->SetLogFile(&ofs);
pFF->SetLogLevel(OBFF_LOGLVL_HIGH);
OBMol mol;
for (unsigned int c=1;; c++) {
mol.Clear();
types.clear();
fcharges.clear();
pcharges.clear();
bond_lengths.clear();
if (!conv.Read(&mol, &ifs))
break;
if (mol.Empty())
break;
BOOST_CHECK_MESSAGE( pFF->Setup(mol), "Could not setup calculations (missing parameters...)" );
pFF->GetAtomTypes(mol);
//pFF->GetFormalCharges(mol);
pFF->GetPartialCharges(mol);
termcount = 0;
molfound = false;
atomfound = false;
bondfound = false;
fchgfound = false;
pchgfound = false;
// Parse log file for types, charges, energies, ..
while (ifs2.getline(buffer, 150)) {
tokenize(vs, buffer);
if (vs.size() == 0) {
bondfound = false;
continue;
}
string str(buffer);
if (string::npos != str.find(mol.GetTitle(),0))
molfound = true;
// read atom types
if (atomfound) {
if (n) {
types.push_back(atoi(vs[2].c_str()));
types.push_back(atoi(vs[5].c_str()));
types.push_back(atoi(vs[8].c_str()));
types.push_back(atoi(vs[11].c_str()));
} else {
if (vs.size() > 2)
types.push_back(atoi(vs[2].c_str()));
if (vs.size() > 5)
types.push_back(atoi(vs[5].c_str()));
if (vs.size() > 8)
types.push_back(atoi(vs[8].c_str()));
atomfound = false;
}
n--;
}
// read formal charges
if (fchgfound) {
if (n) {
fcharges.push_back(atof(vs[2].c_str()));
fcharges.push_back(atof(vs[5].c_str()));
fcharges.push_back(atof(vs[8].c_str()));
fcharges.push_back(atof(vs[11].c_str()));
} else {
if (vs.size() > 2)
//.........这里部分代码省略.........
示例7: main
int main(int argc,char **argv)
{
char *program_name= argv[0];
int c;
char *FileIn = NULL;
if (argc != 2)
{
string err = "Usage: ";
err += program_name;
err += " <filename>\n"
"Output format:\n"
"name NAME\n"
"formula FORMULA\n"
"mol_weight MOLECULAR_WEIGHT\n"
"exact_mass ISOTOPIC MASS\n"
"canonical_SMILES STRING\n"
"InChI STRING\n"
"num_atoms NUM\n"
"num_bonds NUM\n"
"num_residues NUM\n"
"num_rotors NUM\n"
"sequence RESIDUE_SEQUENCE\n"
"num_rings NUMBER_OF_RING_(SSSR)\n"
"logP NUM\n"
"PSA POLAR_SURFACE_AREA\n"
"MR MOLAR REFRACTIVITY";
err += "$$$$";
// ThrowError(err); wasn't being output because error level too low
cerr << err; //Why not do directly
exit(-1);
}
else
{
FileIn = argv[1];
}
// Find Input filetype
OBConversion conv;
OBFormat *format = conv.FormatFromExt(FileIn);
if (!format || !conv.SetInFormat(format))
{
cerr << program_name << ": cannot read input format!" << endl;
exit (-1);
}
ifstream ifs;
// Read the file
ifs.open(FileIn);
if (!ifs)
{
cerr << program_name << ": cannot read input file!" << endl;
exit (-1);
}
OBMol mol;
OBFormat *canSMIFormat = conv.FindFormat("can");
OBFormat *inchiFormat = conv.FindFormat("inchi");
////////////////////////////////////////////////////////////////////////////
// List of properties
// Name
// Molecular weight (Standard molar mass given by IUPAC atomic masses)
// Number of rings : the size of the smallest set of smallest rings (SSSR)
//.....ADD YOURS HERE.....
for (c = 1;; ++c)
{
mol.Clear();
conv.Read(&mol, &ifs);
if (mol.Empty())
break;
if (!mol.HasHydrogensAdded())
mol.AddHydrogens();
// Print the properties
if (strlen(mol.GetTitle()) != 0)
cout << "name " << mol.GetTitle() << endl;
else
cout << "name " << FileIn << " " << c << endl;
cout << "formula " << mol.GetFormula() << endl;
cout << "mol_weight " << mol.GetMolWt() << endl;
cout << "exact_mass " << mol.GetExactMass() << endl;
string smilesString = "-";
if (canSMIFormat) {
conv.SetOutFormat(canSMIFormat);
smilesString = conv.WriteString(&mol);
if ( smilesString.length() == 0 )
{
smilesString = "-";
}
}
cout << "canonical_SMILES " << smilesString << endl;
//.........这里部分代码省略.........