A Dagster-based data processing pipeline for downloading and analyzing genomic data from sources like the NCI Genomic Data Commons and NeMO Archive.
This project provides automated workflows for:
- Downloading genomic data files from remote archives
- Processing and validating data integrity (MD5 checksums)
- Uploading processed data to S3-compatible storage
- Orchestrating complex bioinformatics workflows
The project consists of two main components:
- Assets: Core data processing assets for NeMO manifest handling
- Sensor: Automated monitoring and triggering of data processing jobs
- Resources: S3 integration for data storage and retrieval
A separate sub-project for Cell Ranger analysis workflows, including:
- Docker containerization for reproducible environments
- Jupyter notebook for interactive analysis (
Omics.ipynb) - Dask-based distributed computing setup
- NeMO Archive Integration: Download and process files from the NeMO (NCI Genomic Data Commons) archive
- Automated Data Pipeline: Sensor-driven processing of manifest files
- Data Integrity: MD5 checksum validation for all downloaded files
- S3 Storage: Resilient upload to S3-compatible storage with retry logic
- Scalable Processing: Support for large genomic datasets with progress tracking
- Clone the repository:
git clone <repository-url>
cd dagster-omics- Install dependencies using uv:
uv sync- For development with additional tools:
uv sync --extra devSet the following environment variables:
export AWS_S3_ENDPOINT_URL=<your-s3-endpoint>
export AWS_ACCESS_KEY_ID=<your-access-key>
export AWS_SECRET_ACCESS_KEY=<your-secret-key>
export DEST_BUCKET=<destination-bucket>
export MANIFEST_PREFIX=<manifest-file-prefix>
export SCRATCH_PATH=<temporary-processing-directory>- Start the Dagster web server:
uv run dagster dev- Access the web interface at
http://localhost:3000
The pipeline includes:
nemo_manifestasset: Downloads and processes NeMO manifest filesdownload_nemo_manifestasset: Handles file downloads with validationupload_fileasset: Uploads processed files to S3nemo_manifest_sensor: Automatically detects new manifest files and triggers processing
Navigate to the applications/cell-ranger/ directory for Cell Ranger-specific workflows:
cd applications/cell-ranger/
uv pip install -r requirements.txt
uv run jupyter notebook Omics.ipynb- Black formatting (line length: 100)
- isort for import sorting
- flake8 for linting
- mypy for type checking
uv run pytest tests/Note: Integration tests are excluded from default test runs.
See LICENSE for details.
dagster-omics/
├── src/dagster_omics/ # Main Dagster application
│ ├── assets/ # Data processing assets
│ │ └── nemo_manifest.py # NeMO file processing
│ ├── sensor.py # Automated job triggering
│ └── definitions.py # Dagster definitions
├── applications/
│ └── cell-ranger/ # Cell Ranger sub-project
│ ├── Dockerfile # Container configuration
│ ├── Omics.ipynb # Analysis notebook
│ └── requirements.txt # Python dependencies
├── tests/ # Test suite
└── workspace.yaml # Dagster workspace configuration