RDKit
Open-source cheminformatics and machine learning.
Loading...
Searching...
No Matches
MolSGroupParsing.h
Go to the documentation of this file.
1//
2// Copyright (C) 2002-2018 Greg Landrum and T5 Informatics GmbH
3//
4// @@ All Rights Reserved @@
5// This file is part of the RDKit.
6// The contents are covered by the terms of the BSD license
7// which is included in the file license.txt, found at the root
8// of the RDKit source tree.
9//
10#include <RDGeneral/export.h>
11
12#pragma once
15#include <sstream>
16
17namespace RDKit {
18
19namespace SGroupParsing {
20typedef std::map<int, SubstanceGroup> IDX_TO_SGROUP_MAP;
21typedef std::map<int, STR_VECT> IDX_TO_STR_VECT_MAP;
22
23/* ------------------ V2000 Utils ------------------ */
24
25unsigned int ParseSGroupIntField(const std::string &text, unsigned int line,
26 unsigned int &pos,
27 bool isFieldCounter = false);
28
29unsigned int ParseSGroupIntField(bool &ok, bool strictParsing,
30 const std::string &text, unsigned int line,
31 unsigned int &pos,
32 bool isFieldCounter = false);
33
34double ParseSGroupDoubleField(const std::string &text, unsigned int line,
35 unsigned int &pos);
36
37double ParseSGroupDoubleField(bool &ok, bool strictParsing,
38 const std::string &text, unsigned int line,
39 unsigned int &pos);
40
42 unsigned int line);
43
44template <class Exc = FileParseException>
45void SGroupWarnOrThrow(bool strictParsing, const std::string &msg) {
46 if (strictParsing) {
47 throw Exc(msg);
48 } else {
49 BOOST_LOG(rdWarningLog) << msg << std::endl;
50 }
51}
52
54 const std::string &text, unsigned int line,
55 bool strictParsing = true);
56
58 const std::string &text, unsigned int line,
59 bool strictParsing = true);
60
62 const std::string &text, unsigned int line,
63 bool strictParsing = true);
64
66 const std::string &text, unsigned int line,
67 bool strictParsing = true);
68
70 const std::string &text, unsigned int line,
71 bool strictParsing = true);
72
74 const std::string &text, unsigned int line,
75 bool strictParsing = true);
76
78 const std::string &text, unsigned int line,
79 bool strictParsing = true);
80
82 const std::string &text, unsigned int line,
83 bool strictParsing = true);
84
86 const std::string &text, unsigned int line,
87 bool strictParsing = true);
88
90 const std::string &text, unsigned int line,
91 bool strictParsing = true);
92
94 const std::string &text, unsigned int line,
95 bool strictParsing = true);
96
99 const std::string &text, unsigned int line,
100 bool strictParsing, unsigned int &counter,
101 unsigned int &lastDataSGroup,
102 std::ostringstream &currentDataField);
103
105 const std::string &text, unsigned int line,
106 bool strictParsing = true);
107
109 const std::string &text, unsigned int line,
110 bool strictParsing = true);
111
112//! if the SAP line is malformed and has no lvIdx and no id,
113//! lvIdx is set to mol->getNumAtoms() and id is set to " "
114//! the user is responsible for replacing lvIdx with the correct
115//! index: if d_bonds.size() == 1, and one of the bond atom indices
116//! is aIdx, the other can be safely assigned to lvIdx
118 const std::string &text, unsigned int line,
119 bool strictParsing = true);
120
122 const std::string &text, unsigned int line,
123 bool strictParsing = true);
124
126 const std::string &text, unsigned int line,
127 bool strictParsing = true);
128
129/* ------------------ V3000 Utils ------------------ */
130
131template <class T>
133 std::stringstream &stream, int maxV = -1, bool strictParsing = false);
134#if defined(_MSC_VER) && defined(RDKIT_DYN_LINK)
135template RDKIT_FILEPARSERS_EXPORT std::vector<int> ParseV3000Array(
136 std::stringstream &, int, bool);
137template RDKIT_FILEPARSERS_EXPORT std::vector<unsigned int> ParseV3000Array(
138 std::stringstream &, int, bool);
139#endif
140template <class T>
141std::vector<T> ParseV3000Array(const std::string &s, int maxV = -1,
142 bool strictParsing = false) {
143 std::stringstream stream(s);
144 return ParseV3000Array<T>(stream, maxV, strictParsing);
145}
146
148 std::stringstream &stream, unsigned int line,
149 bool strictParsing = true);
150
152 std::stringstream &stream, bool strictParsing = true);
153
154std::string ParseV3000StringPropLabel(std::stringstream &stream);
155
156// returns the last line read in the SGroups block
157std::string ParseV3000SGroupsBlock(std::istream *inStream, unsigned int line,
158 unsigned int nSgroups, RWMol *mol,
159 bool strictParsing);
160
161} // namespace SGroupParsing
162} // namespace RDKit
#define BOOST_LOG(__arg__)
Definition RDLog.h:110
RDKIT_RDGENERAL_EXPORT RDLogger rdWarningLog
Defines the SubstanceGroup class.
RWMol is a molecule class that is intended to be edited.
Definition RWMol.h:32
The class for representing SubstanceGroups.
#define RDKIT_FILEPARSERS_EXPORT
Definition export.h:161
unsigned int ParseSGroupIntField(const std::string &text, unsigned int line, unsigned int &pos, bool isFieldCounter=false)
std::map< int, SubstanceGroup > IDX_TO_SGROUP_MAP
void ParseSGroupV2000STYLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
void ParseSGroupV2000SCDSEDLine(IDX_TO_SGROUP_MAP &sGroupMap, IDX_TO_STR_VECT_MAP &dataFieldsMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing, unsigned int &counter, unsigned int &lastDataSGroup, std::ostringstream &currentDataField)
void ParseSGroupV2000SPLLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
void ParseSGroupV2000SAPLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
SubstanceGroup * FindSgIdx(IDX_TO_SGROUP_MAP &sGroupMap, int sgIdx, unsigned int line)
void ParseV3000CStateLabel(RWMol *mol, SubstanceGroup &sgroup, std::stringstream &stream, unsigned int line, bool strictParsing=true)
void ParseSGroupV2000SCNLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
void ParseSGroupV2000SLBLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
void ParseV3000SAPLabel(RWMol *mol, SubstanceGroup &sgroup, std::stringstream &stream, bool strictParsing=true)
void ParseSGroupV2000SDSLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
std::string ParseV3000SGroupsBlock(std::istream *inStream, unsigned int line, unsigned int nSgroups, RWMol *mol, bool strictParsing)
void ParseSGroupV2000SCLLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
void ParseSGroupV2000SSTLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
void ParseSGroupV2000SDILine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
void ParseSGroupV2000SBTLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
void SGroupWarnOrThrow(bool strictParsing, const std::string &msg)
std::string ParseV3000StringPropLabel(std::stringstream &stream)
RDKIT_FILEPARSERS_EXPORT std::vector< T > ParseV3000Array(std::stringstream &stream, int maxV=-1, bool strictParsing=false)
void ParseSGroupV2000VectorDataLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
void ParseSGroupV2000SDTLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
void ParseSGroupV2000SDDLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
std::map< int, STR_VECT > IDX_TO_STR_VECT_MAP
void ParseSGroupV2000SBVLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
void ParseSGroupV2000SNCLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
double ParseSGroupDoubleField(const std::string &text, unsigned int line, unsigned int &pos)
void ParseSGroupV2000SMTLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
Std stuff.
bool rdvalue_is(const RDValue_cast_t)