/dapi

DesignSafe API

Primary LanguagePythonOtherNOASSERTION

DesignSafe API (dapi)

dapi

build and test License Docs

dapi is a library that simplifies the process of submitting, running, and monitoring TAPIS v2 / AgavePy jobs on DesignSafe via Jupyter Notebooks.

Features

Jobs

  • Simplified TAPIS v2 Calls: No need to fiddle with complex API requests. dapi abstracts away the complexities.

  • Seamless Integration with DesignSafe Jupyter Notebooks: Launch DesignSafe applications directly from the Jupyter environment.

Database

Connects to SQL databases on DesignSafe:

Database dbname env_prefix
NGL ngl NGL_
Earthake 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

Install dapi via pip

pip3 install dapi

To install the current development version of the library use:

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

Example usage:

Jobs

On DesignSafe Jupyter:

Install the latest version of dapi and restart the kernel (Kernel >> Restart Kernel):

# Remove any previous installations
!pip uninstall dapi -y
# Install 
!pip install dapi --quiet
  • Import dapi library
import dapi
  • To list all functions in dapi
dir(dapi)

Database

from dapi.db import DSDatabase

db = DSDatabase("ngl")
sql = 'SELECT * FROM SITE'
df = db.read_sql(sql)
print(df)

# Optionally, close the database connection when done
db.close()

Documentation

View dapi API doc

To generate API docs:

pdoc --html --output-dir docs dapi --force

Support

For any questions, issues, or feedback submit an issue

Development

To develop or test the library locally. Install Poetry. In the current repository run the following commands

poetry shell
poetry install
poetry build

To run the unit test

poetry run pytest -v

Known Issues

The project only works on Python 3.9 due to AgavePy Issue #125.

License

dapi is licensed under the MIT License.

Authors

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