What’s New in Revision 0.8.0
These are the changes in SpectroChemPy-0.8.0. See Release notes for a full changelog, including other versions of SpectroChemPy.
New Features
Lazy Import Mechanism: SpectroChemPy now uses a lazy import mechanism to improve startup time.
Optimized Import Process: When importing SpectroChemPy, only a minimal set of packages and functions is loaded initially.
Additional functionality is loaded on demand when first accessed.
This approach does not reduce the overall loading time but significantly improves the initial import speed. It is particularly beneficial for notebook workflows, where the first execution cell runs much faster.
Markersize for PCA score and screeplots customizable. (Feature request #841)
example:
... existing code ... # ScreePlot prefs = scp.preferences prefs.lines.markersize = 7 pca.screeplot() # Score Plot prefs.lines.markersize = 10 pca.scoreplot(scores, 1, 2)
Dependency Updates
lazy-loader
package is requirednumpydoc
package has been added to required dependency list.
Breaking Changes
Global Preferences: SpectroChemPy preferences are now global, so there is no need to store them in
NDDataset
objects. As a result, the"preferences"
attribute has been removed fromNDDataset
.This means that old scripts written like the following:
import spectrochempy as scp ... existing code ... prefs = X.preferences # where X is an NDDataset, and preferences is an attribute of NDDataset prefs.figure.figsize = (7, 3) ... existing code ...
should be modified as follows:
import spectrochempy as scp ... existing code ... prefs = scp.preferences # Preferences are now accessed directly from the "scp" object prefs.figure.figsize = (7, 3) ... existing code ...
Impact of Lazy Loading on Method Calls: Some methods that were previously accessible as class methods are now only available as API or instance methods. This is because class methods are not loaded until the class is instantiated.
For example, the following will no longer work:
NDDataset.read("something") # ❌ This will no longer work
Instead, use one of the following:
scp.read("something") # ✅ API method scp.NDDataset().read("something") # ✅ Instance method
Code should be updated accordingly.