核心优势功能

Orchidea Science

科学算法引擎(抗体研发科学计算层)

面向抗体与生物药研发的确定性科学计算引擎层:LLM 是调度者,Science 是计算者——凡涉及蛋白质折叠、结合动力学、序列注释、群体门控等确定性计算,均由引擎完成,而非交给语言模型。

核心能力

  • 12 个引擎:sequence_analyze(CDR/FR、分子量、pI、GRAVY、稳定性)、curve_fit(ELISA 4PL / SPR-BLI 1:1 动力学 ka·kd·KD / DSF Tm)、immunogenicity(MHC-I 表位)、docking(界面残基/接触对/埋藏面积)、mass_spectra(找峰/去同位素/肽段匹配/覆盖度)、flow_cytometry(矩形与多边形门控、MFI、阳性率、四象限)、developability(风险基序/疏水-电荷斑块/四维风险分与综合评分)、mutation_design、humanization(OGRDB 人源 germline + CDR 移植)、affinity_maturation、structure_predict(Chou-Fasman 二级结构,可选 IgFold/ESMFold 产出真实 PDB)、raw_store(内容寻址落盘 + SQLite 索引 + 完整性校验)
  • 统一契约 EngineResult:engine / ok / backend(结果溯源)/ data / warnings(降级与近似说明)/ error / elapsed_ms,可解释、可审计
  • 四种调用形态:REST 网关(:8100,/api/v1/engines、/api/v1/engines/{name}/run、/health*、/metrics)、stdio MCP Server(science_list_engines / science_describe_engine / science_run_engine / science_backends)、CLI(engines / describe / run / backends / config / store / serve)、Python(registry.run)
  • 离线优先:核心依赖仅 numpy + scipy,可在客户内网隔离区断网安装运行;重型模型(IgFold / ESMFold / AlphaFold2 / NetMHCpan / DiffDock / AutoDock Vina / pyopenms / FlowKit)为可选后端,缺失时自动降级并显式告警,绝不伪造结果
  • 两种部署形态:本机/单机 Docker Compose 单服务(:8100,健康检查,2 CPU / 2 GB 限额,非 root、no-new-privileges)与服务器集群 Kubernetes(namespace orchidea-science:replicas 2、HPA 2→10 按 CPU 70% 扩缩、PDB 保障最小可用、PVC 挂载 /data、ConfigMap/Secret、Ingress、liveness 10s / readiness 5s、requests 500m/512Mi、limits 2/2Gi)
  • 序列保密:结构预测与序列分析全部本地化,客户序列不进入任何公有云 API
  • 生产级网关防护:API Key(X-API-Key / Bearer)、令牌桶限流(600/min,突发 60)、引擎超时 30s(ENGINE_TIMEOUT)、请求体上限 8 MB(413)、CORS 白名单、结构化 JSON 日志、/metrics 指标
  • 与 Director 集成:作为内置默认上游端点登记(stdio,python3 -m orchidea_science.mcp.server),工具名形如 mcp__science__science_run_engine

技术优势

  • 确定性计算而非概率生成:拟合、注释、门控可复核、可溯源(backend 字段)
  • 原始数据闭环:io 解析 + 内容寻址存储(sha256 去重 + 索引 + verify 校验)
  • 离线/隔离区可部署,满足序列保密硬约束
  • 同一镜像同时支持本机单机与 K8s 集群(HPA 自动扩缩、PDB 保可用)
  • 能力边界诚实标注:CDR 编号为 Kabat-like 近似;重后端未接入时降级并告警
应用场景 抗体发现全链路:效价(ELISA 4PL)→ 筛选(流式门控)→ 测序(序列注释)→ 亲和力(SPR/BLI 动力学)→ 热稳定(DSF Tm)→ 候选分子(可开发性/免疫原性/人源化/亲和力成熟);平台侧「数据 → 工单 → 排程 → 指令 → 原始数据 → 科学计算 → 结论回写」的自动化闭环;为 Director 编排的智能体提供可调用的科学计算工具(MCP)
科学计算 仪器原始数据(FASTQ/FCS/传感图/谱图)→ 引擎计算 → 结构化结论 → 回写管理闭环
数据存储 内容寻址原始数据(blob)· SQLite 索引

Orchidea Science

抗体研发科学算法引擎 —— Orchidea 平台的「科学计算层」。

把仪器产出的原始数据(NGS FASTQ、流式 FCS、SPR/BLI 传感图、质谱谱图)与 科研序列数据,转化为可被管理闭环消费的结构化结论(CDR 序列、效价、KD、 Tm、表位风险、群体比例、二级结构……)。

定位:LLM 是「调度者」,本引擎是「计算者」。凡涉及蛋白质折叠、结合动力学、 序列注释、群体门控等确定性计算,均由本引擎完成,而非交给语言模型。


2026-11 能力更新(v1.1.0)

  • 结构预测:ESMFold(单序列端到端、逐残基 pLDDT)与 IgFold 真实适配
  • 分子对接:DiffDock / AutoDock Vina 真实姿态搜索
  • 免疫原性与注释:NetMHCpan 真实 CLI 调用、IgBLAST(AIRR)序列注释
  • 存储:新增 S3 存储后端与测试
  • 诚实降级:后端缺失或失败时如实回落并写入 warnings,绝不伪造

一、设计原则

原则说明
离线优先核心依赖仅 numpy + scipy,可在客户内网隔离区断网环境安装运行
后端可插拔重型模型(IgFold / ESMFold / AlphaFold2 / NetMHCpan / DiffDock / pyopenms / FlowKit)作为可选后端;缺失时自动降级到内置轻量实现并显式告警,绝不伪造结果
零侵入统一 EngineRegistry + MCP 工具对外暴露,业务侧无需改动核心包
可解释每个引擎返回统一 EngineResult,携带 backend(结果溯源)、warnings(降级/近似说明)与 elapsed_ms
序列保密结构预测与序列分析全部本地化;客户序列不进入任何公有云 API

二、引擎清单

引擎namecategory内置能力可选后端
序列分析sequence_analyzesequence链型识别、CDR/FR 划分、分子量、等电点、GRAVY、稳定性指数Biopython / IgBLAST(真实注释:CDR/FR + germline)
曲线拟合curve_fitcurvefitELISA 四参数(EC50/相对效价)、SPR-BLI 1:1 动力学(ka/kd/KD)、DSF 熔解温度—
免疫原性immunogenicityimmunogenicityMHC-I 表位打分、强结合筛选、表位簇、免疫原性风险分NetMHCpan(真实 CLI + -xlsfile 解析)
分子对接dockingdocking结合界面残基、接触对、埋藏面积估计、界面打分DiffDock / AutoDock Vina(真实姿态搜索)
质谱mass_spectraspectra找峰、去同位素、胰酶肽段匹配、序列覆盖度、糖型质量位移pyopenms
流式flow_cytometrycytometry矩形/多边形门控、群体频率、MFI、阳性率、四象限FlowKit
可开发性developabilitydevelopability风险基序(脱酰胺/异构化/氧化/N-糖基化/DP/RGD/游离 Cys/焦谷氨酸)、疏水-电荷斑块、聚集倾向、四维风险分与综合可开发性评分—
去风险突变设计mutation_designdesign基于可开发性的定点突变建议 + 变体重评分 + 组合变体(不预测亲和力)—
人源化humanizationdesign最近人 germline 选择 + CDR 移植 + 人源化前后框架一致性OGRDB 真实人源 V 基因(下载→翻译→缓存,离线优先) / 外部 germline 库
亲和力成熟affinity_maturationdesign副位(CDR)热点候选 + 保守/芳香替换;未接后端不预测亲和力FoldX(真实结合界面 ΔΔG,需复合物 PDB)
结构预测structure_predictstructureChou-Fasman 二级结构、回转半径估计IgFold / ESMFold(均真实,产出 PDB + 逐残基置信度) / AlphaFold2
原始数据存储raw_storestorage内容寻址落盘、SQLite 索引、完整性校验(FASTQ/FCS/序列)—

统一契约:run(payload: dict) -> EngineResult。


二·补、原始数据存储层

方案要求「原始数据接入与存储」。io 层负责解析,storage 层负责落盘与检索, 二者共同构成原始数据闭环:

仪器原始文件 ──io 解析──▶ 结构化对象 ──storage 落盘──▶ 内容寻址 blob + SQLite 索引
                                          │
                                    path_for() ──▶ 交回 io/引擎 再解析(闭环)
  • 内容寻址:payload 按 sha256 存入 blobs/<前2位>/<sha256>,相同内容自动去重。
  • 记录独立:每次 put 生成独立 dataset_id(同内容不同样本互不覆盖)。
  • 索引:index.sqlite3(纯标准库 sqlite3),记录种类/名称/大小/记录数/创建时间/自定义元数据。
  • 完整性:verify 重算 sha256 比对,可检出落盘篡改。
  • 默认根目录:$ORCHIDEA_SCIENCE_STORE 或 ~/.orchidea/science。
from orchidea_science.storage import RawDataStore
from orchidea_science.io.fcs import read_fcs

store = RawDataStore()
meta = store.put_fcs("sample.fcs", meta={"project": "SAIYEE-01"})
fcs = read_fcs(store.path_for(meta.dataset_id))   # 存储 → 分析 闭环

三、安装

# 核心(离线可用,仅 numpy + scipy)
uv pip install -e .

# REST 网关
uv pip install -e ".[api]"

# 重型后端(按需,隔离区用内网源离线安装)
uv pip install -e ".[bio]"         # Biopython
uv pip install -e ".[structure]"   # torch(IgFold / ESMFold 依赖)
uv pip install -e ".[spectra]"     # pyopenms
uv pip install -e ".[cytometry]"   # flowkit

# 开发
uv pip install -e ".[dev]"

要求 Python ≥ 3.9。


四、快速开始

4.1 命令行

# 列出全部引擎
orchidea-science-cli engines

# 查看某引擎能力
orchidea-science-cli describe curve_fit

# 运行引擎(ELISA 效价)
orchidea-science-cli run curve_fit --payload '{"model":"elisa_4pl","points":[[0.1,0.06],[0.5,0.9],[1,2.1],[5,2.95]]}'

# 序列分析
orchidea-science-cli run sequence_analyze --payload '{"sequence":"EVQLVESGGGLVQPGGSLRLSCAASGFNIKDTYIHWVRQAPGKGLEWVARIYPTNGYTRYADSVKGRFTISADTSKNTAYLQMNSLRAEDTAVYYCSRWGGDGFYAMDYWGQGTLVTVSS"}'

# 可选后端可用性
orchidea-science-cli backends

# 人源 germline 参考库运维(离线优先):预联网预热缓存 / 导出便携 JSON
orchidea-science-cli germline fetch  --source ogrdb:human            # 下载并缓存(人类 IGH/IGK/IGL V 基因)
orchidea-science-cli germline list   --cache ~/.cache/orchidea-science/germline
orchidea-science-cli germline export --source ogrdb:human:IGH --out germline_igh.json

# 启动 REST 网关
orchidea-science-cli serve --host 0.0.0.0 --port 8100

4.2 REST API

curl -s localhost:8100/health
curl -s localhost:8100/api/v1/engines
curl -s -X POST localhost:8100/api/v1/engines/curve_fit/run \
  -H 'Content-Type: application/json' \
  -d '{"payload":{"model":"elisa_4pl","points":[[0.1,0.06],[0.5,0.9],[1,2.1],[5,2.95]]}}'

4.3 Python

from orchidea_science import registry

result = registry.run("curve_fit", {
    "model": "elisa_4pl",
    "points": [[0.1, 0.06], [0.5, 0.9], [1, 2.1], [5, 2.95]],
})
print(result.ok, result.backend, result.data.get("ec50"))

4.4 MCP(供 Agent 调用)

python3 -m orchidea_science.mcp.server

暴露工具:science_list_engines / science_describe_engine / science_run_engine / science_backends。在 orchidea-director 中登记后, 工具名形如 mcp__science__science_run_engine。


五、离线 / 隔离区部署

隔离区(离线内网 GPU 服务器)
  ├── orchidea-science(本包)—— 纯 CPU 引擎 + 结构预测(GPU 可选)
  ├── 内网 PyPI/conda 镜像(devpi / Nexus)
  └── 模型权重 + 参考数据库(经「交换区」下载杀毒后摆渡)

要点:

  1. 一次性离线导入:依赖包与模型权重在交换区下载、杀毒后摆渡进隔离区,之后永久断网。
  2. 内网私有源:隔离区内以 pip install --index-url http://<内网源> 安装。
  3. 分级启用:一期只启用纯 Python 引擎(曲线拟合、序列分析);二期上轻量结构后端(IgFold / ESMFold);三期上 AlphaFold2 全量与分子设计。

六、目录结构

orchidea-science/
├── orchidea_science/
│   ├── core/           核心框架(引擎抽象、注册表、后端探测、异常、执行护栏 guard)
│   ├── io/             原始数据接入(FASTQ / FCS / FASTA)
│   ├── storage/        原始数据存储(内容寻址 blob + SQLite 索引)
│   ├── engines/        12 个科学算法引擎
│   ├── viz/            可视化视图层 + 内置演示页(Chart.js / 3Dmol.js)
│   ├── utils/          配置中心(config)与结构化日志(logging)
│   ├── api/            REST 网关 + 认证 + 限流 + 指标 + 中间件 + 生命周期
│   ├── mcp/            stdio MCP Server
│   ├── cli/            命令行工具
│   ├── service.py      服务层:护栏 + 日志 + 统一错误契约(唯一调用入口)
│   └── registry.py     默认引擎装配(12 引擎)
├── tests/              单元与集成测试
├── docs/               部署指南 / 运维手册
├── deploy/             K8s 清单与部署说明
├── Dockerfile          多阶段镜像(非 root + 健康检查)
├── docker-compose.yml
├── .env.example
├── .github/workflows/  CI(多版本矩阵 + 部署工件校验)
├── SPEC.md             引擎接口规范
└── pyproject.toml

七、平台集成(Orchidea Director)

科学引擎以 stdio MCP Server 形式接入 Orchidea Director,工具名形如 mcp__science__science_run_engine。已作为内置默认上游端点登记在 orchidea-director/bridge/gateway/src/upstream-mcp.ts:

字段值
namescience
modestdio
commandpython3
args["-m", "orchidea_science.mcp.server"]
cwd$ORCHIDEA_SCIENCE_DIR 或工作区 orchidea-science/
timeoutMs30000(结构预测等重计算放宽超时)

可用 ORCHIDEA_MCP_ENDPOINTS 覆盖或禁用;端点不可达时仅不贡献工具,不影响其余服务。


八、生产运行

网关已具备生产级防护与可观测性(详见 docs/deployment.md 与 docs/operations.md)。

生产就绪状态、能力边界与上线前检查表见 PRODUCTION_READINESS.md; 版本演进记录见 CHANGELOG.md。

8.1 环境变量

前缀统一为 ORCHIDEA_SCIENCE_:

变量默认说明
HOST / PORT0.0.0.0 / 8100监听地址与端口
API_KEY未设置设置后启用认证(X-API-Key 或 Bearer);未设置则开放并告警
RATE_LIMIT_PER_MIN / RATE_LIMIT_BURST600 / 60令牌桶速率与突发容量
ENGINE_TIMEOUT_MS30000单次引擎执行超时,超时返回 ENGINE_TIMEOUT
MAX_PAYLOAD_BYTES8388608请求体/载荷上限,超限 413 / PAYLOAD_TOO_LARGE
LOG_LEVEL / LOG_JSONINFO / true日志级别与 JSON 输出
CORS_ORIGINS空逗号分隔的允许来源
STORE~/.orchidea/science原始数据存储根目录
MAX_WORKERS16引擎执行线程池上限

8.2 安全与限流

  • 认证:仅当设置 API_KEY 时启用;比较使用常量时间算法。
  • 限流:按客户端(API Key 优先,否则 IP)令牌桶;限流先于认证,未认证洪泛同样受限。
  • 护栏:请求体上限(413)+ 引擎执行超时(线程池受控,避免耗尽)。

8.3 可观测性

能力入口
健康总览GET /health
存活探针GET /health/live(恒 200)
就绪探针GET /health/ready(依赖异常时 503)
Prometheus 指标GET /metrics(science_* / http_*)
运行配置(脱敏)GET /api/v1/config
请求追踪每个响应带 X-Request-ID 与 X-Response-Time-ms,并注入 JSON 日志

8.4 部署

# 本地
orchidea-science-cli serve --port 8100

# Docker
docker build -t orchidea-science:1.0.0 .
docker run -p 8100:8100 -e ORCHIDEA_SCIENCE_API_KEY=$(openssl rand -hex 24) orchidea-science:1.0.0

# Kubernetes
kubectl apply -f deploy/k8s/

生产务必设置 API_KEY(启动日志会在未设置时告警),并按 docs/operations.md 配置告警规则。

8.5 可视化与三维结构

内置可视化演示页:启动服务后打开 http://127.0.0.1:8100/viz。页面用 Chart.js 渲染曲线/散点/棒状谱/区段轨道,用 3Dmol.js 渲染三维分子。

入口说明
GET /viz演示页(静态壳,数据接口仍受认证/限流保护;页面内可填 API Key)
GET /api/v1/viz/views可用可视化场景清单
GET /api/v1/viz/{engine}?scenario=用内置 demo 载荷生成视图模型
POST /api/v1/viz/{engine}用自定义载荷生成视图模型(供桌面端携带本次真实结果)

三维分子结构:结构预测已接入 IgFold(权重随包内置、离线可跑,CPU 约 1s/条)与 ESMFold(fair-esm + openfold,单序列端到端,CPU 约 20s/条·120aa,自动兼容新版 openfold 的 Linear 命名)。当 structure_predict 返回真实 PDB 时,演示页的 3D 查看器会渲染 cartoon 结构(spectrum 着色);无后端时 pdb=null 并显示明确提示(绝不伪造坐标)。

深链:orchidea_science.viz.deeplink(engine, payload) 可生成 /viz#engine=<e>&payload=<base64url>,让桌面端把「本次真实结果」(含 IgFold PDB) 直接带到演示页渲染。


九、测试

python3 -m pytest -q
← 返回平台架构总览