Commit Graph

4567 Commits

Author SHA1 Message Date
Greg Landrum
fd1752e006 disable Info and Debug logs by default (#5065)
* disable the info and debug logs by default

* adjust tests to the newly disabled logs

* add LogStateSetter

* namespace reorg

* add some tests

* remove vestigial code

* switch to using std::vector
2022-03-12 10:04:28 +01:00
Eisuke Kawashima
27f711a658 Run clang-tidy (readability-braces-around-statements) (#4977)
https://github.com/rdkit/rdkit/pull/3024#discussion_r526549843
2022-03-10 08:00:10 +01:00
Eisuke Kawashima
b53ee20b49 Fix Flake8 erorrs (#4252)
* Fix PEP8 [E101](https://github.com/PyCQA/pycodestyle/blob/2.8.0/docs/intro.rst#error-codes)

* Fix PEP8 [E502](https://github.com/PyCQA/pycodestyle/blob/2.8.0/docs/intro.rst#error-codes)

* Fix PEP8 [E703](https://github.com/PyCQA/pycodestyle/blob/2.8.0/docs/intro.rst#error-codes)

* Fix PEP8 [E711](https://github.com/PyCQA/pycodestyle/blob/2.8.0/docs/intro.rst#error-codes)

* Fix PEP8 [E712](https://github.com/PyCQA/pycodestyle/blob/2.8.0/docs/intro.rst#error-codes)

* Fix PEP8 [E713](https://github.com/PyCQA/pycodestyle/blob/2.8.0/docs/intro.rst#error-codes)

* Fix PEP8 [E722](https://github.com/PyCQA/pycodestyle/blob/2.8.0/docs/intro.rst#error-codes)

* Fix PEP8 [W605](https://github.com/PyCQA/pycodestyle/blob/2.8.0/docs/intro.rst#error-codes)
2022-03-10 06:55:18 +01:00
Ichiru Take
9822e9439c [ENH]: Support greater use of findAtomEnvironmentOfRadiusN() (#4970)
* [WIP-ENH]: Support greater use of `findAtomEnvironmentOfRadiusN()`

This PR is the feature support for PR 4262. I am not so confident when coding the C++ as it is my first time hands-on experience

There are still many thing that should be done but I still need several support

* Update MolOps.cpp

* Fix build error

Fix according to this? https://www.boost.org/doc/libs/1_42_0/libs/python/doc/v2/object.html#object-spec-ctors

* Fix build error

* Fix test2.cpp

* Fix `include` issue

* Fixed as requested

* Update Subgraphs.cpp

* Update Subgraphs.cpp

* Update Subgraphs.cpp

* Fix reported error, correct doc

* Update MolOps.cpp

* Update test and fix error

* Fix default argument

* Fix duplication

* Update Subgraphs.cpp

* Fix test bug

* Updated a test and fix reported error

* Update Subgraphs.cpp

* Fix reported error

* Update test2.cpp

* Fix reported error of memleak and introduce new function

* Fix incorrect variable

* Update test2.cpp

* Update test2.cpp

* Update MolOps.cpp

* Update MolOps.cpp

* Fix algorithm & Add test docs

* Update test2.cpp

* Update Subgraphs.cpp

* New argument `bondDist` - Optimize the `FindAtomEnvFromMToN`

Documentation is syncronized the meaning between C++ and Python

- New argument `bondDist`
- `findAtomEnvironmentOfRadiusMToN()` now called once instead of twice due to the introduction of `bondDist`

* Update Subgraphs.cpp

* Update test2.cpp

* Fix casting

* Correct the test

* Update Subgraphs.cpp

* Remove buggy function and replace argument position

* Update Subgraphs.h

* Fix build failed

* Optimization

Reduce graph expansion if it is the last radius

* Adjust codebase based on review

- Update Copyright
- Add doc to prove optimization

* suggested changes

Co-authored-by: greg landrum <greg.landrum@gmail.com>
2022-03-09 14:01:24 +01:00
Greg Landrum
8559ef7526 Fix #5055 (#5071)
* Fixes #5055
The problem was a hash collision with the invariants

* switch to using a bitset for the invariant instead of a hash
2022-03-09 13:55:37 +01:00
David Cosgrove
cd6c915c9e Fix github 5061. (#5063)
* Fix github 5061.

* Update hash code.

Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
2022-03-07 11:06:51 +01:00
Greg Landrum
4bbbc6611d Add a CXSMILES option to the MolHash (#5058)
* Nonchiral atoms should be removed from StereoGroups

This fixes a bug where atoms which have no chirality were left in StereoGroups

In order to make this work, ROMol::setStereoGroups() needed to be made public.
That shouldn't be a problem since it doesn't change connectivity.

* support CXSmiles extensions in the hashes

* initial tests for that

* some cleanup

* copyright header cleanup

* minor refactoring

* call out the changes in the release notes

* extension and more testing

* add python wrappers
2022-03-03 16:00:38 +01:00
Ric
6418918710 fix MSVC DLL build after moldraw2d refactor (#5046)
* fix build

* recheck

* install DrawTextQt.h

* Some additional cleanup and merge to the current state of master (#8)

* silence warnings in MSVC compliatons (#5044)

* enable the multithreaded LeaderPicker on linux (#5043)

* enable the multithreaded leaderpicker on linux

* response to review

* AtomSymbol needs to have a virtual destructor (#5045)

* AtomSymbol needs to have a virtual destructor

* additional cleanup of virtual functions

* typo fix

Co-authored-by: greg landrum <greg.landrum@gmail.com>

* Expose MolzipParams::atomSymbols to python (#5054)

* [WIP] Clean up the warning landscape (#5048)

* suppress a bunch of warnings from third-party code
get rid of one warning in RDKit code

* corrections

* fix the maeparser flags

* remove some more inchi warnings with clang

* Further cleanup of the public interface.
Get all the DrawText bits out of the header files used by client code.

Co-authored-by: Brian Kelley <fustigator@gmail.com>

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
Co-authored-by: Brian Kelley <fustigator@gmail.com>
2022-03-02 17:13:32 +01:00
Greg Landrum
00f23b5047 [WIP] Clean up the warning landscape (#5048)
* suppress a bunch of warnings from third-party code
get rid of one warning in RDKit code

* corrections

* fix the maeparser flags

* remove some more inchi warnings with clang
2022-03-01 05:00:25 +01:00
Brian Kelley
240377115a Expose MolzipParams::atomSymbols to python (#5054) 2022-02-28 06:42:52 +01:00
Brian Kelley
fac62cebe9 AtomSymbol needs to have a virtual destructor (#5045)
* AtomSymbol needs to have a virtual destructor

* additional cleanup of virtual functions

* typo fix

Co-authored-by: greg landrum <greg.landrum@gmail.com>
2022-02-25 21:34:04 +01:00
Greg Landrum
235df5c592 enable the multithreaded LeaderPicker on linux (#5043)
* enable the multithreaded leaderpicker on linux

* response to review
2022-02-25 07:25:48 -05:00
Paolo Tosco
27b92a24ae Fixes JS build broken by #4948 (#5042)
Co-authored-by: Tosco, Paolo <paolo.tosco@novartis.com>
2022-02-24 06:35:32 +01:00
Kaushalesh Shukla
f9bbdc4766 Improving atom colors for dark mode. (#5038)
Changing colors of N, Br and I in dark mode.

Co-authored-by: Kaushalesh Shukla <shukla@schrodinger.com>
2022-02-23 20:01:18 +01:00
Greg Landrum
67f0018e35 Fixes #5036 (#5041) 2022-02-23 06:11:40 -05:00
Greg Landrum
6a449def73 Fixes #4981 (#5030) 2022-02-22 20:35:44 +01:00
David Cosgrove
94cde75973 Make FMCS check bond stereo. (#5009)
* Make FMCS check bond stereo.

* Increase timeouts.

* Remove spare test.

Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
2022-02-22 06:50:17 +01:00
Maciej Wójcikowski
93282a4bcf Drop gist_qmol_ops in upgrade scripts in case it exists (#5021) 2022-02-22 06:49:54 +01:00
Kevin Burk
7bd9f7b434 Remove extra newline from Kekulize error message. (#5022)
* Remove extra newline from Kekulize error message.

* Fix test for exception message.
2022-02-22 04:48:14 +01:00
David Cosgrove
f93016a77f Refactor mol draw2 d (#4948)
* MolDraw2D refactoring
- rename setupMoleculeDraw->initMoleculeDraw
- track whether or not initDrawing() has been called
- centralize calls to initDrawing() and clearDrawing() into initMoleculeDraw()
- update svg hashes in tests

* update some expected test results

* support changing font scale and default scale
add reaction test

* does not work... this is hard

* all tests pass

* do something about legends

* docs

* more tests

* more docs

* cleanup

* going around in circles...
hopefully converging

* cleanup

* Single bond skeleton works.

* Simple bond drawing seems to be working.

* Initial addition of atom symbols.

* Stash of not-quite-working atom symbols prior to major surgery.

* Atom symbols seem to be working.  Major surgery not required, just inverted Y coords at the outset.

* Add classes to atom labels.

* Renamed AtomLabel AtomSymbol.

* Add highlights.

* Fix bug from PR4839.

* Molecule note.

* Added atom notes.

* Added bond notes.

* Extract radicals.

* Annotation via new DrawAnnotation class.

* Add brackets.

* Add linknodes.

* Add close contacts.

* Add attachment points.  Fix wavy lines.

* Draw molecules in grid.

* Tidy.

* Fix radicals when font has hit maxFontSize.
Make getDrawCoords work.

* Draw primitives take atom or draw coords.

* Fix legends.

* More fixing for tests.  DrawMol::setScale now takes font scale as well.

* tidy debug writes

* Variable fraction of panel for legend.

* Better legend positioning.

* Fix sub- and super-script spacing.
Added spaces to Freetype strings.

* Basic reaction drawing.

* Reaction highlighting.

* Minor tweak to reacctions.

* Tweaked reaction DrawMol widths.

* Fix atomTags.

* Fix catch tests except contours.

* Contouring working in catch_tests.cpp.

* Fix catch tests.

* AtomSymbol and DrawAnnotation into MolDraw2D_detail.

* DrawMol and DrawShape into MolDraw2D_detail.

* DrawText inot MolDraw2D_detail.

* Machete out.

* DrawText goes private.

* Move some stuff about, such as StringRect to its own header.

* Python wrapper compiles (but crashes when Draw imported).

* More tidying.  Python DrawArrow failing.

* Linux changes.

* Fixed error in DrawShapeArrow spotted by valgrind.
Fixed some warnings from gcc.

* Maybe fixed DrawArrow.

* Added basic argparse interface.

* Added newlines.

* Changes in response to review.
Non-const args in move constructors and operator=.
Added missing classes to MolDraw2D_detail.
Deleted move operator= where it had been forgotten.
Fixed copyright dates.

* Deleted all default c'tors in derived classes.

* Changes in response to review:
Wedge widths now a proportion of mean bond length in draw coords..
Add padding below legend when positioning it.

* Fix tests.

* Fix the private/protected mess of the new classes.

* Moved doesLineIntersect etc.

* Reinstate original alignString for non-FT drawings.

* More faffing about with reaction layouts.

* Fix font sizes in testGitHub3391.

* Fix atom notes fitting inside fat wedges.

* Fix molecule annotation font size.

* More fixes of rectangle/triangle collision detection.

* Test for highlight linewidth multiplier.

* Use push_back not emplace_back.

* Attempt at better Freetype char spacing.

* Option to turn off TEST_ASSERT. Currently off.

* Fixed embarrassing maths to do with wedge fatness.

* More tidying post-review.

* Document highlight_linewidth_multipliers.

* Expose baseFontSize to Python.

* Changes in response to review.

* Allow DrawMolecules molecules to be drawn to different scales.

* Fix bond sneaking between C:8 in, for example, reactions.

* Fix bad re-factoring.

* Fix globbing.

* Changes in response to review.

* Add invariant check.

* Add draw option to fix font size.

* suggested changes

* Update catch test results.

* Fix expected freetype results.

* Fix non-freetype drawers.

* Fin non-freetype test results.

* get the Qt drawer working too

* Fix disappearing reaction highlights.

* Changes as result of review.

* Fixed non-FreeType hash codes for reaction SVGs.  Extra comment in catch_tests.

* reactant highlighting was clearning properties

* Fix for failing contour python test.

* fix a non-freetype problem

* swig wrappers working

* Bump timeouts in test.

Co-authored-by: greg landrum <greg.landrum@gmail.com>
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
2022-02-18 16:30:21 +01:00
David Cosgrove
162361e0d2 operator= returns *this. (#5013)
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
2022-02-16 15:06:02 +01:00
Paolo Tosco
0d8e985c38 queries containing AtomAnd should not be considered atom lists (fixes #5006) (#5007)
Co-authored-by: Tosco, Paolo <paolo.tosco@novartis.com>
2022-02-14 04:58:27 +01:00
Greg Landrum
9626726b85 Fixes #4996 and #4998 (#5001)
* Fixes #4996

also switches to using the GraphMol version of catch_main.cpp so builds are faster

* Fixes #4998

we should probably discuss this one

* compare with previous results
2022-02-12 04:18:17 +01:00
Steve Roughley
ede860ae31 Transform3d documentation (#4997)
* Fixed missing documentation

* Update Code/Geometry/Transform3D.h

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
2022-02-10 08:03:10 +01:00
Greg Landrum
96ee054c71 resolves bad input in one of the tests (#5002) 2022-02-10 08:02:33 +01:00
Greg Landrum
555ab6f1fe Start adding move constructors and move-assignment operators (#4909)
* some initial work...
Still some real questions here about what should be done with dp_mol data members

* add some tests for move semantics of Dict and Props
remove extraneous clear()

* more in-depth testing of the molecule results

* test refactoring

* improve the molecule move test

* fix some leaks found by valgrind
the new tests are now all clean in valgrind

* additional classes
QueryAtom, QueryBond, RingInfo, Conformer

* get swig working again.
Not sure why this is necessary, but SWIG is a mysterious beast

* fixes in response to review

* updates in response to review
2022-02-09 14:20:49 +01:00
Greg Landrum
90c6ffa472 Support writing V3000 reactions (#4982)
* first pass at writing v3K rxns

* python wrapper

* test other C++ call

* cleanup

* Fixes Windows DLL build issue

* changes in response to review

Co-authored-by: Paolo Tosco <paolo.tosco.mail@gmail.com>
2022-02-08 14:37:53 +01:00
Greg Landrum
7e575db3c4 AssignStereochemistry should remove nonchiral atoms from StereoGroups (#4986)
* Nonchiral atoms should be removed from StereoGroups

This fixes a bug where atoms which have no chirality were left in StereoGroups

In order to make this work, ROMol::setStereoGroups() needed to be made public.
That shouldn't be a problem since it doesn't change connectivity.

* fix some broken old tests

* update cartridge tests
2022-02-08 05:17:34 +01:00
Alex Rebert
e2b0a850d7 Fix memory safety issues found by OSS-Fuzz (#4983)
* RWMol: replace atom in stereo groups

Fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36998, a
use-after-free in initFromOther.

* Fix out-of-bounds write in iterateCIPRanks

If the rank has not changed in the current iteration, the cipEntries
vectors might not have increased in size. Accessing `numIts + 1`
resulted in an out-of-bounds write. This commit skip the cipEntries
update when the rank is unchanged.

Fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28660

* Fix use of uninitialized values in MolSGroupParsing

`stream >> count` may silently fail without an exception. In that case,
`count` was uninitialized but used. This commit initalizes `count` to 0,
as well as other variables that may be read without being initialized.

Fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=25220
Fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=25225

* Fix vector size cast in streamReadVec

In 32-bit systems, the implicit conversions from 64-bit to a 32-bit
size_t could lead to an underallocation of the vector. This would follow
by a out-of-bounds write while trying to populate the vector. Now, the
code throws an exception in case of a cast that would change the size.

Fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28034

* RWMol: improve atom replacement in stereo groups

This code is cleaner and more efficient.

* Add test for replaceAtom and stereo groups
2022-02-06 05:06:38 +01:00
Brian Kelley
f326de01c0 Move isEarlyAtom to a table to reduce lock contention in getPeriodicTable (#4980)
* Move isEarlyAtom to a table format to reduce lock contention in getPeriodicTable

* Fix He early atom status

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
2022-02-03 16:03:17 +01:00
Kazuya Ujihara
de088cd7dd add JavaGzStreamTests (#4973) 2022-02-01 17:28:36 +01:00
Kazuya Ujihara
1099790471 fix to work tests when RDK_USE_BOOST_IOSTREAMS=OFF (#4968)
Co-authored-by: Kazuya Ujihara <ujihara@preferred.jp>
2022-01-31 16:58:49 +01:00
Paolo Tosco
dc4893132b Fixes #4721 (#4722)
* fixes #4721

* - store in RingInfo the index of the ring(s) each atom and bond belongs to rather tham just their size
- expand the RingInfo API with a few useful methods
- identify rings that are certainly aliphatic upfront
- avoid unnecessary copying atomRings when RingInfo is already initialized

* - code modernization and cleanup
- better handling of dummies in aromatic rings
- exposed atomMembers() and bondMembers()
- added several tests

* - avoid order dependency on rings
- added test for the above

* changes in response to review

Co-authored-by: Tosco, Paolo <paolo.tosco@novartis.com>
2022-01-28 16:38:46 +01:00
Greg Landrum
d4b4fab6eb Fixes #4934 (#4940) 2022-01-28 08:09:20 +01:00
Paolo Tosco
1872ea5a47 Fixes a bug with the choice of RGD cores (#4890)
* Later cores with more R-groups should only be chosen when they are structurally related, i.e. when they are superstructures of earlier cores

* Update Code/GraphMol/RGroupDecomposition/testRGroupDecomp.cpp

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>

* Update Code/GraphMol/RGroupDecomposition/testRGroupDecomp.cpp

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>

Co-authored-by: Tosco, Paolo <paolo.tosco@novartis.com>
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
2022-01-26 08:55:23 +01:00
Greg Landrum
2616a92906 Support CXSMILES/CXSMARTS for reactions (#4895)
* start with some basic tests
these currently fail, of course

* prep work

* minor refactoring and prep work

* get better at handling spaces

* first pass, needs completion and testing
loads more testing required
coordinate bonds don't work at all yet
I'm suspicious about the SGroup hierarchy

* more progress
agents and products are now parsed
more testing added
way more testing needed

* correctly ignore names
test cleanup

* more sgroup improvements and testing
now I think most everything is there and the basics are tested

* all tests pass

* link nodes and variable attachment points

* more cleanup and testing

* changes in response to review
2022-01-26 08:52:10 +01:00
Kevin Burk
f8cf31068e Support for logging via Python's logging module. (#4846)
* Support for logging via Python's logging module.

* Avoid the Python 3.9+ PyObject_CallOneArg function.

* Move logging functions to RDBase; Python logger by default; clean up tests.

* See if removing NOGIL fixes the Windows stall.

* get tests running on windows

* Reset to using C++ logging; whiespace tweaks.

* Longer timestamp grace period; try tempfile vs Windows logging stall.

* Clean up commented code; get details for log count bug.

* SubstructLibrary: Fix c++ threads calling into python

* FilterCatalog: Fix c++ threads calling into python

* Release notes; make sure Jupyter still logs to sys.stderr.

* Always use thread-local log buffers.

* de-verbosify a test

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
Co-authored-by: Brian Kelley <fustigator@gmail.com>
2022-01-24 04:49:27 +01:00
Kazuya Ujihara
0530d468e2 Fix i-files for RDK_USE_BOOST_IOSTREAMS=OFF (#4933)
* fix i-files for RDK_USE_BOOST_IOSTREAMS=OFF

* separate gzstream test

Co-authored-by: Kazuya Ujihara <ujihara@preferred.jp>
2022-01-23 07:06:36 +01:00
Kazuya Ujihara
cdc8e4a82b fix to work for C# (#4935) 2022-01-23 05:38:09 +01:00
Greg Landrum
db15b372a1 Fix some problems turned up by ossfuzz (#4927)
* resolves oss-fuzz #24399

* clean up some undefined behavior

* fix some UB in mergeQueryHs

* be more defensive

* defensive programming

* fix a _cxsmilesBondIdx bug

* more defensive programming
2022-01-22 04:30:06 +01:00
Greg Landrum
b603d0d97e Some refactoring of the depictor code (#4865)
* some depictor cleanup

* more cleanup/refactoring

* Apply suggestions from code review

Co-authored-by: Paolo Tosco <paolo.tosco.mail@gmail.com>

Co-authored-by: Paolo Tosco <paolo.tosco.mail@gmail.com>
2022-01-20 05:20:01 +01:00
Rachel Walker
ef67ab6bb8 Added GetQueryType() to python query atom API (#4882)
* Added GetQueryType() to python query atom API

* Update Code/GraphMol/Atom.h

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
2022-01-20 04:09:37 +01:00
Greg Landrum
71770c60a9 fix some leaks in the SWIG wrappers (#4916) 2022-01-19 21:22:53 +01:00
Greg Landrum
82926b048a Fixes #4878 (#4883) 2022-01-18 14:35:47 +01:00
Niels Kristian Kjærgård Madsen
6bb4f8b5e5 Implemented a quick fix for issue 4875 (#4876)
* Implemented a quick fix

* Fix for Windows

* Fix for linux
2022-01-14 14:05:00 +01:00
Greg Landrum
d05501c5db update MD5 for the comicneue font (#4885)
Not sure why this changed, but it has
2022-01-14 13:42:35 +01:00
Kevin Burk
9b99cacc0b Fix RunFilterCatalog() thread counts. (#4856) 2022-01-10 13:59:54 +01:00
Gareth Jones
a9bc39e0d5 RGD: dummy atom in input structure is mishandled (#4863)
* Support wildcard in input structures

* Fix typos

* Handle R groups containing a single wildcard and wildcards with group numbers

* Reorder tests

* Use propety instead of isotope to mark input dummy

* fix the windows DLL builds

* Added constexpr for dummy input atom property

* Omitted to replace one instance of string 'INPUT_DUMMY'

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
2022-01-10 13:55:54 +01:00
Greg Landrum
67f877b7ca fix bug with wedges being drawn backwards (#4868) 2022-01-10 09:05:28 +01:00
Greg Landrum
f777af9297 Fixes #4842: support $ for quadruple bonds in SMILES and SMARTS (#4850)
* add quadruple bond SMILES/SMARTS extension

* add .cmake files
2022-01-05 16:30:41 +01:00