Releases: timbernat/polymerist
1.0.2
Minor improvements to docs and local-but-important bugfixes:
- Bugfixes
-
Fixed sporadic stereochemistry inversion in some calls to rdcoords.tiling.tile_lattice_with_rdmol() (caused by bug in Jacobi rotation implementation in RDKit's ComputeCanonicalTransform; see related Issue)
-
Added support for arbitrary names to polymer repeat units from sequences passed to
polymers.building.build_linear_polymer() -
Added SetSerializer to
fileutils.jsonio.serialize -
Greatly extended test coverage, particularly for OpenMM runners and polymer build/sequencing
-
- Docs
- Included logo onto Docs page
- Fixed malformatted and outdated links
What's Changed
- Maintenance cleanup by @timbernat in #51
- CI tweaks by @timbernat in #52
- 1.0.2 patches by @timbernat in #53
Full Changelog: v1.0.1...v1.0.2
1.0.1
Minor fixes after 1.0.0 release:
- Documentation improvements
- Fix errors on documentation examples page
- Fixed broken links in section 3 ("workflows")
- Corrected "miscellanous" typo
- Improved docstrings in several modules:
- polymers.specification
- polymers.estimation
- polymers.building.mbconvert
- openfftools.topology
- openfftools.boxvectors
- Fix errors on documentation examples page
- Bugfixes
- Fixed bug combine_mols call in ReactionAssembler.reactants, error no longer raised when a number of reactive groups other than 2 is input
- Improve typing and robustness of importutils.pkgiter module trees
- Added explicit Error + logging for ImportError
- Fixed typehint on "blacklist" arg (from List to Container)
- Packaging
- Fix erroneous install of rdutils.rdconvert (deprecated on 2025/01/31 but 1.0.0 distribution was built incorrectly and included it anyway)
1.0.0
First major release, following several large-scale changes!
Updates
- Implemented new PINPRICS ring piercing detection algorithm and interfaces
- General utilities (genutils)
- fileutils
- Added empty dir/file checkers
- Added context manager for temporarily changing the current working directory
- Moved allow_string_paths/allow_pathlib_paths decorators from decorators.functional to fileutils.pathutils to avoid
- jsonio
- Added TypeSerializer for numpy arrays to jsonio (NDArraySerializer)
- Allowed make_jsonifiable to act on dataclasses with
Optional[...]fields by fixing KEYWORD_ONLY signature detection
- fileutils
- Added PDB atom labeller for polymer export
- Provided virtual ("EP") site support for OpenMM PDB export
- RDKit functionality:
- Enhanced sanitization utilities
- Enhanced atom/bond search by conditional queries
- Added basic functionality for producing chemical graphs from RDKit Mols
- Added calculation of effective radius of RDMol with one or more Conformer
- Made calculation agnostic of RDKit-specific coordinate operations
- Reactions:
- Moved react/valid_reactant_ordering etc. from Reactor directly into AnnotatedReaction
- Added detailed traces for following atom and bond provenance through a reaction
- Fragment enumeration:
- Generalized Reactor fragment search to iterative expand pool, rather than piping fragment directly through reaction; can now handle much broader classes of reactions
- Included bond-weighted fragment strategy which given more chemically-reasonable cut choices
- Deprecated ReseparateRGroups as default fragment strategy
- Allowed fragment propagation to "resample" reactants, enabling autopolymerization modelling and detection
- Added option to randomize rxn tree traversal
- Expanded logging options when showing steps of reaction assembly
- Polymer building:
- Fixed conversion of charged atoms in spec SMARTS translator (non-neutral molecules are converted faithfully now)
- Propagated awareness of charged into mBuild interface
- Updated list of valid property queries to NIH CACTUS / PubChem
- Fixed conversion of charged atoms in spec SMARTS translator (non-neutral molecules are converted faithfully now)
- Molecular dynamics APIs
- OpenFF
- Dropped unnecessary "exclusion" parameter from pack_topology_with_solvent()
- Added function to check if the unit cell defined by one set of box vectors is entirely contained in that of another
- OpenMM
- Added option to select thermostat/barostat, rather than using prescribed LangevinMiddle thermostat and MC barostat as before
- Added new parameter sets for thermostat and barostat
- Added auto-detection of named ensemble (e.g. NVE, NVT, NPT) rather than requiring user to provide this
- Added option to select thermostat/barostat, rather than using prescribed LangevinMiddle thermostat and MC barostat as before
- LAMMPS
- Reimplemented purely in terms of pylammps API calls (no more bespoke regex parsing)
- OpenFF
Deprecations
- Deprecated SANITIZE_AS_KEKULE throughout for Mol sanitization
- Deprecated .analysis
- Deprecated maths.statistics
- Deprecated typetools.numpytypes.parametric
- Deprecated graphics.named_colors
- Deprecated openfftools.omminter and openfftools.mdobjects
- Merged several submodules of mdtools.openmmtools into .serialization and .forces submodules
Bugfixes
- Fixed long-standing barostat bleedover issue in OpenMM schedule runner - barostats will no longer persist from earlier simulations in a schedule
- Fixed lammps single-point energy test failures due to misguided exact float comparison
- Installation
- Fixed slow
lammpssolver import- Removed need to perform mixed install via pip in devtools/conda-envs
- Updated OpenFF stack version pins
- Added helpful PrerequisitePackageErrors throughout to guide user through install of missing-but-essential packages
- Fixed slow
What's Changed
- Pre-commit of release updates by @timbernat in #45
- Release cleanup by @timbernat in #46
- Polymerist 1.0.0. release by @timbernat in #47
Full Changelog: v0.1.5rc1...v1.0.0
0.1.5rc1
Minor feature cleanup and improvements to kekulization handling and chemical database query services
- Greatly expanded robustness of smileslib.chemdbqueries:
- Reimplemented core via Strategy pattern and provided concrete implementations for
- Added capability to check is services are online prior to attempting query
- Compiled comprehensive lists of queryable chemical properties and namespaces for each implementations
- Added service-agnostic get_chemical_property() wrapper for convenience
*Provided greater control over Kekulization in RDKit-derived functionality - Added enable_kekulized_drawing() and disble_kekulized_drawing() config methods to rdutils.rdkdraw
-* Made rdkdraw imported at toplevel rdutils - Added flag to disable Kekulization in SMILES string expansion (polymers.monomers.specification.expanded_SMILES(...))
- Added procrustean_string(...) function to genutils.textual.prettyprint (related to PROCRUSTES algorithm implemented in .polymers for copolymer sequencing)
0.1.4rc1
Minor fixes to README and optional dependencies
What's changed
- Fixed issue with accidental file redirect in NAGL install command in README
- Corrected typos in README
- Added missing
pubchempyrequirement to "chemdb" optional dependency category
0.1.3rc1
Overhaul of README and improvements to dependency management
What's changed
- Front-facing README completely rewritten to provide:
- Details on compatible OS and package managers
- More specific installation instruction
- Pip-compatible installation instructions
- Details on installing peripheral AM1-BCC toolkits
- Simplified dependencies
- Espaloma_charge is no longer required OR optional in pyproject.toml
- espaloma_charge dependency in release-build.yml changed from pip-based to conda-based
- Pre-import checks for cirpy and pubchempy added to smileslib.chemdbqueries
- Fixed str.capitalize() call in use_case arg to MissingPrerequisitePackage, as this was causing unintended lowercasing later in the string
- Former "jupyter" and "visuals" optional dependency categories consolidated into single "interactive" category
- Made "rich" a required dependency
0.1.1rc1
Minor tweaks to Python build files to get documentation and package index uploads working. No changes to code, only affects:
- pyproject.toml: Added pip dependencies
- readthedocs.yaml: Added pip install directive
- devtools/conda-envs/release-build.yml: Added Sphinx theme requirement to nudge ReadTheDocs build along
0.1.0rc1
Release candidate in-transition from beta to official release
What's changed
- Added new
molfilessubpackage for handling molecule file writing - Consolidated dynamic imports and dependency checking into genutils.importutils subpackage
- Added dependency check for non-pip installable dependencies (namely OpenFF stack, mBuild, OpenBabel, and OpenEye)
- Added generic tree-like data structure interface, used to reimplement file and directory trees
- Deprecated unintuitive "DOP" keyword in polymer builder in favor of explicit number of monomers
- Added Validation, end group auto-generation, and several convencience methods to MonomerGroup
- Added robust copolymer sequence checking and fitting ("PROCRUSTEAN sequence alignment"), including support for fractional base sequence repeats
- Updated OpenFF NAGL models
- Simplified OpenFF partial charge method and toolkit registration
- Increased test coverage throughout (particularly for new features)
0.0.1 Beta version
Pre-release version of polymerist.
Intended to:
- Checkpoint this version of polymerist prior to planned 1.0.0
- Allow reversion to pre-release build for dependent code
- Enable building of documentation for ReadTheDocs
- Enable testing of pip-installable version
Full Changelog: https://github.com/timbernat/polymerist/commits/v0.0.1-beta