Changelog
Version 0.5.3.3
Fixed U_aniso parametrization and line search instability during refinement with anisotropic b-factor
Fixed kinetic module import
Set default similarity weight in difference refinement to 0
Version 0.5.3.2
Added 10GB Gram requirement for default gpu device selection
Slaved cli device detection to the default device selection
Fixed device mismatch crash on CUDA/MPS when the VDW pair list was refreshed mid-refinement: the maintenance-triggered rebuild now migrates the fresh VDW pair list, hydrogen topology, and exclusion hash to the model device (PR #19)
Version 0.5.3.1
Fixed problem where TorchRef defaults to old gpus and crashes, now checking if gpu is actually usable, before setting default device to cuda, if not it will default to cpu and print a warning.
Version 0.5.3
Fixed dtype inconsistencies and centralized dtype handling
Centralized default device handling
Added compatability with Metal performance shaders
Version 0.5.2
Cleaned up build solvent mask calculation
Added DeviceMixin for centralizing device handling accross all classes
Version 0.5.1
Fixed masked tensor problem under torch 2.9
Added Link parsing and restraint as bond
Reduced memory usage during neighbor search for VDW target
Separated out loss functions from targets, logic moved to base/targets
Added Triton kernels with analytic backward for all four xray Targets and most other Targets
Cached XrayTarget.get_data constants across closures
Replaced slow tensor[indices] backwards (sort + dedup scatter) with index_add_ in the symmetry extractor, scaler bin gathers, and MixedTensor; skip the indexing in get_iso / get_aniso when it covers all atoms
Version 0.5.0
Fixed two bugs in restraints related to peptide bonds
Centralized closure infrastructure in Lossstate, added systematic parameter freezing and cache management to the optimization functions as well as step pruning
Switched main xray target to bhattacharyya distance between observed and calculated structure factor distributions.
Added model error estimation based on bfactor distribution and fischer information
Fixed weighting necessity by moving to unscaled log likelihoods for all targetes, overfitting weights remain
Fixed missing angle in Proline geometry
Fixed restraint issues where peptide bonds were not being recognized accross altlocs
Fixed OOM errors in refinement caused by solvent map creation by explicitely handling symmetry
Implemented VDW restraints between symmetry mates, and vectorized spatial hashing for gpu friendly neighbor search
Migrated difference-refine script to the collection infrastructure, similarly migrated validate_ded and phased difference map
Added free CC calculation to validation_ded in reciprocal space
Deprecated scaler cli args as they are now always scaled together
Merged collection and basic kinetic infrastructure
Renamed column names in difference-refine output to be more concise and accurate
Fixed some bugs in collection architecture and
Added PDB deposition headers (REMARK 3 with refinement statistics) and mmCIF coordinate writing
Added unified RefinementMetadata that renders to both PDB and mmCIF using PDBx/wwPDB field names
All refinement CLI scripts now write both PDB and mmCIF by default
Added torchref.add-metadata CLI tool for adding metadata to existing files
Added input file header pass-through for PDB and mmCIF
Version 0.4.3
Refactored and standardised cli args
Unified validation-ded and difference-refine scaler logic and added flags for separate vs shared scalers
Added option for other difference targets mainly rice, Does not seem to make a difference
Version 0.4.2
Fixed bug where reflection data object in the refinement was not created on cuda when specified.
Fixed macos crash, not catching compilation error in c++ extension for scatter add
Version 0.4.1
fixed weird pytorch numpy compatability issues
Version 0.4.0
Added cli tool for running difference refinement
Refactored targets
Cleaned up and refactored dispatch in Structure factor calculation
Added fast cpu scatter c++ implementation for structure factor calculation
Added 2 custom triton kernels for structure factor calculation, one for the general case and one optimized for the common case of isotropic B factors and orthogonal cells
Added difference target
Added dataset scaling to DatasetCollection
Added Ramachandran restraints
Added partial compilation support for loss states
Added map module for calculating and writing maps
Added real space targets for refinement
Finetuned default hyperparameters for LBFGSRefinement
Switched from downloaded entire monomer library to lazy downloading of required monomers
Added basic Langevin thermostat based SA refinement implementation, needs testing and validation
Added 2 dev implementations of internal coordinate parametrisations, need more testing
Added a Amber loss target function, needs valdiation
Version 0.3.2
Hotfix for imports, bundled data and a minor bug in LBFGSRefinement
Version 0.3.0
Initial public release
Major changes:
Separated ED building and SF calculations out of the ModelFT module
Resolved scaler model dependency
Restraints are now tracked by the base model object instead of refinement
Targets are no longer dependent on the refinement object, only reference the respective model and if required ReflectionData object
Restructured math functions and renamed to base
Introduced centralized dtype handling for all functions to avoid conflicts, default dtypes are torch.float32, torch.int32, and torch.complex64
Unified base Symmetry and SpaceGroup object into the SpaceGroup object
Additions
Implemented Fast translation and rotation search functions for alignment module (rotation search does not work reliably at the moment)
Implemented Rigidbody refinement
Implemented and validated scaffold for full stack alignement (does not work reliably)
Added E factor conversion to the reflection_data class
Version 0.2.0
Core refinement framework
Support for MTZ, PDB, and CIF file formats
Geometry restraints (bonds, angles, torsions, planes)
Bulk solvent model
GPU acceleration via CUDA
Full state_dict support for checkpointing
Version 0.1.0
Internal release
Initial implementation
Basic structure factor calculations
Least squares target function