Skip to main content

SDK to upload and manage chromatographic injections and other data in Elsci Peaksel

Project description

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).

pip install elsci-peaksel-sdk

Let's upload a ZIP with raw data and fetch the spectra that Peaksel parsed out:

from peakselsdk.Peaksel import Peaksel

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) 

Now we can fetch the results, including chromatograms and spectra:

# Use the ID of the 1st injection to fetch the rest of the info:
j = peaksel.injections().get(injection_ids[0])
for detectorRun in j.detectorRuns:
    if not detectorRun.has_spectra():
        continue
    # Fetch spectra of each detector
    spectra = peaksel.blobs().get_spectra(detectorRun.blobs.spectra)  # fetch spectra
    for spectrum in spectra:
        print(f"{spectrum.rt}: {spectrum.x}")

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)

Session ID auth (Cookie)

If you're just playing, you can run the code on behalf of your own account. For this copy the cookie from your 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

Now in the code you set up Peaksel this way:

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

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

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

elsci_peaksel_sdk-1.1.0.tar.gz (14.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

elsci_peaksel_sdk-1.1.0-py3-none-any.whl (22.4 kB view details)

Uploaded Python 3

File details

Details for the file elsci_peaksel_sdk-1.1.0.tar.gz.

File metadata

  • Download URL: elsci_peaksel_sdk-1.1.0.tar.gz
  • Upload date:
  • Size: 14.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for elsci_peaksel_sdk-1.1.0.tar.gz
Algorithm Hash digest
SHA256 f9fa16115d8c155b23b6e7ed6d430a847835fc85bbba9703d22f1982ee04b1be
MD5 05710d6780af715564750decaa05b428
BLAKE2b-256 65eebd1749730e48fd185eb00343db000449e98d91a81764fe2e65ba193c7c4c

See more details on using hashes here.

Provenance

The following attestation bundles were made for elsci_peaksel_sdk-1.1.0.tar.gz:

Publisher: python-publish.yml on elsci-io/peaksel-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file elsci_peaksel_sdk-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for elsci_peaksel_sdk-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d6e9ddf954ff687b382d7d5328730498fc39ebc7b09dafb7b8ae05c26d923934
MD5 67c8588981ed8c037c2ff0779816aac6
BLAKE2b-256 142c6ae6ca17343af2c4d5233a554cf19aa75095c0581d859f5265ec0494d3f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for elsci_peaksel_sdk-1.1.0-py3-none-any.whl:

Publisher: python-publish.yml on elsci-io/peaksel-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page