Skip to main content

DesignSafe API

Project description

DesignSafe API (dapi)

build and test License PyPI version Docs

dapi is a Python library for submitting, running, and monitoring TAPIS v3 jobs on DesignSafe via Jupyter Notebooks or the command line.

dapi

Features

Jobs

  • Generate TAPIS v3 job requests with automatic app parameter mapping
  • Submit, monitor (with progress bars), and manage jobs
  • Access and download job outputs
  • Discover and explore available DesignSafe applications

TMS Credentials

  • Establish, check, and revoke SSH keys on TACC execution systems (Frontera, Stampede3, LS6)
  • Works from any environment -- DesignSafe JupyterHub, command line, CI/CD

Files

  • Translate DesignSafe paths (/MyData, /CommunityData, /projects) to TAPIS URIs
  • Upload, download, and list files on DesignSafe storage

Database

Connects to SQL databases on DesignSafe:

Database dbname env_prefix
NGL ngl NGL_
Earthquake Recovery eq EQ_
Vp vp VP_

Define the following environment variables:

{env_prefix}DB_USER
{env_prefix}DB_PASSWORD
{env_prefix}DB_HOST
{env_prefix}DB_PORT

For e.g., to add the environment variable NGL_DB_USER edit ~/.bashrc, ~/.zshrc, or a similar shell-specific configuration file for the current user and add export NGL_DB_USER="dspublic".

Installation

pip install dapi

To install the development version:

pip install git+https://github.com/DesignSafe-CI/dapi.git@dev --quiet

In Jupyter notebooks:

%pip install dapi --quiet

To test the latest dev branch in a notebook:

%pip uninstall dapi --yes
%pip install git+https://github.com/DesignSafe-CI/dapi.git@dev --quiet

For local development (editable install — changes to source are reflected immediately):

pip install -e .

Quick Start

Authentication

Create a .env file with your DesignSafe credentials:

DESIGNSAFE_USERNAME=your_username
DESIGNSAFE_PASSWORD=your_password

Setup and submit a job

from dapi import DSClient

# Authenticate
client = DSClient()

# Establish TMS credentials (one-time per system)
client.systems.establish_credentials("frontera")

# Submit a job
job_request = client.jobs.generate(
    app_id="matlab-r2023a",
    input_dir_uri="/MyData/analysis/input/",
    script_filename="run_analysis.m",
    max_minutes=30,
    allocation="your_allocation"
)
job = client.jobs.submit(job_request)
final_status = job.monitor()

Database

from dapi import DSClient

client = DSClient()
df = client.db.ngl.read_sql("SELECT * FROM SITE LIMIT 10")
print(df)

Support

For any questions, issues, or feedback submit an issue.

Development

Install uv, then:

uv venv
uv pip install -e ".[dev]"

Run tests:

pytest tests/ -v

Build the package:

uv build

Documentation

Documentation uses Jupyter Book v2. To build and serve locally:

uv pip install -e ".[docs]"
jupyter-book start

License

dapi is licensed under the MIT License.

Authors

  • Prof. Krishna Kumar, University of Texas at Austin
  • Prof. Pedro Arduino, University of Washington
  • Prof. Scott Brandenberg, University of California Los Angeles

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

dapi-0.5.2.tar.gz (4.2 MB view details)

Uploaded Source

Built Distribution

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

dapi-0.5.2-py3-none-any.whl (55.3 kB view details)

Uploaded Python 3

File details

Details for the file dapi-0.5.2.tar.gz.

File metadata

  • Download URL: dapi-0.5.2.tar.gz
  • Upload date:
  • Size: 4.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dapi-0.5.2.tar.gz
Algorithm Hash digest
SHA256 fe28af3b2b7e71231304c7e6e5feb3d92437e5e0f8ad04802ec9f9c97f9d0115
MD5 9d52e212cbe6959d0f0729302d2a1ae1
BLAKE2b-256 7df5a919e40875845e89cacbd9267f8a765257381a698a08e5e6c11fe4d3ac57

See more details on using hashes here.

Provenance

The following attestation bundles were made for dapi-0.5.2.tar.gz:

Publisher: pypi.yml on DesignSafe-CI/dapi

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

File details

Details for the file dapi-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: dapi-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 55.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dapi-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 eaa2cfb748534938f27bf6624a98fc1dabac607a7cc3e490a7f1c5415e165d7a
MD5 0cea12ef792794596009d9fe6a131b13
BLAKE2b-256 26beceb00e97fb94848d79c5dd45a5a01e1695f72791bc495ea742891e29f338

See more details on using hashes here.

Provenance

The following attestation bundles were made for dapi-0.5.2-py3-none-any.whl:

Publisher: pypi.yml on DesignSafe-CI/dapi

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