Skip to main content

Peaksel SDK (Python)

A library to manage chromatography data in Peaksel: upload raw data, fetch the results of parsing (spectra, traces, peaks, injection info, etc).

If you need some advanced processing (like peak deconvolution), you can combine it with:

  • MOCCA for DAD/PDA spectral processing for peak deconvolution, purity and yield calculations
  • matchms for Mass Spec (especially Tandem MS) spectral processing, as well as isotopic pattern score matching and searching, and other machine learning capabilities.
  • Unknown MS peaks analysis for automated identification of unknown MS peaks using custom logic or libraries.

To install Peaksel SDK:

pip install elsci-peaksel-sdk

Examples

Read public data

First, we're going to read an already uploaded injection (like this one), and print some spectra info from each detector:

from peakselsdk.Peaksel import Peaksel

# Initialize the entry point:
peaksel = Peaksel("https://peaksel.elsci.io", org_name="elsci")

# Fetch injection info:
injection = peaksel.injections().get("8ehCv4tVR1U")

# Go through all detectors and print the spectra:
for detectorRun in injection.detectorRuns:
    if not detectorRun.has_spectra():
        continue
    spectra = peaksel.blobs().get_spectra(detectorRun.blobs.spectra)  # fetch spectra
    for spectrum in spectra:
        print(f"{spectrum.rt}: {spectrum.x}")

Uploading & parsing vendor files

If you want to upload an injection or read private data, you must authenticate. The general steps stay similar though:

from peakselsdk.Peaksel import Peaksel
from peakselsdk.util.CacheManager import CacheManager, FsCacheManager, NoCacheManager, InMemCacheManager

org = "YOUR ORG NAME"  # or your username if you want to work with your personal data
auth_header = {"Cookie": "SESSION=YOUR SESSION ID"}  # either cookie or Basic Auth
raw_data = "/path/to/zip/with/raw-data.zip"

# Entry point to Peaksel:
peaksel = Peaksel("https://peaksel.elsci.io", org_name=org, default_headers=auth_header)

# Upload & parse, get the ID back:
injection_ids = peaksel.injections().upload(raw_data) 

# Fetch injection info:
injection = peaksel.injections().get(injection_ids[0])

# Now you can do the same operations as in the previous example
# ...

Before running this:

  1. You need to register at Peaksel Hub, get a private SaaS or install Peaksel on your machines.
  2. Determine how you want to authenticate (service account or SessionID, see the next section)

Authentication

Session ID auth (Cookie)

If you're just playing, you can run the code on behalf of your own account:

auth_header = {"Cookie": "SESSION=YOUR SESSION ID"}

You can get this cookie from the browser:

  1. In Chrome: open Peaksel -> authenticate -> Press F12
  2. Go to Application tab -> Cookies -> click on the website URL -> copy the Value of the JSESSIONID cookie

Service Accounts auth (Basic Auth)

Service accounts can have their Basic Auth credentials specified in Peaksel configs. This option is available in Private SaaS and on-prem installations. For Peaksel Hub you need to request it (support@elsci.io). If you go with Basic Auth, then in the code you set up auth headers this way:

from peakselsdk.util.api_util import peaksel_basic_auth_header

auth_header = {"Authorization": peaksel_basic_auth_header("your username", "your password")}

Design & Conventions

All the necessary functionality is exposed from peakselsdk.Peaksel class - just use its methods to work with Injections, Batches, Substances (analytes), Peaks, etc.

  • XxxClient are classes to communicate with the app API, they are created and returned by Peaksel entrypoint
  • Classes like User, Org, Injection capture the actual requests and responses
    • Fields are camelCased to match the JSON structure
    • The JSON's id is actually stored in eid (aka entity id) in the classes. Because id has special meaning in Python.
    • Every __init__() has **kwargs param that is ignored. This is needed to simplify parsing of response JSONs, as we always keep the names in the classes and JSONs the same, so when passing those as dict into the constructor, the corresponding fields are set. But it's possible that in Peaksel we add a new param, and this would break dict->DTO conversion as the param will be unknown. So to be forward-compatible, we add **kwargs to capture all the unknown fields.

Working with source code

  1. Install uv build tool and run: uv venv && uv sync && uv build
  2. In PyCharm mark src as Sources Root and test as Test Sources Root
  3. To run the tests ./test.sh

Metadata

Release files for elsci-peaksel-sdk 1.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for elsci-peaksel-sdk 1.8.0
File Size Uploaded
elsci_peaksel_sdk-1.8.0.tar.gz 19.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for elsci-peaksel-sdk 1.8.0
File Interpreter ABI Platform
elsci_peaksel_sdk-1.8.0-py3-none-any.whl Python 3 none any Details

Total release size: 48.8 kB

Release files / elsci_peaksel_sdk-1.8.0.tar.gz

Download URL elsci_peaksel_sdk-1.8.0.tar.gz
Size 19.5 kB
Tags Source
SHA-256 checksum
How to use checksums
5022edca3153e78246ae8833f0fc3163ceb2dc38b1a9fedb9d62e326836f7b7c
BLAKE2b-256 checksum
How to use checksums
9cb06296583d64dc42ac1d0844b3e29714495f6e7b2bb243238299d33a5266f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 19, 2026.

Transparency log

Release files / elsci_peaksel_sdk-1.8.0-py3-none-any.whl

Download URL elsci_peaksel_sdk-1.8.0-py3-none-any.whl
Size 29.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4f5cf0b451d1f8be6a464fd2e3ec7a39fe978412e1d576dbb267ed5422707df4
BLAKE2b-256 checksum
How to use checksums
126b26cdd0383bc67a5914d26038bc137c39199658009a6af74a79b3fa2c3589
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 19, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.8.0 This release

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.1

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page