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

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

#include <JMEMolecularGraphWriter.hpp>

+ Inheritance diagram for CDPL::Chem::JMEMolecularGraphWriter:

Public Member Functions

 JMEMolecularGraphWriter (std::ostream &os)
 Constructs a JMEMolecularGraphWriter instance that will write data of molecular graphs to the output stream os. More...
 
 JMEMolecularGraphWriter (const JMEMolecularGraphWriter &)=delete
 
 ~JMEMolecularGraphWriter ()
 Destructor. More...
 
JMEMolecularGraphWriteroperator= (const JMEMolecularGraphWriter &)=delete
 
Base::DataWriter< MolecularGraph > & write (const MolecularGraph &molgraph)
 Writes data of the molecular graph molgraph to the output stream specified in the constructor. More...
 
 operator const void * () const
 Returns a pointer whose value indicates the error state of the writer. More...
 
bool operator! () const
 Tells whether the writer is in a bad state. More...
 
- Public Member Functions inherited from CDPL::Base::DataWriter< MolecularGraph >
virtual DataWriterwrite (const DataType &obj)=0
 Writes the data object obj. More...
 
virtual void close ()
 Writes format dependent data (if required) to mark the end of output. 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...
 

Additional Inherited Members

- Public Types inherited from CDPL::Base::DataWriter< MolecularGraph >
typedef std::shared_ptr< DataWriterSharedPointer
 A reference-counted smart pointer [SHPTR] for dynamically allocated DataWriter instances. More...
 
typedef MolecularGraph DataType
 The type of the written data objects. 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::Base::DataWriter< MolecularGraph >
DataWriteroperator= (const DataWriter &writer)
 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 writer for molecular graph data in the native I/O format of the JME Molecular Editor [JME] java applet.

JMEMolecularGraphWriter implements the output of Chem::MolecularGraph objects in the native I/O format used by the JME Molecular Editor applet. The output data are written by means of a std::ostream object that was provided to the JMEMolecularGraphWriter constructor.

Atom and bond attributes that get written for an output molecular graph are defined by the following Chem::Atom, Chem::Bond and Chem::BondContainer properties:

Chem::Atom Property Description Notes
Chem::AtomProperty::MATCH_CONSTRAINTS Specifies atom matching constraints Only written if the constraints are user-defined and can be expressed by corresponding JME constraints
Chem::AtomProperty::COORDINATES_2D Specifies the 2D position of the atom -
Chem::AtomProperty::TYPE Specifies the type of the atom (see Chem::AtomType) Only written if the atom is a query atom, a corresponding matching constraint has been specified and the type is supported by the JME format.
Chem::AtomProperty::SYMBOL Specifies the atom symbol (e.g. element symbol) Only written if the atom is not a query atom
Chem::AtomProperty::FORMAL_CHARGE Specifies the fromal charge of the atom Only written if the atom is not a query atom and the specified charge is different from zero
Chem::AtomProperty::RING_FLAG Tells whether the atom is a member of a ring Only written if the atom is a query atom and a corresponding matching constraint has been specified
Chem::AtomProperty::AROMATICITY_FLAG Tells whether the atom is a member of an aromatic ring Only written if the atom is a query atom and a corresponding matching constraint has been specified
Chem::AtomProperty::REACTION_ATOM_MAPPING_ID Specifies the reactant to product atom mapping class Only written if the specified mapping number is greater than zero
Chem::Bond Property Description Notes
Chem::BondProperty::ORDER Specifies the order of the bond -
Chem::BondProperty::STEREO_2D_FLAG Specifies the 2D stereo bond type (see Chem::BondStereoFlag) Either stereo bonds are not supported by the JME format and are written as plain single bonds
Chem::BondContainer Property Description Notes

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 an atom of the output structure specifies any constraints by a Chem::MatchConstraintList data structure that has been assigned to the property Chem::AtomProperty::MATCH_CONSTRAINTS, an attempt is made to convert the contained Chem::MatchConstraint objects to equivalent JME query expression primitives.

Different types of constraints specified by Chem::MatchConstraint instances and the corresponding JME expression primitives are listed in the table below (<n> denotes a positive integer value and <S> the symbol of a chemical element; * the value is either provided by the Chem::MatchConstraint instance (see Chem::MatchConstraint::getValue()) or, if no value has been set, by the property specified in parentheses):

Chem::MatchConstraint object Written Expression Primitive Description
Constraint ID Operator Value*
Chem::AtomMatchConstraint::CONSTRAINT_LIST Chem::MatchConstraint::EQUAL A pointer to a Chem::MatchConstraintList object c Aromatic carbon
The sub-constraint list must have the logical type Chem::MatchConstraintList::AND_LIST and has to contain the elements:
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::C
(Chem::AtomProperty::TYPE)
Chem::AtomMatchConstraint::AROMATICITY Chem::MatchConstraint::EQUAL true
(Chem::AtomProperty::AROMATICITY_FLAG)
Chem::MatchConstraint::NOT_EQUAL false
(Chem::AtomProperty::AROMATICITY_FLAG)
Chem::AtomMatchConstraint::CONSTRAINT_LIST Chem::MatchConstraint::EQUAL A pointer to a Chem::MatchConstraintList object n Aromatic nitrogen
The sub-constraint list must have the logical type Chem::MatchConstraintList::AND_LIST and has to contain the elements:
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::N
(Chem::AtomProperty::TYPE)
Chem::AtomMatchConstraint::AROMATICITY Chem::MatchConstraint::EQUAL true
(Chem::AtomProperty::AROMATICITY_FLAG)
Chem::MatchConstraint::NOT_EQUAL false
(Chem::AtomProperty::AROMATICITY_FLAG)
Chem::AtomMatchConstraint::CONSTRAINT_LIST Chem::MatchConstraint::EQUAL A pointer to a Chem::MatchConstraintList object o
Aromatic oxygen
The sub-constraint list must have the logical type Chem::MatchConstraintList::AND_LIST and has to contain the elements:
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::O
(Chem::AtomProperty::TYPE)
Chem::AtomMatchConstraint::AROMATICITY Chem::MatchConstraint::EQUAL true
(Chem::AtomProperty::AROMATICITY_FLAG)
Chem::MatchConstraint::NOT_EQUAL false
(Chem::AtomProperty::AROMATICITY_FLAG)
Chem::AtomMatchConstraint::CONSTRAINT_LIST Chem::MatchConstraint::EQUAL A pointer to a Chem::MatchConstraintList object s Aromatic sulfur
The sub-constraint list must have the logical type Chem::MatchConstraintList::AND_LIST and has to contain the elements:
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::S
(Chem::AtomProperty::TYPE)
Chem::AtomMatchConstraint::AROMATICITY Chem::MatchConstraint::EQUAL true
(Chem::AtomProperty::AROMATICITY_FLAG)
Chem::MatchConstraint::NOT_EQUAL false
(Chem::AtomProperty::AROMATICITY_FLAG)
Chem::AtomMatchConstraint::CONSTRAINT_LIST Chem::MatchConstraint::EQUAL A pointer to a Chem::MatchConstraintList object p Aromatic phosphorus
The sub-constraint list must have the logical type Chem::MatchConstraintList::AND_LIST and has to contain the elements:
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::P
(Chem::AtomProperty::TYPE)
Chem::AtomMatchConstraint::AROMATICITY Chem::MatchConstraint::EQUAL true
(Chem::AtomProperty::AROMATICITY_FLAG)
Chem::MatchConstraint::NOT_EQUAL false
(Chem::AtomProperty::AROMATICITY_FLAG)
Chem::AtomMatchConstraint::CONSTRAINT_LIST Chem::MatchConstraint::EQUAL A pointer to a Chem::MatchConstraintList object a Any aromatic atom
The sub-constraint list must have the logical type Chem::MatchConstraintList::AND_LIST and has to contain the elements:
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::ANY
(Chem::AtomProperty::TYPE)
Chem::AtomMatchConstraint::AROMATICITY Chem::MatchConstraint::EQUAL true
(Chem::AtomProperty::AROMATICITY_FLAG)
Chem::MatchConstraint::NOT_EQUAL false
(Chem::AtomProperty::AROMATICITY_FLAG)
Chem::AtomMatchConstraint::CONSTRAINT_LIST Chem::MatchConstraint::EQUAL A pointer to a Chem::MatchConstraintList object A Any non-aromatic atom
The sub-constraint list must have the logical type Chem::MatchConstraintList::AND_LIST and has to contain the elements:
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::ANY
(Chem::AtomProperty::TYPE)
Chem::AtomMatchConstraint::AROMATICITY Chem::MatchConstraint::EQUAL false
(Chem::AtomProperty::AROMATICITY_FLAG)
Chem::MatchConstraint::NOT_EQUAL true
(Chem::AtomProperty::AROMATICITY_FLAG)
Chem::AtomMatchConstraint::CONSTRAINT_LIST Chem::MatchConstraint::EQUAL A pointer to a Chem::MatchConstraintList object <S> A non-aromatic atom of element <S>
The sub-constraint list must have the logical type Chem::MatchConstraintList::AND_LIST and has to contain the elements:
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Atom type associated with the element <S>
(Chem::AtomProperty::TYPE)
Chem::AtomMatchConstraint::AROMATICITY Chem::MatchConstraint::EQUAL false
(Chem::AtomProperty::AROMATICITY_FLAG)
Chem::MatchConstraint::NOT_EQUAL true
(Chem::AtomProperty::AROMATICITY_FLAG)
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL <n>
(Chem::AtomProperty::TYPE)
#<n> An atom with atomic number <n>
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::QH
(Chem::AtomProperty::TYPE)
!#6 Any atom except carbon
Chem::AtomMatchConstraint::TYPE Chem::MatchConstraint::EQUAL Chem::AtomType::ANY
(Chem::AtomProperty::TYPE)
* Any atom
Chem::AtomMatchConstraint::RING_TOPOLOGY Chem::MatchConstraint::EQUAL true
(Chem::AtomProperty::RING_FLAG)
R Any ring atom
Chem::MatchConstraint::NOT_EQUAL false
(Chem::AtomProperty::RING_FLAG)
Chem::AtomMatchConstraint::RING_TOPOLOGY Chem::MatchConstraint::EQUAL false
(Chem::AtomProperty::RING_FLAG)
!R Any non-ring atom
Chem::MatchConstraint::NOT_EQUAL true
(Chem::AtomProperty::RING_FLAG)
Chem::AtomMatchConstraint::H_COUNT Chem::MatchConstraint::EQUAL <n>
(Chem::getAtomCount(const Chem::Atom&, const Chem::MolecularGraph&, unsigned int))
H<n> Hydrogen count
Chem::AtomMatchConstraint::HEAVY_BOND_COUNT Chem::MatchConstraint::EQUAL <n>
(Chem::getHeavyBondCount(const Chem::Atom&, const Chem::MolecularGraph&))
D<n> Heavy bond count

JMEMolecularGraphWriter can be configured with the following control-parameters:

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 write operation to fail
Chem::ControlParameter::COORDINATES_DIMENSION 2 Specifies the dimension of atom coordinates
Chem::ControlParameter::RECORD_SEPARATOR "\n" Specifies the data record separator
Chem::ControlParameter::BOND_MEMBER_SWAP_STEREO_FIX true Specifies whether reverse stereo bonds shall be converted to regular stereo bonds by swapping bond start and end atoms
Chem::ControlParameter::JME_SEPARATE_COMPONENTS true Specifies whether the components of a moleculargraph shall be written separately or combined as a single JME component

Constructor & Destructor Documentation

◆ JMEMolecularGraphWriter() [1/2]

CDPL::Chem::JMEMolecularGraphWriter::JMEMolecularGraphWriter ( std::ostream &  os)

Constructs a JMEMolecularGraphWriter instance that will write data of molecular graphs to the output stream os.

Parameters
osThe output stream to write to.

◆ JMEMolecularGraphWriter() [2/2]

CDPL::Chem::JMEMolecularGraphWriter::JMEMolecularGraphWriter ( const JMEMolecularGraphWriter )
delete

◆ ~JMEMolecularGraphWriter()

CDPL::Chem::JMEMolecularGraphWriter::~JMEMolecularGraphWriter ( )

Destructor.

Member Function Documentation

◆ operator=()

JMEMolecularGraphWriter& CDPL::Chem::JMEMolecularGraphWriter::operator= ( const JMEMolecularGraphWriter )
delete

◆ write()

Base::DataWriter<MolecularGraph>& CDPL::Chem::JMEMolecularGraphWriter::write ( const MolecularGraph molgraph)

Writes data of the molecular graph molgraph to the output stream specified in the constructor.

Parameters
molgraphThe molecular graph to write.
Returns
A reference to itself.

◆ operator const void *()

CDPL::Chem::JMEMolecularGraphWriter::operator const void * ( ) const
virtual

Returns a pointer whose value indicates the error state of the writer.

The operator allows to write expressions like:

if (writer) { ...
if (writer.write(...)) { ...
Returns
A non-null pointer if the writer is in a good state, a null pointer otherwise.
Note
The returned pointer is not meant to be dereferenced, it is just a state indicator.
See also
operator!()

Implements CDPL::Base::DataWriter< MolecularGraph >.

◆ operator!()

bool CDPL::Chem::JMEMolecularGraphWriter::operator! ( ) const
virtual

Tells whether the writer is in a bad state.

The operator allows to write expressions like:

if (!writer) { ...
if (!writer.write(...)) { ...
Returns
false if the writer is in a good state, and true otherwise.
See also
operator const void*()

Implements CDPL::Base::DataWriter< MolecularGraph >.


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