基于 scientific-agent-skills 的 bulk-rnaseq 技能全解析:从原始 FASTQ 到差异表达与通路富集的端到端可辩护工作流
2026/9/9 12:49:22 网站建设 项目流程

基于 scientific-agent-skills 的 bulk-rnaseq 技能全解析:从原始 FASTQ 到差异表达与通路富集的端到端可辩护工作流

【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000+ scientists worldwide. 165 ready-to-use validated skills plus 100+ scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills

导读

本文深度解析 scientific-agent-skills 仓库中的bulk-rnaseq技能。它是一个 bulk RNA-seq(批量转录组)"编排器(orchestrator)",负责把原始 FASTQ 测序数据串成一条完整、可辩护(defensible)的差异表达研究流水线:FastQC/裁剪 → 比对/定量(STAR/Salmon)→ 基因计数矩阵 → 差异表达(pydeseq2)→ 通路富集(pathway-enrichment)→ 出版级图表。读完本文,你将掌握其两种上游路径的选型与运行方式、samplesheet 校验与计数矩阵桥接脚本的底层实现、实验设计与 QC 关卡的设计逻辑,以及如何将其与仓库内pydeseq2pathway-enrichmentnextflowscientific-visualization等技能串联成一条可复现的完整分析链。

技能定位:一个路由编排器,而非重新实现

该技能的元数据(见 skills/bulk-rnaseq/SKILL.md)声明其用途是:"拿到 bulk RNA-seq reads 或定量输出,想要一套完整、可复现的差异表达工作流"。其核心设计思想在 Overview 中表达得很清楚:它是一个 router(路由器),不是 reimplementation(重新实现)——流水线中绝大多数环节在仓库中已有专属技能,本技能负责以正确顺序把它们连接起来,并填补唯一的真实空白(原始 reads → 基因级计数矩阵),同时强制执行决定最终结果是否可信的设计与 QC 决策。

技能正文反复强调 "defensible"(可辩护)一词,并把它拆解为三件事:

  • 可复现(Reproducible)——锁定流水线/工具版本、尽可能使用容器、记录全部参数、固定随机种子;
  • 质量门控(Quality-gated)——QC 在校对前、中、后都要被检查并据此行动,而不是被跳过;
  • 统计严谨(Statistically sound)——充足的生物学重复、与生物学匹配的设计、正确处理计数、做 FDR 控制的假设检验。

整条流水线被概括为一句话:FastQC/trim → align/quant (STAR/Salmon) → counts → DE (pydeseq2) → enrichment (pathway-enrichment) → figures

何时使用该技能

技能文档明确列举了适用场景:

  • 从 FASTQ 文件(或一次测序 run)走到差异表达基因与通路;
  • 运行或配置nf-core/rnaseq,或使用 STAR、Salmon、featureCounts 做比对/定量;
  • 把 Salmon/STAR/featureCounts 输出整理成 PyDESeq2/DESeq2 可直接使用的计数矩阵;
  • 在投入计算资源前,设计或 sanity-check 一个 bulk RNA-seq 实验(重复数、批次、链特异性);
  • 为端到端 RNA-seq 分析划定范围并决定串联哪些工具与技能。

边界界定同样清晰:这是bulk(样本 = 生物学样本)RNA-seq;单细胞/单核数据请用scanpy只做差异表达统计用pydeseq2只做富集用pathway-enrichment

流水线总览

技能文档给出的 mermaid 图完整刻画了数据流与两条上游路径:

值得注意的细节是:nf-core/rnaseq路径与独立工具路径最终都收敛到基因级计数矩阵,之后的流程完全一致;虚线连接的各个模块对应仓库中独立的兄弟技能,真正由本技能"自研拥有"的只有build_counts_matrix.py桥接脚本与设计/QC 决策约束。

两条上游路径:二选一并坚持到底

文档用一张决策表让用户按场景选择,并强调两条路径产出等价的基因计数:

使用Path A —nf-core/rnaseq当…使用Path B — 独立工具当…
想要业界标准、经社区审计、可引用的"一条命令"流水线样本量少,想逐步学习/检查每一步
样本多,或将要扩展到 HPC/云没有 Nextflow/容器可用,或环境受限
可复现性与完整 MultiQC 报告最重要需要流水线未暴露的非标准步骤
→ 通过nextflow技能驱动→ 跟随references/upstream-manual.md

当你不确定时,优先 Path Anf-core/rnaseq已经把 FastQC → 裁剪 → STAR/Salmon → 定量 → tximport → MultiQC 用合理、经评审的默认值串好,是最稳妥可辩护的选择。Path B 的存在是为了透明性与受限环境。

环境搭建(Setup)

技能文档给出三部分安装指引:

# 本技能的胶水代码(桥接 + 交接)—— Python uv pip install pytximport pandas # 下游技能各自安装依赖: # pydeseq2 skill -> uv pip install pydeseq2 # pathway-enrichment skill -> uv pip install gseapy gprofiler-official # Path A (nf-core):只需 Nextflow + 一个容器引擎——详见 `nextflow` 技能。 # Path B(独立工具):经 bioconda 安装,为可复现请锁定版本。 conda create -n rnaseq -c bioconda -c conda-forge \ fastqc fastp trim-galore "star=2.7.11b" "salmon=1.10.3" subread multiqc

文档特别强调:必须记录你使用的确切版本(流水线 revision、工具版本、参考基因组 + 注释版本),它们要写进 methods 部分,这是分析可复现性的前提。

快速上手

Path A — nf-core/rnaseq(推荐)

# 0. 先校验 samplesheet(能在早期拦截最常见的失败) python scripts/validate_samplesheet.py --samplesheet samplesheet.csv # 1. 用内置微型数据 smoke-test 环境 nextflow run nf-core/rnaseq -r 3.26.0 -profile test,docker --outdir test_results # 2. 正式运行:锁定 revision,选择 aligner,传 samplesheet + 参考 nextflow run nf-core/rnaseq -r 3.26.0 \ -profile docker \ --input samplesheet.csv \ --genome GRCh38 \ --aligner star_salmon \ --outdir results \ -resume

关键点:nf-core/rnaseq内部已经运行 tximport,所以基因计数输出已经是合并好的——无需再运行本技能的桥接脚本,直接用results/star_salmon/salmon.merged.gene_counts_length_scaled.tsv做 DE 即可。samplesheet 格式、aligner 选择与输出物细节见 upstream-nfcore.md;引擎/HPC/云/容器细节则交给nextflow技能。

Path B — 独立 STAR/Salmon(简化版)

fastqc -o qc/ reads/*.fastq.gz # 1. QC 原始 reads fastp -i s1_R1.fq.gz -I s1_R2.fq.gz \ -o s1_R1.trim.fq.gz -O s1_R2.trim.fq.gz \ --thread 4 -j s1.fastp.json # 2. 裁剪接头/低质量碱基 salmon quant -i salmon_index -l A \ -1 s1_R1.trim.fq.gz -2 s1_R2.trim.fq.gz \ --gcBias --seqBias -p 8 -o quant/s1 # 3. 定量(逐样本)

完整配方(FastQC、fastp/Trim Galore、STAR index + align +--quantMode GeneCounts、Salmon decoy-aware index、featureCounts、链特异性判定)见 upstream-manual.md。

计数 → DE → 富集(两条路径通用)

# Path B 专用:为 PyDESeq2 组装 gene x sample 计数矩阵 + 元数据模板 python scripts/build_counts_matrix.py --from salmon \ --quant-dir quant/ --tx2gene tx2gene.tsv --output-dir counts/ # 然后交接给专属技能: # pydeseq2: counts.csv + metadata.csv -> DE 表 (log2FC, padj, stat) # pathway-enrichment: 按 `stat` 排序(GSEA)或用 padj+|LFC| 命中表(ORA) # scientific-visualization / matplotlib: volcano、MA、heatmap、PCA、富集 dotplot

逐阶段工作流

技能文档要求"从上到下执行、不要跳过设计与 QC 阶段",每一阶段都明确指出了归属的技能或文件:

  1. 设计与 samplesheet。确认每组 ≥3 个生物学重复,识别批次/混杂因素,确定要做的比较。构建 samplesheet 并用scripts/validate_samplesheet.py校验。原理与规则见 design-and-qc.md。
  2. 原始 reads QC。逐文件 FastQC,再用 MultiQC 汇总;检查 per-base 质量、接头含量、重复率与过度表达序列;阈值见上述 reference。
  3. 裁剪。fastpTrim Galore去除接头与低质量尾部,裁剪后重跑 FastQC 确认。配方见 upstream-manual.md(Path A 自动完成)。
  4. 比对/定量。STAR(基因组比对 +--quantMode GeneCounts)和/或 Salmon(转录本 quasi-mapping、decoy-aware)。必须确定链特异性(strandedness)——它极易出错且会悄悄砍掉一半计数。
  5. 构建计数矩阵。scripts/build_counts_matrix.py把定量输出转成 gene × sample 整数矩阵与元数据模板。估计计数与基因 ID 映射的细微差别见 counts-and-handoff.md。
  6. 差异表达 →pydeseq2技能。载入counts.csv+metadata.csv,设定 design(如~batch + condition),拟合并做 FDR 控制的检验;用 PCA 与 p-value 直方图作为 QC。
  7. 富集 →pathway-enrichment技能。GSEA 用全量基因表按 DESeq2stat排序;ORA 传阈值化命中表(padj < 0.05,可选 |log2FC| > 1)。先做基因 ID → symbol 映射。
  8. 出图 →scientific-visualization技能。Volcano、MA、样本距离热图、PCA、富集 dotplot,外加作为 QC 叙事的 MultiQC 报告。

samplesheet 校验器:贵在"早",贵在 error/warning 分界

scripts/validate_samplesheet.py(源码)是本技能两个真实可执行脚本之一,位于昂贵流水线运行的门前。它校验的是 nf-core/rnaseq 风格的四列 samplesheet:

sample,fastq_1,fastq_2,strandedness CONTROL_REP1,/data/ctrl1_R1.fastq.gz,/data/ctrl1_R2.fastq.gz,auto CONTROL_REP2,/data/ctrl2_R1.fastq.gz,/data/ctrl2_R2.fastq.gz,auto TREATED_REP1,/data/trt1_R1.fastq.gz,/data/trt1_R2.fastq.gz,auto TREATED_REP2,/data/trt1_R1.fastq.gz,,auto

从源码看(validate_samplesheet.pyReport类与各校验函数),它的产品本质是error(致命)与 warning(建议)的严格分界——这在仓库测试 tests/bulk-rnaseq/test_scripts.py 中被反复钉死。主要检查点如下:

  • 必填列samplefastq_1;缺了直接报错。
  • 空单元格:带行号的 error(如row 2: empty 'sample')。
  • 文件路径fastq_1 == fastq_2报错(同一文件被当成双端会悄悄砍半文库);同一 R1 文件被多行复用报错;s3://gs://等远端 URL 只 warning 不检查存在性(REMOTE_PREFIXES);本地文件缺失报错;非常规扩展名仅 warning。
  • strandedness:仅接受{auto, forward, reverse, unstranded}(源码常量VALID_STRANDEDNESS),大小写不敏感;缺列只给 advisory warning(nf-core 推荐填auto)。
  • lane 合并语义:同一sample占多行会被 lane-merge,只 warning 不失败;但同一样本混用双端/单端行是 error。
  • 元数据设计检查--metadata开启):样本在 samplesheet 但缺于 metadata 是 error;某组只有 1 个重复(无法估计组内方差)是 error,2 个重复会 warning(推荐 ≥--min-replicates,默认 3);batch 与 condition 完全嵌套(每个 batch 只含单一 condition)会被 flag 为 confounded

退出码语义:0 = 无 error(允许 warning),1 = 存在 error,方便直接接入 CI 或流水线前置检查。测试 test_scripts.py 用GOOD_SHEET/GOOD_METADATA及其反例逐条验证了上述 error/warning 分界,例如test_a_singleton_group_cannot_estimate_variance_and_is_fataltest_batch_fully_nested_in_condition_is_flagged_as_confounded

counts → DE 桥接:本技能真正的"自留地"

这是整条链中唯一没有上下游技能覆盖的环节,因而由本技能亲自拥有。scripts/build_counts_matrix.py(源码)把上游定量输出转换成pydeseq2技能期望的确切格式,支持三种输入源:

Salmon → 基因计数(经 pytximport)

Salmon 是转录本水平的,需要用pytximport(tximport 的 Python 移植)聚合到基因。技能文档给出底层调用示例:

from pytximport import tximport quant_files = ["quant/s1/quant.sf", "quant/s2/quant.sf", "quant/s3/quant.sf"] txi = tximport( quant_files, data_type="salmon", transcript_gene_map="tx2gene.tsv", # columns: transcript_id, gene_id counts_from_abundance="length_scaled_tpm", output_type="xarray", ignore_transcript_version=True, # 去掉 .N 的 Ensembl 版本后缀 )

counts_from_abundance="length_scaled_tpm"基因水平 DE 的正确选择——它校正了样本间差异转录本长度/使用,产出的计数可直接喂养后续模型。脚本build_from_salmon(源码第 56-98 行)逐样本发现quant_dir/*/quant.sf,用tx2gene做 transcript→gene 映射(源码默认经output_type="anndata"+.to_df().T转成 gene × sample 方向),round 为整数,列名取样本目录名。

tx2gene 表(transcript_id → gene_id 两列)的来源选项:pytximport.utils.create_transcript_gene_map(species="human");或直接从注释 GTF 提取(最权威,与定量参考严格对应):

awk -F'\t' '$3=="transcript"{ match($9,/transcript_id "([^"]+)"/,t); match($9,/gene_id "([^"]+)"/,g); print t[1]"\t"g[1] }' \ annotation.gtf | sort -u | sed '1i transcript_id\tgene_id' > tx2gene.tsv

nf-core/rnaseq 会把实际使用的 tx2gene 写进输出,Path A 可直接复用。

STAR → 基因计数(ReadsPerGene)

每个*.ReadsPerGene.out.tab有 4 列:gene_id、unstranded、forward-strand、reverse-strand。源码常量给出对应关系STAR_STRAND_COL = {"unstranded": 1, "forward": 2, "reverse": 3},并且build_from_star(第 101-118 行)会跳过前 4 行汇总统计(N_unmapped、N_multimapping…)——测试test_star_summary_rows_are_excluded_from_the_gene_matrix明确验证了这一点,因为把这些行当基因会膨胀每个样本的文库规模。某样本缺失的基因会被fillna(0)补成 0 而非 NaN。这类计数本身已是整数。

featureCounts → 基因计数

featureCounts写一个含#命令行注释头与Geneid, Chr, Start, End, Strand, Length, <bam1>, <bam2>, …列的单矩阵。build_from_featurecounts(第 121-136 行)用comment="#"跳过命令行头,只保留Geneid+ 各 BAM 计数列并重命名为样本 ID(测试test_featurecounts_output_is_reduced_to_genes_by_samples验证注释列不会混入样本)。

方向(orientation)约定

PyDESeq2 最终需要samples × genes。技能约定counts.csv写成genes × samples(与 Salmon/STAR/featureCounts 及 nf-core 输出一致),交由pydeseq2技能的加载器用.T转置——不要转两次。这是文档专门用一节强调的易错点。

估计计数/整数这一微妙点

PyDESeq2 要求整数计数:STAR 与 featureCounts 天然是整数;Salmon/RSEM 给的是估计(小数)计数。本技能的做法是使用length_scaled_tpmround 到最近整数。由于长度缩放计数中已折叠了文库大小与转录本长度信息,round 后当作计数处理是基因水平 DE 上成熟、可辩护的近似。而 R 路线的"正统"做法(tximportDESeqDataSetFromTximport)是导入原始计数外加每条基因的平均转录本长度 offset,让 DESeq2 在模型内处理长度;PyDESeq2 不接受该 offset,所以 length-scaled + round 是标准 Python 等价做法,也正是 nf-core 表面暴露给下游的形态。两条路径的共同铁律:绝不把 TPM/FPKM 喂给 DESeq2

脚本write_outputs(第 139-162 行)还会丢弃全零基因(无信息量,PyDESeq2 会进一步过滤)、写出counts.csv(整数 gene × sample)与metadata_template.csv(每样本一行,含condition=CHANGE_MEbatch占位列),并检测重复样本名。

Path A 场景下的等价操作

在 Path A,流水线已跑完 tximport,upstream-nfcore.md 给出的输出布局为:salmon.merged.gene_counts_length_scaled.tsv(用于 DESeq2)、salmon.merged.gene_tpm.tsv(仅供可视化)、salmon.merged.gene_counts.rds、逐样本 Salmon quant 目录、以及流水线自带的deseq2_qc/PCA 图。交接时只需 pandas 读取并 round:

import pandas as pd df = pd.read_csv("results/star_salmon/salmon.merged.gene_counts_length_scaled.tsv", sep="\t") df = df.drop(columns=[c for c in ["gene_name"] if c in df.columns]).set_index("gene_id") counts = df.round().astype(int) # genes x samples, integer counts.to_csv("counts.csv") # 交给 pydeseq2 技能(它转置为 samples x genes)

链特异性(strandedness):错设会静默丢一半 reads

上游手册用整节强调它是"最常见的静默灾难"。确定一次,然后所有工具一致应用:Salmon-l A自动检测并在quant/<sample>/lib_format_counts.json报告库类型(ISR= 反向链双端、ISF= 正向、IU/IS= 非链特异);或用 RSeQCinfer_experiment.py在 STAR BAM 上判定。映射到各工具的参数对照:

LibrarySalmon-lfeatureCounts-sSTAR column(ReadsPerGene.out.tab
UnstrandedIU(autoA0col 2
Forward(如 Ligation)ISF(autoA1col 3
Reverse(如 dUTP/TruSeq stranded)ISR(autoA2col 4

Illumina TruSeq Stranded mRNA——最常见的建库试剂盒——是reverse(featureCounts-s 2、STAR col 4)。拿不准就让 Salmon 自动检测,再让其它工具向它对齐。仓库测试 test_scripts.py 中test_the_strand_choice_selects_a_different_column也用同一张表对三个列取值逐一做了断言。

Path B 关键配方速览

独立路径的完整配方(upstream-manual.md)包含:

  • 参考数据:用gget ref -w dna,gtf,cdna <species>获取下载链接;genome 与 GTF 必须来自同一 release,并锁定注释版本。
  • STAR:建索引用--sjdbOverhang = read length − 1(100 为安全默认),人类需要约 30 GB RAM;比对时加--quantMode GeneCounts--outSAMtype BAM SortedByCoordinate
  • Salmon decoy-aware index:decoys = 基因组全部序列名,gentrome = transcriptome 拼接在 genome 之前(顺序重要);-k 31适用于 ≥75 bp 的 reads。定量加--gcBias --seqBias --validateMappings
  • featureCounts:多 BAM 一次传入产出单矩阵,-s语义见上表。
  • 汇总 QC:multiqc qc/ star/ quant/ counts/ -o qc/multiqc

实验设计与 QC 门控:可辩护性的骨架

design-and-qc.md 是该技能"可辩护"主张的理论支柱,核心主张是:下游统计的质量不会超过设计本身

重复(replication):要生物学重复(独立样本),不是技术重复(同一文库重测序);每组 ≥3 是实际最低线,4–6 对典型效应量更稳妥;n=2 时无法可靠估计组内方差,dispersion shrinkage 几乎在唱独角戏。检测 DE 时更多重复胜过更深测序

深度与布局:~20–30M mapped reads/样本对常规基因水平 DE 足够;低频基因/新转录本/isoform 层面才需要 50M+。比较组内布局、读长、试剂盒与深度必须保持一致。

混杂——设计的杀手:batch 是跨样本变化的一切技术因素(处理日、lane/flowcell、试剂批次、操作员、RNA 提取批次)。若 batch 与 condition 完全对齐(所有处理组周一处理、对照组周二处理),生物学效应数学上不可恢复,任何分析都救不回来。防御手段:随机化样本到批次的分配,并平衡使每个 batch 含所有 condition;把所有 batch 变量记进 metadata。

design formula(交给 PyDESeq2):调整变量放前面、关注的变量放最后——~batch + condition;连续协变量~age + condition;交互项(处理效应是否因基因型而异)~genotype + condition + genotype:condition。设计矩阵必须full rank——不能包含与 condition 完全混杂的 batch,pydeseq2会直接报错;用pd.crosstab(metadata.condition, metadata.batch)检查空单元格。

QC 关卡:原始 reads 检查 per-base 质量(主体 ≥Q30)、接头、过度表达序列、GC 双峰(可能污染)、重复率(RNA-seq 高重复属正常);比对阶段看 STAR uniquely-mapped %(好文库通常 >70–80%,低则怀疑参考错误/污染/RNA 降解)、Salmon mapping rate(通常 >70%)、featureCounts assigned %(低 assigned + 高 unassigned_NoFeatures 通常是链特异性设错)、rRNA 占比;标准 DE 不做去重(RNA-seq 的"重复"多半反映真实高表达;只有 UMI 场景用 UMI 去重,不要坐标去重)。

定量后 QC(信任 DE 之前必做):PCA(生物学重复是否聚簇?PC1 分离的是 condition 还是 batch?batch 主导 PC1 就必须建模它;明显离群点可能是样本弄混/失败);样本距离热图/层次聚类(暴露标签错位)。DE 之后看p-value 直方图:良好行为是近似均匀 + 0 附近尖峰(真阳性);若在 1 附近有峰或呈 U 形,说明设计 misspecified / 批次未建模 / 过滤问题——应修正设计而非轻信基因表。

文档还给出可直接照抄的门禁速查清单

[ ] >=3 biological replicates per group [ ] batch recorded and NOT confounded with condition [ ] raw FastQC reviewed; adapters trimmed [ ] mapping/assignment rate acceptable; strandedness verified [ ] PCA + sample-distance heatmap inspected; outliers/swaps resolved [ ] design formula full-rank, adjustment vars before variable of interest [ ] p-value histogram sane after DE [ ] versions pinned (pipeline -r, tools, genome+annotation release)

基因 ID 映射与 DE → 富集配方

counts-and-handoff.md 提醒:DESeq2 输出通常以Ensembl gene ID为键(如ENSG00000141510,常带.17版本后缀),而 Enrichr/MSigDB/g:Profiler 库期望gene symbol(人类为大写)。映射不匹配是"什么都没有富集"的头号原因。操作建议:先剥版本后缀ids.str.replace(r"\.\d+$", "", regex=True),再用gget技能(gget info)、database-lookuppybiomartmygene映射;Path A 的gene_name列已给出 symbol,可随gene_id一并保留。DE 阶段可以继续用 Ensembl ID,只对最终基因表做映射。

DE → 富集的交接配方(以pydeseq2产出的deseq2_results.csv为准,列含log2FoldChangepvaluepadjstat):

  • GSEA(preranked)——用全量排名基因表,按 Waldstat排序(符号表方向、大小表证据强度,比按 log2FoldChange 排序更稳);不要先阈值化
  • ORA——用阈值化命中表:padj < 0.05,可选加|log2FoldChange| > 1;建议上下调集分开跑。

pathway-enrichment技能的scripts/run_enrichment.py可直接读取 DESeq2 结果 CSV:

# GSEA:直接从 DE 表出发(自动用 `stat` 构建排序) python ../pathway-enrichment/scripts/run_enrichment.py gsea \ --deseq2 deseq2_results.csv --organism human --outdir enrichment/ --seed 123 # ORA:从 symbol 命中表出发 python ../pathway-enrichment/scripts/run_enrichment.py ora \ --genes sig_symbols.txt --organism human --outdir enrichment/

常见陷阱清单

技能文档总结的九大误区基本覆盖了 bulk RNA-seq 出错与不可复现的根源:

  1. 重复数过少——每组 <3 个生物学重复几乎没有功效,dispersion 估计不稳;更多重复胜过更深测序。
  2. batch 与 condition 混杂——所有处理样本都在与对照不同的日子/lane 处理,效应不可恢复;要随机化并建模已知批次(~batch + condition)。
  3. 链特异性设错——选错 STAR 列或 featureCounts-s/Salmon library type 会静默丢弃约一半 reads;用 Salmon-l A或推断链特异性,并核对 assigned-reads 比例。
  4. 把 TPM/FPKM 喂给 DESeq2——DESeq2 需要原始(或长度缩放)计数,绝不是 TPM/FPKM 等归一化值;桥接脚本负责处理。
  5. 非整数计数——PyDESeq2 要求整数;Salmon 估计值要 round(脚本已做)。
  6. 富集环节基因 ID 不匹配——见上文映射章节。
  7. 跳过定量后 QC——信任 DE 前必须看 PCA 与样本距离热图,它们能暴露标签换位、离群点与隐藏批次。
  8. 跨样本混用比对工具——所有样本必须用同一工具、版本、参考与参数定量。
  9. 版本不锁定——"latest" 流水线/基因组使结果不可复现;钉死-r、工具版本与 genome/annotation release。

与仓库其它技能的集成关系

  • 上游执行nextflow(运行nf-core/rnaseq,即 Path A;HPC/云/容器)。
  • 参考数据 / 基因 IDggetgget ref拿 genome+GTF,gget info/gget search做 ID 映射)、database-lookup(Ensembl/NCBI)、biopython/pysam(FASTA/BAM 处理)。
  • 差异表达pydeseq2(本技能把计数交接给它的 DE 引擎)。
  • 富集pathway-enrichment(ORA + GSEA)。
  • 出图与报告scientific-visualizationmatplotlibseabornscientific-writing负责 methods/results 叙事。
  • 相关但有别scanpy(单细胞)、statistical-analysis(多重检验深度)。

参考文件索引

按需查阅下列自包含文档可获得各环节的深度细节(均为仓库内实际存在的文件):

  • skills/bulk-rnaseq/references/upstream-nfcore.md——Path A:samplesheet 格式、--aligner/--pseudo_aligner选型表、关键参数(--save_reference--trimmer--remove_ribo_rna--extra_salmon_quant_args--skip_*--gencode)、salmon.merged.gene_counts*.tsv输出、MultiQC 与交接给pydeseq2的内容。
  • skills/bulk-rnaseq/references/upstream-manual.md——Path B:FastQC、fastp/Trim Galore、STAR genome index + alignment +--quantMode GeneCounts、Salmon decoy-aware index +quant、featureCounts、链特异性判定。
  • skills/bulk-rnaseq/references/counts-and-handoff.md——把定量输出变成 PyDESeq2 就绪的counts.csv/metadata.csv(pytximport、STAR 列选择、featureCounts)、整数/估计计数微妙点、Ensembl→symbol 映射、DE→富集的 rank/hit-list 配方。
  • skills/bulk-rnaseq/references/design-and-qc.md——实验设计(重复、批次、混杂、design formula)与 QC 指标解读(mapping rate、重复率、rRNA、复杂度、PCA/离群点)。

脚本与测试可对照研读:build_counts_matrix.py、validate_samplesheet.py,以及覆盖其核心行为的单元测试 tests/bulk-rnaseq/test_scripts.py。

结语

bulk-rnaseq技能的价值在于把"能跑通"提升到"可辩护":通过 samplesheet 前置校验把廉价易查的问题挡在昂贵计算之前,通过桥接脚本在 Salmon/STAR/featureCounts 与 PyDESeq2 之间铺平类型与方向的坑,再通过设计与 QC 门控约束让下游统计站得住脚。理解这份技能文档与上述源码细节,你便可以从原始 FASTQ 一路走到差异表达基因和富集通路,产出真正可复现、可信赖的批量转录组分析。

【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000+ scientists worldwide. 165 ready-to-use validated skills plus 100+ scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询