Chemical Data Processing Library C++ API - Version 1.2.0
Chem/AtomFunctions.hpp
Go to the documentation of this file.
1 /*
2  * AtomFunctions.hpp
3  *
4  * This file is part of the Chemical Data Processing Toolkit
5  *
6  * Copyright (C) 2003 Thomas Seidel <thomas.seidel@univie.ac.at>
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public License
19  * along with this library; see the file COPYING. If not, write to
20  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21  * Boston, MA 02111-1307, USA.
22  */
23 
29 #ifndef CDPL_CHEM_ATOMFUNCTIONS_HPP
30 #define CDPL_CHEM_ATOMFUNCTIONS_HPP
31 
32 #include <cstddef>
33 #include <string>
34 #include <type_traits>
35 
36 #include "CDPL/Chem/APIPrefix.hpp"
42 #include "CDPL/Math/Vector.hpp"
44 #include "CDPL/Util/BitSet.hpp"
45 
46 
47 namespace CDPL
48 {
49 
50  namespace Chem
51  {
52 
53  class StereoDescriptor;
54 
55 
56  CDPL_CHEM_API const std::string& getName(const Atom& atom);
57 
58  CDPL_CHEM_API void setName(Atom& atom, const std::string& name);
59 
61 
62  CDPL_CHEM_API bool hasName(const Atom& atom);
63 
64 
65  CDPL_CHEM_API const std::string& getSymbol(const Atom& atom);
66 
67  CDPL_CHEM_API void setSymbol(Atom& atom, const std::string& symbol);
68 
70 
71  CDPL_CHEM_API bool hasSymbol(const Atom& atom);
72 
73  CDPL_CHEM_API const std::string& getSymbolForType(const Atom& atom);
74 
75 
76  CDPL_CHEM_API unsigned int getType(const Atom& atom);
77 
78  CDPL_CHEM_API void setType(Atom& atom, unsigned int type);
79 
81 
82  CDPL_CHEM_API bool hasType(const Atom& atom);
83 
84  CDPL_CHEM_API unsigned int getTypeForSymbol(const Atom& atom);
85 
86  CDPL_CHEM_API unsigned int getGenericType(const Atom& atom); //move
87 
88 
89  CDPL_CHEM_API long getFormalCharge(const Atom& atom);
90 
91  CDPL_CHEM_API void setFormalCharge(Atom& atom, long charge);
92 
94 
95  CDPL_CHEM_API bool hasFormalCharge(const Atom& atom);
96 
97  CDPL_CHEM_API long calcFormalCharge(const Atom& atom, const MolecularGraph& molgraph);
98 
99 
100  CDPL_CHEM_API std::size_t getIsotope(const Atom& atom);
101 
102  CDPL_CHEM_API void setIsotope(Atom& atom, std::size_t isotope);
103 
105 
106  CDPL_CHEM_API bool hasIsotope(const Atom& atom);
107 
108 
109  CDPL_CHEM_API unsigned int getRadicalType(const Atom& atom);
110 
111  CDPL_CHEM_API void setRadicalType(Atom& atom, unsigned int type);
112 
114 
115  CDPL_CHEM_API bool hasRadicalType(const Atom& atom);
116 
117 
118  CDPL_CHEM_API unsigned int getHybridizationState(const Atom& atom);
119 
120  CDPL_CHEM_API void setHybridizationState(Atom& atom, unsigned int state);
121 
123 
125 
126  CDPL_CHEM_API unsigned int perceiveHybridizationState(const Atom& atom, const MolecularGraph& molgraph);
127 
128 
129  CDPL_CHEM_API bool getRingFlag(const Atom& atom);
130 
131  CDPL_CHEM_API void setRingFlag(Atom& atom, bool in_ring);
132 
134 
135  CDPL_CHEM_API bool hasRingFlag(const Atom& atom);
136 
137 
138  CDPL_CHEM_API bool isInFragmentOfSize(const Atom& atom, const FragmentList& frag_list, std::size_t size);
139 
140  CDPL_CHEM_API std::size_t getSizeOfSmallestContainingFragment(const Atom& atom, const FragmentList& frag_list);
141 
142  CDPL_CHEM_API std::size_t getSizeOfLargestContainingFragment(const Atom& atom, const FragmentList& frag_list);
143 
144  CDPL_CHEM_API std::size_t getNumContainingFragments(const Atom& atom, const FragmentList& frag_list);
145 
146  CDPL_CHEM_API void getContainingFragments(const Atom& atom, const FragmentList& frag_list, FragmentList& cont_frag_list, bool append = false);
147 
148 
150 
151  CDPL_CHEM_API void setAromaticityFlag(Atom& atom, bool aromatic);
152 
154 
156 
157 
158  CDPL_CHEM_API std::size_t getUnpairedElectronCount(const Atom& atom);
159 
160  CDPL_CHEM_API void setUnpairedElectronCount(Atom& atom, std::size_t count);
161 
163 
165 
166 
167  CDPL_CHEM_API std::size_t getImplicitHydrogenCount(const Atom& atom);
168 
169  CDPL_CHEM_API void setImplicitHydrogenCount(Atom& atom, std::size_t count);
170 
172 
174 
175  CDPL_CHEM_API std::size_t calcImplicitHydrogenCount(const Atom& atom, const MolecularGraph& molgraph);
176 
177 
179 
180  CDPL_CHEM_API void set2DCoordinates(Atom& atom, const Math::Vector2D& coords);
181 
183 
185 
186 
187  CDPL_CHEM_API const Math::Vector3D& getConformer3DCoordinates(const Atom& atom, std::size_t conf_idx);
188 
189 
190  CDPL_CHEM_API const Math::Vector3DArray::SharedPointer& get3DCoordinatesArray(const Atom& atom);
191 
192  CDPL_CHEM_API void set3DCoordinatesArray(Atom& atom, const Math::Vector3DArray::SharedPointer& coords_array);
193 
195 
197 
198 
199  CDPL_CHEM_API std::size_t getMorganNumber(const Atom& atom);
200 
201  CDPL_CHEM_API void setMorganNumber(Atom& atom, std::size_t num);
202 
204 
205  CDPL_CHEM_API bool hasMorganNumber(const Atom& atom);
206 
207 
208  CDPL_CHEM_API std::size_t getCanonicalNumber(const Atom& atom);
209 
210  CDPL_CHEM_API void setCanonicalNumber(Atom& atom, std::size_t num);
211 
213 
215 
216 
217  CDPL_CHEM_API std::size_t getCIPPriority(const Atom& atom);
218 
219  CDPL_CHEM_API void setCIPPriority(Atom& atom, std::size_t priority);
220 
222 
223  CDPL_CHEM_API bool hasCIPPriority(const Atom& atom);
224 
225 
226  CDPL_CHEM_API std::size_t getSymmetryClass(const Atom& atom);
227 
228  CDPL_CHEM_API void setSymmetryClass(Atom& atom, std::size_t class_id);
229 
231 
233 
234 
235  CDPL_CHEM_API unsigned int getCIPConfiguration(const Atom& atom);
236 
237  CDPL_CHEM_API void setCIPConfiguration(Atom& atom, unsigned int config);
238 
240 
242 
243 
245 
247 
249 
251 
252  CDPL_CHEM_API StereoDescriptor calcStereoDescriptor(const Atom& atom, const MolecularGraph& molgraph, std::size_t dim = 1);
253 
255 
256  CDPL_CHEM_API unsigned int calcConfiguration(const Atom& atom, const MolecularGraph& molgraph, const StereoDescriptor& descr,
257  const Math::Vector3DArray& coords);
258 
259 
261 
262  CDPL_CHEM_API void setStereoCenterFlag(Atom& atom, bool is_center);
263 
265 
267 
268  CDPL_CHEM_API bool isStereoCenter(const Atom& atom, const MolecularGraph& molgraph, bool check_asym = true,
269  bool check_inv_n = true, bool check_quart_n = true, bool check_plan_n = true,
270  bool check_amide_n = true, bool check_res_ctrs = true);
271 
272 
273  CDPL_CHEM_API unsigned int getSybylType(const Atom& atom);
274 
275  CDPL_CHEM_API void setSybylType(Atom& atom, unsigned int type);
276 
278 
279  CDPL_CHEM_API bool hasSybylType(const Atom& atom);
280 
281  CDPL_CHEM_API unsigned int perceiveSybylType(const Atom& atom, const MolecularGraph& molgraph);
282 
283 
284  CDPL_CHEM_API const std::string& getMOL2Name(const Atom& atom);
285 
286  CDPL_CHEM_API void setMOL2Name(Atom& atom, const std::string& name);
287 
289 
290  CDPL_CHEM_API bool hasMOL2Name(const Atom& atom);
291 
292 
293  CDPL_CHEM_API double getMOL2Charge(const Atom& atom);
294 
295  CDPL_CHEM_API void setMOL2Charge(Atom& atom, double charge);
296 
298 
299  CDPL_CHEM_API bool hasMOL2Charge(const Atom& atom);
300 
301 
302  CDPL_CHEM_API std::size_t getMOL2SubstructureID(const Atom& atom);
303 
304  CDPL_CHEM_API void setMOL2SubstructureID(Atom& atom, std::size_t id);
305 
307 
309 
310 
311  CDPL_CHEM_API const std::string& getMOL2SubstructureName(const Atom& atom);
312 
313  CDPL_CHEM_API void setMOL2SubstructureName(Atom& atom, const std::string& id);
314 
316 
318 
319 
320  CDPL_CHEM_API const std::string& getMOL2SubstructureSubtype(const Atom& atom);
321 
322  CDPL_CHEM_API void setMOL2SubstructureSubtype(Atom& atom, const std::string& subtype);
323 
325 
327 
328 
329  CDPL_CHEM_API const std::string& getMOL2SubstructureChain(const Atom& atom);
330 
331  CDPL_CHEM_API void setMOL2SubstructureChain(Atom& atom, const std::string& chain);
332 
334 
336 
337 
338  CDPL_CHEM_API unsigned int getMDLParity(const Atom& atom);
339 
340  CDPL_CHEM_API void setMDLParity(Atom& atom, unsigned int parity);
341 
343 
344  CDPL_CHEM_API bool hasMDLParity(const Atom& atom);
345 
346  CDPL_CHEM_API unsigned int calcMDLParity(const Atom& atom, const MolecularGraph& molgraph);
347 
348 
350 
351  CDPL_CHEM_API void setMDLStereoCareFlag(Atom& atom, bool flag);
352 
354 
356 
357 
358  CDPL_CHEM_API unsigned int getReactionCenterStatus(const Atom& atom);
359 
360  CDPL_CHEM_API void setReactionCenterStatus(Atom& atom, unsigned int status);
361 
363 
365 
366 
367  CDPL_CHEM_API std::size_t getAtomMappingID(const Atom& atom);
368 
369  CDPL_CHEM_API void setAtomMappingID(Atom& atom, std::size_t id);
370 
372 
374 
375 
376  CDPL_CHEM_API std::size_t getComponentGroupID(const Atom& atom);
377 
378  CDPL_CHEM_API void setComponentGroupID(Atom& atom, std::size_t id);
379 
381 
383 
384 
386 
388 
390 
392 
393 
395 
397 
399 
401 
403 
404 
405  CDPL_CHEM_API const std::string& getMatchExpressionString(const Atom& atom);
406 
407  CDPL_CHEM_API void setMatchExpressionString(Atom& atom, const std::string& expr_str);
408 
410 
412 
413  CDPL_CHEM_API void generateMatchExpressionString(const Atom& atom, const MolecularGraph& molgraph, std::string& expr_str);
414 
415 
416  CDPL_CHEM_API void markReachableAtoms(const Atom& atom, const MolecularGraph& molgraph,
417  Util::BitSet& atom_mask, bool reset = true);
418 
419  CDPL_CHEM_API std::size_t getTopologicalDistance(const Atom& atom1, const Atom& atom2, const MolecularGraph& molgraph);
420 
421  CDPL_CHEM_API std::size_t getEnvironment(const Atom& atom, const MolecularGraph& molgraph, std::size_t max_dist, Fragment& env, bool append = false);
422 
423 
424  template <typename AtomType, typename OutputIterator>
425  std::size_t getConnectedAtoms(AtomType& atom, const MolecularGraph& molgraph, OutputIterator it, AtomType* excl_atom = 0)
426  {
427  typedef typename std::conditional<std::is_const<AtomType>::value, typename AtomType::ConstAtomIterator, typename AtomType::AtomIterator>::type AtomIterator;
428 
429  AtomIterator atoms_end = atom.getAtomsEnd();
430  typename AtomType::ConstBondIterator b_it = atom.getBondsBegin();
431  std::size_t count = 0;
432 
433  for (AtomIterator a_it = atom.getAtomsBegin(); a_it != atoms_end; ++a_it, ++b_it) {
434  if (&(*a_it) == excl_atom)
435  continue;
436 
437  if (molgraph.containsAtom(*a_it) && molgraph.containsBond(*b_it)) {
438  *it = &(*a_it);
439  ++it;
440  count++;
441  }
442  }
443 
444  return count;
445  }
446 
447  template <typename AtomType, typename OutputIterator>
448  std::size_t getIncidentBonds(AtomType& atom, const MolecularGraph& molgraph, OutputIterator it, AtomType* excl_atom = 0)
449  {
450  typedef typename std::conditional<std::is_const<AtomType>::value, typename AtomType::ConstBondIterator, typename AtomType::BondIterator>::type BondIterator;
451 
452  BondIterator bonds_end = atom.getBondsEnd();
453  typename AtomType::ConstAtomIterator a_it = atom.getAtomsBegin();
454  std::size_t count = 0;
455 
456  for (BondIterator b_it = atom.getBondsBegin(); b_it != bonds_end; ++a_it, ++b_it) {
457  if (&(*a_it) == excl_atom)
458  continue;
459 
460  if (molgraph.containsAtom(*a_it) && molgraph.containsBond(*b_it)) {
461  *it = &(*b_it);
462  ++it;
463  count++;
464  }
465  }
466 
467  return count;
468  }
469 
470  template <typename AtomType, typename AtomOutputIterator, typename BondOutputIterator>
471  std::size_t getConnectedAtomsAndBonds(AtomType& atom, const MolecularGraph& molgraph, AtomOutputIterator ao_it, BondOutputIterator bo_it, AtomType* excl_atom = 0)
472  {
473  typedef typename std::conditional<std::is_const<AtomType>::value, typename AtomType::ConstAtomIterator, typename AtomType::AtomIterator>::type AtomIterator;
474  typedef typename std::conditional<std::is_const<AtomType>::value, typename AtomType::ConstBondIterator, typename AtomType::BondIterator>::type BondIterator;
475 
476  BondIterator bonds_end = atom.getBondsEnd();
477  AtomIterator a_it = atom.getAtomsBegin();
478  std::size_t count = 0;
479 
480  for (BondIterator b_it = atom.getBondsBegin(); b_it != bonds_end; ++a_it, ++b_it) {
481  if (&(*a_it) == excl_atom)
482  continue;
483 
484  if (molgraph.containsAtom(*a_it) && molgraph.containsBond(*b_it)) {
485  *ao_it = &(*a_it);
486  *bo_it = &(*b_it);
487  ++ao_it;
488  ++bo_it;
489  count++;
490  }
491  }
492 
493  return count;
494  }
495  } // namespace Chem
496 } // namespace CDPL
497 
498 #endif // CDPL_CHEM_ATOMFUNCTIONS_HPP
Type definition of a generic wrapper class for storing user-defined Chem::Atom 3D-coordinates functio...
Definition of the type CDPL::Util::BitSet.
Definition of the preprocessor macro CDPL_CHEM_API.
#define CDPL_CHEM_API
Tells the compiler/linker which classes, functions and variables are part of the library API.
Definition of constants in namespace CDPL::Chem::AtomPropertyFlag.
Definition of the class CDPL::Chem::FragmentList.
Definition of the class CDPL::Chem::MatchConstraintList.
Definition of the class CDPL::Chem::MatchExpression.
Definition of the class CDPL::Math::VectorArray.
Definition of vector data types.
virtual bool containsAtom(const Atom &atom) const =0
Tells whether the specified Chem::Atom instance is stored in this container.
Atom.
Definition: Atom.hpp:52
virtual bool containsBond(const Bond &bond) const =0
Tells whether the specified Chem::Bond instance is stored in this container.
A data type for the storage of Chem::Fragment objects.
Definition: FragmentList.hpp:49
Fragment.
Definition: Fragment.hpp:52
std::shared_ptr< MatchConstraintList > SharedPointer
A reference-counted smart pointer [SHPTR] for dynamically allocated MatchConstraintList instances.
Definition: MatchConstraintList.hpp:197
A generic boolean expression interface for the implementation of query/target object equivalence test...
Definition: MatchExpression.hpp:75
MolecularGraph.
Definition: MolecularGraph.hpp:52
A data structure for the storage and retrieval of stereochemical information about atoms and bonds.
Definition: StereoDescriptor.hpp:102
CDPL_CHEM_API bool hasFormalCharge(const Atom &atom)
CDPL_CHEM_API bool hasMDLParity(const Atom &atom)
CDPL_CHEM_API std::size_t getEnvironment(const Atom &atom, const MolecularGraph &molgraph, std::size_t max_dist, Fragment &env, bool append=false)
CDPL_CHEM_API std::size_t getSizeOfSmallestContainingFragment(const Atom &atom, const FragmentList &frag_list)
CDPL_CHEM_API void setRingFlag(Atom &atom, bool in_ring)
std::size_t getConnectedAtomsAndBonds(AtomType &atom, const MolecularGraph &molgraph, AtomOutputIterator ao_it, BondOutputIterator bo_it, AtomType *excl_atom=0)
Definition: Chem/AtomFunctions.hpp:471
CDPL_CHEM_API std::size_t getSymmetryClass(const Atom &atom)
CDPL_CHEM_API bool hasSymmetryClass(const Atom &atom)
CDPL_CHEM_API void setCanonicalNumber(Atom &atom, std::size_t num)
CDPL_CHEM_API bool hasIsotope(const Atom &atom)
CDPL_CHEM_API long getFormalCharge(const Atom &atom)
CDPL_CHEM_API unsigned int getTypeForSymbol(const Atom &atom)
CDPL_CHEM_API bool hasMOL2SubstructureChain(const Atom &atom)
CDPL_CHEM_API void clear2DCoordinates(Atom &atom)
CDPL_CHEM_API bool hasCIPPriority(const Atom &atom)
CDPL_CHEM_API void clearFormalCharge(Atom &atom)
CDPL_CHEM_API bool getAromaticityFlag(const Atom &atom)
CDPL_CHEM_API void clearRingFlag(Atom &atom)
CDPL_CHEM_API void clearSymmetryClass(Atom &atom)
CDPL_CHEM_API void clearMatchExpression(Atom &atom)
CDPL_CHEM_API bool hasSymbol(const Atom &atom)
CDPL_CHEM_API void getContainingFragments(const Atom &atom, const FragmentList &frag_list, FragmentList &cont_frag_list, bool append=false)
CDPL_CHEM_API bool hasMOL2Charge(const Atom &atom)
CDPL_CHEM_API void setSymbol(Atom &atom, const std::string &symbol)
CDPL_CHEM_API const std::string & getMOL2SubstructureChain(const Atom &atom)
std::size_t getIncidentBonds(AtomType &atom, const MolecularGraph &molgraph, OutputIterator it, AtomType *excl_atom=0)
Definition: Chem/AtomFunctions.hpp:448
CDPL_CHEM_API bool hasHybridizationState(const Atom &atom)
CDPL_CHEM_API const MatchConstraintList::SharedPointer & getMatchConstraints(const Atom &atom)
CDPL_CHEM_API void setRadicalType(Atom &atom, unsigned int type)
CDPL_CHEM_API bool hasMOL2SubstructureName(const Atom &atom)
CDPL_CHEM_API bool getRingFlag(const Atom &atom)
CDPL_CHEM_API const Math::Vector3DArray::SharedPointer & get3DCoordinatesArray(const Atom &atom)
CDPL_CHEM_API unsigned int calcConfiguration(const Atom &atom, const MolecularGraph &molgraph, const StereoDescriptor &descr, const Math::Vector3DArray &coords)
CDPL_CHEM_API void clearMOL2SubstructureChain(Atom &atom)
CDPL_CHEM_API bool hasReactionCenterStatus(const Atom &atom)
CDPL_CHEM_API bool hasCanonicalNumber(const Atom &atom)
CDPL_CHEM_API bool hasName(const Atom &atom)
CDPL_CHEM_API std::size_t getMorganNumber(const Atom &atom)
CDPL_CHEM_API void setSybylType(Atom &atom, unsigned int type)
CDPL_CHEM_API void setMDLParity(Atom &atom, unsigned int parity)
CDPL_CHEM_API void clearStereoCenterFlag(Atom &atom)
CDPL_CHEM_API void clearMOL2Name(Atom &atom)
CDPL_CHEM_API void clearReactionCenterStatus(Atom &atom)
CDPL_CHEM_API const std::string & getName(const Atom &atom)
CDPL_CHEM_API void clearCIPConfiguration(Atom &atom)
CDPL_CHEM_API std::size_t getNumContainingFragments(const Atom &atom, const FragmentList &frag_list)
CDPL_CHEM_API bool hasMDLStereoCareFlag(const Atom &atom)
CDPL_CHEM_API void get2DCoordinates(const AtomContainer &cntnr, Math::Vector2DArray &coords, bool append=false)
CDPL_CHEM_API std::size_t getCIPPriority(const Atom &atom)
CDPL_CHEM_API bool hasMOL2SubstructureSubtype(const Atom &atom)
CDPL_CHEM_API void setMatchExpression(Atom &atom, const MatchExpression< Atom, MolecularGraph >::SharedPointer &expr)
CDPL_CHEM_API bool hasStereoCenterFlag(const Atom &atom)
CDPL_CHEM_API void clearType(Atom &atom)
CDPL_CHEM_API bool has3DCoordinatesArray(const Atom &atom)
CDPL_CHEM_API void setMOL2Charge(Atom &atom, double charge)
CDPL_CHEM_API void clear3DCoordinatesArray(Atom &atom)
CDPL_CHEM_API bool hasAtomMappingID(const Atom &atom)
CDPL_CHEM_API void setMOL2SubstructureID(Atom &atom, std::size_t id)
CDPL_CHEM_API void clearMorganNumber(Atom &atom)
CDPL_CHEM_API unsigned int perceiveSybylType(const Atom &atom, const MolecularGraph &molgraph)
CDPL_CHEM_API void setMOL2SubstructureName(Atom &atom, const std::string &id)
CDPL_CHEM_API void clearStereoDescriptor(Atom &atom)
CDPL_CHEM_API void setHybridizationState(Atom &atom, unsigned int state)
CDPL_CHEM_API unsigned int getSybylType(const Atom &atom)
CDPL_CHEM_API void setMorganNumber(Atom &atom, std::size_t num)
CDPL_CHEM_API std::size_t calcImplicitHydrogenCount(const Atom &atom, const MolecularGraph &molgraph)
CDPL_CHEM_API void clearMDLParity(Atom &atom)
CDPL_CHEM_API bool hasCIPConfiguration(const Atom &atom)
CDPL_CHEM_API std::size_t getSizeOfLargestContainingFragment(const Atom &atom, const FragmentList &frag_list)
CDPL_CHEM_API MatchExpression< Atom, MolecularGraph >::SharedPointer generateMatchExpression(const Atom &atom, const MolecularGraph &molgraph)
CDPL_CHEM_API const MatchExpression< Atom, MolecularGraph >::SharedPointer & getMatchExpression(const Atom &atom)
CDPL_CHEM_API std::size_t getComponentGroupID(const Atom &atom)
CDPL_CHEM_API void setAromaticityFlag(Atom &atom, bool aromatic)
CDPL_CHEM_API void markReachableAtoms(const Atom &atom, const MolecularGraph &molgraph, Util::BitSet &atom_mask, bool reset=true)
CDPL_CHEM_API long calcFormalCharge(const Atom &atom, const MolecularGraph &molgraph)
CDPL_CHEM_API unsigned int getMDLParity(const Atom &atom)
CDPL_CHEM_API void setStereoCenterFlag(Atom &atom, bool is_center)
CDPL_CHEM_API void clearMDLStereoCareFlag(Atom &atom)
std::size_t getConnectedAtoms(AtomType &atom, const MolecularGraph &molgraph, OutputIterator it, AtomType *excl_atom=0)
Definition: Chem/AtomFunctions.hpp:425
CDPL_CHEM_API void setMDLStereoCareFlag(Atom &atom, bool flag)
CDPL_CHEM_API void setCIPConfiguration(Atom &atom, unsigned int config)
CDPL_CHEM_API void clearMOL2Charge(Atom &atom)
CDPL_CHEM_API StereoDescriptor calcStereoDescriptor(const Atom &atom, const MolecularGraph &molgraph, std::size_t dim=1)
CDPL_CHEM_API void setReactionCenterStatus(Atom &atom, unsigned int status)
CDPL_CHEM_API const StereoDescriptor & getStereoDescriptor(const Atom &atom)
CDPL_CHEM_API void clearCanonicalNumber(Atom &atom)
CDPL_CHEM_API void generateMatchExpressionString(const Atom &atom, const MolecularGraph &molgraph, std::string &expr_str)
CDPL_CHEM_API unsigned int getRadicalType(const Atom &atom)
CDPL_CHEM_API const std::string & getMOL2SubstructureName(const Atom &atom)
CDPL_CHEM_API void clearMOL2SubstructureID(Atom &atom)
CDPL_CHEM_API void clearAromaticityFlag(Atom &atom)
CDPL_CHEM_API void clearRadicalType(Atom &atom)
CDPL_CHEM_API void setUnpairedElectronCount(Atom &atom, std::size_t count)
CDPL_CHEM_API bool isStereoCenter(const Atom &atom, const MolecularGraph &molgraph, bool check_asym=true, bool check_inv_n=true, bool check_quart_n=true, bool check_plan_n=true, bool check_amide_n=true, bool check_res_ctrs=true)
CDPL_CHEM_API bool hasMOL2Name(const Atom &atom)
CDPL_CHEM_API void setAtomMappingID(Atom &atom, std::size_t id)
CDPL_CHEM_API StereoDescriptor calcStereoDescriptorFromMDLParity(const Atom &atom, const MolecularGraph &molgraph)
CDPL_CHEM_API void clearSybylType(Atom &atom)
CDPL_CHEM_API void setIsotope(Atom &atom, std::size_t isotope)
CDPL_CHEM_API void setCIPPriority(Atom &atom, std::size_t priority)
CDPL_CHEM_API void setMatchConstraints(Atom &atom, const MatchConstraintList::SharedPointer &constr)
CDPL_CHEM_API unsigned int getType(const Atom &atom)
CDPL_CHEM_API bool has2DCoordinates(const Atom &atom)
CDPL_CHEM_API std::size_t getImplicitHydrogenCount(const Atom &atom)
CDPL_CHEM_API const std::string & getMOL2SubstructureSubtype(const Atom &atom)
CDPL_CHEM_API void clearAtomMappingID(Atom &atom)
CDPL_CHEM_API bool hasMorganNumber(const Atom &atom)
CDPL_CHEM_API void clearIsotope(Atom &atom)
CDPL_CHEM_API void setStereoDescriptor(Atom &atom, const StereoDescriptor &descr)
CDPL_CHEM_API const std::string & getMatchExpressionString(const Atom &atom)
CDPL_CHEM_API bool hasMatchExpressionString(const Atom &atom)
CDPL_CHEM_API const Math::Vector3D & getConformer3DCoordinates(const Atom &atom, std::size_t conf_idx)
CDPL_CHEM_API void clearSymbol(Atom &atom)
CDPL_CHEM_API void clearHybridizationState(Atom &atom)
CDPL_CHEM_API bool hasRingFlag(const Atom &atom)
CDPL_CHEM_API bool hasComponentGroupID(const Atom &atom)
CDPL_CHEM_API std::size_t getUnpairedElectronCount(const Atom &atom)
CDPL_CHEM_API bool hasMatchExpression(const Atom &atom)
CDPL_CHEM_API std::size_t getCanonicalNumber(const Atom &atom)
CDPL_CHEM_API void clearUnpairedElectronCount(Atom &atom)
CDPL_CHEM_API bool hasType(const Atom &atom)
CDPL_CHEM_API bool hasMOL2SubstructureID(const Atom &atom)
CDPL_CHEM_API unsigned int getHybridizationState(const Atom &atom)
CDPL_CHEM_API void setMOL2SubstructureChain(Atom &atom, const std::string &chain)
CDPL_CHEM_API bool hasStereoDescriptor(const Atom &atom)
CDPL_CHEM_API void clearMOL2SubstructureSubtype(Atom &atom)
CDPL_CHEM_API void clearName(Atom &atom)
CDPL_CHEM_API void setSymmetryClass(Atom &atom, std::size_t class_id)
CDPL_CHEM_API void set3DCoordinatesArray(Atom &atom, const Math::Vector3DArray::SharedPointer &coords_array)
CDPL_CHEM_API const std::string & getSymbol(const Atom &atom)
CDPL_CHEM_API bool hasRadicalType(const Atom &atom)
CDPL_CHEM_API void set2DCoordinates(AtomContainer &cntnr, const Math::Vector2DArray &coords)
CDPL_CHEM_API void clearComponentGroupID(Atom &atom)
CDPL_CHEM_API void setMOL2SubstructureSubtype(Atom &atom, const std::string &subtype)
CDPL_CHEM_API void clearMatchConstraints(Atom &atom)
CDPL_CHEM_API unsigned int getGenericType(const Atom &atom)
CDPL_CHEM_API bool hasMatchConstraints(const Atom &atom)
CDPL_CHEM_API bool hasUnpairedElectronCount(const Atom &atom)
CDPL_CHEM_API unsigned int perceiveHybridizationState(const Atom &atom, const MolecularGraph &molgraph)
CDPL_CHEM_API void setImplicitHydrogenCount(Atom &atom, std::size_t count)
CDPL_CHEM_API bool getStereoCenterFlag(const Atom &atom)
CDPL_CHEM_API bool getMDLStereoCareFlag(const Atom &atom)
CDPL_CHEM_API double getMOL2Charge(const Atom &atom)
CDPL_CHEM_API bool hasAromaticityFlag(const Atom &atom)
CDPL_CHEM_API unsigned int getReactionCenterStatus(const Atom &atom)
CDPL_CHEM_API void setMatchExpressionString(Atom &atom, const std::string &expr_str)
CDPL_CHEM_API std::size_t getMOL2SubstructureID(const Atom &atom)
CDPL_CHEM_API void clearImplicitHydrogenCount(Atom &atom)
CDPL_CHEM_API bool isInFragmentOfSize(const Atom &atom, const FragmentList &frag_list, std::size_t size)
CDPL_CHEM_API void setComponentGroupID(Atom &atom, std::size_t id)
CDPL_CHEM_API void setFormalCharge(Atom &atom, long charge)
CDPL_CHEM_API void setType(Atom &atom, unsigned int type)
CDPL_CHEM_API unsigned int calcMDLParity(const Atom &atom, const MolecularGraph &molgraph)
CDPL_CHEM_API void clearCIPPriority(Atom &atom)
CDPL_CHEM_API std::size_t getAtomMappingID(const Atom &atom)
CDPL_CHEM_API const std::string & getSymbolForType(const Atom &atom)
CDPL_CHEM_API void clearMatchExpressionString(Atom &atom)
CDPL_CHEM_API void clearMOL2SubstructureName(Atom &atom)
CDPL_CHEM_API std::size_t getIsotope(const Atom &atom)
CDPL_CHEM_API bool hasSybylType(const Atom &atom)
CDPL_CHEM_API void setMOL2Name(Atom &atom, const std::string &name)
CDPL_CHEM_API std::size_t getTopologicalDistance(const Atom &atom1, const Atom &atom2, const MolecularGraph &molgraph)
CDPL_CHEM_API bool hasImplicitHydrogenCount(const Atom &atom)
CDPL_CHEM_API unsigned int getCIPConfiguration(const Atom &atom)
CDPL_CHEM_API const std::string & getMOL2Name(const Atom &atom)
CDPL_CHEM_API void setName(Atom &atom, const std::string &name)
VectorArray< Vector3D > Vector3DArray
An array of Math::Vector3D objects.
Definition: VectorArray.hpp:84
CVector< double, 2 > Vector2D
A bounded 2 element vector holding floating point values of type double.
Definition: Vector.hpp:1632
CVector< double, 3 > Vector3D
A bounded 3 element vector holding floating point values of type double.
Definition: Vector.hpp:1637
boost::dynamic_bitset BitSet
A dynamic bitset class.
Definition: BitSet.hpp:46
The namespace of the Chemical Data Processing Library.