信息速览
细胞被热到四十二度、被过氧化氢泡上几个小时、被紫外线照一遍、或者被放进百分之一的氧气里,基因组转录出来的东西会变,这是分子生物学的常识。麻烦出在“变成什么样”这一步:这件事在公共数据库里被拆成成千上万个互不相干的小实验,每个实验用自己的细胞系、自己的剂量、自己的时长,各自用一套流程算出差异基因。想回答“哪一组基因在四类应激下都动起来”,你得先把它们拉到同一张表上。
ASTRA 做的就是这张表。它把 NCBI GEO 里与四类应激相关的研究筛过一遍,只留条件说得清、有配对对照的那批,用同一条流程重算,再把结果拆成“一个应激组对一组对照”的比较集。全部内容来自 59 项研究、86 个比较集、669 个样本与 57 个细胞系,覆盖氧化应激、低氧、热休克、UV 照射四类。名字是 atlas of stress response activity 的缩写,2026 年 1 月发表在核酸研究数据库专刊,由希腊色雷斯德谟克利特大学牵头,网站免费,全量扁平表挂在 Zenodo。
这篇要回答的是它在什么场合比 GEO 本身更好用、在什么场合不如直接回 GEO,以及那些看起来能算但实际不该算的地方。一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 中文名 | 应激响应活性图谱 |
| 英文名 | ASTRA(atlas of stress response activity) |
| 建库机构 | 希腊色雷斯德谟克利特大学分子生物学与遗传学系,联合亚里士多德大学、Alexander Fleming 研究所、MBZUAI |
| 通讯作者 | Antonis Giannakakis、Georgios A. Pavlopoulos |
| 发表 | Nucleic Acids Research 2026 年 54 卷 D1 期,D938–D948 |
| 论文 DOI | 10.1093/nar/gkaf1174 |
| 官方入口 | https://astra-db.com/ |
| 数据托管 | Zenodo,DOI 10.5281/zenodo.15885686 |
| 规模 | 59 项研究、86 个比较集、669 个样本、57 个细胞系 |
| 应激类别 | 氧化应激、低氧、热休克、UV 照射四类,每类一个分子应激源 |
| 细胞状态分组 | 非疾病参照、癌细胞、类器官三组 |
| 定量口径 | GRCh38 + STAR 比对 + RSEM 定量(TPM)+ edgeR 差异 |
| 技术栈 | Streamlit 前端 + PostgreSQL 后端 |
| 网站许可 | 面向学术用户免费开放 |
| 数据包许可 | CC BY 4.0 |
| 更新方式 | 论文称按月从 GEO 补录 |
§1 它要解决的具体麻烦
1.1 应激转录组的碎片化是结构性的,不是数据量不够
一个实验室想做“细胞应激的共性响应”,第一步通常是去 GEO 搜。搜出来的结果是几十项到几百项研究,每项的标题都像,每项的表格都不一样。有人给的是 TPM 矩阵,有人给的是作者自己的差异基因清单,有人只交了 counts,有人只交了 FPKM,还有人什么软表都没传,只上传了原始 FASTQ。
接下来你要做的判断,比分析本身更费时间:这个研究的对照是同一个细胞系吗?处理时长是两小时还是二十四小时?剂量是 50 微摩尔还是 500 微摩尔?这些信息散在“overall design”的一段话里,既不统一也不结构化。你把十个研究的数据拼起来做热图,热图上出现的那条“共同上调”,很可能是平台差异或者归一化差异造出来的假象。
碎片化之所以是结构性的,是因为 GEO 是一个归档库而不是一个可比较的库。它的职责是保存研究者提交的东西,不是把它们拉齐。这个定位正确而且必要,但也意味着任何想跨研究比较的需求,都必须在它之上再搭一层。这一层搭得好不好,决定了后面所有的比较是在比生物学,还是在比处理流程。
1.2 三条常见的错误期待
期待一:以为它多收了很多 GEO 里没有的数据。 它一条新数据都没有。59 项研究全部来自 GEO,669 个样本全部能在原始提交里找到。它增加的是组织方式,不是测量本身。如果你的问题是“这个细胞系在热休克下有没有做过转录组”,GEO 的检索能力比它强,因为 GEO 收全量、它只收合格子集。
期待二:以为“统一流程”等于“统一生物学条件”。 流程统一的是比对版本、定量方法与差异检验的实现。剂量、时长、细胞代数、培养基、热休克的方式(水浴还是培养箱)这些仍然来自原作者,ASTRA 没有重做实验。所以两个比较集之间的差异,既可能来自生物学,也可能来自实验操作的细节,而后者在这类数据里从不缺席。
期待三:以为它能直接回答“应激生物标志物是什么”。 它有 86 个比较集,看起来足够做一次系统性筛选。但多数比较集的样本只有两到六个,单个比较集里的差异检验效力很低;而且原文的处理时长从三十分钟到七天不等,把不同时长的结果放在一起看,看到的“共同上调”很可能只是急性期基因的短暂反应。它给的是候选清单的起点,不是结论。§4.4 的案例把这条路径走了一遍,最后停在两三个待验证的候选上,而不是一张确定的功能清单。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 找一组在四类应激下都上调的基因 | 86 个比较集的 logfc 与 p 值,可按基因号横向拼 | 够,但要先按细胞状态分层 |
| 拿到某个细胞系在热休克下的表达矩阵 | TPM 矩阵与样本注释 | 够 |
| 拿到原始 FASTQ 自己重跑 | 只给 GSE 与 GSM 号 | 不够,需要去 ENA 取 |
| 看长链非编码 RNA 的应激响应 | 差异结果含 lncRNA,基因注释单独成表 | 够,这是它相对多数重处理资源多出来的一块 |
| 做剂量-响应的曲线 | 有剂量字段,但每个比较集只有一个剂量点 | 不够,需要自己合并多个比较集 |
| 找到某类应激的全部已发表研究 | 只收四类、每类一个应激源 | 不够,去 GEO 检索 |
| 训练一个基因-应激关系的预测模型 | 六万余个基因 × 86 个比较集的稀疏差异表 | 勉强够,样本层面太稀疏 |
| 核对某篇论文结论能否复现 | 流程与参数透明,可重跑 | 部分够,但 p 值口径与原文未必一致 |
| 比对癌细胞与非疾病细胞系的应激反应 | 细胞状态三分组,两侧都有样本 | 够,但组间样本量差很多 |
| 拿到电离辐射、亚砷酸盐、镉的数据 | 不在收录范围内 | 不够,明确排除 |
1.4 你的处境与它能帮到的事
1.3b 需求的四条判据
看完上面两张表,可以用四条判据快速判断你的需求该不该用它。
| 判据 | 满足时的结论 | 不满足时的结论 |
|---|---|---|
| 问题涉及应激 | 可用 | 不在库的范围,去 GEO 或 Expression Atlas |
| 需要跨研究比较 | 可用,这是它最强的地方 | 单研究深入可以回原文 |
| 能接受细胞系而非组织 | 可用 | 需要人体组织,去 GTEx |
| 结果只用于生成候选 | 可用 | 要确证性结论,需独立实验 |
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 刚立项,要判断“细胞应激转录组”这个方向值不值得做 | 一屏看到四类应激各自的规模与细胞系分布,知道哪里样本多、哪里是空白 | 用它的数据统计页定方向,再回 GEO 补最新研究 |
| 手上有一个候选基因,想知道它在应激下是否稳定上调 | 按基因号查 86 个比较集里的方向与显著性 | 挑方向一致的少数比较集,回原文核对照设计 |
| 要做一个 lncRNA 的功能假设 | 基因注释表给出 lncRNA 的坐标与类型,差异表给出响应 | 选 3–5 个候选做实验验证,不要一次铺开 |
| 已经在跑自己的 RNA-seq 应激实验 | 拿它的对照分布当外部参照,看自己的效应量是否离谱 | 用同细胞系、同时长的比较集做对标 |
| 要做药物或毒物的应激模拟物筛选 | 它有应激响应基因的参考集,可以当作打分基线 | 自己构建打分函数,ASTRA 只提供参考指纹 |
| 需要一个能离线跑的干净小表 | Zenodo 七张扁平表,最大的一张约 1.3 GB | 直接下载,不经过网站 |
| 想复现某篇 2015 年的氧化应激论文 | 它的流程与原文不同,结论未必重合 | 先读 §7 的口径差异,再决定用谁的结果 |
1.5 一句话判断
它是一个把“散在 GEO 里的应激实验”压成“可比小表”的组织层,价值在于横向拼接的便利,不在于新增测量。你要做跨研究比较时它省事,你要做单研究深入分析时它只会挡路。
按四种典型身份各说一句。做机制研究的人,把它当候选目录;做生信分析的人,把它当可复现的参考矩阵;做实验设计的人,把它当剂量与时间的先验;做资源评估的人,把它当同类比较的标尺。四种身份都用同一个库,但用到的部分完全不同。
1.6 不适合谁:四条边界
这四条边界覆盖的是“它不是给你做的”这一类需求,而不是“它做得不好”的地方。
第一条:需要完整时空分辨的人。 它收录的是 bulk RNA-seq,一个样本对应一个时间点一个条件。想看应激过程中的转录动态,得有多个时间点,而多数比较集只给一个末端时间点。想做时间序列建模,这里的数据不够密。
第二条:需要单细胞分辨率的人。 它整库都是 bulk,没有单细胞。应激响应的异质性恰恰是单细胞层面最值得看的东西,这一层它完全没覆盖。如果你的课题是“同一群细胞里为什么只有一部分响应”,这个库从设计上就回答不了。
第三条:把 GEO 当唯一真理的人。 如果你的分析必须严格复现原作者的处理参数(比如原文用的是 HISAT2 加 StringTie,而 ASTRA 用 STAR 加 RSEM),两边数字对不上是必然的。要复现原文,就用原文的流程和原文的矩阵。这一类需求在方法学复核、审稿答辩与专利举证里都很常见,ASTRA 帮不上忙。
第四条:需要法律层面明确商用授权的人。 网站写的是面向学术用户免费开放,论文本身是 CC BY-NC 4.0,只有 Zenodo 数据包标明 CC BY 4.0。三者不完全一致,商用前需要逐项确认,不能默认整站可商用。
§2 数据构成与规格
2.1 四类应激的收录边界
ASTRA 的四类应激不是“细胞能遇到的所有应激”,而是四个在文献里边界最清楚、实验范式最成熟的类别。每类只对应一个分子应激源,这个选择是刻意的:同类里换一个应激源(比如氧化应激里换成亚砷酸盐),剂量单位、响应时间、作用机制都会变,混在一起会稀释可比性。
四类应激的收录边界靠三条规则维持:每条研究必须有明确的单一人源细胞系;每项处理必须能指派给一个分子应激源,且不能跨类别指派;每个比较集必须至少有一个未处理对照。三条规则同时成立才入库,这条筛选标准把 GEO 里数量庞大的“沾边研究”挡在外面,也是库小的直接原因。
四类的剂量区间都由论文给出:氧化应激对应过氧化氢,五十到七百微摩尔;DNA 损伤对应紫外线照射,五到六十焦耳每平方米;热休克对应升温,三十九到四十五摄氏度;低氧对应一点到三个百分比的氧气浓度。研究数依次是三十三、十七、二十、十六项,Zenodo 表里按比较集拆开的行数依次是六十七、五十二、三十九、二十七行。
这张表有两个口径要分清。研究数是论文里的“若干项 GEO 研究”,一个研究可能贡献多个比较集;数据集行数是 Zenodo 的 datasets.tsv 里按“比较集 × 处理条件”拆开的行数。四类加起来研究数是 86,行数是 185,差出来的部分是同一研究里不同剂量或不同时长被拆成了多行。
四类之间的不均衡很明显。氧化应激的研究数与行数都最多,UV 其次,低氧最少。论文自己也写明,氧化应激与低氧两块覆盖较扎实,DNA 损伤这一块还在扩充。做跨类别比较时,最弱的一环是低氧,任何“四类应激共同响应”的结论都会被这一类的样本量拖住。
2.2 字段字典与表结构
这里把 Zenodo 七张表逐张拆开。网站上的模块与这七张表是同一批数据的两种呈现,网站做的是筛选与可视化,表做的是全量导出。七张表不是七个独立数据源,而是一个数据源在四个粒度上的展开——研究、比较集、样本、基因,每一级都能从上一级切下来。
| 表 | 粒度 | 行数 | 大小 | 关键列 | 用途 |
|---|---|---|---|---|---|
| datasets.tsv | 比较集 × 处理条件 | 185 | 27 KB | record_id, GSE_id, treatment_type | 清单,选比较集 |
| study_metadata.tsv | GEO 研究 | 59 | 127 KB | geo_accession, overall_design, pubmed_id | 研究级说明与提交信息 |
| sample_metadata.tsv | 样本 | 669 | 1.9 MB | geo_accession, characteristics_ch1, treatment_protocol_ch1 | 原始样本描述 |
| harmonized_dataset.tsv | 样本 | 669 | 75 KB | record_id, GSM_ID, is_control | 标准化后的样本级索引 |
| gene_annotations.tsv | 基因 | 61,424 | 6.8 MB | gene_id, gene_symbol, biotype | Ensembl 注释 |
| differential_expression.tsv | 比较集 × 基因 | 139 万余 | 88 MB | record_id, gene_id, logfc, pvalue | 差异结果 |
| expression_data.tsv | 样本 × 基因 | 272 万余 | 1.26 GB | 样本号与各基因的 TPM | 表达矩阵 |
datasets.tsv 是骨架,其余六张都靠它里面的 record_id、GSE_id 或 GSM 号挂钩。它自己的字段可以按用途分四组来记。
| 分组 | 字段 | 含义与取值 | 使用注意 |
|---|---|---|---|
| 溯源 | id / PMID / GEO_id | 行号、文献号、系列号 | id 不是 record_id,混用会错行 |
| 设计 | No_of_samples / treatment_type / stress_factor | 样本数、条件全名、应激类别 | treatment_type 写法极不统一 |
| 分组 | Control / Treatment / No_of_controls / No_of_treated | GSM 清单与两侧样本数 | 有 56 行对照数为 0 |
| 身份 | Cell_type / Tissue / Cell_group / Genotype / Genomic_condition | 细胞系、组织、状态三分组、基因型、基因型二分 | 拼写与大小写不一致 |
分组的细节值得展开。Control 与 Treatment 是两个逗号分隔的 GSM 清单,分隔符后的空格不规范,直接 split 会带出多余空格。No_of_controls 有 0 值,共 56 行,这些行没有差异结果。Cell_type 有个别条目填的是设备编号而不是细胞名。Tissue 存在拼写与大小写不一致。Cell_group 只有三个取值,字符串里带双空格。Genotype 里 141 行是 WT,其余是各类敲低、敲除与突变;Genomic_condition 再把它们二分为 Wild-Type 161 行与 Variants 24 行。
harmonized_dataset.tsv 是把数据集表拆到样本级的结果,一行一个样本,用 is_control 标出对照与处理。它的价值在于:你不必解析 Control 与 Treatment 两个逗号串,直接按 is_control 过滤就能拿到分组。这张表 669 行里 291 行是对照、378 行是处理,与论文的样本总数对得上。它还有一层隐含价值:同一 record_id 下的样本天然构成一个配对组,你不需要再自己写配对逻辑。
gene_annotations.tsv 是 Ensembl 的基因注释快照,六万一千余条,八个字段分别是基因号、基因符号、类型、描述、染色体、起点、终点与链方向。类型构成说明了这张表的取向:
| 基因类型 | 条数 | 是否参与差异分析 | 备注 |
|---|---|---|---|
| protein_coding | 两万余 | 是 | 传统分析的主体 |
| lncRNA | 一万七千余 | 是 | 本库的特色覆盖 |
| processed_pseudogene | 9,481 | 是 | 大量低表达,慎用 |
| misc_RNA | 2,207 | 是 | 注释较杂 |
| unprocessed_pseudogene | 1,955 | 是 | 与加工型假基因分列 |
| snRNA | 1,901 | 是 | 小样本下极不稳定 |
| miRNA 前体基因座 | 1,877 | 是 | 是前体,不是成熟 miRNA |
| transcribed_unprocessed_pseudogene | 1,597 | 是 | — |
| TEC | 1,017 | 是 | 待确认编码区 |
所有类型都进入差异分析,没有单独排除。其中 miRNA 与待确认编码区两类值得单独提醒。gene_annotations 里的 miRNA 是 DICER 剪切之前的基因座,不是成熟的二十二个碱基的 miRNA 分子,用 TPM 或 logfc 去解读它,等于在测一个前体。论文的扩展计划里明确写了未来才整合 miRNA 与环状 RNA,说明当前这版并没有针对小 RNA 做过专门处理。
differential_expression.tsv 是分析的主表,一行是“一个比较集里的一个基因”。它的列只有五个:比较集号、GEO 号、Ensembl 基因号、logfc 与 p 值。没有校正后 p 值,没有效应量置信区间,没有基因符号——要符号必须 join 注释表。这张表 139 万余行,是七张表里最值得先拿的。
2.3 一条记录的完整解剖
取 datasets.tsv 的第一行,把它的每一个字段、每一层关联都摊开看。这一行对应的是热休克 39 ℃ 二十四小时,细胞是 iPSC 来源的三维神经聚集体。
id 0
PMID 24736721
GEO_id GSE53667
No_of_samples 4
treatment_type heat_39c_24h
stress_factor heat
Control GSM1298379, GSM1298380
Treatment GSM1298381, GSM1298382
No_of_controls 2
No_of_treated 2
Cell_type iPSC-3D neural aggregate
Tissue Brain
Cell_group Organoid Group
Genotype WT
Genomic_condition Wild-Type
这一行能拆出四层信息。
第一层是比较集身份:record_id 为 0,来自 GSE53667,对应 PMID 24736721。回到原文可以查到这是用 Mariani 等人的方法做的神经聚集体,四十九天龄的聚集体在 39 ℃ 培养箱里放二十四小时,对照组留在 37 ℃。
第二层是设计:两对两,共四个样本。这就是全文最小的一种设计,也是 ASTRA 里最常见的规模。
第三层是标准化后的元数据:细胞类型被写成 iPSC-3D neural aggregate,组织归到脑,细胞状态归到类器官组,基因型标为野生型。这几个字段不是原作者填的,是建库方按 Cellosaurus 与 DepMap 标准化后填的。注意 Cell_group 字段里的双空格,这是源数据的实际状态,用字符串精确匹配会踩坑。
第四层是关联到别的表:拿 GSM1298379 去 harmonized_dataset.tsv 里查,会得到一行 is_control 为 True 的样本记录;拿 record_id 0 去 differential_expression.tsv 里查,会得到这个比较集下六万多个基因的 logfc 与 p 值。两处关联都只需要一个键,这也是整个库能把七张表拼起来的原因:record_id 定比较集,GSM 号定样本,gene_id 定基因,三者互不重叠。
differential_expression.tsv 中 record_id 0 的两行
record_id gse_id gene_id logfc pvalue
0 GSE53667 ENSG00000000003 -0.0754021953643218 0.723006949516518
0 GSE53667 ENSG00000000419 0.333403775875148 0.160445822433306
差异表只有五列:比较集号、GEO 号、基因号、logfc 与 p 值。第四列的 p 值是否经过多重检验校正,论文与表头都没有写明,这一点在 §7.3 会单独列出来。
2.4 分布表:四类应激的内部结构
先看四类应激在样本层面的不对称程度。
按样本看四类的内部结构,结果如下。氧化应激有六十七个比较集行,对照与处理的样本数大致是一百三十对一百五十,细胞状态以参照细胞为主、癌细胞系次之,主力细胞系是 MCF7、HeLa 与 PCS-100-013。UV 有五十二行,样本数大致一百对一百二十,参照与癌细胞系数量接近,主力是 HeLa、CS1AN 与 TK6。热休克有三十九行,对照与处理约四十对八十,参照细胞占多数,主力是 MCF7、VH10 与 HCT116。低氧有二十七行,样本约二十对二十八,癌细胞系占比最高,主力是 MCF7、HUVECs 与 K562。四类合计的对照与处理样本数与 harmonized 表的 291 对 378 一致,分类内的分项为四舍五入后的近似。
热休克一类的对照数明显低于处理数,原因在于多个比较集只有处理组,没有同一张表内的对照行。这类比较集在 datasets.tsv 里的 No_of_controls 是 0,共 56 行,它们不产生差异分析结果,只贡献表达量。
再看细胞系的使用集中度。57 个细胞系里,排在前八位的承担了相当比例的样本。
排在前八位的细胞系分别是 MCF7(乳腺,十六行)、HeLa(宫颈,十二行,四类应激都有使用)、PCS-100-013(皮肤成纤维,十一行,原代样的参照细胞)、VH10(皮肤成纤维,九行,热休克研究常用)、K562(骨髓,八行,悬浮细胞)、HCT116(结肠,七行,结直肠癌)、CS1AN(皮肤成纤维,七行,着色性干皮病来源,UV 研究常用)与 U2OS(骨,六行,骨肉瘤)。前八个细胞系承担的比例超过全库一半,这个集中度决定了任何“跨细胞系”的结论都主要由上皮来源的癌细胞系支撑。
细胞状态三分组的样本量差异同样值得记一笔。按数据集行统计,非疾病参照组 110 行、癌细胞组 69 行、类器官组 6 行。参照组内部既有永生化非癌细胞,也有原代细胞与干细胞,异质程度不低,不能当成同一个基线使用。癌组与参照组比较时,组织来源的差异会混进应激效应里。类器官只有 6 行,任何以类器官为一层的比较都只能算探索性的。
处理条件的写法是这批数据里最不整齐的地方。datasets.tsv 的 treatment_type 字段去重后有 90 种不同字符串,覆盖四类应激各自的剂量与时长组合。常见写法如下。
| treatment_type 写法示例 | 含义 | 写法问题 |
|---|---|---|
| heat_42c_1h | 42 ℃ 一小时 | 小写 c 表摄氏度 |
| heat_42C_1h | 42 ℃ 一小时 | 同一条件的另一种大小写 |
| heat_43C_1h-recovery_2h | 43 ℃ 一小时再恢复两小时 | 恢复条件写在同一个串里 |
| H2O2_500uM_1h | 500 μM 一小时 | 浓度单位合理 |
| H202_800uM_17h | 800 μM 十七小时 | 数字 0 被写成字母 O |
| H2O2_100mM_8h | 100 mM 八小时 | mM 与 μM 差了三个数量级 |
| UV_10 J/m2-recovery_6h | 10 J/m² 后恢复六小时 | 数值里有空格 |
| O2_1%_24h | 1% 氧气二十四小时 | 百分号进入字段名 |
按 treatment_type 做分组统计之前,必须先归一化。用正则把“应激源 + 数值 + 单位 + 时长”拆开重新拼装,是唯一稳妥的做法。后文的代码段给了一个可以跑的例子。
2.5 与同类资源的字段差异
| 维度 | ASTRA | Expression Atlas | GEO | GTEx |
|---|---|---|---|---|
| 收录范围 | 四类应激、人细胞系 | 多物种、多条件 | 全量归档 | 人多组织、健康人 |
| 是否重处理 | 是,单一流程 | 是,单一流程 | 否 | 是 |
| 记录粒度 | 比较集 | 实验 | 系列 | 组织样本 |
| 差异结果字段 | logfc、pvalue | log2FC、p 值、t 统计量 | 作者自定 | 无 |
| 非编码覆盖 | mRNA 与 lncRNA 分列 | 以蛋白编码为主 | 视提交而定 | 以蛋白编码为主 |
| 对照显式标注 | is_control 布尔列 | condensed SDRF | 无 | 无 |
| 许可 | 网站学术免费、包 CC BY 4.0 | CC BY 4.0 | 视提交而定 | dbGaP 受控 |
| 单独下载的扁平表 | 七张 | 按实验目录 | 按系列 | 按版本包 |
再加两行看使用层面的差别:同一个基因想查“哪套数据里显著”,在 ASTRA 里是差异表按基因号过滤,在 GEO 里要逐系列下载作者软表再拼,在 GTEx 里根本不存在“显著”这个概念。同一条查询,三个库的答案形态完全不同。另一行是版本控制:ASTRA 以 Zenodo DOI 锁定,Expression Atlas 以加载日期标记,GEO 以系列更新日期标记,GTEx 以版本号标记。四个库四种治理方式,跨库复现时要把这四种日期都记下来。
这张表要说清一件事:ASTRA 的字段设计是围绕“比较集”这个单位来的,而 Expression Atlas 与 GEO 是围绕“实验”与“系列”来的。比较集是一个比实验更细、比样本更粗的单位,它把“处理对对照”这件事显式化了。这个设计是它在四类应激上比通用库好用的直接原因,也是它不能跨出四类应激的直接原因。
§3 它盯的是“哪一组基因动了”,不是“这一个基因表达多少”
3.1 比较集是它的核心抽象
公共表达库里最常见的单位是样本和实验。样本是“一个管子里的 RNA”,实验是“一次提交”。这两个单位都不直接对应研究者真正想问的问题——真正想问的往往是“处理之后,这一组基因相对对照变了没有”。ASTRA 把这个问题做成了第一等公民,给它起名叫比较集。
比较集的定义在论文的方法里写得很硬:一个比较集必须包含一种人源细胞系、一个明确指定的分子应激源、至少一个未处理对照,并且实验条件与处理方案有清楚记录。四个条件同时满足才收录,任一不满足就剔掉。这个定义带来两个直接后果。第一个后果是库小:全库只留下 59 项研究,而 GEO 里与应激沾边的研究远不止这个数。第二个后果是可比性高:每个比较集内部的对照与处理是同一批实验里出来的,混入的批效应最小。
比较集与样本的关系不是一对一。一个比较集下可以有多组样本,一组对照、一组处理,也可能是一对一、一对多、多对多三种配对形态。一对一是最小设计,单样本处理对单样本对照,差异结果可算但没有重复,只当线索不做统计;一对多常见于多剂量共用一个对照,差异可算,但剂量之间共享同一条基线,稍不注意就把伪独立当成生物学重复;多对多是同一条件多个生物学重复,最可靠,遇到了优先选用;还有一种是无对照,只有处理组,这类在库里占 56 行,差异结果不可算,但它们仍进表达矩阵,所以查单个基因的 TPM 时它们会出现。
论文把三类应激源以外的变量也做了统计:四十个不同的处理时间点、二十七个不同的剂量水平、二十六种细胞系基因型。这些数字都不大,说明库的整体尺度就是一个“手工整理的窄集”,而不是一个大体量工程。它的价值不在数量,而在于每个比较集都经过了同一条筛选标准的检验。
3.2 处理与对照的配对关系
配对关系直接决定一个比较集能不能算差异,也决定算出来的差异意味着什么。上面已经把四种配对形态说过,这里换一个角度看同一件事:配对决定了“参照点”在哪里。
同一批实验里的对照,是最干净的参照点,因为它和处理的唯一差别就是应激本身。不同批次的对照,会引入批次效应,这种效应急性应激基因特别容易受影响。而没有对照,参照点就落到了“同细胞系的其他研究”上,跨研究的差异会被误判为应激效应。ASTRA 通过要求配对对照,把第三种情况挡在差异分析之外,但没有完全挡住第二种,因为同一个 record_id 下的对照和处理都是作者同一批交的,批次效应在作者层面就已经存在,ASTRA 无法消除。
这一点在跨细胞系比较时尤其要小心。MCF7 与 HeLa 对同一种应激的响应差异,一部分来自生物学,一部分来自两个细胞系在不同实验室、不同培养基、不同代次下的基线差异。库里能提供的是细胞系身份与处理条件,提供不了培养基配方与细胞代次的完整记录,因为原作者本来就没有系统记录这些。
3.3 时间与剂量的记录方式
三种变量在记录方式上差别很大。处理时长写在 treatment_type 字符串里,大部分有,格式不统一,带 recovery 字段的要单独拆出恢复时长;剂量也写在同一个字符串里,大部分有,但单位混用,mM 与 μM 必须统一;时间点与剂量水平的全局计数是论文给的四十个与二十七个,单个比较集内通常只有一个时间点与一个剂量。细胞代数写在 sample_metadata 的 growth_protocol_ch1 里,视原文而定,多数缺失。
剂量与时长只在字符串里,没有一个独立的数值列。这意味着任何按剂量分箱的分析,都得先自己解析字符串。这是它作为“重处理资源”没有做到位的一处,代价由使用者承担。
3.4 细胞系身份是怎么标准化的
四个处理步骤分别是:按 Cellosaurus 标准名对照合并同一细胞系的不同写法,少数未命中的条目保留原样;用 DepMap 补组织来源,使组织字段可用于分组,但大小写与拼写不统一;把细胞状态归为参照、癌、类器官三组,从而支持“病人对健康”式的对比,代价是原代与永生化被混在同一组;把基因型二分为 WT 与 Variants,支持野生型与变异系的比较,代价是敲低与敲除同属一类。
基因型的归并比较粗。161 行标为 Wild-Type,24 行标为 Variants,后者包括敲除、敲低、突变与 CRISPR 改造。从生物学上看,敲低和点突变不是一回事,但在 ASTRA 的字段里它们同属一类。要做精细的基因型分析,得回到原表逐个看 Genotype 字段的具体值。这个字段的价值在于快速筛出“有基因改造的比较集”,而不在于告诉你改造了什么。
3.5 它标出的“身份”里,哪些能直接用
由此得到的可用性判断可以归纳成一张表:
由此可以排出一个三档清单。能直接用于分组的只有 stress_factor 与 is_control 两个;需要二次清洗才能用的是 Cell_type(个别值是设备编号)、Cell_group(先去双空格)与 Genotype(敲低与敲除混同,只能粗分);不建议直接用于统计的是 Tissue(拼写与大小写不一致)与 treatment_type(九十种写法必须归一化)。
§4 质量:干净的地方与不干净的地方
4.1 统一流程到底统一了什么
流程从 FASTQ 开始。原始数据不在 GEO 取,而是从 ENA 按 SRR 号取——这一步在实践上很重要,因为 GEO 只存元数据与软表,真正的测序文件在 SRA 与 ENA,ENA 的 FTP 路径更直白。
ASTRA 的重处理链由七个环节组成:
七个环节依次是:用 FastQC 评估原始 reads 质量;用 Minion Reaper 识别接头序列;用 Cutadapt 切除接头,得到干净 reads;用 STAR 比对到 GRCh38;用 RSEM 做转录本定量,输出 TPM;用 edgeR 在配对样本上做处理对对照的差异分析;用 biomaRt 映射 Ensembl 基因号。这七个工具全部是领域内通行的公开软件,没有自研组件,意味着整个流程可以被任何有算力的团队复现。
复现一段的速度比想象中快:一个样本的 FASTQ 到 TPM 在普通服务器上几个小时能跑完,669 个样本的核心开销在下载与排队。真正耗时的不是算,而是确认每个比较集的条件与对照是否配得上——这件事 ASTRA 已经做过一遍,你省下的正是这一段。
统一的边界很清楚:比对版本、定量方法、差异检验的软件与实现被拉齐了;样本收集、文库制备、测序平台、剂量与时长没有被拉齐。前者决定数字能不能放在一起,后者决定数字意味着什么。
把这条链拆成八个环节逐个看,是否统一很清楚。测序平台不统一,决定读长与错误谱;文库制备不统一,决定 3′ 偏好与链特异性;去接头与修剪统一,影响比对率;比对与参考基因组统一,消除版本漂移;定量统一为 TPM;差异检验统一为 edgeR;剂量与时长不统一,直接决定生物学含义;细胞代数与培养条件不统一,影响基线表达。
4.2 mRNA 与 lncRNA 分列的代价与收益
把长链非编码 RNA 与蛋白编码基因分开汇总,是 ASTRA 相对多数同类资源最明显的一处加法。收益是直白的:做非编码 RNA 应激响应的人,不必自己从原始数据里重新定量一遍。
代价也直白。lncRNA 的表达量普遍低于蛋白编码基因,TPM 落到个位数甚至零点几的情况很常见。在只有两三个重复的比较集里,低表达基因的差异检验结果非常不稳,p 值的小幅波动就会让一个候选基因在 0.04 与 0.06 之间反复横跳。
两类基因的差别可以用四个维度概括。注释条数上,蛋白编码两万余条、长链非编码一万七千余条,体量相当;典型表达水平上,前者中到高,后者偏低;小样本下的稳定性上,前者较好,后者差;跨平台一致性上,前者较好,后者强依赖文库制备。因此建议的筛选门槛也应不同:蛋白编码基因用 p 小于 0.01 且 logfc 绝对值大于 1 即可起步,lncRNA 还要额外要求方向在多个比较集里一致。
4.3 元数据的完整度
八项元数据的覆盖情况是:细胞系名与组织来源全部齐全,前者来自原研究加标准化,后者由 DepMap 补齐;测序平台全部齐全,来自 sample_metadata;处理时长与剂量大部分可解析,来源是 treatment_type 字符串,缺了就既不能按时间分层也不能做剂量-响应;培养基部分可查,来自 growth_protocol 字段;细胞代数与血清情况只有少数研究写清,缺了就无法评估细胞漂移与血清对基线的缓冲作用。
4.4 案例:MCF7 的氧化应激那一组比较集
MCF7 是库里用得最多的细胞系,十六个比较集涉及它。取其中一个过氧化氢 500 μM 一小时的比较集做解剖,能看到这套数据结构里最典型的一条路径。它是乳腺癌来源、归在癌组、基因组状态为野生型,处理是 500 微摩尔一小时,设计是两对两共四个样本,靠 record_id 贯穿三张表。
这个比较集的 record_id 在 datasets.tsv 里能找到,stress_factor 为 h2o2,treatment_type 形如 H2O2_500uM_1h,Cell_group 为 Cancer Group,Genomic_condition 为 Wild-Type。它有一条配对对照,两个样本对两个样本。
第一步,从 harmonized 表查样本。四个 GSM 号,两个 is_control 为真,两个为假。四个样本在 sample_metadata 里都能找到原始描述:细胞名、处理方式、建库试剂盒、测序平台。这些描述是作者写的,措辞各不相同,但足以判断这是同一批实验。
第二步,从差异表取结果。按 record_id 过滤,得到这个比较集下四万九千多个基因的 logfc 与 p 值。这时会发现两件事:蛋白编码基因与 lncRNA 混在同一张表里,要区分得去 join 基因注释表;p 值没有校正列,得自己套 Benjamini-Hochberg。
第三步,做筛选。这里就碰到 §4.2 提到的问题:如果门槛直接定在 p 小于 0.05 且不校正,候选基因会有数千个;如果加上 BH 校正,候选会掉到几百个;如果再要求 logfc 绝对值大于 1,只剩几十个。三个门槛对应三个完全不同的候选集,而论文没有告诉你该用哪一个。
第四步,横向对照。把这个比较集的候选基因,与同一应激类别下其他 MCF7 的比较集做个交集。如果一条基因在三个以上独立的 MCF7 氧化应激比较集里都同向变化,它的可信度才值得往下走。整个 MCF7 氧化应激案例给出的经验是:不要看单个比较集的名次,要看跨比较集的复现次数。
第五步,回到原始数据。选定两三个候选后,回到 GEO 取对应 GSE 的原始 FASTQ,用原文方法或自己的方法重跑一遍,看方向是否还在。这一步不能省,因为前面这个 MCF7 氧化应激案例的整条路径每一步都有信息损失,损失叠三轮之后,剩下的只是一个假设。
整条路径的信息损失可以逐段列出来:
损失分布在五个路径段上。挑选比较集这一段,从全库收窄到一个 MCF7 氧化应激比较集,丢掉的是其他剂量与时长;取样本这一段,从四个 GSM 号得到两组 TPM,丢掉的是原始读段的质量信息;取差异结果这一段,从差异表子集得到全基因的 logfc 与 p 值,丢掉的是检验细节;阈值筛选这一段,从全基因结果收窄到候选集,代价是阈值主观、结论随阈值漂移;横向对照这一段,从单比较集候选变成跨比较集复现候选,代价是比较集之间不可直接平均。
4.5 网站能做的与表能做的
网站提供三个分析模块:研究选择、基因检索、差异表达。它们对应的是“筛—查—比”三种动作,输出是可下载的表与交互图。这些在数据层面都能用扁平表复现,网站的价值在于快,不在于多。研究选择页给两张同步的表,一张研究一张样本,可以边筛边看;基因检索页按基因号返回它在各比较集里的 TPM 与倍数变化;差异表达页是唯一带统计筛选的地方,可以按 log2 平均倍数变化与平均 p 值设阈值。
按六种动作逐一对照:按细胞状态筛比较集,网站是交互筛选,表是过滤 Cell_group,两者都行、网站更快;单基因跨比较集查询,网站有基因检索页,表要 join 差异表与注释表,网站更快;全库批量计算与自定义统计,网站不支持,表完全支持;出图看趋势,网站内置图表,表要自己画,网站省事;离线复现,网站无法做到,只能用表。分界线很清楚:探索用网站,复算用表。
§5 取数:网站、Zenodo、源码三条路
5.1 网站是 Streamlit 应用,静态抓取拿不到内容
打开 https://astra-db.com/ 返回的是 200,但页面只有不到一 KB 的 HTML,正文靠浏览器端脚本渲染。用 curl 或者任何不执行 JavaScript 的抓取方式,看到的都是空壳。这不影响使用,但影响自动化:想用脚本从网站上批量取数,得走网站的后端,或者干脆用 Zenodo 的表。
5.2 Zenodo 全量包
Zenodo 记录 10.5281/zenodo.15885686 提供七个文件,发布日期是 2025 年 7 月 14 日,许可 CC BY 4.0。七个文件里最大的是表达矩阵,约 1.3 GB,第二大的差异表约 88 MB,其余五个都在 10 MB 以下。
七张表的大小在 §2.2 已经列过。下载策略只分两档:五张小表(清单、研究、样本、索引、注释)合计不到 10 MB,无条件全取;差异表 88 MB,只要做基因层面分析就必须取;表达矩阵 1.3 GB,只有自己重算 TPM 或做定量层面的检查时才需要。下载方式是 Zenodo 的固定路径,不需要令牌。
#-- 建目录并取回体积较小的五张表
mkdir -p astra_data && cd astra_data
base="https://zenodo.org/api/records/15885686/files"
for f in datasets study_metadata sample_metadata harmonized_dataset gene_annotations; do
curl -fL "$base/$f.tsv/content" -o "$f.tsv"
done
wc -l *.tsv
#-- 差异表 88 MB,需要时再取
curl -fL "$base/differential_expression.tsv/content" -o differential_expression.tsv
下载完先核对行数。datasets.tsv 应当有 185 个数据行,study_metadata.tsv 59 个,sample_metadata.tsv 与 harmonized_dataset.tsv 各 669 个,gene_annotations.tsv 六万一千余个。任何一个对不上,说明快照换了版本。
#-- 行数核对(第一行是表头,所以数据行数要减一)
for f in datasets study_metadata sample_metadata harmonized_dataset gene_annotations; do
n=$(($(wc -l < "$f.tsv") - 1))
echo "$f data_rows=$n"
done
5.3 用 pandas 拼出一张可分析的表
拿到扁平表之后,第一件事是把差异结果、基因注释与样本分组拼在一起。下面的脚本可以在本地跑,不依赖任何私有接口。
import pandas as pd
#-- 读入五张小表,分隔符是制表符
ds = pd.read_csv("datasets.tsv", sep="\t")
harm = pd.read_csv("harmonized_dataset.tsv", sep="\t")
genes = pd.read_csv("gene_annotations.tsv", sep="\t")
de = pd.read_csv("differential_expression.tsv", sep="\t")
#-- 字段值带双空格,先做去空白
ds["Cell_group"] = ds["Cell_group"].str.strip()
harm["Cell_group"] = harm["Cell_group"].str.strip()
#-- 表达矩阵按需读入,只取需要的比较集
expr = pd.read_csv("expression_data.tsv", sep="\t", index_col=0)
print("比较集行", len(ds), "样本", len(harm), "基因", len(genes), "差异行", len(de))
print(ds["stress_factor"].value_counts())
print(harm["is_control"].value_counts())
差异表与表达矩阵都很大,读入时不要一口气全部 join。按 record_id 分批处理,内存压力会小很多。
#-- 分批 join:先缩小基因集,再与差异表合并
coding = genes.loc[genes["biotype"].isin(["protein_coding", "lncRNA"]), "gene_id"]
for rid, sub in de.groupby("record_id"):
keep = sub.loc[sub["gene_id"].isin(coding)].copy()
keep = keep.merge(genes[["gene_id", "gene_symbol", "biotype"]], on="gene_id", how="left")
#-- 其余略:在这里对 keep 做 BH 校正与阈值筛选
5.4 处理条件字符串的归一化
归一化之后还要做一件事:把处理时长从字符串里拆到一个独立列。原因是要做“短暴露对长暴露”的对比时,按字符串排序会把 1h 排在 30min 前面。下面这段把时长统一折算成分钟。
import re
def to_minutes(t):
"""把 1h / 30min / 2days 统一折算为分钟"""
if not isinstance(t, str) or not t:
return None
m = re.match(r"(\d+(?:\.\d+)?)\s*(min|h|hr|hour|hours|d|day|days)", t, re.I)
if not m:
return None
v = float(m.group(1))
unit = m.group(2).lower()
if unit.startswith("h"):
return v * 60
if unit.startswith("d"):
return v * 1440
return v
ds["duration_min"] = ds["duration"].apply(to_minutes)
print(ds["duration_min"].describe())
90 种 treatment_type 写法是这套数据最容易踩的坑。下面这段把字符串拆成四个标准列。
import re
import pandas as pd
def parse_treatment(s):
"""把 treatment_type 拆成 应激源 / 数值 / 单位 / 时长 四段"""
s = str(s).strip()
#-- 先修常见编码错误:字母 O 当数字 0,mM 统一视为 mM 保留原单位
s = re.sub(r"H202", "H2O2", s, flags=re.I)
m = re.match(r"(?P<agent>[A-Za-z0-9]+)_(?P<val>[0-9.]+)\s*(?P<unit>[a-zA-Z/%]+)?(?:_(?P<time>[0-9]+[a-z]+))?", s)
if not m:
return pd.Series({"agent": None, "value": None, "unit": None, "duration": None})
g = m.groupdict()
return pd.Series({
"agent": g["agent"].upper(),
"value": float(g["val"]),
"unit": (g["unit"] or "").lower(),
"duration": g["time"],
})
ds = pd.read_csv("datasets.tsv", sep="\t")
parsed = ds["treatment_type"].apply(parse_treatment)
ds = pd.concat([ds, parsed], axis=1)
print(ds["unit"].value_counts(dropna=False).head(10))
跑完会看到单位列里同时出现 um、um、µM、mM 几种写法。把它们映射到同一个量纲再比较,是这一步的全部目的。
5.5 跨比较集汇总的三种做法
三种做法各有明确的适用问题。取交集是每个比较集取显著基因再求交,回答“哪些基因在多数比较集里都显著”,风险是样本小的比较集贡献几乎为零。方向投票是每个比较集只记上调或下调再统计票数,回答“方向是否稳定”,风险是忽略效应量大小。分层平均是按应激类别与细胞状态分层再做层内合并,回答“某类应激的平均效应”,风险是层内样本仍不均质。
§4.4 的案例用的是第二种做法,原因是 MCF7 的氧化应激比较集之间剂量跨度太大,直接取平均会把 50 微摩尔与 500 微摩尔的效应混在一起。
三种做法都有人用,但第三种最容易被误用。分层之后如果某一层只有两三个比较集,合并出来的平均值没有统计意义,只是一个加权数。
5.6 常见取数错误
六种取数错误各有代价与正解:把表达矩阵全量读入再 join 会内存溢出,应按 record_id 分批;用 id 列当比较集号会关联错行,应改用 record_id;用 GSE_id 当唯一键会漏掉一个系列拆出的比较集,应改用 record_id 加 treatment_type 的复合键;按 Tissue 精确匹配分组会因拼写差异漏行,应先小写化并去空格;认为 p 值已校正会让候选基因虚高,应自己套 BH;把 No_of_controls 为 0 的行算进差异统计会让分母出错,应只取有对照的比较集。
六种错误里,前三种会让结果错误而不报警,后三种会让结果缩小而看不到报错。它们共同的根源是把一个宽表当成了关系表来用。把七张表当关系表看,键只有三个,其余都是描述字段,出错概率就会降下来。
§6 与库内条目的关系
6.1 关系图谱
ASTRA 站在几个更大的资源之上,同时与几个下游资源形成分工。
八个相关条目分三类关系。上游一组是 GEO、SRA 与 Cellosaurus、DepMap:GEO 存提交、ASTRA 取其中应激子集重算,要全量、最新或原始 FASTQ 就去 GEO;SRA 与 ENA 存 FASTQ,要重跑比对就去那边;细胞系标识与注释由 Cellosaurus 与 DepMap 补出,要查细胞系来历与依赖性直接去原库。平行一个是 Expression Atlas,它同样做重算,但重在处理广度,ASTRA 重在应激纵深。互补一组是 GTEx、TCGA 与 ENCODE:前者给健康人组织的基线表达,用来把应激响应放回组织背景;TCGA 给肿瘤转录组,用来问这个变化在肿瘤里是否也成立;ENCODE 给调控元件与结合位点,用来把差异基因落到调控层上。三者加在一起,才构成从表达变化到机制解释的完整链路。
6.2 检索路径
六条检索路径覆盖绝大多数入口。从一个候选基因出发,差异表按 gene_id 过滤,得到它在哪些比较集里显著;从一类应激出发,datasets 按 stress_factor 过滤,得到该类下所有比较集;从一个细胞系出发,datasets 按 Cell_type 过滤,得到它参与的应激实验;从一篇论文出发,study_metadata 按 pubmed_id 反查,得到对应的比较集与样本;从一个 GEO 系列出发,datasets 按 GSE_id 过滤,得到该系列拆出的比较集;从一个 GSM 样本出发,harmonized 按 GSM_ID 查,得到它属于哪个比较集、是对照还是处理。
从任何一个起点进入,最终都会落到 §4.4 的案例用过的那三张表上:datasets 定比较集,harmonized 定样本,differential 定结果。三张表以 record_id 为轴,这是整个库能横向拼接的前提。
§7 质量评估与局限性
7.0 阅读本节前的一个前置校正
下面这张表把常见的三种错位评价方式列出来,避免在后面几节里继续误判。它们都不是事实错误,而是评价口径的错位。
| 常见评价口径 | 错在哪里 | 换成什么口径 |
|---|---|---|
| 样本太少,不如公开大库 | 拿总量比,不看单位 | 比“可比较的比较集数量” |
| 只收四类应激,太窄 | 拿广度比,不看纵深 | 比“同一类应激内的条件颗粒度” |
| 没有单细胞,落后 | 拿技术形态比,不看问题 | 比“bulk 层面能否直接对得上” |
在给这个库打分之前,先纠正一种常见的错位:把它当成“应激转录组的全量参考”来评价。按这个标准,它必然不及格——只收四类、每类一个应激源、样本总量不到七百。但这种评价方式本身就是误判,因为它从一开始就没打算做全量。
它的自我定位是一个纵深资源:在四类应激这个窄口上,把能收的都收进来,并且收得足够整齐。按这个标准评价,要看的是这四类内部的覆盖是否均匀、标准是否一致、结果是否透明。下面五维打分按后一个标准。
7.1 五维评分
评分按 DAIMS 框架的五维口径,每维给分并写明扣分点。
五个维度的打分与理由分别是:可发现性 4.0 分,有 NAR 论文、稳定域名与 Zenodo DOI,扣分在网站无静态正文、搜索引擎收录的摘要有限;可访问性 4.5 分,网站无需注册、Zenodo 无需令牌、源表直链,扣分在网站依赖脚本渲染;互操作性 3.5 分,TSV 与 Ensembl 基因号是通行格式,但处理条件没有结构化字段,跨库对齐要自己写解析;可复用性 3.5 分,七张扁平表可以离线全量复算,扣分在网站与 Zenodo 快照可能不同步;可信度 4.0 分,流程参数透明、论文可查、来源可溯至 GEO,扣分在 p 值是否校正未写明、部分字段编码不整齐。合计十九点五分,满分二十五,这一档对应的是“方向明确、执行到位、但细节留了口子”的资源。
7.2 与同定位资源的对比
与同类比,强弱是互补的:对 GEO,它强在可直接横向比较,弱在全量、最新与原始文件下载;对 Expression Atlas,它强在应激条件元数据更细、lncRNA 单独成列,弱在物种与条件覆盖以及注释规范度;对各实验室自建的应激数据集,它强在一个入口一套流程,弱在特定条件下的深度与实验控制。
7.3 已知的、可枚举的偏差
| 偏差 | 表现 | 影响 | 缓解办法 |
|---|---|---|---|
| 应激源单一 | 每类只收一个分子应激源 | 结论不能外推到同类其他应激源 | 明确写清限定条件 |
| 细胞系集中 | 少数常用细胞系占多数样本 | 反映的是常用细胞模型,不是人体 | 按细胞状态分层后再下结论 |
| 组织不均 | 乳腺、肺、皮肤占比高 | 少见组织的结论样本支撑薄 | 少见组织结论标为探索性 |
| 类器官极少 | 仅 6 行 | 三维模型比较无统计意义 | 不做类器官专项结论 |
| 无对照的比较集 | 56 行 | 这些行不能进差异统计 | 差异分析时剔除 |
| p 值口径不明 | 表中只有 pvalue 一列 | 直接按 0.05 筛会大量假阳性 | 自己套 BH 校正 |
| 字段编码不一致 | H202、mM 与 μM 混用 | 按字符串分组会漏行 | 归一化后再统计 |
| 非人样本混入 | 669 个样本里有 1 个物种是小鼠 | 逐样本统计时出现异常 | 按 organism 字段过滤 |
| 快照滞后 | Zenodo 停在 2025-07 | 网站新增内容不可离线复现 | 关键分析记录版本与日期 |
| 剂量与时长不齐 | 90 种处理写法,单位混用 | 同类比较集之间效应量不可直接平均 | 归一化后按时间分箱 |
| 单集样本过少 | 多数比较集 2–6 个样本 | 单集差异检验效力低 | 跨比较集复现投票 |
7.6 与三份外部参照的对齐检查
偏差不能只靠自己枚举,还要放到外部参照里看是否成立。三个角度各给出一个可以复做的检查方法。
第一个角度是与原始论文对齐。任取一个比较集,把它在 PMID 里对应的原文找出来,看作者自己报告的显著基因方向与 ASTRA 差异表里的方向是否一致。方向不一致的比例越高,说明流程差异对结论的影响越大。这个检查可以批量做,只要原文有可下载的补充表。
第二个角度是与另一套重处理结果对齐。Expression Atlas 里同样收录了部分 GEO 系列,两边对同一批样本的重算结果可以做一致性对比。效应量有系统性偏移是正常的,方向大面积翻转才需要警惕。
第三个角度是与独立实验对齐。如果你手上有同细胞系、同应激源的自测数据,可以把库里的效应量排序与自己的结果做秩相关。相关系数高说明库里的相对排序可用,绝对值仍不可直接用。
三个检查各自独立,任何两个方向一致就能支撑“这个库在你的场景里可用”的判断,三个都反过来,说明你的场景落在库的边界之外。
三个角度的成本差别很大。第一个最便宜,只需要公开数据与脚本;第二个中等,要拿到对方库里的同系列结果并对齐基因号;第三个最贵,需要自己的湿实验数据。建议的顺序是从便宜到贵:先用第一个排除明显离群的比较集,再用第二个确认流程差异的幅度,最后才用第三个确认具体的效应量。
这十一条里,前三条是设计决定带来的偏差,无法修复,只能在报告里写清限定;中间六条是执行层面的瑕疵,可以用脚本绕开;最后两条是时间与版本带来的漂移,靠锁定版本应对。把这九条与 §7.0 的前置校正连起来看,可以得到一条实务结论:这个库适合做假设生成与候选排序,不适合做效应量估计与确证性检验。效应量估计要选同细胞系、同剂量、同时长、且重复数足够的比较集,全库满足这四条的比较集并不多。
7.4 外部验证矩阵
四个外部参照各有边界,下面逐一说清能验证什么、不能验证什么。拿比较集对应的 PMID 与原始论文对比,能看主要结论方向是否一致,但具体 p 值不可比。拿同一 GSE 在 Expression Atlas 中的重算结果对比,能看流程差异带来的效应量差别,但两边的条件覆盖不完全重叠。拿同细胞系同条件的自测数据对比,能看库内结果是否可迁移,但只对单一条件有效。拿已知应激通路的基因集对比,能看已知通路是否富集,但新通路无法通过它验证。
| 参照 | 能验证 | 不能验证 |
|---|---|---|
| 原始论文 | 主要结论方向 | 具体 p 值 |
| Expression Atlas 重算 | 流程差异的效应量幅度 | 条件覆盖不完全重叠的部分 |
| 自测同条件数据 | 库内结果的迁移性 | 单一条件以外的情况 |
| 通路基因集 | 已知通路是否富集 | 新通路 |
7.5 它为何能持续:一个窄口上的长期策展,靠的是成本可控与需求明确
这类资源最难的不是建,是维护。全量转录组库要跟上所有物种所有条件,成本无上限。ASTRA 把范围锁死在四类应激,每月从 GEO 补录,人力投入可以预估,这是它能持续的机制基础。需求侧同样清楚:做应激生物学的人不多,但队伍稳定,且每个人都要面对同样的碎片化问题。窄口加稳定需求,是这个资源能活下来的现实理由。
§8 生态位与历史
8.1 历史沿革
时间线只有四个节点,每个节点都对应一次定位变化。2015 年团队发表氧化应激下编码与非编码基因组差异表达的研究,奠定了“mRNA 与 lncRNA 分开看”的方法偏好;2024 年发表 KDM7A-DT 与基因毒性应激的研究,延续了非编码 RNA 在应激中角色这条线;2025 年 7 月 Zenodo 发布第一版全量数据包,数据第一次可以离线整包获取;2026 年 1 月 NAR 数据库专刊论文发表,资源身份与引用入口正式确立。
从这条线能看出,ASTRA 不是一次性的数据整理项目,而是一个研究方向的沉积。团队先做了几年应激与非编码 RNA 的具体研究,再把这些研究的分析方法固化成库。这解释了为什么它对 lncRNA 的处理比多数同类资源细。
8.2 生态位:介于通用库与专项库之间
四个相邻位置可以逐一对照。通用归档如 GEO 与 SRA,全量、不重算,ASTRA 的差异是它做重算与筛选。通用重处理库如 Expression Atlas,广覆盖、统一流程,ASTRA 的差异是窄覆盖但应激纵深。专项库如各类通路或疾病专题库,围绕一个生物学问题,ASTRA 与之的区别是它围绕一类刺激而不是一类疾病。项目组自建的应激数据集深但不广,ASTRA 比它广,但仍在一个窄口内。
这个位置有一个隐含的取舍:越靠专项,越容易被领域内的人记住;越靠通用,越容易被当作基础设施。ASTRA 选了前者。
8.3 与相关方向的分工
五个相关方向的接法不同。应激响应基因发现问“哪些基因在应激下变化”,ASTRA 出候选,验证靠实验。应激通路富集问“变化集中在哪些通路”,用它的差异表接通路库。调控机制问“变化由哪些转录因子或元件驱动”,需要接 ENCODE。疾病关联问“应激响应的基因是否与疾病相关”,需要接 TCGA 或 GWAS 汇总。药物应激模拟问“药物是否引发类似响应”,把它的数据当参考指纹用。
8.4 扩展计划与它的含义
论文里列出的扩展方向包括:在既有类别下增加新的处理方式、纳入 miRNA 与环状 RNA、增加 ATAC-seq 与 ChIP-seq 等组学层、加入小鼠与酵母等模式生物、新增内质网应激与渗透应激等类别。
五项计划对当前使用者的含义各不相同:增加处理方式意味着现有四类的单一应激源限制未来会松动,但现在还没松;纳入小 RNA 提醒你当前注释里的 miRNA 只是前体,别当成熟分子用;增加表观层说明现在还没有调控层数据,要做得自己接;加入模式生物说明现在几乎全是人源细胞系;新增应激类别说明内质网应激与渗透应激目前完全不在库内。
§9 使用指引
9.1 三种角色的路径
三种角色的共同前提是:先想清楚你的问题属于“发现”还是“确证”。发现类的任务适合用它,确证类的任务不适合。下面三条路径按这个前提来排。
| 角色 | 起点 | 三步路径 | 交付物 |
|---|---|---|---|
| 探索型研究者 | 一个宽泛问题 | 先按应激类别看规模,再按细胞状态筛选,最后锁定两三个比较集精读 | 一份候选基因清单 |
| 生信分析者 | 一个具体基因或基因集 | 下载五张小表,归一化处理条件,跨比较集算方向一致性 | 一张带复现次数的表 |
| 实验设计者 | 一个待验证假设 | 找到同细胞系同条件的比较集,看效应量,设计验证实验 | 一组带预期方向的候选 |
9.2 一条最短的可用流程
从零到一张可用候选表,最短路径是下载四张小表加差异表,做三步处理。
#-- 第一步:下载(五张小表约 9 MB,差异表 88 MB)
mkdir -p astra_data && cd astra_data
base="https://zenodo.org/api/records/15885686/files"
for f in datasets harmonized_dataset gene_annotations differential_expression; do
curl -fL "$base/$f.tsv/content" -o "$f.tsv"
done
import pandas as pd
from statsmodels.stats.multitest import multipletests
#-- 第二步:读表并只保留有对照的比较集
ds = pd.read_csv("datasets.tsv", sep="\t")
harm = pd.read_csv("harmonized_dataset.tsv", sep="\t")
genes = pd.read_csv("gene_annotations.tsv", sep="\t")
de = pd.read_csv("differential_expression.tsv", sep="\t")
with_ctrl = set(ds.loc[ds["No_of_controls"] > 0, "id"].astype(int))
de = de.loc[de["record_id"].isin(with_ctrl)]
#-- 第三步:逐比较集做 BH 校正并筛选
hits = []
for rid, sub in de.groupby("record_id"):
sub = sub.dropna(subset=["pvalue"]).copy()
if len(sub) < 1000:
continue
sub["padj"] = multipletests(sub["pvalue"], method="fdr_bh")[1]
sig = sub.loc[(sub["padj"] < 0.05) & (sub["logfc"].abs() > 1)]
hits.append(sig.assign(record_id=rid))
sig_all = pd.concat(hits, ignore_index=True)
sig_all = sig_all.merge(genes[["gene_id", "gene_symbol", "biotype"]], on="gene_id", how="left")
#-- 第四步:统计每个基因出现在多少个比较集里
votes = (sig_all.assign(direction=sig_all["logfc"] > 0)
.groupby(["gene_id", "gene_symbol", "direction"])
.size().rename("n_records").reset_index()
.sort_values("n_records", ascending=False))
print(votes.head(20))
votes.to_csv("astra_candidates.tsv", sep="\t", index=False)
这段跑完得到的是一张“基因 × 方向 × 出现次数”的表。出现次数在三个以上、方向一致的,才值得往下看。
9.3 三类人群的最短路径
上面那张三种角色的表给的是心智路径,这里给的是可执行的最短路径,按人群分别写。
| 人群 | 已有条件 | 最短步骤 | 预计产出 |
|---|---|---|---|
| 临床或湿实验背景的研究者 | 一个候选基因,无编程 | 打开网站基因检索页,输入符号,看列表里的应激类型与方向 | 一张候选清单,标注方向 |
| 生信工程师 | Python 环境,会 pandas | 下五张小表加差异表,跑 §9.2 的脚本 | 一张基因 × 方向 × 复现次数的表 |
| 资源管理或立项评估者 | 需要比较同类资源 | 读本文 §2.5、§7.2、§8.2 三处,再核对 Zenodo 与 Expression Atlas | 一页选型结论 |
引用这个资源时需要同时给出三样:数据库论文、数据包 DOI、访问日期。论文是资源身份的依据,数据包 DOI 是版本依据,访问日期是因为网站在更新而数据包不跟。
Tsifintaris M, Grigoriadis D, Sitmalidis M, et al. ASTRA: a comprehensive
resource of stress-induced transcriptional activity in human cell lines.
Nucleic Acids Res. 2026;54(D1):D938-D948. doi:10.1093/nar/gkaf1174
ASTRA data package, version 2025-07-14. Zenodo.
doi:10.5281/zenodo.15885686
9.4 引用方式
§10 AI 使用声明
| 环节 | 谁做的 | 具体内容 | 需要你复核什么 |
|---|---|---|---|
| 实体核验 | 模型执行 | 检索同名候选,排除公司、试验、光束线、量表等 | 是否还有未覆盖的同名资源 |
| 论文摘要 | 模型执行 | 从 Europe PMC 取摘要与全文 XML | 摘要之外的设计细节 |
| 网站探活 | 模型执行 | 对官方域名做 HTTP 请求 | 网站当前数据库是否更新 |
| 数据清单 | 模型执行 | 从 Zenodo 取七个文件的元数据与五个小表 | 快照是否仍为同版本 |
| 字段统计 | 模型执行 | 按字段计数,与论文口径比对 | 分类计数是否符合你的定义 |
| 正文写作 | 模型起草 | 结构、示例、评分、路径 | 与你领域的实际经验是否相符 |
| 事实取舍 | 人工 | 哪些数字进正文、哪些标未核实 | 是否存在过度解读 |
| 口径判断 | 人工 | 论文与数据包不一致时如何表述 | 是否与最新共识冲突 |
常见误读(避坑清单)
下面是十条常见误读。每条的第三列都指向本文的具体出处,便于逐条核对,而不是只记结论。
| 常见说法 | 实际 | 证据 |
|---|---|---|
| ASTRA 是个大数据集 | 669 个样本、86 个比较集,规模很小 | 论文与 sample_metadata 行数一致 |
| 它包含所有已知应激源 | 每类只收一个分子应激源 | 论文方法节明确单一指派 |
| 它的差异 p 值可以直接按 0.05 筛 | 表中只有原始 p 值一列 | differential_expression.tsv 表头 |
| 网站上的数据比 Zenodo 新 | 网站按月更新,包停在 2025-07 | 论文更新节奏与 Zenodo 发布日期 |
| 它是全人源数据 | 669 个样本里有 1 个物种是小鼠 | sample_metadata 的 organism 字段 |
| 处理条件字段可以直接分组 | 90 种写法,含编码错误 | datasets.tsv 的 treatment_type 去重 |
| 类器官数据够做专项分析 | 只有 6 行 | Cell_group 计数 |
| 它是 CC BY 全开放 | 网站是学术免费,论文是 CC BY-NC | 论文版权页与 Zenodo 元数据 |
| 一个 GSE 等于一个比较集 | 一个 GSE 可拆出多个比较集 | datasets.tsv 的 GEO_id 重复计数 |
| 用它可以省掉读原文 | 剂量时长都在原文,库里只有串 | sample_metadata 的 protocol 字段 |
FAQ
十二问覆盖的都是实际使用中最常撞上的问题,按“是什么、能不能、怎么用、会不会”四类排列。
Q1:ASTRA 和 GEO 是什么关系?
它是消费方不是生产方。原始测序数据都在 GEO 与 ENA,ASTRA 做的是挑出应激特异的那一批,用统一流程重算,再把结果拆成可以横向比较的小表。要原始 FASTQ 去 ENA,要能直接比的表达量与差异结果来这里。
Q2:能不能拿它当应激生物标志物的一次性筛选平台?
可以当候选清单来源,不能当验证。每个比较集样本数很少,且应激源的剂量与处理时长来自原作者,ASTRA 没有重做实验。筛出来的候选基因必须回到独立实验里复现。
Q3:lncRNA 部分该怎么用?
基因注释表里有近一万八千条 lncRNA,差异表也一起给出,这是它相对多数重处理资源多出来的一块。但 lncRNA 的定量与差异检验对小样本很敏感,建议只取各比较集里方向一致、p 值稳定的少数候选。
Q4:为什么网站打开是空白或者一直在转圈?
它是 Streamlit 应用,页面内容靠浏览器端脚本渲染,静态抓取只能拿到空壳。数据要稳定可得,直接用 Zenodo 的七张扁平表,不需要经过网站。
Q5:同一个基因在不同比较集里的 logfc 可以直接平均吗?
不可以。各比较集的细胞系、剂量、处理时长都不同,logfc 的参照点也不一样。要做跨比较集汇总,先按应激类型与细胞状态分层,再看方向一致性,而不是取算术平均。
Q6:论文说 86 个比较集,为什么下载的表有一百八十多行?
两个口径不同。比较集是“一次处理对一次对照”的设计单元,datasets.tsv 是按“比较集 × 处理条件”拆的,同一个设计里不同剂量或时长会各占一行。
Q7:它收录电离辐射或亚砷酸盐的应激数据吗?
不收录。四类应激各自只对应一个分子应激源,氧化应激用的是过氧化氢,DNA 损伤用的是紫外线。其余应激源不在当前范围内。
Q8:我能不能只用表达矩阵,不用差异表?
可以,但表达矩阵约 1.3 GB,且 TPM 不能直接跨样本比较。没有配对对照与批次信息,自己从 TPM 重算差异,得到的结论未必比直接用作者的差异表更好。
Q9:许可到底是什么?
三个地方三种说法:网站面向学术用户免费,论文是 CC BY-NC 4.0,Zenodo 数据包是 CC BY 4.0。学术用途没有障碍,商业用途要逐项确认。
Q10:它和 Expression Atlas 该选哪个?
问“某类应激下哪些基因在动”,用 ASTRA;问“某个基因在哪些物种哪些条件下表达”,用 Expression Atlas。前者窄而深,后者广而平。
Q11:样本很小,能训练模型吗?
当特征源可以,当训练标签不行。669 个样本撑不起一个有监督的深度学习模型,但可以拿来做基因集的先验权重或者规则式打分。
Q12:它的数据会不会停止更新?
论文说按月从 GEO 补录,但更新依赖团队的项目资助,Zenodo 快照也停在 2025 年 7 月。长期可用的话,建议把关键分析锁定在一个明确版本上。
术语表
附录 F:一句话对照表
| 你可能想问 | 一句话答案 |
|---|---|
| 它和 GEO 谁更全 | GEO 全,它更可比较 |
| 它和 Expression Atlas 谁更广 | 对方广,它更深 |
| 数据在哪下 | Zenodo 七张表 |
| 有没有原始测序 | 没有,回 ENA 取 |
| p 值要不要自己校正 | 要,表里是原始 p |
| 能不能只做四类以外的应激 | 不能,当前不收录 |
| 商用行不行 | 学术可用,商用逐项确认 |
| 术语 | 中文 | 解释 |
|---|---|---|
| bulk RNA-seq | 批量转录组测序 | 一组细胞混在一起测,得到平均表达 |
| comparison set | 比较集 | 一个处理组加配对对照,是 ASTRA 的基本单位 |
| control | 对照 | 未施加应激的样本 |
| treatment | 处理 | 施加了应激的样本 |
| stressor | 应激源 | 引起应激的物理或化学因素 |
| oxidative stress | 氧化应激 | 由活性氧引起的应激,库内用 H2O2 |
| hypoxia | 低氧 | 氧气浓度低于常氧,库内用 1%–3% |
| heat shock | 热休克 | 高于正常培养温度的短时暴露 |
| DNA damage | DNA 损伤 | 库内以 UV 照射代表 |
| logfc | 对数倍数变化 | 处理组相对对照组的表达对数差 |
| pvalue | 原始 p 值 | 未经多重检验校正 |
| padj | 校正后 p 值 | 经 BH 等程序校正,需自己计算 |
| TPM | 每百万转录本数 | 跨样本相对可比的表达量单位 |
| lncRNA | 长链非编码 RNA | 长度超过二百碱基、不编码蛋白的转录本 |
| pseudogene | 假基因 | 失去编码能力的基因拷贝 |
| cell line | 细胞系 | 体外长期培养的细胞群体 |
| organoid | 类器官 | 三维培养的微型组织结构 |
| Cellosaurus | 细胞系资源库 | 细胞系名称与来历的标准化参考 |
| DepMap | 依赖性图谱 | 提供细胞系组织与依赖性数据 |
| GEO | 基因表达综合库 | NCBI 的公共表达数据归档 |
| ENA | 欧洲核苷酸档案 | 存原始测序文件的公共库 |
| edgeR | 差异分析软件 | 基于负二项模型的差异检验工具 |
| RSEM | 定量软件 | 转录本水平的表达定量工具 |
| STAR | 比对软件 | 把测序读段比对到参考基因组 |
| CC BY 4.0 | 知识共享署名 4.0 | 允许商用,需署名 |
| CC BY-NC 4.0 | 知识共享署名非商业 4.0 | 不允许商用 |
附录 A:核心数字核对表
| 项 | 值 | 来源 | 来源层级 |
|---|---|---|---|
| 研究数 | 59 | 论文正文与 study_metadata 行数 | 官方页面 / 数据包 |
| 比较集数 | 86 | 论文正文 | 论文摘要 |
| 样本数 | 669 | 论文正文与 sample_metadata 行数 | 官方页面 / 数据包 |
| 细胞系数 | 57 | 论文正文与 Cell_type 去重 | 论文摘要 / 数据包 |
| 时间点数 | 40 | 论文正文 | 论文摘要 |
| 剂量水平数 | 27 | 论文正文 | 论文摘要 |
| 基因型数 | 26 | 论文正文 | 论文摘要 |
| 注释基因数 | 六万一千余 | gene_annotations 行数 | 数据包 |
| 蛋白编码基因 | 两万余 | gene_annotations 计数 | 数据包 |
| lncRNA 条数 | 一万七千余 | gene_annotations 计数 | 数据包 |
| datasets 行数 | 185 | datasets.tsv 行数 | 数据包 |
| 无对照行数 | 56 | No_of_controls 计数 | 数据包 |
| 表达矩阵大小 | 约 1.26 GB | Zenodo 文件元数据 | 官方页面 |
| 差异表行数 | 139 万余 | Zenodo 文件行数 | 数据包 |
| 表达矩阵行数 | 272 万余 | Zenodo 文件行数 | 数据包 |
| 差异表大小 | 88 MB | Zenodo 文件元数据 | 官方页面 |
| 发布许可 | CC BY 4.0 | Zenodo 元数据 | 官方页面 |
| 网站数据库当前条数 | 未核实 | 动态渲染,无法静态取得 | 未核实 |
附录 B:数字的来源分层
官方页面(Zenodo 记录、论文全文 XML、网站 HTTP 响应):七个文件的大小与行数、样本的物种分布、datasets.tsv 的字段计数、Cell_group 分布、无对照行数、许可声明。这一层的数字可以直接引用,只需注明日期。
论文摘要与正文:59 项研究、86 个比较集、669 个样本、57 个细胞系、40 个时间点、27 个剂量水平、26 种基因型、四类应激的剂量区间。这一层的数字来自作者叙述,未逐项与原始数据核对,可能与数据包存在口径差。
未核实:网站当前数据库条数、网站是否按月更新、差异表 p 值是否已校正、GitHub 仓库最近提交时间。这几项在正文中都标了未核实,使用前建议自行确认。
附录 C:完整参考文献
| 编号 | 引用 | 链接 |
|---|---|---|
| 1 | Tsifintaris M, et al. ASTRA: a comprehensive resource of stress-induced transcriptional activity in human cell lines. Nucleic Acids Res. 2026;54(D1):D938–D948. | https://doi.org/10.1093/nar/gkaf1174 |
| 2 | ASTRA 数据包(2025-07-14 版) | https://doi.org/10.5281/zenodo.15885686 |
| 3 | ASTRA 网站 | https://astra-db.com/ |
| 4 | ASTRA 源码仓库 | https://github.com/Mtsif/astra-db |
| 5 | Barrett T, et al. NCBI GEO: archive for functional genomics data sets—update. Nucleic Acids Res. 2013;41:D991–D995. | https://doi.org/10.1093/nar/gks1193 |
| 6 | Bairoch A. The Cellosaurus, a cell-line knowledge resource. J Biomol Tech. 2018;29:25–38. | https://doi.org/10.7171/jbt.18-2902-002 |
| 7 | Martin M. Cutadapt removes adapter sequences from high-throughput sequencing reads. EMBnet J. 2011;17:10–12. | https://doi.org/10.14806/ej.17.1.200 |
| 8 | Giannakakis A, et al. Contrasting expression patterns of coding and noncoding parts of the human genome upon oxidative stress. Sci Rep. 2015;5:9737. | https://doi.org/10.1038/srep09737 |
附录 D:核验关键词与地点
核验按七步推进。在候选清单 TOP2000 里,astra 一行被归在“组学-其他”;用 ASTRA database 在 Europe PMC 检索得九条,多为附带提及;用 TITLE:ASTRA AND database 检索得十条,含本库论文与若干同名资源;用 Brassica ASTRA 检索命中 2005 年芸薹属基因组库,因站点已不可用而排除;用 ASTRA database AND alternative splicing 检索得两条,均未指向可用实体;对 astra-db.com 做 HTTP 探活返回 200,确认为 Streamlit 应用;对 Zenodo DOI 10.5281/zenodo.15885686 取元数据,得到七个文件与 CC BY 4.0 许可。
附录 E:如果只记五件事
| 序号 | 要记住的事 |
|---|---|
| 1 | 它只收四类应激、每类一个应激源,范围窄但有纵深 |
| 2 | 比较集是它的核心单位,一处理对一对照,样本很小 |
| 3 | 它的增量是“统一流程加重算”,不是新测数据 |
| 4 | 差异表只有原始 p 值,校正要自己做 |
| 5 | Zenodo 七张扁平表比网站更可靠,版本要锁定 |
编辑说明
本篇的实体核验于 2026-10-27 完成。同名候选包括 Brassica ASTRA 基因组库、ASTRA 蛋白复合体、甲状腺癌 ASTRA 试验、SOLARIS 同步辐射光束线、AStra 听力量表,均与生物医学可查询数据集不符,最终定位到 https://astra-db.com/ 与 NAR 2026 论文。
数字来源分三层:Zenodo 文件元数据与五个小表的实际行数为第一层;论文摘要与正文叙述为第二层;网站动态内容未能静态取得,标为未核实。数据包快照为 2025-07-14 版,若日后版本更新,研究数、比较集数与样本数以新版为准。
正文未覆盖的内容包括:网站三个分析模块的交互细节、edgeR 差异分析的具体参数设置(论文未逐一列出)、源代码仓库的当前状态。这几项若需深入,应直接访问网站与源码。以上核查记录来源于本篇的派发材料与公开接口响应,不构成对第三方数据的独立审计。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- geo — 共享标签:基因组学与多组学 / 转录组 / 测序数据
- fantom5 — 共享标签:基因组学与多组学 / 转录组 / 测序数据
- gencode — 共享标签:基因组学与多组学 / 转录组 / 测序数据
- recount3 — 共享标签:基因组学与多组学 / 转录组 / 测序数据
- archs4 — 共享标签:基因组学与多组学 / 转录组 / 测序数据
- ddbj-gea — 共享标签:基因组学与多组学 / 转录组 / 测序数据
- gtex-legacy — 共享标签:基因组学与多组学 / 转录组 / 测序数据
- gtex — 共享标签:基因组学与多组学 / 转录组 / 测序数据
- tcga-luad — 共享标签:基因组学与多组学 / 转录组 / 测序数据
- cellxgene-census — 共享标签:基因组学与多组学 / 转录组 / 测序数据
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

