All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- placeholder.
- Add support for polyatomic core anchors.
- Bump CAT to 1.0.0 in preparation for a new scientific paper.
- Lay the groundwork for the new Nano-CAT ligand branching workflow.
- Add the remove_anchor_hydrogens option to the cone-angle workflow
- Minor improvements to computing the ligand conformer optimization cost function
- Improve the ligand conformation search
- Fix the CAT logger failing to write to stdout
- Set the default Indium (formal) charge to 3+
- Fix the ligand conformation optimizer failing for certain cyclic systems
- Only disable the rdkit SANITIZE_ADJUSTHS when strictly required
- Fix the anchor.kind = "mean" keyword being broke
- Added a Nano-CAT workflow for computing ligand cone angles.
- Allow multiple values for the bulkiness latice spacing.
- Improve the conformation ligands.
- Fix optimized geometries not being correctly written to .hdf5.
- Ensure that ligands are properly aligned after PLAMS optimizations.
- Fix an issue where certain properties could not be extracted from CP2K frequency jobs.
- Add the
anchor.multi_anchor_filter
option.
- Added the
qd.dissociate.qd_opt
keyword. - Fix thermochemical properties not properly being set to
nan
for crashed jobs.
- Allow
core.allignment: "surface"
for cores with <4 anchor atoms. - Allow QMFlows-style keywords to be parsed by the BDE workflow.
- Fix the
qd.dissociate.core_atom
and lig_count keys not being optional. - Added the
qd.dissociate.xyn_pre_opt
keyword.
- Added the option to specify dummy atoms as anchor group.
- Added the option to specify the format type of anchor groups (SMILES, SMARTS, etc.).
- Fixed an issue wherein anchor-group-parsing could fail for mono-atomic anchors.
- Added
packaging
andrdkit-pypi
as dependencies; manually installingrdkit
via conda is no longer necessary.
- Added the option to manually specify angle offsets the ligand vectors.
- Added the option to manually specify dihedral angle the ligand vectors.
- Added the option to invert the core vectors.
- Added the various ligand anchor parsing options to its core-based counterpart.
- Deprecated usage of
Molecule.get_formula
in favor of a PLAMS <=1.5.1-based backport. - Fixed CAT modifiying global
logging
settings.
- Add more advanced anchor-parsing options.
- Update for AMS 2021.
- Fixed various issues.
- Changed the default
optional.core.allignment
option from"sphere"
to"surface"
.
- Added the new
optional.core.anchor
andoptional.ligand.anchor
options, which are respectively aliases for the oldoptional.core.dummy
andoptional.ligand.functional_groups
options. - Added a new H3O+ .coskf file.
- Added a new template for LogP calculations.
- Enabled tests for Windows.
- Fixed a recent readthedocs failure.
- Improve the conformations of ringed systems; ring-substituents are now treated as fragments.
- For some reason the matplotlib logger is going bananas; its level has been changed from DEBUG (default) to INFO in order to silence it.
- Update the documentation for nlesc-nano/data-CAT#38.
- Relax the pandas version requirement.
- Updated the documentation for nlesc-nano/data-CAT#25.
- Fixed a bug where rdkit molecules were not properly converted into numpy arrays.
- Only perform optional.ligand.optimize.job2 if the preceding UFF optimization finishes without crashing.
- Remove a ligand if its optimization fails (_i.e._ an exception is raised).
- Fixed an issue where ligand anchoring groups could not be explicitly specified (docs).
- Improved the conformations of ligands with tri- and penta-valent pnictogen anchors.
- Fixed an issue where certain AMSJobs would have duplicate keys.
- Fixed an issue where certain ligands weren't exported when constructing multi-ligand quantum dots (see #115).
- Re-enabled tests for Python 3.6 (see #125).
- Switched from travis to GitHub Actions.
- Added tests using flake8, pydocstyle and doctest.
- Updated the Database documentation (see nlesc-nano/data-CAT#23).
- Upped the minimum Sphinx version to 2.1.
- Removed
sphinx-autodoc-typehints
. - Removed
requirements.txt
in favor of.readthedocs.yml
.
- Added a new conceptual DFT (CDFT) workflow to Nano-CAT (nlesc-nano/nano-CAT#57).
- Moved a number of functions to the nanoutils package.
- Added the option to perform ligand geometry optimizations at arbitrary levels of theory.
- Fixed a bug where ligands weren't properly rotated when
using
optional.ligand.optimize = False
. - Added tests for
CAT.utils.SetAttr
.
- Replaced
print()
calls withlogger.warning()
in all dye-related functions. - Added a recipe for calculating the synthetic accessibility score (SAS) as adapted from MolGAN.
- Added documentation for the new Nano-CAT
multi_ligand_job()
recipe.
- Version bump.
- Turned the
dye
functionality into a recipe inCAT.recipes
.
- Merged all features from the
dye
branch into the master. - Fixed an issue where custom forcefield settings are not properly parsed: #99.
- Added a try/except clause for job hashing in case rerun prevention is disabled: #98.
- Added new recipes to the documentation: #95 & #96.
- Fixed an issue where creating an object array would unpack a Molecule into Atoms: #94.
- Raise an Exception when failing to identify any atoms: #93.
- Added the option to decorate a qd surface with more than one type of ligand.
- Added the
optional.core.allignment
keyword for determining how ligands should be alligned with the core. Accepted values are"sphere"
and"surface"
. - #87: Ensure that part of the core-surface is accounted for when rotating ligands.
- #85 & #86: Issue a warning when atoms are too close when constructing QDs.
- #85 & #86: Improved warning handling.
- Moved the
CAT.recipes
module to Nano-CAT. - Moved the
CAT.attachment.qd_opt_ff
module to Nano-CAT. - Created the
CAT.workflow.key_map module
for storing aliases forDataFrame()
columns. - Cleaned the modules in
CAT.workflows
. - Updated tests.
- Moved
test_distribute()
to it's own module:CAT.attachment.distribution_utils
. - Added the
brute_uniform_idx()
for creating uniform/clustered distributions in a brute-force manner, i.e. by finding the global minimum/maximum within the set of all valid atom combinations. - Generalized the
array_combinations()
function, it now accepts any array-like object and can generate combinations along any user-specified axis. - Added the
get_nearest_neighbors()
function for finding thek
nearest-neighbors within a molecule. - Added a recipe for marking a (sub-)set of surface atoms:
CAT.recipes.mark_surface()
. - Added a recipe for dissociating specific sets of surface atoms:
CAT.recipes.dissociate_surface()
. - Update to the general structure of the
CAT.recipes
modules. - Multiple minor documentation adjustments.
- Changed the default value of the CP2K
EI_SCALE14
keyword from 0.0 to 1.0 (i.e. the CHARMM forcefield default). - Renamed the CAT
activation_strain.scale_elstat
keyword to.el_scale14
. - Renamed the CAT
activation_strain.scale_lj
keyword to.lj_scale14
. - Added the CAT
activation_strain.dump_csv
keyword for writing the raw potential energies to a set of .csv files. - Added the CAT
activation_strain.shift_cutoff
keyword. Sets the value of all non-bonded potential to zero atactivation_strain.distance_upper_bound
. - A number of consistency improvements to the Schemas.
- Small optimization improvements to
edge_dist()
. - Moved a number of functions around in the CAT.utils module.
- Added the
optional.qd.dissociate.lig_pairs
keyword for the BDE workflow.
- Fixed a bug
qd_opt_ff()
where the wrong dictionary key was validated. - Multiple updates to the CP2K MD template.
- Employ a more duck-typing based approach during the
schema
validation. - Fixed a bug in the
jobs
module where incorrectResults()
instances were returned. - Multiple documentation updates.
- Updated the
CAT.attachment.qd_opt_ff
module in preparation for nlesc-nano/nano-CAT#26.
- The function for applying distance weights during the subset-generation process is now configurable.
- The default distance weighting function has been changed to
weight = "np.exp(-x)"
. The old p-norm withp=-2
is still accessible via:weight = "x**-2"
- Added the option to interpolate between
"uniform"
/"cluster"
and"random"
. - The order of the
p
-norm is now configurable. - The variable representing the anchor-atom subset size has been changed
from
p
tof
.p
is now reserved for the order of thep-norm
. - #70: Fixed an issue with the
_parse_cluster_size()
index offset.
- It is now possible to create
"uniform"
distributions of clusters, the size of each cluster being user-specified.
- The
"uniform"
and"cluster"
distributions are now weighted by the distance rather than using a, less robust, distance truncation.
- Added the option, when constructing core atom subsets,
the use a distance matrix representing the shortest paths along the
edges of a polyhedron, rather than through space.
Enabling this option will result in more accurate
"uniform"
and"cluster"
distributions at the cost of increased computational time. - Updated and improved the
"uniform"
and"cluster"
distributions. - #65: Fixed a bug where
uniform_idx()
yielded the rolled, rather than unshifted, indices. - #64: Bug fix: the subset Schema now checks for instances of
int
Or
float. - #66: Return the identity (rotation) matrix if a
FloatingPointError
is encountered during the creation of rotation matrices. This can occur if a ligand consists of a single atom. - #66: Fixed a bug in the parsing of the mode parameter of
distribute_idx()
;"uniform"
and"cluster"
will now correctly link tonp.argmax
andnp.argmin
instead of the other way around.
- Added the ability to populate only a (random-ish) subset of core anchors with ligands.
- The ligand rotation check is now substantially faster: a distance cutoff has been implemented for the construction of distance matrices.
- Added an option perform an ensemble-averaged QD activation strain analyses in Nano-CAT.
- Removed a number of redundant modules.
- QD optimization now properly respect the
optional.qd.opt.use_ff
keyword.
- Minor tweaks to the default forcefield-related CP2K input files.
- Fixed a couple of bugs in the ligand dissociation workflow.
- Reworked the ligand dissociation procedure in Nano-CAT.
- Bug fix: Added a missing value to the to-be exported ASA columns.
- Finalize the introduction of a new CAT template system (
WorkFlow()
). - WiP: Implement an acitvation strain workflow with custom MATCH-based forcefields in Nano-CAT.
- Updated Nano-CAT to 0.2.4: nlesc-nano/nano-CAT#20.
- Updated Data-CAT to 0.1.5: nlesc-nano/data-CAT#17.
- Import assertions from AssertionLib rather than CAT.
- Simplified to
AsArray()
context manager. - Added the
["keep_files"]
option for quantum dot optimizations. - Removed
CRSJob()
andCRSResults()
; import them from PLAMS instead. - WiP: Introduction of a new CAT template system (
WorkFlow()
).
- Moved the ligand bulkiness workflow from the ligand to the qd block in the CAT input. See nano-CAT 0.2.3.
- Updated the formula for the ligand bulkiness calculation. See nano-CAT 0.2.3.
- Fixed a bug where hypervalent atoms where assigned incorrect atomic charges.
- Added multiple improvements (and bug fixes) to the ligand conformation optimizer.
- Added a context manager for the plams.Molecule.as_array() method.
- Added an optimizer for the ligand vector.
- Updated the ligand bulkiness workflow in nano-CAT 0.2.2.
- Added a workflow for calculating ligand bulkiness in nano-CAT 0.2.1.
- Implemented an interface to MATCH (Multipurpose Atom-Typer for CHARMM) in Nano-CAT.
- Added a workflow for creating CP2K input files with the MATCH-assigned atom types & charges.
- Updated the handling of assertions, see
CAT.assertions.assertion_manager
.
- Lowered Python version requirement from >=3.7 to >=3.6.
- Minor updates to the logger.
- Cleaned up CAT.jobs.py.
check_sys_var()
is now only called if an ADF-specific Job is requirest.- Job hashes are now stored in (and retrieved from) $JN.hash files (plain text).
- Added a permanent Database instance to .optional.database.db.
- Parsing of functional group SMILES strings is now carried out during the Schema validation.
- Updated Data-CAT to 0.1.2; changed status from pre-alpha to alpha (see nlesc-nano/data-CAT#13).
- Moved Molecule to file exporting (i.e. .xyz and .pdb creation) from data-CAT to CAT.
- Molecules can now be exported to .mol and .mol2 formats (in addition to .pdb and .xyz format).
- Increased the clarity of many exceptions (see #45).
- Updated the documentation.
- Introduced a proper logger (see #46).
- Updated data-CAT to 0.1.1 (nlesc-nano/data-CAT#12) and nano_CAT_ to 0.1.2 (nlesc-nano/nano-CAT#10).
- Added more tests.
- Added a more explicit error message to
_smiles_to_rdmol()
.
- Documentation update.
- Updated to the ligand dissociation module in nano-CAT (see nlesc-nano/nano-CAT#1).
- Added the
keep_files
keyword to the cosmo-rs and ligand dissociation workflows. Default value:True
. - See nlesc-nano/nano-CAT#9.
- CAT has been split into 3 seperate packages (see #39):
- Docstrings have been changed into NumPy style.
- Added typehints.
- Added the CAT.SettingsDataFrame and CAT.SettingsSeries classes.
- Added more tests.
- Cleaned up all input-parsing related modules.
- Custom function groups (i.e. SMILES strings) can now be specified in the input under the optional.ligand.functional_groups key (see #13).
- Added an interface between MongoDB and the CAT.Database class (see #11).
- All raw input scripts are now stored in the structures.hdf5 file (see: #36).
- Split CAT_database.py into database.py and database_functions.py.
- Unoptimized starting structures are now exported to the database.
- Added the sphinx autosummary extension.
- Improved interaction between the database and BDE module.
- Cleaned up BDE module.
- HDF5 indices are now always sorted when itneraction with the database.
- Numerous bug fixes.
- A couple of code-style changes.
- COSMO-RS calculations now allow for COSMO-surface construction at the DFT level.
- Introduction of the CAT.Database class.
- Central object of CAT has been changed into a dataframe of molecules rather than lists molecules.
- Updated a number of tests.
- Changed qmflows template import syntax (see: SCM-NV/qmflows#132).
- Changed yaml loader.
- Further (minor) updates and bug fixes to the database interaction.
- Overhaul of the bond dissociation energy (BDE) module.
- Job settings are now stored in the database.
- Massive overhaul of the CAT database interaction.
- Moved functions related to functiona group recognizition to CAT.attachment.ligand_anchoring.py.
- Multiple minor bug fixes.
- Empty Python project directory structure.