# Version 2.0.1¶

## OEChem 2.0.1¶

### New features¶

• OEAtomBondSet now supports the str Python built-in function. Calling str on an OEAtomBondSet will now return a string like the following:

>>> mol = OEGraphMol()
>>> OESmilesToMol(mol, "c1ccccc1O")
True
>>> str(OEAtomBondSet(mol.GetAtoms()))
'[7] 0C 1C 2C 3C 4C 5C 6O '

• oemolistream, oemolithread, oemolostream, oemolothread now support the Python with statement. This ensures that files are automatically flushed and closed whenever falling out of the with scope. For example:

mol = # some initialized molecule
with oemolostream("file.oeb") as ofs:
OEWriteMolecule(ofs, mol)

# file.oeb is guaranteed to contain the molecule
with oemolistream("file.oeb") as ifs:
for mol in ifs.GetOEMols():
# do something with mol


### Major bug fixes¶

• OEMMFFAtomType will no longer crash whenever an unbonded sulfur with a single implicit hydrogen is encountered.

• OEAssignAromaticFlags now invokes the OEFindRingAtomsAndBonds function, when necessary. If no ring atoms are detected in the molecule, the OEAssignAromaticFlags functions returns after setting all atoms and bonds of the molecule to be non-aromatic.

• The OESubSearch class now throws a warning in the following two cases:

• If there are only explicit hydrogens in the pattern, but the target has only implicit hydrogens.
• If there are only implicit hydrogens in the pattern, but the target has only explicit hydrogens.

These warnings are necessary in order to avoid substructure match failures that are the result of mismatched hydrogen representation.

• The OEGetFileType function now returns OEFormat_UNDEFINED for file extensions that contain extra characters after the known file extension. For example, ismama used to inappropriately return OEFormat_ISM. The only exception is if the extra characters are preceded by ”.”. Therefore, the following strings are still considered valid: sdf.gz, sdf.bin, and sdf.zip.

• V3000 entries with a broken atom or bond block will no longer crash, the reader will now throw a warning and skip the molecule.

• OEMDLPerceiveBondStereo function will no longer clear wavy bonds, OEBondStereo_Wavy, since this property can not be re-perceived from other information. The MDL bond stereo can be removed by calling the new OEMDLClearBondStereo function.

• OEWriteMDLFile no longer has a subtle race condition that could lead to incorrect time stamps being written in the header. The race condition was caused by the use of the standard C library localtime function.

• OEChem::oemolithread::open will no longer crash when given an empty .csv file.

• OEReadMDLReactionQueryFile previously incorrectly required “M END” lines between reactant and product blocks. These lines are no longer required and will be ignored if they are encountered. This change allows reaction query files to be read that are generated by ChemDraw and the Accelrys Enterprise Platform.

### Minor bug fixes¶

• OEMolDatabase.GetTitle will no longer return a corrupted title for multi-molecule .mol2 files.

• OEGenerate2DCoordinates will now handle a molecule as a reaction if any of its atoms have a reaction role other than OERxnRole_None. Previously, only molecules that returned true from OEMolBase.IsRxn would be handled as reactions.

• OEChem 2.0.0, the previous release, introduced automatic 2D coordinate generation when writing to the following file formats: OEFormat_SDF, OEFormat_MDL, and OEFormat_CDX. However, coordinate generation will only occur if OEMolBase.GetDimension does not return 2 or 3, indicating that the molecule already contains coordinates. OEWriteMolecule will now throw a warning message if coordinates are detected on the molecule and OEMolBase.SetDimension was not appropriately called. Users should either call OEMolBase.SetDimension to the appropriate dimensionality of the molecule, or clear the molecule’s coordinates.

Note

.cdx files will still automatically generate 2D coordinates from 3D molecules since .cdx is a 2D molecule format only.

• OEAssignAromaticFlags used to only set atoms to non-aromatic if no ring bonds were found. Bond aromaticity will now be cleared as well if no ring atoms are found.

• OECreateMolDatabaseIdx will no longer crash whenever called inside a directory without write permissions.

• OEChem::oemolostream::seekp removed since it did not do anything.

• OESmartsLexReplace argument is now const since the function does not need to alter the vector.

• Removed unbounded stack allocations.

• The partial support for CPSS-style rxnfiles has been entirely removed as this format is documented as obsolete in the CTfile format specification.

• OEAddExplicitHydrogens no longer has the rare chance of using uninitialized memory when sprouting hydrogens in 3D.

• OEReadMDLQueryFile will now interpret ![N,O,S] as ![N,O,S,H] to be consistent with MDL matching behavior.

• OEOmegaConfTest.CompareMols, OEIsomericConfTest.CompareMols, OEAbsoluteConfTest.CompareMols will all now return true if the only difference between the bonds of the two molecules is whether the Bgn and End bonds have been swapped.

## OEBio 2.0.1¶

### Major bug fixes¶

• OESetRotamer can properly set rotamers with angles of 0.0. Previously the angle was silently left unchanged.

## OESystem 2.0.1¶

### New features¶

• OEBase.SetData now accepts Python sequences of strings for data. Note, this data can not be read or written to .oeb files.
• OEColor will now repr to a more appropriate string representation suitable for the Python interpreter as shown below.
>>> OERed
OEColor(r=255,g=0,b=0,a=255)
>>> OEGreen
OEColor(r=0,g=255,b=0,a=255)
>>> OETransparentColor
OEColor(r=255,g=255,b=255,a=0)


### Minor bug fixes¶

• Removed unbounded stack allocations.
• SetDate no longer has a subtle race condition due to the use of the standard C library localtime function.
• OE*Array classes will now throw a reasonable error message when attempting to index with a floating point number. This can occur more easily due to division change in Python 3.

### Documentation fixes¶

• Added missing documentation for the following colors:

## OEPlatform 2.0.1¶

### Major bug fixes¶

• OEGetPlatformInfo will now return Windows versions for Windows Vista through Windows 8.1.
• OEGetProcessorInfo would previously only show Pentium III for newer chips on Windows. The function will now interrogate the chip using the cpuid instruction.

### Minor bug fixes¶

• OEAddLicenseFromHttp will now accept HTTP responses with a content-type of text/html; charset=utf-8. Previously, only text/plain was accepted.

## OEGrid 1.4.6¶

### New Features¶

• OEMakeMolecularGaussianGrid now has an overload to allow a grid with existing dimensions, mid-point, and spacing to be filled. Previously, the grid size would always be recreated based upon the size of the molecule.

### Major bug fixes¶

• Better support for output of non crystallographic grids to CCP4 file. Now the CCP4 ARMS value is set to 1.0 and the CCP4 MEAN is set to 0.0 to prevent scaling and offsetting in CCP4 map visualizers. Additionally, the spacegroup is now output as 146 (H3) as opposed to the non-standard 1146 (R3) to facilitate viewing in MOE. Please note that values appearing outside of the specified unit cell will be incorrect.

### Documentation fixes¶

• Adding missing OEMTZMapType namespace to the documentation.
• OEChem release notes for 2.0.0 and 1.9.3 had the OEGrid version slightly wrong. The OEGrid version numbers have been corrected to 1.4.5 and 1.4.4 respectively.