You're reading the documentation for a development version. For the latest released version, please have a look at v0.12.
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.13.0
Not yet released
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
climinaspecd.plotting.SurfacePropertiesParameter
thresholdfor determining the levels of a contour plot in classaspecd.plotting.SinglePlotter2DAttributes
number_of_colorsandfirst_colorinaspecd.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
normandnorm_parametersinaspecd.plotting.SurfaceProperties.
Plot annotations
Parameter
unitsinaspecd.annotation.Text,aspecd.annotation.Marker,aspecd.annotation.VerticalLine,aspecd.annotation.HorizontalLine,aspecd.annotation.VerticalSpan, andaspecd.annotation.HorizontalSpanallowing to position using axes rather than data coordinates.
Processing
aspecd.processing.SliceRearrangementfor rearranging slices of a dataset along one dimension.aspecd.processing.DatasetAlgebraoperates on a list of datasets, allowing to add/subtract multiple datasets from a given dataset.aspecd.processing.Denoising1DSVDfor denoising 1D datasets using singular value decomposition.
Tasks
Functions
addandmultiplyfor properties of tasks in recipes.New default setting
number_of_colorson 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
skipkeyword on the top level of the task definition in a recipe.
Changes
Recipe structure changed slightly: The
settingsdictionary has a new sub-dictionarycolors, and thedefault_colormapkey moved there, together with the new keysnumber_of_colorsandfirst_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.SliceRemovalhandles lists properlyaspecd.processing.SliceRemovalremoves value(s) from corresponding axisaspecd.processing.Averaginghandles inverted axes (e.g., ppm scale) correctly regardless how ranges are givenaspecd.plotting.MultiPlot1DPropertieshandles explicit colours of individual drawings correctly.
Updated requirements
bibrecord >= 0.2
Version 0.11.0
Released 2024-10-17
New features
Plotting
aspecd.plotting.PatchPropertiesfor properties of patches, as used foraspecd.annotation.VerticalSpanandaspecd.annotation.HorizontalSpan.aspecd.plotting.AnnotationPropertiesandaspecd.plotting.AnnotationTextPropertiesfor properties of text annotations with lines, as used foraspecd.annotation.TextWithLine.aspecd.plotting.AxesPropertieshas new attributesframe_on,xlabelposition, andylabelposition.aspecd.plotting.Spinesandaspecd.plotting.SpinePropertiesfor controlling spine properties of axes.aspecd.plotting.MarkerPropertiesfor properties of markers, as used foraspecd.annotation.Marker.
Plot annotations
aspecd.annotation.VerticalSpanfor adding vertical spans (rectangles) to plot(ter)saspecd.annotation.HorizontalSpanfor adding horizontal spans (rectangles) to plot(ter)saspecd.annotation.TextWithLinefor adding text with additional linesaspecd.annotation.Markerfor adding markers to plot(ter)saspecd.annotation.FillBetweenfor colouring the surface below a curve.
Analysis
aspecd.analysis.PeakFindingcan return both, peak positions and intensities, as pairs, ready to be used inaspecd.annotation.TextWithLineannotations.aspecd.analysis.CentreOfMassfor calculating the centre of mass for ND datasets.
IO
aspecd.io.TxtImporterhas an additional parameteraxisspecifying which column to use for axis values when reading 2D data. (#6)
Changes
Plotting: Default figure size in
aspecd.plotting.FigurePropertiesset toNoneto 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.SinglePlotter2DStackedConveniently set identical properties for all lines of
aspecd.plotting.SinglePlotter2DStackedandaspecd.plotting.MultiPlotter1Daspecd.plotting.DrawingPropertieshas attributezorder.aspecd.plotting.SubplotGridSpecsfor properties of the subplot grid of a CompositePlotter.aspecd.plotting.CompositePlotterallows to share x and y axes.
Plot annotations
aspecd.annotations.Textfor text annotations to plot(ter)s
Tasks
aspecd.tasks.SingleplotTaskallows 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.Voigtianfor creating Voigt profiles frequently used in spectroscopy to describe line shapes.
Fixes
Tasks
aspecd.tasks.MultiplotTaskpreserves order of datasets the task is applied to, regardless whether the datasets are originally imported or result from prior tasks (viaresultproperty). (#2)aspecd.tasks.Recipe.get_datasets()preserves order of datasets, regardless whether the datasets are originally imported or result from prior tasks (viaresultproperty).aspecd.tasks.Chef.cook()closes open figures.
Plotting
CompositePlotterdoes 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
SinglePlotter2DStackedfor 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
xlabelandylabeltoNone(ornullin YAML/recipe).
Version 0.9.2
Released 2024-03-24
Fixes
Revert changes in
aspecd.utils.ToDictMixinfrom 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.RangeExtractionextracts correct range for axis values.
Version 0.9.1
Released 2024-01-15
Fixes
aspecd.utils.ToDictMixindoes 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.CommonRangeExtractionworks for ND datasets with arbitrary dimension N
Plotting
Legend title can be set from recipes
New attribute
aspecd.plotting.AxesProperties.invertfor 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_fontsizeproperty.Colorbar for 2D plotter
Annotations for plots
For details, see the documentation of plot annotations and the
aspecd.annotationmodule.
Device data
New property
aspecd.dataset.Dataset.device_datafor storing additional/secondary (monitoring) data.New class
aspecd.dataset.DeviceDatafor device data.New class
aspecd.analysis.DeviceDataExtractionfor 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.MultiDeviceDataPlotter1Dfor plotting multiple device data of a single dataset.New parameter
device_datainaspecd.plotting.Plotterfor 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.tasksmodule.aspecd.io.DatasetImporterFactorylogs 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.DatasetExporteradds a history record toaspecd.dataset.Dataset.tasks.aspecd.plotting.SinglePlotter1Dandaspecd.plotting.MultiPlotter1Dissue warning with log plotters and negative values.aspecd.annotation.DatasetAnnotationhas been renamed fromAnnotationto 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.Interpolationchanged interpolation method for 2D data from deprecatedscipy.interpolate.interp2dtoscipy.interpolate.RegularGridInterpolator
New features
aspecd.processing.Interpolationworks for ND datasets with arbitrary dimension Naspecd.tasks.Recipewith 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_colormapin recipes.Property
colormapinaspecd.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.BaselineCorrectionissues 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.SliceRemovalfor removing slices from a ND dataset with N>1.New class
aspecd.processing.RelativeAxisfor converting an axis into a relative axis, centred about a (given) origin.
Fixes
Interpolation in
aspecd.processing.Interpolationworks 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.FigurereportTaskfor creating figure captions that can, e.g., be included in other documentsAttributes
labelspacingandfontsizeinaspecd.plotting.LegendPropertiesAttribute
outputinaspecd.tasks.ModelTaskcontrolling 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_typeinaspecd.analysis.AnalysisStepto define type of calculated dataset that gets returnedaspecd.plotting.MultiPlotter1Dandaspecd.plotting.MultiPlotter1DStackedwith parameter “tight” for tight axes and “switch_axes” for switching axesaspecd.plotting.SinglePlotter1Dwith parameter “switch_axes” for switching axesaspecd.plotting.AxesProperties: angles of the axes tick labels can be set using thexticklabelangleandyticklabelangleproperties
Changes
aspecd.processing.SliceExtractionsets dataset label to slice positionaspecd.processing.Averagingsets 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
commentinaspecd.tasks.Task,aspecd.report.Reporter,aspecd.plotting.Plotter,aspecd.io.DatasetExporterallowing 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.Reporteradds template loader for package ifaspecd.report.Reporter.packageis provided, allowing to override templates from the ASpecD framework within derived packages.aspecd.tasks.ReportTaskpasses 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.TxtImporterhandles decimal separator different than dot
Fixes
aspecd.tasks.Taskwarns if key in dict (recipe) is no property of the task.aspecd.processing.DatasetAlgebrareturns 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.Filteringto always be oddaspecd.processing.CommonRangeExtractionignores 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.MultiPlottersets axis labels when units are emptyaspecd.processing.Normalisationremoves unit from last axisaspecd.processing.BaselineCorrectionhandles zero values in range properlyaspecd.analysis.AggregateAnalysisStepno longer addsdatasetsandresultto output ofto_dict()aspecd.tasks.AggregatedAnalysisTasksets correct type in output ofto_dict()aspecd.tasks.ReportTaskdoes not add empty figure filenames to includesaspecd.Tasks.PlotTaskpreserves 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
ytickcountforaspecd.plotting.SinglePlotter2DStackedto control maximum number of yticksNew parameter
tight_layoutforaspecd.plotting.Plotterto 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.textemplateColophon 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_dirallowing to include sub-templates.New class
TxtReporterfor 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.Yamlhandlesnumpy.doubleRecipe-driven data analysis: automatically generated figure filenames get added to recipe figure record
Models work now correctly when based on a dataset
aspecd.model.FamilyOfCurvessets correct values for additional axisaspecd.processing.Differentiationworks 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.AggregatedanalysisTaskfor performing a SingleAnalysisStep on a series of datasets, aggregating the result in a CalculatedDatasetaspecd.tasks.TabulateTaskfor 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.AggregatedAnalysisStepfor aggregating the results of a SingleAnalysisStep on multiple datasets in a CalculatedDataset
Tabular representation of datasets
New module
aspecd.tableSeries 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.BasicCharacteristicsalways returns scalars or lists in its results and writes index (for compatibility withaspecd.analysis.AggregatedAnalysisStepand 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.targetallows 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.
servecommand outputs log messages for each taskCommand-line options for
servesetting 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_packageandautosave_plotsto new dictsettings;output_directoryanddatasets_source_directoryto new dictdirectoriesAdd
formatdict to recipe with fieldstypeandversionAutomatically convert old recipe formats within
aspecd.io.RecipeYamlImporterProcessing 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.ModelNew attribute
aspecd.model.Model.descriptionNew non-public method
_sanitise_parameters
New models
aspecd.model.Polynomialfor evaluating polynomials (e.g., as obtained usingaspecd.analysis.PolynomialFit)aspecd.model.CompositeModelfor models consisting of a (weighted) sum of individual modelsaspecd.model.FamilyOfCurvesfor 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
commentof the respective task.
Utils
aspecd.utils.not_zero()ensuring a float not to cause DivisionByZero errors
Changes
aspecd.processing.Differentiationusesnumpy.gradient()instead ofnumpy.diff()aspecd.processing.BaselineCorrectionreturns polynomial coefficients in unscaled data domain
Fixes
Axis labels without “/” if no unit is present
aspecd.metadata.Measurementhandles 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
sourcefrom method_get_importerin 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