首页
/ scientific-agent-skills 数据库选择指南:按领域为 Agent 检索任务匹配权威数据库

scientific-agent-skills 数据库选择指南:按领域为 Agent 检索任务匹配权威数据库

2026-09-08 21:19:27作者:霍妲思

导读

本指南源自 database-lookup 技能中的核心决策文档 database_selection_guide.md。它解决 AI Agent 在"从公共科学数据库中检索可复现事实"时面临的首要问题:面对 78+ 个数据库 API,哪个库能回答用户的哪个问题? 文档按物理学与天文学、地球与环境科学、化学与药物、材料科学与晶体学、生物学与基因组学、疾病与临床、专利与法规、经济与金融、社会科学与人口统计,以及跨领域查询十大类目组织成查询意图到首选数据库的映射表,并给出物种参数约定、病毒序列检索风险等关键实操注意点。读完本文,你将掌握如何把用户意图翻译为"首选库 + 备选库 + 权威度排序"的可执行检索计划,为后续按 retrieval-contract.md 执行 API 调用奠定基础。

一、为什么需要一份"选择指南":意图到数据库的映射

单个查询意图往往能被多个数据库回答,但答案的权威性、覆盖范围与更新频率各不相同。该指南的价值在于给出两条决策原则(原文档开篇即强调):

  • 首选库(Primary)优先:对于某一类问题,先定位"最权威、最对口"的一个或少数几个数据库;
  • 按需扩展(Also consider):只有当下一个库确实存在覆盖缺口时,才引入备选库做标识符解析、交叉校验或补齐缺口,而不是因为"可用就全查"而大规模扇出。

这一原则与技能主文档 SKILL.md 的核心工作流第 2 步完全一致:先依据选择指南确定权威库,再用交叉校验库做补充,避免在众多 API 之间盲目并发扩散。同时,每个数据库在 references/ 下都有独立参考文件(例如 pubchem.mdbindingdb.md),内含端点、参数与可运行的查询示例,是执行检索前必须阅读的配套材料。

二、按领域逐类映射:Primary 与 Also consider 全景表

以下各表完整保留选择指南的全部映射关系,并补充对应参考文件位置,方便直接跳转获取端点细节。

1. 物理学与天文学

用户在问… 首选数据库(Primary) 备选(Also consider)
近地天体、小行星 NASA (NeoWs)
火星车图像 NASA (Mars Rover Photos)
系外行星、轨道参数 NASA Exoplanet Archive
按名称/坐标查询天体 SIMBAD SDSS
星系/恒星光谱、测光 SDSS SIMBAD
物理常数 NIST
原子光谱、谱线 NIST (ASD)

天文数据相关的检索契约有一个共同陷阱:必须明确坐标框架、单位、时间范围与空间半径(参见 retrieval-contract.md 的领域专属风险小节)。对应 API 细节可查阅 nasa.mdnasa-exoplanet-archive.mdsimbad.mdsdss.mdnist.md。其中 NASA 与 NIST 在技能主文档中分别被标注为需要 NASA_API_KEY 免费注册(NASA 亦提供 DEMO_KEY 试用)与无需密钥访问的库。

2. 地球与环境科学

用户在问… 首选数据库(Primary) 备选(Also consider)
地震、地震事件 USGS Earthquakes
水文数据、径流、地下水 USGS Water Services
天气(当前、预报、历史) OpenWeatherMap NOAA
气候数据、历史气象站 NOAA (CDO)
空气质量、有毒物质排放 EPA (Envirofacts)

地球科学类数据多为站点或传感器记录,retrieval-contract 专门提醒:返回结果时应报告站点标识符与覆盖缺口;经济/时序类数据要说明单位、频率与季节性调整。此处的 OpenWeatherMap 与 NOAA (CDO) 在技能主文档中均列入需要 API 密钥的数据库(对应 OPENWEATHERMAP_API_KEYNOAA_API_KEY 环境变量),具体端点见 openweathermap.mdnoaa.mdusgs.mdepa.md

3. 化学与药物

用户在问… 首选数据库(Primary) 备选(Also consider)
化合物、分子 PubChem ChEMBL
分子性质(分子量、分子式、SMILES) PubChem
药物同义词、CAS 号 PubChem (synonyms) DrugBank
生物活性数据、IC50、结合实验 ChEMBL BindingDB、PubChem
药物结合亲和力(Ki、IC50、Kd) ChEMBL, BindingDB PubChem
药物-靶点相互作用 ChEMBL, DrugBank BindingDB、Open Targets
某蛋白靶标的配体(按 UniProt) BindingDB ChEMBL
从化合物结构识别靶标 BindingDB (SMILES 相似度) ChEMBL
药品标签、不良事件、召回 FDA (OpenFDA) DailyMed
药品标签(结构化产品标签) DailyMed FDA (OpenFDA)
药理学、适应症 DrugBank FDA
化学交叉引用 PubChem (xrefs) ChEMBL
可商业采购的筛选化合物 ZINC PubChem
相似性/子结构搜索(可采购) ZINC PubChem、ChEMBL
类药化合物库、砌块 ZINC
FDA 批准药物结构 ZINC (fda 子集) PubChem、FDA
化合物可采购性、供应商目录 ZINC

化学领域的选择逻辑体现了"证据分层"思想:化合物身份与基本性质 → PubChem;生物活性 → ChEMBL;结合亲和力 → ChEMBL/BindingDB;监管信息 → FDA/DailyMed;可采购性与虚拟筛选 → ZINC。这与 retrieval-contract 的领域建议一致("化学身份与简单属性先查 PubChem"),并进一步提醒:当精确性重要时,优先使用结构标识符(CID、InChIKey、SMILES)而非名称,且要区分化合物同一性、测定活性、靶点注释、适应症、标签与不良事件证据。

需要特别说明两点访问约束(依据 SKILL.md):

  • DrugBank 属于付费 API 许可,无许可时应回退到 ChEMBL + PubChem + OpenFDA 组合;
  • 同义词/身份类查询也常涉及付费或受限访问(见主文档中 DrugBank 一栏的"免费替代方案"提示)。

库细节可分别参考 pubchem.md(PUG REST,含 fastformulaxrefs、PNG 结构图等端点)、chembl.mdbindingdb.mdzinc.mdfda.mddailymed.mddrugbank.md。ZINC、PubChem、ChEMBL 均支持对可采购库做相似性/子结构检索,是虚拟筛选(如利用 BindingDB SMILES 相似度反查靶标)的关键入口。

4. 材料科学与晶体学

用户在问… 首选数据库(Primary) 备选(Also consider)
按分子式/元素查材料 Materials Project COD
带隙、电子结构 Materials Project
晶体结构、CIF 文件 COD Materials Project
弹性/力学性质 Materials Project
形成能、热力学 Materials Project
晶胞参数、空间群 COD Materials Project

材料科学分支呈现清晰分工:Materials Project 负责计算性质(带隙、弹性、形成能、热力学),COD 负责实验晶体结构与 CIF 文件(晶胞参数、空间群)。注意 Materials Project 在技能主文档中被列为需要 MP_API_KEY(材料科学项目官网免费账户注册)的数据库,详细端点见 materials-project.mdcod.md

5. 生物学与基因组学(条目最密集的领域)

用户在问… 首选数据库(Primary) 备选(Also consider)
生物通路 Reactome, KEGG
某基因/蛋白参与哪些通路 Reactome (mapping), KEGG
酶动力学、催化活性 BRENDA KEGG
代谢组学研究、代谢物谱 Metabolomics Workbench PubChem
m/z 或精确质量检索 Metabolomics Workbench (moverz/exactmass) PubChem
蛋白序列、功能、注释 UniProt Ensembl
蛋白-蛋白相互作用 STRING BioGRID
基因信息、基因组位置 NCBI Gene Ensembl
基因组序列、变异、转录本 Ensembl NCBI Gene
基因表达数据集 GEO (NCBI E-utilities)
跨组织基因表达 GTEx Human Protein Atlas
基因表达特征(CMap/L1000) LINCS L1000 GEO
GEO 基因集富集 RummaGEO GEO
蛋白序列(NCBI) NCBI Protein UniProt
物种分类 NCBI Taxonomy
SNP/变异数据(dbSNP) dbSNP ClinVar, gnomAD
群体变异频率 gnomAD dbSNP
测序 run 元数据 SRA ENA, GEO
核苷酸序列(欧洲档案库) ENA SRA, NCBI Gene
基因组组装、原始读段(欧洲) ENA SRA, Ensembl
序列登录号交叉引用 ENA (xref) NCBI Gene, UniProt
病毒序列数据集(NCBI Virus 风格过滤) gget virus 确定性层 SRA、ENA、NCBI Protein
基因组注释、track UCSC Genome Browser Ensembl
3D 蛋白结构(实验) PDB (RCSB) EMDB
3D 蛋白结构(预测) AlphaFold DB PDB
EM 图、cryo-EM 结构 EMDB PDB
蛋白家族、结构域 InterPro UniProt
化学实体(生物相关) ChEBI PubChem
蛋白/遗传相互作用 BioGRID STRING
基因功能注释(GO 术语) QuickGO Gene Ontology
调控元件、ChIP-seq、ATAC-seq ENCODE
TF 结合谱/模体 JASPAR ENCODE
跨组织蛋白表达 Human Protein Atlas UniProt
单细胞图谱项目 Human Cell Atlas
蛋白质组学数据集 PRIDE
小鼠基因数据 MouseMine NCBI Gene
质粒库 Addgene

这张表是选择指南中体量最大的部分,也最能体现"同一实体分散于多库"的现实。值得注意的是参考实现层面的三类关键决策:

  • 通路分析首选 Reactome 与 KEGG;其中 Reactome 参考文件 支持按 UniProt 访问号做映射(stable ID 格式为 R-HSA-######),而 kegg.md 明确其 API 返回制表符分隔文本/flat-file 而非 JSON,路径式 URL(/list/find/link/conv)不使用查询参数。
  • 结构数据库按"实验 vs 预测"分流:实验结构走 PDB (RCSB),预测结构走 AlphaFold DB,冷冻电镜图走 EMDB,避免在错误的库中查找。
  • 病毒序列检索被单独标注为高风险操作(详见本文第五节),该技能库为此内置了 gget 技能的 gget virus 确定性检索层。

6. 疾病与临床

用户在问… 首选数据库(Primary) 备选(Also consider)
癌症体细胞突变 COSMIC Open Targets、cBioPortal
癌症基因组学(TCGA) GDC (TCGA) COSMIC、cBioPortal
癌症研究突变、CNA、表达 cBioPortal GDC (TCGA)、COSMIC
肿瘤临床数据(生存、分期) cBioPortal GDC (TCGA)
药物-靶点-疾病关联 Open Targets ChEMBL
基因-疾病关联 DisGeNET Open Targets、Monarch
孟德尔疾病-基因关系 OMIM NCBI Gene
变异临床意义 ClinVar (NCBI) OMIM
GWAS SNP-性状关联 GWAS Catalog
疾病-表型-基因关联 Monarch Initiative HPO
表型本体、HPO 术语 HPO Monarch
药物基因组学、药物-基因互作 ClinPGx (PharmGKB) DrugBank
某药物/疾病的临床试验 ClinicalTrials.gov FDA
疾病相关表达数据 GEO Open Targets

疾病与临床域的选择逻辑同样遵循"问题类型决定首选库":突变证据看 COSMIC/GDC/cBioPortal,靶点-疾病关联看 Open Targets,基因-疾病看 DisGeNET,孟德尔病看 OMIM,临床意义看 ClinVar,人群频率看 gnomAD(对应指南前文 dbSNP + ClinVar + gnomAD 的"变异三件套")。访问约束方面:COSMIC 需免费学术注册(JWT 认证),技能主文档建议无权限时用 Open Targets 替代;OMIM 需要 OMIM_API_KEY(免费学术);DisGeNET 需要 DISGENET_API_KEY(免费学术)。

技术上还有两个重要特性:Open Targets 走 GraphQL POST 端点https://api.platform.opentargets.org/api/v4/graphql),GDC/TCGA 因复杂过滤器需要 POST,二者均无法用 GET 型 WebFetch 触发,必须经 shell 的 curl 调用(详见 SKILL.md 的 POST-Only APIs 表);ClinicalTrials.gov 与 GDC 则采用 cursor/offset 分页。对应参考文件:opentargets.mdcosmic.mdtcga-gdc.mdcbioportal.mddisgenet.mdomim.mdclinvar.mdgwas-catalog.mdmonarch.mdhpo.mdclinpgx.mdclinicaltrials.md

7. 专利与法规

用户在问… 首选数据库(Primary) 备选(Also consider)
按关键词或技术查专利 USPTO (PatentsView)
按发明人或受让人查专利 USPTO (PatentsView)
专利审查/法律状态 USPTO (PEDS)
商标检索 USPTO (TSDR)
SEC 公司申报文件、10-K、10-Q SEC EDGAR

USPTO 体系按用途拆分为三套接口:PatentsView(专利检索/发明人/受让人,需 PATENTSVIEW_API_KEY)、PEDS(审查法律状态)、TSDR(商标)。SEC EDGAR 在技能主文档的 POST-Only 表中特别注明必须携带合规 User-Agent 头(格式如 YourApp you@email.com),否则请求会被拒绝。详见 uspto.mdsec-edgar.md

8. 经济与金融

用户在问… 首选数据库(Primary) 备选(Also consider)
美国经济时序(GDP、CPI、利率) FRED BEA
就业、工资、劳工统计 BLS FRED
GDP、国民账户 BEA FRED、World Bank
国际发展指标 World Bank FRED
利率、货币供应 Federal Reserve FRED
欧元汇率、ECB 货币统计 ECB
美国债务、收益率曲线、财政数据 US Treasury FRED
股票价格、外汇、加密货币 Alpha Vantage
跨主题统计数据 Data Commons

经济金融时序数据尤其强调 retrieval-contract 中"来源即事实"的原则:FRED/BEA/BLS/Treasury 各自对应不同的 record-of-record 源,单位、频率、季节性调整(seasonally adjusted vs not)与 vintage/修订状态必须显式声明,不能混用实时观测与最新修订值。该领域是免费 API 密钥最集中的领域之一:FRED(FRED_API_KEY)、BEA(BEA_API_KEY)、BLS(BLS_API_KEY)、Alpha Vantage(ALPHAVANTAGE_API_KEY)、US Census 与 Data Commons(Google Cloud 密钥)均在主文档密钥表中列出;其中 BLS v1 无密钥时每日仅 25 次请求,是最严苛的免费限额之一。详见 fred.mdbea.mdbls.mdtreasury.mdworldbank.mdfederal-reserve.mdecb.mdalphavantage.mddatacommons.md

9. 社会科学与人口统计

用户在问… 首选数据库(Primary) 备选(Also consider)
美国人口、住房、收入数据 US Census Data Commons
欧盟统计(经济、贸易、健康) Eurostat World Bank
全球健康指标(死亡率、疾病) WHO GHO World Bank

US Census 与 WHO GHO 均需免费注册 API 密钥(CENSUS_API_KEY;WHO 详见 who.md),Eurostat 无需密钥即可访问。对应参考文件:census.mdeurostat.md

10. 跨领域查询:从"单库提问"升级为"多库组合"

用户在问… 首选组合 备选(Also consider)
化合物的全部信息 PubChem + ChEMBL + DrugBank BindingDB、ZINC、Reactome、FDA
基因的全部信息 NCBI Gene + UniProt + Ensembl Reactome、STRING、COSMIC、cBioPortal、ENA
变异的全部信息 dbSNP + ClinVar + gnomAD GWAS Catalog、COSMIC、cBioPortal
药物靶点通路 ChEMBL + Reactome Open Targets、GEO
化学发明的现有技术 USPTO + PubChem ChEMBL
材料的全部信息 Materials Project + COD
美国经济总览 FRED + BLS + BEA Federal Reserve

跨领域查询(如"我们对阿司匹林了解多少"、"查遍 BRCA1")是选择指南的收尾章节,也给出三条执行纪律:

  1. 按权威度排序来源,从最可能回答问题的 2~3 个库起步;
  2. 只在第一轮留下具体缺口时才追加数据库;
  3. 任何时刻最多保持 5 个并发独立 API 请求(与主文档 SKILL.md 的并行限制一致)。

"一个实体的全貌"通常横跨身份、活性、监管、临床与经济等多个维度,各维度间存在天然依赖:例如检索 BRCA1 时,先以基因符号在 NCBI Gene 解析出整数基因 ID(7157),再据此联查 GEO、DisGeNET、HPO——这正是"跨库标识符链"的典型用法,可参照技能主文档的 Common Identifier Formats 与 Identifier Resolution 小节。

三、关键实操约束一:物种/谱系参数必须显式传递

原指南原文强调:"物种/生物体至关重要。大多数生物学数据库覆盖多个物种。若用户查询涉及特定物种,必须显式传递,不要默认是人类。"

不同数据库接受物种参数的语法各不相同,以下是原文档列出的对照(已在各库参考文件中逐一验证):

数据库 物种参数约定 示例
Ensembl URL 路径中的 {species},下划线命名 homo_sapiensmus_musculus
STRING NCBI 分类学 ID(species 参数) species=9606(人)、species=10090(小鼠)
BioGRID NCBI 分类学 ID 同上
QuickGO NCBI 分类学 ID 同上
UniProt 查询串 organism_id:9606 organism_id:9606 限人源
KEGG 生物体代码 hsa(人)、mmu(小鼠)
GTEx 仅人 无物种参数
Human Protein Atlas 仅人 无物种参数

例如从 ensembl.md 可确认:GET /lookup/symbol/{species}/{symbol}species 必填,且 homo_sapiensmus_musculus 分属不同 URL;string.md 的 resolve 端点也建议"尽量带上 species 以避免标识符歧义"(如不加,TP53 之类符号可能命中多物种)。而 gtex.mdhuman-protein-atlas.md 本质上是人源专项数据库。实操建议:在定义检索契约(retrieval-contract.md 的 "Organism/taxon/build" 字段)时就把物种写死,并逐库核对各自参考文件的具体参数名与取值格式。

四、关键实操约束二:病毒序列检索是高危操作,优先确定性检索层

原文档用显著篇幅单列了一条风险警示:对 NCBI Virus 风格的过滤请求——包括宿主(host)、地理、采集日期、序列长度、完整性(completeness)、模糊碱基(ambiguous bases)、片段(segment)、实验室传代(lab passage)、来源数据库、蛋白注释等过滤器——应优先使用 gget 技能的 gget virus 确定性检索层,而不是手工拼装浏览器或 API 工作流。

依据有二:

  • 技能主文档的检索契约明确推荐:病毒序列数据集优先使用 gget 技能的 gget virus 确定性层(见 SKILL.md 的 Available Databases 与 retrieval-contract.md 第 2 节"Viral sequence datasets: prefer the gget skill's gget virus deterministic layer");
  • 之所以如此强调,是因为少量过滤差异可能改变下游结论(技能主文档开篇即陈述此假设),且这些过滤项在 SRA/ENA/NCBI Protein 等原始 API 上的语义并不一致。

如果确实必须直接调用 SRA/ENA/NCBI 的 API,原文档要求的纪律是:逐条记录哪些过滤器由服务端强制执行(server-side)、哪些只能在本地校验(local),并在最后对账最终获得的 accession 数量(expected total vs retrieved total vs local-filtered total),不一致时宁可显式报告失败,也不要在不完整数据上给出"看似合理"的结论。此外,病毒序列还要区分 RefSeq、GenBank、ENA、DDBJ、UniProt 的登录号来源,并分别对待采集日期、提交日期、发布日期与出版日期。可参见 gget 技能sra.mdena.md

五、从"选库"到"检索执行":选择指南的下游配套

选择指南只是 database-lookup 技能 7 步工作流中的第 2 步。选定数据库之后,整个管线由以下配套约束支撑(全部可在 SKILL.mdretrieval-contract.md 中查证):

  1. 阅读对应参考文件:每个库一个 references/<database>.md,含 base URL、端点、参数格式、限速、分页/计数行为、响应结构与已知歧义点,是构造请求的第一手依据。
  2. 识别标识符格式:主文档的 Common Identifier Formats 表给出常见格式对照(如 UniProt P#####、Ensembl ENSG###########、NCBI Gene 整数、PubChem CID 整数、ZINC ZINC+15 位、ChEMBL CHEMBL####、dbSNP rs#### 等),是"查询失败先怀疑标识符格式"的排查起点。
  3. 区分服务端/本地过滤语义:把过滤器拆成 API 能强制执行的与必须本地检查的两类,明确标识符转换、歧义字段、分页策略与限速。
  4. 遵守限速与并发边界:不同库限速各异(如 NCBI 系列无密钥 3 req/s、有密钥 10 req/s;Ensembl 15 req/s;BLS v1 无密钥 25 req/day),且任一时刻在途 API 请求 ≤ 5;遇到 HTTP 429/503 应短暂等待后重试一次。
  5. POST-only API 走 curl:Open Targets、gnomAD、RummaGEO、GDC/TCGA、SEC EDGAR 需要 POST 或自定义请求头,无法用 GET-only 的 WebFetch 工具触发。
  6. 全量检索先计数:超过 10,000 条记录或 100 次 API 调用前必须向用户确认并给出简短检索计划;超大源(PubChem、ChEMBL、ZINC、SEC 档案库、批量基因组库)建议改用官方批量下载或数据库 dump。
  7. 返回可审计结果:最终输出按 Retrieval Summary / Results / Provenance 三段式组织,其中 Provenance 需写明端点、参数、标识符转换、计数对账、本地过滤与告警(见 SKILL.md 的 Output Format 章节),外部返回内容一律视为不可信第三方数据。

六、小结:如何把"用户意图"变成"可执行的检索计划"

把选择指南落到 Agent 日常检索,可以总结为可复用的四步决策法:

  1. 归类:判断问题落在哪个/哪些领域(物理、地球、化学、材料、生物、临床、专利、金融、社科),对照对应领域表;
  2. 取首选库:从 Primary 列取最对口的 1~2 个库;需要交叉校验或填缺口时再看 Also consider 列;
  3. 定参数:显式传递物种(KEGG 代码 / NCBI taxid / UniProt organism_id / Ensembl {species} 等)、基因组版本、坐标框架或时间范围,逐库核对参考文件参数;病毒序列请求一律走 gget virus 确定性层;
  4. 控范围:先以 2~3 库启动,仅在出现具体缺口时扩容,全程保持 ≤5 并发并遵守各库限速;面向全量检索先做计数预估,超阈值先征求用户确认。

对于"查尽某个实体"的跨域请求,选择指南还给出了三个经典组合模板(化合物 = PubChem + ChEMBL + DrugBank、基因 = NCBI Gene + UniProt + Ensembl、变异 = dbSNP + ClinVar + gnomAD),它们既是选库模板,也是后续标识符解析链(symbol → ID → 各库联查)的起点。将本指南与 database-lookup/SKILL.md 主流程、retrieval-contract.md 审计清单配合使用,即可把一次开放式的科学提问转化为有权威来源、可复现、可审计的数据库检索。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.14 K
2.75 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
857
1.35 K
docsdocs
暂无描述
Markdown
898
5.82 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
921
1.84 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.8 K
1.02 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
531
596
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.02 K
519
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.36 K
1.46 K
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
548
391