Metadata-Version: 2.4
Name: sfprov
Version: 0.1.0
Summary: Extract and store workflow provenance from RO-Crate and Nextflow DAG files.
Project-URL: Repository, https://github.com/Jaffar-Hussein/workflow-provenance
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: neo4j>=5.0
Requires-Dist: pydantic>=2.0
Requires-Dist: argcomplete>=3.0
Provides-Extra: opensearch
Requires-Dist: opensearch-py>=2.0; extra == "opensearch"
Provides-Extra: extractors
Requires-Dist: biopython>=1.80; extra == "extractors"
Requires-Dist: pdfminer.six>=20221105; extra == "extractors"
Requires-Dist: openpyxl>=3.0; extra == "extractors"
Requires-Dist: xlrd>=2.0; extra == "extractors"
Requires-Dist: pyBigWig>=0.4.0; extra == "extractors"
Provides-Extra: all
Requires-Dist: opensearch-py>=2.0; extra == "all"
Requires-Dist: biopython>=1.80; extra == "all"
Requires-Dist: pdfminer.six>=20221105; extra == "all"
Requires-Dist: openpyxl>=3.0; extra == "all"
Requires-Dist: xlrd>=2.0; extra == "all"
Requires-Dist: pyBigWig>=0.4.0; extra == "all"
Dynamic: license-file

# sfprov — Workflow Provenance Parser

Extract, store, and query provenance from Nextflow pipelines into Neo4j.

---

## Install

```bash
pip install sfprov                 # core
pip install sfprov[opensearch]     # + OpenSearch indexing
pip install sfprov[extractors]     # + file feature extraction
pip install sfprov[all]            # everything
```

**System dependencies** (must be on PATH):

| Format | Tool |
|--------|------|
| SAM / BAM / CRAM | `samtools` |
| VCF / BCF | `bcftools` |

---

## Quick Start

```bash
# 1. Initialise (starts Neo4j, writes nextflow.config)
sfprov init

# 2. Run your Nextflow pipeline as usual
nextflow run main.nf

# 3. Ingest provenance
sfprov ingest --ro-crate ./results/provenance/ro-crate-metadata.json \
              --lineage  ./work
```

---

## CLI

| Command | Description |
|---------|-------------|
| `sfprov init` | Bootstrap services and configure Nextflow |
| `sfprov ingest` | Parse and load provenance into Neo4j |
| `sfprov parse` | Parse only (no write) |
| `sfprov status` | Check service health |
| `sfprov query` | Run canned graph queries |

---

## Requirements

- Python ≥ 3.10
- Docker + Compose V2
- Nextflow ≥ 23 with `nf-prov` plugin (configured automatically by `sfprov init`)
