Chemical Data Processing Library C++ API - Version 1.1.1
Public Member Functions | Friends | List of all members
CDPL::Chem::JMEMoleculeReader Class Reference

A reader for molecule data in the native I/O format of the JME Molecular Editor [JME] java applet. More...

#include <JMEMoleculeReader.hpp>

+ Inheritance diagram for CDPL::Chem::JMEMoleculeReader:

Public Member Functions

 JMEMoleculeReader (std::istream &is)
 Constructs a JMEMoleculeReader instance that will read the molecule data from the input stream is. More...
 
 ~JMEMoleculeReader ()
 Destructor. More...
 
- Public Member Functions inherited from CDPL::Util::StreamDataReader< Molecule, JMEMoleculeReader >
Base::DataReader< Molecule > & read (Molecule &obj, bool overwrite=true)
 Reads the data record at the current record index and stores the read data in obj. More...
 
Base::DataReader< Molecule > & read (std::size_t idx, Molecule &obj, bool overwrite=true)
 Reads the data record at index idx and stores the read data in obj. More...
 
Base::DataReader< Molecule > & skip ()
 Skips the data record at the current record index. More...
 
bool hasMoreData ()
 Tells if there are any data records left to read. More...
 
std::size_t getRecordIndex () const
 
void setRecordIndex (std::size_t idx)
 Sets the index of the current data record to idx. More...
 
std::size_t getNumRecords ()
 Returns the total number of available data records. More...
 
 operator const void * () const
 
bool operator! () const
 
- Public Member Functions inherited from CDPL::Base::DataReader< Molecule >
virtual DataReaderread (DataType &obj, bool overwrite=true)=0
 Reads the data record at the current record index and stores the read data in obj. More...
 
virtual DataReaderread (std::size_t idx, DataType &obj, bool overwrite=true)=0
 Reads the data record at index idx and stores the read data in obj. More...
 
virtual void close ()
 Performs a reader specific shutdown operation (if required). More...
 
- Public Member Functions inherited from CDPL::Base::DataIOBase
std::size_t registerIOCallback (const IOCallbackFunction &func)
 Registers an I/O callback target function. More...
 
void unregisterIOCallback (std::size_t id)
 Unregisters the I/O callback function specified by id. More...
 
void invokeIOCallbacks (double progress) const
 Invokes all registered I/O callback functions with the argument *this. More...
 
void clearIOCallbacks ()
 Clears all registered I/O callback functions. More...
 
- Public Member Functions inherited from CDPL::Base::ControlParameterContainer
std::size_t getNumParameters () const
 Returns the number of container entries. More...
 
template<typename T >
void setParameter (const LookupKey &key, T &&val)
 Sets the value of the control-parameter specified by key to val. More...
 
const AnygetParameter (const LookupKey &key, bool throw_=false, bool local=false) const
 Returns the value of the control-parameter specified by key. More...
 
template<typename T >
const T & getParameter (const LookupKey &key, bool local=false) const
 Returns the value of the control-parameter specified by key as a const reference to an object of type T. More...
 
template<typename T >
const T & getParameterOrDefault (const LookupKey &key, const T &def_val, bool local=false) const
 Returns the value of the control-parameter specified by key as a const reference to an object of type T, or the default value def_val if a stored value does not exist. More...
 
bool removeParameter (const LookupKey &key)
 Removes the entry for the control-parameter specified by key. More...
 
void clearParameters ()
 Erases all container entries. More...
 
bool isParameterSet (const LookupKey &key, bool local=false) const
 Tells whether or not a value has been assigned to the control-parameter specified by key. More...
 
void addParameters (const ControlParameterContainer &cntnr)
 Adds the control-parameter value entries in the ControlParameterContainer instance cntnr. More...
 
void copyParameters (const ControlParameterContainer &cntnr)
 Replaces the current set of properties by a copy of the entries in cntnr. More...
 
ConstParameterIterator getParametersBegin () const
 Returns a constant iterator pointing to the beginning of the entries. More...
 
ConstParameterIterator getParametersEnd () const
 Returns a constant iterator pointing to the end of the entries. More...
 
ConstParameterIterator begin () const
 Returns a constant iterator pointing to the beginning of the entries. More...
 
ConstParameterIterator end () const
 Returns a constant iterator pointing to the end of the entries. More...
 
void setParent (const ControlParameterContainer *cntnr)
 Sets or removes the parent control-parameter container used to resolve requests for missing entries. More...
 
const ControlParameterContainergetParent () const
 Returns a pointer to the parent control-parameter container. More...
 
std::size_t registerParameterChangedCallback (const ParameterChangedCallbackFunction &func)
 Registers a callback target function that gets invoked when the value of a control-parameter has changed. More...
 
void unregisterParameterChangedCallback (std::size_t id)
 Unregisters the callback specified by id. More...
 
std::size_t registerParameterRemovedCallback (const ParameterRemovedCallbackFunction &func)
 Registers a callback target function that gets invoked when a control-parameter entry has been removed. More...
 
void unregisterParameterRemovedCallback (std::size_t id)
 Unregisters the callback specified by id. More...
 
std::size_t registerParentChangedCallback (const ParentChangedCallbackFunction &func)
 Registers a callback target function that gets invoked when the parent container has been changed or was detached. More...
 
void unregisterParentChangedCallback (std::size_t id)
 Unregisters the callback specified by id. More...
 
const ControlParameterContainergetParameters () const
 Returns a const reference to itself. More...
 

Friends

class Util::StreamDataReader< Molecule, JMEMoleculeReader >
 

Additional Inherited Members

- Public Types inherited from CDPL::Base::DataReader< Molecule >
typedef Molecule DataType
 The type of the read data objects. More...
 
typedef std::shared_ptr< DataReaderSharedPointer
 A reference-counted smart pointer [SHPTR] for dynamically allocated DataReader instances. More...
 
- Public Types inherited from CDPL::Base::DataIOBase
typedef std::function< void(const DataIOBase &, double)> IOCallbackFunction
 A functor class used to wrap I/O callback target functions. More...
 
- Public Types inherited from CDPL::Base::ControlParameterContainer
typedef ParameterMap::value_type ParameterEntry
 A Base::LookupKey / Base::Any pair used to store the control-parameter values and associated keys. More...
 
typedef ParameterMap::const_iterator ConstParameterIterator
 A constant iterator used to iterate over the control-parameter entries. More...
 
typedef std::function< void(const LookupKey &, const Any &)> ParameterChangedCallbackFunction
 A functor class that wraps callback target functions which get invoked when the value of a control-parameter has changed. More...
 
typedef std::function< void(const LookupKey &)> ParameterRemovedCallbackFunction
 A functor class that wraps callback target functions which get invoked when a control-parameter entry has been removed. More...
 
typedef std::function< void()> ParentChangedCallbackFunction
 A functor class that wraps callback target functions which get invoked when the parent container has been changed or was detached. More...
 
- Protected Member Functions inherited from CDPL::Util::StreamDataReader< Molecule, JMEMoleculeReader >
 StreamDataReader (std::istream &is)
 Constructs a StreamDataReader instance that will read from the input stream is. More...
 
- Protected Member Functions inherited from CDPL::Base::DataReader< Molecule >
DataReaderoperator= (const DataReader &reader)
 Assignment operator. More...
 
- Protected Member Functions inherited from CDPL::Base::DataIOBase
 DataIOBase ()
 Default constructor. More...
 
 DataIOBase (const DataIOBase &io_base)
 Copy constructor. More...
 
 ~DataIOBase ()
 Destructor. More...
 
DataIOBaseoperator= (const DataIOBase &io_base)
 Assignment operator. More...
 
- Protected Member Functions inherited from CDPL::Base::ControlParameterContainer
 ControlParameterContainer ()
 Constructs an empty ControlParameterContainer instance. More...
 
 ControlParameterContainer (const ControlParameterContainer &cntnr)
 Constructs a copy of the ControlParameterContainer instance cntnr. More...
 
virtual ~ControlParameterContainer ()
 Destructor. More...
 
ControlParameterContaineroperator= (const ControlParameterContainer &cntnr)
 Assignment operator. More...
 

Detailed Description

A reader for molecule data in the native I/O format of the JME Molecular Editor [JME] java applet.

JMEMoleculeReader implements the reading of Chem::Molecule objects from a std::istream instance that provides the molecule data in the native I/O format of the JME Molecular Editor applet.

Attributes of the atoms and bonds of a read input molecule are stored as properties of allocated Chem::Atom and Chem::Bond objects. The affected properties are summarized in the tables below:

Chem::Atom Property Description Notes
Chem::AtomProperty::MATCH_CONSTRAINTS Specifies atom matching constraints Only set if constraints have been specified
Chem::AtomProperty::COORDINATES_2D Specifies the 2D position of the atom -
Chem::AtomProperty::TYPE Specifies the type of the atom (see Chem::AtomType) Only set if the atom is a query atom and the specified type is not a member of an atom list
Chem::AtomProperty::SYMBOL Specifies the atom symbol (e.g. element symbol) Only set if the atom is not a query atom, or the symbol cannot be mapped to a valid atom type and is not a member of an atom list
Chem::AtomProperty::FORMAL_CHARGE Specifies the formal charge of the atom Only set if the charge has been specified outside of an atom list
Chem::AtomProperty::REACTION_ATOM_MAPPING_ID Specifies the reactant to product atom mapping class Only set if a mapping number has been specified that is greater than zero
Chem::Bond Property Description
Chem::BondProperty::ORDER Specifies the order of the bond
Chem::BondProperty::STEREO_2D_FLAG Specifies the 2D stereo bond type (see Chem::BondStereoFlag)

Beside the editing of conventional chemical structures, the JME applet allows to some extent the specification of atom matching constraints for the definition of substructure search queries. If such constraints are encountered during the processing of an atom specification, the constraint primitives are converted to corresponding Chem::MatchConstraint objects and stored as the value of the Chem::Atom property Chem::AtomProperty::MATCH_CONSTRAINTS in a Chem::MatchConstraintList data structure.

The following table lists all of the supported JME atom matching constraints and specifies how they are represented by Chem::MatchConstraint instances (in the table <n> denotes a positive integer value and <S> the symbol of a chemical element):

Expression Primitive Description Mapped Chem::MatchConstraint object
Constraint ID Operator Value
c Aromatic carbon Chem::AtomMatchConstraint::CONSTRAINT_LIST Chem::MatchConstraint::EQUAL A pointer to a Chem::MatchConstraintList object
The sub-constraint list has the logical type Chem::MatchConstraintList::AND_LIST and contains the elements:
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::C
Chem::AtomMatchConstraint::AROMATICITY Chem::MatchConstraint::EQUAL true
n Aromatic nitrogen Chem::AtomMatchConstraint::CONSTRAINT_LIST Chem::MatchConstraint::EQUAL A pointer to a Chem::MatchConstraintList object
The sub-constraint list has the logical type Chem::MatchConstraintList::AND_LIST and contains the elements:
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::N
Chem::AtomMatchConstraint::AROMATICITY Chem::MatchConstraint::EQUAL true
o Aromatic oxygen Chem::AtomMatchConstraint::CONSTRAINT_LIST Chem::MatchConstraint::EQUAL A pointer to a Chem::MatchConstraintList object
The sub-constraint list has the logical type Chem::MatchConstraintList::AND_LIST and contains the elements:
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::O
Chem::AtomMatchConstraint::AROMATICITY Chem::MatchConstraint::EQUAL true
s Aromatic sulfur Chem::AtomMatchConstraint::CONSTRAINT_LIST Chem::MatchConstraint::EQUAL A pointer to a Chem::MatchConstraintList object
The sub-constraint list has the logical type Chem::MatchConstraintList::AND_LIST and contains the elements:
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::S
Chem::AtomMatchConstraint::AROMATICITY Chem::MatchConstraint::EQUAL true
p Aromatic phosphorus Chem::AtomMatchConstraint::CONSTRAINT_LIST Chem::MatchConstraint::EQUAL A pointer to a Chem::MatchConstraintList object
The sub-constraint list has the logical type Chem::MatchConstraintList::AND_LIST and contains the elements:
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::P
Chem::AtomMatchConstraint::AROMATICITY Chem::MatchConstraint::EQUAL true
a Any aromatic atom Chem::AtomMatchConstraint::CONSTRAINT_LIST Chem::MatchConstraint::EQUAL A pointer to a Chem::MatchConstraintList object
The sub-constraint list has the logical type Chem::MatchConstraintList::AND_LIST and contains the elements:
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::ANY
Chem::AtomMatchConstraint::AROMATICITY Chem::MatchConstraint::EQUAL true
A Any non-aromatic atom Chem::AtomMatchConstraint::CONSTRAINT_LIST Chem::MatchConstraint::EQUAL A pointer to a Chem::MatchConstraintList object
The sub-constraint list has the logical type Chem::MatchConstraintList::AND_LIST and contains the elements:
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::ANY
Chem::AtomMatchConstraint::AROMATICITY Chem::MatchConstraint::EQUAL false
<S> A non-aromatic atom of element <S> Chem::AtomMatchConstraint::CONSTRAINT_LIST Chem::MatchConstraint::EQUAL A pointer to a Chem::MatchConstraintList object
The sub-constraint list has the logical type Chem::MatchConstraintList::AND_LIST and contains the elements:
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Atom type associated with the element <S>
Chem::AtomMatchConstraint::AROMATICITY Chem::MatchConstraint::EQUAL false
#<n> An atom with atomic number <n> Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL <n>
!#6 Any atom except carbon Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::QH
* Any atom Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::ANY
R Any ring atom Chem::AtomMatchConstraint::RING_TOPOLOGY Chem::MatchConstraint::EQUAL true
!R Any non-ring atom Chem::AtomMatchConstraint::RING_TOPOLOGY Chem::MatchConstraint::EQUAL false
+<n> Positive charge Chem::AtomMatchConstraint::CHARGE Chem::MatchConstraint::EQUAL +<n>
-<n> Negative charge Chem::AtomMatchConstraint::CHARGE Chem::MatchConstraint::EQUAL -<n>
H<n> Hydrogen count Chem::AtomMatchConstraint::H_COUNT Chem::MatchConstraint::EQUAL <n>
D<n> Heavy bond count Chem::AtomMatchConstraint::HEAVY_BOND_COUNT Chem::MatchConstraint::EQUAL <n>

The error handling behaviour of a JMEMoleculeReader instance can be configured with the following control-parameter:

Control-Parameter Default Value (see Chem::ControlParameterDefault) Description
Chem::ControlParameter::STRICT_ERROR_CHECKING false Specifies whether non-fatal recoverable errors should be ignored or cause a read operation to fail
Chem::ControlParameter::COORDINATES_DIMENSION 2 Specifies the dimension of atom coordinates

Constructor & Destructor Documentation

◆ JMEMoleculeReader()

CDPL::Chem::JMEMoleculeReader::JMEMoleculeReader ( std::istream &  is)

Constructs a JMEMoleculeReader instance that will read the molecule data from the input stream is.

Parameters
isThe input stream to read from.

◆ ~JMEMoleculeReader()

CDPL::Chem::JMEMoleculeReader::~JMEMoleculeReader ( )

Destructor.

Friends And Related Function Documentation

◆ Util::StreamDataReader< Molecule, JMEMoleculeReader >


The documentation for this class was generated from the following file: