Bulk RNA-Seq 差異表達分析流程

以前寫過不少零散的 RNA-Seq 分析文章蛮瞄,現(xiàn)在整理為流程所坯,同時修改一些錯誤。
流程包含質(zhì)控挂捅、比對芹助、定量、差異分析闲先。


流程概況

前處理

拿到原始 fastq 數(shù)據(jù)先進行前處理状土。前處理包含質(zhì)控、比對和定量伺糠。質(zhì)控采用 fastqc/fastp; 比對用 hisat2 或者不比對蒙谓,用 salmon 直接定量;比對后用 featureCounts 進行 reads 定量训桶,用 TPMCalculator 進行 TPM 定量累驮。

fastp 質(zhì)控
推薦 fastp 質(zhì)控原始 fastq 數(shù)據(jù),因為集成程度高包含了各項過濾同時速度很快渊迁。

fastp -i ${RawDir}/${Sample}_R1.fq.gz -o ${CleanDir}/${Sample}_R1.fq.gz \
-I ${RawDir}/${Sample}_R2.fq.gz -O ${CleanDir}/${Sample}_R2.fq.gz \
--compression 6 --report_title ${Sample} --json ${CleanDir}/${Sample}_fastp.json \
--html ${CleanDir}/${Sample}_fastp.html --detect_adapter_for_pe

一般來說 RNA-Seq 重復率會比較高慰照。ATCG 堿基占比容易出現(xiàn)前面堿基不穩(wěn)定。多查看幾個樣本表現(xiàn)琉朽,如果波動模式差不多說明是隨機引物不隨機導致的毒租,可以選擇移除或不移除。


ATCG 占比前面堿基有波動

hisat2 比對
比對推薦 hisat2 不推薦 bowtie2. 因為 bowtie2 對剪切不友好箱叁,即使提高 --maxins 參數(shù)允許更長的片段墅垮,比對率依舊比較低。

hisat2 --new-summary -k 4 --threads 4 --summary-file ${BamDir}/${Sample}_HISAT2.txt \
-x ${GRCh38} -1 ${CleanDir}/${Sample}_R1.fq.gz -2 ${CleanDir}/${Sample}_R2.fq.gz \
-S ${BamDir}/${Sample}.sam

# samtools 過濾
samtools view --threads 4 -F 256 -b ${BamDir}/${Sample}.sam | samtools sort \
--threads 4 -o ${BamDir}/${Sample}.bam -O BAM
samtools index ${BamDir}/${Sample}.bam

ENCODE 2016 指南認為 Long/Small RNA-Seq 文庫應有 30M 以上比對 Reads/Mates.
hisat2 默認 -k 參數(shù)為 5(linear index) 或 10(graph index)耕漱,此時 MAPQ 數(shù)值將為 0 或 1 或 60. 60 為唯一比對(primary)算色,0 為不比對,1 為多比對螟够。

$ samtools view Test.bam | awk '{print $5}' | sort | uniq 
0
1
60

在 samtools view 命令用 -F 256 移除次要比對灾梦,保留唯一比對峡钓。

$ samtools flag 256
0x100   256     SECONDARY

featureCounts 定量
featureCounts 定量基礎(chǔ)單元叫 feature (如外顯子 exon),以 GTF 注釋文件為例若河,其第三列為 feature 類型能岩。多個 feature 可聯(lián)合形成 meta-feature (如基因 gene) 并計算總聚的 reads 數(shù)目。由 -g 參數(shù)設(shè)置 meta-feature 對應哪個屬性萧福,比如 GTF 格式默認用 "gene_id" 標記拉鹃。

featureCounts 默認不計算重疊于多個 (meta-)feature 的 reads,除非重疊的 feature 屬于同一個 meta-feature 那么只計算一次鲫忍。重疊于多個 meta-feature 對 RNA-Seq 實驗建議不計算膏燕,因為無法得知該 reads 究竟來自哪個基因;對于 CHIP-Seq 建議計算悟民。因此用 featureCounts 定量轉(zhuǎn)錄本是不合適的坝辫,因為同一基因的轉(zhuǎn)錄本有大量重合區(qū)域。

featureCounts 用 BAM 文件 "NH" 標簽獲取多比對信息射亏。默認只計算唯一比對(primary)阀溶,不計算多比對。用 -M 參數(shù)控制計算多比對鸦泳;用 --primary 參數(shù)控制只計算唯一比對银锻。

featureCounts 默認 reads 有一個堿基與 feature 重合就計算一次,可通過 --minOverlap, --fracOverlap 等參數(shù)設(shè)定閾值做鹰。同時 reads 上的任意 gap(insertions, deletions, exon-exon junctions or structural variants) 也算數(shù)击纬。

featureCounts 輸入的 BAM 文件不要求排序。下面 -p--countReadPairs 參數(shù)指定是雙端測序且統(tǒng)計 fragment 而不是 reads.

featureCounts -p --countReadPairs --primary -F GTF -t exon -g gene_id \
-a ${Annot} -o ${CountDir}/${Sample}.tsv ${BamDir}/${Sample}.bam

salmon 定量
salmon 是轉(zhuǎn)錄本定量軟件钾麸,使用轉(zhuǎn)錄本定量主要優(yōu)點一是更準確更振,比如樣本同一基因使用不同轉(zhuǎn)錄本此時基因長度并不相等,直接基因定量不準確饭尝;二是方便進行可變剪切分析肯腕。
salmon 可以從 fastq 直接定量也可以從比對好的 bam 定量,本文使用 fastq 定量钥平。

第一次使用 salmon 前先建立索引实撒,建索引前先準備 decoys 文件。decoys 指不屬于人基因組但是測序又往往會檢測到的序列涉瘾,有些 decoys 序列跟一些轉(zhuǎn)錄本很相似知态,明確 decoys 序列有助于準確定量。
GitHub - COMBINE-lab/SalmonTools: Useful tools for working with Salmon output 倉庫的腳本可以制作 decoys 文件立叛。

bash generateDecoyTranscriptome.sh -j 8 -a gencode.v35.annotation.gtf \
-g GRCh38.primary_assembly.genome.fa -t gencode.v35.transcripts.fa -o hsa_decoy

用 decoys 目錄里的 fa 文件建立索引负敏。

salmon index -t hsa_decoy/gentrome.fa -i hsa_transcripts_index \ 
--decoys hsa_decoy/decoys.txt -k 31 --gencode

設(shè)置 -k 31 適合 75 bp 及更長 reads,如果 reads 更短需要設(shè)置小點秘蛇∑渥觯或者比對率偏低時顶考,可以將 -k 設(shè)小些,提高靈敏度妖泄。

定量前注意兩點村怪,一是 salmon 要求 reads 無序;二是注意文庫類型浮庐。


ReadLibraryIllustration

如上圖所示,根據(jù) reads 方向?qū)?RNA-Seq 文庫分為不同類型柬焕。salmon LIBTYPE 參數(shù)包含三個部分审残,一是 reads 的相對方向,分別用 I/O/M 表示斑举;二是文庫有無鏈特異性搅轿,分別用 S/U 表示;三是富玷,假如文庫有鏈特異性璧坟,指明鏈方向,分別用 F/R 表示赎懦。如果第二部分是 U 就不需要設(shè)置第三部分雀鹃。下面是這些字母代表的全稱。

I = inward
O = outward
M = matching
S = stranded
U = unstranded
F = read 1 (or single-end read) comes from the forward strand
R = read 1 (or single-end read) comes from the reverse strand
A = automatically determine

salmon 用 F/R 表示鏈方向励两,其他軟件可能用 F2R1/F1R2 形式黎茎。
下圖是與 TopHat 比較


LYT_Salmon_TopHat

注意命令 -l 參數(shù)放 -1/-2 之前。

salmon quant -l IU -i ${IndexPath} -1 ${CleanDir}/${Sample}_R1.fq.gz \
-2 ${CleanDir}/${Sample}_R2.fq.gz -p 4 -g ${GRCh38GTF} \
-o ${SalmonDir}/${Sample}

轉(zhuǎn)錄本定量保存在 quant.sf 文件当悔。有 -g 參數(shù)時會輸出基因水平定量傅瞻。

Name    Length  EffectiveLength TPM     NumReads
ENST00000456328.2       1657    1372.105        0.034568        1.000
ENST00000450305.2       632     348.480 0.000000        0.000
ENST00000488147.1       1351    1066.105        3.604749        81.025

注意 NumReads 不一定是整數(shù),是考慮唯一比對和多比對后對轉(zhuǎn)錄本相對豐度的估計盲憎。

TPMCalculator 定量
TPMCalculator 計算基因嗅骄、轉(zhuǎn)錄本、外顯子和內(nèi)含子的 TPM 定量饼疙。其 TPM 定量公式如下溺森,r_{i} 是比對到 i feature 片段數(shù)目;l_{i} 是 feature 長度窑眯。
TPM_{i} = \frac{r_{i} \times 10^6}{l_{i} \times T}
T = \sum_{j=1}^n{\frac{r_{j}}{l_{j}}}

基因的轉(zhuǎn)錄本及外顯子內(nèi)含子有著復雜的關(guān)系儿惫,如下圖所示軟件進行了兩種轉(zhuǎn)換。第一種轉(zhuǎn)換伸但,根據(jù)外顯子重合肾请,創(chuàng)建包含所有外顯子的基因模型;第二種轉(zhuǎn)換創(chuàng)建“純粹”的內(nèi)含子區(qū)域更胖,不被任何外顯子覆蓋铛铁。這些不重合的內(nèi)含子和 feature 用來計算 TPM.


Gene_model

參數(shù) -c 推薦設(shè)置為 reads 長度隔显;參數(shù) -p 設(shè)置只統(tǒng)計“正確”比對的雙端測序數(shù)據(jù)。
因為比對 hisat2 設(shè)置了 -k 參數(shù)饵逐,因此 MAPQ 值只有 0/1/60 三種括眠,用 -q 參數(shù)過濾比對質(zhì)量 60 因此只保留 primary alignment. 如果前面經(jīng)過 samtools 過濾了,這里不再需要過濾倍权。

TPMCalculator -g ${GRCh38GTF} -b ${BamDir}/${Sample}.bam \
-c 150 -k gene_id -t transcript_id -q 60 -p -a

軟件將輸出結(jié)果至當前目錄掷豺,包含 3 文件。

  • *_genes.out | Include calculated values per Gene
  • *_genes.uni | Include calculated values per non-overlapped features per Gene
  • *_genes.ent | Include calculated values for all features per Gene

仔細檢查基因輸出結(jié)果可能會發(fā)現(xiàn)有的基因重復了薄声,這是因為軟件認為有重復的基因当船。但提供的 GTF 這個基因并沒有重復,但是它存在不重疊的轉(zhuǎn)錄本默辨,軟件就認定為重復的基因德频,這算是軟件的一個 bug 了,希望哪天能修復了缩幸。

$ grep "ENSG00000235538" kLEC96h-2_genes.out | awk '{NF=7;print}'
ENSG00000235538.3#1 chr6 163671576 163798848 127273 4 0.00366198
ENSG00000235538.3#2 chr6 163927121 164009979 82859 2 0.00281244
ENSG00000235538.3#3 chr6 164228330 164231609 3280 0 0

差異表達分析

差異分析用 DESeq2 包壹置,定量采用 salmon 結(jié)果,需要 tximport 將 salmon 導入給 DESeq2. 如果用 featureCounts 定量表谊,將 counts 整理成矩陣直接導入 DESeq2 分析钞护。

tximport 將 salmon 定量的轉(zhuǎn)錄本表達計算成基因表達。這需要基因和轉(zhuǎn)錄本映射表(TxDb)爆办,TxDb 用 GenomicFeatures 包從 GTF 注釋文件創(chuàng)建患亿,然后保存到本地,以后就讀取使用押逼。

library(AnnotationDbi)
library(GenomicFeatures)

gtfPath <- file.path("/example_dir/gencode.v35.annotation.gtf")
metaName <- c("Source", "Version", "Species")
metaValue <- c("GENCODE", "v35", "Homo sapiens")
extraInfo <- data.frame(name=metaName, value=metaValue)
txd <- makeTxDbFromGFF(gtfPath, format = "gtf", dataSource = "gencode.v35.annotation.gtf", organism = "Homo sapiens", metadata = extraInfo)

# 保存 TxDb 對象到本地
txdbPath <- file.path("/example_dir/gencode.v35.annotation.TxDb.sqlite")
saveDb(txd, file = txdbPath)

makeTxDbFromGFF 讀取 GTF 注釋到 TxDb. 參數(shù) dataSource 記載數(shù)據(jù)來源步藕,可填可不填;參數(shù) metadata 提供元信息挑格,格式是兩列的數(shù)據(jù)框咙冗,要求列名分別為 "name", "value".

> keytypes(txd)
[1] "CDSID"    "CDSNAME"  "EXONID"   "EXONNAME" "GENEID"   "TXID"     "TXNAME"
> txToGene <- AnnotationDbi::select(txd, keys=keys(txd, "TXNAME"), keytype="TXNAME", columns=c("TXNAME", "GENEID"))
'select()' returned 1:1 mapping between keys and columns
> head(txToGene)
             TXNAME            GENEID
1 ENST00000456328.2 ENSG00000223972.5
2 ENST00000450305.2 ENSG00000223972.5
3 ENST00000473358.1 ENSG00000243485.5
4 ENST00000469289.1 ENSG00000243485.5
5 ENST00000607096.1 ENSG00000284332.1
6 ENST00000606857.1 ENSG00000268020.3

txToGenePath <- file.path("/example_dir/gencode.v35.annotation.TxToGene.csv")
write.csv(txToGene, file = txToGenePath, quote = FALSE, row.names = FALSE)

選擇轉(zhuǎn)錄本和基因兩列,得到他們映射關(guān)系漂彤,并保存到本地 csv 文件雾消,下次直接讀取使用。注意第一列為轉(zhuǎn)錄本 ID 第二列為基因 ID 固定順序挫望,列名不作要求立润。

有 TxDb 和 salmon 定量文件和樣品分組信息,就可以將數(shù)據(jù)導入到 DESeq2 分析媳板。
導入必要的 R 包和文件路徑桑腮。biomaRt 用于基因名轉(zhuǎn)換,因為差異分析我習慣用 Ensembl ID 下游分析又常用 HGNC SYMBOL 或 ENTREZ ID.

library(tidyverse)
libraty(biomaRt)
library(tximport)
library(DESeq2)

groupPath <- file.path("/example_dir/SampleGroup.csv")
txGenePath <- file.path("/example_dir/gencode.v35.annotation.TxToGene.csv")
salmonDir <- file.path("/example_dir/Salmon")

ensembl <- useMart(biomart = "ENSEMBL_MART_ENSEMBL", dataset = "hsapiens_gene_ensembl")

tximport 讀取 salmon 定量蛉幸,并保存一份 TPM 表達矩陣破讨,以備下游分析需要丛晦。要注意給 salmon 文件路徑命名,保證讀取后矩陣的列跟文件是對應的提陶。

sampleGroup <- read.csv(groupPath, header = TRUE, quote = "", row.names = 1)
sampleList <- rownames(sampleGroup)
sampleFiles <- file.path(salmonDir, sampleList, "quant.sf")
# 注意給路徑命名
# 名字是表達矩陣樣品名
names(sampleFiles) <- sampleList
txToGene <- read.csv(txGenePath, header = TRUE, quote = "", stringsAsFactors = FALSE)

txi <- tximport(sampleFiles, type = "salmon", tx2gene = txToGene)

# 理論上 TPM 不應該進行過濾一些基因烫沙,除非在所有樣本 TPM 都為 0
tpm1 <- txi$abundance
tpm2 <- tpm1[rowSums(tpm1) > 0, ]

# 去除 Ensembl ID 版本號
short_id <- function(long_id) {
  id_version <- strsplit(long_id, split = ".", fixed = TRUE) %>% unlist()
  ensembl_id <- id_version[1]
  return(ensembl_id)
}

# 取得所有表達基因,創(chuàng)建基因 ID 映射表
ensemblGenes <- sapply(rownames(tpm2), short_id, USE.NAMES = FALSE)
geneMap <- getBM(mart = ensembl, attributes = c("ensembl_gene_id", "entrezgene_id", "hgnc_symbol"), 
                  values = ensemblGenes, filters = "ensembl_gene_id") %>% 
  as_tibble() %>% 
  arrange(entrezgene_id, desc(hgnc_symbol)) %>% 
  distinct(ensembl_gene_id, .keep_all = TRUE)

# 保存 TPM 矩陣到文件
tpm3 <- as_tibble(tpm2, rownames="gene_id") %>% 
  tidyr::separate(col = gene_id, into = c("ensembl_gene_id", "ensembl_gene_version"), sep="\\.", remove = TRUE, extra = "drop", fill = "right") %>% 
  dplyr::select(-ensembl_gene_version) %>% dplyr::left_join(geneMap, by="ensembl_gene_id") %>% 
  dplyr::select(ensembl_gene_id, entrezgene_id, hgnc_symbol, everything())
tpmPath <- file.path("/example_dir/TPM.csv")
write_csv(tpm3, tpmPath)

導入到 DESeq2 并過濾低表達基因隙笆。過濾沒有統(tǒng)一標準锌蓄,我習慣要求至少在 n 樣本 counts 不小于 x. 如果數(shù)據(jù)有不同批次,一般在 design 公式將批次列(因子)放前面撑柔,注意 DESeq2 不會進行批次效應移除瘸爽,但分析時會區(qū)分哪些差異由批次效應引起,哪些由實驗條件引起乏冀。

dds1 <- DESeqDataSetFromTximport(txi, colData = sampleGroup, design = ~ Group)

# 過濾低表達基因
# 一共 6 樣品,要求至少 2 樣品 read counts 大于等于 5
keepGene <- rowSums(counts(dds1) >= 5) >= 2
dds2 <- dds1[keepGene, ]
dds3 <- DESeq(dds2)

用 cook's 距離檢測組內(nèi)樣本一致性洋只。一般 RNA-Seq 測序至少有三個生物學重復辆沦,如果重復少于三個無法計算 cook's 距離。DESeq2 不支持技術(shù)重復识虚,如果做了技術(shù)重復肢扯,用 collapseReplicates 函數(shù)合并。

ddsAssay <- assays(dds3)
cooks <- ddsAssay$cooks
boxplot(log10(cooks))

取得差異分析結(jié)果前保存表達矩陣担锤,以備數(shù)據(jù)質(zhì)控和下游分析蔚晨。用 counts 函數(shù)取得原始的 counts 或標準化的 counts. 后面差異分析結(jié)果的 baseMean 列就是標準化的 counts 計算得到。函數(shù) rlogvst 將 counts 根據(jù)文庫大小或其他標準化因子進行了標準化和轉(zhuǎn)換到對數(shù)(log2)尺度肛循,并控制方差獨立于表達均值铭腕。參數(shù) blind 控制轉(zhuǎn)換過程是否考慮實驗設(shè)計——即前面的 design 參數(shù)。設(shè)置 blind = FALSE 會考慮 counts 差異是否是實驗條件導致多糠,從而保留應有的差異避免過度壓縮累舷,得到的矩陣適合進行下游分析。

readCounts <- DESeq2::counts(dds3, normalized = FALSE) %>% 
  as_tibble(rownames = "gene_id") %>% 
  separate(col = gene_id, into = c("ensembl_gene_id", "ensembl_gene_version"), sep="\\.", remove = TRUE, extra = "drop", fill = "right") %>% 
  select(-ensembl_gene_version) %>% 
  left_join(geneMap, by = "ensembl_gene_id") %>% 
  select(ensembl_gene_id, entrezgene_id, hgnc_symbol, everything())

normalizedCounts <- DESeq2::counts(dds3, normalized = TRUE) %>% 
  as_tibble(rownames = "gene_id") %>% 
  separate(col = gene_id, into = c("ensembl_gene_id", "ensembl_gene_version"), sep="\\.", remove = TRUE, extra = "drop", fill = "right") %>% 
  select(-ensembl_gene_version) %>% 
  left_join(geneMap, by = "ensembl_gene_id") %>% 
  select(ensembl_gene_id, entrezgene_id, hgnc_symbol, everything())

# 適合質(zhì)控
rLog1 <- rlog(dds3, blind = TRUE) %>% assay() %>% 
  as_tibble(rownames = "gene_id") %>% 
  separate(col = gene_id, into = c("ensembl_gene_id", "ensembl_gene_version"), sep="\\.", remove = TRUE, extra = "drop", fill = "right") %>% 
  select(-ensembl_gene_version) %>% 
  left_join(geneMap, by = "ensembl_gene_id") %>% 
  select(ensembl_gene_id, entrezgene_id, hgnc_symbol, everything())

# 適合下游分析
rLog2 <- rlog(dds3, blind = FALSE) %>% assay() %>% 
  as_tibble(rownames = "gene_id") %>% 
  separate(col = gene_id, into = c("ensembl_gene_id", "ensembl_gene_version"), sep="\\.", remove = TRUE, extra = "drop", fill = "right") %>% 
  select(-ensembl_gene_version) %>% 
  left_join(geneMap, by = "ensembl_gene_id") %>% 
  select(ensembl_gene_id, entrezgene_id, hgnc_symbol, everything())

取得差異分析結(jié)果并保存 MA 圖夹孔。其中 results 函數(shù)取得“原始”的差異表達數(shù)據(jù)被盈,lfcShrink 將差異倍數(shù)“壓縮”,兩個數(shù)據(jù) p 值相同——即統(tǒng)計檢驗的結(jié)論是相同的搭伤≈辉酰“壓縮”后的差異表達數(shù)據(jù)適合用于排序或可視化。要注意如果實驗設(shè)計 design 包含了交互作用項怜俐,不要進行 lfcShrink 因為容易過度“壓縮”身堡。
參數(shù) contrast 接受多種指定方式,下面代碼是常見的兩種方式拍鲤。第一種是三個元素的向量盾沫,向量第一個元素是因子名字裁赠,第二個元素是差異分析分子項的水平,即常指的實驗組(比較組)赴精,第三個元素是差異分析分母項的水平佩捞。舉例來說,c("Condition", "B", "A") 表示條件 B 樣本對比條件 A 樣本的差異結(jié)果蕾哟。第二種從 resultsNames() 結(jié)果選取一個字符串一忱,如 "Group_48H_vs_0H" 表示 Group 因子項的 48H 樣本比較 0H 樣本結(jié)果。

rawRes <- results(dds3, contrast = c("Group", "48H", "0H"))
lfcRes <- lfcShrink(dds3, coef = "Group_48H_vs_0H", type = "apeglm", res = rawRes)
summary(rawRes)

# MA Plot
plotMA(rawRes, ylim = c(-5, 5), main = "Raw")
plotMA(lfcRes, ylim = c(-5, 5), main = "Shrink")

比較 MA 圖和火山圖谭确,可以看出 lfcShrink 對低表達基因“壓縮”影響更大帘营。

MA_plot

Volcano

將差異分析結(jié)果轉(zhuǎn)換為 tibble 并保存,下游分析根據(jù)需要進行過濾逐哈。一般來說取 "abs(log2FoldChange) >= 1, padj < 0.05" 作為差異表達基因芬迄。

rawDEGs <- as_tibble(rawRes, rownames = "gene_id") %>% 
  separate(col = gene_id, into = c("ensembl_gene_id", "ensembl_gene_version"), sep="\\.", remove = TRUE, extra = "drop", fill = "right") %>% 
  select(-ensembl_gene_version) %>% 
  left_join(geneMap, by="ensembl_gene_id") %>%
  select(ensembl_gene_id, entrezgene_id, hgnc_symbol, everything())

lfcDEGs <- as_tibble(lfcRes, rownames = "gene_id") %>% 
  separate(col = gene_id, into = c("ensembl_gene_id", "ensembl_gene_version"), sep="\\.", remove = TRUE, extra = "drop", fill = "right") %>% 
  select(-ensembl_gene_version) %>% 
  left_join(geneMap, by="ensembl_gene_id") %>%
  select(ensembl_gene_id, entrezgene_id, hgnc_symbol, everything())

差異基因結(jié)果基因 p 值可能是 NA. 包含下列情況:

  • 該基因所有樣本 counts 數(shù)都為 0, 那么 baseMean 列為 0, 此時 log2FC, p, padj 為 NA
  • 該基因包含離群的 counts 數(shù),此時 p, padj 為 NA
  • 該基因 baseMean 非常低昂秃,此時 padj 為 NA.

相互作用項
上面提到實驗設(shè)計包含相互作用項時不建議 lfcShrink 處理禀梳,相互作用項在官網(wǎng) Interactions 有詳細說明。

簡單來說肠骆,如果認為因子間有相互作用算途,不是獨立的。應在 design 參數(shù)添加相互作用項蚀腿。

假設(shè)實驗設(shè)計有 2 因子 genotype 值分別為 I/II/III 和 condition 值分別為 A/B.
如果 design 為 ~ genotype + condition 那么結(jié)果將是總體的 condition 導致的差異基因嘴瓤,排除了 genotype 因子的效應;如果是 ~ genotype + condition + genotype:condition 或者寫為 ~ genotype * condition 莉钙,那么 condition 因子效應將拆分為主要的效應——即 condition 因子在 genotype 為對照組(I)的情況下的效應廓脆,及相互作用項genotypeII.conditionBgenotypeIII.conditionB 表示對比于 genotypeI 在 genotypeII/genotypeIII 條件下的 condition 效應的差異。

下面舉個例子磁玉∧基因 1 在三種 genotype 下不同 condition 導致的差異倍數(shù)幾乎相同,那么相互作用項 genotype:condition 將接近于 0. 基因 2 在三種 genotype 下有不同的 condition 效應蜀涨,那么 genotype 為 II/III 的 condition 效應將是主要的 condition 效應加上對應 genotype 的相互作用項瞎嬉。

Gene12

參考資料
Vera Alvarez, Roberto, et al. "TPMCalculator: one-step software to quantify mRNA abundance of genomic features." Bioinformatics 35.11 (2019): 1960-1962.
QC Fail Sequencing ? MAPQ values are really useful but their implementation is a mess
Analyzing RNA-seq data with DESeq2
Rsubread/Subread Users Guide
Overview – Salmon: Fast, accurate and bias-aware transcript quantification from RNA-seq data
Bowtie 2: fast and sensitive read alignment
The decoy genome
https://www.biostars.org/p/456231/
Decoy Sequences V/S Target Sequences
Importing transcript abundance with tximport

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市厚柳,隨后出現(xiàn)的幾起案子氧枣,更是在濱河造成了極大的恐慌,老刑警劉巖别垮,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件便监,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機烧董,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門毁靶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逊移,你說我怎么就攤上這事预吆。” “怎么了胳泉?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵拐叉,是天一觀的道長。 經(jīng)常有香客問我扇商,道長凤瘦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任案铺,我火速辦了婚禮蔬芥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘控汉。我一直安慰自己笔诵,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布暇番。 她就那樣靜靜地躺著嗤放,像睡著了一般思喊。 火紅的嫁衣襯著肌膚如雪壁酬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天恨课,我揣著相機與錄音舆乔,去河邊找鬼。 笑死剂公,一個胖子當著我的面吹牛希俩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播纲辽,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼颜武,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拖吼?” 一聲冷哼從身側(cè)響起鳞上,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吊档,沒想到半個月后篙议,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年鬼贱,在試婚紗的時候發(fā)現(xiàn)自己被綠了移怯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡这难,死狀恐怖舟误,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情雁佳,我是刑警寧澤脐帝,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站糖权,受9級特大地震影響堵腹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜星澳,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一疚顷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧禁偎,春花似錦腿堤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至盒至,卻和暖如春酗洒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背枷遂。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工樱衷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人酒唉。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓矩桂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親痪伦。 傳聞我的和親對象是個殘疾皇子侄榴,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容