Changelog

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.12.0

Released 2024-12-22

Note: This version comes with a new version of the recipe format: 0.3. Existing recipes are updated automatically on import.

New features

Changes

  • Recipe structure changed slightly: The settings dictionary has a new sub-dictionary colors, and the default_colormap key moved there, together with the new keys number_of_colors and first_color.

    • New recipe format version: 0.3.

    • Existing recipes are updated automatically on import.

  • Figure properties (see aspecd.plotting.FigureProperties) are applied to the figure before the actual plotting is done, as some plotters need to know the (final) figure size or else.

  • Axes properties (see aspecd.plotting.AxesProperties) are applied to the axes before the actual plotting is done, as some plotters need to know the (final) axes limits or else.

Fixes

Updated requirements

  • bibrecord >= 0.2

Version 0.11.0

Released 2024-10-17

New features

Changes

  • Plotting: Default figure size in aspecd.plotting.FigureProperties set to None to allow setting from matplotlibrc to take effect.

    Without adjustments, this may change the size (and aspect ratio) of your figures from 6x4 inches to 6.4x4.8 inches.

Fixes

  • CompositePlotter operates on copies of plotters.

  • Plot task writes correct filename for each plotter if results is used.

  • PlotannotationTask saves properties to recipe history.

  • PlotannotationTask can be applied to plotter and stored for later use as result at the same time.

  • Text plot annotation with scalar y position set to zero works.

Version 0.10.1

Released 2024-08-13

Fixes

  • CompositePlotter shares axes correctly

Version 0.10.0

Released 2024-08-10

New features

Fixes

  • Tasks

  • Plotting

    • CompositePlotter does not add additional drawings any more to the plotters used. (#5)

Version 0.9.3

Released 2024-07-22

Fixes

  • Correct method for area normalization: take number of points into account.

  • Adjust stacking in SinglePlotter2DStacked for data with larger minima than maxima.

  • Templates for LaTeX dataset report: escape _ and # in dataset label.

  • Axis labels can be removed by setting one or both of xlabel and ylabel to None (or null in YAML/recipe).

Version 0.9.2

Released 2024-03-24

Fixes

Version 0.9.1

Released 2024-01-15

Fixes

  • 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.

Changes

  • Use Black for automatic code formatting

Version 0.9.0

Released 2024-01-13

New features

Changes

Documentation

Fixes

Version 0.8.3

Released 2023-09-08

Fixes

  • 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

Changes

New features

Version 0.8.2

Released 2023-08-24

Fixes

  • 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

Documentation

Fixes

  • 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

Fixes

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

Changes

Fixes

  • 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

Changes

Fixes

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

Version 0.6.3

Released 2021-11-24

Changes

Fixes

Version 0.6.2

Released 2021-11-16

Changes

Fixes

  • 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

Fixes

  • 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

Changes

  • 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

Fixes

Version 0.5.0

Released 2021-10-12

New features

Changes

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 aspecd.tasks.PlotTask.target 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 aspecd.io.RecipeYamlImporter

    • 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

Changes

Fixes

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

  • aspecd.metadata.Measurement handles dates imported from YAML (implicitly converted into datetime.date 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

Changes

  • 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”

Fixes

  • 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