ss-NMR peak deconvolution and lineshape analysis
Project description
nmrlineshapeanalyser: ss-NMR peak shape deconvolution and line shape analysis made easy
nmrlineshapeanalyser is an open-source Python package designed to make peak deconvolution or line shape analysis in 1D NMR spectrum easier.
This package is compatible with Bruker's NMR data and spectrum data saved in a CSV files (see User's guide).
Why nmrlineshapeanalyser?
- it offers an easy and fast processing of either lineshape spectral analysis or peak deconvolution
- it requires the path to processed Bruker's data
data\single_peak\10\pdata\1 - for the optimisation, you only need to input the peak position(s) -- it does the rest
- it gives you the freedom to decide if you want to either optimise or fix the peak peak position(s) while other peak parameters are refined
- it provides you a detailed analysis of the optimised Pseudo-Voigt parameters that describe your peak(s) -- saved in a txt file
- for peak deconvolution, it calculates the percentage of each peaks
- it saves fit and data in a CSV file in case you decide to visualise in your preferred software
- it saves your fit as a publication-quality png file
Key Features
- Load and process Bruker NMR data
- Select and analyse specific spectral regions
- Perform peak fitting using Pseudo-Voigt profiles
- Calculate detailed peak metrics and statistics
- Generate publication-quality visuals
- Export results in various formats: - txt: calculated peak metrics and statistics - png: visualisation of the fitted spectral regions - csv: save plots to a file
Install
pip install nmrlineshapeanalyser
Dependencies
The following packages are required:
nmrglue
numpy >= 1.26.0
scipy
matplotlib >= 3.9.0
pandas >= 2.2.0
You can install these dependencies using pip:
pip install nmrglue numpy>=1.26.0 scipy matplotlib>=3.9.0 pandas>=2.2.0
A Single Peak Fitting Example
from nmrlineshapeanalyser.core import NMRProcessor
#create NMRProcessor object
processor = NMRProcessor()
#Load filepath: always include the '\\'
filepath = r"..\data\single_peak\10\pdata\1\\"
# Load the data
processor.load_data(filepath)
#Select the region of interest
x_data, y_data = processor.select_region(512, 650)
#Normalize the data and return normalised y_axis and the corresponding x_axis
x_data, y_normalized = processor.normalize_data(x_data, y_data)
#define initial parameters for the fitting
#this example is for a single peak
#format of the parameters is [x0, amplitude, width, eta, offset]
# x0 (position), amplitude, width, eta (mixing parameter), offset
#x0 has to be close to the peak position
initial_params = [
581, 0.12, 40.51, 0.89, -143.115,
]
#Specify the number of peaks to be fitted
number_of_peaks = 1
# fixed_x0 controls whether peak positions should be fixed during fitting
# False means position can vary, True means position is fixed
fixed_x0 = [False] * number_of_peaks
# You can alternatively set it up as:
#fixed_x0 = [False]
#Where the number of False reflects the number of peaks you want to optimise
# i.e. [False, False] means you want to optimise two peak positions and so on
#FIt the data
popt, metrics, fitted = processor.fit_peaks(x_data, y_normalized, initial_params, fixed_x0)
#popt is the optimized parameters
#metrics is the metrics of the fitting
#fitted is the fitted curve data
#Plot and examine the results of the fitting
fig, axes, components = processor.plot_results(x_data, y_normalized, fitted, popt)
#Save the figure as png file and the results as a csv file
processor.save_results(filepath, x_data, y_normalized, fitted, metrics, popt, components)
This should generate the image below.
And a cell looking like:
Peak Fitting Results:
===================
Peak 1 (Position: 582.01 ± 0.01):
Amplitude: 0.993 ± 0.002
Width: 12.33 ± 0.03 in ppm
Width: 835.74 ± 2.36 in Hz
Eta: 1.00 ± 0.01
Offset: -0.004 ± 0.000
Gaussian Area: 0.00 ± 0.10
Lorentzian Area: 19.23 ± 0.16
Total Area: 19.23 ± 0.19
--------------------------------------------------
Peak 1 Percentage is 100.00% ± 1.39%
Overall Percentage is 100.00% ± 1.39%
Contact
For questions and support, please open an issue in the GitHub repository.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nmrlineshapeanalyser-0.1.15.tar.gz.
File metadata
- Download URL: nmrlineshapeanalyser-0.1.15.tar.gz
- Upload date:
- Size: 56.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff0e98ca95b9b5c07a6ff96e7801a1b8ec256600035e7f32b4a98dd3e9ac9887
|
|
| MD5 |
2f311bf5e1467b9f6512b2882e27fd8e
|
|
| BLAKE2b-256 |
654b01436e5d6c30a44203de1719478dd5b9b4a70d67d6dd4b73c0a4af6d3a74
|
File details
Details for the file nmrlineshapeanalyser-0.1.15-py3-none-any.whl.
File metadata
- Download URL: nmrlineshapeanalyser-0.1.15-py3-none-any.whl
- Upload date:
- Size: 11.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c492403be1d500cebfbbe717e2283a7edff0ab8035bdd239a99d7ab986e71ee3
|
|
| MD5 |
fcfd97ef4a268c18c43cde262cc1e053
|
|
| BLAKE2b-256 |
600822ea5777d73a9feb5daa3834f7decb42f101ba379f40565eb815c8c2f046
|