CHANGELOG¶
v1.11.0¶
Added:
Added reusable 3D ligand atom mapping visualization helpers,
display_mapping_3d()anddisplay_mappings_3d(), togufe.visualization.mapping_visualization.LigandAtomMapping.view_3d()now uses the shareddisplay_mapping_3d()helper internally (PR #748).
v1.10.0¶
Added:
Added transparent support for compressed PDB and PDBx/mmCIF loading in
ProteinComponentandSolvatedPDBComponent, including file-like binary streams, viafrom_pdb_file()andfrom_pdbx_file()(PR #777).Added
gufe.utils.magic_open()for opening plain-text or compressed text inputs through a single interface, with support for paths as well as binary and text streams (PR #777).
v1.9.0¶
Added:
Added a how-to guide for defining a custom
Component(PR #667).Added a
.validate()method to gufe Components (PR #732).gufe.protocol.protocoldag.execute_DAGnow has the ability to resume DAG execution by passing in a path for results caching intocache_basedir(PR #738).Added two new Components, a
SolvatedPDBComponentfor explicitly solvated systems, including periodic box vectors, and aProteinMembraneComponentthat inherits fromSolvatedPDBComponentand can be used downstream for type checking of solvated protein membrane appropriate settings (PR #635).Added a
ComponentValidationErrortype to be used specifically whenComponent.validate()fails (PR #766).
Changed:
v1.8.0¶
Added:
Added
__iter__to theExternalStorageclass. This makes it easier to iterate through all the files in a storage object (PR #657).AlchemicalArchivefor exportingAlchemicalNetworks and theirTransformationProtocolDAGResults (PR #687).Added
BaseSolventComponent, a base class for solvated components (PR #704).KeyedChain.decode_subchains(func)allows decoding constituentGufeTokenizableobjects whenever the passed function evaluates to a truthy value when operating on the keyed dicts of those gufe tokenizables within theKeyedChain(PR #634).KeyedChain.to_gufenow optionally accepts a dict-like object used forGufeTokenizablecaching when decoding theKeyedChain. This is useful when decoding multiple constituentGufeTokenizableobjects from the sameKeyedChain. It is recommended to useKeyedChain.decode_subchains, which automatically takes advantage of this feature, instead of this mechanism directly (PR #634).
Deprecated:
LigandNetwork.to_rbfe_alchemical_network()has been deprecated and will be removed in gufe v2.0 (PR #726).
Fixed:
v1.7.1¶
Fixed:
v1.7.0¶
Added:
Added method
LigandAtomMapping.get_alchemical_charge_difference(). This replaces the functionality of the now-deprecated methodopenfe.utils.ligand_utils.get_alchemical_charge_difference()inopenfe(PR #602).Added method
ChemicalSystem.contains()to check if aComponentorComponenttype is present in theChemicalSystem(PR #608).Added method
ChemicalSystem.get_components_of_type()to return a list ofComponents that match theComponenttype in theChemicalSystem(PR #608).Added
LigandAtomMapping.view_3d()method (previously implemented asopenfe.utils.visualization_3D.view_mapping()(PR #646).Added optional
stderrandstdoutarguments togufe.protocols.protocoldag.execute_DAG()(PR #600 and PR #638).
Changed:
The default short range cutoff
nonbonded_cutoffin OpenMMSystemGeneratorFFSettings has been reduced to 0.9 nm in line with best practices. (PR #648).The default small molecule force field version has been updated from openff-2.1.1 to openff-2.2.1 (PR #601).
FloatQuantityis no longer supported. Instead, useGufeQuantityandspecify_quantity_units()to make aTypeAlias. See the how-to guide for a small example of how to define a customQuantity.(PR #584).System generator setting
nonbonded_cutoffno longer attempts to coerce ambiguous inputs tounit.nanometer. Instead, a length unit is required, e.g.2.2 * unit.nanometeror"2.2 nm"(PR #584).ThermoSettingsparameterspressureandtemperatureno longer attempt to coerce ambiguous inputs to unts. Instead, the units must be passed explicitly, e.g.1.0 * units.baror"1 bar"for pressure, and300 * unit.kelvinor"300 kelvin"for temperature (PR #584 and PR #637).
Fixed:
We now ensure that all
ProtocolUnits inprotocol_unitsfor aProtocolDAGResultare included inself._unit_result_mapping, ensuring that calls toself.ok()do not raise aKeyErrorin cases where aProtocolUnitResultwas never executed for a givenProtocolUnit(PR #622).Fixed bug where pdb files containing phosphorous would cause an error when creating a
ProteinComponent(PR #639)
v1.6.1¶
Changed:
ambertoolsis no longer a dependency (PR #620 <https://github.com/OpenFreeEnergy/gufe/pull/620>_)
v1.6.0¶
Added:
Added support for python 3.13, including support for serialization/deserialization between python 3.12 and 3.13 (PR #577).
Changed:
Consolidated the contents of
gufe.custom_codecsandgufe.custom_jsoninto thegufe.serialization.jsonmodule (PR #532).
v1.5.0¶
Added:
Added support OpenMM 8.2 (PR #539)
v1.4.1¶
Fixed:
Fixed a typo in the gufe 2D visualization code which affected bond highlighting (PR #545)
v1.4.0¶
Added:
GufeTokenizableobjects now have theto_msgpackandfrom_msgpackmethods for MessagePack serialization and deserialization. (PR #372)Protocolobjects now have the_validateabstract method andvalidatemethod. If_validateis implemented by aProtocolauthor, calls tovalidatewill validate the inputs provided without needing to create aProtocolDAG. (PR # 412)
Changed:
ProteinComponent.to_openmm_topologynow also adds some OpenMM bond type information as objects, if detected. (#501)An expanded set of ions has been added to
components/proteincomponent.pybased on amber (https://github.com/Amber-MD/AmberClassic/blob/42e88bf9a2214ba008140280713a430f3ecd4a90/dat/leap/lib/atomic_ions.lib#L1C1-L68C6).ions_dictprovides names and charges. Now, net charges for ions are taken from it, instead ofGetDefaultValence()fromrdkit.Chem.GetPeriodicTable()function.openff.modelsis no longer supported, so we now vendor it. This will not require any changes in user code. See issue #397 and PR #535 for more details.
Fixed:
Fixed behavior of
ProteinComponent.to_openmm_topologyto correctly assignintorNonetypes to bond order for OpenMM, instead of objects. (#501)
v1.3.0¶
Added:
Added ExecutionInterrupt, a special exception that does not get handled as a
ProtocolUnitFailure.
Changed:
Nodes and edges are now sorted by inchikey before being added to a networkx graph in the
LigandNetwork.graphproperty. This replaces gufekey sorting which is not stable between versions and should result in reproducible network generation.The message stating that partial charges are already present in an
ExplicitMoleculeComponentis now included inlogger.info, rather than as a warning message. This should make output significantly less noisy for some users.Protocolsubclasses now require that the_settings_clsattribute is set to the intendedSettingsBaseModelsubclass. This attribute is validated duringProtocolinstantiation.GufeTokenizable.from_jsonnow falls back to loadingdictrepresentation iffrom_keyed_chainfailsExplicitMoleculeComponentnow usesGufeTokenizableto_jsonandfrom_jsonmethods via inheritance
Deprecated:
Transformation.dump,Transformation.loadare now deprecated, useTransformation.to_jsonandTransformation.from_jsoninstead
Fixed:
Fixed bug where an error was only being raised if the difference between the sum of partial charges and the small molecule’s net charge was a positive value. Behavior has been fixed such that negative discrepancies now raise an error as well.
Under some rare circumstances calling
SmallMoleculeComponents.to_openff()may have led to hydrogens being re-assigned when converted to OpenFF Molecules (e.g. during Protocol execution).SmallMoleculeComponentsnow explicitly pass thehydrogens_are_explicit=Trueflag on OpenFF Molecule creation to avoid this issue.
v1.2.0¶
Added:
Added Protocol errors hierarchy
Added AtomMappingError
Added LigandNetwork.trim_graph
Added warning when pickling an
ExplicitMoleculeComponentthat RDKit mol properties not preserved by default.JSON encoder now uses zstandard compression .
v1.1.0¶
Added:
Use rever to manage changelog
KeyedChain GufeTokenizable representation was added, allowing gufe objects to be deduplicated when serializing GufeTokenizables (PR #286).
Added to_json and from_json convenience methods to GufeTokenizables to more easily convert to a JSON keyed chain representation (PR #368).
Changed:
Minimum Python version has been raised to v3.10 (PR #340)
Fixed:
Fixed an issue where partial charges were not being read from rdkit Molecules where atom level properties were not set. This occured mainly when reading from an SDF file with partial charge tags (PR #312).
Fixed an issue where ProtocolDAG DAG order & keys were unstable / non-deterministic between processes under some circumstances (PR #315).
Fixed a bug where edge annotations were lost when converting a
LigandNetworkto graphml, all JSON codec types are now supported.