Maintain rank stability when ranking invariants (CANON). Previously unique classes were labelled as lowest - now the lowest ranks keep the lowest label. Not only is this less operations (and faster) but it is also required for some procedures (e.g. canonical tautomer generation). These changes alter the canonical SMILES order - example 'NC(O)O' is now 'OC(O)N'. Notice how the oxygen labels are now lower (even though the nitrogen and carbon were unique to begin with).
Changes to unique SMILES output order - note the tests were also updated to be easier to fix in future.
Pass the Stereocenters instance to the element creation allowing it make a decision about questionable hatch/down bonds.
Implementing a procedure to interpret the inverse style down (hatch) bonds when it is unambiguous. This follows IUPAC guidelines on structure depiction that the stereo-center may be at the fat-end of a hatch bond if the configuration is unambiguous.
More efficient suppression of hydrogen atoms. We use a different name as not break the existing behaviour (of cloning) but that method will also be updated.
Updates existing methods to call the new copyAndSuppressHydrogens method. There will likely be a few regressions as the method complains about unset hydrogen counts.
null != 0 - consider this a methane where one hydrogen is explicit, removing that hydrogen could set the h count to 1 when it should have been 4.
Zeroing hydrogen counts in other AtomContainerManipulatorTests.
Bridged hydrogens are no longer removed - this is because we can not put them back in and so we would lose information. Removing bridged hydrogens is useful though but should be done a separate normalisation step such as disconnected metals.
Merge branch 'patch/rank-stability' into master+
Merge branch 'patch/inverse-stereo-depiction' into master+
Merge branch 'patch/manipulator-hydrogen-handling' into master+
Fix potential problem with stereo-matching - the end points of the target double bond must be in the same stereo element.