* removed string_view in favor of string for catch test
* add parsing and generation of atropisomers when coords not present
* changed string_view to string in catch test
* more docs
* reformulation of the docs
* make an error message a little bit more useful
* small optimization
clang-format
* add `BondWedgingParameters` to new function
* changes for CIP test errors
* Updated internal doc to match what it does
* changes per PR review
* removed cout statements in tests
---------
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* removed string_view in favor of string for catch test
* add parsing and generation of atropisomers when coords not present
* changed string_view to string in catch test
* more docs
* reformulation of the docs
* make an error message a little bit more useful
* small optimization
clang-format
* add `BondWedgingParameters` to new function
---------
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* atropisomer handling added
* fixed non-used variables, linking directives
* BOOST LIB start/stop fixes, linking fix
* Fixes for RDKIT CI errors
* minimalLib fix
* changed vector<enum> for java builds
* check for extra chars in CIP labeling
* removed wrong deprecated message
* fix ostrstream output error?
* restored _ChiralAtomRank to lowercase first letter
* changes for merged master
* Fixed catch label for new Catch package
* update expected psql results
* get swig wrappers building
* restore MolFileStereochem to FileParsers
* fix java wrapper for reapplyMolBlockWedging
* some suggestions
* move a couple functions out of Bond
* Merge branch 'master' into pr/atropisomers2
* merged master
* Renamed setStereoanyFromSquiggleBond
* atropisomers in cdxml, rationalize atrop wedging, stereoGroups in drawMol
* fix for CI build
* attempt to fix java build in CI
* attempt to fix java build in CI #2
* New routine to remove non-explicit 3D-geneated chirality
* changed to use pair for atrop atoms and related bonds
* Changes as per PR reviews
* PR review respnses
* PR review reponse - more
* Fix merge from master
* fixing java ci after merge
* Updated the help doc for atripisomers
* update the atropisomer docs
* improve the images
* add the source CXSMILES
---------
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* Revert "Revert "Removed some code duplication between Depictor.cpp and common.h (#6368)" (#6797)"
This reverts commit 824616c5b9.
* security blanket: add back tests of the current usage pattern
* - fixed bug in get_sss_json() (#6806)
- added unit test for the above
Co-authored-by: ptosco <paolo.tosco@novartis.com>
---------
Co-authored-by: Paolo Tosco <paolo.tosco.mail@gmail.com>
Co-authored-by: ptosco <paolo.tosco@novartis.com>
* - implemented alignOnly mode into RDDepict::generateDepictionMatching2DStructure()
- the allowRGroups option now also supports potentially missing R groups (i.e., R groups that do not match any atom, such as those connected to generic aromatic atoms)
- added the adjustMolBlockWedging parameter (which defaults to true) to invert/clear molblock wedging information as appropriate
- added unit tests for the above new features
- added RDDepict::generateDepictionMatching2DStructure() overloads taking RDDepict::ConstrainedDepictionParams parameter for convenience
- removed some redundant RDDepict:: namespace specifications
* Fix chirality handling when the chiral atom is the first one in a SMARTS (#6730)
* Set _SmilesStart when parsing SMARTS.
* SmartsWriter should also invert first atoms, like SMILES.
* Update test cases now these SMILES match themselves as SMARTS.
* rerun bison
* cleanup a possible repeated define
* When an atom moves from the first to second position winding should flip in SMARTS (i.e. same as SMILES).
---------
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* Some small cleanups from the UGM Hackathon (#6744)
* move definition of a couple global constants from a .h to a .cpp
* careful removal of some redundant atom PRECONDITIONS
* careful remove of some redundant ROMol PRECONDITIONS
a bit of additional cleanup
* optimization masquerading as modernization
* some more tidying
* a bit more atom cleanup
* change in response to review
* Fixes#6756 (#6780)
* update release notes and cmakelists for beta (#6788)
* move problematic functions to Chirality namespace
* - implemented alignOnly mode into RDDepict::generateDepictionMatching2DStructure()
- the allowRGroups option now also supports potentially missing R groups (i.e., R groups that do not match any atom, such as those connected to generic aromatic atoms)
- added the adjustMolBlockWedging parameter (which defaults to true) to invert/clear molblock wedging information as appropriate
- added unit tests for the above new features
- added RDDepict::generateDepictionMatching2DStructure() overloads taking RDDepict::ConstrainedDepictionParams parameter for convenience
- removed some redundant RDDepict:: namespace specifications
* move problematic functions to Chirality namespace
* added missing dependency
* let's check what is going wrong
* CoordGen tests should not run if CoordGen support is not available in the build
---------
Co-authored-by: Tosco, Paolo <paolo.tosco@novartis.com>
Co-authored-by: John Mayfield <john@nextmovesoftware.com>
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* handle the cases when the flag is set
* add python wrapper
* Fixes#6241
update and finish?
* set the chiral flag to 0 in the mol file parsers
* adjust to the chiral flag always being present
* add note
* refactoring: move a bunch of bond-wedging code into WedgeBonds.cpp and
into the Chirality namespace (since it's not just connected to mol files)
* remove a compiler warning
* more cleanup
* backup
* basics work; needs testing and edge cases
* backup
* progress
* better
* make sure the new wedges are also inverted
* docs
* favor lower degree atoms, even if the angle isn't ideal
* fix clang compile problems (hopefully)
* - fix indentation
- fix regex check (which currently always fails)
* wip
* - added clearMolBlockWedgingInfo()
- added invertMolBlockWedgingInfo()
- MinimalLib::generate_aligned_coords() now inverts stereochemistry if a rigid-body alignment transformation caused chiality inversion
- MinimalLib::generate_aligned_coords() now clears stereochemistry if coordinates changed
- added JSMol::clear_prop() to the already existing JSMol::get_prop() and JSMol::set_prop()
- renamed commonchem to rdkitjson in JS unit test
- added relevant unit tests
* fixed mistake in logic
* - added add_hs_in_place() and remove_hs_in_place() to the JS MinmalLib
- added relevant tests
* - removed check for existence of a property ahead of clearing it as it is not necessary; updated the clearProp docstring to reflect this
- updated the MolFileStereochem.h docstrings based on review comments and fixed a typo
- fixed two (legitimate) compiler warnings as get_molblock() and get_v3kmolblock() should return nullptr and not a pointer to an empty string; added tests for this as there was none
- in MinimalLib/common.h, moved the check of whether a molecule has undergone a flip around the Z axis to a function in the anonymous namespace
- in MinimalLib/common.h, added logic to preserve original wedging (and eventually invert it) also when alignOnly is set to false, in case the wedging is all within the constrained scaffold
- added thourough testing of the wedging logic on both CFFI and JS sides
* - added equality operator to CXXAtomIter and CXXBondIter classes such that they can used with implicit loop STL algorithms
- added relevant unit tests
* fix Windows build
Co-authored-by: Tosco, Paolo <paolo.tosco@novartis.com>
* initial support for wiggly and wedged bonds in cxsmiles
add CX_ALL_BUT_COORDS convenience option to CXSMILES writer
* move ClearSingleBondDirFlags to MolOps
* do a better job of handling the wiggly bonds
* mark 3D conformers from CXSMILES
* remove some extraneous printing
* test wD as well
* remove non-applicable test
* basic tests (not passing) for parsing t/c/ctu
* remove test for unimplemented feature
* changes in response to review
* changes in response to review
check for attempt to set the wedging more than once
testing for invalid w blocks
fix a bad comment
* Started on ACS 1996 drawing mode.
Significant change (not by itself, sadly) is that MolDrawOptions::lineWidth has changed from int to double to allow for ACS requirement of 0.6px bond widths.
* Wavy lines and dashed wedges.
* Better dashed wedges.
* Rounder wavy bonds, same as SVG.
* Added FreeSans font for ACS1996 mode.
* Add help functions to write enum classes to ostream.
* Dashed wedge separation now 2.5px between line edges rather than line middles. Therefore wider gap between lines.
* Increase offset for wavy bond. Get classes for atoms and bonds in wavy bond correct.
* For SMILES input, option to force wavy and crossed bonds for unspecified stereochem.
* Tidy debugging.
* Extra space round atom labels.
* Extra space between chars in freetype string.
* Reformats.
* Change double bond offset.
* Improve ring double bonds.
* Simple non-ring double bonds all working.
* Tidy.
* All double bonds seem good.
* Remove redundant function.
Move calcTripleBondLines into DrawMol for consistency with calcDoubleBondLines.
Use doubleBondOffset for wavy lines.
* Correct spacing between FT chars.
* Tidying.
* Use MolBlock wedging if there is any. Needs to be made an option.
* If dashed wedge thick end has bonds of it, stop one dash short.
* Adjust solid wedge ends to line with attached bonds.
* Width of wedge ends now based on double bond separation.
* Change catch_tests.cpp
* Rounder waves in wavy lines.
* Dashed wedges same width even if one dash less..
* Embedded Roboto-Regular font in code.
* Fix docstrings.
* doubleBondTerminal swapped ends.
Deal with O2 - 2 terminal atoms of degree 1.
* Fix terminal double bonds.
* Slightly fatter truncated wedge bonds.
* Fix crash on complicated double bonds.
* Control more assert tests with DO_TEST_ASSERT.
* Fix 2 colour solid wedges.
Fix slanted wedge for morphine (test1_5).
* Change definittion of multipleBondOffset to fraction of mean bond length.
* Don't slant end of solid wedge to atom symbol.
* Fix wiggle separation.
* Fix 2-colour terminal double bonds.
* Fix colours on triple bonds.
* Don't attempt to draw non-existent points in triangle..
* Symmetric bond for P=O and like.
* Fix query bonds.
* Reformatting.
* Tidy up use of font.
* Add FreeSans font and license to $RDBASE/Data/Fonts.
* Draw unspecified stereo as unknown.
* Add check_file_hash.
* Tidying.
* Tidying.
* Start Python wrappers.
* Fix solid wedges for 3-connected atoms.
* Docstrings.
* Tidying.
* Alter width of bond highlights in ACS 1996 mode.
* Expose setACS1996Options and mean BondLength in Python.
* Expose drawMolACS1996Cairo in Python.
Docstrings.
* Extra padding between legend and picture in flexicanvas.
* Python tests.
* Tidy catch tests.
* Tidying.
* Fix catch tests.
* Fix no Freetype tests.
* Draw solid wedge more sensibly..
* Fix bond end at solid wedge.
* Tidy.
* Fix Python Cairo build issues.
* Fix wedge end shape for terminal double bonds.
* Hide the joins at the bond ends.
* Fix gcc pickiness.
* Extra test for no atom labels.
* Change where it looks for FreeSans.ttf for ACS1996 drawings.
* Same number of waves for wavy bonds in SVG and Cairo.
* Same number of waves for wavy bonds in SVG and Cairo.
* rename unspecifiedStereoIsUnknown to markUnspecifiedStereoAsUnknown and move to MolFileStereochem.h
* refactor use of iterators
* py docs update
* undo a bunch of bad formatting changes
* remove FreeSans
* get windows builds working
* Fix problem with Windows build.
* Changes in response to review.
* Align description of unspecifiedStereoIsUnknown in C++ to match Python.
* Still working on file open modes.
* Took out extraneous functions for drawing in ACS1996 mode, including the one that was breaking the windows build.
* Add RDKIT_MOLDRAW2D_EXPORT.
* Fix expected test results.
* Clarified warning.
* RDKIT_MOLDRAW2D_EXPORT missing.
* Windows!
* Update Code/GraphMol/MolDraw2D/rxn_test1.cpp
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* Add draw option to force use of wedge information in MolBlock if present.
* Add check_file_hash.
* Move reapplyMolBlockWedging to MolFileStereochem and test case.
Expose to Python as ReapplyMolBlockWedging.
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
* prefer to not wedge bonds to double bonds
* addWavyBondsForStereoAny() works
* add option to clear bond stereo
* support wavy bonds in prepareMolForDrawing()
get rid of MolDraw2D/catch_main.cpp
* add a drawing example
* name the bug correctly
* add that new functionality to the python wrapper
* remove some debugging cruft
* run clang-tidy with modernize-use-default-member-init
* results from modernize-use-emplace
* one uniform initialization per line
otherwise SWIG is unhappy
Co-authored-by: Brian Kelley <fustigator@gmail.com>
* run clang-tidy with readability-braces-around-statements
clang-format the results
clean up all the parts that clang-tidy-8 broke
* fix problem on windows
* Move DetectAtomStereoChemistry to Molops::assignChiralTypesFromBondDirs
DetectAtomStereoChemistry in MolFileStereochem is more broadly
useful. Additionally, it was not named very clearly for what
it was actually doing.
* Wraps assignChiralTypesFromBondDirs for use in Python
Makes assignChiralTypesFromBondDirs available in Python
and adds a test demonstrating that availability.
* Removes ATOM/BOND_SPTR in boost::graph in favor of raw pointers
* Actually delete atoms and bonds...
* RWMol::clear now calls destroy to handle atom/bond deletion
* Changes broken Atom lookup for windows/gcc
* Adds tests for running with valgrind
* Adds test designed for valgrind and molecule deletions
* Removes RNG, actually tests bond deletions
* update swig wrappers
* deal with most recent changes on the main branch
* move detectBondStereoChemistry() into MolOps
* switch more code over to using the new function
* add an addStereoChemistryFrom3D() function. Needs testing still.
* add some tests
* cleanups and rename
* add a SmilesParserParams object to prepare for this
* add a SmilesParserParams object to prepare for this
* add tests for the SmilesParseParmas
* support name parsing, should it be the default?
* rename CXNSmiles to CXSmiles;
add a spirit parser for CXSmiles coordinate that is at least syntax correct
* abandon boost::spirit for now; crude atom token parser
* support params in smiles parser (not tested, may not build)
* can read coords and atom labels along with mol names; crude, but works
* read coordinate bonds
* remove some compiler warnings with VS2015
* remove a bunch of compiler warnings on windows
* remove more warnings on windows
* remove more warnings on windows
* backup commit: first pass at parsing query features
* radical spec parsing
* handle attachment points using atom mapping
* switch to a named property for atom labels
* fix handling of the "A" atom query
* add functions to construct A and Q queries (needs more work)
* fix a problem created while cleaning up warnings earlier
* add some additional convenience functions for making generic atoms.
Still need M and to recognize these while writing CXSMILES
* add M queries; update some tests
* fix a linux compile problem
* get the cxsmiles stuff working in python; basic testing
* support "M" in CXSMILES
* Fixes#982
also changes bond-wedging algorithm to favor lighter non-ring bonds
* prefer wedging bonds to lower-degree atoms
* Fixes#983
* small fixes
- Fix a problem where a chiral atom is selected to draw a wedge to instead of a ring atom
- Fix a problem where two calls to PrepareMolForDrawing() led to two wedged bonds from an atom.
* Fixes#985
This isn't the most satisfying solution (the wedged bonds are sometimes a bit too large), but it gives reasonable results on the test cases I've tried.
o rdkit gains a RDKit::common_properties namespace that contains common string value properties
o Dict.h and below gain getPropIfPresent that attempts to retrieve a property and returns
true/false on success or failure. This is used to optimize access.
o rdkit learns how to pass property keys by reference, not value.
A new namespace has been added to RDKit, common_properties
that contains the std::string values for commonly used
properties. This helps to avoid typos in string values
but also avoids a creation of std::strings from character
values. All accessors (has/get/clear and getPropIfPresent) now pass
the key by reference.
Additionally, getPropIfPresent removes the double lookup
of hasProp/getProp which can be a significant speedup
in the smiles and smarts parsers (10-20%)