Releases: European-XFEL/EXtra
Releases · European-XFEL/EXtra
Release list
2026.1.1
What's Changed
- Update Github action versions by @takluyver in #522
- Expose some more classes & functions from extra.calibration by @takluyver in #523
Full Changelog: 2026.1...2026.1.1
2026.1
What's Changed
- Use nans instead of zeros as a fill value in XGM.pulse_energy() by @JamesWrigley in #347
- Make imshow2() draw a colorbar by default by @JamesWrigley in #351
- Add a stub for extra-proposal by @JamesWrigley in #353
- Remove the TOF*Response recipes from the docs by @JamesWrigley in #359
- Ridgeplot utility function by @takluyver in #354
- Fix pulse alignment when retrieving train and pulse edges by @philsmt in #361
- Allow to use DataCollection object as point in time for CalibrationData by @philsmt in #360
- Update the install-extra.sh script for pixi by @JamesWrigley in #358
- Bump fonttools from 4.58.5 to 4.59.0 in /.github/dependabot by @dependabot[bot] in #364
- Bump pyzmq from 27.0.0 to 27.0.1 in /.github/dependabot by @dependabot[bot] in #365
- Bump fonttools from 4.59.0 to 4.59.1 in /.github/dependabot by @dependabot[bot] in #369
- Bump pyzmq from 27.0.1 to 27.0.2 in /.github/dependabot by @dependabot[bot] in #370
- Bump pandas from 2.3.1 to 2.3.2 in /.github/dependabot by @dependabot[bot] in #371
- Use CalibrationData.summary_table() to implement .markdown_table() by @takluyver in #372
- Update typing-extensions requirement from ~=4.14 to ~=4.15 in /.github/dependabot by @dependabot[bot] in #374
- Update platformdirs requirement from ~=4.3.8 to ~=4.4.0 in /.github/dependabot by @dependabot[bot] in #375
- Bump fonttools from 4.59.1 to 4.59.2 in /.github/dependabot by @dependabot[bot] in #376
- Added more tests for the Grating. by @daniloefl in #368
- Build wheels for newer Python versions by @takluyver in #377
- Bump pyzmq from 27.0.2 to 27.1.0 in /.github/dependabot by @dependabot[bot] in #378
- feat: jupyter widget for spectrometer calibration by @tmichela in #363
- Bump pyparsing from 3.2.3 to 3.2.4 in /.github/dependabot by @dependabot[bot] in #380
- Add method to group xarray by scan steps by @takluyver in #379
- Markdown repr for calibration conditions objects by @takluyver in #381
- Bump fonttools from 4.59.2 to 4.60.0 in /.github/dependabot by @dependabot[bot] in #382
- Bump pyparsing from 3.2.4 to 3.2.5 in /.github/dependabot by @dependabot[bot] in #383
- Allow passing DataArrays to fit_gaussian() and add
nans_on_failureby @JamesWrigley in #385 - Bump fonttools from 4.60.0 to 4.60.1 in /.github/dependabot by @dependabot[bot] in #386
- Fix variable initialization in
fit_gaussian()by @JamesWrigley in #387 - Bump pandas from 2.3.2 to 2.3.3 in /.github/dependabot by @dependabot[bot] in #388
- Bump matplotlib from 3.10.1 to 3.10.6 in /.github/dependabot by @dependabot[bot] in #393
- Update xarray requirement from <=2025.1.2 to <=2025.10.0 in /.github/dependabot by @dependabot[bot] in #389
- Update contourpy requirement from <=1.3.1 to <=1.3.3 in /.github/dependabot by @dependabot[bot] in #390
- Bump pint from 0.24.4 to 0.25 in /.github/dependabot by @dependabot[bot] in #392
- Bump extra-data from 1.21.0 to 1.22.0 in /.github/dependabot by @dependabot[bot] in #391
- Update xarray requirement from <=2025.10.0 to <=2025.10.1 in /.github/dependabot by @dependabot[bot] in #394
- Update numpy requirement from <=2.2.4 to <=2.3.3 in /.github/dependabot by @dependabot[bot] in #395
- Bump msgpack from 1.1.1 to 1.1.2 in /.github/dependabot by @dependabot[bot] in #397
- Update platformdirs requirement from ~=4.4.0 to ~=4.5.0 in /.github/dependabot by @dependabot[bot] in #398
- Minor docs fixes by @JamesWrigley in #399
- Bump matplotlib from 3.10.6 to 3.10.7 in /.github/dependabot by @dependabot[bot] in #400
- CookieboxCalibration: Add recipe test, allow deconvolution-calibration embedding, simplify normalization by @daniloefl in #367
- Bump h5py from 3.14.0 to 3.15.0 in /.github/dependabot by @dependabot[bot] in #401
- Update numpy requirement from <=2.3.3 to <=2.3.4 in /.github/dependabot by @dependabot[bot] in #402
- Bump pillow from 11.3.0 to 12.0.0 in /.github/dependabot by @dependabot[bot] in #403
- Bump h5py from 3.15.0 to 3.15.1 in /.github/dependabot by @dependabot[bot] in #404
- Access to dimension labels on calibration constants by @takluyver in #350
- Ensure
fit_gaussian()always returns a positive sigma by @JamesWrigley in #405 - Rename recipes to applications by @philsmt in #384
- Add CalibrationData.from_correction() method by @takluyver in #396
- Add shared header by @JamesWrigley in #407
- Use XMPL data to test CalibrationData.from_correction() with run number by @takluyver in #410
- Publicly expose the private
._pulses: XrayPulses | Noneattribute by @fadybishara in #411 - Update pint requirement from <=0.25 to <=0.25.1 in /.github/dependabot by @dependabot[bot] in #412
- Add test for specifying begin_at_strategy when finding constants by @takluyver in #409
- Add support for wrapped Julia arrays to imshow2() by @JamesWrigley in #413
- Update pint requirement from <=0.25.1 to <=0.25.2 in /.github/dependabot by @dependabot[bot] in #414
- Update xarray requirement from <=2025.10.1 to <=2025.11.0 in /.github/dependabot by @dependabot[bot] in #415
- Update numpy requirement from <=2.3.4 to <=2.3.5 in /.github/dependabot by @dependabot[bot] in #416
- Calibration: Skip making module numbers if first_module_index missing by @takluyver in #418
- Support
colorbar=Falsefor DataArray's in imshow2 by @JamesWrigley in #419 - Bump fonttools from 4.60.1 to 4.61.0 in /.github/dependabot by @dependabot[bot] in #420
- Fix config for mkdocstrings v1.0 by @takluyver in #421
- Bump extra-data from 1.22.0 to 1.23.0 in /.github/dependabot by @dependabot[bot] in #422
- Update platformdirs requirement from ~=4.5.0 to ~=4.5.1 in /.github/dependabot by @dependabot[bot] in #423
- Update xarray requirement from <=2025.11.0 to <=2025.12.0 in /.github/dependabot by @dependabot[bot] in #426
- Bump extra-data from 1.23.0 to 1.23.1 in /.github/dependabot by @dependabot[bot] in #427
- Bump extra-data from 1.23.1 to 1.23.2 in /.github/dependabot by @dependabot[bot] in #428
- Fix BAM time unit for legacy key format by @philsmt in #425
- Bump matplotlib from 3.10.7 to 3.10.8 in /.github/dependabot by @dependabot[bot] in #429
- Bump fonttools from 4.61.0 to 4.61.1 in /.github/dependabot by @dependabot[bot] in #431
- Bump tzdata from 2025.2 to 2025.3 in /.github/dependabot by @dependabot[bot] in #432
- Add PulsePattern.info() by @philsmt in #435
- Bump pyparsing from 3.2.5 to 3.3.1 in /.github/dependabot by @dependabot[bot] in #439
- Bump pillow from 12.0.0 to 12.1.0 in /.github/dependabot by @dependabot[bot] in #440
- Update numpy requirement from <=2.3.5 to <=2.4.0 in /.github/dependabot by @dependabot[bot] in #438
- Use fixed seed for random numbers in tests by @takluyver in https://github.com/European-XFEL/EXtra/p...
2025.1
What's Changed
- Add infrastructure and initial set of tests for ADQ component by @philsmt in #215
- Component for motors moving halfs of JF4M detector by @egorsobolev in #224
- Added analysis code used to calibrate Cookiebox and grating spectrometer by @daniloefl in #284
- Fix support for the
acquisition_timewith newer Karabacon versions by @JamesWrigley in #303 - Fix alignment between DLD data and external pulse information by @philsmt in #263
- Expose extra_data components in extra.components by @takluyver in #177
- Fix pulse alignment in ADQ raw data component by @philsmt in #310
- Account for additional indices in PulsePattern.is_constant_pattern by @philsmt in #313
- Use _reshape_flat_pulses rather than _reshape_pulses_by_train for pulse splitting by @philsmt in #312
- Added auxiliary tool to calculate the TOF instrument response (optionally deconvolve), and Virtual Spectrometer light by @daniloefl in #304
- Delete nonexistent arguments from a docstring by @JamesWrigley in #319
- Allow Scan.plot_bin_by_steps() to work for 2D binned results by @takluyver in #320
- Update changelog by @JamesWrigley in #325
- Fix Timepix3.spatial_bins when using custom arguments by @philsmt in #324
- Add tests to ADQ component for actual data retrieval by @philsmt in #316
FixPrevent building with Cython 3.1 by @takluyver in #328- Always use the passed axis in Scan.plot_bin_by_steps() by @JamesWrigley in #334
- Update EXtra-data & EXtra-geom to latest versions on CI by @takluyver in #337
- Add support for DataArrays to imshow2 by @JamesWrigley in #333
- Fix Scan.plot_bin_by_steps() with given axis for 2D result by @takluyver in #338
- Allow building with Cython 3.1.2 by @takluyver in #330
- [CI] Specify versions of pint & dependencies by @takluyver in #341
- Fix XGM.plot_pulse_energy() to not show an extra colorbar by @JamesWrigley in #345
- Improve handling of XGM data recording the wrong number of pulses by @JamesWrigley in #161
- Add calibration for 1D grating and improve existing interface in
recipesby @daniloefl in #318 - Implement hyperslicer2() for plotting image arrays by @JamesWrigley in #348
- Add reorder_axes_to_shape function by @takluyver in #349
- Align pulse information to the ADQ trains before using them by @philsmt in #332
- Sync CalCat API changes from internal repo by @takluyver in #254
- Release 2025.1 by @JamesWrigley in #346
New Contributors
- @daniloefl made their first contribution in #284
Full Changelog: 2024.2...2025.1
2024.2
What's Changed
- Add support for Karabacon 3.0.10 by @JamesWrigley in #212
- fix(dependency): add tabulate (used in markdown_table) by @kakhahmed in #214
- Fix sign for stage-to-time conversion in OpticalLaserDelay by @philsmt in #227
- Move XGM mock devices to their own module in .mockdata by @philsmt in #232
- Actually use title/xlabel/ylabel in Scan.plot_bin_by_steps() by @JamesWrigley in #237
- Fix initializing PumpProbePulses with an instrument string by @philsmt in #236
- Add a Timepix3 component by @philsmt in #231
- Add A_sign parameter for fit_gaussian() by @takluyver in #222
- Improve extrapolation exceptions in PumpProbePulses by @philsmt in #242
- Catch reported number of Timepix events exceeding buffer size by @philsmt in #250
- Relax contourpy dependecy to avoid version conflicts by @philsmt in #260
- Fix pulse slicing code to advance to next train on same pulse ID by @philsmt in #259
- Fix missing chapter link for Timepix component by @philsmt in #258
- Fill pulse traces with NaN/-1 if data is too short by @philsmt in #245
- Allow passing a figure size to Scan.plot() by @JamesWrigley in #262
- Only average over trains dimension in Scan.bin_by_steps() by @takluyver in #269
- Minor docs fixes by @JamesWrigley in #276
- Fix too restrictive auto detection in Timepix component by @philsmt in #275
- Prepare for releasing v2024.2 by @JamesWrigley in #282
Full Changelog: 2024.1.2...2024.2
2024.1.2
Also see the official changelog in our docs: https://extra.readthedocs.io/en/latest/changelog/#202412
What's Changed
- Add docs for extra.calibration module by @takluyver in #135
- Update Github actions to fix warnings about Node.js 16 by @takluyver in #144
- Implement fit_gaussian() to quickly fit a Gaussian by @JamesWrigley in #131
- Mask all non-finite values in fit_gaussian() by @JamesWrigley in #147
- Look in the fast data to find the max number of pulses by @JamesWrigley in #153
- Take empty trains into account when checking for constant pulse pattern by @philsmt in #156
- Some minor improvements to generic pulse components by @philsmt in #155
- Add a DLD component by @philsmt in #103
- Add support to align pulse-indexed data as new columns in DLD sparse data by @philsmt in #166
- [XGM] Add support for .pulse_energy() returning a Series, and .slow_train_energy() by @JamesWrigley in #162
- Add a component for optical laser delay by @philsmt in #165
- Optionally use negative pulse indices for PPL-only DLD pulses by @philsmt in #167
- Add Scan.split_by_steps() method by @takluyver in #169
- Fix missing index name in train-averaged BAM data by @philsmt in #171
- Add support to filter DLD hits for reconstruction method while loading by @philsmt in #170
- Add bad pixel flags to extra.calibration by @takluyver in #172
- Support more types for DLD dataframe extra columns by @philsmt in #173
- Add parameter to get only FEL or only pump laser mask from PumpProbePulses by @takluyver in #174
- Deprecate pulse dimension time in favor of pulseTime by @philsmt in #178
- Add constant fraction and dynamic leading edge discriminators by @philsmt in #25
- Add high-level interface for ADQ digitizer channels by @philsmt in #35
- Fix many typos and links in ADQ component docs and navigation by @philsmt in #188
- Fix insertion of aligned columns when original frame has none by @philsmt in #189
- Docs fixes, and document
PulsePattern.select_trains()by @JamesWrigley in #190 - Expose the DAMNIT API by @JamesWrigley in #164
- fix: convert conditions for CALCAT to float or string as expected. by @kakhahmed in #193
- Fix using a labelled series to compute pulse distances by @philsmt in #196
- Fix extra_compile_args in setup.py by @philsmt in #198
- Add missing EdgeInterpolation docs and various other text fixes by @philsmt in #197
- Detector motors component by @egorsobolev in #148
- Fix detector motors docstrings by @egorsobolev in #199
- Two line docstring fix for DelayLineDetector by @TimBerberich in #191
- Markdown table methods for calibration constants by @takluyver in #202
- Attempt to improve plots of scan positions by @takluyver in #201
- Enable coverage reporting in CI by @JamesWrigley in #205
- Add Python 3.12 to CI by @JamesWrigley in #207
- Prepare changelog for new release 2024.1.2 by @tmichela in #208
New Contributors
- @kakhahmed made their first contribution in #193
- @egorsobolev made their first contribution in #148
- @TimBerberich made their first contribution in #191
- @tmichela made their first contribution in #208
Full Changelog: 2024.1.1...2024.1.2
2024.1
Also see the official changelog in our docs: https://extra.readthedocs.io/en/latest/changelog/#20241
What's Changed
- Move the repr() logic into .info() by @JamesWrigley in #29
- Add get_version.py to excluded package data by @RobertRosca in #34
- Update the changelog by @JamesWrigley in #39
- Add extra.utils.imshow2 for easier image plotting by @JamesWrigley in #38
- Re-implement PulsePattern interface on top of labelled pulse IDs rather than mask by @philsmt in #40
- Add tag/diff links to the changelog by @JamesWrigley in #41
- Add DldPulses interface for pulse information in reconstructed DLD data by @philsmt in #42
- Add an installation script and installation docs by @JamesWrigley in #37
- Mention the cron job configuration in the README by @JamesWrigley in #43
- Activate env modules in install script by @RobertRosca in #45
- Initial implementation of Scan component by @JamesWrigley in #4
- Minor fixes for the Scan component by @JamesWrigley in #51
- Expose Scan.name by @JamesWrigley in #52
- Reorganize the component docs by @JamesWrigley in #49
- Scan bugs by @JamesWrigley in #56
- Add PumpProbePulses for combined FEL/PPL pulse patterns by @philsmt in #24
- Fix handling of trains without pulses by @philsmt in #100
- Add an XGM component by @JamesWrigley in #53
- Deprecate the
get_prefix from some method names by @JamesWrigley in #106 - Rename 'intensity' to 'energy' by @JamesWrigley in #108
- Prepare the changelog for a new release by @JamesWrigley in #109
Full Changelog: 2023.2...2024.1
2023.2
Initial release 🎉
What's Changed
- Remove import proxy machinery by @philsmt in #3
- Add initial documentation by @JamesWrigley in #1
- Scantool class and CI by @JamesWrigley in #2
- Enable dependabot by @JamesWrigley in #6
- PulsePattern component by @philsmt in #5
- Add a changelog by @JamesWrigley in #10
- Add version to package initializer and read during setup by @philsmt in #11
- Scantool compatibility and pretty-printing by @JamesWrigley in #21
- Replace setup.py with pyproject.toml by @RobertRosca in #27
- Add support to also take pulse data from PulsePatternDecoder devices by @philsmt in #20
- Final packaging touches by @philsmt in #17
- Support inherited members in docs by @JamesWrigley in #28
- Minor corrections to the installation docs by @JamesWrigley in #31
New Contributors
- @philsmt made their first contribution in #3
- @JamesWrigley made their first contribution in #1
Full Changelog: https://github.com/European-XFEL/EXtra/commits/2023.2