C++14 (or later) is required to build the library, C++17 (or later) to build Python bindings.
Expect breaking changes, especially in Python bindings.
The lists below are not complete, but should cover most of the changes.
Library
- Added unified logging of warnings/errors from various gemmi functions (class Logger)
- replaced string
Model::name
with intModel::num
- mmcif: better handling of null auth_comp_id
- fixes for mmJSON
- Removed deprecated functions:
- UnitCell.fractionalization_matrix and orthogonalization_matrix – use frac.mat and orth.mat
- count_hydrogen_sites() – use has_hydrogen() or count_atom_sites(gemmi.Selection('[H,D]')
- Grid::resample_to() – use interpolate_grid()
- unified API of Grid interpolation functions. They now have parameter
order
that can be 0 (nearest value), 1 (linear interpolation), or 3 (cubic). In C++ there are also functions such as trilinear_interpolation() to ensure no overhead. - to_pdb: write HET records
- Extended selection syntax with:
[metals]
and[nonmetals]
. - Added function set_is_metal() intended for debatable metalloids
- improved interoperability with MMDB (a CCP4 library)
- MonLib: removed
read_cif
args - mtz: fixed writing BATCH records
- hydrogen placement: fixes needed for new files with metals in CCP4 Monomer Library
- pdb: fixed reading TLS S tensor
- Structure metadata: expanded RefinementInfo
Python
- Python bindings migrated from pybind11 to nanobind.
- Much lower runtime overhead, faster build times, better error diagnostics.
- Built-in typing stubs.
- Only Python 3.8+.
- Sadly, no support for Buffer Protocol. It was replaced with NumPy
__array__
methods.
For NumPy, you can also use.array
properties that were available also in the previous releases. - No implicit conversions from list to ndarray, and from bytes to string (let me know where it causes problems)
- gemmi.ValueSigmaAsuData.value_array has now shape (N,2)
- Added pickling support for Structure, Model, Chain, Residue, Atom, cif.Document, cif.Block.
- Added function interpolate_position_array (#323).
- Python extension module is now installed into
site-packages/gemmi/
(this change should be invisible to the user)
Program
- gemmi convert --sifts-num is now more customizable
- gemmi sf2map: added option --check (see docs)
- gemmi cif2mtz: add a rule to spec to convert
pdbx_F_calc_with_solvent
toF-model
(+phase) - gemmi xds2mtz: handles merged files from XSCALE
- gemmi mtz2cif and merge: recognize extension .ahkl as XDS file