New function OEReadRxnFile to read MDL RXN (reaction) file
New functions OEGetAtomComment and OESetAtomComment
that allow arbitrary text strings to be associated with atoms. This is currently
used to preserve/manipulate atom aliases from MDL file formats.
Changes to OEReadMDLFile and OEWriteMDLFile to read
and write atom alias information. Atom alias information is stored on
an atom by the reader using OESetAtomComment, and any such atom
comments are written to the MDL connection table on output.
New function OEInvertCenter to invert a tetrahedral center.
For chiral atoms, this function flips the molecule from one isomeric
form to the other. This function returns false if the center can’t
easily be inverted.
Query molecules, represented by an OEQMolBase can now be
read from and written to OEB binary files.
Fixed a problem with reading multi-conformer molecules from MDL SD
file format, where we wouldn’t correctly record that each conformer already
had MDL atom parity information (so we’d re-perceive it upon output which
wouldn’t preserve the original input values).
The dimension of an OEMolBase (as returned by the
OEMolBase::GetDimension method), is now read and written to
OEB binary files. Previously, all molecules in OEB were implicitly
3D (which remains the default), but we now explicitly record when
the dimension has a value other than three.
Fixed a bug in OEPerceiveChiral that failed to recognize
that double bonds in rings of size seven or greater are potentially
Fixed an obscure bug in the MDL file reader. We were doing
chirality and bond stereochemistry processing before we’d kekulized
any aromatic bonds (from MDL substructure queries) or set the implicit
hydrogen counts. This occasionally confused OEPerceiveSymmetry‘s
graph invariants and OEPerceiveChiral‘s tests for potential chiral
Corrected the high-level file writer, OEWriteMolecule, such
that when calculating MDL atom parity bits prior to writing MDL file
formats, to first extract chirality from 3D coordinates if present.
This is now consistent with similar logic prior to writing isomeric SMILES.
When writing isomeric SMILES, the OECreateSmiString function
was suppressing explicit hydrogens necessary to represent double bond
stereochemistry. These necessary stereo hydrogens are now written
Fixed some issues in the OEChem SMILES parser where there was
insufficient validity checking in the processing of external bonds.
These problems caused SMILES strings such as C&1&1,
C&1C&1 and even &=9 to crash the parser. We
now more politely generate a warning message and return false.
Several fixes and improvements to the SMARTS parser. We weren’t
correctly handling SMARTS with double digit ring closures, and we didn’t
recognize [te] as aromatic tellurium. Also fixes to cis/trans stereo
chemistry in a few corner cases.
Fixed by in a bug in reaction handling of the OELibraryGen
class that caused a segmentation fault when using a reaction to delete
Fixed a bug in OERMSD where if asked to overlay two sets
of coordinates, and the user didn’t ask for either the rotation matrix
or translation vector, and the two structures overlaid perfectly, we’d
generate a segmentation fault (we were writing a unit matrix to a NULL
Fixed a bug in SweepConfs
where we’d fail to
renumber conformer indices, if there were no deleted conformers.
Minor tweak to OEGetHybridization for uncharged sulfur,
selenium, tellurium and polonium. These are now always considered sp3
unless they’re aromatic, in which case they are sp2.
A minor tweak to OEGetFileType to perform case-insensitive
string comparison, allows this code to recognize file format extensions
independent of capitalization, i.e..mol2 and .MOL2.
Improvements to the heuristics used by OEMDLPerceiveBondStereo
for placing wedge and hash bonds on a connection table. These include
avoiding placing the wedge/hash on the fusion bond for chiral bridgehead
atoms, and arbitrarily choosing amongst the best bonds when no unique
best is found (previously a tie caused the algorithm to choose randomly
between all neighboring bonds).
Tweak to OEDetermineConnectivity such that atoms that are
marked as PDB residues CL, BR and IOD (i.e. chloride,
bromide and iodide ions) are treated like solvent, and are never bonded
to other residues (in this case other atoms).
Routine maintenance improvements to OEChem‘s PDB file format readers
to handle files recently released by RCSB. For example, residue GCP
in pdb1rca.ent, residue 783 in pdb1o2t, and similar fixes in PDB codes
1ta2, 1ta6, 1o3m, 1o3n and 1o3o.
Improvement to OEReadMacroModelFile to read the atomic partial
charge out of the charge-charge interaction column and fixed a bug in
extracting the atom name field.
Enhancement to the OEWriteMacroModelFile function to write
out the atomic partial charge to both the charge-charge and charge-multipole
fields of the MacroModel connection table. Previously, we only stored the
partial charge in the charge-charge field, and wrote 0.0 to the
A new two argument variant of OEGeom3DAngle allows the
calculation of the angle between two vectors. This is an efficient
form of the three argument variant, where the middle point is defined
to be the origin.