1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
// $Id$
//
// Copyright (C) 2003-2008 Greg Landrum and Rational Discovery LLC
//
// @@ All Rights Reserved @@
// This file is part of the RDKit.
// The contents are covered by the terms of the BSD license
// which is included in the file license.txt, found at the root
// of the RDKit source tree.
//
#include "FragCatParams.h"
#include "FragCatalogUtils.h"
#include <GraphMol/RDKitBase.h>
#include <sstream>
#include <boost/cstdint.hpp>
namespace RDKit {
using boost::int32_t;
using boost::uint32_t;
FragCatParams::FragCatParams(unsigned int lLen, unsigned int uLen,
const std::string &fgroupFile, double tol) {
d_funcGroups.clear();
d_typeStr = "Fragment Catalog Parameters";
CHECK_INVARIANT(lLen <= uLen,
"The upper length for fragments must be >= lower length");
d_lowerFragLen = lLen;
d_upperFragLen = uLen;
d_tolerance = tol;
d_funcGroups = readFuncGroups(fgroupFile);
}
FragCatParams::FragCatParams(const FragCatParams &other) {
d_funcGroups.clear();
// copy consttructor
d_typeStr = other.getTypeStr();
d_lowerFragLen = other.getLowerFragLength();
d_upperFragLen = other.getUpperFragLength();
d_tolerance = other.getTolerance();
// std::cout << "In param copier\n";
const MOL_SPTR_VECT &ofgrps = other.getFuncGroups();
// const MOL_PTR_VECT &ofgrps = other.getFuncGroups();
MOL_SPTR_VECT::const_iterator fgi;
// MOL_PTR_VECT_CI fgi;
for (fgi = ofgrps.begin(); fgi != ofgrps.end(); fgi++) {
auto *nmol = new ROMol(*(fgi->get()));
// ROMol *nmol = new ROMol(*(*fgi));
d_funcGroups.push_back(ROMOL_SPTR(nmol));
// d_funcGroups.push_back(nmol);
}
}
FragCatParams::FragCatParams(const std::string &pickle) {
d_typeStr = "Fragment Catalog Parameters";
this->initFromString(pickle);
}
FragCatParams::~FragCatParams() {}
const MOL_SPTR_VECT &FragCatParams::getFuncGroups() const {
return d_funcGroups;
}
const ROMol *FragCatParams::getFuncGroup(unsigned int fid) const {
URANGE_CHECK(fid, d_funcGroups.size());
// return d_funcGroups[fid];
return d_funcGroups[fid].get();
}
void FragCatParams::toStream(std::ostream &ss) const {
ss << d_lowerFragLen << " " << d_upperFragLen << " " << d_tolerance << "\n";
ss << d_funcGroups.size() << "\n";
for (const auto &d_funcGroup : d_funcGroups) {
std::string text;
d_funcGroup->getProp(common_properties::_Name, text);
ss << text;
ss << "\t";
d_funcGroup->getProp(common_properties::_fragSMARTS, text);
ss << text;
ss << "\n";
}
}
std::string FragCatParams::Serialize() const {
std::stringstream ss;
toStream(ss);
return ss.str();
}
void FragCatParams::initFromString(const std::string &text) {
std::stringstream ss(text);
initFromStream(ss);
}
void FragCatParams::initFromStream(std::istream &ss) {
ss >> d_lowerFragLen;
ss >> d_upperFragLen;
ss >> d_tolerance;
int nGroups;
ss >> nGroups;
// std::cout << "Reading " << nGroups << " Groups" << std::endl;
d_funcGroups = readFuncGroups(ss, nGroups);
}
}
|