@dsh-bio/dsh-bio-gem 0.1.2 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +236 -199
- package/docs/ARCHITECTURE.md +142 -113
- package/docs/releases/v0.1.12.md +43 -0
- package/package.json +5 -3
- package/python/coherence.py +159 -0
- package/python/gapfind.py +413 -396
- package/python/gem_ops.py +19 -0
- package/python/precursor_scan.py +127 -0
- package/python/validate.py +435 -392
- package/skills/gem-expert.md +1 -1
- package/src/index.js +21 -2
- package/src/integration.js +489 -0
- package/src/jobs.js +5 -21
- package/src/python.js +113 -17
- package/src/tools.js +27 -8
package/README.md
CHANGED
|
@@ -1,199 +1,236 @@
|
|
|
1
|
-
# dsh-bio-gem
|
|
2
|
-
|
|
3
|
-
**基因组尺度代谢模型(GEM)构建插件**:输入细菌全基因组(支持多质粒/多染色体),自动构建 → 验证 → 补洞 → 出报告(标准 SBML + 模型卡),产出后可由 dsh-bio-genie 现有消费工具(FBA / 基因必需性 / 生产包络线 / 模型管理面板)直接加载使用。
|
|
4
|
-
|
|
5
|
-
Genome-scale metabolic model builder for dsh: genome in, validated SBML out.
|
|
6
|
-
|
|
7
|
-
## 📦 安装
|
|
8
|
-
|
|
9
|
-
本插件已发布为 npm 包 **`@dsh-bio/dsh-bio-gem`**(纯 ESM,无构建步骤),也可直接从 GitHub 源或本地目录安装。
|
|
10
|
-
|
|
11
|
-
### 0. 环境要求
|
|
12
|
-
|
|
13
|
-
| 组件 | 要求 | 用途 |
|
|
14
|
-
|------|------|------|
|
|
15
|
-
| dsh 引擎 | 0.1.x(`npx -y @deepseek-ai/dsh --version` 可查) | 宿主 |
|
|
16
|
-
| Node.js | ≥ 22.19 或 ≥ 24(见 `package.json` 的 `engines`) | 宿主 |
|
|
17
|
-
| Python | 3.10+,且装 **`cobra`** | 分析/验证/补洞/账本/基准/导出 —— 除 `gem_build` 外的
|
|
18
|
-
| `pyrodigal` | 装在同一个 Python 环境(可选但建议) | 裸基因组自动注释兜底(`gem_annotate` / fna 输入) |
|
|
19
|
-
| **CarveMe** | 独立 venv `~/.dsh/dsh-bio-gem/venv-carveme`,含 `carve.exe` + **`diamond.exe`** | `gem_build`(carveme 引擎) |
|
|
20
|
-
| WSL2 + gapseq | 可选,按本机拓扑(见第 4 节) | `gem_build`(gapseq 引擎) |
|
|
21
|
-
|
|
22
|
-
>
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
npx -y @deepseek-ai/dsh
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
#
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
#
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
#
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
1
|
+
# dsh-bio-gem
|
|
2
|
+
|
|
3
|
+
**基因组尺度代谢模型(GEM)构建插件**:输入细菌全基因组(支持多质粒/多染色体),自动构建 → 验证 → 补洞 → 出报告(标准 SBML + 模型卡),产出后可由 dsh-bio-genie 现有消费工具(FBA / 基因必需性 / 生产包络线 / 模型管理面板)直接加载使用。
|
|
4
|
+
|
|
5
|
+
Genome-scale metabolic model builder for dsh: genome in, validated SBML out.
|
|
6
|
+
|
|
7
|
+
## 📦 安装
|
|
8
|
+
|
|
9
|
+
本插件已发布为 npm 包 **`@dsh-bio/dsh-bio-gem`**(纯 ESM,无构建步骤),也可直接从 GitHub 源或本地目录安装。
|
|
10
|
+
|
|
11
|
+
### 0. 环境要求
|
|
12
|
+
|
|
13
|
+
| 组件 | 要求 | 用途 |
|
|
14
|
+
|------|------|------|
|
|
15
|
+
| dsh 引擎 | 0.1.x(`npx -y @deepseek-ai/dsh --version` 可查) | 宿主 |
|
|
16
|
+
| Node.js | ≥ 22.19 或 ≥ 24(见 `package.json` 的 `engines`) | 宿主 |
|
|
17
|
+
| Python | 3.10+,且装 **`cobra`** | 分析/验证/补洞/账本/基准/导出 —— 除 `gem_build` 外的 20 个工具 |
|
|
18
|
+
| `pyrodigal` | 装在同一个 Python 环境(可选但建议) | 裸基因组自动注释兜底(`gem_annotate` / fna 输入) |
|
|
19
|
+
| **CarveMe** | 独立 venv `~/.dsh/dsh-bio-gem/venv-carveme`,含 `carve.exe` + **`diamond.exe`** | `gem_build`(carveme 引擎) |
|
|
20
|
+
| WSL2 + gapseq | 可选,按本机拓扑(见第 4 节) | `gem_build`(gapseq 引擎) |
|
|
21
|
+
|
|
22
|
+
> **Python 环境从哪来(v0.1.4 起)**:解释器探测顺序为
|
|
23
|
+
> `GEM_PYTHON` → **宿主 `dsh-bio-genie` 的自举环境** → `CONDA_PREFIX` → `PATH` 中的 `python`,
|
|
24
|
+
> 且会**逐个探测该解释器能否 `import cobra`**(不盲选)。
|
|
25
|
+
>
|
|
26
|
+
> 因此:**装了 dsh-bio-genie 就无需任何额外配置** —— genie 的自举环境自带 cobra
|
|
27
|
+
> (属它的第一层依赖),gem 直接复用。只有**未装 genie** 时才需要按第 2 步自备解释器。
|
|
28
|
+
>
|
|
29
|
+
> `gem_build`(构建侧)另有重依赖(CarveMe + `diamond`,或 WSL2 + gapseq),见第 3、4 步,
|
|
30
|
+
> 这部分不与 genie 共享环境。
|
|
31
|
+
|
|
32
|
+
### 1. 安装插件
|
|
33
|
+
|
|
34
|
+
```sh
|
|
35
|
+
# 方式一:从 npm 安装(推荐,已发布预置包)
|
|
36
|
+
npx -y @deepseek-ai/dsh plugin --profile web add @dsh-bio/dsh-bio-gem
|
|
37
|
+
|
|
38
|
+
# 方式二:从 GitHub 安装(拉源码;本插件纯 ESM 无构建步骤,可直接加载)
|
|
39
|
+
npx -y @deepseek-ai/dsh plugin --profile web add github:moonbowterfly/dsh-bio-gem
|
|
40
|
+
|
|
41
|
+
# 方式三:从本地目录安装(开发调试)
|
|
42
|
+
npx -y @deepseek-ai/dsh plugin --profile web add ./dsh-bio-gem
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
- 本机若已全局安装 dsh CLI,把 `npx -y @deepseek-ai/dsh` 换成 `dsh` 即可。
|
|
46
|
+
- `--profile <name>` 是**必填选项**(不传报 `required option '--profile <name>' not specified`);Web 端固定用 `web`。
|
|
47
|
+
- 安装完**重启 dsh web 服务**(关掉原窗口,重新双击启动入口)。
|
|
48
|
+
- **引擎兼容(2026-09-19)**:经 dsh **0.1.5-rc.2** 走廊逐卡走查(v0.1.3-alpha.2 → 0.1.5-rc.2 共 55 张变更卡核对:零适配命中)与实机验证(工具注册 / 代谢建模面板 / 账本与模型数据)。
|
|
49
|
+
- 版本刚发布时可能短时间拉不到:registry 首次分发有几分钟延迟,`pnpm` 还可能缓存住 404。遇到 `ERR_PNPM_FETCH_404 ... is not in the npm registry` 时等几分钟重试,或在命令末尾追加 `--registry https://registry.npmjs.org/` 绕过缓存。
|
|
50
|
+
|
|
51
|
+
验证插件层已生效(不用启动服务):
|
|
52
|
+
|
|
53
|
+
```sh
|
|
54
|
+
npx -y @deepseek-ai/dsh --profile web --dump-config | grep dsh-bio-gem
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 2. 准备分析用 Python(cobra)—— 装了 genie 就跳过
|
|
58
|
+
|
|
59
|
+
**已安装 `@dsh-bio/dsh-bio-genie` 时本节可跳过**:gem 自动复用 genie 的自举环境
|
|
60
|
+
(`$DSH_HOME/dsh-bio-genie/python-env`),其中 cobra 属 genie 的第一层依赖,无需任何配置。
|
|
61
|
+
|
|
62
|
+
未装 genie 时,自备一个装了 cobra 的解释器:
|
|
63
|
+
|
|
64
|
+
```sh
|
|
65
|
+
# uv 建独立 venv 并安装(推荐)
|
|
66
|
+
uv venv --python 3.11 "$HOME/.dsh/dsh-bio-gem/venv"
|
|
67
|
+
uv pip install --python "$HOME/.dsh/dsh-bio-gem/venv/Scripts/python.exe" cobra pyrodigal
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
用 `GEM_PYTHON` 指向它(**dsh 进程的环境变量,必须在启动 dsh 之前设置**):
|
|
71
|
+
|
|
72
|
+
```bat
|
|
73
|
+
:: cmd(写进启动脚本即可)
|
|
74
|
+
set GEM_PYTHON=%USERPROFILE%\.dsh\dsh-bio-gem\venv\Scripts\python.exe
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
```powershell
|
|
78
|
+
# PowerShell:永久(对之后新开的终端与快捷方式生效)
|
|
79
|
+
setx GEM_PYTHON "$env:USERPROFILE\.dsh\dsh-bio-gem\venv\Scripts\python.exe"
|
|
80
|
+
|
|
81
|
+
# 或临时(仅当前窗口)
|
|
82
|
+
$env:GEM_PYTHON = "$env:USERPROFILE\.dsh\dsh-bio-gem\venv\Scripts\python.exe"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
> 插件**不会盲选**解释器:它按上述顺序逐个探测 `import cobra`,选中第一个可用的并缓存。
|
|
86
|
+
> 若候选全都不含 cobra,工具会显式报 `ModuleNotFoundError: cobra` 并附带候选探测结果,
|
|
87
|
+
> 而不是静默落到一个不可用的解释器上。
|
|
88
|
+
|
|
89
|
+
### 3. 准备 CarveMe(构建引擎)
|
|
90
|
+
|
|
91
|
+
```sh
|
|
92
|
+
# ① 独立 venv(勿并入系统 Python,也不要并入 dsh-bio-genie 的环境)
|
|
93
|
+
uv venv --python 3.11 "$HOME/.dsh/dsh-bio-gem/venv-carveme"
|
|
94
|
+
uv pip install --python "$HOME/.dsh/dsh-bio-gem/venv-carveme/Scripts/python.exe" carveme
|
|
95
|
+
|
|
96
|
+
# ② diamond 是 CarveMe 的外部分比对引擎,不在 Python 包里,必须单独放进来
|
|
97
|
+
curl -L -o diamond.zip https://github.com/bbuchfink/diamond/releases/latest/download/diamond-windows.zip
|
|
98
|
+
unzip -o diamond.zip diamond.exe -d "$HOME/.dsh/dsh-bio-gem/venv-carveme/Scripts/"
|
|
99
|
+
|
|
100
|
+
# ③ 验证(两个可执行文件应同在 venv 的 Scripts/ 下)
|
|
101
|
+
"$HOME/.dsh/dsh-bio-gem/venv-carveme/Scripts/carve.exe" --version
|
|
102
|
+
"$HOME/.dsh/dsh-bio-gem/venv-carveme/Scripts/diamond.exe" --version
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
两个实测坑(都真实踩到过):
|
|
106
|
+
|
|
107
|
+
- 命令名是 **`carve`**,不是 `carveme`。
|
|
108
|
+
- **缺 diamond 不报错、不产文件**:`carve` 只打一行 `Unable to run diamond (make sure diamond is available in your PATH)`,**退出码 0、输出目录为空**。构建失败又找不到原因时,先确认 `diamond.exe` 就在 `carve.exe` 旁边。
|
|
109
|
+
- 插件已把 venv 的 `Scripts/` 注入子进程 PATH,无需激活 venv。
|
|
110
|
+
|
|
111
|
+
### 4.(可选)gapseq 引擎(WSL2)
|
|
112
|
+
|
|
113
|
+
`gem_build` 的 `engine=gapseq` 走 WSL2 桥(`gem_gapseq` 原子四步:setup / launch / status / fetch),质量档耗时 30-60 分钟/模型,非必需——默认的 `engine=carveme` 已能出可验证模型。桥按本机拓扑实现(WSL2 + `/opt/miniforge3` conda 环境 `gapseq` + 本地序列库),换机器需改 `python/gapseq_wsl.py` 顶部常量,故目前**视为实验性可选能力**。没有 WSL2 不影响其余 20 个工具与 carveme 构建。
|
|
114
|
+
|
|
115
|
+
### 5. 自检(仓库源码目录内)
|
|
116
|
+
|
|
117
|
+
```sh
|
|
118
|
+
# 冒烟:不依赖 dsh,直测 Python 层 + 工具注册表
|
|
119
|
+
# 断言锚定本机 C58 夹具路径(见 test/smoke.js 顶部常量),换机器先改路径
|
|
120
|
+
GEM_PYTHON=<你的-cobra-python> node test/smoke.js --skip-build # 跳过 ~70s 的 build 单测
|
|
121
|
+
GEM_PYTHON=<你的-cobra-python> node test/smoke.js # 含 build 单测
|
|
122
|
+
# 托管领域扩展的只读 integration 协议(无需 dsh 实例)
|
|
123
|
+
node test/integration.js
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 6. 与 dsh-bio-genie 协同
|
|
127
|
+
|
|
128
|
+
两个插件职责互补、可同时安装(各自独立 bundle patch 行,互不冲突):
|
|
129
|
+
|
|
130
|
+
| 插件 | 职责 |
|
|
131
|
+
|------|------|
|
|
132
|
+
| **dsh-bio-gem**(本插件) | **造模型**:基因组 → 构建 → 验证 → 补洞 → 模型卡 |
|
|
133
|
+
| dsh-bio-genie | **用模型**:FBA / 基因必需性 / 生产包络线 / 模型管理面板,外加全量生信分析工具 |
|
|
134
|
+
|
|
135
|
+
装好 genie 后,其 agent 常驻 persona 已内置 GEM 能力域路由,「建模型 / 建模 / 补洞」类需求会自动转给 `gem_*` 工具。
|
|
136
|
+
|
|
137
|
+
#### 托管领域扩展集成协议(v0.1.11+)
|
|
138
|
+
|
|
139
|
+
当 gem 与 BioGenie 运行在同一 dsh Web 实例时,gem 提供两个**固定、只读、loopback-only** 的端点:
|
|
140
|
+
|
|
141
|
+
```text
|
|
142
|
+
GET /api/dsh-bio-gem/integration/health
|
|
143
|
+
GET /api/dsh-bio-gem/integration/v1/status
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
- 两端点统一返回 `{ ok: true, value }` 或 `{ ok: false, code, message }`;health 只声明插件身份与协议能力,绝不启动 Python 或写盘。
|
|
147
|
+
- status 返回模型/账本/导出的限量摘要、解释器与构建引擎的只读检查;`state` 仅为 `ready` 或 `degraded`。Python/cobra 仍在进程内短缓存;WSL/gapseq 则采用非阻塞 stale-while-revalidate:首次返回 `available: null` / `probing` 与 `warn`,后台完成后才转为 `ok` 或 `missing`,不会把 status 响应拖到超时。
|
|
148
|
+
- gapseq 成功结果缓存 5 分钟;失败或超时最多缓存 60 秒后自动重试。探测先用固定的 `wsl.exe -l -q` 预检目标发行版,再运行固定只读版本命令;插件在 webServer 出现约 8 秒后后台预热一次,加载期不探测、不阻塞启动。
|
|
149
|
+
- 非 loopback、跨站或 Origin/Host 不一致的请求一律得到 `403`;端点不返回 token、任意命令、任意 URL 或完整日志。修复建议只有受控 `code` + `owner`。
|
|
150
|
+
- **设置入口和五态显示属于 BioGenie 面板**,gem 不注册自己的设置页。BioGenie 结合本地安装探测与上述端点显示 `not-installed` / `legacy` / `installed-unavailable` / `incompatible` / `degraded` / `ready`;旧 gem 仅有文件系统只读兼容视图。
|
|
151
|
+
- 本批不提供 job、安装、删除、配置或其他写 API;这些操作必须等后续的显式用户动作协议。
|
|
152
|
+
|
|
153
|
+
### 7. 卸载
|
|
154
|
+
|
|
155
|
+
```sh
|
|
156
|
+
npx -y @deepseek-ai/dsh plugin --profile web remove dsh-bio-gem
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
运行时数据都落在 `~/.dsh/dsh-bio-gem/`(`models/` 模型、`ledger/` 预测账本、`jobs/` 构建任务、`venv*` 环境),**卸载不会删除**,需要清理请手动删除该目录。
|
|
160
|
+
|
|
161
|
+
### Installation (English quickstart)
|
|
162
|
+
|
|
163
|
+
```sh
|
|
164
|
+
# 1) install the plugin into the web profile, then restart dsh
|
|
165
|
+
npx -y @deepseek-ai/dsh plugin --profile web add @dsh-bio/dsh-bio-gem
|
|
166
|
+
# (or from source: github:moonbowterfly/dsh-bio-gem)
|
|
167
|
+
|
|
168
|
+
# 2) analysis Python needs cobra (+ pyrodigal for the annotation fallback)
|
|
169
|
+
uv venv --python 3.11 "$HOME/.dsh/dsh-bio-gem/venv"
|
|
170
|
+
uv pip install --python "$HOME/.dsh/dsh-bio-gem/venv/Scripts/python.exe" cobra pyrodigal
|
|
171
|
+
# point the plugin at it BEFORE starting dsh (dsh reads process env):
|
|
172
|
+
# PowerShell: setx GEM_PYTHON "$env:USERPROFILE\.dsh\dsh-bio-gem\venv\Scripts\python.exe"
|
|
173
|
+
|
|
174
|
+
# 3) build engine: CarveMe in a dedicated venv + the external `diamond` binary
|
|
175
|
+
uv venv --python 3.11 "$HOME/.dsh/dsh-bio-gem/venv-carveme"
|
|
176
|
+
uv pip install --python "$HOME/.dsh/dsh-bio-gem/venv-carveme/Scripts/python.exe" carveme
|
|
177
|
+
curl -L -o diamond.zip https://github.com/bbuchfink/diamond/releases/latest/download/diamond-windows.zip
|
|
178
|
+
unzip -o diamond.zip diamond.exe -d "$HOME/.dsh/dsh-bio-gem/venv-carveme/Scripts/"
|
|
179
|
+
|
|
180
|
+
# 4) verify the plugin layer is registered (no server needed)
|
|
181
|
+
npx -y @deepseek-ai/dsh --profile web --dump-config | grep dsh-bio-gem
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
CarveMe + diamond are required only by `gem_build`; the other 20 tools need nothing but a `cobra`-enabled Python.
|
|
185
|
+
|
|
186
|
+
## 工具(20)
|
|
187
|
+
|
|
188
|
+
| 工具 | 作用 | 状态 |
|
|
189
|
+
|---|---|---|
|
|
190
|
+
| `gem_report` | 模型摘要(基因/反应/区室/复制子分布)+ 预测账本基率摘要(ledger_summary)| ✅ |
|
|
191
|
+
| `gem_validate` | 六道关卡 G1-G6(加载/元素平衡/生长真实性/表型(条件)/必需性抽检(条件)/ATP 泄漏)| ✅ |
|
|
192
|
+
| `gem_gapfind` | 缺口分级诊断(L1 缺交换 / L2 缺转运 / L3 内部路径)| ✅ |
|
|
193
|
+
| `gem_gapfill` | 规则级补洞(L1/L2 自动,provenance 打标,防过补四闸门)| ✅ |
|
|
194
|
+
| `gem_l3_fix` | L3 内部路径补洞(L3a 连通性/L3b 白名单+BiGG 反应式;证据分级 + 防过补第五闸门)| ✅ C58 阿拉伯糖 0→0.851 |
|
|
195
|
+
| `gem_biomass` | biomass 精修(inspect 组分/对照参考;apply 覆盖表+三联对照+回滚)| ✅ 复位 delta 0.0 |
|
|
196
|
+
| `gem_phenotype` | 表型回填迭代(G4 sole 检测 → L1/L2 修复 → L3 报告 → 匹配率对比)| ✅ |
|
|
197
|
+
| `gem_essentiality` | 全量必需基因扫描(FVA 预筛 + 手工敲除)| ✅ C58: 必需 155 |
|
|
198
|
+
| `gem_annotate` | 基因组→蛋白(官方优先 + pyrodigal 兜底,纯 Windows)| ✅ pyrodigal 5330 |
|
|
199
|
+
| `gem_build` | CarveMe/gapseq 双引擎构建(fna/faa;后台 job + 进度;M9 或目标介质验证闭环)| ✅ carveme 70s / fna 全链 63.5s / gapseq 实测中 |
|
|
200
|
+
| `gem_gapseq` | gapseq 原子四步(WSL 可选:setup/launch/status/fetch)| ✅ 本机全通 |
|
|
201
|
+
| `gem_media_resolve` | 跨引擎介质解析 RPC(自然名→EX ID;消费侧统一入口)| ✅ AB→20 EX |
|
|
202
|
+
| `gem_fluxscan` | 通量区间制(FVA 区间+pFBA 点值;条件对比区间分离判定,overlap=伪影禁止引用)| ✅ C58 AB 0.519981 / 蔗糖 supplement 0.97077 |
|
|
203
|
+
| `gem_sensitivity` | 结构性灵敏度(GAM×biomass 22 组合全量+稳定性三分类+单组分漂移+模型卡鲁棒性 v3)| ✅ C58 基准复现 155 |
|
|
204
|
+
| `gem_ledger` | 预测账本(essentiality/phenotype 自动登记;幂等;list/query/update;基率追踪)| ✅ C58 155+19 条幂等复跑 |
|
|
205
|
+
| `gem_benchmark` | 通用基准对比(两模型六关并列/生长/biomass 断供探针/必需性对比[退化护栏]/表型/账本回填;介质层两级策略;支持 bigg:<id> 下载)| ✅ B1 自检 C58 vs C58_P1;B2 C58 vs iNX1344_v4;B3 bigg:iML1515 |
|
|
206
|
+
| `gem_secretion` | 可分泌代谢物谱(production envelope 扫描;边界声明=纯拓扑 LP;wt<=EPS 退化护栏)| ✅ C58: 182 候选 85 可分泌 |
|
|
207
|
+
| `gem_double_knockout` | 双敲 v1 合成致死(GPR 穷尽先验+全扫预算;假设生成声明内置)| ✅ C58: Atu3364↔Atu4682 对应命中 |
|
|
208
|
+
| `gem_enrichment` | 必需基因通路富集(超几何+BH FDR;通路源=SBML groups;无注释诚实兜底)| ✅ C58: 388 通路 55 显著 |
|
|
209
|
+
| `gem_targets` | 靶点清单规范导出(账本三类 -> 锁定 schema CSV/JSON;计数闭合)| ✅ C58: 258 行三类闭合 |
|
|
210
|
+
| `gem_precursor_scan` | 阻塞前体分析(模型为什么不长:基线通量→可生长即返无阻塞;不生长则逐前体移除测试定位阻塞点)| ✅ 2026-09-11 新增 |
|
|
211
|
+
|
|
212
|
+
架构/决策见 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)、[docs/DECISIONS-2026-08-29.md](docs/DECISIONS-2026-08-29.md)。
|
|
213
|
+
|
|
214
|
+
## 开发速查
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
# Python 层直测(需 Python + cobra,推荐显式指定解释器)
|
|
218
|
+
echo '{"op":"model_info","args":{"model":"path.xml"}}' | "$GEM_PYTHON" -I python/gem_ops.py
|
|
219
|
+
"$GEM_PYTHON" -u python/build.py --input proteins.faa --name X --progress p.jsonl --medium-json '{...}'
|
|
220
|
+
|
|
221
|
+
# 独立脚本模式(gapfind/gapfill)
|
|
222
|
+
"$GEM_PYTHON" -I python/gapfind.py payload.json
|
|
223
|
+
"$GEM_PYTHON" -I python/gapfill.py payload.json
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
依赖:`cobra`(分析,需装在插件探测到的 Python 里);`carveme` + `diamond`(构建,独立 venv `~/.dsh/dsh-bio-gem/venv-carveme`)。安装步骤见上文第 2、3 节。
|
|
227
|
+
|
|
228
|
+
## 验收(C58 回归锚)
|
|
229
|
+
|
|
230
|
+
- `gem_validate` 对 C58.xml:G1 PASS / G2 WARN(仅 bio1 已知边界) / G3 PASS(0.519981) / G4 PASS(17/19) / G5 PASS
|
|
231
|
+
- gapfind→gapfill 闭环:原版 C58.xml + 蔗糖培养基 → 自动补交换/转运 → 蔗糖生长 0.97077(与手工 P1 补洞一致)
|
|
232
|
+
- gem_build 端到端(C58 protein.faa):carve M9 gapfill 54s → 精确 M9 介质 G3 PASS 0.782 → AB 目标介质 resolve 20/20,G3 FAIL(L3 内部路径,已记录为 CarveMe 已知边界)
|
|
233
|
+
|
|
234
|
+
## 许可
|
|
235
|
+
|
|
236
|
+
MIT(工程层,见 [LICENSE](LICENSE));引擎 CarveMe/gapseq 以独立子进程调用分发,版本记录入模型卡,自带许可边界。
|