Selfies v2.0.0 - 21.10.2021
Changed
- Improved SMILES parsing (by using adjacencey lists internally), with tighter error handling (e.g. issues #62 and #60).
- Faster and improved kekulization algorithm (issue #55 fixed).
- Support for symbols that are constrained to 0 bonds (e.g., [CH4]) or >8 bonds (users can now specify custon bond constraints with over 8 bonds).
- New strict=True flag to selfies.encoder, which raises an error if the input SMILES violates the current bond constraints. True by default, can be False for speed-up (if SMILES are guaranteed to be correct).
- Added bond constraints for B (max. 3 bonds) to the default and preset constraints.
- Updated the syntax of SELFIES symbols to be cleaner and more readable. (Removing expl from atomic symbols, e.g., [C@@hExPL] becommes [C@@h], Cleaner branch symbols, e.g., [BranchL_2] becomes [=BranchL], Cleaner ring symbols, e.g., [Expl=RingL] becomes [=RingL], If you want to use the old symbols, use the compatible=True flag to selfies.decoder, e.g., sf.decoder('[C][C][Expl=Ring1]',compatible=True) (not recommended!))
- More logically consistent behaviour of [Ring] symbols.
- Standardized SELFIES alphabet, i.e., no two symbols stand for the same atom/ion (issue #58), e.g., [N+1] and [N+] are equivalent now.
- Indexing symbols are now included in the alphabet returned by selfies.get_semantic_robust_alphabet.
Removed
- Removed constraints flag from selfies.decoder; please use selfies.set_semantic_constraints() and pass in "hypervalent" or "octet_rule" instead.
- Removed print_error flag in selfies.encoder and selfies.decoder, which now raise errors selfies.EncoderError and selfies.DecoderError, respectively.
Bug Fixes
- Potential chirality inversion of atoms making ring bonds (e.g. [C@@h]12CCC2CCNC1): fixed by inverting their chirality in selfies.encoder such that they are decoded with the original chirality preserved.
- Failure to represent mismatching stereochemical specifications at ring bonds (e.g. F/C=C/C/C=C\C): fixed by adding new ring symbols (e.g. [-/RingL], [/RingL], etc.).