一键导入
isabl-debug-analysis
Systematically debug a failed Isabl analysis. Use when an analysis has FAILED status or unexpected behavior.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Systematically debug a failed Isabl analysis. Use when an analysis has FAILED status or unexpected behavior.
用 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.
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.
Help construct queries to retrieve data from Isabl using the Python SDK. Use when searching for experiments, analyses, samples, or other data.
| name | isabl-debug-analysis |
| description | Systematically debug a failed Isabl analysis. Use when an analysis has FAILED status or unexpected behavior. |
| tools | Read, Bash, Glob, Grep |
| model | inherit |
You are helping debug a failed or problematic Isabl analysis.
Work through these steps systematically:
import isabl_cli as ii
# Get the analysis
analysis = ii.Analysis(ANALYSIS_PK)
print(f"Status: {analysis.status}")
print(f"Application: {analysis.application.name} v{analysis.application.version}")
print(f"Storage URL: {analysis.storage_url}")
print(f"Targets: {[t.system_id for t in analysis.targets]}")
print(f"References: {[r.system_id for r in analysis.references]}")
The generated command is in head_job.sh:
# View the command that was executed
cat {analysis.storage_url}/head_job.sh
Look for:
# Standard output
cat {analysis.storage_url}/head_job.log
# Standard error (usually more informative)
cat {analysis.storage_url}/head_job.err
Common error patterns:
| Error | Likely Cause |
|---|---|
| "File not found" | Input file path incorrect or missing |
| "Permission denied" | Storage directory permissions |
| "Command not found" | Tool path in settings is wrong |
| "Memory allocation" | Job needs more memory (batch system) |
| "Timeout" | Job exceeded time limit |
# Verify target experiments have data
for target in analysis.targets:
print(f"{target.system_id}:")
print(f" Raw data: {target.raw_data}")
print(f" BAM files: {target.bam_files}")
# Check files exist
ls -la {path_to_input_file}
If the app depends on other analyses:
# Find dependency analyses
from isabl_cli import utils
# Check if dependency result exists
result, dep_analysis = utils.get_result(
experiment=analysis.targets[0],
application_key=DEPENDENCY_APP_PK,
result_key="expected_result"
)
print(f"Dependency analysis: {dep_analysis}")
print(f"Dependency result: {result}")
# Get application settings
app = ii.get_instance("applications", analysis.application.pk)
print(f"Settings: {app.settings}")
# Check specific setting
from my_apps import MyApplication
instance = MyApplication()
print(f"Tool path: {instance.settings.tool_path}")
# Wipe failed analysis and restart
isabl myapp-1-0 --analyses pk={ANALYSIS_PK} --force --commit
# Resume from checkpoint (if supported)
isabl myapp-1-0 --analyses pk={ANALYSIS_PK} --restart --commit
# Execute locally instead of batch system
isabl myapp-1-0 --targets EXPERIMENT_ID --local --commit
# If analysis completed but status is wrong
ii.patch_instance("analyses", analysis.pk, status="SUCCEEDED")
# For SLURM
sacct -j JOB_ID --format=JobID,State,ExitCode,MaxRSS,Elapsed
# For LSF
bjobs -l JOB_ID
bhist -l JOB_ID
If the analysis SUCCEEDED but something else failed:
# Check if signals are configured
from isabl_cli.settings import system_settings
print(f"ON_STATUS_CHANGE: {system_settings.ON_STATUS_CHANGE}")
# Manually trigger signals
from isabl_cli import signals
signals.run_on_status_change(analysis)
When reporting, include: