sisl 0.16.4 Release Notes

Released on 2026-03-19.

Changes and improvements

  • Change trs default in MonkhorstPack depending on spin

    Now for non-collinear or higher spin-configurations it defaults to trs=False.

    (PR927)

  • Full implementation of Bloch 3D expansion

    It now fully utilizes the Toeplitz matrix structure for huge performance improvements.

    (PR951)

  • Improved performance of real-space self-energies

    Now there is only a single copy at the end of the integration, so it should be much faster.

    (PR951)

  • Improved Atoms.index usability

    Now one gets an empty list if no atoms are found. One can also get the combined indices of several atom types, e.g., atoms.index([“C”, “H”]).

    (PR954)

  • Changed spherical_harm argument order to match scipy 1.17

    Since this is generally not really used, it should be safe to do. Sorry for the inconvenience.

    (PR969)

  • Dropped support for Python 3.9

  • Enabled simpler rotation argument to Geometry.rotate

    This makes rotation arguments more versatile, and also easier to combine.

    One can now do lists of rotations that then gets parsed directly.

  • Implemented dependency-groups in pyproject.toml

    This affects developers where the docs build specification is now hidden from end-users.

  • added oxyz to extract coordinates of orbitals

    This allows easier access to orbital coordinates rather than having to convert indices to atoms and then to supercell coordinates.

    Basically equivalent to: `python atoms = geom.o2a(orbitals) geom.axyz(atoms) == geom.oxyz(orbitals) `

Bugfixes

  • Fixed spin-rotations

    Now one can denote rotations in a much more generic way.

    Removed rotation_matrix and superseeded by parse_rotation which returns a Quaternion which can be used to create a rotation-matrix.

    (PR924)

  • Reading the basis-enthalpy for Siesta 5.4 changed

    (PR929)

  • Fixed finding coordinates within elliptical cylinders

    (PR947)

  • Fixed import error for scipy deprecations

    (PR968)

  • Fixed order in ORB_INDX files when species are not linear

    (PR971)

  • Fixed AtomCategory usage when sisl.geom hasn’t been imported

    (PR982)

  • bug fix for pandas >= 3 migration

    (PR983)

  • DIIS mixing now uses a scaling factor for inverse

    This provides a better stability for the inversion algorithm when the metrics are much bigger than 1.

  • Fixed reshape calls, removed from ndarray in later versions

  • Fixed skewed cell neighbor search

    For the linear neighbor search mechanism it needed to account for skewed cells when the binsize is very close to the inter-atomic distances.

    (reported by @ialcon on Discord, thanks!)

Documentation

  • Fixed wording in Geometry.scale documentation

    It is now clearer that both lattice vectors and atomic coordinates are scaled.

    (PR949)

Internal development changes

  • Bumped CI to Python 3.14

    (PR978)