- 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>
115 lines
3.3 KiB
TOML
115 lines
3.3 KiB
TOML
[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"
|