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

2023-10-31

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

  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文件进行操作,上游分析到此为止。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • RNA-seq数据分析(HISAT2+featureCounts+StringTie)

    RNA seq数据分析 简介1 生物基础1 1 中心法则1 2 RNA seq Protocol1 3 RNA seq总的路线图 2 数据分析2 1 前期准备2 1 1 创建目录 amp 安装conda2 1 2 常用文件格式简介 2 2
  • 安装Hisat2

    一 xff08 MobaXterm Personal xff09 安装aspera 首先进行预编译解压安装 xff1a mkdir Biosofts unzip hisat2 2 2 1 Linux x86 64 zip d Biosoft
  • RNAseq---Hisat2 标准输出中比对率信息解读

    RNA Seq Hisat2 标准输出中比对率信息解读 本文具体解释部分 xff08 一 xff09 中内容复制自Biostar内容 xff0c 后面附上我实际的例子 xff0c 二者略有不同 xff0c 整体理解上没大问题 xff0c 有
  • hisat2-build

    The hisat2 build indexer 使用dna文件构建索引 xff0c 输出后缀为 1 ht2到 8 ht2的八个文件 如果索引较大 xff0c 后缀改为ht2l 后续的比对需要这八个文件 xff0c 并且一旦索引构建成功 x
  • RNA-Seq比对软件HISAT2的用法

    参考网址 xff1a http blog sciencenet cn blog 759995 990471 html 感谢原作者 转载于 https www cnblogs com lmt921108 p 7442839 html
  • edger和deseq2_转录组分析(二)Hisat2+DESeq2/EdgeR

    一 序列比对 在2016年的一篇综述A survey of best practices for RNA seq data analysis xff0c 提到目前有三种RNA数据分析的策略 那个时候的工具也主要用的是TopHat STAR和
  • HISAT2 - StringTie - DESeq2 pipeline 进行bulk RNA-seq

    软件官网 xff1a Hisat2 xff1a Manual HISAT2 StringTie xff1a StringTie 文章 xff1a Transcript level expression analysis of RNA seq
  • 【1】RNA-seq 测序数据之Hisat2比对-featurecount计算-EdgeR分析

    一 拿到 测序数据之后 xff0c 首先选择参考基因组及比对工具进行比对 1 Hisat比对 xff1a xff08 6个G的测序数据耗时20分钟 xff0c 比对率78 4 xff09 物种差异度大导致比对率低 build index h
  • Hisat2 Bowtie2比对结果解读

    Bowtie的中文意思是 xff1a 领结 xff0c 蝴蝶结 Bowtie2用户手册 xff1a http bowtie bio sourceforge net bowtie2 manual shtml 在看比对结果前需要了解三个概念 x
  • 生信学习——R语言小作业-中级(附详细答案解读)

    题目目录 1 请根据R包org Hs eg db找到下面ensembl 基因ID 对应的基因名 symbol 2 根据R包hgu133a db找到下面探针对应的基因名 symbol 3 找到R包CLL内置的数据集的表达矩阵里面的TP53基因
  • RNA-seq——快速下载SRA数据、解决fq文件中测序质量全为 ‘?‘ 的问题

    写在前面 在学习RNA seq时 需要从网上下载公开数据集来上手分析 大部分教程都很古老 其中在ncbi中ftp的下载链接已经不存在了 甚至可以直接下载fastq文件 但是 直接下载的fastq文件做fastqc之后结果为一条直线 因为文件
  • RNA-seq——上游分析练习2(数据下载+trim-galore+hisat2+samtools+featureCounts)

    目录 软件安装 新建文件夹 一 下载数据 二 质控过滤 1 数据质量检测 2 数据质量控制 3 对处理后的数据再次QC 三 序列比对 1 hisat2比对 2 flagstat检查一下结果 四 featureCounts定量 写在前面 本文
  • 对FPKM/RPKM以及TPM的理解

    虽然一直在接触FPKM RPKM以及TPM 但是仅仅是知道它们是转录本定量的值 并未究其根本 最近看了几篇文献 对其深层次的含义有了进一步的理解 因而在这里记录下来 首先来看FPKM RPKM的起源 在RNA Seq中 最简单的定量基因表达
  • 生信学习——基于R的可视化习题30个(附详细答案解读)

    题目目录 一 基础绘图 1 对RNAseq expr的每一列绘制boxplot图 2 对RNAseq expr的每一列绘制density图 3 对RNAseq expr的每一列绘制条形图 4 对RNAseq expr的每一列取log2后重新
  • 生信学习——生信人的20个R语言习题(上)(附详细答案解读)

    题目目录 1 安装一些R包 2 了解ExpressionSet对象 比如CLL包里面就有data sCLLex 找到它包含的元素 提取其表达矩阵 使用exprs函数 查看其大小 3 了解 str head help函数 作用于第二步提取到的
  • 单细胞测序基础知识

    构建文库 上机测序 根据不同的荧光检测不同的碱基 质量控制 质控QC 去除低质量的序列 表达定量 统计reads数 进而得到表达矩阵 标准化 让所有样本处在同一起跑线上 主成分分析PCA 图中每个点都代表一个样本 不同颜色表示不同类别 在绿
  • RNA-seq——学习路线、学习经验、实战项目、学习总结

    1 参考课程和博客 B站 RNA seq转录组数据分析入门实战 生信技能树 转录组测序数据分析 简书 RNA seq 1 用conda安装RNA seq所需要的工具 简书 RNA seq 2 1 原始数据下载的几种方法 简书 RNA seq
  • 2022.04.11【读书笔记】

    文章目录 摘要 研究意义 转录组学意义 技术比较 研究方法 细胞筛选 文库构建 测序 实验方法 实验流程 常见问题 分析内容 重点 分析内容总览 细胞亚群分类 细胞类型频率统计 Marker基因分析 富集分析 样本差异分析 逆时分析 WGC
  • 生信学习——Linux必做20题(附详细答案解读)

    题目列表 1 在任意文件夹下面创建形如 1 2 3 4 5 6 7 8 9 格式的文件夹系列 2 在创建好的文件夹 home qiime2 Desktop test 1 2 3 4 5 6 7 8 9 下创建文本文件 me txt 3 在文
  • RNA-seq——四、根据序列比对结果筛选差异基因

    目录 1 合并矩阵并进行注释 2 筛选差异基因 DESeq2 写在前面 经过前面的一系列分析 我们得到了几个counts数据 接下来就需要根据这些数据来进行分析 本文使用Rstudio 从序列比对结果中筛选出差异基因 目的是 根据不同基因的

随机推荐

  • mysql基础命令

    1 常用命令 1 create database db name 创建数据库 2 show databases 显示所有的数据库 3 drop database db name 删除数据库 4 show tables 显示数据表 5 des
  • 三菱j4伺服中文说明书_三菱伺服抱闸伺服的使用方法

    刹车原理 伺服电机的刹车抱闸和普通的电磁抱闸原理是一样的 靠电磁线圈产生磁场吸力 克服机械刹车片的弹簧制动力矩 驱动机械刹车片的分开 释放电机轴 一般三菱伺服的刹车都是直流24V电源 他的刹车是不分正负极 很多初次使用的工控人员都会纠结这个
  • 网站设计之常见简单实用的JavaScript特效总结(上篇)

    这篇主要是总结JavaScript常见简单实用的特效 主要从代码量短 简单实用几个方面进行叙述 其中特效包括 1 鼠标悬停图片切换查看器 2 鼠标移动图片放大 3 鼠标移动切换内容 4 贵财下拉菜单案例 5 JS图片放大镜功能 类似淘宝 6
  • 【无标题】文件查找、运行项目(网站)HTML5(H5)、压缩---解压缩

    一 登录系统 用户名 root 密钥对 安全组 云服务器 来源 0 0 0 0 0 端口 ALL TCP 80 策略 允许 物理服务器 虚拟机 systemctl stop firewalld 关闭防火墙 setenforce 0 关闭se
  • ethers.js 应用(助记词、地址、私钥)

    1 创建助记词 const ethers require ethers let wallet ethers Wallet createRandom let mnemonic wallet mnemonic console log mnemo
  • MybatisPlus整合Flowable出现的坑

    MybatisPlus整合Flowable出现的坑 摘要 现在在项目中使用的MybatisPlus 最近研究了一下流程框架Flowable 看了很多技术文档博客 打算直接整合进去 先记录一下遇到的问题 问题 Description file
  • #define宏定义详解

    define宏定义 1 常规用法 无参宏 define PI 3 1415926 define EN 1e5 定义指数1 10e5 cout lt
  • SpringBoot学习笔记之日志处理

    spring boot内部使用Commons Logging来记录日志 但也保留外部接口可以让一些日志框架来进行实现 例如Java Util Logging Log4J2还有Logback 如果你想用某一种日志框架来进行实现的话 就必须先配
  • vue中使用loading

    因为有很多组件需要loading 所以我们把loading写为组件 在全局中都可以使用 而选择的loading 最好是css3动画写的 如果用图片 图片本身就是需要请求的 在网上找了一个css3动画 如下 loading中的代码
  • osgEarth的Rex引擎原理分析(一一四)rex与mp引擎的关系

    目标 一一三 中的问题201 rex与mp都是osgEarth加载地理高程和影像的引擎 rex比mp新 功能更强大 rex引擎支持随机瓦片加载 地图颜色渐变 更快的添加删除 待继续分析列表 9 earth文件中都有哪些options 九 中
  • wangeditor富文本引用、表格使用问题

    wangeditor富文本组件问题 问题介绍 具体情况 解决方案 css修改 说明 问题介绍 本文记录了wangeditor开发中遇到的一个问题 之前在使用wangeditor的时候因为时间紧张没有过多研究 后续项目测试 测出来发现编辑器中
  • SAP系统权限配置一

    1 系统权限的重要性 2 SAP系统环境 在测试环境做客户化权限的配置测试 开发系统中做对应的开发 不允许直接正式系统环境中做客户化配置以及开发 只能通过传输的形式 3 SAP权限的基本概念 这边后续都是ABAP开发顾问来分配和定义的 4
  • 在项目中,关于前端实现数据可视化的技术选择

    前言 在项目中 数据可视化以图表 报表类型为主 需求背景 技术框架是Vue2 x版本 组件库是Ant Design of Vue 能够支撑足够多的图表类型开发 图表大小 位置能够随意变动 图表样式需要支持丰富多样的用户配置 强大 开放的图表
  • 计算机专业数学建模结课论文,数学建模论文范文2篇

    利用数学知识解决现实生活的具体问题了成为当今数学界普遍关注的内容 利用建立数学模型解决实际问题的数学建模活动也应运而生了 下面是秋天网小编为大家整理的数学建模论文 供大家参考 数学建模论文范文一 初中数学建模教学研究 数学 源于人们对生产与
  • Snapd出错记录

    突然断电导致无法访问所有应用商店安装的应用 即snapd出问题 访问systemctl status snapd service无法访问 如图 查阅了很多资料 有用的只有重新安装 重新安装snapd sudo apt autoremove
  • 常用限流算法的应用场景和实现原理

    在高并发业务场景下 保护系统时 常用的 三板斧 有 熔断 降级和限流 今天和大家谈谈常用的限流算法的几种实现方式 这里所说的限流并非是网关层面的限流 而是业务代码中的逻辑限流 限流算法常用的几种实现方式有如下四种 计数器 滑动窗口 漏桶 令
  • 关于torch.jit.trace在yolov8中出现的问题

    关于torch jit trace在yolov8中出现的问题 疑问 1 为什么yolov8不能直接torch jit trace 需要经过图像检测后才能 且检测后self net发生变化 而2中的第一版yolov5可以直接torch jit
  • Qt翻金币小游戏详细教程(内涵所有源码、图片资源)

    一 项目简介 翻金币项目是一款经典的益智类游戏 我们需要将金币都翻成同色 才视为胜利 首先 开始界面如下 点击start按钮 进入下层界面 选择关卡 在这里我们设立了20个关卡供玩家选择 假设我们点击了第1关 界面如下 如果想要赢取胜利 我
  • django项目2022

    django项目 pip install i https pypi tuna tsinghua edu cn simple django 2 2 3 pip install i https pypi tuna tsinghua edu cn
  • RNA-seq——上游分析练习2(数据下载+trim-galore+hisat2+samtools+featureCounts)

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