内容
uniprotptmpy
[](https://github.com/tacular-omics/uniprotptmpy/actions/workflows/ci.yml)
[](https://pypi.org/project/uniprotptmpyPython](https://img.shields.io/pypi/pyversions/uniprotptmpy)](https://pypi.org/project/uniprotptmpy/)
[](LICENSE)
用于解析和查询 [UniProt 翻译后修饰(PTM)受控词汇](https://ftp.uniprot.org/pub/databases/uniprot/knowledgebase/complete/docs/ptmlist.txt) 的 Python 库。
- 零核心依赖
- 捆绑 PTM 数据(748 条记录)- 开箱即用,支持离线使用
- 类型化、不可变的数据模型(`py.typed` / PEP 561)
- TSV/CSV 导出和往返 `ptmlist.txt` 编写器
- 可选 FastAPI / [模型上下文协议](https://modelcontextprotocol.io) 服务器(`pip install uniprotptmpy[server]`)
## 在线查看
#### [点击我!](https://tacular-omics.github.io/uniprotptmpy/)
相同的数据库也可以作为托管的 REST + MCP 服务访问 - 请参见下面的 [HTTP API 和 MCP 服务器](#http-api-and-mcp-server)。
## 安装
```pip install uniprotptmpy
```
或使用](https://docs..sh/uv/):
uv add unipmpy
```
需要 Python 3.12+。无第三方依赖。
## 快速入门
```python
from uniprotptmpy import load
# 加载捆绑的 PTM 数据库
db = load()
print(len(db)) # 748
# 按访问编号查找
entry = db.get_by_id("PTM-0450")
print(entry.name) # (2-氨基琥珀酰亚胺基)乙酸(Asn-Gly)
# 按名称查找(不区分大小写)
entry = db.get_by_name("phosphoserine")
print(entry.id # PTM-0253 在名称、ID、目标和关键词中进行全文搜索
results = db.search("acetylation")
# 字典样式访问(如果则引发 KeyError)
db["PTM-0450"]
# 遍历所有条for entry in db:
.id, entry.name)
化学公式
```python = db.get_by_idM-0476") -羟基脯氨酸
print(entry.correction_formula) # O1
print(entry.dict_composition) # {'O': 1}
print(entry.proforma_formula) # O
```
### 导出到 TSV/CSV
```python
# 将所有条目写入制表符分隔的文件
db.write_tsv("ptms.tsv")
# 或 CSV
db.write_tsv("ptms.csv", delimiter=",")
# 独立函数也可用
from uniprotpt import write_tsv
write_tsv(db, "ptms.tsv")
```
### 写回 ptml 格式
```python
# 往返:写条目回原始 UniProt 平面文件格式
db.write_ptmlout/ptmlist.txt")
重新解析写入的文件 - 相同的条目数量和字段值
from uniprotptmpy import parse_ptm_list
db2 = parse_ptm_list("out/ptmlist.txt")
# 独立函数
from uniprotptmpy import write_ptmlist
write_ptmlist(db, "out/ptmlist.txt")
```
### 下载最新数据
```python
from uniprotptmpy, load
path() # 下载到/uniprotptmpmlist.txt
db(path) # 从下载
```
## HTTP API 服务器
可选的 `[ 额外功能提供了一个 Fast应用程序,通过 JSON REST API模型上下文协议](https://modelcontextprotocol.io) 公开,以便语言模型工具可以直接Prot PTM 词汇。
```bash
pip install unipmpy[server]
orn uniprotpt.server.app:app --reload
```
### REST 端点
| 方法和路径 | 返回值 |
|---------------|---------|
| `GET /api/health` | 服务元数据和条目计数。 |
| `GET /api/entries?limit=&offset=` | 分页完整条目。 |
| `GET /api/entries/{id}` | 按访问编号(`PTM-0450` 或 `0450`)获取单个完整条目。 |
| `GET /api/entries/by-name/{name}`确切名称获取单个完整。 |
| `GET /api/search?q=&limit=` | 搜索结果为轻量级摘要。 |
搜索响应仅包含 `{id, name, feature_type, monoisotopic保持令牌成本低;对任何搜索结果调用/entries/{id}`完整记录(包括分类范围)。
### MCP 服务器
相同的 FastAPI 应用程序在 `POST /mcp` 上挂载一个 MCP 端点,包含三个工具:
| 工具 | 用途 |
|------|---------|
| `get_by_id | 按访问编号查找单个 PTM。 |
| `get_by_name(name)` | 精确名称查找。 |
| `search(query, limit=25)` | 全文搜索返回摘要。 |
工具响应使用 MCP 的结构化输出机制:服务器在 `tools/list` 中发出每个工具的 `outputSchema`,并在 `tools/call` 上返回 `structuredContent`(类型化 Pydantic 实例)和 `content`(文本备用),以便 LLM 客户端可以解析响应而无需重新读取 JSON 字符串。
将您的 MCP 感知客户端配置为指向 `http://localhost:8000/mcp`(或您部署应用程序位置)。使用 Anthropic CLI 示例:
```bash
claude mcp add uniprot-ptm http://localhost:8000/mcp --transport http
```
## API 概述
| 符号 | 描述 |
|--------|-------------|
| `load(source=None)` | 加载 PTM 数据库。默认使用捆绑数据。 |
| `download(dest=None 从 UniProt FTP ptmlist.txt| `parse_ptm_list(path)` | 将 ptmlist.txt 文件 `PtmDatabase`| `write_tsv(entries, path, *, delimiter)` | 将条目写入 TSV(或 CSV)文件。 |
| `write_ptmlist(entries, path 将条目写回 ptmlist.txt 平格式。 |
| `Database` | 索引集合,包含 `get_by_id()`、`get_by_name()`、`search()`、`write_tsv()`、`write_ptmlist()`、迭代和 `len()`。 |
| `PtmEntry` | 冻结数据类,包含所有 PTM 字段,以及 `dict_composition` 和 `proforma_formula` 属性。 |
| `FeatureType` | StrEnum:`CROSSLNK`、`MOD_RES`、`LIPID`、`CARBOHYD`、`DISULFID`| `CrossReference` | 冻结数据类,包含 `database` 和 `accession。 |
| `Range` | 冻结数据类,包含 `taxon_name`、`tax_id`、` 和 `raw` |
## 开发
```bash
just install # 使用依赖项
just lintuff check
just # ruff format
# ty 类型检查 test # pytest
# lint + 类型检查 + 测试
```
## 相关| 包 | 描述 |
-------------|
| [unim](https://github.com/tacular-omics/unimodpy) | 解析和查询 UNIMOD 质谱修改数据库 |
| [psim](https://github.com/tacular-omics/psimodpy) | 解析和查询 PSI-MOD 蛋白质修改## 许可证
[)