This page contains a summary of changes between the official ASpecD releases. Only the biggest changes are listed here. A complete and detailed log of all changes is available through the GitHub Repository Browser.

Version 0.9.2

Released 2024-03-24


Version 0.9.1

Released 2024-01-15


  • aspecd.utils.ToDictMixin does no longer modify the __dict__ or __odict__ property of a class directly, what may have resulted in unexpected behaviour, but operates on a (deep)copy.


  • Use Black for automatic code formatting

Version 0.9.0

Released 2024-01-13

New features




Version 0.8.3

Released 2023-09-08


  • Exporter tasks (aspecd.tasks.ExportTask) automatically save datasets with default name if no target is provided.

  • Correct setting of contour plot properties with newer versions of Matplotlib


New features

Version 0.8.2

Released 2023-08-24


  • Handling of too long filenames when saving plots: the filename is replaced by its MD5 hash.

New features

  • New setting default_colormap in recipes.

  • Property colormap in aspecd.plotting.SinglePlot2DProperties, allowing for consistently setting (default) colormaps for 2D surface plots within a recipe.

Version 0.8.1

Released 2023-08-11



  • Baseline correction in aspecd.processing.BaselineCorrection issues warning if more than 100% of the data are used and resets to 50% on each side.

  • Recipe history contains importer parameters

Version 0.8.0

Released 2023-03-26

New features

  • Plotting

    • MultiPlotter1D can use colormaps for coloring multiple lines

    • Number of columns can be set for legends of plots

  • Processing steps


Version 0.7.1

Released 2022-06-12

New features

  • Reference to publication in documentation and colophon of reports.

Version 0.7.0

Released 2022-01-30

New features



  • Dataset importer does not override dataset label.

  • AnalysisSteps assign data to _origdata attribute if result is dataset

  • MultiprocessingTask correctly sets label of resulting datasets

Version 0.6.4

Released 2021-11-25



  • Warnings issued during cooking of a recipe are now log messages.

Version 0.6.3

Released 2021-11-24



Version 0.6.2

Released 2021-11-16



  • Recipe containing a MultiplotTask does not contain datasets as dicts

  • PlotTask with automatically generated filenames and >1 datasets writes correct filenames to figure record in recipe

  • CompositePlotter sets plot style of plotters

  • Grammar in dataset.tex template

  • Colophon of report via ReportTask contains default package set in recipe

  • CompositePlotter does not add plotters of subfigures to list of dataset representations and list of dataset tasks

  • Escaping of “_” in LaTeX templates

Version 0.6.1

Released 2021-11-10


  • ReportTask works with output directory set in recipe

  • LatexReporter finds templates with relative path

  • Yaml handles numpy floats and ints

  • ProcessingTask handles multiple datasets, SinglePlotTask automatically generated figure filenames with multiple datasets

  • ProcessingTask no longer tries to deep-copy matplotlib objects

  • Replacing dataset labels in recipes works with dataset ids/source

Version 0.6.0

Released 2021-11-05

New features


  • Dataset labels do not contain source path.

  • Recipe dataset_source and output directories are no longer converted to absolute paths.

  • More complete recipe history for tasks, including more of their properties

  • Recipe-driven data analysis: Figures get added to recipe with default label if no label is provided.

  • aspecd.processing.Noise: explicit noise amplitude can be given.

  • Model can add label to created dataset.

  • ModelTask adds result label as id to result.

  • Plotter: Default figure size changed to (6., 4.) inch


Version 0.5.0

Released 2021-10-12

New features


Version 0.4.0

Released 2021-10-08

Note: Starting with this release ASpecD requires Python >= 3.7.

New features

  • Tasks/Recipe-driven data analysis

    • New attribute allows adding a plot to an already existing plot.

    • aspecd.tasks.Task.to_dict() adds (implicit) parameters of underlying task object

    • Classes from the ASpecD framework can be used without prefixing them with “aspecd” in recipes with “default_package” set to a package based on the ASpecD framework.

    • serve command outputs log messages for each task

    • Command-line options for serve setting the log level/verbosity

    • Catching of errors, excluding the stack trace and only showing the error message (but full stack trace in verbose mode)

    • Switch in recipe to suppress writing history (for development/debugging, issuing warning on the command line via logging)

    • New structure of recipes: Move default_package and autosave_plots to new dict settings; output_directory and datasets_source_directory to new dict directories

    • Add format dict to recipe with fields type and version

    • Automatically convert old recipe formats within

    • Processing steps writing parameters during execution and applied to multiple datasetes are unpacked in the recipe history if these parameters change for each dataset

  • References in processing and analysis steps and models (using bibrecord package)

Version 0.3.1

Released 2021-09-21

The following bugs have been fixed:

  • Handling of lists as properties in recipes

  • Improved handling of axes labels with xkcd style

  • Offset in SinglePlotter2DStacked can be set to zero

Version 0.3.0

Released 2021-09-02

Note: This is the last ASpecD release with explicit support for Python 3.5.

New features



  • Axis labels without “/” if no unit is present

  • aspecd.metadata.Measurement handles dates imported from YAML (implicitly converted into object)

Version 0.2.2

Released 2021-06-19

The following bugs have been fixed:

  • Normalisation to minimum now divides by absolute value of minimum

  • Normalisation raises ValueError in case of unknown kind

  • Import with explicit importer when importer resides in (sub)package

  • Recipe history shortens dataset source if dataset_source_directory has trailing slash

Version 0.2.1

Released 2021-06-03

The following bugs have been fixed:

Additionally, the following new helper functions appeared:

Version 0.2.0

Released 2021-05-19

New features

  • Singleplot and multiplot tasks automatically save results to generic file(s) when no filename is provided

  • Importer and importer parameters can be set in recipe

  • DatasetImporterFactory: importer can be set explicitly, parameters can be passed to importers

  • DatasetImporter with parameters property

  • Meaningful error messages for exceptions in ProcessingSteps, AnalysisSteps, Plotters

  • Method create_dataset() in AnalysisStep

  • PeakFinding (for 1D data)

  • BlindSNREstimation (currently only with simplest method)

  • BasicStatistics (mean, median, std, var)

  • BasicCharacteristics (min, max, amplitude, area)

  • ProcessingStep provides non-public method _set_defaults() for setting default parameters before sanitising parameters.

  • Filtering (with uniform, Gaussian, and Savitzky-Golay filter)

  • Interpolation (at least for 1D and 2D datasets)

  • Normalisation:

    • Act on parts of the data of a dataset

    • Handle noise for ND data with N>1

  • RangeExtraction: extract range of data from dataset (using slice notation)

  • MultiprocessingTask (and SingleprocessingTask aliasing ProcessingTask)

  • ScalarAxisAlgebra: perform scalar algebra on axis values

  • DatasetAlgebra: add and subtract data of second dataset to/from dataset

  • CommonRangeExtraction for 1D and 2D datasets

  • SinglePlotter2D:

    • Filled contour plot with additional contour lines that can be styled

    • Lines of contour plot can be styled

  • SliceExtraction now handles both, axis indices and axis values


  • Removed parameter source from method _get_importer in DatasetImporterFactory, importer factories of derived packages now handle ASpecD-implemented importers by default.

  • Dataset: method aspecd.dataset.append_history_record() made public

  • SystemInfo: Packages contain now full list of dependencies with version numbers of currently installed packages

  • SliceExtraction:

    • parameter “index” renamed to “position”

    • works for ND datasets with N>1

  • ProcessingStep split into SingleProcessingStep and MultiProcessingStep

    All processing steps previously inheriting from aspecd.ProcessingStep need to inherit now from aspecd.SingleProcessingStep to continue working as expected.

  • Plots throw “NotApplicableToDataset” exceptions rather than “PlotNotApplicableToDataset”


  • SingleanalysisTask assigns results of multiple (individual) datasets

  • Exceptions print messages

New dependencies

  • scipy (for interpolation in ExtractCommonRange and various analysis steps)

Version 0.1.1

Released 2021-05-03

The following bugs have been fixed:

  • MetadataMapper: Fix sequence of mapping operations performed

  • MetadataMapper: Mappings are automatically loaded from file if filename is given

  • CompositePlotter: Legends for subplots work

  • SliceExtraction: Remove correct axis from dataset

  • MultiPlotter1D*: Fix problem in conjunction with CompositePlotter and assigning drawings

  • SliceExtraction: fix problem extracting slice with index zero

  • CompositePlotter: more intuitive axes_positions

  • Fix bug with aspect ratio of 2D plots using imshow

  • Update intersphinx mapping for matplotlib

Version 0.1.0

Released 2021-04-24

  • First public release

  • List of generally applicable concrete processing steps

  • List of generally applicable concrete plotters

  • Recipe-driven data analysis fully working with history

  • Introduced ASpecD dataset format (ADF)

Version 0.1.0.dev280

Released 2019-06-14

  • First public pre-release on PyPI