edger和deseq2_转录组分析(二)Hisat2+DESeq2/EdgeR

一、序列比对

在2016年的一篇综述A survey of best practices for RNA-seq data analysis,提到目前有三种RNA数据分析的策略。那个时候的工具也主要用的是TopHat,STAR和Bowtie.其中TopHat目前已经被它的作者推荐改用HISAT进行替代。

1. Hisat2教程

1.1 下载安装

#conda直接安装

conda install hisat2

#源码下载安装

wget wget ftp://ftp.ccb.jhu.edu/pub/infphilo/hisat2/downloads/hisat2-2.1.0-source.zip

unzip hisat2-2.1.0-source.zip

make

1.2 构建index

直接下载现有的insex或通过Hisat2的方法进行创建

# 其实hisat2-buld在运行的时候也会自己寻找exons和splice_sites,但是先做的目的是为了提高运行效率

extract_exons.py gencode.v26lift37.annotation.sorted.gtf > hg19.exons.gtf &

extract_splice_sites.py gencode.v26lift37.annotation.gtf > hg19.splice_sites.gtf &

# 建立index, 必须选项是基因组所在文件路径和输出的前缀

hisat2-build --ss hg19.splice_sites.gtf --exon hg19.exons.gtf genome/hg19/hg19.fa hg19

1.3正式比对

hisat2基本用法就是hisat2 [options]* -x {-1 -2 | -U } [-S ],基本就是提供index的位置,PE数据或者是SE数据存放位置。然而其他可选参数却是进阶的一大名堂。新手就用默认参数呗。

hisat2 --dta -p 6 --max-intronlen 5000000 -x Oryza_sativa.IRGSP-1.0.genome -1 C1-1_good_1.fq -2 C1-1_good_2.fq -S C1-1.HISAT_aln.sam >hisat2_running.log 2>&1

1.4 Hisat2输出结果

比对之后会输出如下结果,解读一下就是全部数据都是100%的,2.88%的配对数据一次都没有比对,94.20%的数据比是唯一比对,2.92%是多个比对。然后如果不按照顺序来,有4.96%的比对。之后把剩下的部分用单端数据进行比对的话,65.57%数据没比对上,33.23%的数据比对一次,1.20%比对超过一次。零零总总的加起来是98.20%的比对。

20182824 reads; of these:

20182824 (100.00%) were paired; of these:

581893 (2.88%) aligned concordantly 0 times

19011569 (94.20%) aligned concordantly exactly 1 time

589362 (2.92%) aligned concordantly >1 times

----

581893 pairs aligned concordantly 0 times; of these:

28886 (4.96%) aligned discordantly 1 time

----

553007 pairs aligned 0 times concordantly or discordantly; of these:

1106014 mates make up the pairs; of these:

725197 (65.57%) aligned 0 times

367552 (33.23%) aligned exactly 1 time

13265 (1.20%) aligned >1 times

98.20% overall alignment rate

2. SAMtools三板斧

SAM(sequence Alignment/mapping)数据格式是目前高通量测序中存放比对数据的标准格式,当然他可以用于存放未比对的数据。而目前处理SAM格式的工具主要是SAMTools

view: BAM-SAM/SAM-BAM 转换和提取部分比对

sort: 比对排序

merge: 聚合多个排序比对

index: 索引排序比对

faidx: 建立FASTA索引,提取部分序列

tview: 文本格式查看序列

#最常用的三板斧就是格式转换,排序,索引。

samtools view -S SRR35899${i}.sam -b > SRR35899${i}.bam

samtools sort SRR35899${i}.bam -o SRR35899${i}_sorted.bam

samtools index SRR35899${i}_sorted.bam

3. BAM/SAM文件格式

SAM文件主要由两个部分构成:

header:标记了该SAM文件的一些基本信息,比如版本、按照什么方式排序的、Reference信息等等。

本体:每行为一个reads,不同列记录了不同的信息,列与列之间通过tab分隔。

每列的含义:

MAPQ值:

表示为mapping的质量值,mapping Quality, It equals -10log10Pr{mapping position is wrong}, rounded to the nearest integer, A value 255 indicates that the mapping quality is not available. 该值的计算方法是mapping的错误率的-10log10值,之后四舍五入得到的整数,如果值为255表示mapping值是不可用的,如果是unmapped read则MAPQ为0,一般在使用bwa mem或bwa aln(bwa 0.7.12-r1039版本)生成的sam文件,第五列为60表示mapping率最高,一般结果是这一列的数值是从0到60,且0和60这两个数字出现次数最多

想把小于2的都丢弃:

samtools view -bSq 2 file.sam > filtered.bam

flag的含义:

1 : 代表这个序列采用的是PE双端测序

2: 代表这个序列和参考序列完全匹配,没有插入缺失

4: 代表这个序列没有mapping到参考序列上

8: 代表这个序列的另一端序列没有比对到参考序列上,比如这条序列是R1,它对应的R2端序列没有比对到参考序列上

16:代表这个序列比对到参考序列的负链上

32 :代表这个序列对应的另一端序列比对到参考序列的负链上

64 : 代表这个序列是R1端序列, read1;

128 : 代表这个序列是R2端序列,read2;

256: 代表这个序列不是主要的比对,一条序列可能比对到参考序列的多个位置,只有一个是首要的比对位置,其他都是次要的

512: 代表这个序列在QC时失败了,被过滤不掉了(# 这个标签不常用)

1024: 代表这个序列是PCR重复序列(#这个标签不常用)

2048: 代表这个序列是补充的比对(#这个标签具体什么意思,没搞清楚,但是不常用)

cigar的含义:

cigar中会包含数字,代表了特定match持续了多少nt;以及不同的字符,代表了不同的match情况。

30S512M216N12S (30nt soft clip -> 512nt exact match -> 216nt skipped region -> 12nt soft clip)

30S (30nt soft clip)

40M (40nt exact match)

其中不同的字符及其含义如下:

参考:

https://www.jianshu.com/p/a584d31418f3

https://www.jianshu.com/p/9c87bba244d8

二、htseq-count的使用

HTSeq作为一款可以处理高通量数据的python包,由Simon Anders, Paul Theodor Pyl, Wolfgang Huber等人携手推出HTSeq — A Python framework to work with high-throughput sequencing data。自发布以来就备受广大分析人员青睐,其提供了许多功能给那些熟悉python的大佬们去自信修改使用,同时也兼顾着给小白们提供了两个可以拿来可用的可执行文件 htseq-count(计数) 和 htseq-qa(质量分析)。

具体参考:

https://www.cnblogs.com/triple-y/p/9338890.html

https://blog.csdn.net/herokoking/article/details/78257714

三、基因差异表达分析

1. DESeq2(DESeq2不支持无生物学重复的数据)

library("DESeq2")

#directory

directory

sampleFiles

#sampleFiles

sampleCondition

sampleTable

#sampleTable

ddsHTSeq

#ddsHTSeq

colData(ddsHTSeq)$condition

dds

res

res

#head(res)

png(file="plotMA.png",type="cairo")

plotMA(dds)

dev.off()

mcols(res,use.names=TRUE)

write.csv(as.data.frame(res),file='deseq2.csv')

png(file="plotDispEsts.png",type="cairo")

plotDispEsts(dds)

dev.off()

#pheatmap

sum(res$padj < 0.05, na.rm=TRUE)

library("pheatmap")

select

nt

log2.norm.counts

df

pdf('heatmap.pdf',width = 6, height = 7)

pheatmap(log2.norm.counts, cluster_rows=TRUE, show_rownames=FALSE,cluster_cols=TRUE, annotation_col=df)

dev.off()

2. EdgeR

count.matrix

ID B.count wt.count

AT1G01010 384 314

AT1G01020 661 861

AT1G01030 48 47

AT1G01040 5608 6206

AT1G01046 77 82

AT1G01050 2889 2357

AT1G01060 6039 6296

AT1G01070 408 240

AT1G01073 0 0

edgeR.R

library(edgeR)

data = read.table('count.matrix', header=T, row.names=1, com='')

col_ordering = c(1,2)

rnaseqMatrix = data[,col_ordering]

rnaseqMatrix = round(rnaseqMatrix)

rnaseqMatrix = rnaseqMatrix[rowSums(cpm(rnaseqMatrix) > 1) >= 2,]

conditions = factor(c(rep('B', 1), rep('wt', 1))) #对样本进行分组

exp_study = DGEList(counts=rnaseqMatrix, group=conditions) #建立基因表达列表,利用DEGList函数, 参数counts为read数矩阵,group为上一步的分组变量

exp_study = calcNormFactors(exp_study) #计算各样本内的标准化因子

exp_study_bcv = exp_study

bcv = 0.01 #估计生物学变异系数

et = exactTest(exp_study_bcv, dispersion = bcv ^ 2)

#gene = decideTestsDGE(et, p.value = 0.05, lfc = 0)

#summary(gene)

#head(res)

tTags = topTags(et,n=NULL)

result_table = tTags$table

result_table = data.frame(sampleA='B', sampleB='wt', result_table)

result_table$logFC = -1 * result_table$logFC

write.csv(result_table,file = 'B-wt.csv')

source('Rna-seq/trinityrnaseq-Trinity-v2.4.0/Analysis/DifferentialExpression/R/rnaseq_plot_funcs.R')

pdf('B-wt.pdf')

plot_MA_and_Volcano(result_table$logCPM, result_table$logFC, result_table$FDR)

dev.off()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470083.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HDU 2444 The Accomodation of Students 二分图匹配

HDU 2444 The Accomodation of Students 二分图匹配 题目来源&#xff1a; HDU题意&#xff1a; 给出学生数n和关系数m&#xff0c;接下来给出m个关系。 要求将学生分成两部分&#xff0c;每一部分不能有互相认识的人。做不到就输出"No"。 若上一步满足&#xff0c;则…

检测范围_论文检测系统的检测范围有哪些

为了能够让研究人员&#xff0c;甚至一些专业的学术专家在进行论文创作的时候&#xff0c;端正自己的学术态度&#xff0c;很多人都会要求他们在提交甚至是发表论文之前&#xff0c;附上自己的查重证明&#xff0c;只有查重率低于一定程度时&#xff0c;提交的论文才是合格的。…

[POJ3252]Round Number(数位dp)

题目链接&#xff1a;http://poj.org/problem?id3252 题意&#xff1a;求范围内数字二进制下0的个数大于等于1的个数的数的个数。 数位dp&#xff0c;dp(l,zero,one,fz)记录当前第l位时0的个数1的个数和当前位是否是前导零中的部分&#xff0c;dfs转移就行。 1 #include <b…

2学习率调整_学习率衰减

之前我们的优化&#xff0c;主要是聚焦于对梯度下降运动方向的调整&#xff0c;而在参数迭代更新的过程中&#xff0c;除了梯度&#xff0c;还有一个重要的参数是学习率α&#xff0c;对于学习率的调整也是优化的一个重要方面。01—学习率衰减首先我们以一个例子&#xff0c;来…

Codeforces Round #299 (Div. 2) D. Tavas and Malekas kmp

题目链接&#xff1a; http://codeforces.com/problemset/problem/535/DD. Tavas and Malekastime limit per test2 secondsmemory limit per test256 megabytes问题描述 Tavas is a strange creature. Usually "zzz" comes out of peoples mouth while sleeping, bu…

可怕的乖孩子_当今的中国,有句很可怕的话:所有的乖孩子注定不幸福!

来自soogif▼/01不知道从什么时候起&#xff0c;乖孩子被贴上了一个不幸福的标签&#xff0c; 一个表现很乖的孩子总是会被认为是因为缺乏爱和安全感&#xff0c;才表现的很乖&#xff0c;很懂事的样子的。事实真的是这样子的吗&#xff1f;No&#xff01;爸爸去哪儿5里的Jaspe…

js获取当前日期星期几

var str "今天是星期" "日一二三四五六".charAt(new Date().getDay());alert(str); 转载于:https://www.cnblogs.com/lccnblog/p/5902525.html

适用于VS C++环境的注释代码段,可以让你的代码被使用时有高可读性的注释

编码时&#xff0c;在对高级语言&#xff08;C#/VB etc&#xff09;函数的访问时&#xff0c;经常会有很明确的函数功能提示&#xff0c;参数提示&#xff0c;与返回值提示。微软的VisualStudio C集成开发环境同样有这样的功能&#xff0c;只是常见开源的代码很少按照VS的注释格…

mysql 用户管理表_Mysql—用户表详解(mysql.user)

MySQL数据库Mysql—用户表详解(mysql.user)MySQL是一个多用户管理的数据库&#xff0c;可以为不同用户分配不同的权限&#xff0c;分为root用户和普通用户&#xff0c;root用户为超级管理员&#xff0c;拥有所有权限&#xff0c;而普通用户拥有指定的权限。MySQL是通过权限表来…

Orchard商城模块(Commerce)设计与后台部分

前言&#xff1a;使用CMS开发网站为目标&#xff0c;编写一个扩展性比较好的商城模块。 首先是整体流程图&#xff0c;大概介绍功能与设计。 接下来我们逐个模块功能介绍。 一。商品管理模块 商品模块中可发布需要在线售卖的商品 (套餐商品) 1.1 添加一个商品 1. 商品正常价&…

mysql数据库架构_MySQL数据库之互联网常用架构方案

一、数据库架构原则高可用高性能可扩展一致性二、常见的架构方案方案一&#xff1a;主备架构&#xff0c;只有主库提供读写服务&#xff0c;备库冗余作故障转移用jdbc:mysql://vip:3306/xxdb高可用分析&#xff1a;高可用&#xff0c;主库挂了&#xff0c;keepalive(只是一种工…

mysql数据库恢复策略_MySQL 备份和恢复策略(一)

在数据库表丢失或损坏的情况下&#xff0c;备份你的数据库是很重要的。如果发生系统崩溃&#xff0c;你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态。本文主要对MyISAM表做备份恢复。备份策略一&#xff1a;直接拷贝数据库文件(不推荐)备份策略二&#xff1…

laravel方法汇总详解

1.whereRaw() 用原生的SQL语句来查询&#xff0c;whereRaw(select * from user) 就和 User::all()方法是一样的效果 2.whereBetween() 查询时间格式 whereBetween(problem_date, [2016-10-05 19:00:00, 2016-10-05 20:35:10]) 这种可以查到&#xff0c;时间格式类似这种, 查询日…

输入输出优化

被各种变态的出题者出的数据坑到了这里/sad 1 int read() 2 { 3 int num0; char chgetchar(); 4 while(ch<0&&ch>9) chgetchar(); //过滤前面非数字字符 5 while(ch>0&&ch<9) {num*10;numch-0;chgetchar();} 6 return num…

mysql整数索引没用到_MYSQL 索引无效和索引有效的详细介绍

1、WHERE字句的查询条件里有不等于号(WHERE column!...)&#xff0c;MYSQL将无法使用索引2、类似地&#xff0c;如果WHERE字句的查询条件里使用了函数(如&#xff1a;WHERE DAY(column)...)&#xff0c;MYSQL将无法使用索引3、在JOIN操作中(需要从多个数据表提取数据时)&#x…

Qt词典搜索

Qt词典搜索 采用阿凡达数据-API数据接口及爱词霸API数据接口实现词典搜索功能&#xff0c;实例字符串搜索接口分别为&#xff1a;中文词组采用“词典”&#xff0c;中文单个字采用“中华字典”&#xff0c;英文或其他字符采用“爱词霸”&#xff1b; 对应的API接口&#xff1a;…

mysql8.0.13 rpm_Centos7 安装mysql 8.0.13(rpm)的教程详解

yum or rpm&#xff1f;yum安装方式很方便&#xff0c;但是下载mysql的时候从官网下载&#xff0c;速度较慢。rpm安装方式可以从国内镜像下载mysql的rpm包&#xff0c;比较快。rpm也适合离线安装。环境说明•操作系统&#xff1a;Centos7.4 (CentOS-7-x86_64-Minimal-1804.iso)…

如何参与一个GitHub开源项目

Github作为开源项目的著名托管地&#xff0c;可谓无人不知&#xff0c;越来越多的个人和公司纷纷加入到Github的大家族里来&#xff0c;为开源尽一份绵薄之力。对于个人来讲&#xff0c;你把自己的项目托管到Github上并不表示你参与了Github开源项目&#xff0c;只能说你开源了…

mysql数据库的多实例_MySQL数据库多实例应用实战 - 橙子柠檬's Blog

本文采用的是/data目录作为mysql多实例总的根目录&#xff0c;然后规划不同 的MySQL实例端口号来作为/data下面的二级目录&#xff0c;不同的端口号就是不同实例目录&#xff0c;以区别不同的实例&#xff0c;二级目录下包含mysql数据文件&#xff0c;配置文件以及启动文件的目…

微信企业号开发[二]——获取用户信息

注&#xff1a;文中绿色部分为摘自微信官方文档 在《微信企业号开发[一]——创建应用》介绍了如何创建应用&#xff0c;但是当用户点击应用跳转到我们设定的URL时&#xff0c;其实并没有带上用户的任何信息&#xff0c;为了获取用户信息&#xff0c;我们需要借助微信提供的OAut…