前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >转录组 - raw data/QC/过滤

转录组 - raw data/QC/过滤

原创
作者头像
用户10328045
发布2023-02-22 18:49:54
1.4K0
发布2023-02-22 18:49:54
举报
文章被收录于专栏:R语言小白

生信技能树学习笔记

Raw data

背景

先了解

  • 测序长度
  • 单端/双端?
  • 测序对象 mRNA?lncRNA?

fastq数据格式

Raw data 或 Raw reads 结果以FASTQ文件格式存储

结果每四行一显示

  • 第一行 @开头,随后为illumina测序识别符合描述文字
  • 第二行 碱基序列
  • 第三行 +开头
  • 第四行 对应序列的测序质量的ASCII码 Base calling,Q值越大精度越高,ASCII数值减33得到Q值

质控——fastqc

常用参数

  • -o --outdir 设置输出目录
  • -t --threads 同时处理几个样本
代码语言:{ r setup, include = FALSE}
复制
nohup fastqc -t 6 -o ./ SRR*.fastq.gz >qc.log &

将html文件下载到本地,解读 QC 报告

  • Basic Statistics——GC 30-60%
  • Per base sequence quality——横坐标为碱基位置,纵坐标为Q值
  • Per tile sequence quality——好的结果应该是全蓝色
  • Per sequence quality scores——横坐标为平均Q值,纵坐标为每个Q值对应的reads数(应该呈现拖尾的分布)
  • Per base sequence content——每个碱基位置上ATCG含量的分布图,AT和GC应分别相等,呈水平线,开头允许少许抖动
  • Per sequence GC content——横坐标为平均GC含量,纵坐标为每个GC含量对应的序列数量,蓝色为理论值,红色为测量值,二者越接近越好
  • Per base N content——N含量分布
  • Sequence Length Distribution——长度分布
  • Sequence Duplication levels——序列的重复度
  • Overrepresented sequences——转录组中某个
  • Adapter Content——接头含量,表示序列中两端adapter的情况

使用MultiQC整合FastQC结果

代码语言:{ r setup, include = FALSE}
复制
multiqc *.zip -o ./ 

数据过滤

如何判断数据需要过滤?

质量控制标准

  • 去除含接头的reads
  • 过滤去除低质量值数据,确保数据质量
  • 去除含有N(无法确定碱基信息)的比例大于5%(根据实际情况)的reads

数据过滤方式一:trim_galore

常用参数

  • -q --quality 切除质量得分低于设置值的序列,默认值20
  • --length 长度小于设定值的reads将被丢弃
  • --max_n 去除含有碱基数大于N的序列
  • --stringency 限定最少与adaptor序列重叠的碱基数
代码语言:{ r setup, include = FALSE }
复制
## 单个样本
trim_galore -q 20 --length 20 --max_n 3 --fastqc --paired -o ./ ../../rawdata/SRR1039510_1.fastq.gz ../../rawdata/SRR1039510_2.fastq.gz
代码语言:{ r setup, include = FALSE }
复制
## 多个样本 
## 生成并保存ID,$NF表示最后一列
ls $HOME/project/Human-16-Asthma-Trans/data/rawdata/*_1.fastq.gz | awk -F'/' '{print $NF}' | cut -d'_' -f1 >ID

vim trim.sh
## 循环 .sh内容
rawdata=$HOME/project/Human-16-Asthma-Trans/data/rawdata
cleandata=$HOME/project/Human-16-Asthma-Trans/data/cleandata/trim_galore
cat ID | while read id
do
  trim_galore -q 20 --length 20 --max_n 3 --stringency 3 --fastqc --paired -o ${cleandata} ${rawdata}/${id}_1.fastq.gz ${rawdata}/${id}_2.fastq.gz
done

## 后台运行
nohup sh trim.sh > trim.sh.log &

## 整合新的multiqc
multiqc *.zip

数据过滤方式二:fastp

速度比 trim_galore 快

常用参数

  • -i, -I 后接需要过滤的fastq文件
  • -o,-O 后接过滤玩输出的fastq文件名 【注意大小写和reads1/2前后对应】
  • -n --n_base_limit 限制N个数
  • -q 设置碱基质量阈值,默认阈值为15
  • -l 小写的L 设置 read 的最小长度,默认是15,长度<15 的 read 将被丢弃
代码语言:{ r setup, include = FALSE}
复制
# 定义文件夹:vim fastp.sh
cleandata=$HOME/project/Human-16-Asthma-Trans/data/cleandata/fastp/
rawdata=$HOME/project/Human-16-Asthma-Trans/data/rawdata/
cat ../trim_galore/ID | while read id
do
fastp -l 20 -q 20 --compression=6 \
  -i ${rawdata}/${id}_1.fastq.gz \
  -I ${rawdata}/${id}_2.fastq.gz \
  -o ${cleandata}/${id}_clean_1.fq.gz \
  -O ${cleandata}/${id}_clean_2.fq.gz \
  -R ${cleandata}/${id} \
  -h ${cleandata}/${id}.fastp.html \
  -j ${cleandata}/${id}.fastp.json 
done
## 注意反斜线后面一定不能有空格

# 运行fastp脚本
nohup sh fastp.sh >fastp.log &

过滤数据比较

代码语言:{ r setup, include = FALSE}
复制
# 进入过滤目录
cd $HOME/project/Human-16-Asthma-Trans/data/cleandata/trim_galore

# 原始数据
zcat $rawdata/SRR1039510_1.fastq.gz | paste - - - - > raw.txt

#  过滤后的数据
zcat SRR1039510_1_val_1.fq.gz |paste - - - - > trim.txt
awk '(length($4)<63){print$1}' trim.txt > Seq.ID

head -n 100 Seq.ID > ID100
grep -w -f ID100 trim.txt | awk '{print$1,$4}' > trim.sm
grep -w -f ID100 raw.txt | awk '{print$1,$4}' > raw.sm
paste raw.sm trim.sm | awk '{print$2,$4}' | tr ' ' '\n' |less -S

附录

前台转后台

代码语言:{ r setup, include = FALSE }
复制
## 运行时按Ctrl + Z

jobs ## 可以看到 stopped,并且可以看到 jobs 的序列号,但只能在当前窗口
ps fx ## 可以看到PID编号,使用ps fx在另一个窗口也可以看见

bg %1 ## 百分号后面的是jobs的序列号

jobs ## 此时进入running状态,并且可在后台显示

kill -9 %2 ## 强制性杀除第2个进程

fg %1 ## 此时后台转到前台

检查脚本内容

使用echo打印命令,进行检查

代码语言:{ r setup, include = FALSE}
复制
cat ID | while read id
do
  echo "trim_galore -q 20 --length 20 --max_n 3 --stringency 3 --fastqc --paired -o ${cleandata} ${rawdata}/${id}_1.fastq.gz ${rawdata}/${id}_2.fastq.gz"
done

掐头去尾获得样本ID

代码语言:{ r setup, include = FALSE}
复制
ls $rawdata/*_1.fastq.gz | while read id
do
name=${id##*/}
name=${name%_*}
	trim_galore -q 20 --length 20 --max_n 3 --stringency 3 --fastqc --paired -o ${cleandata} ${rawdata}/${name}_1.fastq.gz ${rawdata}/${name}_2.fastq.gz
done

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Raw data
    • 背景
      • fastq数据格式
      • 质控——fastqc
      • 数据过滤
        • 数据过滤方式一:trim_galore
          • 数据过滤方式二:fastp
            • 过滤数据比较
            • 附录
              • 前台转后台
                • 检查脚本内容
                  • 掐头去尾获得样本ID
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档