chemotools 0.0.11__py3-none-any.whl → 0.0.12__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -50,7 +50,7 @@ class NorrisWilliams(BaseEstimator, TransformerMixin):
50
50
  X_[i] = derivative
51
51
  return X_.reshape(-1, 1) if X_.ndim == 1 else X_
52
52
 
53
- if self.derivative_order == 1:
53
+ if self.derivative_order == 2:
54
54
  for i, x in enumerate(X_):
55
55
  derivative = self._spectrum_second_derivative(x)
56
56
  X_[i] = derivative
@@ -0,0 +1,121 @@
1
+ Metadata-Version: 2.1
2
+ Name: chemotools
3
+ Version: 0.0.12
4
+ Summary: Package to integrate chemometrics in scikit-learn pipelines
5
+ Home-page: https://github.com/paucablop/chemotools
6
+ Author: Pau Cabaneros Lopez
7
+ Author-email: pau.cabaneros@gmail.com
8
+ Project-URL: Bug Tracker, https://github.com/paucablop/chemotools/issues/
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Operating System :: OS Independent
12
+ Requires-Python: >=3.9
13
+ Description-Content-Type: text/markdown
14
+ License-File: LICENSE
15
+ Requires-Dist: numpy
16
+ Requires-Dist: scipy
17
+ Requires-Dist: scikit-learn
18
+
19
+ [![pypi](https://img.shields.io/pypi/v/chemotools)](https://pypi.org/project/chemotools)
20
+ [![pypi](https://img.shields.io/pypi/pyversions/chemotools)](https://pypi.org/project/chemotools)
21
+ [![pypi](https://img.shields.io/pypi/l/chemotools)](https://github.com/paucablop/chemotools/blob/main/LICENSE)
22
+ [![codecov](https://codecov.io/github/paucablop/chemotools/branch/main/graph/badge.svg?token=D7JUJM89LN)](https://codecov.io/github/paucablop/chemotools)
23
+
24
+ # __chemotools__
25
+
26
+ Welcome to Chemotools, a Python package that integrates chemometrics with Scikit-learn.
27
+
28
+ 👉 Check the [documentation](https://paucablop.github.io/chemotools/) for a full description on how to use chemotools.
29
+
30
+ ## Description
31
+
32
+ Chemotools is a Python package that provides a collection of preprocessing tools and utilities for working with spectral data. It is built on top of popular scientific libraries and is designed to be highly modular, easy to use, and compatible with Scikit-learn transformers.
33
+
34
+ If you are interested in learning more about chemotools, please visit the [documentation](https://paucablop.github.io/chemotools/) page.
35
+
36
+ Benefits:
37
+ - Provides a collection of preprocessing tools and utilities for working with spectral data
38
+ - Highly modular and compatible with Scikit-learn transformers
39
+ - Can perform popular preprocessing tasks such as baseline correction, smoothing, scaling, derivatization, and scattering correction
40
+ - Open source and available on PyPI
41
+
42
+ Applications:
43
+ - Analyzing and processing spectral data in chemistry, biology, and other fields
44
+ - Developing machine learning models for predicting properties or classifying samples based on spectral data
45
+ - Teaching and learning about chemometrics and data preprocessing in Python
46
+
47
+ ## Installation
48
+
49
+ Chemotools is distributed via PyPI and can be easily installed using pip:
50
+
51
+ ```bash
52
+ pip install chemotools
53
+ ```
54
+
55
+ ## Usage
56
+
57
+ Chemotools is designed to be used in conjunction with Scikit-learn. It follows the same API as other Scikit-learn transformers, so you can easily integrate it into your existing workflow. For example, you can use chemotools to build pipelines that include transformers from chemotools and Scikit-learn:
58
+
59
+ ```python
60
+ from sklearn.preprocessing import StandardScaler
61
+ from sklearn.pipeline import make_pipeline
62
+
63
+ from chemotools.baseline import AirPls
64
+ from chemotools.scatter import MultiplicativeScatterCorrection
65
+
66
+ preprocessing = make_pipeline(AirPls(), MultiplicativeScatterCorrection(), StandardScaler(with_std=False))
67
+ spectra_transformed = preprocessing.fit_transform(spectra)
68
+ ```
69
+
70
+ Check the [documentation](https://paucablop.github.io/chemotools/) for more information on how to use chemotools.
71
+
72
+
73
+ ## Contributing
74
+
75
+ We welcome contributions to Chemotools from anyone interested in improving the package. Whether you have ideas for new features, bug reports, or just want to help improve the code, we appreciate your contributions! You are also welcome to see the [Project Board](https://github.com/users/paucablop/projects/4) to see what we are currently working on.
76
+
77
+ To contribute to Chemotools, please follow these guidelines:
78
+
79
+ #### Reporting Bugs
80
+
81
+ If you encounter a bug or unexpected behavior in Chemotools, please open an issue on the GitHub repository with a detailed description of the problem, including any error messages and steps to reproduce the issue. If possible, include sample code or data that demonstrates the problem.
82
+
83
+ #### Suggesting Enhancements
84
+
85
+ If you have an idea for a new feature or enhancement for Chemotools, please open an issue on the GitHub repository with a detailed description of the proposed feature and its benefits. If possible, include example code or use cases that illustrate how the feature would be used.
86
+
87
+ #### Submitting Changes
88
+
89
+ If you'd like to contribute code changes to Chemotools, please follow these steps:
90
+
91
+ - Create a new branch for your changes. We follow trunk-based development, so all changes should be made on a new branch and branches should be short-lived and merged into main.
92
+
93
+ - Write your code and tests, making sure to follow the Chemotools coding style and conventions. It is fundamental to include tests for both, the Scikit-learn API and the functionality of the transformers.
94
+
95
+ - Run the tests using the provided testing framework to ensure that your changes do not introduce any new errors or regressions.
96
+
97
+ - Submit a pull request to the main Chemotools repository with a detailed description of your changes and the problem they solve.
98
+
99
+ We will review your changes and provide feedback as soon as possible. If we request changes, please make them as quickly as possible to keep the review process moving.
100
+
101
+ #### Code Style
102
+
103
+ Please follow the Chemotools code style and conventions when contributing code changes. Specifically:
104
+
105
+ - Use four spaces for indentation
106
+ - Use descriptive variable names
107
+ - Avoid using magic numbers or hard-coded strings
108
+ - Format your code using Black
109
+
110
+ #### Codecov
111
+
112
+ We use Codecov to track the test coverage of Chemotools. Please make sure that your changes do not reduce the test coverage of the package.
113
+
114
+
115
+ ## License
116
+
117
+ This package is distributed under the MIT license. See the [LICENSE](LICENSE) file for more information. When contributing code to Chemotools, you are agreeing to release your code under the MIT license.
118
+
119
+ ## Credits
120
+
121
+ AirPLS baseline correction is based on the implementation by [Zhang et al.](https://pubs.rsc.org/is/content/articlelanding/2010/an/b922045c). The current implementation is based on the Python implementation by [zmzhang](https://github.com/zmzhang/airPLS).
@@ -7,7 +7,7 @@ chemotools/baseline/non_negative.py,sha256=1L8wE0JUsQWmdku-Sm73ubDiIZ72CtImSvInQ
7
7
  chemotools/baseline/polynomial_correction.py,sha256=PtoR6T_rdk7ygJt4JsbR1qNOI4cP8Ntmq3ocKUet6Qo,1818
8
8
  chemotools/baseline/subtract_reference.py,sha256=jDLKpYQqGFEPcwkNTwzAOzw2tNSkRdubdmz6yJOkT7U,1684
9
9
  chemotools/derivative/__init__.py,sha256=x2F0IJ-uCbEYFoXFbZl_RTPCbSq82vqGOwlM9R_2Klo,84
10
- chemotools/derivative/norris_william.py,sha256=CqqCL41xs0mZ5OlJ06iYPzpnb8bJKAfmh81PAe43vmw,3134
10
+ chemotools/derivative/norris_william.py,sha256=kREo1JYBZrM9pZ9HXVoU4nTndZKP2MbjGomX7KIxFTI,3134
11
11
  chemotools/derivative/savitzky_golay.py,sha256=FO65XpgbY1QNC7nPsLJVmmrx5gurGKpqIAH2NnjSWrk,1801
12
12
  chemotools/scale/__init__.py,sha256=Lr8fVyaBjFMf1cjDAI-a_gCrXivKCpyTOYnuJZHRh98,79
13
13
  chemotools/scale/l_normalize.py,sha256=Z_CtUfCJoVsn8CasVzZUjIzs02QzxLwFg2zqmXN3cWQ,1349
@@ -26,9 +26,9 @@ chemotools/utils/check_inputs.py,sha256=fRAV4HIaGamdj_PNXSNnl7LurXytACNTGO51rhPp
26
26
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  tests/fixtures.py,sha256=TxsGOMszSMnttUO4iWniNKeiXEkjRzhlPU9aLeyT89s,1505
28
28
  tests/test_functionality.py,sha256=J5yqA29E7WU0AvieFP6wFLCUH783udVZ-XrnErrBT5Y,7351
29
- tests/test_sklearn_compliance.py,sha256=kb0uZayUk-lu8OMZ9a2I3oBCtpNnZ5fNpkg8b6ANbxM,3130
30
- chemotools-0.0.11.dist-info/LICENSE,sha256=qtyOy2wDQVX9hxp58h3T-6Lmfv-mSCHoSRkcLUdM9bg,1070
31
- chemotools-0.0.11.dist-info/METADATA,sha256=fzILI5FuTJJSFuGDKyKFM4RdcL67qiHiZySQAcKpuBs,18720
32
- chemotools-0.0.11.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
33
- chemotools-0.0.11.dist-info/top_level.txt,sha256=eNcNcKSdo-1H_2gwSDrS__dr7BM3R73Cnn-pBiW5FEw,17
34
- chemotools-0.0.11.dist-info/RECORD,,
29
+ tests/test_sklearn_compliance.py,sha256=_a8gazkjJtj9STrt6fwvC37wFviZhpz-KCt3_LnmG_w,3309
30
+ chemotools-0.0.12.dist-info/LICENSE,sha256=qtyOy2wDQVX9hxp58h3T-6Lmfv-mSCHoSRkcLUdM9bg,1070
31
+ chemotools-0.0.12.dist-info/METADATA,sha256=NO-f_BJeOX4l2rMXu_Nu8ZI3my-HlWSpeMboiB5FFM4,6165
32
+ chemotools-0.0.12.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
33
+ chemotools-0.0.12.dist-info/top_level.txt,sha256=eNcNcKSdo-1H_2gwSDrS__dr7BM3R73Cnn-pBiW5FEw,17
34
+ chemotools-0.0.12.dist-info/RECORD,,
@@ -79,6 +79,14 @@ def test_compliance_norris_williams():
79
79
  # Act & Assert
80
80
  check_estimator(transformer)
81
81
 
82
+ # NorrisWilliams
83
+ def test_compliance_norris_williams_2():
84
+ # Arrange
85
+ transformer = NorrisWilliams(derivative_order=2)
86
+ # Act & Assert
87
+ check_estimator(transformer)
88
+
89
+
82
90
  # PolynomialCorrection
83
91
  def test_compliance_polynomial_correction():
84
92
  # Arrange
@@ -1,411 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: chemotools
3
- Version: 0.0.11
4
- Summary: Package to integrate chemometrics in scikit-learn pipelines
5
- Home-page: https://github.com/paucablop/chemotools
6
- Author: Pau Cabaneros Lopez
7
- Author-email: pau.cabaneros@gmail.com
8
- Project-URL: Bug Tracker, https://github.com/paucablop/chemotools/issues/
9
- Classifier: Programming Language :: Python :: 3
10
- Classifier: License :: OSI Approved :: MIT License
11
- Classifier: Operating System :: OS Independent
12
- Requires-Python: >=3.9
13
- Description-Content-Type: text/markdown
14
- License-File: LICENSE
15
- Requires-Dist: numpy
16
- Requires-Dist: scipy
17
- Requires-Dist: scikit-learn
18
-
19
- ## Welcome to chemotools! 🖖
20
-
21
- This project is an implementation of spectral preprocessing techniques integrated with the widely popular sklearn API, providing you with an easy-to-use toolkit for analyzing and manipulating your data. With this integration, you can easily apply techniques such as spectral derivative, scatter correction or baseline removal to your datasets.
22
-
23
- The goal of this project is to provide a comprehensive and user-friendly package for spectral preprocessing, with a focus on making it accessible to a wide range of users, from data scientists to researchers to curious learners. By integrating these techniques with the powerful sklearn API, I enable users to easily build machine learning and chemometric models on top of preprocessed data, making it possible to identify patterns and make predictions with greater accuracy.
24
-
25
- In this repository, you will find a range of tools and resources for using spectral preprocessing techniques with the sklearn API, including code samples, documentation, and examples. I encourage contributions from the community, whether through bug reports, feature requests, or pull requests, to help us make this project even better.
26
-
27
- In addition, I take great care to ensure that all functions are thoroughly unit tested for both API compatibility and functionality. I believe that unit testing is an essential part of any software development process, and it is particularly important for a project like this, which aims to provide reliable data analysis tools. I hope that this project will serve as a useful resource for anyone interested in learning more about spectral preprocessing and machine learning.
28
-
29
- Thank you for your interest in this project, and I hope you find it useful for your data analysis and machine learning needs.
30
-
31
- Table of contents
32
- =================
33
-
34
- <!--ts-->
35
- * [Installation](#installation)
36
- * [Integration with scikit-learn](#integration-with-scikit-learn)
37
- * [Scatter](#scatter)
38
- * [Multiplicative scatter correction](#multiplicative-scatter-correction)
39
- * [Standard normal variate](#standard-normal-variate)
40
- * [Extended multiplicative scatter correction (COMING SOON)](#extended-multiplicative-scatter-correction)
41
- * [Derivative](#derivatives)
42
- * [Savitzky-Golay derivative](#savitzky-golay-derivative)
43
- * [William Norris derivative](#william-norris-derivative)
44
- * [Baseline](#baseline)
45
- * [Linear baseline correction](#linear-baseline-correction)
46
- * [Polynomial baseline correction](#polynomial-baseline-correction)
47
- * [Cubic spline baseline correction](#cubic-spline-baseline-correction)
48
- * [AirPls](#alternate-iterative-reweighed-penalized-least-squares-(AIRPLS)-baseline-correction)
49
- * [Non-negative](#non-negative)
50
- * [Scale](#scale)
51
- * [Min-max scaler](#minmax-scaler)
52
- * [L-Norm scaler](#l-norm-scaler)
53
- * [Smooth](#smooth)
54
- * [Savitzky-Golay smoothing](#savitzky-golay-smoothing)
55
- * [Whittaker smoother](#whittaker-smoother)
56
- * [Mean filter](#mean-filter)
57
- * [Median filter](#median-filter)
58
-
59
- <!--te-->
60
-
61
-
62
- ## __Installation 🚀__
63
- This package is available on PyPI and can be installed using pip:
64
-
65
- ```bash
66
- pip install chemotools
67
- ```
68
-
69
- ## __Integration with scikit-learn ✨__
70
- All preprocessing techniques in this package are compatible with ```scikit-learn``` and can be used in pipelines. For example, the following code creates a pipeline that performs multiplicative scatter correction, followed by a min-max scaling and a Savitzky-Golay smoothing:
71
-
72
- ```python
73
- from sklearn.preprocessing import StandardScaler
74
- from sklearn.pipeline import make_pipeline
75
-
76
- pipeline = make_pipeline(AirPls(), MultiplicativeScatterCorrection(), StandardScaler(with_std=False))
77
- spectra_transformed = pipeline.fit_transform(spectra)
78
- ```
79
-
80
-
81
- ## __Scatter__
82
-
83
- This package contains three common algorithms for scatter correction in spectroscopy:
84
-
85
- - Multiplicative scatter correction (MSC)
86
- - Standard normal variate (SNV)
87
- - Extended multiplicative scatter correction (EMSC)
88
-
89
- ### __Multiplicative scatter correction__
90
- Multiplicative scatter correction (MSC) is a preprocessing technique in spectroscopy that corrects for the influence of light scattering on spectral measurements by dividing each spectrum by a scatter reference spectrum. The current implementation, accepts three types of reference spectra:
91
-
92
- - The mean spectrum of the dataset (_default_).
93
- - The median spectrum of the dataset.
94
- - A single spectrum that is used to correct all spectra in the dataset.
95
-
96
- Usage example for a single reference spectrum:
97
-
98
- Usage example for the mean spectrum:
99
-
100
- ```python
101
- from chemotools.scatter import MultiplicativeScatterCorrection
102
-
103
- msc = MultiplicativeScatterCorrection()
104
- spectra_msc = msc.fit_transform(spectra)
105
- ```
106
-
107
- Usage example for the median spectrum:
108
-
109
- ```python
110
- from chemotools.scatter import MultiplicativeScatterCorrection
111
-
112
- msc = MultiplicativeScatterCorrection(use_median=True)
113
- spectra_msc = msc.fit_transform(spectra)
114
- ```
115
-
116
- Usage example for a single reference spectrum:
117
-
118
- ```python
119
- from chemotools.scatter import MultiplicativeScatterCorrection
120
-
121
- msc = MultiplicativeScatterCorrection(reference=reference_spectrum)
122
- spectra_msc = msc.fit_transform(spectra)
123
- ```
124
-
125
- ![msc](figures/msc.png)
126
-
127
-
128
- ### __Standard normal variate__
129
- Standard normal variate (SNV) is a preprocessing technique in spectroscopy that adjusts for baseline shifts and variations in signal intensity by subtracting the mean and dividing by the standard deviation of each spectrum.
130
-
131
- Usage example for a single reference spectrum:
132
-
133
- ```python
134
- from chemotools.scatter import StandardNormalVariate
135
-
136
- snv = StandardNormalVariate()
137
- spectra_snv = snv.fit_transform(spectra)
138
- ```
139
- ![snv](figures/snv.png)
140
-
141
-
142
- ### __Extended multiplicative scatter correction__
143
- Extended multiplicative scatter correction (EMSC) is a preprocessing technique in spectroscopy that corrects for the influence of light scattering and instrumental drift by fitting a mathematical model to a reference spectrum and using it to normalize all spectra in the dataset.
144
-
145
- An implementation of the EMSC will be available soon 🤓.
146
-
147
- ## __Derivatives__
148
-
149
- This package contains two common algorithms for calculating derivatives in spectroscopy:
150
-
151
- - Savitzky-Golay derivative
152
- - William Norris derivative
153
-
154
- ### __Savitzky-Golay derivative__
155
- Savitzky-Golay derivative is a preprocessing technique in spectroscopy that calculates the derivative of a spectrum by fitting a polynomial to a window of adjacent points and calculating the derivative of the polynomial.
156
-
157
- The following arguments can be set:
158
-
159
- - ```window_size: int```: The length of the window. Must be an odd integer number. _Default: 5_.
160
- - ```polynomial_order: int```: The order of the polynomial used to fit the samples. Must be less than ```window_size```. _Default: 2_.
161
- - ```derivative_order: int```: The order of the derivative to compute. _Default: 1_.
162
- - ```mode: str```: The mode of the boundary. _Default: 'nearest'_, available options: ```'nearest'```, ```'constant'```, ```'reflect'```, ```'wrap'```, ```'mirror'```, ```'interp'```. See the [official documentation](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.savgol_filter.html) for more information.
163
-
164
- Usage example:
165
-
166
- ```python
167
- from chemotools.derivative import SavitzkyGolay
168
-
169
- sg = SavitzkyGolay(window_size=15, polynomial_order=2, derivate_order=1)
170
- spectra_derivative = sg.fit_transform(spectra)
171
- ```
172
-
173
- ![sgd](figures/sgd.png)
174
-
175
- ### __William Norris derivative__
176
- William Norris derivative is a preprocessing technique in spectroscopy that calculates the derivative of a spectrum using finite differences.
177
-
178
- The following arguments can be set:
179
-
180
- - ```window_size: int```: The length of the window. Must be an odd integer number. _Default: 5_.
181
- - ```gap_size: int```: The number of points between the first and second points of the window. _Default: 3_.
182
- - ```derivative_order: int```: The order of the derivative to compute. _Default: 1_.
183
- - ```mode: str```: The mode of the boundary. _Default: 'nearest'_, available options: ```‘reflect’```, ```‘constant’```, ```‘nearest’```, ```‘mirror’```, ```‘wrap’```. See the [official documentation](https://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.convolve.html) for more information.
184
-
185
- Usage example:
186
-
187
- ```python
188
- from chemotools.derivative import NorrisWilliams
189
-
190
- nw = NorrisWilliams(window_size=15, gap_size=3, derivative_order=1)
191
- spectra_derivative = nw.fit_transform(spectra)
192
- ```
193
- ![wn](figures/wn.png)
194
-
195
- ## __Baseline__
196
- Baseline correction is a preprocessing technique in spectroscopy that corrects for baseline shifts and variations in signal intensity by subtracting a baseline from a spectrum. The following algorithms are available:
197
-
198
- - Linear baseline correction
199
- - Polynomial baseline correction
200
- - Cubic spline baseline correction
201
- - Alternate iterative reweighed penalized least squares (AIRPLS) baseline correction
202
- - Non-negative
203
-
204
- ### __Linear baseline correction__
205
- Linear baseline correction is a preprocessing technique in spectroscopy that corrects for baseline shifts and variations in signal intensity by subtracting a linear baseline from a spectrum. The current implementation subtracts a linear baseline between the first and last point of the spectrum.
206
-
207
- Usage example:
208
-
209
- ```python
210
- from chemotools.baseline import LinearCorrection
211
-
212
- lc = LinearCorrection()
213
- spectra_baseline = lc.fit_transform(spectra)
214
- ```
215
- ![lb](figures/lb.png)
216
-
217
-
218
- ### __Polynomial baseline correction__
219
- Polynomial baseline correction is a preprocessing technique in spectroscopy that approximates a baseline by fitting a polynomial to selected points of the spectrum. The selected points often correspond to minima in the spectra, and are selected by their index (not by the wavenumber). If no points are selected, the algorithm will select the first and last point of the spectrum.
220
-
221
- The following arguments can be set:
222
-
223
- - ```order: int``` The order of the polynomial used to fit the samples. _Default: 1_.
224
- - ```indices: tuple``` The indices of the points to use for fitting the polynomial. _Default: (0, -1)_. At the moment the indices need to be specified manually as a tuple because ```scikit-learn``` does not support mutable attributes in ```BaseEstimator```. This tuple is transformed to a list when the ```transform``` method is called.
225
-
226
- Usage example:
227
-
228
- ```python
229
- from chemotools.baseline import PolynomialCorrection
230
-
231
- pc = PolynomialCorrection(order=2, indices=(0, 75, 150, 200, 337))
232
- spectra_baseline = pc.fit_transform(spectra)
233
- ```
234
- ![pb](figures/pb.png)
235
-
236
- ### __Cubic spline baseline correction__
237
- Cubic spline baseline correction is a preprocessing technique in spectroscopy that approximates a baseline by fitting a cubic spline to selected points of the spectrum. Similar to the ```PolynomialCorrection```, the selected points often correspond to minima in the spectra, and are selected by their index (not by the wavenumber). If no points are selected, the algorithm will select the first and last point of the spectrum.
238
-
239
- The following arguments can be set:
240
- - ```indices: tuple``` The indices of the points to use for fitting the polynomial. _Default: None_. At the moment the indices need to be specified manually as a tuple because ```scikit-learn``` does not support mutable attributes in ```BaseEstimator```. This tuple is transformed to a list when the ```transform``` method is called.
241
-
242
- Usage example:
243
-
244
- ```python
245
- from chemotools.baseline import CubicSplineCorrection
246
-
247
- cspl = CubicSplineCorrection(indices=(0, 75, 150, 200, 337))
248
- spectra_baseline = cspl.fit_transform(spectra)
249
- ```
250
-
251
- ![splines](figures/splines.png)
252
-
253
- ### __Alternate iterative reweighed penalized least squares (AIRPLS) baseline correction__
254
- It is an automated baseline correction algorithm that uses a penalized least squares approach to fit a baseline to a spectrum. The original algorithm is based on the paper by [Zhang et al.](https://pubs.rsc.org/is/content/articlelanding/2010/an/b922045c). The current implementation is based on the Python implementation by [zmzhang](https://github.com/zmzhang/airPLS).
255
-
256
- The following arguments can be set:
257
- - ```nr_iterations: int``` The number of iterations before exiting the algorithm. _Default: 15_.
258
- - ```lam: float``` smoothing factor. _Default: 1e2_.
259
- - ```polynomial_order: int``` The order of the polynomial used to fit the samples. _Default: 1_.
260
-
261
- Usage example:
262
-
263
- ```python
264
- from chemotools.baseline import AirPls
265
-
266
- airpls = AirPls()
267
- spectra_baseline = airpls.fit_transform(spectra)
268
- ```
269
-
270
- ![airpls](figures/airpls.png)
271
-
272
- ### __Non-negative__
273
- Non-negative baseline correction is a preprocessing technique in spectroscopy that corrects for baseline by removing negative values from a spectrum. Negative values are either replaced by 0, or set to their absolute value.
274
-
275
- The following arguments can be set:
276
- - ```mode: str``` If ```'zero'```, negative values are replaced by 0. If ```'abs'```, negative values are set to their absolute value. _Default: ```'zero'```.
277
-
278
- Usage example:
279
-
280
- ```python
281
- from chemotools.baseline import NonNegative
282
-
283
- nnz = NonNegative(mode='zero')
284
- nna = NonNegative(mode='abs')
285
- spectra_nnz = nnz.fit_transform(spectra_baseline)
286
- spectra_nna = nna.fit_transform(spectra_baseline)
287
- ```
288
-
289
- ![nnz](figures/nnz.png)
290
- ![nna](figures/nna.png)
291
-
292
- ## __Scale__
293
- Scale is a preprocessing technique in spectroscopy that scales the spectra. The following algorithms are available:
294
- - MinMaxScaler: scales each spectrum by its minimum or maximum value.
295
- - L-normalization: scales each spectrum by its L-norm.
296
-
297
- ### __MinMax scaler__
298
- MinMaxScaler is a preprocessing technique in spectroscopy that scales each spectrum by its minimum or maximum value.
299
-
300
- The following arguments can be set:
301
- - ```norm: str``` If ```'min'```, the spectrum is scaled by its minimum value. If ```'max'```, the spectrum is scaled by its maximum value. _Default: ```'max'```_.
302
-
303
- Usage example:
304
-
305
- ```python
306
- from chemotools.scale import MinMaxScaler
307
-
308
- minmax = MinMaxScaler(norm='max')
309
- spectra_norm = minmax.fit_transform(spectra)
310
- ```
311
-
312
- ![minmax](figures/minmax.png)
313
-
314
-
315
- ### __L-normalization__
316
- L-normalization is a preprocessing technique in spectroscopy that scales each spectrum by its L-norm.
317
-
318
- The following arguments can be set:
319
- - ```l-norm: int``` The L-norm to use. _Default: ```2```_.
320
-
321
- Usage example:
322
-
323
- ```python
324
- from chemotools.scale import LNormalize
325
-
326
- lnorm = LNormalize(l_norm=2)
327
- spectra_norm = lnorm.fit_transform(spectra)
328
- ```
329
-
330
- ![lnorm](figures/lnorm.png)
331
-
332
- ## __Smooth__
333
- Smooth is a preprocessing technique in spectroscopy that smooths the spectra. The following algorithms are available:
334
- - Savitzky-Golay filter
335
- - Whittaker smoother
336
- - Mean filter
337
- - Median filter
338
-
339
- ### __Savitzky-Golay filter__
340
- Savitzky-Golay filter is a preprocessing technique in spectroscopy that smooths the spectra by fitting a polynomial to the data. The current implementation is based on the ```scipy.signal.savgol_filter``` function.
341
-
342
- The following arguments can be set:
343
-
344
- - ```window_size: int```: The length of the window. Must be an odd integer number. _Default: 3_.
345
- - ```polynomial_order: int```: The order of the polynomial used to fit the samples. Must be less than ```window_size```. _Default: 1_.
346
- - ```derivative_order: int```: The order of the derivative to compute. _Default: 1_. ```'constant'```, ```'reflect'```, ```'wrap'```, ```'mirror'```, ```'interp'```. See the [official documentation](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.savgol_filter.html) for more information.
347
-
348
- Usage example:
349
-
350
- ```python
351
- from chemotools.smooth import SavitzkyGolayFilter
352
-
353
- sgf = SavitzkyGolayFilter(window_size=15, polynomial_order=2)
354
- spectra_norm = sgf.fit_transform(spectra)
355
- ```
356
-
357
- ![sgf](figures/sgf.png)
358
-
359
- ### __Whittaker smoother__
360
- It is an automated smoothing algorithm that uses a penalized least squares approach to iteratively apply a smoothing operation to the data by minimizing a penalty function that balances the degree of smoothness and the fidelity to the original data.
361
-
362
- The following arguments can be set:
363
- - ```lam: float``` smoothing factor. _Default: 1e2_.
364
- - ```differences: int``` The number of differences to use. _Default: 1_.
365
-
366
- Usage example:
367
-
368
- ```python
369
- from chemotools.smooth import WhittakerSmooth
370
-
371
- wtk = WhittakerSmooth(lam=10)
372
- spectra_norm = wtk.fit_transform(spectra)
373
- ```
374
-
375
- ![wtk](figures/wtk.png)
376
-
377
- ### __Mean filter__
378
- Mean filter is a preprocessing technique in spectroscopy that smooths the spectra by applying a mean filter. The current implementation is based on the ```scipy.ndimage.uniform_filter``` function.
379
-
380
- The following arguments can be set:
381
- - ```window_size: int```: The length of the window. Must be an odd integer number. _Default: 3_.
382
- - ```mode: str```: The mode parameter determines how the array borders are handled, where ```'constant'```, ```'reflect'```, ```'wrap'```, ```'mirror'```, ```'interp'```. See the [official documentation](https://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.uniform_filter1d.html) for more information. _Default: ```'nearest'```_.
383
-
384
- Usage example:
385
-
386
- ```python
387
- from chemotools.smooth import MeanFilter
388
-
389
- mean_filter = MeanFilter()
390
- spectra_norm = mean_filter.fit_transform(spectra)
391
- ```
392
-
393
- ![mean_filter](figures/mean_filter.png)
394
-
395
- ### __Median filter__
396
- Median filter is a preprocessing technique in spectroscopy that smooths the spectra by applying a median filter. The current implementation is based on the ```scipy.ndimage.median_filter``` function.
397
-
398
- The following arguments can be set:
399
- - ```window_size: int```: The length of the window. Must be an odd integer number. _Default: 3_.
400
- - ```mode: str```: The mode parameter determines how the array borders are handled, where ```'constant'```, ```'reflect'```, ```'wrap'```, ```'mirror'```, ```'interp'```. See the [official documentation](https://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.median_filter.html) for more information. _Default: ```'nearest'```_.
401
-
402
- Usage example:
403
-
404
- ```python
405
- from chemotools.smooth import MedianFilter
406
-
407
- median_filter = MedianFilter()
408
- spectra_norm = median_filter.fit_transform(spectra)
409
- ```
410
-
411
- ![median_filter](figures/median_filter.png)