RDKit
Open-source cheminformatics and machine learning.
MolInterchange.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2018 Greg Landrum
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 #ifndef RD_MOLINTERCHANGE_H_JAN2018
12 #define RD_MOLINTERCHANGE_H_JAN2018
13 
14 /*! \file MolInterchange.h
15 
16 \brief Contains the public API for the convertors to/from the commonchem
17 interchange format
18 
19 \b Note that this should be considered beta and that the format and API
20 will very likely change in future releases.
21 
22 More information about CommonChem is available here:
23 https://github.com/mcs07/CommonChem
24 */
25 
26 #include <string>
27 #include <iostream>
28 #include <vector>
29 
30 #include <boost/shared_ptr.hpp>
31 
32 namespace RDKit {
33 
34 class RWMol;
35 
36 namespace MolInterchange {
37 
38 // \brief parameters controlling parsing of MolJSON
40  bool setAromaticBonds =
41  true; /*! toggles setting the BondType of aromatic bonds to Aromatic */
42  bool strictValenceCheck =
43  false; /*! toggles doing reasonable valence checks */
44  bool parseProperties =
45  true; /*! toggles extracting molecular properties from the JSON block */
46  bool parseConformers =
47  true; /*! toggles extracting conformers from the JSON block */
48 };
50 
51 // \brief construct molecules from MolJSON data in a stream
52 /*!
53  * \param inStream - stream containing the data
54  * \param params - parsing options
55  */
56 RDKIT_MOLINTERCHANGE_EXPORT std::vector<boost::shared_ptr<ROMol>> JSONDataStreamToMols(
57  std::istream *inStream,
58  const JSONParseParameters &params = defaultJSONParseParameters);
59 
60 // \brief construct molecules from MolJSON data
61 /*!
62  * \param jsonBlock - string containing the mol block
63  * \param params - parsing options
64  */
65 RDKIT_MOLINTERCHANGE_EXPORT std::vector<boost::shared_ptr<ROMol>> JSONDataToMols(
66  const std::string &jsonBlock,
67  const JSONParseParameters &params = defaultJSONParseParameters);
68 
69 // \brief returns MolJSON for a set of molecules
70 /*!
71  * \param mols - the molecules to work with
72  */
73 template <typename T>
74 RDKIT_MOLINTERCHANGE_EXPORT std::string MolsToJSONData(const std::vector<T> &mols);
75 
76 // \brief returns MolJSON for a molecule
77 /*!
78  * \param mol - the molecule to work with
79  */
80 template <typename T>
81 std::string MolToJSONData(const T &mol) {
82  std::vector<const T *> ms{&mol};
83  return MolsToJSONData(ms);
84 };
85 
86 } // end of namespace MolInterchange
87 } // end of namespace RDKit
88 
89 #endif
static JSONParseParameters defaultJSONParseParameters
RDKIT_MOLINTERCHANGE_EXPORT std::vector< boost::shared_ptr< ROMol > > JSONDataToMols(const std::string &jsonBlock, const JSONParseParameters &params=defaultJSONParseParameters)
RDKIT_MOLINTERCHANGE_EXPORT std::vector< boost::shared_ptr< ROMol > > JSONDataStreamToMols(std::istream *inStream, const JSONParseParameters &params=defaultJSONParseParameters)
std::string MolToJSONData(const T &mol)
Std stuff.
Definition: Atom.h:30
#define RDKIT_MOLINTERCHANGE_EXPORT
Definition: export.h:411
RDKIT_MOLINTERCHANGE_EXPORT std::string MolsToJSONData(const std::vector< T > &mols)