资讯动态

生物信息学数据库入门:GenBank、EMBL、DDBJ检索与二级库实战

发布时间:2026/10/9 21:42:52 来源:尧图企业网站定制
简介这份PPT课件面向生物信息学入门学习者与生物科研人员系统梳理生物信息学数据库的类型、结构及检索方法帮助读者建立从核苷酸到蛋白质数据的完整认知框架。资源为单个pptx文件压缩包约15MB共127张幻灯片内容涵盖数据库工具、核苷酸数据库、蛋白质数据库及各类生物数据库的检索要点。课件具体讲解了GenBank、EMBL、DDBJ三大核苷酸数据库的更新机制与序列标识dbEST、UniGene、dbSTS、dbGSS等二级数据库的用途以及MySQL、AceDB等数据库工具在基因组数据管理中的应用并延伸至Taxonomy、Pubmed等综合数据库。目前已有88人学习适合需要系统掌握生物数据检索与投稿前序列提交规范的读者参考。1. 从一份 127 页的课件说起生物信息学数据库到底怎么上手如果你手头正好有一份 127 页的生物信息学数据库课件翻到第三页大概率会看到 GenBank、EMBL、DDBJ 这三个名字再往后翻就是一堆 flatfile 格式的序列记录和分支缩写表。很多人第一次接触这块内容时的反应是概念都懂但真让自己去查一条序列、定位一个基因、把注释信息读明白就不知道从哪下手了。这份课件解决的就是这个问题——它把核苷酸数据库、蛋白质数据库、二级数据库dbEST、UniGene、dbSTS、dbGSS以及 Taxonomy、PubMed 这些常用资源的组织方式和检索入口串成了一条线。适合谁看做分子生物学实验但需要自己查序列注释的研究生、刚进生物信息组的开发人员、以及需要把序列提交到公共库的投稿作者。它不讲算法讲的是“数据在哪、怎么找、字段什么意思”这是后面所有分析工作的地基。2. 核苷酸数据库三大件GenBank、EMBL、DDBJ 的字段与检索逻辑2.1 三大库的分工与数据交换机制GenBank、EMBL 核苷酸数据库、DDBJ 这三个库之间的关系课件里用了一句话概括以天为基础进行序列数据交换。这意味着你往 GenBank 提交一条序列第二天在 EMBL 和 DDBJ 里也能查到同一条记录三者共享同一个 accession number。这个机制叫国际核苷酸序列数据库合作课件里写的是 International Nucleotide Sequence Database Collaboration实际工作中你不需要记住全称但要知道一个后果不要试图在三个库里分别提交同一条序列系统会判定重复。GenBank 由 NCBI 维护数据每天更新每年发行六版。课件里给了一个 Release 185 的数字142284608 条序列全部下载大概需要 511 GB。这个体量意味着你不可能把整个库拉到本地做 BLAST常见做法是用 NCBI 的在线 BLAST 或者下载特定物种的 RefSeq 子集。GenBank 的数据来源超过 500,000 个物种其中大约 12.2% 来自人类。课件里还列了序列最多的 20 个物种的增长曲线这条曲线的斜率在 2000 年之后明显变陡对应的是高通量测序成本的下降。每条 GenBank 记录有三个专有标识Locus name位点名、Accession number注册号或登陆号、GIGenInfo identifier。GI 号在 2016 年之后 NCBI 已经逐步弃用但老课件里还会出现你如果在旧文献里看到 GI 号直接拿 accession number 去查就行。Accession number 是终身不变的Locus name 可能随注释更新而改变这一点在写论文引用序列时要注意——引 accession不要引 locus。2.2 用 Entrez 检索一条水稻抗病相关序列课件里反复出现一个例子水稻抗病相关基因 OsDR8以及一串看起来像乱码的标记 NBS119、RM224、R1506、Xa26、Y6855RA、S12886、RM144。这些其实是分子标记和抗病基因的代号课件用它们来演示怎么从 GenBank 里把一条序列及其注释调出来。下面用 NCBI 的 Entrez 接口走一遍完整流程。# 用 Biopython 的 Entrez 模块检索一条核苷酸序列 # 安装pip install biopython from Bio import Entrez, SeqIO # NCBI 要求提供邮箱方便在请求异常时联系你 Entrez.email your_emailexample.com # 第一步用基因名和物种名做关键词检索拿到 ID 列表 handle Entrez.esearch( dbnucleotide, # 数据库选择nucleotide 对应 GenBank 的核苷酸部分 termOsDR8[Gene] AND Oryza sativa[Organism], # 字段限定检索 retmax5 # 只取前 5 条避免一次拉太多 ) record Entrez.read(handle) handle.close() id_list record[IdList] print(命中 ID, id_list) # 第二步用 ID 列表拉取 GenBank flatfile 格式的完整记录 handle Entrez.efetch( dbnucleotide, idid_list, rettypegb, # gb GenBank flatfile带完整注释 retmodetext ) # 解析并保存为 .gb 文件方便本地查看 with open(OsDR8_records.gb, w) as out: out.write(handle.read()) handle.close()这段代码的逻辑分两步esearch 负责“找”efetch 负责“取”。参数里dbnucleotide是固定写法对应 GenBank 的核苷酸分支term里的[Gene]和[Organism]是 Entrez 的字段限定符不加限定符会命中大量无关记录。rettypegb拿到的是带注释的 flatfile如果你只要纯序列改成rettypefasta、retmodetext即可。retmax建议第一次设小一点确认检索式没问题再放大。拿到 flatfile 之后你会看到 LOCUS 行、DEFINITION 行、ACCESSION 行、FEATURES 表。FEATURES 表里的 CDS 行标出了 coding sequence 的起止位置source 行标出了物种和染色体定位。课件里强调的“原始数据 生物学注释”两部分在 flatfile 里就是 ORIGIN 之后的碱基序列和 FEATURES 表里的注释信息。很多人查序列只看序列本身忽略了 FEATURES 表结果做克隆引物设计时漏掉了内含子位置这是血泪经验。2.3 GenBank 分支缩写与 LOCUS 行的读法课件里用两张表列了 GenBank 的分支缩写这些缩写出现在 LOCUS 行的第二列。比如你看到LOCUS XM_015766123 3000 bp mRNA linear PLN 12-JAN-2024其中 PLN 就代表植物、真菌和海藻类序列。完整的分支缩写如下缩写全称含义PRIprimate sequences灵长类序列RODrodent sequences啮齿类序列MAMother mammalian sequences其它哺乳类序列VRTother vertebrate sequences其它脊椎动物序列INVinvertebrate sequences无脊椎动物序列PLNplant, fungal, and algal sequences植物、真菌和海藻类序列BCTbacterial sequences细菌序列VRLviral sequences病毒序列PHGbacteriophage sequences噬菌体序列SYNsynthetic sequences合成序列UNAunannotated sequences未注释的序列ESTexpressed sequence tags表达序列标签PATpatent sequences已专利的序列STSsequence tagged sites序列标签位点GSSgenome survey sequences基因组序列HTGhigh throughput genomic sequences高通量基因组序列HTChigh throughput cDNA sequences高通量 cDNA 序列这张表的价值在于当你用 efetch 批量拉序列时可以根据 LOCUS 行的分支缩写快速过滤掉你不想要的类型。比如做转录组分析时EST 和 HTC 分支的记录要留意它们通常是单次测序的短片段不是全长 CDS。课件里提到 GenBank 中 64% 以上的序列是 EST这个比例意味着你如果不加过滤条件检索结果里大部分是碎片。3. 二级数据库实战dbEST、UniGene、dbSTS、dbGSS 的检索入口3.1 四个二级库的定位与区别课件把 dbEST、UniGene、dbSTS、dbGSS 都归为 GenBank 的二级数据库但它们的用途差别很大。dbEST 存的是 EST也就是 cDNA 序列的一个片断长度 300–400 bp属于 single-pass sequence测一次就提交错误率比全长 CDS 高。UniGene 则是把来源于同一基因的非重复 EST 聚成基因序列群课件里说它覆盖了人、大鼠、小鼠、斑马鱼、牛、蛙以及拟南芥、水稻、小麦、大麦、玉米等共计 97 个物种。dbSTS 存的是短序列200–500 bp特点是已定位到染色体上、序列已知的单拷贝 DNA 短片段。dbGSS 存的是基因组调查序列和 EST 类似但来源是 genomic DNA 而不是 cDNA。这四个库的检索入口都在 NCBI 主页的下拉菜单里。课件里给的操作路径是GenBank 主页选择 UniSTS 后输入关键词检索检索到的条目点击“mv”查看染色体定位。UniSTS 是 dbSTS 的检索前端现在 NCBI 已经把 UniSTS 整合进了其他视图但检索逻辑没变——用标记名或基因名做关键词拿到 STS 的 accession再跳转到染色体定位图。3.2 用 UniGene 聚类结果做引物设计前的检查UniGene 的典型用法是你手上有一批 EST 序列想确认它们是不是来自同一个基因或者想找某个基因在不同组织里的表达证据。下面这段代码演示怎么用 Entrez 拉取 UniGene 的聚类信息。# 检索 UniGene 中水稻的某个基因簇 from Bio import Entrez Entrez.email your_emailexample.com # UniGene 的库名是 unigene handle Entrez.esearch( dbunigene, termOsDR8[Gene] AND Oryza sativa[Organism], retmax10 ) record Entrez.read(handle) handle.close() # 打印 UniGene 簇 ID for uid in record[IdList]: print(UniGene 簇 ID, uid) # 用 efetch 拉取该簇的详细页面文本格式 if record[IdList]: handle Entrez.efetch( dbunigene, idrecord[IdList][0], rettypeunigene, # 返回 UniGene 报告 retmodetext ) report handle.read() handle.close() # 报告里会列出该簇包含的 EST 登录号、组织来源、文库信息 print(report[:2000])参数说明dbunigene是固定值rettypeunigene返回的是聚类报告里面会列出该簇包含的所有 EST 登录号。你拿到这些登录号之后可以回到 nucleotide 库用 efetch 批量拉取序列做多序列比对检查 EST 之间有没有重叠区。如果重叠区一致说明聚类可靠如果出现大量错配可能是测序错误或者可变剪接。这一步在引物设计前做一遍能避免在可变剪接区域设计引物导致扩增出多条带。3.3 dbSTS 的染色体定位查询与 dbGSS 的框架作用dbSTS 的检索结果里会给出染色体定位信息课件里用“mv”标注了查看入口。实际操作中你拿到一个 STS 的 accession 后可以在 NCBI 的 Map Viewer 里看到它在染色体上的位置。这个信息在遗传作图时很有用——如果你手上有几个 STS 标记想知道它们是否连锁直接查染色体定位比做杂交实验快得多。dbGSS 的定位在课件里写得很清楚它和 EST 分支类似但大部分序列是 genomic origin 而不是 cDNA。GSS 通常由做基因组测序的实验室提交用作 mapping 和 sequencing 的框架。cosmid、BAC、YAC 这些载体名称在课件里和 GSS 一起出现说明 GSS 记录里会标注克隆载体类型。如果你在做基因组组装GSS 可以作为 scaffold 的验证数据如果你在做基因定位GSS 上的 STS 标记可以帮你把 contig 锚定到染色体上。4. 避坑与排查序列检索和提交中的五个常见翻车点4.1 检索式太宽导致命中大量 EST 碎片现象用基因名检索返回几千条结果大部分是 EST 和专利序列找不到全长 CDS。原因Entrez 默认在所有分支里检索EST 和 PAT 分支的记录数量远大于全长 mRNA。解决在检索式里加AND srcdb_refseq[prop]限定 RefSeq 数据库或者加AND biomol_mrna[prop]限定 mRNA。如果一定要用 GenBank 全库加NOT gbdiv_est[prop]排除 EST 分支。4.2 把 GI 号当 accession 引用现象论文返修时审稿人要求提供序列的 accession number你给了 GI 号审稿人说查不到。原因GI 号在 2016 年之后 NCBI 已经停止分配旧记录的 GI 号虽然还能用但新记录没有 GI。解决统一用 accession number如 XM_015766123.2版本号后缀.2也要带上因为不同版本的注释可能不同。4.3 flatfile 里的 CDS 坐标和实际序列对不上现象从 FEATURES 表里读到 CDS 的起止坐标提取序列后翻译发现提前出现终止密码子。原因CDS 坐标是 1-based 且包含 join 操作比如join(1..100,200..300)表示外显子拼接你如果直接取 1..300 会把内含子也翻进去。解决用 Biopython 的SeqIO解析 flatfile它会自动处理 join 和 complement 操作不要手动按坐标切片。4.4 提交序列时漏填 source 信息现象投稿时期刊要求提供 GenBank accession你提交后收到 NCBI 的退回邮件说 source 信息不完整。原因source 行必须包含 organism、strain、clone、tissue 等字段缺一个都会被退回。解决提交前用 NCBI 的 BankIt 工具预检或者参考同物种已发布记录的 source 行格式。课件里强调“投稿文章首先要将序列提交到相应数据库”这个步骤不能省也不能随便填。4.5 用 UniGene 簇 ID 直接当基因 ID 用现象在文章里写“该基因的 UniGene 簇号为 Os.12345”审稿人要求提供基因的正式命名。原因UniGene 簇是 EST 聚类的结果不是官方基因命名不同物种的簇号体系不通用。解决用 UniGene 报告里的基因符号去查 NCBI Gene 数据库拿到正式的 Gene ID 和基因符号引用时用 Gene ID。5. 从课件到实操把 127 页内容压缩成一套可复用的检索流程课件最后一页大概率是 Taxonomy 数据库和 PubMed 的简介这两个库在实际工作中的用法和前面几个不太一样。Taxonomy 数据库解决的是“这个物种的学名和分类地位是什么”PubMed 解决的是“这个基因有哪些文献报道”。我一般会把它们串成一个固定流程先用 Taxonomy 确认物种的正式学名和 TaxID再用 TaxID 去 nucleotide 库限定检索拿到序列后用序列的 accession 去 PubMed 查相关文献最后用 UniGene 或 dbSTS 做定位验证。这个流程里有一个容易被忽略的细节Taxonomy 数据库的 TaxID 是数字比如水稻的 TaxID 是 4530。在 Entrez 检索式里写Oryza sativa[Organism]和写txid4530[Organism]效果一样但后者更精确不会命中同属的其他物种。如果你做的是跨物种比较用 TaxID 可以避免学名拼写差异带来的漏检。另一个技巧是 PubMed 的检索式构造。课件里只说了 PubMed 是医学文献数据库但没展开怎么用。实际工作中你拿到一个基因名后在 PubMed 里用OsDR8[Title/Abstract] AND Oryza sativa[Title/Abstract]检索比只输基因名精准得多。如果文献太少去掉物种限定改用OsDR8[Title/Abstract]再人工筛选。PubMed 的检索结果可以导出为 CSV用Send to按钮里的Citation manager选项导出的文件里包含 PMID、DOI、摘要方便后续做文献计量。验证方法上我习惯在拿到一批序列后做一次“反向检索”用序列的 accession 去 nucleotide 库查确认返回的记录和原始记录一致再用序列的前 20 个碱基做 BLAST确认没有交叉污染。这一步在课件里没有写但它是区分“查到了”和“查对了”的关键。从那以后我每次做序列检索都强制走一遍 Taxonomy 确认、TaxID 限定、accession 反向验证这三步宁可多花十分钟也不想到写论文时才发现序列拿错了。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑