RDKit
Open-source cheminformatics and machine learning.
ReactionPickler.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2009 Greg Landrum
3 // Copyright (c) 2014, Novartis Institutes for BioMedical Research Inc.
4 //
5 // @@ All Rights Reserved @@
6 // This file is part of the RDKit.
7 // The contents are covered by the terms of the BSD license
8 // which is included in the file license.txt, found at the root
9 // of the RDKit source tree.
10 //
11 #include <RDGeneral/export.h>
12 #ifndef RD_RXNPICKLE_H_2JUNE2009
13 #define RD_RXNPICKLE_H_2JUNE2009
14 
15 #include <GraphMol/MolPickler.h>
16 // Std stuff
17 #include <iostream>
18 #include <string>
19 #include <exception>
20 #ifdef WIN32
21 #include <ios>
22 #endif
23 
24 namespace RDKit {
25 class ChemicalReaction;
26 
27 //! used to indicate exceptions whilst pickling (serializing) reactions
29  : public std::exception {
30  public:
31  ReactionPicklerException(const char *msg) : _msg(msg){};
32  ReactionPicklerException(const std::string msg) : _msg(msg){};
33  const char *message() const { return _msg.c_str(); };
35 
36  private:
37  std::string _msg;
38 };
39 
40 //! handles pickling (serializing) reactions
42  public:
43  static const std::int32_t versionMajor; //!< mark the pickle version
44  static const std::int32_t versionMinor; //!< mark the pickle version
45  static const std::int32_t versionPatch; //!< mark the pickle version
46  static const std::int32_t endianId; //! mark the endian-ness of the pickle
47 
48  //! the pickle format is tagged using these tags:
49  //! NOTE: if you add to this list, be sure to put new entries AT THE BOTTOM,
50  //! otherwise you will break old pickles.
51  typedef enum {
52  VERSION = 10000,
61  ENDPROPS
62  } Tags;
63 
64  //! pickles a reaction and sends the results to stream \c ss
65  static void pickleReaction(const ChemicalReaction *rxn, std::ostream &ss,
66  unsigned int propertyFlags);
67  static void pickleReaction(const ChemicalReaction *rxn, std::ostream &ss);
68  static void pickleReaction(const ChemicalReaction &rxn, std::ostream &ss) {
70  };
71  static void pickleReaction(const ChemicalReaction &rxn, std::ostream &ss,
72  unsigned int propertyFlags) {
73  ReactionPickler::pickleReaction(&rxn, ss, propertyFlags);
74  };
75  //! pickles a reaction and adds the results to string \c res
76  static void pickleReaction(const ChemicalReaction *rxn, std::string &res,
77  unsigned int propertyFlags);
78  static void pickleReaction(const ChemicalReaction *rxn, std::string &res);
79  static void pickleReaction(const ChemicalReaction &rxn, std::string &res) {
81  };
82  static void pickleReaction(const ChemicalReaction &rxn, std::string &res,
83  unsigned int propertyFlags) {
84  ReactionPickler::pickleReaction(&rxn, res, propertyFlags);
85  };
86 
87  //! constructs a reaction from a pickle stored in a
88  //! string
89  static void reactionFromPickle(const std::string &pickle,
90  ChemicalReaction *rxn);
91  static void reactionFromPickle(const std::string &pickle,
92  ChemicalReaction &rxn) {
94  };
95 
96  //! constructs a reaction from a pickle stored in a
97  //! stream
98  static void reactionFromPickle(std::istream &ss, ChemicalReaction *rxn);
99  static void reactionFromPickle(std::istream &ss, ChemicalReaction &rxn) {
101  };
102 
103  private:
104  //! do the actual work of pickling a reaction
105  static void _pickle(const ChemicalReaction *rxn, std::ostream &ss,
106  unsigned int propertyFlags);
107 
108  //! do the actual work of de-pickling a reaction
109  static void _depickle(std::istream &ss, ChemicalReaction *rxn, int version);
110 
111  //! pickle standard properties
112  static void _pickleProperties(std::ostream &ss, const RDProps &props,
113  unsigned int pickleFlags);
114  //! unpickle standard properties
115  static void _unpickleProperties(std::istream &ss, RDProps &props);
116 };
117 }; // namespace RDKit
118 
119 #endif
RDKit::ReactionPicklerException::message
const char * message() const
Definition: ReactionPickler.h:33
RDKit::ReactionPickler::pickleReaction
static void pickleReaction(const ChemicalReaction &rxn, std::string &res)
Definition: ReactionPickler.h:79
RDKit::EnumerationStrategyPickler::pickle
RDKIT_CHEMREACTIONS_EXPORT void pickle(const boost::shared_ptr< EnumerationStrategyBase > &enumerator, std::ostream &ss)
pickles a EnumerationStrategy and adds the results to a stream ss
RDKit::ReactionPickler::reactionFromPickle
static void reactionFromPickle(const std::string &pickle, ChemicalReaction &rxn)
Definition: ReactionPickler.h:91
RDKit::ReactionPickler::BEGINAGENTS
@ BEGINAGENTS
Definition: ReactionPickler.h:57
RDKit::ReactionPickler::pickleReaction
static void pickleReaction(const ChemicalReaction &rxn, std::ostream &ss, unsigned int propertyFlags)
Definition: ReactionPickler.h:71
RDKit::ReactionPicklerException::ReactionPicklerException
ReactionPicklerException(const std::string msg)
Definition: ReactionPickler.h:32
RDKit::ReactionPickler::reactionFromPickle
static void reactionFromPickle(std::istream &ss, ChemicalReaction &rxn)
Definition: ReactionPickler.h:99
RDKit::ReactionPickler::versionMajor
static const std::int32_t versionMajor
mark the pickle version
Definition: ReactionPickler.h:43
RDKit::ReactionPickler::BEGINPROPS
@ BEGINPROPS
Definition: ReactionPickler.h:60
RDKit::ReactionPicklerException
used to indicate exceptions whilst pickling (serializing) reactions
Definition: ReactionPickler.h:28
RDKit::ReactionPickler::ENDREACTION
@ ENDREACTION
Definition: ReactionPickler.h:59
RDKit::ReactionPicklerException::ReactionPicklerException
ReactionPicklerException(const char *msg)
Definition: ReactionPickler.h:31
RDKit::ReactionPickler::ENDREACTANTS
@ ENDREACTANTS
Definition: ReactionPickler.h:54
RDKit::ReactionPickler::pickleReaction
static void pickleReaction(const ChemicalReaction &rxn, std::ostream &ss)
Definition: ReactionPickler.h:68
RDKit::ReactionPickler::ENDPRODUCTS
@ ENDPRODUCTS
Definition: ReactionPickler.h:56
RDKit::ReactionPickler::reactionFromPickle
static void reactionFromPickle(const std::string &pickle, ChemicalReaction *rxn)
RDKit::ReactionPickler::pickleReaction
static void pickleReaction(const ChemicalReaction &rxn, std::string &res, unsigned int propertyFlags)
Definition: ReactionPickler.h:82
RDKit::ReactionPicklerException::~ReactionPicklerException
~ReactionPicklerException()
Definition: ReactionPickler.h:34
RDKit::ChemicalReaction
This is a class for storing and applying general chemical reactions.
Definition: Reaction.h:119
RDKit::RDProps
Definition: RDProps.h:10
RDKit::ReactionPickler::BEGINPRODUCTS
@ BEGINPRODUCTS
Definition: ReactionPickler.h:55
RDKit::ReactionPickler::BEGINREACTANTS
@ BEGINREACTANTS
Definition: ReactionPickler.h:53
RDKit
Std stuff.
Definition: Atom.h:30
MolPickler.h
RDKit::ReactionPickler::versionMinor
static const std::int32_t versionMinor
mark the pickle version
Definition: ReactionPickler.h:44
RDKIT_CHEMREACTIONS_EXPORT
#define RDKIT_CHEMREACTIONS_EXPORT
Definition: export.h:60
RDKit::ReactionPickler
handles pickling (serializing) reactions
Definition: ReactionPickler.h:41
RDKit::ReactionPickler::pickleReaction
static void pickleReaction(const ChemicalReaction *rxn, std::ostream &ss, unsigned int propertyFlags)
pickles a reaction and sends the results to stream ss
RDKit::ReactionPickler::endianId
static const std::int32_t endianId
Definition: ReactionPickler.h:46
RDKit::ReactionPickler::versionPatch
static const std::int32_t versionPatch
mark the pickle version
Definition: ReactionPickler.h:45
RDKit::ReactionPickler::ENDAGENTS
@ ENDAGENTS
Definition: ReactionPickler.h:58
export.h