* include info about query rendering
* Fixes#3897
* update images
* better documentation for the conformer generator
* conformer not conformation
* switch to using context managers and make sure we add hs before generating conformers
* yay more docs
* Finishing #3917
* more documentation of backwards-incompatible changes
* RGD modifications for any atom and index labels
* Continued development
* All tests working
* Added comment
* CR changes suggested by PTosco
* Fix catch_rgd for autocrlf
* Core dummy matches on output. RGroups on heavy atom. Dummy atoms User rgroups only when they are degree 1.
* Start work on test fixes
* testRGroupDecomp test working
* CPP and Python tests working
* Removed options for matching core query atoms on sidechains
* Windows build fix
* R groups off ring. User group matches single heavy substituent. Remove extraneous hydrogens
* Updated fingerprint variance score and tie selection
* Refactor fingerprint variance score functions to class
* Removed fingerprint distance score
* Boost::trim fix
* Updated RGD test notebook
* Fixed AddHs.cpp
* - fixes the kekulization issue
- avoids that empty R-group labels are included in cores
- makes sure that SMILES cores are always canonical
- adds a few missing const declarations and avoids unintentional copying
* Support for allowNonTerminalRGroups parameter. Remove R groups that contain H or Nothing. Ignore R group labels on non-dummy atoms
* Fixed tests for Paolo's changes. Rebuilt test notebook. Increased weighting of rgroup penalty in fingerprint variance score
* remove some debug output
Co-authored-by: Brian Kelley <fustigator@gmail.com>
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* - generateDepictionMatching2DStructure can be used with referencePattern smaller than reference
to only use part of a scaffold
- adds generateDepictionMatching2DStructure overload to pass a matchVect instead of doing a substructure match
- adds allowRGroups parameter to enable using a scaffold bearing R groups as reference
* changes in response to review
* added comments
* fixes failing doctest
* - reverted change committed accidentally
- fixed get_sss_json for the case where R groups are not included in the match
- added tests for the return value of generate_aligned_coords
* Documented the value returned by GenerateDepictionMatching2DStructure (Python)
* changes in response to review
* - changes in response to review
- fixed sortMatchesByDegreeOfCoreSubstitution that was not working
- added Python wrappers for sortMatchesByDegreeOfCoreSubstitution and getMostSubstitutedCoreMatch
- added C++ and Pyhon unit tests for the above
* added missing variable initialization
Co-authored-by: Tosco, Paolo <paolo.tosco@novartis.com>
* Exploration
* Initial work on GA fro Rgroup Symmetry
* GA for rgroup decomp and fingerprint rgroup symmetry scoring
* Continuing development
* Exploration
* Initial work on GA fro Rgroup Symmetry
* GA for rgroup decomp and fingerprint rgroup symmetry scoring
* Continuing development
* Further development
* Continued tweaks
* Function rename
* Continued tweaks
* Bug fix for variance calculation
* Copyright notices. Remove Eigen dependency. RdKit logging. Clock fix.
* Changes to fix build failures
* Fixes for Windows dynamic DLL build
* Included GA export.h file
* Fixed RGroupDecomp CMakeLists.txt
* Notebooks working, GGroup labelling bug fixed
* Fix windows build. More options for example GA program
* More bugs found and tests adjusted
* Fixed Python rgroup test
* Trivial change to trigger CI
* OSX java and windows build fixes
* Windows DLL fix
* Fix segmentation error
* proposed change
* Possible fix for segmentation fault
* CR fixes
* CR fixes
* CR fixes
* Recreates molecules from rgroups where possible
Co-authored-by: greg landrum <greg.landrum@gmail.com>
Co-authored-by: Brian Kelley <fustigator@gmail.com>
* backup, definitely does not work
* remove obsolete test
(not even really sure anymore that's a bug)
* remove code from a false path
* at this point the code passes all tests
* backup
* handle isotopes and h counts properly
* remove some compiler warnings
* all tests passing
* Use InChI minimimum ring size for bonds
* Fixes edge-case bug in canonicalization when bond labels are provided
* cleanup, no substance here
* fixes the last set of problems I've seen
* document that this is still experimental
* remove obsolete/testing comments
* stop considering charge and H count in chirality
* fixed issue #2965
* added test case for issue #2965
* fixed formatting and added comment.
* update
* General Reader files
* removed dependency on boost filesystems
* removed class
* clang-format
* added-comments
* further-cleanup
* added clang-formatting
* braces-for-if-else
* changed error messages, added option for windows file path
* fixed getFileName function
* cleanup
* option for filename without path
* further-cleanup
* added tests for determineFileFormat
* cleanup, const arguments for validate function
* init
* cleanup
* cleanup
* clang-format does not work for CMake
* added RDK_TEST_MULTITHREADED option
* add-flag
* cleanup
* Delete ConcurrentQueue.h
This PR deals with the Generalized File Reader.
* Delete testConcurrentQueue.cpp
This PR deals with the Generalized File Reader.
* no change
* concurrent queue
* print values
* Single Producer Multiple Consumer works
* cleanup
* Producer Consumer Example
* update queue methods and tests
* cleanup
* test
* fixed tests
* cleanup, updated tests
* Delete ProducerConsumer.h
* Delete testProducerConsumer.cpp
* cleanup
* futher cleanup
* changes based on feedback
* make queue non copyable
* psuedocode
* possible implementation
* untested implementation
* change class to typename
* basic-setup
* need to fix segfault
* need to fix blocking
* need to fix blocking
* need to fix blocking
* fix indentation
* one possibility
* without lambda function
* possible fix with some test cases
* performance tests
* added support for record id and item text
* cleanup
* cleanup
* fixed memory leak and added methods with tests for getting last id and item text
* cleanup
* added more test cases with different smi files
* cleanup
* SD mol supplier
* modified the parsing for SDMolSupplier
* cleanup
* cleanup
* new file for testing
* added support for reading molecule properties with tests
* thread-safe logging and exception handling
* cleanup
* without thread safe logging
* cleanup
* cleanup, modified MultithreadedSmilesMolSupplier
* cleanup, made reader and writer functions private
* move O2.sdf
* basic python wrapper with tests
* cleanup, added new methods for python wrappers
* made changes suggested by Andrew
* file and compression formats are case-insensitive
* cannot open files with gzstream
* cleanup
* possible fix for opening compressed streams (SMILES)
* removed seekg() and tellg() methods from multithreadeded suppliers
* cleanup
* test cases for python wrappers
* some wrapper cleanup
* cleanup, removed unused functions
* update the MT tests so that they actually do some work
also includes some cleanup here
* cleanup
* remove iterator_next header include
* added support for multithreaded readers
* use getNumThreadsToUse for multithreaded suppliers
* fixed documentation for multithreaded python wrappers
* commented performance test
* first draft of final evaluation report
* removed inline variables
* first draft getting started in python
* fixed typos in getting started in python
* fixed typos
* fix documentation tests
* fixed documentation tests
* added links to important files and PR
* added perfomance results
* first version of wrappers with compressed streams
* getting rid of streambuf stream method
* modified General File Reader
* make this work when building in non-threads mode
* rename a test
* rename a function in the python API
* rearrange the python test a bit
* disable the stream-based constructors in Python
* mark the multithreaded classes as experimental
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* support read-only access to cstates from python
* expose GetBrackets
* expose getAttachPoints too
remove vestigial SubstanceGroupCState_VECT
* backup
* backup
* basics working
* backup
* add label_mol_abbreviations
* fix a bug in the chirality handling
* add linkers, needs more testing
* add another peptide test
* sanitize results by default
* just need rings
* getting started with the C++ form of abbreviations
* a bit of error handling
* add findApplicableMatches
* actually apply the abbreviations
* make the getDefault functions more efficient
* add labeling (creating s groups)
* docs
* basic python wrappers (maybe this is enough?)
* add _displayLabel and _displayLabelW support to MolDraw2D
update the docs for that
* use displayLabel props
* add more default abbrevs
* change default linker defns
add parseLinkers convenience function
* make sure attachment point atoms aren't aromatic
* change the color of dummies to be darker gray
* remove python implementation
* support abbreviations in the java wrappers
* add abbreviations to the csharp wrappers
* add abbreviations to the js wrappers
* add molParity to the list of atom props not written to CXSMILES
* support condensing SUP substance groups
* add that to the python wrappers
* Update testAbbreviations.py
* clear ring info if we added it
* document that the molecules with abbreviations removed have not been sanitized
* add tests for the problem
* more testing (still no fix)
* Fixes#2891
Try to be more robust w.r.t. atom reordering in input SMILES
* better handling of differing numbers of bonds between reactants and products
all tests now passing
* update the rdkit book with more details about chirality in reactions
* changes in response to review
* add new test (it fails, of course)
* isAtomPotentialTetrahedralCenter() there and tested
tests cases for molecular stereo written (but failing, of course)
create new_chirality.cpp, we will probably want to change this at some point
new StereoInfo structure
* more infrastructure
- isBondPotentialStereoBond()
- two getStereoInfo() functions
- associated unit tests
* backup
* oops
* backup
* switch to always using four atoms for bonds
* backup
* add new test (it fails, of course)
* isAtomPotentialTetrahedralCenter() there and tested
tests cases for molecular stereo written (but failing, of course)
create new_chirality.cpp, we will probably want to change this at some point
new StereoInfo structure
* more infrastructure
- isBondPotentialStereoBond()
- two getStereoInfo() functions
- associated unit tests
* backup
* oops
* backup
* switch to always using four atoms for bonds
* backup
* this now actually works
* doc update
* add a test to demo that ring stereo is not working
* more testing
* add a fun CIP test
* add review note
* debugging
* remove extraneous debugging
turn off tests for ring-double bond stereo
* disable the ring-stereo fix... this breaks a few tests, but we will recover
* works, needs cleanup, chirality code needs re-testing
* nothing works
* Fixes#3322
* Python and C++ tests now pass
* clang-format
* first pass at python wrappers
* improve doctest
* basic optimization...
stop with the copying
* rename
* all tests passing again
* optimization
* fix the sort in the tests
* looks like this might fix the windows-dll build problems
* update tests
* the fun never ends
* comment cleanup
* handle deliberately unspecified atoms/bonds
* add cleanIt option
* add flagPossible
* add option to use the new code to the SMILES parser
* additional testing
* additional testing
* a bit of additional testing never hurts
* changes in response to review
* fixes a bug with potential parastereo not being cleared
other changes in response to review
* update docs
* reader stub. Navigates the file successfullly
* works
* works
* read out all metadata, not just ours
* first pass at reading out molecules
* support mol blocks too
* add python wrapper for parser
* add direct writer
* get rid of multiple definitions in PNParser.h
* update from code review
* robustification
* handle reading compressed metadata
* support compressing metadata too
* reorder arguments to make this more consistent
* add writers to python wrappers
* forgotten file
* add pickle support
* explicit zlib dependency
* get windows builds working
at least with conda boost+zlib
* switch to using boost::iostreams to do the compression/decompression
* switch to using a vector of string pairs to store the metadata
need this so that we can contain "duplicate" keys
* add metadata output to MolDraw2DCairo
still need python test
* add a python test
* initial work at reading/writing reactions from PNGs
refactor the ReactionParser.h header a bit
* cleanup debug messages
* reaction PNG support -> python
* ReactionPickler no longer includes all ProductTemplate props
* handle metadata at the MolDraw2D level
Currently only supported by MolDraw2DCairo, it's worth extending this to SVG too
* support reading multiple molecules from a png
* support multiple molecules from files and in python
* stop duplicating tags with multiple molecules
* update to get windll builds working
this change should be propagated to more cmakelists.txt files
* make sure the metadata ends up in the notebook
* make sure PNGs in the notebook also have metadata
efficiency improvements for some notebook bits (i.e stop going PNG->Image->PNG)
* no need to pretend that we might be using PIL anymore
* documentation
* update docs to show new functionality
* not sure why the doctests failed on linux
* still trying to diagnose those failures
* protect doctests in case python interpreters are being re-used
* switch tags
* the wrapped functions to read png data from files weren't working
* <sigh>... windows dlls
* move replaceAtomWithQueryAtom() and completeMolQueries() to QueryOps namespace
* support ring bonds from cxsmiles
* add a test that is still failing
* update nonHydrogenDegree query, add SMARTS extension for that
* some cleanup
* unsaturation and substitution count
* fix typo in test
* update expected result
* add linknodes
* add variable attachment points
* improve documentation of supported cxsmiles features
* clarifying the docs
* support leaving out the outer atoms in LN specs
* add port of centres
* Several changes:
- Added a test based on RDKit issue 2984
(default RDKit fails it, this gets it right)
- Use bond directions for bond stereo (label is no longer required)
- Fix bugs in rules 4b and 5new
- Fix some mem errors
- clang-formatted
- some other minor cleanups
* Several changes and some improvements:
- Added LGPL license, as well as a mention in the doc.
- Fix/update/add some comments
- Fix typo/bug in Mancude calculation
- Fix bug in rules 4b, 5New
- Fix Sp2 Bond dir reference
- Re clang-format
- other minor changes suggested by Dan
* Another bunch of changes:
- require integer-order bonds; kekulize when required
- fix fraction comparison
- rename sq Cis/Trans e/z
- replace queues with vectors
- update copyright notices
- revert LGPL changes
- fix Asymmetric typo
* move to separate lib/mod, add python validation test
* Moving away from the original implementation:
- Rename to CIPLabeler
- Remove the abstraction layer
- Remove some stats stuff
- Push some CIPMol functions down to Node
- Use RDKit's isotope info
* Another bundle of changes. The most relevant ones:
- fix parity translation
- use cis trans as bond reference -- breaks #2984 test
- kill a lot of unused code
- use lists for queues
- store nodes and edges in digraph
- add prefixes to class data member names
- update changeRoot() test
- use fastFindRings() for mancude rings
- update docs
- add references to the scientific paper
- Document the Mancude functions
- Fix Mancude atom types and their comments
- remove mol data member from SequenceRule
- replace Fraction with boost::rational
- update comments, docstrings and the doc
* fix building the test
* Changes here include:
- adding bitset overload for the labeling function
- python wrap of the overload
- handling trigonal pyramids with implicit H
- setting bond labels sets stereo atoms, cis/trans
- nix LEFT/RIGHT/TOGETHER/OPPOSITE constants
- don't use GLOB in cmake
- a decent amount of refactoring
* Minor edits to new_CIP_labeling (#6)
* Some changes for clarity
Added some documentation and changed some variable names to match
my understanding. Also a ran clang-tidy to ensure that all blocks
were brace-enclosed.
* Return a reference instead of a copy for performance
This is called many times and showed up after some light
profiling. This change bumped throughput by about 20%
* move out of Graphmol
* move .hpp headers to .h
* update documentation; add label set of atoms test
* Address comments:
- Added references to centres to CIPLabeler.h and Python Wrap.
- Update validation test to skip sanitization.
- Document mancude fractional atomic number calculation.
- Use unittest assertions in python test.
- Update mancude docstrings to 'resonance' instad of 'tautomers'.
- Rename prioritise() to prioritize().
- Add postcondition to check carriers size in Tetrahedral.cpp.
- Use getNeighbors() in Tetrahedral.cpp.
- Move findStereoAtoms to Chirality namespace.
- Move code back into GraphMol.
- Fix typos and reformat doc.
* More comments:
- Mention why we use boost's unordered map rather than the std one.
- Fix include in Python wrapper.
* Addressed second batch of comments:
- fix the bug in rule 4b
- fix docstring for rule 2
- move atomic mass calculation from rule 2 to node
- addressed some build warnings
- simplify sp2bond::label(comp)
- add start/end atoms to Sp2Bond constructor
- update system/local includes
Co-authored-by: Dan N <dan.nealschneider@schrodinger.com>
* allow CXSMILES generic query atoms to be parsed from mol;
need more tests here
* remove vestigial directory
* Add d_queryType to Query
This opens up additional flexibility with customizing the way queries are handled
Also includes some assorted cleanups in the Query directory
* remove the MolFileSymbol hack added in #3235
We don't need it anymore
* Add support for additional ChemAxon extensions and document them
Signed-off-by: greg landrum <greg.landrum@gmail.com>
* bump pickle version
* add an additional test
* change minimal cmake version to a consistent 3.5
* progress towards a cleanup
* get the basic python deps working
* two more libs
* another round of changes
all tests pass at this point
* next round of changes
all tests pass at this point
* close to done
all tests pass
* very close
* almost done
* shift the RDBoost dependencies around a bit
* remove an extraneous python linkage
this is trying to get the mac builds working again
* Only link to python if it was built shared (#3091)
* change in response to review
Co-Authored-By: Ric <ricrogz@users.noreply.github.com>
* move that suppression of the maybe-uninitialized warning to BoostStartInclude.h
Co-authored-by: Brian Kelley <fustigator@gmail.com>
Co-authored-by: Ric <ricrogz@users.noreply.github.com>
* Updated CMakeLists.txx
* Updated all examples, extended some.
* Added info about highlighting atoms.
* Added info about annotation to python getting started.
* Minor tweaks.
* Minor tweaks. Can only examine the rst in GitHub.
* Minor tweaks. Can only examine the rst in GitHub.
* get doctests working
* update an example image
* Include the GettingStartedInC++ doc in the standard docs build
* move the C++ docs after the python docs
* update backwards incompatible changes doc
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* Test only commit for using enhanced stereo in substructure search
Adds some test cases to demonstrate what I'm planning.
When the test cases fail, the messages look like this:
-------------------------------------------------------------------------------
Enhanced stereochemistry
AND and OR match their enantiomer
-------------------------------------------------------------------------------
/Users/wandschn/Documents/src/rdkit/Code/GraphMol/Substruct/catch_tests.cpp:216
...............................................................................
/Users/wandschn/Documents/src/rdkit/Code/GraphMol/Substruct/catch_tests.cpp:218: FAILED:
CHECK_THAT( *opposite_mol, IsSubstructOf(*mol_and, ps) )
with expansion:
CC[C@@H](F)[C@@H](C)O is not a substructure of CC[C@H](F)[C@H](C)O |&1:2,4|
/Users/wandschn/Documents/src/rdkit/Code/GraphMol/Substruct/catch_tests.cpp:219: FAILED:
CHECK_THAT( *opposite_mol, IsSubstructOf(*mol_or, ps) )
with expansion:
CC[C@@H](F)[C@@H](C)O is not a substructure of CC[C@H](F)[C@H](C)O |o1:2,4|
* rename parameter to include q and m to reduce my confusion
* Don't keep recreating a map
This map is the same in every loop. And actually, the desired
information is slightly different than what was formerly stored
in the map.
* Fix tests after our discussion.
Also adds more exciting tests of disastereomers and structures
with multiple stereo groups.
* Use enhanced stereochemistry in substructure searching
Allows use of enhaced stereochemistry in substructure searching
if `SubstructMatchParameters.useEnhancedStereo` is set.
The matching rules are pretty obnoxious, but a synopsis is:
* An achiral query/substructure matches everything, because it
means "ignore chirality".
* An absolute query matches AND or OR, because they both include
the molecule with an absolute center
* An query with an OR matches either an OR or an AND, because
AND is more molecules.
* add info about matching to the documentation
* expose extended stereo matching option to python
* Some updates/tweaks to the documentation of enhanced stereochemistry
especially about searching.
* Code review comments.
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* First pass of fixing layout of OH/NH type drawing.
* Fixed scale for N/S NH type groups.
* Fixed bond end points with new display of heteroatoms.
* Fixed case where it drew aromatic dashed bonds in wrong ring for morphine.
* Minor edit.
* Fixed non-drawing of chiral bonds.
* Removed use of boost for_each.
* Modern atom traversal.
* Put in fixed scale for drawings.
Made drawMolecule() take note of prepareMolsBeforeDrawing.
Updated more iterators to modern idiom.
* Added fixed bond length for drawing.
* Fixed drawing of CH4, NH3 etc.
* Stash of working but ugly, prior to re-work.
* Better, simpler splitting of atom symbols.
* Took clang-tidy's advice about use of override.
* Tidied up drawing of text strings.
* Tweaked what is classed as vertical bond in drawing.
* fixedBondLength now down-scales if it would overflow the draw window.
* Some tidying.
* Tests for new parameters in JSON.
Fixed some existing tests where, for example, scale on picture is now different.
* Added option to rotate 2D draw coords before drawing.
* First pass at highlighting atoms in multiple colours. Circles only at the moment.
* Line width scales if big enough.
* Tweaked SVG text drawing.
* Added highlighting with more than 1 colour on an atom. C++ only.
* Fixed some issues with widths of highlights in a frustrating game of whackamole.
Updated some tests accordingly.
* Added Python wrapper for new drawing code.
* Removed debugging writes.
* Added C++ test for multi-coloured highlights.
* Added python test for multi-coloured highlights.
* Attempt to show radicals.
* Tidied up radicals in drawing, including a bullet instead of full stop in SVG.
* Fixed catch_tests.cpp for MolDraw2D.
* Fixed crash in Python wrappers on OSX.
* Fixed test5_2.svg bug (trailing </tspan>).
Made wavy line width scale as other lines do.
* Improved placing of charges.
* We're already in the future.
* Fixed a number of bugs that made drawMolecules not set the scales properly.
* Fixed Cairo wavy line width.
* Fixed non-closure of collision boxes.
* Added maximum font size for text, with tests.
* Addressed all Greg's first PR change requests.
* Fixed crash in extractAtomsymbols.
* stop using coordgen and adjust tests to reflect that
there's a bit of reformatting in here too
* Fixed layout of reactions.
* Fiddled with moldraw2DTest1 tests again.
* Fiddled with catch test.
* Fixed istope postion in W atom labels.
* Minor tweak to cairo,
* update expected results
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
Although these are probably nonsense, I've seen some pretty
big [r#] expressions in SMARTS expressions. In particular, for
SMARTS generated for toolkits that don't have the range
extension, people do this to mean "in rings bigger than 6" or
whatever:
[r7,r8,r9,r10
* initial attempt to run doctests in CI
* add cairo support; disable other builds until we are done with this
* we don't actually need cairo
Adds cleanup code to cookbook
* be explicit about SVG
it does not seem like this should be necessary, but...
* turn the other tests back on now that the doctests work
* try enabling the doc tests for mac and win too
* remove mac tests again, fix problem with windows
* trying to get tests working on windows
* stop requesting PNGs in the cookbook
* skip calls to molstogridimage too
* remove vestigial doctest directive
* backup
* backup
* backup
* getting close to v0.1
* switch to using node indices
* add pruning and flattening
* support multiple mols
* example notebook
* backup
* initial commit
Just includes the basic API and flatten
* add the pruning step
* add removeAttachmentPoints()
* add makeScaffoldGeneric()
* improve compilation speed by adding catch_main.cpp
* add getMolFragments()
* doc cleanup
* actually add the network building code
* first pass at python wrapper
* allow edges to be nicely converted to strings
* get node counts working
* backup python notebook
* switch example notebook to use wrapped C++ code
* add BRICS fragmentation option
* fix a bug with removing attachment points to aromatic heteroatoms
* add provisional attachment point merger to notebook
* fix a bug with includeScaffoldsWithAttachments=false
* backup of efforts to get this working on windows
* backup of efforts to get this working on windows
* does not work. backup
* Fix a substructure crash on Windows
* re-enable tests
* adjust to the new BRICS form
* in-code documentation
* more doc updates
* reformat
* change the string output format for edges
* remove old python implementation
* remove obsolete test
* include a generic scaffold for the pruned structure too
* default to keepOnlyFirstFragment=false with BRICS params
* bug in removal of attachment points from generic scaffolds
* more testing
* support working from std::shared_ptr as well as boost::shared_ptr
* more testing
* disable debug printing
* use memo-ization in getMolFragments() to avoid duplicate work
* add SWIG wrapper and basic testing
* add define for RDK_USE_BOOST_SERIALIZATION
* add serialization at the C++ level
* add a string ctor for a scaffold networks
* add pickle support on the python side
* formatting
* remove old notebook
* move the fantastically useful iterable_convertor to RDBoost/Wrap.h
* expose parameter constructor with std::vector<std::string>
* add scaffoldnetwork to documentation