Skip to content

0.7.0

Latest
Compare
Choose a tag to compare
@wojdyr wojdyr released this 30 Nov 20:02
· 9 commits to master since this release

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 int Model::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 to F-model (+phase)
  • gemmi xds2mtz: handles merged files from XSCALE
  • gemmi mtz2cif and merge: recognize extension .ahkl as XDS file