ETL pipeline for single-cell RNA-seq data
Project description
scp-ingest-pipeline
File Ingest Pipeline for Single Cell Portal
The SCP Ingest Pipeline is an ETL pipeline for single-cell RNA-seq data.
Prerequisites
- Python 3.7+
- Google Cloud Platform project
- Suitable service account (SA) and MongoDB VM in GCP. SA needs roles "Editor", "Genomics Pipelines Runner", and "Storage Object Admin". Broad Institute engineers: see instructions here.
- SAMTools, if using
ingest/make_toy_data.py
Install
Fetch the code, boot your virtualenv, install dependencies:
git clone git@github.com:broadinstitute/scp-ingest-pipeline.git
cd scp-ingest-pipeline
python3 -m venv env --copies
source env/bin/activate
pip install -r requirements.txt
And if using ingest/make_toy_data.py
:
brew install samtools
Now get secrets from Vault to set environment variables needed to write to the database:
export BROAD_USER="<username in your email address>"
export DATABASE_NAME="single_cell_portal_development"
vault login -method=github token=`~/bin/git-vault-token`
# Get username and password
vault read secret/kdux/scp/development/$BROAD_USER/mongo/user
export MONGODB_USERNAME="<username from Vault>"
export MONGODB_PASSWORD="<password from Vault>"
# Get external IP address for host
vault read secret/kdux/scp/development/$BROAD_USER/mongo/hostname
export DATABASE_HOST="<ip from Vault (omit brackets)>"
If you are developing updates for Sentry logging, then set the DSN:
vault read secret/kdux/scp/production/scp_config.json | grep SENTRY
export SENTRY_DSN="<Sentry DSN value from Vault>"
Be sure to unset SENTRY_DSN
when your updates are done, so development logs are not always sent to Sentry.
Git hooks
After installing Ingest Pipeline, add Git hooks to help ensure code quality:
pre-commit install && pre-commit install -t pre-push
The hooks will expect that git-secrets has been set up. If you are a Broad Institute employee who has not done this yet, please see: broadinstitute/single_cell_portal_configs for specific guidance.
Bypass hooks
In rare cases, you might need to skip Git hooks, like so:
- Skip commit hooks:
git commit ... --no-verify
- Skip pre-push hooks:
git push ... --no-verify
Test
After installing:
source env/bin/activate
cd tests; pytest
Use
Run this every time you start a new terminal to work on this project:
source env/bin/activate
See ingest_pipeline.py
for usage examples.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for scp-ingest-pipeline-1.5.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a8f1ed064e3d34d5645c449bc06a76fa578c9d1049a66156acd71ea01891362 |
|
MD5 | 62f6112ff6354dd26187dcad4632e61d |
|
BLAKE2b-256 | acf890fc435d59ca693242fee76f4ec77ded269cb388d6fff6c9ed550b2c0cfa |
Hashes for scp_ingest_pipeline-1.5.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 81bde6e79d8464c53e56146f2685e5f67e08d8f58f0e026b3e3694181ea2e85d |
|
MD5 | 562c859119f9df445e906e729e89d884 |
|
BLAKE2b-256 | 3cf2e5c07d279f8f98284b21d7f93a54570f912dd66cbe7c47ff404804b328c4 |