Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.2.2]¶
Added¶
- Grid layouts for missing plot types:
bruker2d_grid,dmfit1d_grid,dmfit2d_grid - Stacked plots: Support for stacking multiple 1D spectra (Bruker and DMFit)
- Per-line deconvolution colors:
deconv_coloraccepts a list of colors for individual DMFit deconvolution lines - Per-subplot limits:
xlimandylimaccept list of tuples for per-subplot control in grid functions - Tag filtering:
SpinCollection.plot(filter=...)to plot a subset of spectra - Unknown kwarg warnings: Plot functions now warn on unrecognized keyword arguments instead of silently ignoring them
- Citation file: Added
CITATION.cfffor standardized citation metadata (#31) - Default tags:
SpinCollection.append()auto-generates tags (Spin0,Spin1, ...) when none provided
Changed¶
- API consistency: Renamed parameters for consistency across all plot functions:
colors→color,proj_colors→proj_colorhomo→homonuclear,diag→diagonallabels→titlesindmfit1d_grid(for subplot titles)- Unified input types: All plot functions now accept spectrum dicts;
Spin.plot()handles extraction - Standardized save logic: All functions use consistent defaults (PNG format, dpi=300)
- Projection keys: Standardized to
f1/f2across Bruker and DMFit 2D plots - SpinCollection.tag setter: Now disallows
Noneand syncs the internal dict key
Fixed¶
read_nmr()now acceptstags="string"for single paths (no longer requires a list)__init__.pyexports all public plot functionsdmfit1dnow uses global DEFAULTS dict like other functions- Extracted shared helpers to reduce code duplication in
plot.py - Color list indexing:
coloranddeconv_colornow use modulo indexing to cycle colors when fewer are provided than spectra or deconvolution lines - Unreachable
elifinbruker2d: movedcmap/colorvalidation before the conditional chain - Grid plots now correctly route
SpinCollectiontags to subplottitlesinstead of legendlabels - Docs: Fixed
mkdocstrings-python2.x configuration and excluded internal_helpersfrom reference docs
[0.2.1]¶
Fixed¶
- Fixed plotting of Bruker homonuclear spectra acquired without CP (cross-polarization). Reported by Andrej Šmelko (#25, #26)
[0.2.0]¶
Added¶
- Spin object system: Implemented a new object-oriented approach for handling NMR data:
Spinclass for individual spectrum dataSpinCollectionclass to manage multiple spectra with efficient- Enhanced default management: Defined default plot styling with possibility to override
- Added read_nmr and .plot(): Implemented unified way to read and plot data
- DMFit Support: Added functionality to read and plot data from DMFit
- Added Testing: Added test suite with improved coverage
Changed¶
- Code architecture: Major refactoring for cleaner design and better maintainability:
- Removed circular dependencies between modules
- Improved function interfaces with clearer argument passing
- Enhanced exception handling with more precise error messages
- IO operations: Redesigned data loading process:
- Minimized try/except blocks for better error tracing
- Streamlined exception handling with more specific error messages
- Consolidated duplicate code for better maintainability
Fixed¶
- Fixed issues with circular imports between
plot.pyandspin.py - Improved error handling throughout the codebase
[0.1.0]¶
Added¶
- Terminal functionality: Added
bruker2csvto convert NMR data into CSV from the terminal. - Plotting functions: Added the following functions to streamline plotting:
bruker1dfor generating 1D NMR plotsbruker1d_gridfor generating subplotsbruker2dfor generating 2D NMR plots
- NMR dataframe: Added the
nmr_dffunction to create a Pandas DataFrame from NMR data, for further data manipulation, analysis and plotting. - Tutorials:
- Creating 1D and 2D plots using the spinplots functions.
- Obtain a Pandas DataFrame from NMR data for custom plot styling and manipulation.
[0.0.1]¶
Added¶
- The initial release!