转录组数据---从原理到分析(Hisat2+Stringtie+Deseq2)

一、 首先放一段illumina测序平台的官方原理链接:

https://www.bilibili.com/video/BV1Cx411p7dm

illumina测序平台采用的是二代测序原理,即"Next-generation"sequencing(NGS)其关键的特点是:高通量、边合成边测序

二、 illumina测序平台的主要步骤可大致分为4步:

1. 建库

A. 首先,进行3`末端突出的碱基A,为了后续可以在粘性末端添加接头(Adaptor)
B. 接着,利用突出的A-tail,添加环状结构以增强稳定性。
C. 然后,环状结构删除从而形成“Y”形接头。目的是为后续PCR中作为引物扩增继续添加文库index、与测序平台互补的寡核苷酸序列(作为后期测序引物)
D. 最后,利用不同PCR的扩增体系,将P7、P5以及Barcode加入到测序DNA上


Figure1

建库完成后的每条DNA的单链均一端连有测序引物Read1 Sequencing Primer(Rd1SP)和P5,另一端为Rd2 SP、Index(Barcode)和P7。

2. 桥式PCR扩增

“桥”式扩增(通过分别以P5和P7固定接头不断的扩增),将散布在表面的单核苷酸序列变成散布的DNA簇,以解决单分子产生的光信号很弱的缺点。


Figure2

3. 边合成边测序

在流通池加入可逆终止荧光dNTP,其3'-OH被阻隔(糖基3'连接有叠氮基团,在链延伸时起到了阻止添加下一个dNTP作用)。也就是说,达到一个循环只能扩增一个碱基,光信号捕捉仪只需要在一个信号结束的时候捕捉光信号,就可以确定该碱基。

Figure3

4. DNA簇颜色信号判断碱基

Figure4

三、 下机文件fastq的格式

一条序列有四行:
  1. 序列综合信息
  2. 序列碱基信息
  3. +号
  4. 序列对应的每个碱基的质量信息(根据荧光信号的强弱和弥散程度分析得到)
    PS:phred33和phred64是针对read quality scores的转码形式命名的
Figure5
Figure6
Figure7

四、转录组数据的分析流程

  以下步骤中所有软件的安装均基于linux系统,采用conda安装:
         conda install fastqc
  我更喜欢分环境安装不同的生信软件:
   #将软件安装在特定环境下
         conda install -n fastqc_env fastqc
   #激活环境
         conda activate fastqc_env
   #检查是否安装成功
         fastqc -v
   #关闭环境
         conda deactivate

主要用到的软件有:

  1. 数据质量分析软件 fastqc multiqc
  2. 数据质量控制软件 fastp(采用c++编写,功能强大,运行快)
  3. 序列比对软件 hisat2(以及samtools将sam文件转化为bam文件)
  4. 样本定量软件 stringtie
  5. 差异表达分析R语言包 deseq2 packageballgown package

以下代码以单个样本为例:

1. 测序结果Raw data的分析

#生成文件的md5值
md5sum *.gz > md5.txt
#比对md5值
md5sum -c md5.txt    
#fastqc查看样本质量
fastqc -t 6 *gz -o result/
#multiqc整合fastqc分析结果
multiqc ./
# -t参数指定线程数  *gz为所有包含gz的文件 -o参数输出结果 
#./指出于当前目录

2. Raw data的质量控制(转成Clean data)

#按照fastp默认参数进行质量控制,想增加参数可以查看官网maunal
    fastp -i in.R1.fq.gz -I in.R2.fq.gz -o our.R1.fq.gz -O  out.R2.fq.gz
# -i -I分别为双端测序的两个文件 -o为输出结果文件

3. 比对到物种参考基因组(获得bam文件)

#以羊的基因组为例,首先建立参考基因组索引
hisat2_extract_exons.py sheep.gtf > exons.txt
hisat2_extract_splice_sites.py sheep.gtf > ss.txt
#该命令运行所需内存很大超过200G
hisat2-build -p 6 --ss ss.txt --exon exons.txt sheep.fa sheep
#电脑配置不够可以采用精简命令(8G足矣):
hisat2-build -p 6 sheep.fa sheep
#当使用精简命令后,在比对时要加入--known-splicesite-infile ss.txt参数
hisat2 --known-splicesite-infile ss.txt --dta  --thread 6 -x sheep_ovi/sheep_ovi -1 1C.R1.fastq.gz -2 1C.R2.fastq.gz -S result/1C.sam
#将sam文件转化为二进制的bam文件,节约空间和处理时间
samtools view --threads 6 -m 2G -bS 1C.sam > 1C.bam
#将bam文件排序(必须进行这一步):
samtools sort --threads 5 -m 2G 1C.bam -o 1C.sorted.bam

4. 样本定量分析(得到gtf文件)

第一种情况:

#该命令会影响后续差异分析结果,会出现很多STRING.xxx
stringtie -p 6  -G sheep.gtf -o 1C.gtf 1C.sorted.bam
stringtie --merge -p 6 -G sheep.gtf  -o black_stringtie_merged.gtf mergelist.txt
stringtie -e -B -p 6 -G black_stringtie_merged.gtf -o sec_gtf/sample_1C/str_1C.gtf 1C.sorted.bam

第二种情况:

#不经过融合多个样本的结果这一步骤后,可以很好的避免差异分析中大量的STRING.xxx
stringtie -e -B -p 6 -G sheep.gtf -o third_gtf/th_1C.gtf 1C.sorted.bam
#后续用deseq2分析则需要该命令转化成deseq2可输入文件;用ballgown可忽略
prepDE.py -i deseq2_pre.txt -g black_deseq2_gene.txt -t black_deseq2_trans.txt

5. 分组差异表达分析

deseq2包的差异表达分析:

#读取文件
input_data <- read.table("black_deseq2_gene.txt", header = TRUE, row.names=1)
#取整
input_data <- round(input_data, digits = 0)
#准备工作
input_data <- as.matrix(input_data)
#指定分组名称
condition <- factor(c(rep("black",6),rep("kazakstan",6)))
#建立数据框
coldata <- data.frame(row.names = colnames(input_data), condition)
library(DESeq2)
#构建deseq输入矩阵
dds <- DESeqDataSetFromMatrix(countData = input_data, colData = coldata, design = ~condition)
#DEseq2进行差异分析
dds <- DESeq(dds)
#提取数据
res <- results(dds)
summary(res)
res <- res[order(res$padj), ]
resdata <- merge(as.data.frame(res), as.data.frame(counts(dds,normalized=TRUE)), by="row.names", sort=FALSE)
names(resdata)[1] <-"Gene"
#head(resdata)

#输出结果文件
write.table(resdata, file="diffexpr-results.txt", sep ="\t", quote = F, row.names = F)

ballgown包的差异表达分析:

#安装ballgown包
BiocManager::install("ballgown")
#载入包
library("ballgown")
#查看帮助
help("ballgown")
#引入文件
data_directory_pitu = file.path("C:/other_disk/E_disk_database/RStudiorun/rna_seq_bla_ovi/differ_gene/different_gene_ballgown/diffr_gene_ballg/extdata_pituitary")
# make the ballgown object:
bg_pitu = ballgown(dataDir=data_directory_pitu, samplePattern='sample', meas='all')
bg
#设置样本分组
sampleNames(bg_pitu)
pData(bg_pitu) <- data.frame(id=sampleNames(bg_pitu),group=c(0,0,0,1,1,1))
# 转录本水平的差异分析
stat_results_tran = stattest(bg,
                        feature='transcript',
                        meas='FPKM',getFC = TRUE,
                        covariate='group')
# 基因水平的差异分析
stat_results_gene_pitu = stattest(bg_pitu,
                        feature='gene',
                        meas='FPKM',getFC = TRUE,
                        covariate='group')

一些问题:

  1. 关于Deseq2处理之后出现的许多MSTRG.xxx的数据,我认为这些是新发现的转录本(非参考基因组对应的转录本),关于这一点推测的理由是:以羊为例参考基因组注释基因个数为34328,而经过Deseq2处理之后的数据会出现55353个"基因条目",其中的有基因名字的有33509,另外的均为MSTRG.xxx数据,假如以不关注新的转录本为实验目的,可以将带基因命名的提取出来用于后续作图和分析。
  2. 关于Deseq2计算出的log2FC并非单纯的log2FC,其中包含可“一些缩小和缓和”的计算,但是大致可以近似为log2FC,比如(log2FC)=|1|代表FC的值的范围为FC>2&FC<0.5。

参考文章

  1. https://study.163.com/course/courseLearn.htm?courseId=1005231058#/learn/video?lessonId=1052094537&courseId=1005231058
  2. https://mp.weixin.qq.com/s/zNFvod8B-VhX7Kq7OgoRMA
  3. https://www.baidu.com/link?url=wxq34KJyLfCFq7k_L_4E6mJukZpe_s-ycjWM4X7Gu_TPosowriIuXNi1FFX4uw-lBsne5KbX434VrlH-3qxt2w4eiQtzktT5jbKkL05UTl3&wd=&eqid=cbf3fc9600059c0b000000056069657f
  4. https://www.bilibili.com/video/BV1KJ411p7WN
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容