Lightweight Python tools for generating PRISMA-style flow diagrams without system dependencies.
Project description
prisma-flow
prisma-flow is a lightweight Python package for generating PRISMA-style flow
diagrams for evidence synthesis workflows.
Unlike Graphviz-based tools, prisma-flow does not require system-level graph
layout binaries. Unlike Mermaid-based tools, it does not require Node or Mermaid
CLI. The default renderer is a pure-Python, template-based SVG generator.
The project is designed for systematic reviews, scoping reviews, evidence syntheses, and literature review workflows.
Features
- Pure-Python SVG rendering by default
- Standalone HTML export
- Mermaid text export without Mermaid CLI
- JSON input/output in the base install
- Optional YAML input/output via
prisma-flow[yaml] - Optional PNG method that clearly reports the missing optional dependency
- Python API and
prisma-flowcommand-line interface - PRISMA count validation with errors and warnings
Installation
pip install prisma-flow
or:
uv add prisma-flow
Optional YAML support:
uv add "prisma-flow[yaml]"
Optional PNG support, when a supported backend is added:
uv add "prisma-flow[png]"
Python API
from prismaflow import PrismaFlow
flow = PrismaFlow.new_review(
records_identified_databases=1240,
records_identified_registers=50,
records_removed_duplicates=210,
records_removed_automation=0,
records_removed_other=0,
records_screened=1080,
records_excluded=950,
reports_sought=130,
reports_not_retrieved=10,
reports_assessed=120,
reports_excluded={
"Wrong population": 30,
"Wrong intervention": 20,
"Wrong outcome": 15,
"Not primary research": 15,
},
studies_included=40,
)
report = flow.validate()
print(report.format_text())
flow.to_svg("prisma.svg")
flow.to_html("prisma.html")
flow.to_mermaid("prisma.mmd")
flow.to_json("review.json")
CLI usage
Validate input data:
prisma-flow validate examples/basic_new_review.json
Render SVG:
prisma-flow render examples/basic_new_review.json -o prisma.svg
Render other base-install formats:
prisma-flow render examples/basic_new_review.json --format html -o prisma.html
prisma-flow render examples/basic_new_review.json --format mermaid -o prisma.mmd
If validation fails, the CLI prints a report and exits with a non-zero status:
Validation failed:
- records_screened should equal identified records minus removed records. Expected: 1080 Found: 1090
Data model
The v0.1 implementation supports the PRISMA 2020 new-review databases/registers template:
from prismaflow import (
EligibilityStage,
IdentificationStage,
IncludedStage,
PrismaFlow,
PrismaTemplate,
ScreeningStage,
)
flow = PrismaFlow(
template=PrismaTemplate.PRISMA_2020_NEW_DATABASES_REGISTERS,
identification=IdentificationStage(
records_identified_databases=1240,
records_identified_registers=50,
),
screening=ScreeningStage(
records_removed_duplicates=210,
records_removed_automation=0,
records_removed_other=0,
records_screened=1080,
records_excluded=950,
),
eligibility=EligibilityStage(
reports_sought=130,
reports_not_retrieved=10,
reports_assessed=120,
reports_excluded={"Wrong population": 30},
),
included=IncludedStage(studies_included=40),
)
Dependency policy
SVG, HTML, Mermaid, and JSON work with the base install. YAML is optional. PNG is intentionally optional and not implemented as a required renderer in v0.1.
The package does not require Graphviz, Cairo, CairoSVG, Node, Mermaid CLI, Inkscape, Playwright, browser engines, Matplotlib, or Plotly.
Development
conda env create -f conda/dev.yaml
conda activate prismaflow
poetry config virtualenvs.create false
poetry install --extras "dev yaml"
Run the same workflow through Makim:
makim tests.linter
makim tests.unit
makim package.build
makim docs.build
makim all.ci
Documentation
The documentation site is built with Quarto:
quarto render docs
Preview locally:
quarto preview docs
License
BSD-3-Clause.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file prisma_flow-0.1.1.tar.gz.
File metadata
- Download URL: prisma_flow-0.1.1.tar.gz
- Upload date:
- Size: 18.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.13.13 Linux/6.17.0-1013-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5829840ced959d39db174e29c4e8524832055e71329d248450b01ea27afa8681
|
|
| MD5 |
01c589c49fe499a99c70d88ced29610d
|
|
| BLAKE2b-256 |
1b1f99729930be62f64857426cceb9c724953f01c800ea4fd04e7fb3979348df
|
File details
Details for the file prisma_flow-0.1.1-py3-none-any.whl.
File metadata
- Download URL: prisma_flow-0.1.1-py3-none-any.whl
- Upload date:
- Size: 25.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.13.13 Linux/6.17.0-1013-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef71ffea84c08153bb8d02e87a56d5f051f80fb379cf9ef290bd61cd0a58c34d
|
|
| MD5 |
fff85b823a7e44f64aeca4af2b08e166
|
|
| BLAKE2b-256 |
9f662041ec364771b53330f9f2fe265c85d02dc81c24a99643e6135b9a965a38
|