RDKit: MolSGroupParsing.h Source File

| 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
13#include <GraphMol/SubstanceGroup.h>
14#include <RDGeneral/FileParseException.h>
15#include <sstream>
16
17namespace RDKit {
18
19 namespace SGroupParsing {
20 typedef std::map<int, SubstanceGroup> IDX_TO_SGROUP_MAP;
21 typedef std::map<int, STR_VECT> IDX_TO_STR_VECT_MAP;
22
23/* ------------------ V2000 Utils ------------------ */
24
25 unsigned int ParseSGroupIntField(const std::string &text, unsigned int line,
26 unsigned int &pos,
27 bool isFieldCounter = false);
28
29 unsigned int ParseSGroupIntField(bool &ok, bool strictParsing,
30 const std::string &text, unsigned int line,
31 unsigned int &pos,
32 bool isFieldCounter = false);
33
34 double ParseSGroupDoubleField(const std::string &text, unsigned int line,
35 unsigned int &pos);
36
37 double ParseSGroupDoubleField(bool &ok, bool strictParsing,
38 const std::string &text, unsigned int line,
39 unsigned int &pos);
40
41 SubstanceGroup *FindSgIdx(IDX_TO_SGROUP_MAP &sGroupMap, int sgIdx,
42 unsigned int line);
43
44template <class Exc = FileParseException>
45 void 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
53 void ParseSGroupV2000STYLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol,
54 const std::string &text, unsigned int line,
55 bool strictParsing = true);
56
57 void ParseSGroupV2000VectorDataLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol,
58 const std::string &text, unsigned int line,
59 bool strictParsing = true);
60
61 void ParseSGroupV2000SDILine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol,
62 const std::string &text, unsigned int line,
63 bool strictParsing = true);
64
65 void ParseSGroupV2000SSTLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol,
66 const std::string &text, unsigned int &line,
67 bool strictParsing = true);
68
69 void ParseSGroupV2000SMTLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol,
70 const std::string &text, unsigned int &line,
71 bool strictParsing = true);
72
73 void ParseSGroupV2000SLBLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol,
74 const std::string &text, unsigned int line,
75 bool strictParsing = true);
76
77 void ParseSGroupV2000SCNLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol,
78 const std::string &text, unsigned int line,
79 bool strictParsing = true);
80
81 void ParseSGroupV2000SDSLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol,
82 const std::string &text, unsigned int line,
83 bool strictParsing = true);
84
85 void ParseSGroupV2000SBVLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol,
86 const std::string &text, unsigned int line,
87 bool strictParsing = true);
88
89 void ParseSGroupV2000SDTLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol,
90 const std::string &text, unsigned int line,
91 bool strictParsing = true);
92
93 void ParseSGroupV2000SDDLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol,
94 const std::string &text, unsigned int line,
95 bool strictParsing = true);
96
97 void ParseSGroupV2000SCDSEDLine(IDX_TO_SGROUP_MAP &sGroupMap,
98 IDX_TO_STR_VECT_MAP &dataFieldsMap, RWMol *mol,
99 const std::string &text, unsigned int line,
100 bool strictParsing, unsigned int &counter,
101 unsigned int &lastDataSGroup,
102 std::ostringstream &currentDataField);
103
104 void ParseSGroupV2000SPLLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol,
105 const std::string &text, unsigned int line,
106 bool strictParsing = true);
107
108 void ParseSGroupV2000SNCLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol,
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
117 void ParseSGroupV2000SAPLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol,
118 const std::string &text, unsigned int line,
119 bool strictParsing = true);
120
121 void ParseSGroupV2000SCLLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol,
122 const std::string &text, unsigned int line,
123 bool strictParsing = true);
124
125 void ParseSGroupV2000SBTLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol,
126 const std::string &text, unsigned int line,
127 bool strictParsing = true);
128
129/* ------------------ V3000 Utils ------------------ */
130
131template <class T>
132 RDKIT_FILEPARSERS_EXPORT std::vector<T> ParseV3000Array(
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
147 void ParseV3000CStateLabel(RWMol *mol, SubstanceGroup &sgroup,
148 std::stringstream &stream, unsigned int line,
149 bool strictParsing = true);
150
151 void ParseV3000SAPLabel(RWMol *mol, SubstanceGroup &sgroup,
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
FileParseException.h
BOOST_LOG
#define BOOST_LOG(__arg__)
Definition RDLog.h:109
rdWarningLog
RDKIT_RDGENERAL_EXPORT RDLogger rdWarningLog
SubstanceGroup.h
Defines the SubstanceGroup class.
RDKit::RWMol
RWMol is a molecule class that is intended to be edited.
Definition RWMol.h:32
RDKit::SubstanceGroup
The class for representing SubstanceGroups.
Definition SubstanceGroup.h:54
export.h
RDKIT_FILEPARSERS_EXPORT
#define RDKIT_FILEPARSERS_EXPORT
Definition export.h:177
RDKit::SGroupParsing
Definition MolSGroupParsing.h:19
RDKit::SGroupParsing::ParseSGroupV2000SSTLine
void ParseSGroupV2000SSTLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int &line, bool strictParsing=true)
RDKit::SGroupParsing::ParseSGroupIntField
unsigned int ParseSGroupIntField(const std::string &text, unsigned int line, unsigned int &pos, bool isFieldCounter=false)
RDKit::SGroupParsing::IDX_TO_SGROUP_MAP
std::map< int, SubstanceGroup > IDX_TO_SGROUP_MAP
Definition MolSGroupParsing.h:20
RDKit::SGroupParsing::ParseSGroupV2000STYLine
void ParseSGroupV2000STYLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
RDKit::SGroupParsing::ParseSGroupV2000SCDSEDLine
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)
RDKit::SGroupParsing::ParseSGroupV2000SPLLine
void ParseSGroupV2000SPLLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
RDKit::SGroupParsing::ParseSGroupV2000SAPLine
void ParseSGroupV2000SAPLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
RDKit::SGroupParsing::FindSgIdx
SubstanceGroup * FindSgIdx(IDX_TO_SGROUP_MAP &sGroupMap, int sgIdx, unsigned int line)
RDKit::SGroupParsing::ParseV3000CStateLabel
void ParseV3000CStateLabel(RWMol *mol, SubstanceGroup &sgroup, std::stringstream &stream, unsigned int line, bool strictParsing=true)
RDKit::SGroupParsing::ParseSGroupV2000SCNLine
void ParseSGroupV2000SCNLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
RDKit::SGroupParsing::ParseSGroupV2000SLBLine
void ParseSGroupV2000SLBLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
RDKit::SGroupParsing::ParseV3000SAPLabel
void ParseV3000SAPLabel(RWMol *mol, SubstanceGroup &sgroup, std::stringstream &stream, bool strictParsing=true)
RDKit::SGroupParsing::ParseSGroupV2000SDSLine
void ParseSGroupV2000SDSLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
RDKit::SGroupParsing::ParseV3000SGroupsBlock
std::string ParseV3000SGroupsBlock(std::istream *inStream, unsigned int &line, unsigned int nSgroups, RWMol *mol, bool strictParsing)
RDKit::SGroupParsing::ParseSGroupV2000SCLLine
void ParseSGroupV2000SCLLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
RDKit::SGroupParsing::ParseSGroupV2000SDILine
void ParseSGroupV2000SDILine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
RDKit::SGroupParsing::ParseSGroupV2000SBTLine
void ParseSGroupV2000SBTLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
RDKit::SGroupParsing::SGroupWarnOrThrow
void SGroupWarnOrThrow(bool strictParsing, const std::string &msg)
Definition MolSGroupParsing.h:45
RDKit::SGroupParsing::ParseV3000StringPropLabel
std::string ParseV3000StringPropLabel(std::stringstream &stream)
RDKit::SGroupParsing::ParseV3000Array
RDKIT_FILEPARSERS_EXPORT std::vector< T > ParseV3000Array(std::stringstream &stream, int maxV=-1, bool strictParsing=false)
RDKit::SGroupParsing::ParseSGroupV2000VectorDataLine
void ParseSGroupV2000VectorDataLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
RDKit::SGroupParsing::ParseSGroupV2000SDTLine
void ParseSGroupV2000SDTLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
RDKit::SGroupParsing::ParseSGroupV2000SDDLine
void ParseSGroupV2000SDDLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
RDKit::SGroupParsing::IDX_TO_STR_VECT_MAP
std::map< int, STR_VECT > IDX_TO_STR_VECT_MAP
Definition MolSGroupParsing.h:21
RDKit::SGroupParsing::ParseSGroupV2000SBVLine
void ParseSGroupV2000SBVLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
RDKit::SGroupParsing::ParseSGroupV2000SNCLine
void ParseSGroupV2000SNCLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int line, bool strictParsing=true)
RDKit::SGroupParsing::ParseSGroupDoubleField
double ParseSGroupDoubleField(const std::string &text, unsigned int line, unsigned int &pos)
RDKit::SGroupParsing::ParseSGroupV2000SMTLine
void ParseSGroupV2000SMTLine(IDX_TO_SGROUP_MAP &sGroupMap, RWMol *mol, const std::string &text, unsigned int &line, bool strictParsing=true)
RDKit
Std stuff.
Definition Abbreviations.h:19