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级别写每个样本的具体测序参数。

元数据标准演进路径 MIAME (1999-2001) 微阵列实验最小信息 MINSEQE (2008) 测序实验最小信息 ISA-Tab 框架 (2010s) 跨平台、跨技术元数据统一描述 继承MIAME/MINSEQE的最小信息原则,扩展为通用框架 Investigation 项目整体描述 Study 实验设计单元 Assay 技术测定详情 ISA-Tab 的优势 ● 支持多组学数据(转录组+蛋白组+代谢组)整合描述 ● 兼容 MIAME/MINSEQE 字段,已有标准可直接映射

2.5 实际操作:ISA-Tab的TSV文件怎么写

ISA-Tab用纯文本的TSV文件来存储元数据。说白了就是几个用制表符分隔的表格文件。我个人觉得这是它最实用的地方——不依赖任何特定软件,一个文本编辑器就能搞定。

核心文件有四个:

  1. i_xxx.txt:Investigation文件,项目级信息
  2. s_xxx.txt:Study文件,实验设计
  3. a_xxx.txt:Assay文件,技术参数
  4. 配置清单文件:记录哪些文件属于同一个项目

来看一个最简单的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做自动化验证。那些都是实战中磨出来的经验,到时候再细说。