* 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
* - MatchFusedRings does not imply CompleteRingsOnly anymore
* - use a more specific query molecule rather than an ambiguous SMARTS string in MCSResult
* - changes in response to review
* - fixes#2663 (The C++ MCS code generates ambiguous SMARTS strings)
* - fixes#2662 (C++ MCS code returns a null MCS between
methylcyclopentane and methylcyclohexane)
Fixes#2420
Tests updated to reflect changes.
The existing CompleteRingsOnly code wasn't actually guaranteeing CompleteRingsOnly at all, it was just causing #2420.
The updated code actually makes sure that bonds that were ring bonds in one of the queries are ring bonds in the final MCS.
This is done via a relatively simple DFS.
* very basics of charge checking in
* add the new parameters to the python wrapper. more testing please
* Additional testing.
* update which unittest methods are used
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%)