ENSURE(The Encyclopedia of Suppressor tRNA with an AI Assistant)是一个面向 suppressor tRNA 研究的数据库与可视化平台,聚合疾病与癌症相关编码变异、natural sup-tRNA、engineered sup-tRNA 以及 tRNA functional elements 数据,并提供结构展示、序列检索、数据下载和 AI 助手能力。
- 在线访问: https://trna.lumoxuan.cn/
- 论文: ENSURE: the encyclopedia of suppressor tRNA with an AI assistant, Nucleic Acids Research (2025), DOI:
10.1093/nar/gkaf1062, PMID:41160884 - 本仓库包含 ENSURE 的 Vue 3 前端、Flask 后端、帮助文档和离线数据处理脚本
以下数量来自论文摘要,线上库内容可能会继续更新:
- 2152 条 disease- and cancer-associated nonsense/missense/frameshift variants
- 86 条 experimentally validated natural sup-tRNAs
- 1108 条 engineered suppressor tRNA strategies
- 487 条 curated tRNA element records
Coding Variation in Disease/Cancer: 浏览疾病和癌症中的 missense、nonsense、frameshift 变异Natural sup-tRNA: 查看天然 suppressor tRNA 的物种、序列和结构信息Engineered sup-tRNA: 浏览工程化 sup-tRNA 与治疗策略条目tRNA Elements: 汇总 modification/function、aaRS recognition、EF-Tu recognition 等功能元件Display / Expanded: 查看条目详情、二维结构和相关可视化Blast / Search: 按序列进行比对检索Download: 导出单表或整站数据集AI Yingying: 结合数据库、帮助文档与可选 PubMed 检索的对话助手Admin: 后台可管理Engineered_sup_tRNA数据,并在 MySQL 中维护 LLM provider/model 配置(DeepSeek / Xiaomi MiMo / Ollama)Help / Docs / Audio: 面向用户的帮助文档、API 说明与教学资源页面
站点路由概览见 public/docs/99-Site-Map.md,API 快速说明见 public/docs/98-API-Reference.md。
AI 回答提供 Fast answer 与 Deep research 两种链路。前者执行单轮
检索并跳过最终 Critic,后者允许多轮 RAG 与证据审查;最终正文使用可点击
的 [S1] 引用连接到结构化表格记录、ENSURE ID、PMID 或 DOI。MiMo 与
DeepSeek 的固定科研问题评测集、运行方法和指标定义见
Flask/evals/README.md。
- 前端: Vue 3, Vite, TypeScript, Element Plus, Vue Router
- 可视化: ECharts, D3, NGL, vue-echarts, vxe-table
- 后端: Flask, SQLAlchemy, MySQL, Biopython, Pandas
- AI 相关: DeepSeek、Xiaomi MiMo、Ollama-compatible chat backend,文档检索与可选 PubMed 工具
- 部署相关: Gunicorn、可选 MinIO 导出缓存
.
├── src/ # Vue 3 前端源码
├── public/docs/ # 站内帮助文档、站点地图、API 说明、论文 PDF
├── Flask/ # 主 Flask API(表格、导出、AI、检索)
├── tools/data-prep/ # 离线数据处理、序列整理、BLAST 辅助脚本
├── vite.config.js # 前端构建与本地代理配置
└── package.json # 前端依赖与脚本
- Node.js 18+
pnpm(仓库包含pnpm-lock.yaml)- Python 3.10+(建议)
- MySQL(完整后端需要)
- 可选: Ollama、MinIO
如果你只想看静态页面或做前端开发:
pnpm install
pnpm dev
pnpm build
pnpm preview默认开发地址为 http://localhost:5174。
注意:很多页面依赖后端接口;如果没有后端,表格、下载、AI、序列检索等功能不会完整工作。
推荐直接使用仓库内置的跨平台启动脚本。它会在首次启动时自动:
- 创建
Flask/.venv - 安装
Flask/requirements.txt中的后端依赖 - 启动 Flask 后端
- 配置环境变量
后端会自动读取 Flask/.env。至少需要以下数据库配置之一:
DATABASE_URL- 或
MYSQL_HOST、MYSQL_PORT、MYSQL_DB/MYSQL_DATABASE、MYSQL_USER、MYSQL_PASSWORD
常见可选配置:
MINIO_ENDPOINT、MINIO_ACCESS_KEY、MINIO_SECRET_KEY、MINIO_BUCKET、MINIO_PUBLIC_BASEOLLAMA_BASE_URL、OLLAMA_MODEL、OLLAMA_TIMEOUTDEEPSEEK_BASE_URL、DEEPSEEK_MODEL、DEEPSEEK_API_KEYXIAOMI_BASE_URL、XIAOMI_MODEL、XIAOMI_API_KEY(也兼容官方常用的MIMO_API_KEY)PUBMED_ENABLE、PUBMED_API_KEY、PUBMED_EMAILEMBEDDING_ENABLE、EMBEDDING_INDEX_PATH、EMBEDDING_DOCS_DIREXPORT_WARM_ON_START、EXPORT_WARM_FORMATS
- 启动 Flask API
Linux:
./Flask/start_backend.shWindows:
Flask\start_backend.bat也可以直接用同一个 Python 脚本,在 Windows 和 Linux 都通用:
python Flask/scripts/start_backend.py默认监听 http://localhost:8010。
如果你还想继续换端口,可以这样:
python Flask/scripts/start_backend.py --port 8020也支持同时指定 host:
python Flask/scripts/start_backend.py --host 0.0.0.0 --port 8020首次启动会自动装依赖;如果你后面更新了依赖,想强制重新安装:
python Flask/scripts/start_backend.py --installLinux 开机自启动推荐使用用户级 systemd 服务,不需要 screen:
./deploy/systemd/install-user-service.sh查看状态和日志:
systemctl --user status ensure-backend.service
journalctl --user -u ensure-backend.service -f重启或停止服务:
systemctl --user restart ensure-backend.service
systemctl --user stop ensure-backend.service如果希望电脑开机后、用户还没登录桌面时也自动启动,需要执行一次:
sudo loginctl enable-linger "$USER"禁用自启动并停止服务:
systemctl --user disable --now ensure-backend.service- 启动前端
pnpm install
pnpm dev开发模式下,Vite 会把以下接口代理到 http://localhost:8010:
/search/table_rows/table_stats/table_fulltext_rebuild/download_table/download_table_status/download_bundle_status/chat/api/*
如果你不想用启动脚本,也可以手动启动:
cd Flask
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python wsgi.pyLinux 生产环境可选 Gunicorn:
cd Flask
source .venv/bin/activate
pip install gunicorn
gunicorn -c gunicorn.conf.py wsgi:app如果需要覆盖默认前端行为,可配置以下变量:
VITE_CHAT_API_BASE: 自定义聊天接口前缀,默认是/chat/apiVITE_OPENAI_API_KEY: 音视频总结页面使用的可选 API keyVITE_API_KEY、VITE_API_KEY_11、VITE_API_KEY_DEFAULT: AI 页面兼容使用的可选 key
完整后端中比较核心的接口包括:
GET /healthPOST /table_rowsPOST /table_statsPOST /searchGET /download_tableGET /download_table_statusGET /download_bundle_statusGET /chat/api/application/profileGET /chat/api/openPOST /chat/api/chat_message/<chat_id>
更详细的示例请求可参考 public/docs/98-API-Reference.md。
public/docs/下的 Markdown/PDF 同时用于帮助页和后端文档检索tools/data-prep/保存了离线数据整理与 BLAST 辅助脚本- 当前仓库没有看到可直接导入的完整 MySQL 数据快照;完整站点功能依赖现成数据库
- 生产环境 Gunicorn 监听与 worker 配置位于
Flask/gunicorn.conf.py
ENSURE 数据库仅供学术与非商业研究使用。商业用途需事先获得作者和中山大学的书面许可。
Zhuo Ouyang, Yifeng Zhang, Fan Feng, Xudong Zeng, Qiuhui Wu, Abdul Hafeez,
Wenkai Teng, Yixin Kong, Xuan Bu, Yang Sun, Bin Li, Yanzi Wen, Zhao-Rong Lun,
Lianghu Qu, Xiao Feng, Lingling Zheng, ENSURE: the encyclopedia of suppressor
tRNA with an AI assistant, Nucleic Acids Research, 2025; gkaf1062,
https://doi.org/10.1093/nar/gkaf1062