****** 0.15.0 ****** Released 13 of August 2024. Contributors ============ A total of 4 people contributed to this release. People with a "+" by their names contributed a patch for the first time. * Nick Papior * Nils Wittemeier * Pol Febrer * Thomas Frederiksen Pull requests merged ==================== A total of 92 pull requests were merged for this release. * :pull:`#393 <393>`: Linear and efficient neighbour finder * :pull:`#496 <496>`: Calculate psi values on a sparse grid, to accelerate multiple... * :pull:`#497 <497>`: mnt: changed spin_squared name to other name * :pull:`#647 <647>`: Added a node to keep track of files * :pull:`#651 <651>`: added typing hints for Lattice and LatticeChild * :pull:`#652 <652>`: added sanitize to SparseCSR and __setitem__ * :pull:`#658 <658>`: Bump pypa/gh-action-pypi-publish from 1.8.10 to 1.8.11 * :pull:`#659 <659>`: Bump JamesIves/github-pages-deploy-action from 4.4.3 to 4.5.0 * :pull:`#660 <660>`: Bump actions/setup-python from 4 to 5 * :pull:`#662 <662>`: Bump github/codeql-action from 2 to 3 * :pull:`#663 <663>`: Bump actions/upload-artifact from 3 to 4 * :pull:`#664 <664>`: Bump actions/download-artifact from 3 to 4 * :pull:`#665 <665>`: moving towards functional programming in sisl * :pull:`#666 <666>`: Support for conditional expressions on workflows. * :pull:`#667 <667>`: ensure that workflows have (and transmit) the right state * :pull:`#668 <668>`: WIP: Added a matrix plot * :pull:`#670 <670>`: Missing fdf flags error * :pull:`#672 <672>`: first try at implementing bond-order calculations * :pull:`#673 <673>`: removed selector from code base * :pull:`#679 <679>`: Bump codecov/codecov-action from 3 to 4 * :pull:`#681 <681>`: Fix multisize 3D balls in plots * :pull:`#682 <682>`: Added Jmol colors as defaults for atoms. * :pull:`#683 <683>`: Added pre-commit config * :pull:`#684 <684>`: Some tweaks to atom colors * :pull:`#686 <686>`: 579 dftb hamiltonian * :pull:`#692 <692>`: Lazy loading of the viz module * :pull:`#693 <693>`: Fix wheels workflow * :pull:`#695 <695>`: added typing in lots of io places, added SileSlicer * :pull:`#696 <696>`: Bump pypa/gh-action-pypi-publish from 1.8.11 to 1.8.12 * :pull:`#697 <697>`: Optimize nsc after reading Hamiltonian from wann90 output * :pull:`#702 <702>`: fixed #700 by reverting 7cf88f1a5 * :pull:`#704 <704>`: Bump pypa/gh-action-pypi-publish from 1.8.12 to 1.8.14 * :pull:`#706 <706>`: cleaned finder and removed pbc (getting it from Lattice) * :pull:`#710 <710>`: removed txtSileOrca.no/info.no since it was never present * :pull:`#711 <711>`: added warning for complex grids and isosurface * :pull:`#714 <714>`: 675 documentation * :pull:`#715 <715>`: Bump pypa/cibuildwheel from 2.16 to 2.17 * :pull:`#717 <717>`: Fix for reading spinful CHG/CHGCAR * :pull:`#722 <722>`: Add `read_gtensor` and `read_hyperfine_coupling` to `txtSileORCA` * :pull:`#723 <723>`: add test for reading Hamiltonian from wannier90 output * :pull:`#725 <725>`: Additional energy units * :pull:`#726 <726>`: `units` as parameter in `read_*` * :pull:`#727 <727>`: Resolve Issue #716 * :pull:`#729 <729>`: Minor ORCA/VASP documentation improvements * :pull:`#734 <734>`: Remove deprecated `bc` argument to `Grid` * :pull:`#736 <736>`: Some polishing of `sisl.nodes` * :pull:`#737 <737>`: added math notation convention * :pull:`#739 <739>`: Ensure __module__ is fine on node class creation * :pull:`#742 <742>`: Draft: add vectorsSileSIESTA for parsing vibra output * :pull:`#743 <743>`: Added specific functions to create animations and subplots * :pull:`#746 <746>`: 745 rtd files * :pull:`#749 <749>`: Ensure c-order for `Geometry` coordinates * :pull:`#750 <750>`: `norm2` as atom-resolved quantity * :pull:`#751 <751>`: made State.inner a very flexible matrix product * :pull:`#752 <752>`: added hexagonal and goldene * :pull:`#753 <753>`: removed sisl.plot from the code base * :pull:`#754 <754>`: Reading spin densities from CHGCAR * :pull:`#755 <755>`: Bump JamesIves/github-pages-deploy-action from 4.5.0 to 4.6.0 * :pull:`#757 <757>`: Plot update on getting attributes * :pull:`#758 <758>`: Added declaration of some attributes in Figure * :pull:`#759 <759>`: Removed nodes from `sisl` * :pull:`#761 <761>`: removed 3.8 support, bumped min to 3.9 * :pull:`#762 <762>`: CI also run on minimal installation * :pull:`#763 <763>`: changed phonon displacement shape * :pull:`#765 <765>`: Modifying the returns of the neighbor finder * :pull:`#767 <767>`: fixed pbc usage across sisl, fixes #764 * :pull:`#769 <769>`: Bump pypa/cibuildwheel from 2.17 to 2.18 * :pull:`#771 <771>`: Removed leftover print * :pull:`#772 <772>`: Removed deprecated argument `diag->projection` * :pull:`#773 <773>`: Dihedral angles * :pull:`#774 <774>`: Bump JamesIves/github-pages-deploy-action from 4.6.0 to 4.6.1 * :pull:`#776 <776>`: Add support for sisl in nodify's GUI * :pull:`#779 <779>`: fixed reading geometries from fdf + XV + STRUCT * :pull:`#780 <780>`: Allow dash to be set in bands plots. * :pull:`#781 <781>`: Allow tuning matplotlib subplots. * :pull:`#784 <784>`: Legend grouping in bands plots * :pull:`#786 <786>`: Allow custom color scales across sisl.viz * :pull:`#787 <787>`: Clarify viz dependencies error * :pull:`#788 <788>`: Bump pypa/cibuildwheel from 2.18 to 2.19 * :pull:`#789 <789>`: Bump pypa/gh-action-pypi-publish from 1.8.14 to 1.9.0 * :pull:`#790 <790>`: fixed lots of parallel calculations * :pull:`#792 <792>`: trying to remove numpy 2 (as a temporary work-around) * :pull:`#793 <793>`: adding test for parallel calculation * :pull:`#796 <796>`: Clarify out of memory error on density * :pull:`#797 <797>`: 766 shc * :pull:`#803 <803>`: Bump JamesIves/github-pages-deploy-action from 4.6.1 to 4.6.3 * :pull:`#804 <804>`: ensured building against numpy>=2 * :pull:`#805 <805>`: Fix bug with numpy v2.0 * :pull:`#807 <807>`: Fix fatbands with negative size * :pull:`#809 <809>`: enabled vacuum for all geometries with non-pbc directions * :pull:`#812 <812>`: completed tests rearrangement * :pull:`#818 <818>`: fixing many simple PEP-585 deprecations [0.15.0] - 2024-08-13 --------------------- Added ^^^^^ * conversion of list-like elements to `Lattice` * vacuum argument for all `sisl.geom` methods that can use it * `Geometry.find_nsc`, alternate method for calculating `nsc` with more options * `sisl._debug_info` for more complete debug information * `axes` argument added to `derivative` to only calculate on a subset of directions (can greatly improve performance for some systems) * `operator` argument added to `derivative` to apply an operator to `dHk` and `dSk` matrices. of directions (can greatly improve performance for some systems) * added `apply_kwargs` to methods which uses a `BrillouinZone` object. This enables one to leverage parallel processing for calculations. * `SISL_PAR_CHUNKSIZE=25`, new default parameter for parallel processing. Can greatly improve parallel processing of BZ integrations * added `vectorsSileSiesta` to read vibra eigenmode output * added `dihedral` to `Geometry`, :pull:`#773 <773>` * ability to retain sub-classes through `.new` calls * added `Listify` to ensure arguments behaves as *iterables* * setter for `Lattice.pbc` to specify it through an array * `Lattice.volumef` to calculate a subset volume based on axes * added `write_grid` to Siesta binary grid files * added the `goldene` 2D lattice, a `hexagonal` Gold 2D structure * added the `hexagonal` 2D lattice, close-packed FCC(111) surface * improved `atom` projections of states, :pull:`#750 <750>` * improved typing system * `units` to `read_*` for some `Sile`s, :pull:`#726 <726>` * enabled reading the Hamiltonian from the Wannier90 _tb.dat file, :pull:`#727 <727>` * "Hz", "MHz", "GHz", "THz", and "invcm" as valid energy units, :pull:`#725 <725>` * added `read_gtensor` and `read_hyperfine_coupling` to `txtSileORCA`, :pull:`#722 <722>` * enabled `AtomsArgument` and `OrbitalsArgument` to accept `bool` for *all* or *none* * enabled `winSileWannier90.read_hamiltonian` to read the ``_tb.dat`` files * `atoms` argument to `DensityMatrix.spin_align` to align a subset of atoms (only diagonal elements between the atoms orbitals) * added an efficient neighbor finder, :pull:`#393 <393>` * enabled reading DFTB+ output Hamiltonian and overlap matrices, :pull:`#579 <579>` * `bond_order` for `DensityMatrix` objects, :pull:`#507 <507>` * better error messages when users request quantities not calculated by Siesta/TBtrans * functional programming of the basic sisl classes Now many of the `Geometry|Lattice|Grid.*` manipulation routines which returns new objects, are subjected to dispatch methods. E.g. sisl.tile(geometry, 2, axis=1) geometry.tile(2, axis=1) will call the same method. The first uses a dispatch method, and a `SislError` will be raised if the dispatch argument is not implemented. * `SparseCSR.toarray` to comply with array handling (equivalent to `todense`) * enabled `Grid.to|new` with the most basic stuff str|Path|Grid|pyamg * `Shape.translate`, to easily translate entire shape constructs, :pull:`#655 <655>` * Creation of chiral GNRs (`kind=chiral` in `sisl.geom.nanoribbon`/`sisl.geom.graphene_nanoribbon` as well as `sisl.geom.cgnr`) * Creation of [n]-triangulenes (`sisl.geom.triangulene`) * added `offset` argument in `Geometry.add_vacuum` to enable shifting atomic coordinates * A new `AtomicMatrixPlot` to plot sparse matrices, :pull:`#668 <668>` Fixed ^^^^^ * PEP-585 compliant * buildable for numpy>2, :pull:`#791 <791>` * `BrillouinZone.tocartesian()` now defaults to `k=self.k` * reading XV/STRUCT files from fdf siles could cause problems, :pull:`#778 <778>` * `Geometry.[ao][us]c2[su]c` methods now retains the input shapes (unless `unique=True`) * lots of `Lattice` methods did not consistently copy over BC * `BrillouinZone.volume` fixed to actually return BZ volume use `Lattice.volume` for getting the lattice volume. * xsf files now only respect `lattice.pbc` for determining PBC, :pull:`#764 <764>` * fixed `CHGCAR` spin-polarized density reads, :pull:`#754 <754>` * dispatch methods now searches the mro for best matches, :pull:`#721 <721>` * all `eps` arguments has changed to `atol` * methods with `axis` arguments now accepts the str equivalent 0==a * documentation links to external resources * fixed `chgSileVASP.read_grid` for spinful calculations * `txtSileOrca.info.no` used a wrong regex, added a test * raises error when requesting isosurface for complex valued grids, :pull:`#709 <709>` * some attributes associated with `Sile.info.*` will now warn instead of raising information * reading matrices from HSX files with *weird* labels, should now work (*fingers-crossed*) * `Atom(Z="1000")` will now correctly work, :pull:`#708 <708>` * `AtomUnknown` now also has a default mass of 1e40 * changed `read_force_constant` to `read_hessian`, the old methods are retained with deprecation warnings. * `pdosSileSiesta` plotting produced wrong spin components for NC/SOC * `tqdm` changed API in 2019, `eta=True` in Notebooks should now work * `SparseCSR` ufunc handling, in some corner cases could the dtype casting do things wrongly. * fixed corner cases where the `SparseCSR.diags(offsets=)` would add elements in non-existing elements * some cases of writing orthogonal matrices to TSHS/nc file formats :pull:`#661 <661>` * `BDOS` from TBtrans calculations now returns the full DOS of all (Bloch-expanded) atoms * `Lattice` objects now issues a warning when created with 0-length vectors * HSX file reads should respect input geometry arguments * enabled slicing in matrix assignments, :pull:`#650 <650>` * changed `Shape.volume()` to `Shape.volume` * growth direction for zigzag heteroribbons * `BandStructure` points can now automatically add the `nsc == 1` axis as would be done for assigning matrix elements (it fills with 0's). Removed ^^^^^^^ * `degenerate` argument in `velocity`/`derivative`, they do not belong there * `xvSileSiesta.read_geometry(species_as_Z)`, deprecated in favor of `atoms=` * `structSileSiesta.read_geometry(species_as_Z)`, deprecated in favor of `atoms=` * `Atom.radii` is removed, `Atom.radius` is the correct invocation * `sisl.plot` is removed (`sisl.viz` is replacing it!) * `cell` argument for `Geometry.translate/move` (it never worked) * removed `Selector` and `TimeSelector`, they were never used internally Changed ^^^^^^^ * internal test structure, should improve future progress * `Lattice.parameters` now returns a 2-tuple of ``length, angles`` * units of `conductivity` has changed to S / Ang * `conductivity` is deprecated, use `ahc` and `shc` instead * `berry_curvature` has completely changed, checks it API * BZ apply methods are now by default parallel (if ``SISL_NUM_PROCS>1``) * `hsxSileSiesta.read_hamiltonian` now implicitly shifts Fermi-level to 0 (for newer HSX versions) * deprecated `periodic` to `axes` argument in `BrillouinZone.volume` * changed `Eigenmode.displacement` shape, please read the documentation * bumped minimal Python version to 3.9, :pull:`#640 <640>` * documentation build system on RTD is updated, :pull:`#745 <745>` * `gauge` arguments now accept 'cell' and 'orbital' in replacements for 'R' and 'r', respectively * `siesta.*.read_basis` now defaults to read an `Atoms` object with all atoms * `atoms.specie` changed to `atoms.species`, generally species is the singular form * `in_place` arguments changed to `inplace` * renamed `stdoutSileVASP` to `outcarSileVASP`, :pull:`#719 <719>` * deprecated scale_atoms in favor of scale_basis in `Geometry.scale` * changed default number of eigenvalues calculated in sparse `eigsh`, from 10 to 1 * `stdoutSileSiesta.read_*` now defaults to read the *next* entry, and not the last * `stdoutSileSiesta.read_*` changed MD output functionality, see :pull:`#586 <586>` for details * `AtomNeighbours` changed name to `AtomNeighbor` to follow :pull:`#393 <393>` * changed method name `spin_squared` to `spin_contamination` * removed `Lattice.translate|move`, they did not make sense, and so their usage should be deferred to `Lattice.add` instead. * `vacuum` is now an optional parameter for all ribbon structures * enabled `array_fill_repeat` with custom axis, to tile along specific dimensions * Importing `sisl.viz` explicitly is no longer needed, as it will be lazily loaded whenever it is required.