Skip to main content

scp-ingest-pipeline

File Ingest Pipeline for Single Cell Portal

Build status Code coverage

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
  • Tabix, if using ingest/genomes/genomes_pipeline.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

To use ingest/make_toy_data.py:

brew install samtools

To use ingest/genomes/genomes_pipeline.py:

brew install tabix

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

# Run all tests
pytest

Some common pytest usage examples (run in /tests):

# Run all tests and see print() output
pytest -s

# Run only tests in test_ingest.py
pytest test_ingest.py

# Run all tests, show code coverage metrics
pytest --cov=../ingest/

For more, see https://docs.pytest.org/en/stable/usage.html.

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.

Metadata

Release files for scp-ingest-pipeline 1.12.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scp-ingest-pipeline 1.12.2
File Size Uploaded
scp-ingest-pipeline-1.12.2.tar.gz 73.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for scp-ingest-pipeline 1.12.2
File Interpreter ABI Platform
scp_ingest_pipeline-1.12.2-py3-none-any.whl Python 3 none any Details

Total release size: 159.2 kB

Release files / scp-ingest-pipeline-1.12.2.tar.gz

Download URL scp-ingest-pipeline-1.12.2.tar.gz
Size 73.8 kB
Tags Source
SHA-256 checksum
How to use checksums
f13496772c94742f1a4674e8fc071fe17c56a622074cd7e5cd35eeab094e5a27
BLAKE2b-256 checksum
How to use checksums
b2bf37cba5426d94b4e505d56ba65fdabdc8b5d950aa0a150b5fdecb927ec71d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.6

Release files / scp_ingest_pipeline-1.12.2-py3-none-any.whl

Download URL scp_ingest_pipeline-1.12.2-py3-none-any.whl
Size 85.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bc6aa5b4e344f78840238266337d7498699ed98de8542d0c17b3ae6da3eb1a2a
BLAKE2b-256 checksum
How to use checksums
7c3cbf481eb48fac7670e4cc759df8a6f1df3206d2457737197e58c8206f0528
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.6

Release history Release notifications | RSS feed

This release

1.12.2 This release

2 release files

1.7.0

2 release files

1.5.4

2 release files

1.4.0

2 release files

1.3.10

2 release files

1.3.9

2 release files

1.3.7

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page