内容
# 蛋白质AI研究助手
蛋白质AI研究助手是一种特定领域的AI代理,用于蛋白质序列探索、二级结构预测、UniProt注释查找和训练数据集分析。
该项目最初是一个基于PyTorch LSTM的蛋白质二级结构预测系统。现在,它结合了:
- 基于训练的PyTorch检查点的本地Q3和Q8预测工具,
- 用于独立服务的FastAPI推理服务,
- 用于对话工作流的Google ADK代理,
- 用于生物查找的UniProt REST API工具,
- 用于保护的BigQuery访问的自定义MCP服务器。
这不是一个通用的自主科学家。它是一个专注的蛋白质研究助手,可以在一个工作流中链接检索、预测和数据集分析。
## 当前范围
助手目前可以:
- 预测一个序列的Q3二级结构,
- 预测一个序列的Q8二级结构,
- 运行批量Q3和Q8预测,
- 在UniProt中搜索候选蛋白质条目,
- 检索具有序列、功能注释、GO术语和关键词的UniProt条目,
- 通过BigQuery将蛋白质与训练数据集进行比较,
- 在一个自然语言响应中组合检索的事实和模型预测。
示例工作流:
1. 在UniProt中搜索一个经过审查的人类蛋白质,
2. 检索蛋白质序列和功能注释,
3. 将序列长度与训练数据集平均值进行比较,
4. 在本地运行Q3或Q8预测,
5. 返回具有置信度警惕的简洁解释。
## 架构
```mermaid
flowchart TD
U["用户"] --> A["Google ADK代理<br/>蛋白质研究代理"]
A --> P["直接Python工具"]
P --> Q3["预测_q3 / 预测_q8"]
P --> BQ["批量预测_q3 / 批量预测_q8"]
P --> UNI["搜索_uniprot / 获取_uniprot条目"]
Q3 --> M["本地PyTorch推理"]
BQ --> M
M --> ART["模型工件<br/>服务/工件"]
UNI --> UR["UniProt REST API"]
A --> MCP["MCP工具集"]
MCP --> S["蛋白质_bq_mcp服务器"]
S --> GT["获取表信息"]
S --> QT["查询蛋白质数据"]
S --> BI["BigQuery"]
BI --> DS["蛋白质训练数据集"]
```
支持组件:
- `serving/`:FastAPI应用程序和模型服务代码
- `蛋白质代理/`:ADK代理、预测工具、UniProt工具、提示和内部模式
- `蛋白质_bq_mcp服务器/`:MCP服务器,暴露只读BigQuery操作
- `蛋白质模型/`:共享训练/模型代码
- `脚本/`:训练和数据分析实用程序
## 模型性能
已发布的序列建模工作的基准测试结果:
| 数据集 | Q3准确率 | Q8准确率 |
|---------|-------------|-------------|
| CB513 | 76.2% | 62.1% |
| TS115 | 75.8% | 61.7% |
| CASP12 | 74.9% | 60.3% |
这些分数反映了训练的序列模型,而不是端到端代理质量。
## 仓库布局
```text
蛋白质结构项目/
├── 蛋白质代理/
│ ├── 代理.py
│ ├── 代理提示.md
│ ├── 工具.py
│ ├── uniprot工具.py
│ └── 模式.py
├── 蛋白质_bq_mcp服务器/
│ └── 服务器.py
├── 蛋白质模型/
│ ├── 架构.py
│ ├── 数据实用程序.py
│ └── 预处理训练.py
├── 服务/
│ ├── 应用程序/
│ │ ├── 主.py
│ │ ├── 模型.py
│ │ ├── 预处理.py
│ │ └── 模式.py
│ └── 工件/
├── 脚本/
│ ├── 训练.py
│ ├── 图表.py
│ └── 查询/
├── 数据集/
├── Dockerfile
├── 需求.txt
└── README.md
```
## 安装
### 先决条件
- 推荐Python 3.11
- Docker,如果您想运行FastAPI容器
- Google Cloud凭证,如果您想访问BigQuery MCP
### 设置
```bash
git clone https://github.com/Mubarak-11/蛋白质二级结构预测.git 蛋白质结构项目
cd 蛋白质结构项目
pip install -r 需求.txt
```
如果您正在使用本地虚拟环境,请在安装依赖项之前激活它。
## 运行FastAPI服务
本地开发:
```bash
uvicorn 服务.应用程序.主:应用程序 --reload
```
Docker:
```bash
docker build -t 蛋白质服务 .
docker run -p 8000:8000 蛋白质服务
```
可用端点:
- `GET /健康`
- `POST /预测/q3`
- `POST /预测/q8`
- `POST /预测/批量q3`
- `POST /预测/批量q8`
示例:
```bash
curl -X POST http://localhost:8000/预测/q3 \
-H "内容类型:应用程序/json" \
-d '{"序列": "MVLSPADKTNVKAAW"}'
```
## 运行ADK代理
代理使用:
- 本地PyTorch预测工具,
- UniProt REST查找,
- 用于BigQuery访问的MCP服务器。
在运行代理之前,请确保所需的环境和凭证可用于:
- Google ADK,
- BigQuery访问,
- `服务/工件/`中的本地模型工件。
典型本地流程:
```bash
cd 蛋白质结构项目
# 激活您的虚拟环境
# 然后使用蛋白质代理/代理.py启动ADK开发工作流
```
确切的启动命令可能会根据您的本地ADK设置而有所不同,但根代理在`蛋白质代理/代理.py`中定义。
代理目前旨在用于本地开发和演示工作流,而不是公共生产部署。
## UniProt和BigQuery工作流
最近的改进包括:
- 更丰富的UniProt条目检索,包含功能注释、GO术语和关键词,
- 更丰富的UniProt搜索结果,包含已审查条目的元数据,
- Q3和Q8输出的分组预测区域,
- 更好的提示更新,区分检索的事实和模型预测。
这意味着代理现在可以回答诸如以下的提示:
- “查找人类肌红蛋白的已审查UniProt条目并总结其功能。”
- “将此蛋白质的长度与训练数据集的平均长度进行比较。”
- “为UniProt序列预测Q3并总结主要结构区域。”
## 当前进度
已实施并在本地运行:
- 训练的Q3和Q8 PyTorch检查点,
- FastAPI服务路径,
- 带有本地预测工具的ADK代理,
- MCP BigQuery集成,
- UniProt搜索和条目查找,
- 结构化预测区域,用于更干净的代理摘要,
- 反映工具输出合同的内部Pydantic模式。
尚未完成:
- ADK代理的公共部署,
- 模糊UniProt搜索的更严格的规范条目排名,
- 更丰富的生物学字段,如域或亚细胞位置,
- 用于系统代理基准测试的评估工具,
- 完善的公共仓库/演示资产。
## 未来迭代
计划的下一步骤包括:
- 改进UniProt候选人选择和排名行为,
- 扩展生物注释和蛋白质元数据检索,
- 为结构区域摘要添加更好的格式或平滑处理,
- 改进代理响应的评估和可观察性,
- 添加语义蛋白质搜索和检索工作流,
- 探索突变分析和结构影响实验,
- 准备更干净的公共演示和存储库展示。
## 注意事项
- 预测置信度是模型置信度得分,而不是校准的生物概率。
- 序列模型可能会与已知的结构生物学产生分歧,尤其是在三级上下文重要的情况下。
- BigQuery访问受到保护,适用于开发使用,但当前的MCP防护墙不是完整公共安全边界。
## 许可证
该项目在MIT许可证下获得许可。