Skip to main content

A Python API for instances of the datalab data management platform (https://github.com/datalab-org/datalab).

Project description

datalab Python API

A simple Python API that can interact with datalab instances.

The idea here is to provide a set of utility functions and models for manipulating samples, cells, inventory, files, users and metadata associated with datalab entries in an automated way.

This API may not expose all the functionality available in a given datalab instance, and the idea would be that this package can support multiple versions of the underlying datalab REST API. This means that the API is primarily functional in nature, as opposed to object-oriented, since datalab instances are free to use their own custom data models. The available schemas are reported as instance metadata and in the future object-oriented models may be able to be genereated directly in the client (so e.g., the returned data would be Python objects like Sample rather than JSON data).

The issue tracker here will be used to track development of features, as well as bug reports. If you have any suggestions or feedback, please post it there.

Installation

The API can be used by installing this repository with pip, ideally in a fresh Python 3.9+ environment (created using e.g., conda, virtualenv or other related tools -- if you're not sure about this, ask).

Either from PyPI, for the latest released version:

pip install datalab-api

or for the latest development version from GitHub:

git clone git@github.com:datalab-org/datalab-api
cd datalab-api
pip install .

Usage

Example usage as a Jupyter notebook can be found in the examples directory or in the online documentation, as well as the full API documentation.

Authentication

Currently the only supported authentication method is via an API key. You can generate one for your account for a given datalab instance by visiting the /get-api-key endpoint of your chosen instance, or, if using a recent version of datalab, by visiting your account settings in the browser.

This API key can be set via the environment variable DATALAB_API_KEY. To suport the use case of needing to interact with multiple datalab instances, the client will also check prefixed environment variables that use the IDENTIFIER_PREFIX of the chosen datalab instance, e.g., GREY_DATALAB_API_KEY or PUBLIC_DATALAB_API_KEY. Only keys that match will be read (e.g., other environment variables starting with PUBLIC_ will be ignored, when connecting to the public demo datalab).

Python API

This package implements basic functionality for displaying and manipulating entries:

from datalab_api import DatalabClient

with DatalabClient("https://demo-api.datalab-org.io") as client:

    # List all items of a given type
    items = client.get_items()

    # Get more info on a particular item
    item = client.get_item(item_id="test")

    # Upload a file to an item
    file_response = client.upload_file(filepath="my_echem_data.mpr", item_id="test")

Command-line interface (CLI)

There is also an EXPERIMENTAL CLI, exposed via the datalab command. This CLI has many subcommands, which can be listed with datalab help or by entering the shell with just datalab. For now, the CLI does not expose all of the functionality of the underlying API, and is mostly oriented on GET-focused operations.

$ datalab

╭──────────────────────────────────────────────────────────────────────────────────────────╮
│                                                                                          │
│               oooo              o8              o888             oooo                    │
│            ooooo888    ooooooo o888oo  ooooooo    888   ooooooo    888ooooo              │
│          888    888    ooooo888 888    ooooo888   888   ooooo888   888    888            │
│          888    888  888    888 888  888    888   888 888    888   888    888            │
│            88ooo888o  88ooo88 8o 888o 88ooo88 8o o888o 88ooo88 8o o888ooo88              │
│                                                                                          │
╰─ Copyright (c) 2020-2024 Matthew Evans, Joshua Bocarsly & the Datalab Development Team. ─╯

datalab > help

Documented commands (type help <topic>):
========================================
authenticate  get  info

Undocumented commands:
======================
exit  help  quit

datalab > help get

 Usage: [INSTANCE_URL] get [OPTIONS] ITEM_TYPE [INSTANCE_URL]

 Get a table of items of the given type.

╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────╮
│ *    item_type         TEXT            [default: None] [required]                                   │
│      instance_url      [INSTANCE_URL]  [default: None]                                              │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────╮
│ --page-limit        INTEGER  [default: 10]                                                          │
│ --api-key           TEXT     [default: None]                                                        │
│ --log-level         TEXT     [default: WARNING]                                                     │
│ --help                       Show this message and exit.                                            │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────╯

datalab > get samples demo-api.datalab-org.io --page-limit 2
                                                    /samples/
┏━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ type  ID               refcode      name                            nblocks  collections  creators      ┃
┡━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│  C    test_api         grey:WHQFXG                                        0               Matthew Evans │
├──────┼─────────────────┼─────────────┼────────────────────────────────┼─────────┼─────────────┼───────────────┤
│  S    test12331231312  grey:GFSUQM                                        1               Matthew Evans │
└──────┴─────────────────┴─────────────┴────────────────────────────────┴─────────┴─────────────┴───────────────┘

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

datalab_api-0.5.0.tar.gz (21.3 kB view details)

Uploaded Source

Built Distribution

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

datalab_api-0.5.0-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

Details for the file datalab_api-0.5.0.tar.gz.

File metadata

  • Download URL: datalab_api-0.5.0.tar.gz
  • Upload date:
  • Size: 21.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for datalab_api-0.5.0.tar.gz
Algorithm Hash digest
SHA256 9f473b3534c2f4cee1ecc047b8654bc3a034e8bddd1a0eb3a17a7b15b7e7cffa
MD5 b2daeb0dade3608fda4b06d430e6de2e
BLAKE2b-256 62941aac612119bee191eea18db191a3f682fd52538dff6bc74ec5fe0db5e58d

See more details on using hashes here.

Provenance

The following attestation bundles were made for datalab_api-0.5.0.tar.gz:

Publisher: release.yml on datalab-org/datalab-api

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

File details

Details for the file datalab_api-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: datalab_api-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 18.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for datalab_api-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f593167e65417afc8b421b834d5a6421430c4a9efadfe49d4708e15c01b8a1c0
MD5 61b4946eabf596a5ab244b33fd4a2100
BLAKE2b-256 ae0ee2e097df29d7f47b22e6318f1ded3d393abb8c6ac8c54ba5cbcfc9135024

See more details on using hashes here.

Provenance

The following attestation bundles were made for datalab_api-0.5.0-py3-none-any.whl:

Publisher: release.yml on datalab-org/datalab-api

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