RNA-seq——上游分析练习2(数据下载+trim-galore+hisat2+samtools+featureCounts)

news2024/11/15 17:47:43

目录

  • 软件安装
  • 新建文件夹
  • 一、下载数据
  • 二、质控过滤
    • 1.数据质量检测
    • 2.数据质量控制
    • 3.对处理后的数据再次QC
  • 三、序列比对
    • 1.hisat2比对
    • 2.flagstat检查一下结果
  • 四、featureCounts定量

写在前面——本文是转录组上游分析的实战练习。主要包含四个步骤:

  1. 数据下载(包括sra数据、参考基因组、参考基因组注释文件)
  2. 质控过滤(使用trim-galore进行质控,使用fastqc、multiqc进行质量检测)
  3. 序列比对(hisat2)
  4. featureCounts定量

软件安装

详细步骤见
RNA-seq——一、Linux软件安装

安装配置conda

wget -c https://mirrors.bfsu.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc

conda config --add channels r
conda config --add channels bioconda
conda config --add channels conda-forge
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes

使用conda安装软件

conda create -n rna python=3.8
conda activate rna

conda install fastqc
conda install multiqc
conda install trim-galore
conda install hisat2
conda install samtools
conda install subread

新建文件夹

00ref:存放参考基因组及注释文件
01raw_data:存放原始数据
02clean_data:存放清洗之后的数据
03align_data:存放比对后的文件
04matrix:存放reads计数文件

文件结构清晰,让人赏心悦目~

注:练习时注意当前所在位置,要在正确的文件夹中进行正确的操作。

一、下载数据

conda install sra-tools
conda update sra-tools

# -p  Show progress
prefetch -p SRR11618610
prefetch -p SRR11618616
prefetch -p SRR11618621

检查数据是否完整

md5sum *.sra > md5.txt
cat md5.txt
md5sum -c md5.txt

sra数据处理:
fastq-dump
优点:可以直接将sra文件转为fastq.gz文件
缺点:不能自定义线程

fasterq-dump
优点:可自定义线程,面对大量数据时,效率更高
缺点:sra转为fastq,再压缩成fastq.gz

其他工具:kingfisher
Kingfisher是一个高通量测序数据下载工具,能根据用户的需求将下载数据直接输出为SRA、Fastq、Fasta或Gzip等格式,非常方便,不需要自己再对SRA数据通过fasterq-dump进行拆分转换。

fastq-dump --gzip --split-3 SRR*.sra

此处数据较少,偷个懒~

# 查看数据
zcat SRR11618610_1.fastq.gz | head -n 8

最终结果如图:

二、质控过滤

1.数据质量检测

# 分别对单个文件进行检测,输出多个html格式的检测结果
fastqc SRR*gz

# 整合检测结果
multiqc ./

检测结果(MultiQC Report)主要包含以下内容:

  • Sequence Quality Histograms
  • Per Sequence Quality Scores
  • Per Base Sequence Content
  • Per Sequence GC Content
  • Per Base N Content
  • Sequence Length Distribution
  • Sequence Duplication Levels
  • Overrepresented sequences
  • Adapter Content
  • Status Checks

经过检测,这三个数据集存在一些问题,具体如下:
Per Base Sequence Content


对所有reads的每一个位置,统计ATCG四种碱基的分布,正常情况下每个位置每种碱基出现的概率是相近的,四条线应该平行且相近。
当部分位置碱基的比例出现bias时,即四条线在某些位置纷乱交织,往往提示我们有overrepresented sequence的污染。
本结果前10个位置,每种碱基频率有明显的差别,说明有污染。
当任一位置的A/T比例与G/C比例相差超过10%,报"WARN";当任一位置的A/T比例与G/C比例相差超过20%,报"FAIL"。

Per Sequence GC Content

统计reads的平均GC含量的分布。理论分布应该是正态分布,均值不一定在50%,而是由平均GC含量推断的。
曲线形状的偏差往往是由于文库的污染或是部分reads构成的子集有偏差(overrepresented reads)。
形状接近正态但偏离理论分布的情况提示可能有系统偏差。偏离理论分布的reads超过15%时,报"WARN";偏离理论分布的reads超过30%时,报"FAIL"。

Sequence Duplication Levels

统计不同拷贝数的reads的频率。测序深度越高,越容易产生一定程度的duplication,这是正常的现象,但如果duplication的程度很高,就提示我们可能有bias的存在。
图中显示大于10个重复的reads占总序列的20%以上。
当非unique的reads占总数的比例大于20%时,报"WARN";当非unique的reads占总数的比例大于50%时,报"FAIL“。

2.数据质量控制

FASTQ文件格式及测序文件phred质量格式判断

判断一下测序文件phred的格式,为了之后选择trim_galore的参数。
目前主流的格式为Phred+33

vim fa_type.sh
# 脚本中加入如下内容
# 编辑完成之后 wq 保存
less $1 | head -n 1000 | awk '{if(NR%4==0) printf("%s",$0);}' | od -A n -t u1 -v | awk 'BEGIN{min=100;max=0;} \
{for(i=1;i<=NF;i++) {if($i>max) max=$i; if($i<min) min=$i;}} \
END{if(max<=126 && min<59) print "Phred33"; \
else if(max>73 && min>=64) print "Phred64"; \
else if(min>=59 && min<64 && max>73) print "Solexa64"; \
else print "Unknown score encoding";}'

# 运行脚本
bash fa_type.sh SRR11618610_1.fastq.gz

# 输出结果
Phred33

使用trim_galore批量去除adapter、过滤掉低质量的reads
参考:5 trim_galore去接头(并行处理)

# 文件分类
ls | grep _1.fastq.gz > gz1
ls | grep _2.fastq.gz > gz2
paste gz1 gz2 > config

vim trim.sh

# trim.sh中的代码
dir=/home/st8/ssd2/tree008/project/rna/02clean_data/
cat config |while read id
do
      arr=${id}
      fq1=${arr[0]}
      fq2=${arr[1]}
      nohup trim_galore -q 25 --phred33 --length 36 --stringency 3 --paired -o $dir $fq1 $fq2 &
done

# 运行脚本
bash trim.sh

参数说明:
-q/–quality
移除接头,修剪3’端低质量的碱基。默认值为20。
–phred33
适用于IlLumina 1.9+:指导cutadapt使用ASCII+33质量分数作为pared分数,默认使用。
–stringency
接头序列最小配对碱基数:简单来说就是最多能允许末端残留多少个接头序列的碱基,默认值为极端值1。
–length
设置长度阈值,若read通过质控清洗或去接头后长度小于此阈值,则会被剔除。
对于双端结果,一对reads中若一个read因为该原因被抛弃,则对应的另一个read也抛弃。不会被输出到双端结果文件。
默认值:20bp。
–paired
对于双端结果,一对reads中若一个read因为质量或其他原因被抛弃,则对应的另一个read也抛弃,但若使用–retain_unpaired选项可以保留。

处理后的文件

# -d:分隔符,按照指定分隔符分割列。与-f一起使用
# -f:依据-d的分隔字符将一段信息分割成为数段,用-f取出第几段的意思
ls -lh *fq.gz | cut -d" " -f 5-

3.对处理后的数据再次QC

fastqc SRR*gz
multiqc ./

Sequence Quality Histograms

处理前

处理后

Adapter Content

处理前

处理后

可以看到经过trim_galore处理之后,序列质量得到了提升(初始数据质量很好,所以提升不太明显),adapter也被去除。

三、序列比对

使用hisat2进行序列比对,需要先下载index。下载地址:https://daehwankimlab.github.io/hisat2/download/

genome: HISAT2 index for reference
genome_snp: HISAT2 Graph index for reference plus SNPs
genome_tran: HISAT2 Graph index for reference plus transcripts
genome_snp_tran: HISAT2 Graph index for reference plus SNPs and transcripts

# 这里我直接从别人那里cp了一份
cp /tmp/grch38_genome.tar.gz project/rna/00ref/

tar -zxvf grch38_genome.tar.gz

1.hisat2比对

ls *fq.gz | cut -d "_" -f 1 |
while read id; do nohup sh -c 
"hisat2 -p 10 -x ../00ref/grch38/genome 
-1 ${id}_1_val_1.fq.gz 
-2 ${id}_2_val_2.fq.gz 2>${id}.log | 
samtools sort -@ 10 -o ../03align_out/${id}.bam" & done

参数说明:
sh [参数] 脚本
-c 命令从字符串读取
-i 实现脚本交互
-n 进行语法检查
-x 实现逐条语句的跟踪
hisat2 [参数]
-p 设置线程
-x 参考基因组索引文件的前缀
-1 -2 分别对应双端测序的两个文件
samtools [参数]
sort 默认按照染色体位置进行排序
-@ 设置线程,加快运行速度
-o 设置最终排序后的输出文件名

其中,2>${id}.log是以覆盖的方式,把前面指令的错误信息输出到log文件中。好处就是把命令的结果保存起来,当我们需要的时候可以随时查询。具体见:
Linux 命令行shell输出重定向使用说明
Linux命令 结果输出重定向

2.flagstat检查一下结果

ls *.bam | while read id; 
do nohup samtools flagstat 
-@ 10 ${id%.*}.bam > ${id%.*}.flagstat & done

##和%%表示最长匹配,#和%表示最短匹配。#是对左边部分处理,%是对右边部分处理。例子见:
https://baijiahao.baidu.com/s?id=1701830551588131996

四、featureCounts定量

定量需要gtf文件(参考基因组注释文件),下载地址:
https://www.gencodegenes.org/human/

gunzip gencode.v42.annotation.gtf.gz
gtf=/home/st8/ssd2/tree008/project/rna/00ref/gencode.v42.annotation.gtf

# 操作时位于03align_out文件夹
nohup featureCounts -T 10 -p -t exon 
-g gene_id -a $gtf -o ../04matrix/all.id.txt
*.bam 1>../04matrix/counts.id.log 2>&1 &

参数说明
-T 线程数量,默认为1
-p 只能用在paired-end(双端测序)的情况中 If specified, fragments (or templates) will be counted instead of reads. This option is only applicable for paired-end reads; single-end reads are always counted as reads.
-t 设置feature-type,-t指定的必须是gtf中有的feature,同时read只有落到这些feature上才会被统计到,默认是“exon”
-g 在GTF注释中指定属性类型。默认为“gene_id”
-a 注释文件名称。默认为GTF/GFF格式
-o 输出文件的名称,包括read counts

all.id.txt

all.id.txt.summary

counts.id.log

之后可以使用Rstudio对all.id.txt文件进行操作,上游分析到此为止。

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

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

相关文章

DockerCompose编排Redis6.2.6以及遇到的那些坑

场景 Docker中使用Dockerfile的方式部署SpringBootVue前后端分离的项目(若依前后端分离框架为例): Docker中使用Dockerfile的方式部署SpringBootVue前后端分离的项目(若依前后端分离框架为例)_霸道流氓气质的博客-CSDN博客_若依 dockerfile 在上面使用Dockerfile分别构建每个…

Heron‘s formula

In geometry, Heron’s formula (or Hero’s formula) gives the area A of a triangle in terms of the three side lengths a, b, c. If {\textstyle s{\tfrac {1}{2}}(abc)}{\textstyle s{\tfrac {1}{2}}(abc)} is the semiperimeter of the triangle, the area is,[1] {\d…

影视中学职场套路——《如懿传》中职场生存法则

目录 一、老板决定的事&#xff0c;赞成不赞成都要执行 二、居人之下&#xff0c;聪明劲儿别往外露 三、切忌大庭广众直接与上级冲突 四、取悦所有人&#xff0c;不如取悦最大的boss 五、再强的人&#xff0c;也需要团队作战 六、人善被人欺&#xff08;首先要自保&#…

第三十一章 linux-模块的加载过程一

第三十一章 linux-模块的加载过程一 文章目录第三十一章 linux-模块的加载过程一sys_init_modulestruct moduleload_module模块ELF静态的内存视图字符串表&#xff08;string Table)HDR视图的第一次改写find_sec函数ps:kernel symbol内核符号表&#xff0c;就是在内核的内部函数…

opencv图像去畸变

图像去畸变的思路 对于目标图像(无畸变图像)上的每个像素点&#xff0c;转换到normalize平面&#xff0c;再进行畸变变换&#xff0c;进行投影&#xff0c;得到这个像素点畸变后的位置&#xff0c;然后将这个位置的源图像&#xff08;畸变图像&#xff09;的像素值作为目标图像…

Visual Studio 2022安装与编译简单c语言以及C#语言(番外)

文章目录1 软件下载网站2 下载与安装3 创建并学习C语言4 创建并学习C#语言1 软件下载网站 Visual Studio官网 2 下载与安装 1、下载社区版即可。 2、下载得到安装文件&#xff0c;右键以管理员方式运行安装文件。 3、点击继续。 4、等待下载完成。 5、这里学习C选择使用…

SpringBoot文件上传同时,接收复杂参数

目录 环境信息 问题描述 错误分析 解决方法 简单参数 总结 环境信息 Spring Boot&#xff1a;2.0.8.RELEASE Spring Boot内置的tomcat&#xff1a;tomcat-embed-core 8.5.37 问题描述 收到文件上传的开发工作&#xff0c;要求能适配各种场景&#xff0c;并且各场景的请求…

C语言——操作符详解(上)

C语言——操作符详解&#xff08;上&#xff09; 操作符的分类 C语言中的操作符主要分为算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式、下标引用、函数调用和结构成员。我将分成三篇文章为大家详细介绍以上所…

[附源码]Python计算机毕业设计Django网约车智能接单规划小程序

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

[附源码]Python计算机毕业设计华夏商场红酒管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等…

AI绘画火爆,以昆仑万维AIGC为例,揭秘AI绘画背后的模型算法

AI绘画火爆&#xff0c;以昆仑万维AIGC为例&#xff0c;揭秘AI绘画背后的模型算法 一、前言 最近AI绘画让人工智能再次走进大众视野。在人工智能发展早起&#xff0c;一直认为人工智能能实现的功能非常有限。通常都是些死板的东西&#xff0c;像是下棋、问答之类的&#xff0…

mysql锁范围(一)表级锁变行级锁

文章目录行级锁1. 用两个连接connection登陆mysql2. 测试无索引情况1&#xff09;机器1开启事务&#xff0c;执行更新北京仓数据sql&#xff0c;不提交事务2&#xff09;机器2开启事务&#xff0c;先查询北京仓3&#xff09;机器2开始更新上海仓数据4&#xff09;机器1事务回滚…

【Spring Cloud】Nacos服务分级存储模型与负载均衡原理与实战

本期目录1. 服务分级模型介绍2. 服务分级模型的必要性3. 配置集群属性4. NacosRule负载均衡4.1 背景描述4.2 配置Nacos负载均衡策略4.3 根据权重负载均衡1. 服务分级模型介绍 为了提升整个系统的容灾性&#xff0c;Nacos 引入了地域 (Zone) 的概念&#xff0c;如上图中的北京、…

Reactor 和 Proactor 区别

Reactor 和 Proactor 区别 同步异步、阻塞非阻塞组合 同步 以read()函数为例&#xff0c;int n read(fd, buf. sz) 当采用同步的方式和阻塞io的方式时&#xff0c;buf就是从内核拷贝的数据&#xff0c;函数返回则可以马上知道 buf 中的数据。当采用同步的方式和非阻塞io的方式…

关于rabbitmq消息推送的小demo

目录 一.前言 1.1场景 1.2消息交换机三种形式 二.建设demo工程 2.1 依赖 2.2yml文件指定rabbitmq连接信息 2.3直连型消息链接 一.前言 1.1场景 在我们实际开发中到一个特定的时候是比如工作流到某个状态时, 我们会向某某单位发送消息, 这时就会用到我们的消息推送---ra…

javaee之Mybatis2

一、保存操作 在做这个方法之前&#xff0c;我们先把之前做的那个MybatisTest里面的每一个方法做成一个Test方法&#xff0c;也就是标注Test这个注解 这样便于我们测试接下来的每一个方法。仔细分析一下上面的代码&#xff0c;会发现&#xff0c;可重复性的地方太多。比如我们…

两台linux服务器rsync自动备份文件

检查rsycn是否安装 检查方法&#xff1a;rpm -qa rsync 出现rsync 包名就是安装了 安装rsycn rsync的安装可以使用yum直接安装&#xff1a;yum install rsync rsycn的服务端/文件接收端配置 1、先创建备份目录 mkdir /data/xsbak2、服务端需要开启rsyncd服务&#xff0c;添加…

接口测试(九)—— Git代码托管、jenkins 的持续集成

目录 一、持续集成 二、git 1、简介和安装 2、Gitee 2.1 git 和 gitee 管理代码工作原理 2.2 PyCharm 配置 Gitee 插件 3、PyCharm 与 Gitee 相关操作 3.1 将 Gitee的项目 Checkout到 Pycharm中 3.2 推送 PyCharm 新项目到 Gitee远程仓库 3.3 将 Pycharm代码 push到 …

React基础知识(组件实例三大核心属性state、props、refs)(二)

系列文章目录 第一章&#xff1a;React基础知识&#xff08;React基本使用、JSX语法、React模块化与组件化&#xff09;&#xff08;一&#xff09; 文章目录系列文章目录一、State1.1. state基本使用1.2 state的简写形式二、Props2.1 props的基本使用2.2 props属性值限制2.3 …

精品基于SSM的小学生课程资源网络云平台

《基于SSM的小学生课程资源网络云平台》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 使用技术&#xff1a; 开发语言&#xff1a;Java 框架&#xff1a;ssm 技术&#xff1a;JSP JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据…