Official plugins

SpectroChemPy can be extended by plugins. Some plugins are maintained as part of the SpectroChemPy project and are considered official plugins. They use the same plugin discovery mechanism as third-party plugins, but their API, examples, tests, and documentation are coordinated with the main project.

Official plugins should feel like part of SpectroChemPy once installed. They are not loaded manually: import SpectroChemPy, then use the documented namespace.

Current official plugins

Domain

Package

Namespace

Typical use

IRIS

spectrochempy-iris

scp.iris, dataset.iris

2D-IRIS analysis, IRIS kernels, dataset-bound IRIS operations.

NMR

spectrochempy-nmr

scp.nmr

TopSpin/Bruker NMR reading and NMR-specific processing utilities.

Tensor

spectrochempy-tensor

scp.tensor

TensorLy-backed tensor decompositions such as CP/PARAFAC.

Hypercomplex

spectrochempy-hypercomplex

dataset.hyper

Quaternion/hypercomplex support for phase-sensitive 2D NMR.

Carroucell

spectrochempy-carroucell

scp.carroucell

Carroucell experiment reader for spectroscopic data.

PerkinElmer

spectrochempy-perkinelmer

scp.perkinelmer

PerkinElmer .sp IR file reader.

Install commands

Official plugins can be installed through SpectroChemPy extras:

pip install spectrochempy[iris]
pip install spectrochempy[nmr]
pip install spectrochempy[tensor]
pip install spectrochempy[nmr,hypercomplex]  # NMR with 2D hypercomplex support
pip install spectrochempy[perkinelmer]

or directly:

pip install spectrochempy-iris
pip install spectrochempy-nmr
pip install spectrochempy-tensor
pip install spectrochempy-hypercomplex
pip install spectrochempy-carroucell
pip install spectrochempy-perkinelmer

Once installed, plugins are discovered automatically. No explicit plugin loading call is required in user code.

Versions and compatibility

Official plugins are versioned independently from the SpectroChemPy core package. A core release and a plugin release therefore do not need to share the same version number. For example, a stable spectrochempy 0.9.2 environment may use spectrochempy-nmr 0.1.3.

Stable plugin packages are published on PyPI and on the main spectrocat conda channel. Conda development builds for official plugins are currently not published automatically; they will be re-enabled once plugin development builds use versions distinct from stable releases.

Inspect installed plugins

Use scp.plugins() to see which official plugins are installed and which plugin namespaces are available:

import spectrochempy as scp

scp.plugins()

Use scp.plugins(verbose=True) to include lightweight package metadata such as versions. This inspection command reads entry-point and package metadata; it does not import optional plugin implementation modules.

API convention

The recommended form is namespaced:

import spectrochempy as scp

analysis = scp.iris.IRIS()
model = scp.tensor.CP(n_components=2)
dataset = scp.nmr.read("path/to/fid")

Dataset accessors are reserved for operations that act on an existing dataset:

kernel = dataset.iris.kernel_matrix(kernel_type="langmuir")

Some official plugins may expose limited root-level compatibility aliases, such as scp.IRIS. New examples should prefer the namespaced form, scp.iris.IRIS or scp.tensor.CP.

Generated plugin-owned public API pages are collected in Plugin public API reference.

Plugin summaries

The table above is the quick reference. The dedicated plugin pages below provide the user-facing details: