Files
bttoxin-pipeline/pixi.toml
zly e44692600c Fix(pipeline): optimize docker build, fix zip structure, and update UI
- Docker:
  - Explicitly install pixi environments (digger, pipeline, webbackend) during build to prevent runtime network/DNS failures.
  - Optimize pnpm config (copy method) to fix EAGAIN errors.
- Backend:
  - Refactor ZIP bundling: use flat semantic directories (1_Toxin_Mining, etc.).
  - Fix "nested zip" issue by cleaning existing archives before bundling.
  - Exclude raw 'context' directory from final download.
- Frontend:
  - Update TutorialView documentation to match new result structure.
  - Improve TaskMonitor progress bar precision (1 decimal place).
  - Update i18n (en/zh) for new file descriptions.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-21 20:43:28 +08:00

115 lines
3.3 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[workspace]
name = "bttoxin-pipeline"
channels = ["conda-forge", "bioconda"]
platforms = ["linux-64"]
version = "0.1.0"
channel-priority = "disabled"
# =========================
# digger 环境bioconda 依赖
# =========================
[feature.digger]
channels = ["bioconda", "conda-forge", "bioconda/label/cf201901"]
[feature.digger.dependencies]
bttoxin_digger = "==1.0.10"
perl = "==5.26.2"
perl-file-tee = "==0.07"
perl-list-util = "==1.38"
blast = "==2.16.0"
# =========================
# pipeline 环境Python 分析依赖
# =========================
[feature.pipeline.dependencies]
python = ">=3.9"
pandas = ">=2.0.0"
matplotlib = ">=3.7.0"
seaborn = ">=0.12.2"
# =========================
# frontend 环境Node.js 前端依赖
# =========================
[feature.frontend.dependencies]
nodejs = ">=20"
pnpm = ">=10"
# =========================
# webbackend 环境FastAPI 后端依赖
# =========================
[feature.webbackend.dependencies]
python = ">=3.11"
fastapi = "*"
uvicorn = "*"
sqlalchemy = "*"
psycopg2 = "*"
celery = "*"
redis-py = "*"
docker-py = "*"
pydantic = "*"
pydantic-settings = "*"
python-dotenv = "*"
httpx = "*"
pytest = "*"
# =========================
# CRISPR-Cas 环境:预留用于未来的 CRISPR-Cas 分析
# =========================
# 此环境预留用于 CRISPR-Cas 系统分析模块
# 实现计划:
# 1. 使用 CRISPRCasFinder 或 similar 工具识别 CRISPR arrays
# 2. 提取 spacer 序列并与毒素基因关联分析
# 3. 评估 CRISPR-Cas 系统对宿主防御的影响
#
# 预期依赖(待激活时添加):
[feature.crispr.dependencies]
python = ">=3.9"
# crisprcasfinder = "*" # 需要配置安装源
biopython = "*"
pandas = ">=2.0.0"
[feature.crispr.tasks]
detect = "python tools/crispr_cas_analysis/scripts/detect_crispr.py"
fusion = "python tools/crispr_cas_analysis/scripts/fusion_analysis.py"
# =========================
# 环境定义
# =========================
[environments]
digger = ["digger"]
pipeline = ["pipeline"]
frontend = ["frontend"]
webbackend = ["webbackend"]
crispr = ["crispr", "pipeline"] # Inherit pipeline to get pandas etc? Or just pipeline deps. Let's make crispr feature add to pipeline env if possible, or just use pipeline env for running these tools since they are python.
# Actually, let's keep it simple. The tools are Python scripts. They can run in the 'pipeline' environment which has python and pandas.
# The 'crispr' feature defines dependencies.
# =========================
# pipeline tasks
# =========================
[feature.pipeline.tasks]
pipeline = "python scripts/run_single_fna_pipeline.py"
digger-only = "python scripts/run_digger_stage.py"
shoter = "python scripts/bttoxin_shoter.py"
plot = "python scripts/plot_shotter.py"
# =========================
# frontend tasks
# =========================
[feature.frontend.tasks]
fe-install = { cmd = "pnpm install", cwd = "frontend" }
fe-dev = { cmd = "pnpm dev --host", cwd = "frontend" }
fe-build = { cmd = "pnpm build", cwd = "frontend" }
fe-test = { cmd = "pnpm test:unit --run", cwd = "frontend" }
fe-lint = { cmd = "pnpm lint", cwd = "frontend" }
# =========================
# webbackend tasks
# =========================
[feature.webbackend.tasks]
api-dev = "uvicorn backend.app.main:app --reload --host 0.0.0.0 --port 8000"
api-test = "pytest backend/ -v"
web-start = "bash scripts/start_web.sh"