一键导入
isabl-query-data
Help construct queries to retrieve data from Isabl using the Python SDK. Use when searching for experiments, analyses, samples, or other data.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Help construct queries to retrieve data from Isabl using the Python SDK. Use when searching for experiments, analyses, samples, or other data.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Submit and run multiple Isabl applications as a pipeline. Use when chaining apps together or running a sequence of analyses on samples.
Guide through creating a new Isabl bioinformatics application. Use when building pipelines that integrate with the Isabl platform.
Systematically debug a failed Isabl analysis. Use when an analysis has FAILED status or unexpected behavior.
Aggregate results from multiple Isabl analyses into combined datasets. Use when merging VCFs, TSVs, or other outputs across samples or cohorts.
Monitor and track the status of Isabl analyses. Use when checking job progress, finding failed analyses, or tracking pipeline execution.
Generate a status report for an Isabl project. Use when summarizing project progress, identifying issues, or preparing updates.
| name | isabl-query-data |
| description | Help construct queries to retrieve data from Isabl using the Python SDK. Use when searching for experiments, analyses, samples, or other data. |
| tools | Read, Bash |
| model | inherit |
You are helping the user query data from the Isabl platform using the Python SDK.
Work through these steps systematically:
system_id (or identifier if system_id is not available); avoid pk unless explicitly requestedindividual_level_analysis -> show individual system_id (e.g., IID_H210514)
- project_level_analysis -> show project pk
- avoid listing long targets/references experiment arrays unless explicitly requestedISABL_API_URL, remove /api/v1/ before appending query params (e.g., ?analysis=<pk>)Ask clarifying questions if needed:
import isabl_cli as ii
# Main entity types and their query functions
experiments = ii.get_experiments(...) # Sequencing data
analyses = ii.get_analyses(...) # Pipeline results
samples = ii.get_instances("samples", ...) # Tissue specimens
individuals = ii.get_instances("individuals", ...) # Patients/subjects
applications = ii.get_instances("applications", ...) # Pipelines
projects = ii.get_instances("projects", ...) # Project groupings
# Filter by project
experiments = ii.get_experiments(projects=102)
# Filter by status
analyses = ii.get_analyses(status="SUCCEEDED")
# Filter by application
analyses = ii.get_analyses(application__name="MUTECT")
# Filter by date range
analyses = ii.get_analyses(created__gte="2024-01-01")
# Combine multiple filters
experiments = ii.get_experiments(
projects=102,
sample__category="TUMOR",
technique__method="WGS"
)
| Operator | Example | Purpose |
|---|---|---|
| (none) | status="SUCCEEDED" | Exact match |
__contains | name__contains="tumor" | Substring |
__icontains | name__icontains="TUMOR" | Case-insensitive substring |
__startswith | name__startswith="PT" | Starts with |
__in | status__in=["SUCCEEDED","FAILED"] | One of values |
__gt, __gte | created__gt="2024-01-01" | Greater than |
__lt, __lte | total__lte=100 | Less than |
__isnull | results__isnull=False | Is/isn't null |
! prefix | status!="FAILED" | Negation |
Use double underscore to traverse related objects:
import isabl_cli as ii
# Experiments for a specific individual
experiments = ii.get_experiments(sample__individual__pk=500)
# Analyses by application name
analyses = ii.get_analyses(application__name="variant_caller")
# Experiments with specific technique
experiments = ii.get_experiments(technique__method="WGS")
import isabl_cli as ii
experiments = ii.get_experiments(
projects=102,
sample__category="TUMOR"
)
for exp in experiments:
print(f"{exp.system_id}: {exp.sample.identifier}")
When users ask for an experiment/sample/individual "ID", prefer the human-readable identifier (system_id or identifier) and omit numeric pk unless asked.
import isabl_cli as ii
experiments = ii.get_experiments(projects=102, fields=["system_id", "sample"])
for exp in experiments:
print(f"experiment_id={exp.system_id}")
For MCP isabl_query, prefer:
isabl_query(
endpoint="experiments",
filters={"projects": 102},
output_fields=["system_id"]
)
When listing analyses, use identifiers that match the analysis scope:
WGTS_REPORT), display the individual id (IID_H...).pk.targets/references experiment lists unless the user asks for them.Before rendering a table, include one concise summary line that states what is being shown.
Examples:
import isabl_cli as ii
analyses = ii.get_analyses(
application__name="variant_caller",
application__version="2.0.0",
status="SUCCEEDED"
)
for a in analyses:
print(f"Analysis {a.pk}: {a.results}")
import isabl_cli as ii
failed = ii.get_analyses(
status="FAILED",
created__gt="2024-01-01"
)
for a in failed:
print(f"{a.pk}: {a.application.name}")
import isabl_cli as ii
# By system_id
exp = ii.Experiment("SAMPLE_001")
# By primary key
analysis = ii.Analysis(12345)
import isabl_cli as ii
count = ii.get_instances_count("experiments", projects=102)
print(f"Total experiments: {count}")
import isabl_cli as ii
individual = ii.get_tree(individual_pk)
for sample in individual.sample_set:
print(f"Sample: {sample.identifier}")
for exp in sample.experiment_set:
print(f" Experiment: {exp.system_id}")
import isabl_cli as ii
from isabl_cli import utils
# Get specific result from an experiment
vcf_path, analysis = utils.get_result(
experiment=experiment,
application_key=123,
result_key="vcf"
)
print(f"VCF: {vcf_path}")
# Get all results for an application
results = utils.get_results(
experiment=experiment,
application_name="variant_caller"
)
import isabl_cli as ii
# Only fetch needed fields
experiments = ii.get_experiments(
projects=102,
fields=["pk", "system_id", "sample"]
)
# Stop after N results
experiments = ii.get_experiments(
projects=102,
count_limit=100
)
# Use cursor pagination for very large datasets
experiments = ii.get_instances(
"experiments",
projects=102,
paginator="cursor"
)
import isabl_cli as ii
import pandas as pd
experiments = ii.get_experiments(projects=102)
df = pd.DataFrame([
{
"system_id": e.system_id,
"sample": e.sample.identifier,
"category": e.sample.category,
"technique": e.technique.method,
}
for e in experiments
])
df.head()
Individual
├── identifier (unique)
├── species (HUMAN, MOUSE, etc.)
├── gender
└── sample_set → [Sample]
Sample
├── identifier
├── individual → Individual
├── category (TUMOR, NORMAL, etc.)
└── experiment_set → [Experiment]
Experiment
├── system_id (unique)
├── sample → Sample
├── technique → Technique
├── platform → Platform
├── raw_data (dict)
├── bam_files (dict)
└── analysis_set → [Analysis]
Analysis
├── pk
├── application → Application
├── targets → [Experiment]
├── references → [Experiment]
├── status (CREATED, STAGED, SUBMITTED, STARTED, SUCCEEDED, FAILED)
├── storage_url (path to results)
└── results (dict)
Application
├── name
├── version
├── assembly
├── species
└── settings (dict)