CLI integration for BioCypher ecosystem packages
Project description
biotope
| Package | |
| Meta |
CLI for the BioCypher ecosystem: Croissant-described data → BioCypher knowledge graph, with git-like metadata version control.
Status: pre-alpha, developer-facing. APIs and CLI will change. Not yet suitable for end users.
Start here
The fastest way in is the tutorial — a 15-minute end-to-end walk-through that builds a real knowledge graph from public airport/flight data. It is the canonical, most up-to-date onboarding path; the snippet below is just a flavour preview.
Install
uv add biotope # in a uv-managed venv
pipx install biotope # global install
uvx biotope init my-kg # no install: ephemeral venv for the scaffolder
uv pip install -e ".[dev]" # editable, with test deps (for biotope itself)
From init to a knowledge graph
# 1. Scaffold a project (uvx works fine here — no local install needed).
uvx biotope init my-kg --purpose "What approved drugs target genes in T2D?" --no-prompt
cd my-kg && uv sync
# 2. Bring in data — biotope get downloads + tracks; biotope add stages a
# local file/folder and runs croissant-baker over it.
uv run biotope get https://example.org/opentargets.parquet --output-dir data/ot --no-add
uv run biotope add data/ot --license CC-BY-4.0 --creator "Open Targets"
# 3. Inspect the pipeline state at any time.
uv run biotope queue # raw / processed / mapped, with provenance footer
# 4. Declare intent — what entities and relations the graph must contain.
# Non-interactive (agent-friendly); without flags, `biotope map` opens
# a wizard that captures intent and resolves slots in one flow.
uv run biotope map --entity gene --entity disease --entity drug \
--relation gene_associated_with_disease
# 5. Resolve the slots. Two equivalent paths:
# a) Wizard (humans): uv run biotope map
# b) Edit mappings/*.mapping.yaml directly, then validate (agents):
# uv run biotope map scaffold .biotope/datasets/data/ot.jsonld
# uv run biotope map inspect <croissant> --json # field catalogue
# uv run biotope map preview --json # projected schema + tuples
# 6. Build a runnable BioCypher project. Strict: rejects unresolved slots.
uv run biotope build
uv run python build/create_knowledge_graph.py
uv run biotope view
biotope init is a pure scaffolder. All non-autogeneratable metadata is supplied as CLI flags — by a user or an agent reading AGENTS.md. Semantic decisions (which record set, which fields, which transforms) are made by the human or copilot; biotope only enumerates options, validates, and previews.
Architecture
Two layers, both in this repo:
| Layer | Module | Role |
|---|---|---|
| Project & VCS | biotope.commands.* |
init, add, commit, status, log, push, pull, mv, check-data — git-like metadata workflow |
| KG construction | biotope.croissant.* |
spec, codegen, acquisition, mapping, alignment, scaffold, registry — Croissant → BioCypher project |
biotope.croissant.api exposes scaffold_mapping, propose_alignment, materialize, discover_sources as pure functions; the CLI verbs are thin wrappers. The mapping authoring surface lives under biotope.commands.map (Click group) and biotope.commands.map_wizard (Rich-based guided flow).
The agent surface is AGENTS.md (template lives at biotope/templates/AGENTS.md, copied into every project by init). No MCP server — agents drive the same CLI a human uses.
Commands
init project scaffolding
get add mv rm acquisition + tracking (baker writes croissants)
queue mark pipeline-state dashboard + manual transitions
map (inspect|scaffold|preview) semantic mapping (intent + wizard + agent path)
propose-alignment cross-mapping same_node equivalences
build view build + inspect a graph
status commit log push pull git-like metadata VCS
check-data checksum verification
annotate config field-level annotation + project config
discover benchmark scaffolded but not yet wired into the standard flow
read chat search promises / auxiliary
biotope describe and the heuristic biotope propose-mapping were removed/deprecated. Intent capture is now biotope map --entity ... --relation ...; scaffolding is biotope map scaffold. propose-mapping remains as a deprecated alias for the scaffold subcommand.
See docs/architecture.md for the data-flow diagram and docs/api-docs/ for per-command reference.
Development
uv sync --extra dev
uv run pytest
uv run ruff check biotope tests
Build backend is hatchling; lockfile is uv.lock. CI runs uv sync + uv run pytest on Python 3.10 and 3.12.
Copyright
Copyright © 2025–2026 BioCypher Team. Apache 2.0.
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
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 biotope-0.7.1.tar.gz.
File metadata
- Download URL: biotope-0.7.1.tar.gz
- Upload date:
- Size: 369.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb8675a3412ea5ca30e3ef34fc5ddc2320644b5a234e28cb63546e8214c12a7f
|
|
| MD5 |
6ccb248d411d79ca653d390253abb24c
|
|
| BLAKE2b-256 |
d29130540107dc9b3e132493cc7f8b6a5f9456adfe4610173d26b36ac773bc2e
|
Provenance
The following attestation bundles were made for biotope-0.7.1.tar.gz:
Publisher:
release-please.yaml on biocypher/biotope
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
biotope-0.7.1.tar.gz -
Subject digest:
eb8675a3412ea5ca30e3ef34fc5ddc2320644b5a234e28cb63546e8214c12a7f - Sigstore transparency entry: 1656698980
- Sigstore integration time:
-
Permalink:
biocypher/biotope@cab9688104354a0aeb5a179d29da303a0dbdc242 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/biocypher
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-please.yaml@cab9688104354a0aeb5a179d29da303a0dbdc242 -
Trigger Event:
push
-
Statement type:
File details
Details for the file biotope-0.7.1-py3-none-any.whl.
File metadata
- Download URL: biotope-0.7.1-py3-none-any.whl
- Upload date:
- Size: 180.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
280dc095e4e09f4d8f2cd3da747a600c9dd88653eaa763a3b00fdbea3c110e63
|
|
| MD5 |
a4d79dcd46cb32d70aa9c9f7a28eea13
|
|
| BLAKE2b-256 |
6d16e26f6f815e7c0cae8f0b8afdd1bce7adfeeccb9bf81cc6ddebf8b8ea6378
|
Provenance
The following attestation bundles were made for biotope-0.7.1-py3-none-any.whl:
Publisher:
release-please.yaml on biocypher/biotope
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
biotope-0.7.1-py3-none-any.whl -
Subject digest:
280dc095e4e09f4d8f2cd3da747a600c9dd88653eaa763a3b00fdbea3c110e63 - Sigstore transparency entry: 1656699177
- Sigstore integration time:
-
Permalink:
biocypher/biotope@cab9688104354a0aeb5a179d29da303a0dbdc242 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/biocypher
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-please.yaml@cab9688104354a0aeb5a179d29da303a0dbdc242 -
Trigger Event:
push
-
Statement type: