File: FragCatParams.cpp

package info (click to toggle)
rdkit 201809.1%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 123,688 kB
  • sloc: cpp: 230,509; python: 70,501; java: 6,329; ansic: 5,427; sql: 1,899; yacc: 1,739; lex: 1,243; makefile: 445; xml: 229; fortran: 183; sh: 123; cs: 93
file content (105 lines) | stat: -rw-r--r-- 3,039 bytes parent folder | download
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);
}
}