ARCHS4 表达矩阵 — 百万样本压进一个 H5 文件

人鼠各约百万样本 / kallisto 统一重跑 / 基因与转录本双层

来源 https://archs4.org/发布时间: 2026-10-29最后更新: 2026-10-29 阅读 10
ARCHS4 表达矩阵 — 百万样本压进一个 H5 文件

信息速览

数据集名称ARCHS4 表达矩阵 — 百万样本压进一个 H5 文件
数据类型元数据,原始数据链接,多组学
规模不适用(以测序样本计数:人类与小鼠合计逾二百三十万)
接入方式https://archs4.org/
AI 就绪度

ARCHS4 是「All RNA-seq and ChIP-seq sample and signature Search」的缩写,由西奈山伊坎医学院 Ma’ayan 实验室维护,2018 年发表于《Nature Communications》。它做的事情一句话就能说完:把 GEO 与 SRA 里人类和小鼠能拿到 FASTQ 的 RNA-seq 实验全部下载下来,用同一套 kallisto 流程重算一遍,再把结果压成几个可以整块下载、也可以按行列切片读取的 HDF5 矩阵。论文发表时是十八万余个样本,今天的基因矩阵已经是人类逾一百零九万、小鼠逾一百二十二万。

它与一般的数据库不同。它不重新组织数据,也不补充注释,只是把散落在成千上万个互不相关的实验里、彼此口径不一的表达量,换算成同一把尺子的读数。因此它最大的价值不在「有多少样本」,而在「这些样本可以放在同一张表里做矩阵运算」,同一批数据在 GEO 上是几万个压缩包,在这里是几个文件。

与之配套的是一套检索层:三维样本空间用于快速看样本聚集、签名相似性检索用于把一份基因列表反查成最相近的实验、基因页给出一个基因在各组织与细胞系里的平均表达与共表达伙伴。下面先给一屏速览,再逐层拆开。一屏速览见下表。

维度 内容
全称 All RNA-seq and ChIP-seq sample and signature Search
维护方 西奈山伊坎医学院 Ma’ayan 实验室
首发年份 2018 年,《Nature Communications》第 9 卷 1366 号
上游来源 NCBI GEO 与 SRA,全球研究者自行上传的公共实验
定量工具 kallisto,容器化后在云端并行运行
参考注释 Ensembl 107;人类 GRCh38、小鼠 GRCm38(官网正文另写 GRCm39)
物种范围 人类与小鼠为主,另有约三万五千个秀丽隐杆线虫、果蝇等物种样本
当前样本量 人类基因矩阵逾一百零九万,小鼠逾一百二十二万(下载页口径)
输出层级 基因计数、转录本计数、转录本 TPM 三层,另有阵列数据
文件格式 HDF5 单一文件,内含表达矩阵与样本元数据两组节点
单体体量 基因矩阵数十 GB 量级,转录本与 TPM 矩阵可达数百 GB
下载方式 官网下载页直链,或 archs4py / archs4r 自动下载
检索工具 网页三维样本空间、签名检索、基因页;另有 Chrome 扩展
使用限制 元数据为上传者原样,单细胞样本混入,无 ChIP-seq
许可 数据可自由下载;官方未标注统一许可,以原始 GEO 条目许可为界

§1 它要解决的具体麻烦

1.1 同一个基因,在不同的文章里有十个不同的数字

公共转录组数据的问题从来不是数量不够。GEO 上累积的 RNA-seq 实验早已超过十万量级,SRA 里躺着的读段更多。问题是这些实验由不同实验室在不同年代、用不同测序仪、不同建库试剂盒、不同比对工具、不同注释版本做出来,同一个基因在 A 文章里叫一个数,在 B 文章里叫另一个数,甚至单位都不是一回事:有的给 RPKM,有的给 FPKM,有的给 TPM,有的只给归一化后的芯片强度。

这种情况下,想做一个跨实验的比较,常规做法是挑几十个看起来最相关的系列,逐个下载、逐个重跑、逐个对齐注释版本,然后才能开始分析。这个前置工程的成本常常超过分析本身。更麻烦的是,重跑一次是几十小时的计算,跑完了发现某个系列质量不行,又得从头来。

ARCHS4 的切入点就在这里。它不解决「数据质量参差」的问题,它解决的是「重复劳动」的问题:在你想比较之前,已经有人把能拿到的东西全部用同一套流程跑完了,你只需要下载,或者干脆在线切片取。代价是所有样本都被强行放进一个平均口径里,原始实验的精细设计信息在这一步被抹平。

1.2 三条常见的错误期待

常见期待 实际情况
以为它是一个经过人工整理、标注干净的数据库 它不做人工整理,元数据是把 GEO 字段原样搬过来,缺什么就是缺什么
以为名称里有 ChIP-seq 就附带表观遗传数据 只处理 RNA-seq,ChIP-seq 从未出现在产出里
以为样本越多,能做越细的条件比较 样本来自互不相关的实验,除同一系列内部外,条件对照几乎无法成立

1.3 它能给到的与给不到的

你的需求 它给的 够不够
一张能整块载入的基因表达表 单个 HDF5 文件,行列可按需切片 够,这是它的主场
某个基因在人体各组织的平均表达 基因页给出组织与细胞系的聚合结果 够看趋势,不够做定量结论
一份基因列表最像哪些实验 签名相似性检索,返回排序后的样本 够做探索,不代替严格统计
同一系列内部的组间差异 同一 GSE 的样本在矩阵里连续存在 够,但要用系列内子矩阵
剪接异构体、外显子、覆盖度 只给转录本级计数与 TPM,没有剪接事件与覆盖层 不够,需换 recount3 或原始数据处理
可追溯的处理日志与项目元数据 只给版本号与流程说明,不给逐样本日志 不够
完整的临床或表型字段 无 不够
原始 FASTQ 不给,需回 SRA 取 不够

1.4 你的处境与它能帮到的事

你的处境 它能帮你什么 下一步该做什么
要训练一个表达谱基础模型,缺大规模语料 直接给出一张百万列级别的基因矩阵,列即样本 下载基因矩阵,按单细胞概率字段过滤,做分块读取
手上有一份几十个基因的列表,想知道它在哪些组织或疾病里共同上调 签名检索按共表达相似度返回最贴近的样本 用返回的 GSE 编号回 GEO 查实验设计,确认生物学解释
想给自己的新样本找一个参照背景 把新样本用同一 kallisto 索引跑一遍,即可放进同一坐标系 使用 archs4py 的对齐模块,保持索引版本一致
写综述需要一份公共表达数据的总览 三维样本空间与元数据检索可以快速定位大类 引用时写清版本号与下载日期
要做某个癌种的预后模型 矩阵不含临床终点,无法直接建模 转向 TCGA 或 CPTAC 一类带随访的资源
要研究可变剪接 只有转录本级汇总,没有剪接定量 转向 recount3 的剪接位点文件或自行定量

1.5 一句话判断

如果你要的是一张能立刻放进 numpy 或 pandas 里算的、覆盖极广的公共表达表,ARCHS4 是目前最省事的选择之一;如果你要的是能追溯每个数字怎么来的数据,它的诚实程度只到「版本号 + 流程说明」这一层。

1.6 不适合谁:四条边界

第一,不适合把公共数据当作受控实验的人。矩阵里每个样本的 RNA 提取、文库制备、测序深度都由上传者自行决定,这些差异在纳入矩阵时没有做任何校正。任何跨实验的组间比较,都会把批次效应当成生物学信号。

第二,不适合需要临床终点的人。ARCHS4 不携带生存期、分期、疗效一类的随访字段。元数据里能拿到的只是 GEO 上传者填写的样本特征,绝大多数实验根本没有随访。

第三,不适合需要原始读段做新分析的人。它只给汇总后的计数,不给 BAM、不给 FASTA、不给 FASTQ。想换比对工具或做新剪接分析,必须回 SRA 从头取数。

第四,不适合需要审计级溯源的人。想回答「这个样本的计数是用哪个版本的索引、哪一次发布算出来的」,只能靠矩阵文件名里的版本号,逐样本级别的处理记录是不公开的。

§2 数据构成与规格

2.1 四类产物:三层表达加一类阵列

ARCHS4 的下载页把产物分成若干组,组与组之间的定位差别很大,混在一起谈容易出错。

第一组是基因计数矩阵,按基因符号(Entrez Gene Symbol)存放,是使用最广的一层。官方说明里明确,为了压缩,kallisto 的伪计数被四舍五入成整数。这一层的行数是基因符号数,列数是样本数,文件在数十 GB 量级。

第二组是转录本计数矩阵,按 Ensembl 转录本标识存放,同样是四舍五入后的整数。行数比基因层多一个数量级左右,文件体量也随之放大数倍,人类一侧达到一百八十 GB 以上。

第三组是转录本 TPM 矩阵,同样是转录本级,但存放的是每百万转录本数,有效长度取 kallisto 的估计值。TPM 是浮点数,压缩效率低,因此人类一侧的 TPM 矩阵达到三百六十 GB 以上,是全部产物里最大的单个文件。

第四组是Affymetrix 阵列数据,与前三层性质完全不同。它收录的是芯片平台(GPL570、GPL96、GPL571、GPL6244 等)上已有的表达值,原样取自 GEO,为了压缩存成十六位浮点。官方称这一集合含二十六万余人类样本与八万余小鼠样本。它不是 kallisto 的产物,不能与 RNA-seq 矩阵直接混合运算。

此外还有一些派生件:样本与基因的三维坐标(t-SNE 结果)、基因间两两相关矩阵(pickle 与 feather 两种格式)、由相关矩阵做功能预测的 PrismExp 输出、以及两套 kallisto 索引文件本身。

2.2 字段与节点的完整字典

HDF5 文件的结构是「组 + 数据集」的两级组织。下表汇总了官方客户端文档中出现的路径与用途。

路径 / 字段 类型 含义 可否用于筛选
data/expression 二维数值矩阵 表达矩阵主体,行基因、列样本 否,这是载荷
meta/genes/genes 字符串数组 与矩阵行对齐的基因符号 否
meta/genes/ensembl_gene_id 字符串数组 与行对齐的 Ensembl 基因号 否
meta/samples/geo_accession 字符串数组 与列对齐的 GSM 号 是,主键
meta/samples/series_id 字符串数组 所属 GSE 号 是,分组首选
meta/samples/title 字符串数组 样本标题 是,文本检索
meta/samples/source_name_ch1 字符串数组 样本来源名称 是,常含组织名
meta/samples/characteristics_ch1 字符串数组 上传者自填特征 是,最常用的条件字段
meta/samples/extract_protocol_ch1 字符串数组 提取与建库协议 是,可用于识别平台
meta/samples/library_strategy 字符串数组 建库策略 是
meta/samples/instrument_model 字符串数组 测序仪型号 是
meta/samples/singlecellprobability 浮点数组 单细胞概率(零到一) 是,最常用过滤条件
meta/transcripts/transcripts 字符串数组 转录本层行名 否

这张表里真正每天都用得到的只有三列:geo_accession、series_id、singlecellprobability。前者用于精确取样本,中者用于保证组内一致性,后者用于把单细胞样本从批量数据里剔出去。

2.3 一条记录的完整解剖

取一个样本,它在文件里的样子如下。左侧是元数据节点的同下标元素,右侧是表达矩阵的同一列。

#-- 假设该样本在矩阵中的列下标为 i,它的样子由三部分拼成
meta/samples/geo_accession[i]        -> "GSM2679484"
meta/samples/series_id[i]            -> "GSE100000"
meta/samples/title[i]                -> "liver, wild type, rep1"
meta/samples/source_name_ch1[i]      -> "mouse liver"
meta/samples/characteristics_ch1[i]  -> "genotype: wild type; tissue: liver"
meta/samples/instrument_model[i]     -> "Illumina HiSeq 2500"
meta/samples/singlecellprobability[i]-> 0.03

data/expression[0:3, i]              -> [  1420,   89,  0 ]   #-- 前三个基因的计数
meta/genes/genes[0:3]                -> ["A1BG", "A1CF", "A2M"]

整条记录并不是一个对象,而是分散在十来个并列数组里的同下标元素。这种「列式存储」的设计正是 HDF5 适合这种数据的原因:读一列只碰一列的数据块,不会把整个文件读进内存。代价是任何一次查询都要在几组数组之间做下标对齐,手工做很容易错位,这也是官方要提供封装库的原因。

2.4 四条产物线的规模对照

为了把「体量」这件事说清楚,把下载页上各产物的样本数与文件大小并列如下。数字都在同一次浏览中读取,彼此可比。

产物 物种 样本数 文件体量 数据日期
基因计数 人类 一百零九万八千七百七十一 58 GB 2026-07-05
基因计数 小鼠 一百二十二万五千零四十四 47 GB 2026-07-05
转录本计数 人类 一百一十一万五千四百一十一 182 GB 2026-09-03
转录本计数 小鼠 一百二十二万七千三百二十三 109 GB 2026-09-03
转录本 TPM 人类 一百零九万四千零五十三 368 GB 2026-05-14
转录本 TPM 小鼠 一百一十九万零三百一十五 208 GB 2026-05-12
Affymetrix 阵列 人鼠合计 约三十四万八千 二十余 GB 2021-05
基因相关矩阵 人类 基因两两 6.8 GB 2024-06
kallisto 索引 人类 不适用 3.2 GB 2023-04

从这张表能读出一件容易被忽略的事:同一物种的四条产物线,样本数并不相同,而且不同步更新。人类的基因矩阵与 TPM 矩阵相差约四千样本,小鼠的基因矩阵与转录本矩阵相差两千余样本。这不是错误,而是分批重跑的结果,但意味着跨层合并时要按下标或按 GSM 号做交集,不能想当然认为第 i 列在三层里是同一个样本。

2.5 与同类资源的字段差异

同样是「公共表达数据统一重处理」,不同资源的字段侧重差别很大。

维度 ARCHS4 recount3 Expression Atlas
组织单元 样本(列),按 GEO 号对齐 项目与 run,带完整元数据表 策展后的实验
表达层级 基因、转录本、TPM 三层 基因、外显子、剪接位点、覆盖层 基因级汇总
元数据来源 GEO 字段原样搬运 从 SRA 与 GEO 重建,字段更完整 人工按 SDRF 策展
是否人工筛选 不筛,能跑就跑 不筛,但会标注失败原因 强筛,只收合格实验
交付形态 单一大文件整体下载 分项目分块,R 包按需取 网页与 FTP,按实验切分
研究设计信息 基本丢失 保留在元数据表中 完整保留且结构化

2.6 文件里那些不在文档里的坑

除了官方文档写明的结构,还有几件事必须在使用前知道。

其一,基因符号有重复行。这不是数据错误,而是 Ensembl 注释本身会造成多个基因条目共用一个符号。官方客户端因此专门提供一个合并重复基因的函数,默认不合并时,任何按基因做的聚合都会重复计数。

其二,伪计数被四舍五入成整数,意味着低表达基因的分数部分被系统性丢掉。做需要连续值的模型时,这一点与使用原始 kallisto 输出会有可见差异。

其三,TPM 矩阵的行是转录本,但 TPM 是按转录本算的,若要回到基因级,官方并不提供现成的基因级 TPM 文件,需要自行按基因汇总,而这一步会因有效长度的加权方式不同而产生分歧。

其四,相关矩阵是成对皮尔逊相关,内存占用与基因数的平方成正比,即使只取一个子矩阵,也要先知道行的排列方式。

§3 它的身份:谁的矩阵,对谁负责

3.1 三个名称,一个东西

ARCHS4 有三个层面的名字,用法各不相同。全称是「All RNA-seq and ChIP-seq sample and signature Search」,这是 2018 年立项时的表述,其中「ChIP-seq」一项从未落实为数据;简称 ARCHS4 是所有人日常用的;在代码里它是 archs4,在 R 与 Python 的官方包里是 archs4r 与 archs4py。

名称里的「signature Search」是它真正的差异化部分,也是它长期被误读成「只是个矩阵下载站」的原因。样本矩阵和签名检索是两件事:前者是素材,后者是对素材的解释层。多数使用者只用前者,这也是为什么讨论 ARCHS4 时往往只谈样本量与文件大小,很少谈它究竟怎么判断两个实验相似。

3.2 维护方与利益结构

维护方是西奈山伊坎医学院的 Ma’ayan 实验室,这是一个以生物信息学工具与知识图谱见长的课题组,历史上产出了大量面向公共数据的整合工具。这条线索决定了 ARCHS4 的气质:它更像一个工程产物而不是一个策展数据库,关注的是吞吐、成本与可编程访问,不是注释的精细度。

论文里有一组数字很能说明这种取向:按当时估算,重跑同样一批数据的总成本,ARCHS4 是一千七百余美元,同期的 Toil 是两万五千余美元,recount 是四万四千余美元。单样本成本约一美分。这种量级的成本差直接决定了它可以「全收而不挑」,也解释了为什么它不做人工策展——人工策展的成本与计算成本不在一个数量级上。

3.3 对谁负责:三种责任边界

责任对象 它承担的部分 它不承担的部分
上游上传者 保证读段被如实下载与比对,不改动原始 FASTQ 不核验上传者填写的元数据是否准确
下游使用者 保证同一版本内所有样本用同一索引、同一流程 不保证跨版本可比,也不保证跨层样本一一对应
学术共同体 提供可引用的论文、版本号与开源客户端 不提供逐样本处理日志与失败样本清单

把这三条摆在一起看,能提炼出一条使用准则:把 ARCHS4 当作「一个可版本化的批量转换器」,不要当作「一个可信度分层的数据库」。它不给你每一条记录的置信度,它只给你一个统一的坐标系。

3.4 坐标系的三根轴

ARCHS4 建立的坐标系有三根轴:基因轴、样本轴、时间轴。

基因轴由 Ensembl 注释版本定义。当前版本用注释 107,人类参考的 cDNA 是 GRCh38 版本,小鼠是 GRCm38 版本。注释版本一旦更换,行的顺序与数量都会变,跨版本合并必须先按基因符号取交集。

样本轴由 GEO 样本号定义。同一份生物材料在不同实验里可能被上传成多个样本,ARCHS4 不会去重,因此「样本数」衡量的是档案条目数,不是独立个体数。这一点在任何涉及「多少个人、多少只鼠」的表述里都必须点明。

时间轴由发布版本定义。数据是滚动更新的,每次发布都会把新进入 GEO 的实验补进来,也会把重跑成功的旧样本更新。因此同一个 GSM 号在不同版本里的计数值可能不同,差异来自比对与注释而不是生物学。

§4 它的手艺:统一重跑如何做到又便宜又能用

4.1 为什么选 kallisto 而不是 STAR

转录组定量的主流路线有两条:以 STAR 为代表的比对式流程,和以 kallisto、Salmon 为代表的伪比对流程。前者把读段逐碱基比对回参考基因组,能给出剪接连接与覆盖度;后者把读段拆成 k-mer,直接对转录本集合做兼容性匹配,速度与内存占用都低一个到两个数量级。

ARCHS4 选了后者,理由在论文里有明确交代:kallisto 的内存需求约四 GB,STAR 约三十 GB。这个差别在单机上无关紧要,在成千上万个容器并行的云端就是成本的分水岭。论文报告单份 FASTQ 平均处理约十一分钟,这样的速度才能支撑百万量级的重跑。

论文同时给出了代价:在一千七百余个人类样本的对照实验里,kallisto 检出的基因数反而多于 STAR,两者 z 分数化后的平均皮尔逊相关为零点七七,而用两者各自的结果去预测基因本体生物学过程,平均 AUC 都是零点六九。换句话说,在「做下游功能预测」这个目标上,伪比对的精度损失几乎不可见。这是它敢用伪比对替代比对式的实证依据。

4.2 云端流水线的骨架

流程本身不复杂,复杂的是调度。整体是:抓取 GEO 中带 SRA 关联的系列,按样本解析出 FASTQ 下载地址,把每个样本打包成一个任务,在容器里跑 kallisto,把输出回收,汇总进矩阵。

几个工程细节值得记住。容器镜像固定了 kallisto 版本、索引与后处理脚本,保证同样的输入得到同样的输出。索引按物种预建,人类与小鼠各一份,随注释版本升级而重建。任务级别有重试,部分样本因为网络或文件损坏会失败,失败的样本直接缺席而不是占位。最后一步是把所有单样本输出拼成矩阵,这一步是纯 I/O,也是发布耗时的主要来源。

4.3 案例:从 GSE100000 到一张子矩阵

用一个具体的系列走一遍,能看清「矩阵检索」与「元数据检索」是怎么配合的。假设研究者关心某个小鼠肝脏处理实验,已经知道系列号是 GSE100000,要取出全部样本的基因计数做组内比较。

第一步是确认这个系列是否在矩阵里。ARCHS4 的收录粒度是样本,一个系列只要有一个样本入库,系列号就会出现。查询按 series_id 做字符串匹配,得到列下标列表。

第二步是检查这些样本的质量红旗。单细胞概率是一个,测序仪型号是一个,提取协议文本里是否含「单细胞」「液滴」之类的词是另一个。这三步里任何一步发现异常,都应把对应样本剔掉而不是硬算。

第三步才是取数。取数的结果是一张小矩阵,行是全部基因,列是几十个样本。此时矩阵里保留的仍是以同一索引算出的原始计数值,后续的过滤、归一化与统计,全部在这一小块上做。

这个案例说明了一件事:ARCHS4 的正确用法不是「先下全量再筛」,而是「先在矩阵里定位列,再取小块」。前者要几百 GB 的磁盘与内存,后者只要几十兆。§4.3 的案例在后面的检索路径与使用指引里会被反复用到。

#-- 用官方 Python 包按系列号取出一个小矩阵
import archs4py as a4

file = a4.download.counts("mouse", version="latest")
meta = a4.meta.series(file, "GSE100000",
                      meta_fields=["geo_accession", "title", "instrument_model"])
print(len(meta), "个样本")
#-- 取全部样本的基因计数,得到 行=基因、列=样本 的 DataFrame
mat = a4.data.series(file, "GSE100000")
print(mat.shape)

4.4 签名检索:它真正的差异化

样本矩阵谁都可以做,签名检索是它的独特之处。逻辑很简单:把一份基因列表编码成向量,在样本空间中计算它与每个样本表达谱的相似度,返回排序结果。

方法上有两处必须交代。其一是降维。直接在一万多个基因的维度上做相似度计算,计算与存储都不划算,论文用 Johnson-Lindenstrauss 变换把维度压到一千,论文报告压缩后原始相关系数仍能保持在零点九九左右。其二是相似度的解释。检索返回的是「表达谱最相近的样本」,这是一种统计相似,与「生物学上同义」不是一回事。

因此签名检索的正确用法是生成假设,不是验证假设。检索到一个高分样本,还要回到原始实验看它到底做了什么处理,才能判断相似性的来源。

4.5 基因页与共表达

基因页是检索层的另一个入口。给定一个基因符号,页面会给出三样东西:该基因在各组织与细胞系里的表达分布、排在最前面的共表达基因、以及基于先验知识加共表达推断出的功能与相互作用。

论文报告的功能预测在小鼠一侧 GO 生物学过程的中位 AUC 为零点七四五,KEGG 通路中位 AUC 为零点七九七;蛋白互作预测的 AUC 在 hu.MAP 上为零点八五,BioGRID 上为零点六六,BioPlex 上为零点六四。这些数字说明它给出的功能提示是有信息量的,但远不是定论。

组织与细胞系的覆盖,论文时期是五十余种组织与六十余种细胞系。官方帮助页对这种聚合有一个值得注意的说明:同一组织的样本来自许多不同实验室,样本制备条件不一致,组织亚型可能混在一起,因此它反映的是样本群内部的真实变异,而不是像 GTEx 那样在统一协议下的参考表达。这既是优点也是缺点:优点是不会把噪声抹平,缺点是这个分布不能当作「正常生理值」来用。

§5 取数:从网页点击到代码切片

5.1 四条取数路径的取舍

路径 适合的人 代价 边界
网页下载直链 有磁盘与带宽的人 数十到数百 GB 下载 只能整文件下,不能先挑样本
网页动态取子集 只想看几十个样本的人 需等后台切片,耗时不定 每次取数有限额,不适合批量
archs4py 用 Python 做分析的人 第一次要下全量文件 内存要够,宽查询容易撑爆
archs4r 用 R 做分析的人 同上 功能略少于 Python 包

四条路径背后是同一批文件,区别只在「先在服务器上切」还是「先下到本地再切」。前者省磁盘但慢且受限额,后者慢一次但之后都快。

5.2 纯 HTTP 直取

如果想验证某个文件是否可访问、或者只想读一个很小的区间,可以直接用 HTTP 区间请求配 h5py 的驱动。HDF5 本身不支持区间随机读,但 h5py 的 fileobj 驱动可以在一个支持 seek 的文件对象上工作,fsspec 的 HTTP 实现就满足这个条件。

#-- 不下全量文件,直接用 HTTP 读 H5 的一个小区间
import fsspec, h5py

url = "https://s3.k8s.maayanlab.cloud/archs4/files/human_gene_v2.latest.h5"
f = fsspec.open(url, "rb").open()
h5 = h5py.File(f, "r", driver="fileobj", backing_store=False)

#-- 先看单细胞概率,拿到前 200 个样本的下标
scp = h5["meta/samples/singlecellprobability"][0:200]
keep = [i for i, v in enumerate(scp) if v < 0.5]

#-- 再只取这些列的前 50 个基因
sub = h5["data/expression"][0:50, keep]
print(sub.shape)

这种写法适合交互式探索,不适合批量生产:每个切片都是一次网络往返,列的跨度大时会退化成大量请求。

5.3 本地切片:按基因取

下载到本地之后,最常见的动作有两个:按基因取一列,和按样本取一行。按基因取时,因为基因在行,操作是「取一段行、全部列或部分列」。

#-- 本地取出某几个基因在全部人类样本中的表达
import h5py

with h5py.File("human_gene_v2.latest.h5", "r") as h5:
    genes = h5["meta/genes/genes"][:]
    idx = [i for i, g in enumerate(genes) if g in {"TP53", "MYC", "EGFR"}]
    rows = h5["data/expression"][idx, :]
print(rows.shape, "行=基因,列=样本")

5.4 先筛元数据再取数

批量场景下,正确的顺序是先读元数据,在内存里算出列下标,再一次性取表达。这样可以把一次网络或磁盘访问的粒度做大。

#-- 先筛元数据,再取数,避免把百万列全读进内存
import h5py, numpy as np

with h5py.File("human_gene_v2.latest.h5", "r") as h5:
    src = h5["meta/samples/source_name_ch1"][:]
    scp = h5["meta/samples/singlecellprobability"][:]
    keep = [i for i, s in enumerate(src)
            if s is not None and b"liver" in s.lower() and scp[i] < 0.5]
    print(len(keep), "个肝脏 Bulk 样本")
    sub = h5["data/expression"][:, keep]
    genes = h5["meta/genes/genes"][:]
np.save("liver_genes.npy", genes)
np.save("liver_expr.npy", sub)

这段代码里有一个不显眼但重要的选择:singlecellprobability 小于零点五才留。阈值是可以调的,官方文档给的就是这个默认值。留得太宽会把单细胞数据混进来,这些样本的基因检出模式与批量数据差别很大,会污染共表达结构。

5.5 用 R 走的路径

R 用户有两条路:用官方 archs4r 包,或者用 rhdf5 手工读。官方帮助页给出的自动生成脚本就是后者,它在本地下载整个文件后用路径取数。手工写时注意一点:h5read 的索引顺序与 Python 相反,矩阵读出后需要转置。

#-- 用 rhdf5 读取指定样本的基因计数
library(rhdf5)
file <- "human_gene_v2.latest.h5"
samples <- h5read(file, "meta/samples/geo_accession")
genes   <- h5read(file, "meta/genes/genes")
want    <- c("GSM1158284", "GSM1482938")
cols    <- which(samples %in% want)
expr    <- t(h5read(file, "data/expression", index = list(cols, seq_along(genes))))
H5close()
rownames(expr) <- genes

5.6 跨层对齐与版本固定

当需要同时用基因层与转录本层时,必须显式对齐。两层样本数不同,且不同步更新,正确做法是按 geo_accession 做交集,而不是按下标。

#-- 取两层共有的样本,而不是假设第 i 列相同
import h5py, numpy as np

with h5py.File("human_gene_v2.latest.h5", "r") as g, \
     h5py.File("human_transcript_v2.latest.h5", "r") as t:
    g_id = g["meta/samples/geo_accession"][:]
    t_id = t["meta/samples/geo_accession"][:]
    common = sorted(set(g_id) & set(t_id))
    print("交集样本数:", len(common))

还有一条容易被忽略的实践:把版本号写死在脚本里,不要用 latest。latest 指向的软链接会在每次发布后变化,同一份脚本隔一个月跑出来的结果可能不同,而这在复现性上是不能接受的。正确的做法是先查一次版本,把具体文件名与哈希写进脚本。

§6 与库内条目的关系

6.1 关系图谱

ARCHS4 在库内的位置,可以用「原料仓、加工厂、成品柜」三层来理解。SRA 与 GEO 是原料仓,ARCHS4 与 recount3 是两座加工路线不同的厂,GTEx、TCGA、Expression Atlas 是专柜。

库内相关词条 与本词条的关系 一句话区隔
recount3 最近的同侪,同一批原料的另一条产线 recount3 做多粒度量化加完整元数据表,ARCHS4 做基因级整合矩阵加签名检索
Expression Atlas 同为统一重处理,选样逻辑相反 Atlas 人工策展少数高质量实验,ARCHS4 不筛几乎全收
GTEx 上游来源之一,也是参照系 GTEx 是统一协议下的组织参考,ARCHS4 把 GTEx 样本拉进平均口径以换取与其他实验的可比性
TCGA 上游来源之一,也以平行矩阵形式附赠 TCGA 携带临床终点,ARCHS4 的 TCGA 矩阵来自 recount2,不含任何临床字段
NCBI SRA 最大上游来源 SRA 存读段,ARCHS4 存读数
ENCODE 名称里提过 ChIP-seq,实际无交集 ENCODE 有表观遗传与功能实验,ARCHS4 只做 RNA-seq
单细胞表达图谱类条目 部分样本重叠 单细胞图谱按实验组织、带细胞级注释,ARCHS4 只有带单细胞概率的样本级汇总

这两条产线的差别不是「新旧」,而是「用途」。recount3 的设计目标是把公共 RNA-seq 重跑到「每个数字都能追溯到具体 run 与具体注释」,因此交付的是分项目、分粒度的文件与一张完整的元数据表。ARCHS4 的设计目标是把公共 RNA-seq 重跑到「所有数字能放进同一个矩阵」,因此交付的是几个巨大文件与一套检索界面。用一句话概括:recount3 面向「我要知道这个数怎么来的」,ARCHS4 面向「我要一个足够大的矩阵」。

6.2 检索路径

你的问题 该去哪个词条或入口 理由
想要一张能直接训练的基因表达大表 本词条 这是它为唯一目标设计出来的产物
想知道某个 GSE 有没有被处理过 本词条,按系列号检索 收录粒度是样本,系列号可直接匹配
想要某个 run 的完整元数据 recount3 词条 recount3 从 SRA 重建元数据,字段更全
想研究可变剪接 recount3 词条 那边有剪接位点与外显子层
想要正常组织的参考表达 GTEx 词条 统一协议下的参考值,ARCHS4 的组织分布不能当参考用
想做肿瘤预后 TCGA 词条 ARCHS4 无随访字段
想要 ChIP-seq 峰 ENCODE / Roadmap Epigenomics ARCHS4 无表观遗传数据
想要原始 FASTQ 自己做流程 SRA 词条 ARCHS4 不供读段

6.3 与 recount3 的逐项区隔

本批同期发布的 recount3 与 ARCHS4 高度相似,二者都用公共 SRA 读段、都主张「统一流程」,因此必须把差别逐项写清。

对比项 ARCHS4 recount3 对使用者的实际影响
一句话定位 基因水平的整合矩阵加同表达签名检索 多粒度原始量化加完整元数据 前者是成品表,后者是原料加原料清单
定量工具 kallisto,伪比对 STAR,全基因组比对 ARCHS4 快而省,recount3 能拿剪接信息
参考注释 Ensembl 107,cDNA 集合 GENCODE,基因组加注释 ARCHS4 改注释要整体重建矩阵,recount3 可换注释重算
输出粒度 基因计数、转录本计数、转录本 TPM 基因、外显子、剪接位点、碱基覆盖 ARCHS4 只有汇总值,没有位置信息
元数据 GEO 字段原样搬运,随矩阵存放 从 SRA 与 GEO 重建的完整表,按项目组织 想按条件筛,ARCHS4 需要自己解析文本字段
组织单元 样本(GSM)为列,整文件一次交付 项目与研究为单位,可按需取 ARCHS4 适合整体载入,recount3 适合按项目拉取
检索界面 三维样本空间、签名检索、基因页 基于覆盖层的跨项目查询 前者面向「找相似样本」,后者面向「找相似区间」
交付体量 单文件数十到数百 GB 分块,按项目与粒度取 ARCHS4 首次使用成本高,之后低
更新方式 滚动补样本,版本号递增 分版本整批发布 两者都要写清版本
典型任务 表达预训练、共表达、签名反查 差异表达、剪接分析、覆盖度可视 任务不同,选型不同

一句话记住:ARCHS4 把多样性换成了可计算性,recount3 把可计算性让位给了可追溯性。§6.3 的分工在后面的选型建议里会再次用到。

§7 质量评估与局限性

7.0 阅读本节前的一个前置校正

评估 ARCHS4 时最容易犯的误判,是拿评估策展数据库的尺子来量它:问它元数据完整率多少、注释准确率多少、有没有人工复核。这些维度上它必然低分,因为它的设计从一开始就不承担这些工作。正确的评估框架是:在「把公共数据转成可计算矩阵」这个任务上,它的成本、覆盖率与一致性如何,以及这些优势换来了哪些不可逆的损失。

换句话说,下面每一处扣分都应理解为「它的取舍带来的代价」,而不是「它没做好」。把这一点校正过来,后面五维评分才不会读歪。

7.1 五维评分

维度 分数 依据
规模 5 / 5 人类与小鼠各逾百万样本,覆盖远超任何策展型资源
一致性 4 / 5 同一版本内流程与注释统一;扣分在跨层样本不同步与跨版本不可比
可用性 5 / 5 单文件 HDF5,两个官方客户端,Python 与 R 都有一行取数的接口
可追溯性 2 / 5 只到版本号与流程说明,无逐样本日志与失败清单
注释质量 2 / 5 元数据为上传者原样,无核验,字段参差

7.2 DAIMS 视角下的四条线

DAIMS 关注的是数据从采集到使用的链条是否可解释。按这四条线看 ARCHS4:

DAIMS 线 ARCHS4 的表现
数据获取与处理 云端容器化流程有文档,但单样本处理记录不公开
数据建模 矩阵 + 同下标元数据数组,模型极其简单,无模式演进机制
数据溯源 版本号 + 文件名 + 哈希,粒度到文件而非样本
数据使用与治理 无统一许可声明,以原始 GEO 条目许可为界,使用者需自行判定

四条线里最弱的是溯源,最稳的是建模。简单模型的代价是无法表达「一个样本有多条处理记录」这类复杂关系,好处是任何工具都能读。

7.3 已知的、可枚举的偏差

偏差不止一类,逐条列出比笼统说「数据有偏」有用得多。

第一,物种偏差。人类与小鼠占绝对多数,其他物种只有约三万五千个样本,且分布在下载页的独立分区。做跨物种比较时,非模式生物几乎没有可用样本。

第二,平台偏差。早期实验的测序仪与建库方式与近年不同,读长、深度、链特异性都不同。矩阵不做平台校正,因此「同样的组织、不同年代」会在表达空间里分开,这与生物学无关。

第三,技术偏差。单细胞样本混入是明确已知的。官方用机器学习给每个样本标注单细胞概率以缓解,但这是一个预测值,不是标签,阈值设在零点五只是默认,不是校准过的分界。

第四,地理与团队偏差。GEO 的上传者集中在少数国家与少数大型实验室,样本构成反映的是「谁在做公共数据上传」,不是「疾病或组织在人群中的分布」。

第五,注释偏差。Ensembl 版本更迭会导致基因集合变化,旧版有、新版无的基因在新矩阵里消失,这类断崖式变化在时间序列分析里会造成假信号。

7.4 外部验证矩阵

验证角度 外部证据 结论
与比对式流程的一致性 论文报告 kallisto 与 STAR 的 z 分数相关零点七七 在功能预测层面差异不可见
功能预测的可靠性 GO 生物学过程中位 AUC 零点七四五,KEGG 中位零点七九七 有信息量,不能替代实验
互作预测的可靠性 hu.MAP 上 AUC 零点八五,BioGRID 零点六六 强证据源上更准,弱证据源上退化
成本可复现性 论文报告单样本约一美分 使全量重跑在经济上可行
长期可用性 2018 年至今持续发布,客户端仍在维护 停更风险较低

7.5 它为何能持续:把重跑成本压到别人愿意重跑第二遍

一个公共数据重处理项目能不能活下来,取决于两件事:跑一次的成本是否低到有人愿意重复跑,以及成果是否好用到大到有人愿意持续用。ARCHS4 在这两点上都做到了:单样本不足一美分的成本让滚动重跑变成例行公事,单个 HDF5 文件的形态让入门门槛低到几乎为零。它靠的不是策展质量,而是极低的边际成本与极简的交付形态。

§8 生态位与历史

8.1 历史沿革

时间 事件
2018 年 2 月 论文数据截止,共十八万余样本,人类八万余、小鼠十万余
2018 年 4 月 论文发表于《Nature Communications》
2020 年前后 通过 Toil 路线重跑的 recount2 矩阵被并入,作为 GTEx 与 TCGA 的补充
2023 年 7 月 第二版发布,注释升级到 Ensembl 107
2023 年 9 月 官方 Python 包 archs4py 上线
2024 年 7 月 样本量越过人类八十八万、小鼠九十八万
2024 年 9 月 转录本级数据开始提供
2024 年 12 月 第二点六版发布,样本量跃至人类九十二万、小鼠一百零四万;新版网站在线,加入签名检索与相关性查询
2025 年 3 月 官方 R 包 archs4r 上线
2026 年年中 基因矩阵越过人类一百零九万、小鼠一百二十二万

从这条时间线能读出两件事。其一是增长曲线:2018 年到 2024 年六年增长约五倍,2024 年之后一年内又增了两成,公共数据本身的累积速度在加快。其二是定位漂移:早期它主要是一个下载站,2024 年新版网站把签名检索与相关性查询放到前台,说明维护方判断「只要矩阵」的用户已经饱和,增量在检索层。

8.2 三座同代加工厂的分工

同期出现的三座公共转录组加工厂各有侧重。recount 与 recount2 以 R 包分发、强调可复现的对齐流程;Toil 强调可移植的工作流引擎,直接服务于大型联盟的内部需求;ARCHS4 强调吞吐与交付形态,服务的是「想拿现成矩阵」的长尾用户。三者的成本差异(论文里的对比是 ARCHS4 一千七百余美元、Toil 两万五千余美元、recount 四万四千余美元)不是工程质量差异,而是目标函数差异。

这条线索延续到今天:recount3 继承了 recount 的路线并大幅扩展元数据,ARCHS4 继承了吞吐路线并加上检索层。两条线至今没有合并,因为服务的人群不同。

8.3 在 AI 时代的再定位

表达矩阵作为一种预训练数据,在近两年重新受到关注。原因不难理解:单细胞数据虽然精细,但总量与组织覆盖不及批量数据;批量数据虽然批次效应重,但样本量在百万量级,且覆盖了大量疾病与处理条件。ARCHS4 的形态恰好适合这件事——一张表,列是样本,可以直接切成批次喂进模型。

这也带来一种新的误用风险:把矩阵当成「已经清理干净」的训练集。实际上它没有做任何清理,重复样本、单细胞混入、平台差异都在。任何把它当预训练语料的工作,都必须自行完成这三步过滤,并在方法里写清过滤规则。

8.4 与策展型资源的互补关系

有一种看法是策展型资源终将取代批量重处理资源,这个判断在可预见的范围内不成立。策展型资源(如 Expression Atlas)的价值在于「小样本、好注释、可直接下结论」,批量资源的价值在于「大样本、弱注释、只能生成假设」。前者回答「这个基因在这个组织里高不高」,后者回答「这个基因在哪些条件下会被一起带动」。

两者是上下游关系:用批量资源生成假设,用策展资源或自己的实验验证。§7.5 提到的「低成本重跑」正是这条链的第一环。

§9 使用指引

9.1 三种角色的路径

算法研究者的路径最短:下载基因矩阵,读 singlecellprobability 剔除单细胞样本,按基因做一次低表达过滤并合并重复符号,然后直接切块。这个流程可以完全脚本化,不需要碰网页界面。

生物医学研究者的路径是反的:从问题出发,先在网页的签名检索里输入一份基因列表,看返回的高分样本集中在哪些组织或疾病;再拿回系列号,回 GEO 看实验设计是否支持这个解释;最后才决定要不要下载矩阵做定量。

数据工程师的路径最重:需要把矩阵接入现有的数据处理栈。要点有三:一是把 HTTP 区间读或本地 HDF5 读封装成统一接口;二是把版本号与文件哈希写进元数据表;三是在入库时就把元数据字段的解析规则定下来,尤其是 characteristics_ch1 这种自由文本。

9.2 一条最短的可用流程

下面这条流程从零到一个可用的小矩阵,是 §4.3 的案例在命令行上的完整版本。

#-- 第一步:安装官方客户端
pip3 install archs4py h5py

#-- 第二步:下载最新版人类基因矩阵(数十 GB,视网络而定)
python3.11 -c "import archs4py as a4; print(a4.download.counts('human', version='latest'))"

#-- 第三步:确认版本号,并把文件名与哈希写进实验记录
python3.11 -c "import archs4py as a4; print(a4.versions())"
#-- 第四步:按条件取一个小矩阵,并完成最低限度的清理
import archs4py as a4

file = "human_gene_v2.latest.h5"
mat = a4.data.meta(file, "hepatocyte", remove_sc=True)   #-- 已剔除单细胞
print(mat.shape)

#-- 合并 Ensembl 注释带来的重复基因符号
mat = a4.utils.aggregate_duplicate_genes(mat)

#-- 过滤低表达基因:至少 50 条读段、覆盖 2% 的样本
mat = a4.utils.filter_genes(mat, readThreshold=50, sampleThreshold=0.02,
                            deterministic=True, aggregate=True)

#-- 归一化到可比尺度
norm = a4.normalize(mat, method="log_quantile")
print(norm.shape)

这段流程里每一步都有理由。剔除单细胞是防止非批量协议污染;合并重复基因是防止特征共线;低表达过滤是去掉大部分在多数样本里为零的行;对数分位归一化是为了后续做相关与降维时不被深度差异主导。四步之后得到的矩阵,其行列结构与 GEO 原实验的对应关系仍然可以按 GSM 号追回,这才算完成一次可复现的取数。

9.3 引用方式

引用要写到三层,缺一层都会让复现打折扣。

第一层是方法学论文。标准写法是 Lachmann 等人 2018 年发表于《Nature Communications》第 9 卷、文章号 1366 的那篇。注意论文的 DOI 与任务卡里给的不一致,官方页面与论文页互相链接的 DOI 均为以 03751 结尾的一个,引用时应以论文页为准。

第二层是版本。写明具体版本号(如第二点六版)与下载日期,必要时附文件哈希。只写「ARCHS4」而不写版本,读者无法判断你用的是哪一批样本。

第三层是原始数据。如果分析涉及具体系列,应在补充材料里列出所用的 GSE 或 GSM 清单,让原始实验的设计可以被核对。这三层合起来,才构成一次可被审计的引用。

§10 AI 使用声明

项目 说明
本页 AI 参与程度 由 AI 助手依据官方页面与论文摘要起草,人工核对数字与结论
数字来源层级 见附录 B,官方页面为一级,论文摘要为二级
未核实项 基因符号总数未在官方页面给出,仅论文提及降维前的维度
版本信息 以 2026 年 9 月至 10 月间读取的下载页为准
已知不一致 小鼠参考基因组在官网正文写 GRCm39,下载页与索引说明写 GRCm38
DOI 不一致 任务所指 DOI 与官方页面、论文页两处给出的 DOI 不同,正文以论文页为准
适用边界 本文描述的是数据集本身,不含对具体研究结论的评价
更新机制 数据集滚动更新,本文不承诺随版本同步刷新

常见误读(避坑清单)

常见说法 实际 证据
「名字里有 ChIP-seq,所以有 ChIP-seq 峰」 完全没有,只处理 RNA-seq 官网关于段、下载页、论文摘要均只描述 RNA-seq
「它是九十多万样本,网上有写」 新闻条目在 2024 年 7 月写的是八十八万人类、九十八万小鼠,12 月写九十二万、一百零四万 官网新闻列表两条相邻记录口径不同
「一百多万样本,就是一个受控队列」 是大量互不相关的独立实验拼接 矩阵以 GEO 样本号为列,无统一实验设计字段
「用 kallisto 所以精度不如 STAR」 功能预测层面两者 AUC 相同 论文报告两者 GO 预测平均 AUC 均为零点六九
「它是人工整理过的干净数据」 元数据原样搬运,单细胞样本混入 官方客户端文档说明用单细胞概率自行剔除
「基因矩阵和转录本矩阵的列一一对应」 两层样本数不同,且不同步更新 下载页人类基因矩阵与转录本矩阵样本数不一致
「可以拿整张矩阵做差异分析」 跨实验批次效应会压过条件效应 流程不包含批次校正步骤
「它是 GTEx 那种正常组织参考」 官方明说组织样本混杂亚型与制备条件 帮助页关于组织图谱的说明段
「下载链接是稳定的,可以用 latest」 软链接随发布变化,复现性差 下载页各文件日期不同,latest 指向最新
「它就是 recount3 的另一个名字」 两者是不同流程、不同产物的两条线 见 §6.3 的逐项对照

FAQ

Q1:ARCHS4 现在到底有多少样本?

官方下载页在最近一次读取时给出人类基因矩阵一百零九万八千余、小鼠一百二十二万五千余。但同一站点的新闻条目、转录本矩阵与 TPM 矩阵的数字各不相同,因为这些产物分批重跑、不同步更新。引用时务必写明用的是哪一条产物线。

Q2:它有没有单细胞数据?

有,但被混在批量数据里。官方用机器学习为每个样本预测单细胞概率,取值在零到一之间,惯例是滤掉大于零点五的样本。这是预测值不是标签,因此在单细胞与批量交界处的样本需要人工复核。

Q3:能把 GTEx 或 TCGA 的样本拿来一起算吗?

可以,但要意识到来源不同。下载页附带的两份矩阵来自 recount2 的另一套流程,官方自己就提示这条读段对齐路线与 ARCHS4 的流程差异显著。合并时应把它们当作外部参照,而不是当作 ARCHS4 的一部分。

Q4:基因数是多少?

官方下载页没有直接给出当前版本的基因符号总数。论文提到降维前使用的维度是三万四千一百九十八,这个数字可以作为量级参照。实际使用时建议直接从文件里读行数,而不是引用旧数字。

Q5:它支持哪些物种?

以人类与小鼠为主。另有约三万五千个其他物种样本,官方举例提到秀丽隐杆线虫与黑腹果蝇,这些样本在下载页的独立分区,不在主矩阵里。

Q6:签名检索的原理是什么?

把基因列表编码成向量,在与样本空间的相似度上排序。为了计算可行,原始的高维表达被 Johnson-Lindenstrauss 变换压到一千维,论文报告压缩后相关系数保持稳定。检索结果适合生成假设,不适合当作结论。

Q7:能不能只下载我关心的几千个样本?

网页端提供动态取子集,官方客户端也支持先按元数据筛再取。但底层仍要访问整个 HDF5 文件,网页端的动态取数受限额,批量场景建议还是下载本地文件后切片。

Q8:更新频率如何?

不固定,从历史新闻看大约每几个月一次。每次更新都会补入新样本,也可能因重新注释而改变旧样本的值。做长期项目时应在项目开始时锁定版本。

Q9:有必要用官方客户端吗?

如果只是读一两个子集,h5py 或 rhdf5 足够。如果要做元数据检索、归一化、过滤与对齐,用官方包能省掉大量下标对齐的错误,这些错误在实际使用中非常常见。

Q10:数据可以商用吗?

官方没有给出统一的许可声明。数据本身来自 GEO 的公开条目,商用前应逐个确认原始条目的使用条款。软件部分(客户端与建站代码)遵循各自仓库的开源许可,与数据许可分开。

Q11:为什么组织表达分布和 GTEx 对不上?

因为两者的样本构成不同。GTEx 在统一协议下采集有限供体,ARCHS4 的组织分布来自成千上万个不同实验室,制备条件不一、亚型混杂。官方认为后者反映的是真实变异,但这种变异里包含了大量技术因素。

Q12:它和 Expression Atlas 怎么选?

看你要广度还是深度。要几万个组织与疾病条件下的大规模样本,选 ARCHS4;要少量已人工策展、注释结构化的实验,选 Atlas。两者常常一前一后使用。

术语表

术语 含义
RNA-seq 转录组测序,测的是样本中全部 RNA 的序列片段
kallisto 伪比对定量工具,把读段拆成 k-mer 直接匹配转录本集合
伪比对 不做逐碱基比对,只判断读段与转录本的兼容性
伪计数 kallisto 输出的估计计数,含小数,表示推断的读段归属量
TPM 每百万转录本数,按长度与深度双向归一化后的表达量
FPKM / RPKM 按片段或读段数的归一化表达量,现多被 TPM 取代
HDF5 / H5 一种层级文件格式,支持压缩与按切片读取
Ensembl 基因组注释数据库,提供基因与转录本的标识体系
GRCh38 / GRCm38 人类与小鼠的参考基因组组装版本
cDNA 参考 把所有转录本序列拼起来的参考,kallisto 索引即建立在其上
GSM GEO 样本号,ARCHS4 矩阵的列主键
GSE GEO 系列号,一个实验的组织单位
SRA 序列读取档案,存原始读段
单细胞概率 官方模型对样本是否为单细胞数据的预测值,零到一
共表达 两个基因在众多样本中表达量同步变动的现象
签名 一份基因列表,用于在样本空间中检索相似的表达模式
Johnson-Lindenstrauss 变换 一种近似保距的随机降维方法
t-SNE 一种非线性降维方法,用于在低维展示高维样本关系
批次效应 由技术因素而非生物学因素造成的样本间系统差异
策展 由人工挑选、核对与结构化注释的过程
DAIMS 数据档案与信息管理系统的一套评估框架,看采集、建模、溯源与治理四条线
皮尔逊相关 衡量两组数值线性相关程度的指标
AUC 受试者工作特征曲线下面积,衡量分类或排序的区分能力
软链接 latest 始终指向最新版本的路径,内容随发布变化

附录 A:核心数字核对表

项 值 来源 来源层级
论文时期总样本 十八万余 论文摘要 二级
论文时期人类样本 八万余 论文摘要 二级
论文时期小鼠样本 十万余 论文摘要 二级
当前人类基因矩阵样本 一百零九万八千余 官网下载页 一级
当前小鼠基因矩阵样本 一百二十二万五千余 官网下载页 一级
当前人类转录本矩阵样本 一百一十一万五千余 官网下载页 一级
其他物种样本 约三万五千 官网关于段 一级
基因矩阵体量(人类) 58 GB 官网下载页 一级
转录本矩阵体量(人类) 182 GB 官网下载页 一级
TPM 矩阵体量(人类) 368 GB 官网下载页 一级
注释版本 Ensembl 107 官网关于段 一级
单细胞概率默认阈值 零点五 官方客户端文档 一级
kallisto 与 STAR 相关性 零点七七 论文正文 二级
功能预测 AUC(GO) 零点七四五 论文正文 二级
基因符号总数 未核实 无官方当前值 三级

附录 B:数字的来源分层

一级:官方页面。 包括官网首页的关于段与新闻条目、下载页的各文件样本数与体积、官方客户端文档里的字段与默认值、帮助页的流程描述。本文所有样本量、文件体量、注释版本与字段名均取自这一层。

二级:论文摘要与正文。 包括论文发表时的样本量、kallisto 与 STAR 的对比指标、成本对比、功能与互作预测的 AUC。这些数字反映的是 2018 年的状态,用于说明方法论取舍,不能用于描述当前规模。

三级:未核实。 基因符号的当前总数未在官方页面公布,本文只给出论文时期的维度作量级参照,并明确标注为未核实。小鼠参考基因组的确切版本在两处页面存在冲突,本文并列两说而不下判断。

附录 C:完整参考文献

  1. Lachmann A, Torre D, Keenan AB, Jagodnik KM, Lee HJ, Wang L, Silverstein MC, Ma’ayan A. Massive mining of publicly available RNA-seq data from human and mouse. Nature Communications, 2018, 9: 1366. 官方页面与论文页给出的文献编号以 03751 结尾。
  2. ARCHS4 官方站点,关于段与新闻列表,https://archs4.org/ ,2026 年 10 月访问。
  3. ARCHS4 下载页,基因计数、转录本计数、TPM、阵列、相关矩阵与索引各文件的样本数与体积,https://archs4.org/download ,2026 年 10 月访问。
  4. ARCHS4 帮助页,流程描述、基因页说明、组织图谱说明与自动生成脚本,https://maayanlab.cloud/archs4/help ,2026 年 10 月访问。
  5. archs4py 官方仓库文档,数据读取接口、元数据字段、归一化与过滤函数、对齐模块,https://github.com/MaayanLab/archs4py ,2026 年 10 月访问。
  6. Wilks C 等,recount3 论文,用于 §6.3 的对照,https://rna.recount.bio/ 。
  7. EMBL-EBI Expression Atlas 官方站点,用于 §2.5 与 §6.1 的对照。

附录 D:取数代码

#-- 完整的最小可用脚本:定位、取数、清理、存盘
import archs4py as a4

VERSION = "latest"          #-- 正式项目请替换为具体版本号
file = a4.download.counts("human", version=VERSION)

#-- 一、在元数据里定位样本
meta = a4.meta.meta(file, "hepatocyte",
                    meta_fields=["geo_accession", "series_id", "source_name_ch1"])
print("命中样本:", len(meta))

#-- 二、取数,同时剔除单细胞
mat = a4.data.meta(file, "hepatocyte", remove_sc=True)

#-- 三、清理:合并重复符号、过滤低表达
mat = a4.utils.aggregate_duplicate_genes(mat)
mat = a4.utils.filter_genes(mat, readThreshold=50, sampleThreshold=0.02,
                            deterministic=True)

#-- 四、归一化并存盘
norm = a4.normalize(mat, method="log_quantile")
norm.to_csv("hepatocyte_log_quantile.tsv", sep="\t")

#-- 五、把版本与样本清单一起存下,保证可复现
meta.to_csv("hepatocyte_samples.tsv", sep="\t", index=False)
print("完成:", norm.shape)

附录 E:如果只记五件事

第一,它是人类与小鼠公共 RNA-seq 的统一重处理矩阵,人类与小鼠各逾一百万样本,形态是一个 HDF5 文件。

第二,它用 kallisto 伪比对加 Ensembl 107 注释,输出基因计数、转录本计数与转录本 TPM 三层,另附一批阵列数据。

第三,它与 recount3 的分工是:它给整合矩阵与签名检索,recount3 给多粒度量化与完整元数据。

第四,它不做任何人工策展与批次校正,单细胞样本混入,元数据为上传者原样,使用前必须自己清理。

第五,它没有 ChIP-seq,尽管名字里有;也没有临床终点,想建模预后要另找资源。

编辑说明

本篇的核验时间为 2026 年 10 月 29 日。核验方式为直接读取 ARCHS4 官方站点的关于段、下载页与帮助页,以及 archs4py 官方仓库文档,并对照论文页面上的摘要与正文数字。所有样本量、文件体积与字段名称以官方页面为一级依据;论文数字仅用于说明方法论取舍与历史演进,不用于描述当前规模。

未覆盖的内容包括:基因符号的当前总数(官方未公布)、逐样本级别的处理日志(官方不公开)、以及小鼠参考基因组的确切版本(官方两处页面表述冲突,本文并列而不裁决)。任务所指的论文文献编号与官方两处页面给出的编号不一致,本文以论文页为准,并在附录 C 中说明。

本页描述的只是数据集本身的结构、规模与边界,不涉及对任何具体研究结论的评价,也不构成使用建议的法律意见。数据许可需按原始 GEO 条目逐项确认。


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • geo — 共享标签:基因组学与多组学 / 转录组 / 测序数据
  • fantom5 — 共享标签:基因组学与多组学 / 转录组 / 测序数据
  • gencode — 共享标签:基因组学与多组学 / 转录组 / 测序数据
  • astra — 共享标签:基因组学与多组学 / 转录组 / 测序数据
  • recount3 — 共享标签:基因组学与多组学 / 转录组 / 测序数据
  • ddbj-gea — 共享标签:基因组学与多组学 / 转录组 / 测序数据
  • tcga-luad — 共享标签:基因组学与多组学 / 转录组 / 测序数据
  • gtex-legacy — 共享标签:基因组学与多组学 / 转录组 / 测序数据
  • gtex — 共享标签:基因组学与多组学 / 转录组 / 测序数据
  • cellxgene-census — 共享标签:基因组学与多组学 / 转录组 / 测序数据

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集