生物信息入门:常用数据库与数据格式解析及避坑指南
简介这份课件面向生物信息学入门学习者、生命科学专业学生及需要快速梳理数据资源的科研人员系统讲解常用生物数据库与数据格式的核心知识。内容围绕NCBI、EBI、DDBJ三大序列数据库Gene Ontology、KEGG、Interpro等基因功能数据库以及UCSC、Ensembl基因组数据库展开并逐一解析FASTA、FASTQ、GenBank、EMBL、GFF等常见格式的结构特点与适用场景帮助读者解决数据来源分散、格式混淆、检索效率低等问题。资源包内含1个pptx文件整体约9.49MB以幻灯片形式呈现便于课堂讲授与自学查阅。课件曾获公开课奖项内容组织清晰从数据库背景到格式实例层层递进并附有GenBank记录结构等具体示例可帮助读者建立完整的数据资源认知框架提升实际检索与格式识别能力。目前已有89人学习关注。1. 一份课件为什么值得当成工程手册来读生物信息入门最反直觉的一点是真正卡住新人的往往不是算法而是「数据到底长什么样」。你拿到一个差异表达基因列表想做个富集分析结果发现基因 ID 是 Ensembl 的注释文件里全是 Entrez 的通路数据库又只认 UniProt 的——三个数据库、三套命名、一个都对不上。这种时候一份把「常用生物数据库和数据格式」讲透的课件价值不亚于一本工具书。这份公开课获奖课件的定位就在这里它不教你写代码但它把 NCBI、Ensembl、UniProt、KEGG、GO 这些高频数据库的定位、检索入口、批量下载方式以及 FASTA、FASTQ、GFF/GTF、BED、VCF、SAM/BAM 这些格式的字段含义和转换关系系统性地串了一遍。适合谁适合刚进实验室要处理测序数据的研究生也适合从其他领域转过来、被各种文件后缀搞晕的开发者。下面我按「先搞清数据库怎么选、再搞清格式怎么转、最后搞清坑在哪」的顺序把这份课件里的核心内容拆成能直接上手的操作。2. 常用生物数据库从检索到批量下载的完整路径2.1 五大核心数据库各自解决什么问题选数据库的第一步不是打开网页而是先问自己「我要的是序列、注释、结构还是通路」。这四类需求对应完全不同的库混用会浪费大量时间。NCBI 是综合性入口GenBank 存核酸序列RefSeq 提供经过审核的参考序列SRA 存原始测序读段。它的优势是覆盖面广缺点是同一基因可能有几十条冗余记录直接拿 GenBank 序列做分析容易踩到「版本不一致」的坑。Ensembl 主打基因组注释它的 GTF 文件是很多 RNA-seq 流程的默认输入基因 ID 以 ENSG 开头转录本以 ENST 开头版本号用点号分隔。UniProt 是蛋白序列和功能注释的权威库分为 Swiss-Prot人工审核和 TrEMBL自动注释两部分做蛋白结构预测时优先用 Swiss-Prot。KEGG 和 GO 是功能富集的两大支柱KEGG 偏通路GO 偏本体论三层结构分子功能、生物过程、细胞组分。提示新手最容易犯的错是拿 RefSeq 的 NM_ 编号去 KEGG 里搜搜不到就以为基因不存在。KEGG 用的是 Entrez Gene ID 或 UniProt ID需要先做 ID 映射。2.2 用命令行批量下载而不是逐个点网页课件里演示了网页检索但实际项目中你不可能手动下载几百个基因。常见做法是用 NCBI 的 E-utilities 或 Ensembl 的 REST API。下面这段 Python 用 requests 调 Ensembl REST 拿一个基因的序列和注释信息适合做小批量测试。import requests # Ensembl REST 基础地址注意版本号写在路径里 server https://rest.ensembl.org # 以某个虚构基因 ID 为例实际使用时替换成你的目标 ID gene_id ENSG00000139618 # 查基因基本信息返回 JSON ext f/lookup/id/{gene_id}?expand1 r requests.get(server ext, headers{Content-Type: application/json}) if not r.ok: r.raise_for_status() gene_info r.json() print(gene_info[display_name], gene_info[seq_region_name], gene_info[start], gene_info[end]) # 拿 cDNA 序列返回纯文本 FASTA ext_seq f/sequence/id/{gene_id}?typecdna r_seq requests.get(server ext_seq, headers{Content-Type: text/x-fasta}) with open(f{gene_id}.cdna.fa, w) as f: f.write(r_seq.text)逻辑说明第一段请求用expand1让返回结果包含转录本列表方便后续遍历。第二段请求的type参数可选genomic、cdna、cds、protein做表达分析通常用 cdna做蛋白分析用 protein。参数上要注意seq_region_name是染色体编号start和end是 1-based 坐标和 BED 格式的 0-based 半开区间不同转换时容易差一位。2.3 数据库版本与坐标系的对应关系课件里有一页专门讲「为什么你的注释文件和参考基因组对不上」。核心原因是不同数据库的版本更新节奏不同。Ensembl 每几个月发一版NCBI 的 RefSeq 更新更频繁而很多论文里用的 GTF 是两三年前的版本。如果你用 GRCh38 的基因组配 GRCh37 的 GTF基因坐标会整体偏移富集结果全是错的。数据库常用版本标识坐标起点区间含义EnsemblRelease 1101-based闭区间NCBI RefSeqGCF_000001405.401-based闭区间UCSChg380-based半开区间GFF3 规范无版本1-based闭区间BED 规范无版本0-based半开区间这张表建议贴在工位上。实际转换时GFF 转 BED 要把 start 减 1BED 转 GFF 要把 start 加 1end 不变。很多转换脚本出错就出在这一步。3. 数据格式解析FASTA、GFF、VCF 的字段与转换3.1 FASTA 与 FASTQ不只是有没有质量值FASTA 和 FASTQ 的区别表面上是 FASTQ 多了质量值但实际处理时差异远不止于此。FASTA 的 header 行以开头后面跟序列 ID 和描述很多工具只取第一个空格前的部分作为 ID。FASTQ 以开头第二行是序列第三行以开头第四行是 ASCII 编码的质量值。# 查看 FASTQ 前 4 条记录确认格式是否正确 head -n 16 sample.fastq # 用 seqkit 统计基本信息比手写脚本快 seqkit stats sample.fastq # FASTA 转 FASTQ 需要补质量值通常用固定值或从其他文件合并 # 这里演示用 awk 给 FASTA 补一个固定质量值仅用于测试 awk /^/{print; getline seq; print seq; print ; gsub(/./,I,seq); print seq} input.fa output.fq逻辑说明seqkit stats会输出序列条数、总长度、平均长度、GC 含量等是快速质检的首选。awk 那段是应急用的gsub(/./,I,seq)把序列里每个字符替换成I对应 Phred 质量值 40实际项目中不要这么干质量值必须来自真实测序结果。参数上注意 FASTQ 的质量编码有 Phred33 和 Phred64 两种老数据可能是后者用seqkit stats看不出来需要用fastqc或seqkit fx2tab检查质量值范围。3.2 GFF/GTF 的九列字段逐列拆解GFF 和 GTF 都是九列制表符分隔前八列含义相同第九列不同。GFF 的第九列是keyvalue键值对GTF 是key value形式。很多工具只认其中一种比如featureCounts默认读 GTFbedtools更习惯 GFF。列号字段名含义常见取值1seqid染色体或 scaffoldchr1, NC_000001.112source注释来源ensembl, havana3type特征类型gene, mRNA, exon, CDS4start起始坐标1-based整数5end终止坐标1-based整数6score置信度分数通常为 .7strand链方向, -, .8phaseCDS 相位0, 1, 29attributes属性列表gene_id xxx;第九列的解析是转换脚本最容易翻车的地方。GTF 里一个基因可能有多个转录本每个转录本有多个外显子属性里用gene_id和transcript_id关联。如果你只按gene_id去重会丢掉转录本层面的信息。3.3 VCF 的 INFO 与 FORMAT 字段怎么读VCF 是变异检测的标准输出前八列是固定字段第九列 INFO 存变异位点的整体信息第十列之后是每个样本的 FORMAT 和基因型。课件里用一张图展示了DP、AF、GT这些标签的含义但实际读文件时经常遇到自定义标签。import pysam # 用 pysam 读 VCF比手动 split 靠谱 vcf pysam.VariantFile(sample.vcf.gz) for record in vcf: # record.info 是字典record.samples 是样本字典 chrom record.chrom pos record.pos ref record.ref alts record.alts # 取第一个样本的基因型 sample list(record.samples.values())[0] gt sample[GT] dp sample.get(DP, NA) print(chrom, pos, ref, alts, gt, dp)逻辑说明pysam.VariantFile能自动处理 bgzip 压缩和 tabix 索引比手动读文本快很多。record.info返回的是类似字典的对象取不存在的键会报错所以用record.info.get(AF, None)更安全。sample[GT]返回的是元组比如(0, 1)表示杂合(1, 1)表示纯合变异。参数上注意 VCF 的 POS 是 1-based和 BED 不同做区间交集时要转换。4. 避坑与排查坐标、ID、版本这三类问题最要命4.1 坐标差一位导致区间全空现象用 bedtools intersect 做两个区间的交集结果为空但肉眼检查明明有重叠。原因一个文件是 GFF1-based另一个是 BED0-based起始坐标差 1。解决统一转成 BED 格式再操作或者用bedtools的-a和-b参数时确认两边坐标系一致。我一般会在流程开头加一步awk BEGIN{OFS\t}{$4$4-1; print}把 GFF 转成 BED 风格。4.2 基因 ID 版本号导致匹配失败现象用 Ensembl ID 去匹配注释文件明明基因存在却匹配不上。原因Ensembl ID 带版本号比如ENSG00000139618.15而注释文件里可能只写ENSG00000139618。解决匹配前统一去掉点号后面的版本号用sed s/\..*//或 Python 的split(.)[0]。注意有些旧版注释文件反而带版本号所以要先检查两边格式。4.3 参考基因组版本不一致现象比对率正常但变异检测结果里大量假阳性。原因测序数据用的是 GRCh37比对时用的参考基因组是 GRCh38坐标整体偏移。解决在流程最开始确认参考基因组版本用samtools view -H看 BAM header 里的SQ行和 GTF 的染色体命名对比。GRCh37 用chr1GRCh38 有些版本用1命名不一致也会导致工具报错。4.4 内存不足导致大文件处理中断现象用 Python 读一个几 GB 的 VCF 或 GTF跑到一半被系统 kill。原因一次性readlines()把整个文件加载进内存。解决改用流式读取for line in open(file)或pysam的迭代器。如果必须随机访问先建索引VCF 用tabixBAM 用samtools index。4.5 属性字段解析时引号丢失现象从 GTF 里提取gene_name结果拿到的是空值或带引号的字符串。原因GTF 的属性格式是gene_name TP53;正则写错就匹配不到。解决用成熟库如gffutils或pyranges不要手写正则。如果非要手写用re.search(rgene_name ([^]), attr)并处理转义。5. 把课件变成可复用的检查清单课件最后一页列了一个「数据交接检查清单」我把它改成了自己常用的版本每次拿到新数据先过一遍。第一步确认文件格式file命令看是不是 gzip 压缩head看前几行判断是 FASTA 还是 FASTQ。第二步确认坐标系GFF 看第四列BED 看第二列VCF 看第二列心里默念「1-based 还是 0-based」。第三步确认 ID 类型是 Ensembl 还是 Entrez带不带版本号和注释文件是否一致。第四步确认参考基因组版本BAM header 里的SQ和 GTF 第一列对比。第五步小样本测试先拿前 1000 条记录跑通流程再上全量数据。这套清单帮我省过很多次「后悔药」。有一次我直接拿全量数据跑富集结果因为 ID 版本号问题白等了两小时后来先跑 100 条测试五分钟就发现了问题。另一个习惯是所有转换脚本都加一行print输出前三条转换后的记录肉眼扫一眼坐标和 ID 对不对比事后 debug 快得多。如果你刚开始接触这些数据库和格式建议不要贪多先把 Ensembl 的 GTF 和 FASTA 玩熟再扩展到 VCF 和 KEGG。课件里的内容足够你搭起一个最小可用的分析框架剩下的就是在真实数据里踩坑、填坑。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

C语言实现迷你DBMS:SQL解析、表管理与文件持久化

C语言实现迷你DBMS:SQL解析、表管理与文件持久化

简介:这份资源是山东科技大学信息科学与工程学院《数据库系统概论》课程设计的实验报告,面向计算机科学与技术专业学生及需要完成数据库课程设计的学习者,核心任务是实现一个简易DBMS,支持CREATE TABLE与ALTER TABLE语句&#xff…

2026/10/18 0:41:26 阅读更多 →
本周精选 G-Star 项目推荐:用 TaoToken 统一 Key 跑通游戏资产生成与 Agent 工作流

本周精选 G-Star 项目推荐:用 TaoToken 统一 Key 跑通游戏资产生成与 Agent 工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:41:26 阅读更多 →
MATLAB模糊控制实战:淋浴水温动态解耦设计

MATLAB模糊控制实战:淋浴水温动态解耦设计

简介:本资源是一份面向自动化控制、智能系统及MATLAB初学者的实践教学材料,聚焦模糊逻辑在实际温控系统中的建模与仿真应用。以淋浴水温调节为典型场景,完整呈现双输入(水温、水流量)—双输出(热水阀、冷水…

2026/10/18 0:40:25 阅读更多 →

最新新闻

汽车ECU BootLoader升级实战:PBL与SBL两级架构及UDS刷写全流程

汽车ECU BootLoader升级实战:PBL与SBL两级架构及UDS刷写全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 1:25:45 阅读更多 →
STM32+华为云IoT+Qt:从传感器到界面的物联网智能家居实战

STM32+华为云IoT+Qt:从传感器到界面的物联网智能家居实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 1:25:45 阅读更多 →
MTK高通展锐版本升级烧录全解析:SP Flash Tool/QFIL/ResearchDownload实战

MTK高通展锐版本升级烧录全解析:SP Flash Tool/QFIL/ResearchDownload实战

简介:面向手机方案公司、嵌入式开发与维修技术人员,这份资源汇整了联发科、高通、展锐三大芯片平台的版本升级与固件烧录工具链,涵盖各平台官方线刷工具的核心组件、配置范例与工程化目录结构。资源包共1031个文件,压缩后约181.59…

2026/10/18 1:25:45 阅读更多 →
端到端WebRTC智能摄像头链路:NeuroCast架构解析与落地实践

端到端WebRTC智能摄像头链路:NeuroCast架构解析与落地实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 1:25:45 阅读更多 →
储能锂离子电池组热管理结构设计:从风冷到液冷的温差控制实践

储能锂离子电池组热管理结构设计:从风冷到液冷的温差控制实践

简介:这份PDF文档围绕储能用锂离子电池组的热管理结构设计展开,面向电池热管理、储能系统及仿真分析相关工程师与研究人员,针对电池密集排列下散热不均、温差过大带来的寿命与安全隐患,给出了风冷式热管理设计思路。作者以磷酸铁锂…

2026/10/18 1:25:45 阅读更多 →
终端AI助手自定义状态栏配置指南:实时显示模型、上下文与子任务状态

终端AI助手自定义状态栏配置指南:实时显示模型、上下文与子任务状态

1. 为什么我要折腾一个自定义状态栏用终端里的 AI 编程助手写代码,最让人抓狂的不是模型答得不好,而是你根本不知道它现在在干什么。尤其是当它启动了一个子任务去跑测试、去读一堆文件、去调用外部命令的时候,主界面往往只给你一个转圈的动画…

2026/10/18 1:24:45 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →