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
I/O
Importer logs warning if importing did not populate data array in dataset.
Plotting
Attribute
clim
inaspecd.plotting.SurfaceProperties
Parameter
threshold
for determining the levels of a contour plot in classaspecd.plotting.SinglePlotter2D
Attributes
number_of_colors
andfirst_color
inaspecd.plotting.MultiPlot1DProperties
: Fixed number of elements from colormap, to have same colour succession in plots with different number of curves if a colormap is specified, and potential offset in colormap if starting with white/a light colour.Attributes
norm
andnorm_parameters
inaspecd.plotting.SurfaceProperties
.
Plot annotations
Parameter
units
inaspecd.annotation.Text
,aspecd.annotation.Marker
,aspecd.annotation.VerticalLine
,aspecd.annotation.HorizontalLine
,aspecd.annotation.VerticalSpan
, andaspecd.annotation.HorizontalSpan
allowing to position using axes rather than data coordinates.
Processing
aspecd.processing.SliceRearrangement
for rearranging slices of a dataset along one dimension.aspecd.processing.DatasetAlgebra
operates on a list of datasets, allowing to add/subtract multiple datasets from a given dataset.aspecd.processing.Denoising1DSVD
for denoising 1D datasets using singular value decomposition.
Tasks
Functions
add
andmultiply
for properties of tasks in recipes.New default setting
number_of_colors
on recipe level: Fixed number of elements from colormap, to have same colour succession in plots with different number of curves if a colormap is specified.Tasks can be marked as to be skipped, using the
skip
keyword on the top level of the task definition in a recipe.
Changes
Recipe structure changed slightly: The
settings
dictionary has a new sub-dictionarycolors
, and thedefault_colormap
key moved there, together with the new keysnumber_of_colors
andfirst_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
Plotter with colorbar work with recipes (no longer recursion in
to_dict()
)aspecd.processing.SliceRemoval
handles lists properlyaspecd.processing.SliceRemoval
removes value(s) from corresponding axisaspecd.processing.Averaging
handles inverted axes (e.g., ppm scale) correctly regardless how ranges are givenaspecd.plotting.MultiPlot1DProperties
handles explicit colours of individual drawings correctly.
Updated requirements
bibrecord >= 0.2
Version 0.11.0
Released 2024-10-17
New features
Plotting
aspecd.plotting.PatchProperties
for properties of patches, as used foraspecd.annotation.VerticalSpan
andaspecd.annotation.HorizontalSpan
.aspecd.plotting.AnnotationProperties
andaspecd.plotting.AnnotationTextProperties
for properties of text annotations with lines, as used foraspecd.annotation.TextWithLine
.aspecd.plotting.AxesProperties
has new attributesframe_on
,xlabelposition
, andylabelposition
.aspecd.plotting.Spines
andaspecd.plotting.SpineProperties
for controlling spine properties of axes.aspecd.plotting.MarkerProperties
for properties of markers, as used foraspecd.annotation.Marker
.
Plot annotations
aspecd.annotation.VerticalSpan
for adding vertical spans (rectangles) to plot(ter)saspecd.annotation.HorizontalSpan
for adding horizontal spans (rectangles) to plot(ter)saspecd.annotation.TextWithLine
for adding text with additional linesaspecd.annotation.Marker
for adding markers to plot(ter)saspecd.annotation.FillBetween
for colouring the surface below a curve.
Analysis
aspecd.analysis.PeakFinding
can return both, peak positions and intensities, as pairs, ready to be used inaspecd.annotation.TextWithLine
annotations.aspecd.analysis.CentreOfMass
for calculating the centre of mass for ND datasets.
IO
aspecd.io.TxtImporter
has an additional parameteraxis
specifying which column to use for axis values when reading 2D data. (#6)
Changes
Plotting: Default figure size in
aspecd.plotting.FigureProperties
set toNone
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
Plotting
Set individual properties for each of the lines of a
aspecd.plotting.SinglePlotter2DStacked
Conveniently set identical properties for all lines of
aspecd.plotting.SinglePlotter2DStacked
andaspecd.plotting.MultiPlotter1D
aspecd.plotting.DrawingProperties
has attributezorder
.aspecd.plotting.SubplotGridSpecs
for properties of the subplot grid of a CompositePlotter.aspecd.plotting.CompositePlotter
allows to share x and y axes.
Plot annotations
aspecd.annotations.Text
for text annotations to plot(ter)s
Tasks
aspecd.tasks.SingleplotTask
allows to set as many results as datasets, to allow for adding an individual plotter (for one of the datasets) to aaspecd.tasks.CompositeplotTask
. (#3)
Models
aspecd.model.Voigtian
for creating Voigt profiles frequently used in spectroscopy to describe line shapes.
Fixes
Tasks
aspecd.tasks.MultiplotTask
preserves order of datasets the task is applied to, regardless whether the datasets are originally imported or result from prior tasks (viaresult
property). (#2)aspecd.tasks.Recipe.get_datasets()
preserves order of datasets, regardless whether the datasets are originally imported or result from prior tasks (viaresult
property).aspecd.tasks.Chef.cook()
closes open figures.
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
andylabel
toNone
(ornull
in YAML/recipe).
Version 0.9.2
Released 2024-03-24
Fixes
Revert changes in
aspecd.utils.ToDictMixin
from version 0.9.1, as it caused problems with Matplotlib.Updates on contour plots to work with Matplotlib 3.8
Updates to prevent deprecation warning for NumPy 1.25
aspecd.processing.RangeExtraction
extracts correct range for axis values.
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
Processing steps
aspecd.processing.CommonRangeExtraction
works for ND datasets with arbitrary dimension N
Plotting
Legend title can be set from recipes
New attribute
aspecd.plotting.AxesProperties.invert
for inverting axes. Helpful, e.g., for plotting FTIR data without having to resort to explicitly provide descending axis limits.Setting font size of axes labels via
label_fontsize
property.Colorbar for 2D plotter
Annotations for plots
For details, see the documentation of plot annotations and the
aspecd.annotation
module.
Device data
New property
aspecd.dataset.Dataset.device_data
for storing additional/secondary (monitoring) data.New class
aspecd.dataset.DeviceData
for device data.New class
aspecd.analysis.DeviceDataExtraction
for extracting device data from a dataset as a separate dataset. This allows to proceed with the extracted datasets as with any other dataset.New class
aspecd.plotting.MultiDeviceDataPlotter1D
for plotting multiple device data of a single dataset.New parameter
device_data
inaspecd.plotting.Plotter
for plotting device data rather than primary data of a dataset/datasets
Logging
New function
aspecd.utils.get_logger()
to get a logger object for a given module with the logger within the hierarchy of the ASpecD root logger. Important for packages derived from the ASpecD framework in order to get their log messages being captured, e.g. during recipe-driven data analysis.
Changes
Plotters can now handle device data instead of the primary data of a dataset (see above). This means, however, that instead of accessing
self.dataset.data
(orself.datasets[#].data
), plotters need to accessself.data.data
(orself.data[#].data
) instead.Authors of derived packages should update their plotters accordingly. See the hints for developers on device data in the plotting module.
Serving recipes logs messages from all ASpecD modules, not only from the
aspecd.tasks
module.aspecd.io.DatasetImporterFactory
logs warning if no concrete importer could be found for a given dataset, as this will usually result in (sometimes hard to detect) downstream problems.aspecd.io.DatasetExporter
adds a history record toaspecd.dataset.Dataset.tasks
.aspecd.plotting.SinglePlotter1D
andaspecd.plotting.MultiPlotter1D
issue warning with log plotters and negative values.aspecd.annotation.DatasetAnnotation
has been renamed fromAnnotation
to reflect the fact that there are now plot annotations as well.
Documentation
New example: Plotting FTIR spectra normalised to spectral feature
Section with general tips and tricks for styling plotters.
Fixes
aspecd.utils.ToDictMixin.to_dict()
does not traverse settings for properties to exclude and include.Workaround for
matplotlib.figure.Figure.savefig()
not correctly handling figure DPI settings.
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
aspecd.processing.Interpolation
changed interpolation method for 2D data from deprecatedscipy.interpolate.interp2d
toscipy.interpolate.RegularGridInterpolator
New features
aspecd.processing.Interpolation
works for ND datasets with arbitrary dimension Naspecd.tasks.Recipe
with new settingautosave_datasets
(default:True
)
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
inaspecd.plotting.SinglePlot2DProperties
, allowing for consistently setting (default) colormaps for 2D surface plots within a recipe.
Version 0.8.1
Released 2023-08-11
Documentation
New section on metadata during data acquisition
New section with examples
New section with data publications
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
New class
aspecd.processing.SliceRemoval
for removing slices from a ND dataset with N>1.New class
aspecd.processing.RelativeAxis
for converting an axis into a relative axis, centred about a (given) origin.
Fixes
Interpolation in
aspecd.processing.Interpolation
works correctly if axis range is given and no corresponding axis point exists in the original dataset.
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
aspecd.tasks.FigurereportTask
for creating figure captions that can, e.g., be included in other documentsAttributes
labelspacing
andfontsize
inaspecd.plotting.LegendProperties
Attribute
output
inaspecd.tasks.ModelTask
controlling the type of output returned (dataset or model)Method
aspecd.model.Model.evaluate()
for fast evaluation of models without any checks (useful in context of fitting)Attribute
dataset_type
inaspecd.analysis.AnalysisStep
to define type of calculated dataset that gets returnedaspecd.plotting.MultiPlotter1D
andaspecd.plotting.MultiPlotter1DStacked
with parameter “tight” for tight axes and “switch_axes” for switching axesaspecd.plotting.SinglePlotter1D
with parameter “switch_axes” for switching axesaspecd.plotting.AxesProperties
: angles of the axes tick labels can be set using thexticklabelangle
andyticklabelangle
properties
Changes
aspecd.processing.SliceExtraction
sets dataset label to slice positionaspecd.processing.Averaging
sets dataset label to averaging range
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
New attribute
comment
inaspecd.tasks.Task
,aspecd.report.Reporter
,aspecd.plotting.Plotter
,aspecd.io.DatasetExporter
allowing for storing user-supplied comments
Fixes
Warnings issued during cooking of a recipe are now log messages.
Version 0.6.3
Released 2021-11-24
Changes
aspecd.report.Reporter
adds template loader for package ifaspecd.report.Reporter.package
is provided, allowing to override templates from the ASpecD framework within derived packages.aspecd.tasks.ReportTask
passes through the default package from the recipe to the reporter for overriding templates.aspecd.infofile.Infofile
: Comment gets converted into a single stringDependency change: Jinja >= 3.0
aspecd.io.TxtImporter
handles decimal separator different than dot
Fixes
aspecd.tasks.Task
warns if key in dict (recipe) is no property of the task.aspecd.processing.DatasetAlgebra
returns shape in error message if shapes differ.Processing and analysis tasks issue warning if result name is identical to dataset label
Ensure window length for Savitzky-Golay filter in
aspecd.processing.Filtering
to always be oddaspecd.processing.CommonRangeExtraction
ignores unit of last axis (i.e., intensity) when checking for identical unitsaspecd.utils.ToDictMixin
: Added superclass call to preserve mro in dependent subclassesTasks properly handle non-dataset results from recipe
aspecd.plotting.MultiPlotter
sets axis labels when units are emptyaspecd.processing.Normalisation
removes unit from last axisaspecd.processing.BaselineCorrection
handles zero values in range properlyaspecd.analysis.AggregateAnalysisStep
no longer addsdatasets
andresult
to output ofto_dict()
aspecd.tasks.AggregatedAnalysisTask
sets correct type in output ofto_dict()
aspecd.tasks.ReportTask
does not add empty figure filenames to includesaspecd.Tasks.PlotTask
preserves labels of drawingsRecipe history does not contain path to current directory in dataset source
Version 0.6.2
Released 2021-11-16
Changes
New parameter
ytickcount
foraspecd.plotting.SinglePlotter2DStacked
to control maximum number of yticksNew parameter
tight_layout
foraspecd.plotting.Plotter
to prevent labels from getting clipped
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
templateColophon 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
Reports
Templates for reporting information contained in datasets come bundled with ASpecD.
Context contains
templates_dir
allowing to include sub-templates.New class
TxtReporter
for plain text reports
Tasks/Recipe-driven data analysis
YAML representation of recipe and tasks via
aspecd.tasks.Recipe.to_yaml()
andaspecd.tasks.Task.to_yaml()
Figure labels can be set in plotters; otherwise a default label will be set and can be accessed from within reports.
Utils
change_working_dir()
can be used as context manager to temporarily change the working directory.
General
aspecd.utils.ToDictMixin.to_dict()
can optionally remove keys with empty values.to_dict()
method inaspecd.processing.ProcessingStep
,aspecd.analysis.AnalysisStep
,aspecd.annotation.Annotation
,aspecd.plotting.Plotter
,aspecd.table.Table
,aspecd.report.Reporter
,aspecd.model.Model
Models
Axes quantities and units can be explicitly set on model creation.
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
aspecd.tasks.Task.to_yaml()
serialises numpy arraysDatasets from foreign packages are correctly listed in recipe history
aspecd.utils.copy_keys_between_dicts()
properly traversesaspecd.utils.Yaml
handlesnumpy.double
Recipe-driven data analysis: automatically generated figure filenames get added to recipe figure record
Models work now correctly when based on a dataset
aspecd.model.FamilyOfCurves
sets correct values for additional axisaspecd.processing.Differentiation
works correctly for 2D datasetsaspecd.processing.Noise
: normalisation works with >1D datasetsaspecd.plotting.SinglePlotter2DStacked
: ylabel is set to third axis if offset = 0
Version 0.5.0
Released 2021-10-12
New features
Tasks/Recipe-driven data analysis
YAML representation of tasks and recipes using
aspecd.tasks.Task.to_yaml()
andaspecd.tasks.Recipe.to_yaml()
- convenience methods for later use in guided recipe generationaspecd.tasks.AggregatedanalysisTask
for performing a SingleAnalysisStep on a series of datasets, aggregating the result in a CalculatedDatasetaspecd.tasks.TabulateTask
for tabular representation of data of a dataset
Datasets
New attribute
aspecd.dataset.Axis.index
(for individual labels for each data point, similar to pandas and for tabular data)aspecd.dataset.Dataset.tabulate()
to create tables from datasets
Analysis steps
New class
aspecd.analysis.AggregatedAnalysisStep
for aggregating the results of a SingleAnalysisStep on multiple datasets in a CalculatedDataset
Tabular representation of datasets
New module
aspecd.table
Series of output formats for tables (including DokuWiki and LaTeX)
Tables can have captions that are output as well
Utils
aspecd.utils.get_package_data()
for obtaining package data (i.e., non-code files contained in distribution)
Changes
aspecd.analysis.BasicCharacteristics
always returns scalars or lists in its results and writes index (for compatibility withaspecd.analysis.AggregatedAnalysisStep
and tabular output).
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 objectClasses 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 taskCommand-line options for
serve
setting the log level/verbosityCatching 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
andautosave_plots
to new dictsettings
;output_directory
anddatasets_source_directory
to new dictdirectories
Add
format
dict to recipe with fieldstype
andversion
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
Processing steps
Adding (coloured) noise to datasets (
aspecd.processing.Noise
)Provide a new range of axis values for a dataset for correction (
aspecd.processing.ChangeAxesValues
)
Analysis steps
Power spectral density of 1D dataset (
aspecd.analysis.PowerDensitySpectrum
), e.g., for analysing noisePolynomial fit of 1D data (
aspecd.analysis.PolynomialFit
)Linear regression of 1D data without fitting the intercept (
aspecd.analysis.LinearRegressionWithFixedIntercept
)Additional methods in
aspecd.analysis.BlindSNREstimation
Class
aspecd.model.Model
New attribute
aspecd.model.Model.description
New non-public method
_sanitise_parameters
New models
aspecd.model.Polynomial
for evaluating polynomials (e.g., as obtained usingaspecd.analysis.PolynomialFit
)aspecd.model.CompositeModel
for models consisting of a (weighted) sum of individual modelsaspecd.model.FamilyOfCurves
for inspecting systematic variations of one parameter of a given model
Tasks
Comments can be added easily to processing and analysis steps using the top-level key
comment
of the respective task.
Utils
aspecd.utils.not_zero()
ensuring a float not to cause DivisionByZero errors
Changes
aspecd.processing.Differentiation
usesnumpy.gradient()
instead ofnumpy.diff()
aspecd.processing.BaselineCorrection
returns polynomial coefficients in unscaled data domain
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:
Report: template can have “..” in its path
aspecd.utils.copy_values_between_dicts()
cascades through source dictAdd missing template files for sphinx multiversion
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 AnalysisStepPeakFinding (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 publicSystemInfo: 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