Skip to main content

panoptes: monitor computational workflows in real time

Project description

alt text

Bioinformaticians and data scientists, rely on computational frameworks (e.g. snakemake, nextflow, CWL, WDL) to process, analyze and integrate data of various types. Such frameworks allow scientists to combine software and custom tools of different origin in a unified way, which lets them reproduce the results of others, or reuse the same pipeline on different datasets. One of the fundamental issues is that the majority of the users execute multiple pipelines at the same time, or execute a multistep pipeline for a big number of datasets, or both, making it hard to track the execution of the individual steps or monitor which of the processed datasets are complete. panoptes is a tool that monitors the execution of such workflows.

panoptes is a service that can be used by:

  • Data scientists, bioinformaticians, etc. that want to have a general overview of the progress of their pipelines and the status of their jobs
  • Administrations that want to monitor their servers
  • Web developers that want to integrate the service in bigger web applications

Note: panoptes currently supports workflows written in snakemake.

Snakemake 9 users: the legacy --wms-monitor flag was removed upstream. Monitoring is now delivered via a logger plugin — see Snakemake 9 support below.

Installation

Requirements:

Local

pypi

Create virtual environment

python3 -m venv venv

Activate virtual environment

source venv/bin/activate

Install via pypi

pip install panoptes-ui

conda

Create conda environment

conda create --name panoptes -c conda-forge -c bioconda panoptes-ui

Activate conda environment

conda activate panoptes

Source code

Clone repo

git clone https://github.com/panoptes-organization/panoptes.git

Enter repo

cd panoptes

Create virtual environment

python3 -m venv venv

Activate virtual environment

source venv/bin/activate

Install all requirements

pip install .

Run the server

By default, server should run on 127.0.0.1:5000, and generate the sqlite database .panoptes.db.

Using the development server

panoptes

Using a WSGI server

Install all necessary packages (see above), plus a WSGI server (e.g. gunicorn or waitress), and run the server:

gunicorn --access-logfile logs/access.log --error-logfile logs/error.log --timeout 120 --bind :5000 panoptes.app:app

Containers

Docker

Requirements:

  • docker

Pull image that is automatically built from bioconda. You can find the latest tag in the following url: https://quay.io/repository/biocontainers/panoptes-ui?tab=tags. For example:

docker pull quay.io/biocontainers/panoptes-ui:0.2.3--pyh7cba7a3_0

Then run the container with:

docker run -p 5000:5000 -it <image-id> panoptes

Note: In this case the database is stored within the docker image, so every time you restart the server the database will be empty. You would need to mount the volumes to make the database persistent.

Docker compose

Requirements:

  • docker
  • docker-compose

Build

docker-compose build

Run

docker-compose up -d

Server should run on: http://127.0.0.1:8000

Stop

docker-compose down

Singularity

You can also deploy the server with singularity. To do so pull the image with singularity. For example:

singularity pull docker://quay.io/biocontainers/panoptes-ui:0.2.3--pyh7cba7a3_0

And then we can start the server by running:

singularity exec panoptes-ui:0.2.3--pyh7cba7a3_0

Run an example workflow

A small reference pipeline (samtools sort/index → htseq-count → merge across four samples) that already wires up --logger panoptes lives at snakemake_example_workflow. Follow the instructions there to exercise this server end-to-end.

Snakemake 9 support

Starting with Snakemake 9, the --wms-monitor flag that older panoptes versions relied on has been removed. Monitoring is instead delivered through logger plugins.

To stream events from a Snakemake 9 workflow to panoptes, install the companion logger plugin with either pip or conda:

pip install snakemake-logger-plugin-panoptes
# or
conda install -c conda-forge -c bioconda snakemake-logger-plugin-panoptes

Then pass --logger panoptes to Snakemake:

snakemake \
    --cores 1 \
    --logger panoptes \
    --logger-panoptes-address http://127.0.0.1:5000

The plugin lives in its own repository: panoptes-organization/snakemake-logger-plugin-panoptes. It registers a workflow with panoptes via GET /create_workflow on the first event and then translates Snakemake's LogEvent records (JOB_INFO, JOB_STARTED, JOB_FINISHED, JOB_ERROR, SHELLCMD, PROGRESS, ERROR, RUN_INFO) into the JSON payloads that panoptes' /update_workflow_status endpoint already understands.

Workflows orchestrated by Snakemake < 9 continue to work unchanged via the legacy --wms-monitor http://<host>:<port> flag.

panoptes in action

Watch the video

panoptes API

Panoptes provides the following API endpoints:

Endpoint Method Description
/api/service-info GET Server status
/api/workflows GET Get all workflows
/api/workflow/<workflow-id> GET Get workflow status
/api/workflow/<workflow-id>/jobs GET Get all jobs of a workflow
/api/workflow/<workflow-id>/job/<job-id> GET Get job status
/api/workflow/<workflow-id> PUT Rename a workflow
Expects a dictionary with new name
(e.g. {'name': 'my new workflow name'})
/api/workflow/<workflow-id> DELETE Delete a workflow
/api/workflows/all DELETE Clean up database

To communicate with panoptes the following endpoints are used by snakemake:

Endpoint Method Description
/api/service-info GET Server status (same as above)
/create_workflow GET Get a unique id/name str(uuid.uuid4()) for each workflow
/update_workflow_status POST Panoptes receives a dictionary from snakemake that contains:
- A log message dictionary (JSON-encoded)
- The current timestamp
- The unique id/name of the workflow.
(e.g. {'msg': json.dumps(message), 'timestamp': time.asctime(), 'id': id})

Contribute

Please see the Contributing instructions.

CI server

Changes on master (and pull requests against it) trigger a GitHub Actions build that runs the test suite and a live end-to-end run of the example workflow.

Contact

In case the issues section is not enough for you, you can also contact us via discord

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

panoptes_ui-1.0.0.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

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

panoptes_ui-1.0.0-py3-none-any.whl (1.4 MB view details)

Uploaded Python 3

File details

Details for the file panoptes_ui-1.0.0.tar.gz.

File metadata

  • Download URL: panoptes_ui-1.0.0.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for panoptes_ui-1.0.0.tar.gz
Algorithm Hash digest
SHA256 5f539b9f30ea88a3459d7cb647d2b9e52ee83c21e3a965ff2d6592581886f038
MD5 949ed8b083a640a5621565c3c596490e
BLAKE2b-256 62f9916b626a03938793bfe0cd7691bd9be9bef79b91bb9f4db5b2b556cf68c7

See more details on using hashes here.

File details

Details for the file panoptes_ui-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: panoptes_ui-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for panoptes_ui-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4082b1ff70205053a83bea29c354508eda93e334d42ae55906b58867a4d9f6d7
MD5 b1dc334e8e6da0b8e7b7dd1f7cba89e3
BLAKE2b-256 d3403dcdd03b2f65a5bbff0d51a048710b659374c3f30412ef4f4acfa8faac72

See more details on using hashes here.

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