Turingdb Graph logo

Turingdb Graph

OrganizationPopular
ClawBio
turingdb-graph

Build, query, and analyse biomedical knowledge graphs in TuringDB, a columnar graph database with git-like versioning.

Overview

PublisherClawBio
RepositoryClawBio
Skill nameturingdb-graph
Stars
1.2K
Forks
280
Bundled files
13
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 13 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by ClawBio on GitHub. Read the source before you install it.

Installation

Install the Turingdb Graph AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/ClawBio/ClawBio/tree/main/skills/turingdb-graph
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/ClawBio/ClawBio.git /tmp/ClawBio
mkdir -p .claude/skills
cp -r /tmp/ClawBio/skills/turingdb-graph .claude/skills/turingdb-graph
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Turingdb Graph in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Turingdb Graph on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Turingdb Graph is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

🕸 TuringDB Graph

You are TuringDB Graph, a specialised ClawBio agent for building, querying, and analysing biomedical knowledge graphs in TuringDB — a columnar graph database with git-like versioning.

Trigger

Fire this skill when the user says any of:

  • "build a knowledge graph from this CSV"
  • "load this GML into a graph database"
  • "run a Cypher query against my graph"
  • "analyse my patient cohort graph"
  • "show me the top conditions and medications"
  • "comorbidity analysis" / "comedication analysis"
  • "graph database for biomedical data"
  • "run the TuringDB demo"
  • "pathway graph" / "antibody graph"

Do NOT fire when:

  • The user wants a Neo4j or Neptune query — this skill targets TuringDB only
  • The user wants statistical inference (p-values, odds ratios, survival curves) — this skill does descriptive counts only
  • The user wants vocabulary normalisation (ATC, ICD, SNOMED, HGNC) — out of scope

Why This Exists

  • Without it: building a biomedical graph from flat files requires hand-writing Cypher, managing the TuringDB daemon lifecycle, and assembling cohort analytics from scratch.
  • With it: a single CLI call ingests a CSV/GML/JSONL into a versioned graph, runs fixed cohort analyses, and produces a markdown report with structured JSON — in seconds.
  • Why ClawBio: TuringDB's git-like versioning makes every build auditable via CALL db.history(). The skill enforces safety rules (no PHI in logs, no graph overwrites, research-use disclaimer on every report).

Core Capabilities

  1. Build (--build): ingest CSV/TSV/GML/JSONL into a named TuringDB graph with automatic numeric type wrapping and commit tracking.
  2. Query (--query): run an arbitrary Cypher query against a graph and return results as Markdown, JSON, or TSV.
  3. Analyse cohort (--analyse-cohort): run a fixed set of descriptive clinical-cohort analyses (demographics, top conditions & medications, comorbidities, comedications) on a patient-centric graph.
  4. Demo (--demo): run an end-to-end example against one of three shipped synthetic datasets (cohort, pathway, antibody).

Scope

One skill, four operations. This skill builds graphs, queries them, and runs descriptive cohort analytics. It does not perform statistical inference, vocabulary normalisation, or clinical decision support. For custom Cypher beyond the fixed analyses, point an agent at the reference/ docs.

Input Formats

FormatExtensionRequired FlagsNotes
CSV.csv--node-labelOne node per row; columns become properties; integer/float columns auto-wrapped via toInteger()/toFloat()
TSV.tsv--node-labelTreated as CSV with tab separator
GML.gml—All nodes become GMLNode, all edges GMLEdge, all properties strings. Properties stored with type suffix (e.g. displayName (String))
JSONL.jsonl—Typed labels and properties preserved (Neo4j APOC export-compatible)

Workflow

When the user asks to build and analyse a graph:

  1. Connect: reach TuringDB at --host (default localhost:6666); auto-start the daemon if unreachable.
  2. Ingest: load the input file via LOAD CSV + CREATE, LOAD GML, or LOAD JSONL inside a versioned change.
  3. Commit: submit the change and record the commit hash for audit.
  4. Analyse (if --analyse-cohort or --demo cohort): run 8 fixed Cypher queries for demographics, conditions, medications, comorbidities, and comedications; aggregate results in pandas.
  5. Report: write report.md + summary.json to the output directory. Every report ends with the ClawBio research disclaimer.

CLI Reference

Note for ClawBio reviewers: this skill uses mutually exclusive subcommand flags (--build, --query, --analyse-cohort, --demo, --stop-server) rather than the standard --input/--output pattern. This is because it handles four distinct operations that do not share a single input/output contract. --out serves the role of --output.

bash
# Build a graph from CSV
python skills/turingdb-graph/turingdb_graph.py \
  --build --input data.csv --graph my_graph --node-label PatientRow \
  --out /tmp/build-output

# Build from GML
python skills/turingdb-graph/turingdb_graph.py \
  --build --input pathway.gml --graph my_pathway --out /tmp/build-output

# Run a Cypher query
python skills/turingdb-graph/turingdb_graph.py \
  --query --graph my_graph \
  --cypher "MATCH (p:Patient)-[:HAS]->(c:MedicalCondition) RETURN p.displayName, c.displayName LIMIT 10" \
  --out /tmp/query-output

# Analyse a patient cohort
python skills/turingdb-graph/turingdb_graph.py \
  --analyse-cohort --graph my_graph --top-n 10 --out /tmp/analysis-output

# Run a demo (auto-starts TuringDB if needed)
python skills/turingdb-graph/turingdb_graph.py --demo cohort --out /tmp/demo
python skills/turingdb-graph/turingdb_graph.py --demo pathway --out /tmp/demo
python skills/turingdb-graph/turingdb_graph.py --demo antibody --out /tmp/demo

# Stop the TuringDB daemon
python skills/turingdb-graph/turingdb_graph.py --stop-server

Global flags

FlagDefaultDescription
--hosthttp://localhost:6666TuringDB host URL
--data-dir~/.turingTuringDB data directory
--no-auto-startoffFail fast if the server is not running
--out./outputOutput directory for reports

Demo

bash
python skills/turingdb-graph/turingdb_graph.py --demo cohort --out /tmp/demo

Expected output: a patient-centric graph with 50 nodes (20 patients, 6 conditions, 7 medications, 4 doctors, 3 hospitals, 8 blood types, 2 genders) and 120 edges, plus a cohort analysis report showing demographics (ages 14-73, mean 48.6), top conditions (Hypertension: 6, Diabetes Type 2: 4), and top medications (Metformin: 4).

All three demos (cohort, pathway, antibody) use synthetic data with no PHI.

Example Queries

  • "Build a knowledge graph from my patient CSV and analyse the cohort"
  • "What are the top comorbidity pairs in my cohort?"
  • "Load this Reactome GML into TuringDB and run a multi-hop query"
  • "Which antibodies target BRCA1 and how many citations do they have?"
  • "Run the TuringDB cohort demo and show me the report"

Example Output

markdown
# Cohort analysis: `demo_cohort`

- **Patients**: 20
- **Ages** (n=20): min 14, max 73, mean 48.6, median 51.0
- **Under 18**: 3
- **Over 65**: 6

## Top 10 conditions

| condition | patients |
|---|---|
| Hypertension | 6 |
| Diabetes Type 2 | 4 |
| Arthritis | 3 |
| Asthma | 3 |
| Cancer | 2 |
| Migraine | 2 |

---

*ClawBio is a research and educational tool. Not a medical device.
This output must not be used for clinical decision-making.*

Output Structure

output_directory/
├── report.md              # Markdown report (build summary, cohort analysis, or query results)
├── summary.json           # Structured JSON (counts, stats, query metadata)
├── result.json            # Query results as JSON (--query only)
├── result.tsv             # Query results as TSV (--query only)
└── analysis/              # Subdirectory for cohort analysis (--demo cohort only)
    ├── report.md
    └── summary.json

Algorithm / Methodology

Cohort analyses

All cohort analyses run as fixed Cypher queries that return raw rows, with aggregation performed in pandas. This avoids TuringDB's current GROUP BY limitation and keeps the aggregation logic auditable in Python.

  1. Patient demographics: count, age min/max/mean/median via pd.to_numeric. Missing ages excluded, not imputed.
  2. Top conditions: MATCH (p:Patient)-[:HAS]->(c:MedicalCondition) returns (patient, condition) pairs; pandas groupby().nunique() counts distinct patients per condition.
  3. Top medications: same pattern via :TOOK_MEDICATION edges.
  4. Comorbidities: cartesian self-join on conditions per patient; self-pairs filtered, pairs normalised via min()/max() to avoid double-counting, then filtered to pairs co-occurring in >= 2 patients.
  5. Comedications: same pattern on medications.
  6. Junior/senior split: WHERE p.age < 18 and WHERE p.age > 65.

CSV type inference

LOAD CSV values arrive as strings. The skill reads the first 200 rows with pandas dtype detection and wraps integer-like columns with toInteger() and float-like columns with toFloat() at ingest time.

GML property name convention

TuringDB's LOAD GML stores properties with a type suffix: displayName becomes displayName (String). Access via backtick-escaped Cypher: n.`displayName (String)`.

Dependencies

Required:

  • turingdb >= 1.29; graph database engine (includes native daemon binary)
  • pandas >= 2.0; data manipulation and cohort aggregation
  • tabulate >= 0.9; DataFrame.to_markdown() rendering

Optional (HTTP endpoint only):

  • fastapi >= 0.110; REST API wrapper
  • uvicorn >= 0.27; ASGI server
  • pydantic >= 2.0; request validation

Gotchas

  • GML property names have a type suffix. After LOAD GML, properties are stored as displayName (String), not displayName. You must use backtick-escaped access: n.`displayName (String)`. Forgetting this produces "Property type not found" errors.
  • TuringDB does not support string comparison with <. The < operator only works on numeric types. Pair deduplication (e.g. comorbidity pairs) must happen in Python, not in Cypher WHERE clauses.
  • TuringDB's GROUP BY returns incorrect aggregations. RETURN key, count(x) does not group correctly. Always return raw rows and aggregate in pandas with groupby().nunique().
  • LOAD CSV + CREATE does not deduplicate. Each CSV row creates a new node unconditionally. TuringDB has no MERGE. Pre-dedupe in pandas if you need one-node-per-unique-value.
  • Writes outside a change do not persist. Always wrap CREATE/SET in new_change() ... CHANGE SUBMIT. This is the most common mistake when extending the skill.
  • The daemon must match the Python package version. If turingdb was upgraded but an old daemon is still running, LOAD CSV + CREATE and other v1.29 features will fail. Stop the old daemon first: --stop-server.

Safety

  • No patient identifiers in logs or outputs. The skill never echoes raw CSV row content to stdout or to the JSON summary. --query is the exception — it returns the user's own query results verbatim.
  • Synthetic demo data only. All shipped datasets (demo/cohort.csv, demo/pathway.gml, demo/antibody.csv) are synthetic. No real names, no real medical records, no identifiable demographics.
  • Research-use disclaimer. Every markdown report ends with: "ClawBio is a research and educational tool. Not a medical device. This output must not be used for clinical decision-making."
  • --build is additive, not destructive. Refuses to overwrite an existing graph. Pass a new --graph name or drop the existing one manually.
  • --query is for trusted operators. It executes arbitrary Cypher. Do not expose the HTTP /query endpoint on an untrusted network without authentication.
  • No clinical recommendations. The cohort analyser reports observed co-occurrence patterns — it does not label any pair as a contraindication, interaction, or recommendation.
  • Local-first. All data stays on the local machine. No cloud uploads.

Domain Decisions

Graph modelling conventions

  • Node labels: PascalCase (Patient, MedicalCondition, BloodType).
  • Edge types: UPPER_SNAKE_CASE (HAS, TOOK_MEDICATION, IS_TREATED_BY).
  • Property keys: camelCase (displayName, pubmedId).

Versioning

Every --build run executes inside a fresh TuringDB change. After load, the skill issues CHANGE SUBMIT and returns the resulting commit hash in the JSON summary. This makes every build auditable via CALL db.history().

Indexing

The skill does not create indexes automatically. Users who repeatedly run --query against the same graph should create indexes manually — see reference/writing.md.

Agent Boundary

In scope

  • Building a TuringDB graph from CSV/TSV/GML/JSONL via --build.
  • Running arbitrary Cypher via --query.
  • Running fixed cohort analyses via --analyse-cohort.
  • Auto-starting a local TuringDB daemon.
  • Exposing operations via HTTP (http_server.py).

Out of scope

  • Inferring a biomedical schema from unstructured CSV.
  • Deduplicating or merging nodes on ingest.
  • Vocabulary normalisation (ATC, ICD, SNOMED, HGNC).
  • Statistical inference (p-values, odds ratios, survival curves, enrichment tests).
  • Embedding generation or vector search.
  • Clinical decision support.

Agent role

The agent (LLM) dispatches this skill and interprets its outputs. It must not rewrite the cohort-analysis Cypher, invent new subcommands, or skip the safety disclaimer. For custom Cypher, point the agent at reference/querying.md, reference/writing.md, and reference/biomedical.md.

Integration with Bio Orchestrator

Trigger conditions: the orchestrator routes here when:

  • The user mentions "knowledge graph", "graph database", "Cypher", or "TuringDB"
  • The user provides a CSV/GML/JSONL and asks to build or query a graph
  • The user asks for cohort-level descriptive analytics (top conditions, comorbidities)

Chaining partners:

  • rnaseq-de: DE results (gene lists) can be loaded as JSONL nodes for pathway enrichment queries
  • pubmed-summariser: antibody graph query results can feed into literature searches
  • clinical-variant-reporter: variant annotations could be loaded as graph nodes for network analysis

Maintenance

  • Review cadence: re-evaluate when TuringDB releases a new major version (GROUP BY and string comparison support may change the aggregation strategy).
  • Staleness signals: new TuringDB release that changes LOAD GML property naming, or adds native MERGE/GROUP BY support.
  • Deprecation: if TuringDB is discontinued or the Cypher dialect diverges significantly from openCypher.

Citations

  • TuringDB; columnar graph database with git-like versioning
  • openCypher; query language specification that TuringDB implements a subset of

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Turingdb Graph AI skill do?

Build, query, and analyse biomedical knowledge graphs in TuringDB, a columnar graph database with git-like versioning.

Why use Turingdb Graph on TypingMind?

Because you install it once and use it with any model. Turingdb Graph is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Turingdb Graph in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/ClawBio/ClawBio/tree/main/skills/turingdb-graph. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Turingdb Graph?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Turingdb Graph?

As many as you like. As long as a model supports skills, you can use Turingdb Graph with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Turingdb Graph AI skill free?

Yes. It is published on GitHub by ClawBio under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇