New release: Version 2.5

Dear Pyxel users,

The Pyxel version 2.5 is released.

This release brings a number of bugfixes and improvements.

šŸš€ New way to quickly install and use Pyxel šŸš€

We’ve introduced a new quickstart setup guide for faster and easier installation and use of Pyxel with uv.

How to get Started:

  1. First, install uv by following the installation guide here.
  2. Then, run the following commands to download the Pyxel tutorial notebooks (~200 MB) and open them in Jupyter Lab:
$ uvx pyxel-sim download-examples
Downloading examples: 388MB [00:08, 47.9MB/s]
Done in folder /.../pyxel-examples.

$ cd pyxel-examples
$ uvx --with pyxel-sim[model] --from jupyterlab jupyter-lab
[Server App] Jupyter Server is running at:
[Server App] http://localhost:8888/lab?token=...

This streamlined process makes it simplet to get Pyxel up and running quickly !

New parameter with_inherited_coords for pyxel.run_mode function

A new optional with_inherited_coords parameter has been added to the pyxel.run_mode function. This ensures that coordinates are inherited within the DataTree, simplifying the hierarchical structure and reducing data redundancy. For more detail, see Xarray issue #9077.

āš ļø This parameter is provisional. āš ļø

Example:

>>> import pyxel
>>> cfg = pyxel.load('configuration.yaml')

>>> result = pyxel.run_mode(
...     mode=cfg.running_mode,
...     detector=cfg.detector,
...     pipeline=cfg.pipeline,
...     with_inherited_coords=True,    # <== Use parameter 'with_inherited_coords'
... )        
>>> result
<xarray.DataTree>
Group: /
ā”‚   Dimensions:  ()
ā”‚   Data variables:
ā”‚       *empty*
ā”‚   Attributes:
ā”‚       pyxel version:  2.4.1+37.gff6da221.dirty
ā”‚       running mode:   Exposure
ā”œā”€ā”€ Group: /bucket
ā”‚   ā”‚   Dimensions:  (time: 100, y: 64, x: 64)
ā”‚   ā”‚   Coordinates:
ā”‚   ā”‚     * y        (y) int64 512B 0 1 2 3 4 5 6 7 8 9 ... 55 56 57 58 59 60 61 62 63
ā”‚   ā”‚     * x        (x) int64 512B 0 1 2 3 4 5 6 7 8 9 ... 55 56 57 58 59 60 61 62 63
ā”‚   ā”‚     * time     (time) float64 800B 0.0001 0.0001103 0.0001216 ... 1.437 1.585
ā”‚   ā”‚   Data variables:
ā”‚   ā”‚       photon   (time, y, x) float64 3MB 98.0 101.0 97.0 ... 1.465e+05 1.478e+05
|   |       ...
ā”‚   ā”‚       image    (time, y, x) uint16 819kB 79 76 73 74 ... 63018 62978 62896 63024
ā”‚   ā””ā”€ā”€ Group: /bucket/scene
ā””ā”€ā”€ Group: /data
    ā””ā”€ā”€ Group: /data/mean_variance
        ā””ā”€ā”€ Group: /data/mean_variance/image
                Dimensions:       (pipeline_idx: 100)
                Coordinates:
                  * pipeline_idx  (pipeline_idx) int64 800B 1 2 3 4 5 6 7 ... 94 95 96 97 98 99
                Data variables:
                    mean          (pipeline_idx) float64 800B 7.316 8.086 ... 6.299e+04
                    variance      (pipeline_idx) float64 800B 12.17 13.45 ... 1.348e+03

Breaking changes

The minimum versions of some dependencies were changed:

| Package | Old | New | |————–|——–|—————-| | matplotlib | 3.1 | 3.6+ |
| numba | 0.56.4 | 1.24+ | | numpy | 1.23 | 1.24+ | | pandas | | 1.5+ | | scikit-image | | 0.20.0+ | | scipy | | 1.10+ | | xarray | 2022.6 | 2023.12.0+ |

See more details and changes in the changelog.