2. 元数据标准简介:MIAME、MINSEQE、ISA-Tab等
做生物信息这几年,我打交道最多的就是元数据标准。说白了,标准就是大家商量好的一种“填表格式”。你填的格式统一了,别人才能看懂你的数据。
没标准的时候有多痛苦?我记得刚入行那会,接手一个公共数据库的转录组数据。样本信息写在Excel里,有的列名叫“处理”,有的叫“条件”,有的干脆就叫“备注”。我花了整整一个周末去猜那些缩写是什么意思。有意思的是,同一个实验室出来的数据,因为不同人经手,格式都不一样。
2.1 为什么需要元数据标准?
先想一个问题:你拿到一份测序数据,fastq文件完整,比对率也不错。但你想重复这个实验,需要知道用的是哪个试剂盒、什么处理浓度、细胞传代了几次。这些信息在哪?
元数据就是“数据的数据”。没有标准化的元数据,你的数据就是一堆无法复用的数字。我个人习惯把元数据分成三类:
- 技术元数据:测序平台、试剂版本、仪器参数
- 生物元数据:物种、组织、处理条件、时间点
- 样本元数据:样本ID、采集方法、存放条件
这三个层面缺一不可。我在项目中最常遇到的问题,就是技术元数据写得很全,生物元数据却一笔带过。比如“处理组”三个字就打发了,具体用什么药、浓度多少、处理多久,全都没有。
核心原则:元数据要能支撑第三方独立复现你的实验。如果别人只靠你的元数据描述就能做出完全一样的实验设计,那才算合格。
2.2 MIAME:微阵列实验的元数据启蒙
MIAME(Minimum Information About a Microarray Experiment)是2001年提出的。它是最早的“最小信息”标准之一,专为基因表达微阵列实验设计。
MIAME规定了六大必须公开的信息块:
| 信息类别 | 具体内容 | 我的踩坑点 |
|---|---|---|
| 实验设计 | 研究目标、实验变量、比较方案 | 很多人只写“比较A组和B组”,但没说明基线是什么 |
| 样本描述 | 生物材料来源、处理方式、RNA提取方法 | 我曾遇到过一个项目,用了三种不同的RNA提取试剂盒,但元数据里只字未提 |
| 杂交条件 | 标记方式、杂交温度、清洗条件 | 温度和时长往往被省略,其实这两个参数直接影响信号强度 |
| 阵列设计 | 探针序列、阵列布局、对照点 | 对照探针的信息经常漏写,导致后续归一化困难 |
| 图像扫描 | 扫描仪型号、扫描参数、图像格式 | 激光功率和PMT增益不写,图像质量无法判断 |
| 数据处理 | 归一化方法、缺失值处理、统计模型 | 这步最常见的是只写软件名,不写版本号和参数 |
技巧:MIAME虽然是微阵列的标准,但它提出的“最小信息”理念被后续所有元数据标准继承。你完全可以用MIAME的框架来检查自己的测序项目——把“阵列设计”换成“文库构建方案”就行了。
2.3 MINSEQE:从芯片到测序的进化
MINSEQE(Minimum Information about a high-throughput SEQuencing Experiment)是MIAME在测序时代的自然延伸。2008年左右,测序数据开始爆炸式增长,MIAME那一套没法直接套用。为什么?
你想想看,微阵列是闭式系统——探针是固定的,你只测已知序列。而测序是开式系统——你不知道会读到什么。所以MINSEQE额外强调了几个重点:
- 文库构建细节:片段大小、扩增循环数、接头序列
- 测序平台和版本:不是写“Illumina测序”就完了,要具体到HiSeq 2500还是NovaSeq 6000,试剂版本也要写
- 质量控制参数:Q30比例、重复率、比对率
我在2015年左右参与过一个多中心合作的RNA-seq项目。三个中心用的都是Illumina机器,但两家用HiSeq 2000,一家用HiSeq 2500。元数据里只写了“HiSeq”,没人注明是哪个型号。结果数据出来后,批次效应大到根本无法合并,浪费了整整三个月的分析时间。从那以后,我对MINSEQE的“测序平台”字段要求特别严格。
注意:很多期刊和数据库已经把MINSEQE作为数据提交的硬性要求。NCBI的GEO、EBI的ArrayExpress、DDBJ的SAKA,都要求提供符合MINSEQE规范的元数据表。不按要求填,数据审核直接退回。
2.4 ISA-Tab:跨领域元数据框架
ISA-Tab(Investigation-Study-Assay Tab)是MIAME和MINSEQE的“升级版”。它不是针对某一种技术,而是提供了一套通用的元数据组织框架。
ISA-Tab的核心是三层结构:
- Investigation(研究):整个项目的描述,包括摘要、人员、资助信息
- Study(研究单元):一个具体的实验设计,比如“比较药物X和药物的Y效果”
- Assay(测定):每次具体的技术测定,如转录组测序、蛋白质质谱、代谢组LC-MS
你看这个结构,它天然支持多组学整合。我做过一个项目,同时做了RNA-seq、ATAC-seq和CUT&Tag。用ISA-Tab来组织就很清爽——Investigation级别写项目概况,Study级别写三组实验的设计差异,Assay级别写每个样本的具体测序参数。
2.5 实际操作:ISA-Tab的TSV文件怎么写
ISA-Tab用纯文本的TSV文件来存储元数据。说白了就是几个用制表符分隔的表格文件。我个人觉得这是它最实用的地方——不依赖任何特定软件,一个文本编辑器就能搞定。
核心文件有四个:
- i_xxx.txt:Investigation文件,项目级信息
- s_xxx.txt:Study文件,实验设计
- a_xxx.txt:Assay文件,技术参数
- 配置清单文件:记录哪些文件属于同一个项目
来看一个最简单的Assay文件片段。记得写一个真实的质控指标,别用占位符:
Sample Name Platform Instrument Model Read Length Q30 (%) Library Layout
S001 Illumina NovaSeq 6000 150 PE 92.3 PAIRED
S002 Illumina NovaSeq 6000 150 PE 91.8 PAIRED
S003 Illumina HiSeq 2500 125 PE 89.5 PAIRED
你看,三行数据就看出了问题。S003的HiSeq 2500和前面两台NovaSeq 6000的读长和Q30都有差异。如果元数据里只写“Illumina”,这个批次效应你得上线才能发现。
实践建议:写Assay文件时,把“Instrument Model”和“Reagent Version”分开成两个独立列。仪器型号和试剂版本是两个变量,放在一起会丢失信息。我见过一个项目把“HiSeq 2500 v4”写在同一列,后续分析时想按试剂版本分层都做不了。
2.6 三个标准的选择策略
平时总有人问我:做项目到底该用哪个标准?我一般这么建议:
| 项目类型 | 推荐标准 | 理由 |
|---|---|---|
| 单组学微阵列 | MIAME | 最成熟,数据库认可度最高 |
| 单组学测序 | MINSEQE | 测序特异性字段覆盖全面 |
| 多组学整合 | ISA-Tab | 天然支持跨技术关联 |
| 高通量筛选 | ISA-Tab | 批量样本的组织能力强 |
| 实验室内部数据管理 | MINSEQE + 自定义扩展 | 灵活,可根据需求加列 |
我最常用的组合是“ISA-Tab框架 + MINSEQE字段”。把ISA-Tab的三层结构用起来,里面的字段参考MINSEQE来填。这样既保证了结构统一,又不会遗漏测序特异信息。
一个实际教训:我曾经在一个合作项目中,对方坚持“用Excel就行,不用搞那么复杂”。结果半年后数据整理,发现样本ID和测序ID对不上,原因是两个人各自维护了一个Excel,行的顺序不一样。从那以后,我规定所有元数据必须用TSV纯文本,禁止Excel,并且要用哈希做版本校验。
2.7 标准之外:元数据质量检查
标准定好了,数据填完了,就算完事了?当然不是。我每次拿到元数据表,都会跑一个简单的质量检查:
- 完整性:必填字段有没有空值?有没有占位符“待补充”?
- 一致性:同一列的格式是否统一?比如“时间”列,不能“2024-01”和“2024年1月”混着写
- 唯一性:样本ID是否全局唯一?有没有跨实验重复?
- 可解析性:枚举类型的字段,值是否在预定义列表中?
# 一个简单的Shell检查脚本,看列的缺失率
awk -F'\t' 'NR>1 {for(i=1;i<=NF;i++) if($i=="") miss[i]++}
END{for(i in miss) print "列"i"缺失"miss[i]"行"}' assay.tsv
这个脚本虽简陋,但每个月能帮我省下半天的手动检查时间。你想想看,与其在投稿前被拒回来补元数据,不如一开始就做好检查,对吧?
我在第10章会专门讲元数据校验的工具链,包括用Python的pandas做格式检查、用哈希做版本管理、用CI/CD做自动化验证。那些都是实战中磨出来的经验,到时候再细说。