其实是补一下再重温一下最近老师讲课了,知识是跟的上的,但是一些具体的内容就有些乏力了,然后想了想还是视觉的一些命令的参数不记得这方面影响更大一些
以及这里我会把前面学习到的一些命令参数在这理手动打一下,用以重温
基础知识
fastq的数据基本知识
以及,每一段都是不同的身份标识符,使用冒号进行分割 最早的是测序仪的名字
为了避免空值,会Q+33或Q+64,如果是后者的话,ASCII码会出现小写字母
Q20 指的是碱基质量值大于20的比例,后面同理。肯定越高越好,大约85以上已经很好了
转录分析流程
课后习题
1.统计reads_1.fq文件种共有多少条reads?
# 答案不只一种,看看你能用集中方法算出来
# NR表示行号
# %表示除于取整、
zless SRR1039510_1.fastq.gz | grep '^@SRR' |wc -l
zless -S SRR1039510_1.fastq.gz | paste - - - - |wc -l
zless SRR1039510_1.fastq.gz |wc -l | awk '{print $0/4}'
zless -S SRR1039510_1.fastq.gz |awk '{ if(NR%4==2) {print} }' |wc -l
# sed 版本 课后习题
2.输出reads_1.fq文件中所有的序列ID(即第一行)
zless SRR1039510_1.fastq.gz | grep '^@SRR' |less -S
zless SRR1039510_1.fastq.gz | paste - - - - |cut -f 1 |less -S
zless -S SRR1039510_1.fastq.gz |awk '{if(NR%4==1){print}}' |less -S
3.输出SRR1039510_1.fastq.gz文件中所有的序列(即第二行)
zless SRR1039510_1.fastq.gz | paste - - - - |cut -f 2 |less -S
zless -S SRR1039510_1.fastq.gz |awk '{if(NR%4==2){print}}' |less -S
4.统计SRR1039510_1.fastq.gz碱基总数
# 简单版本
zless -S SRR1039510_1.fastq.gz |paste - - - - |cut -f 2 |tr -d '\n' |wc -m
zless -S SRR1039510_1.fastq.gz |paste - - - - |cut -f 2 |grep -o [ATCGN] |wc -l
# awk的高阶用法:BEGIN END模块
zless -S SRR1039510_1.fastq.gz |awk '{ if(NR%4==2){print} }' | awk 'BEGIN {num=0} {num=num+length($0)} END{ print "num="num}'
这里我补充部分笔记<br />针对于第一题<br />首先reads 是一条,碱基是一个,都是第二段的部分<br />首先![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650457800164-608e4a53-290b-4ddb-bfaf-27f7b140b6f4.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=93&id=u2a4c7e60&margin=%5Bobject%20Object%5D&name=image.png&originHeight=242&originWidth=946&originalType=binary&ratio=1&rotation=0&showTitle=false&size=335990&status=done&style=none&taskId=u1acc4802-2181-43bc-bc0e-e88c7220998&title=&width=362),四行为一个单位,要的是第二行。<br />文件是一个gz文件,用zless解析,在用wc -l![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650457884197-b580bda0-5a5a-43c8-a100-546eaa82b665.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=153&id=ue44c4d07&margin=%5Bobject%20Object%5D&name=image.png&originHeight=522&originWidth=1018&originalType=binary&ratio=1&rotation=0&showTitle=false&size=290805&status=done&style=none&taskId=u216259a6-037c-4742-beb5-6850bfc83cd&title=&width=299)的结果**除以4 **<br />**(但是值得注意的是,以上是练习数据,所以比较短,会很快得出结果,真实的数据会很大,单靠这段会卡 这里可以用ls -h看一下文件大小)h:以人类可读的方式显现容量**<br />还有一种方式**paste - - - -,意思是讲每四行转换为一行** 再wc -l,但是这里值得注意的是,最后输出显示用less -S,因为前面处理之后就不是压缩文件了![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650458375296-8d386523-46f5-44a0-96a1-70623b0e7aca.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=162&id=uad231432&margin=%5Bobject%20Object%5D&name=image.png&originHeight=540&originWidth=968&originalType=binary&ratio=1&rotation=0&showTitle=false&size=127251&status=done&style=none&taskId=u8dc96871-2420-40f1-8628-f7f66acafa0&title=&width=290)
如果想要使用答案中的grep![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650458625992-64a59f01-e33b-4ef2-8c8c-8bf29ccd540d.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=141&id=u48def3f3&margin=%5Bobject%20Object%5D&name=image.png&originHeight=684&originWidth=1282&originalType=binary&ratio=1&rotation=0&showTitle=false&size=235683&status=done&style=none&taskId=u05fab240-048e-482d-9659-3754acaf9ad&title=&width=264)的方法,![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650458515124-b7c8dbdf-7319-42a8-8a04-898905e96589.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=44&id=u56549e4a&margin=%5Bobject%20Object%5D&name=image.png&originHeight=88&originWidth=996&originalType=binary&ratio=1&rotation=0&showTitle=false&size=116339&status=done&style=none&taskId=u70e76468-11a6-4efd-8cdd-2dc8e332472&title=&width=498)这样直接输入'^@'是不对的,因为后面碱基质量值有可能是以@符号开头的![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650458669494-d532775c-f53e-470c-b2d8-9cdbf5e18416.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=191&id=u88a31fb7&margin=%5Bobject%20Object%5D&name=image.png&originHeight=522&originWidth=944&originalType=binary&ratio=1&rotation=0&showTitle=false&size=988670&status=done&style=none&taskId=u2ee29b4a-b7d8-4b58-9804-822471617f7&title=&width=345)(这里看一眼)
这里还有awk版本的答案![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650458735350-d7a24666-4e6c-4a88-837b-8cfb759fc77f.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=348&id=u90212236&margin=%5Bobject%20Object%5D&name=image.png&originHeight=1090&originWidth=974&originalType=binary&ratio=1&rotation=0&showTitle=false&size=270824&status=done&style=none&taskId=u2d828a81-944a-47b0-8b93-767f196c885&title=&width=311) (NR表示行号)<br />zless -S SRR1039510_1.fastq.gz |awk '{ if(NR%4==2) {print} }' |wc -l 其实就是要的是第二行,做个除法
<a name="MP2MZ"></a>
## 使用fastqc对原始数据进行质量评估
<a name="LXImV"></a>
### 基本概念
<a name="LfQVV"></a>
### ![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650460231767-6d8827b7-ae66-4ef3-a8f2-aa7240a6c7b8.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=506&id=u51cc4ace&margin=%5Bobject%20Object%5D&name=image.png&originHeight=1374&originWidth=1364&originalType=binary&ratio=1&rotation=0&showTitle=false&size=554791&status=done&style=none&taskId=u3d0827dd-bb95-4441-b2bb-3e6d4bf6d86&title=&width=502)![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650460254524-a9c1b083-0ce3-41ab-806b-33243eaa9a52.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=150&id=u6cdb5468&margin=%5Bobject%20Object%5D&name=image.png&originHeight=562&originWidth=1068&originalType=binary&ratio=1&rotation=0&showTitle=false&size=140971&status=done&style=none&taskId=u58f19baa-79c5-46d1-9a14-7c522b0de83&title=&width=286)![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650460291140-4763fe39-d421-4aa3-b5bc-b14968147760.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=373&id=u90e91e1a&margin=%5Bobject%20Object%5D&name=image.png&originHeight=1408&originWidth=1196&originalType=binary&ratio=1&rotation=0&showTitle=false&size=452585&status=done&style=none&taskId=u4842a083-57a3-42f5-a7e0-80df6780342&title=&width=317)
![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650460470145-7bec3d2f-67ef-45e6-9ea1-c3151d7c870c.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=165&id=u3a556a80&margin=%5Bobject%20Object%5D&name=image.png&originHeight=330&originWidth=910&originalType=binary&ratio=1&rotation=0&showTitle=false&size=70552&status=done&style=none&taskId=u7595ff08-5842-4fdb-a3a0-dcb6a35a5e3&title=&width=455)
<a name="c1Z9W"></a>
### 数据解读
![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650460341176-04d1bf11-78b0-4523-b589-dbd028150cc5.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=346&id=u224303a6&margin=%5Bobject%20Object%5D&name=image.png&originHeight=1150&originWidth=1034&originalType=binary&ratio=1&rotation=0&showTitle=false&size=591378&status=done&style=none&taskId=u8466ff57-a387-420a-877b-47beae8fbff&title=&width=311)![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650460510827-0f1f1522-8b45-4fab-a025-5b77f0373480.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=214&id=u52f191d8&margin=%5Bobject%20Object%5D&name=image.png&originHeight=564&originWidth=974&originalType=binary&ratio=1&rotation=0&showTitle=false&size=329398&status=done&style=none&taskId=ua2f33925-6853-4ac9-826c-593cbf30b3b&title=&width=369)
<a name="K0DVo"></a>
### 代码
这里需要注意的是修改rawdata路径 以及
```r
# 激活conda环境
conda activate rna
# 连接数据到自己的文件夹
cd $HOME/project/Human-16-Asthma-Trans/data/rawdata
ln -s /home/t_rna/data/airway/fastq_raw25000/*gz ./ 之前已经连接过这里就不用了
# 使用FastQC软件对单个fastq文件进行质量评估,结果输出到qc/文件夹下
nohup fastqc -t 6 -o ./ SRR*.fastq.gz >qc.log &
# 使用MultiQc整合FastQC结果
# 使用绝对路径运行
multiqc=/home/t_rna/miniconda3/envs/rna/bin/multiqc
fastqc=/home/t_rna/miniconda3/envs/rna/bin/fastqc
fq_dir=/home/t_rna/project/Human-16-Asthma-Trans/data/rawdata
outdir=/home/t_rna/project/Human-16-Asthma-Trans/data/rawdata
#这里的两个fq_dir 和 out_dir 等于的东西是自己rawdata路径
$fastqc -t 6 -o $outdir ${fq_dir}/SRR*.fastq.gz >${fq_dir}/qc.log
$multiqc $outdir/*.zip -o $outdir/ >${fq_dir}/multiqc.log
数据过滤
trim_galore过滤
基本概念
代码
这里cleandata和rawdata变量命名 是没有空格的
比如说课上联系 是这样的
fq_dir=/trainee/Apr2/project/Human-16-Asthma-Trans/data/rawdata
outdir=/trainee/Apr2/project/Human-16-Asthma-Trans/data/rawdat
# 激活小环境
conda activate rna
# 新建文件夹trim_galore
cd $HOME/project/Human-16-Asthma-Trans/data/cleandata/trim_galore
# 先生成一个变量,为样本ID
ls $HOME/project/Human-16-Asthma-Trans/data/rawdata/*_1.fastq.gz | awk -F'/' '{print $NF}' | cut -d'_' -f1 >ID
#这里要先看好自己的数据 最后保存到ID
# 多个样本 vim trim_galore.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_galore.sh >trim_galore.log & #把任务动态写在日志里帮助回忆
##这一步其实是把之前写的脚本运行并提交后台并写日志
# 使用MultiQc整合FastQC结果
multiqc *.zip
## ==============================================
## 补充技巧:使用掐头去尾获得样本ID
ls $rawdata/*_1.fastq.gz | while read id
do
name=${id##*/}
name=${name%_*}
echo "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
这里可以写个脚本(避免太多了忘记) 用vim写![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650460001174-5afcacf2-7431-4df9-b904-fa01f6a4f788.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=405&id=ud0d28f12&margin=%5Bobject%20Object%5D&name=image.png&originHeight=1180&originWidth=1046&originalType=binary&ratio=1&rotation=0&showTitle=false&size=432114&status=done&style=none&taskId=u4886fd11-9019-492d-852a-3f4dfa56401&title=&width=359)<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650460056646-ad9a1424-1740-48c7-83e7-26ab038dc4db.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=154&id=u4cc4f845&margin=%5Bobject%20Object%5D&name=image.png&originHeight=574&originWidth=1138&originalType=binary&ratio=1&rotation=0&showTitle=false&size=304609&status=done&style=none&taskId=uf85fb346-cd46-433b-af0c-d33c9e04d35&title=&width=306)esc-:-wq保存<br />可以使用cat来查看刚刚写的脚本![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650460121380-eca91099-8ae2-4453-9f93-418fb6c20da0.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=74&id=u4cdaea38&margin=%5Bobject%20Object%5D&name=image.png&originHeight=148&originWidth=1146&originalType=binary&ratio=1&rotation=0&showTitle=false&size=180536&status=done&style=none&taskId=ucd1c111e-66a3-4917-bd9a-d3387110fc6&title=&width=573)<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650461013444-0083e597-c814-4b3f-a5ee-9466f7c0c542.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=231&id=u18b1749b&margin=%5Bobject%20Object%5D&name=image.png&originHeight=642&originWidth=1146&originalType=binary&ratio=1&rotation=0&showTitle=false&size=127626&status=done&style=none&taskId=uf7cdb4a6-c6f2-4d41-8fd2-6bf1ced603c&title=&width=412)
这里值得注意的是,有的服务器是qsub,所以把命令echo到脚本里,然后用qsub运行<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650461339913-b024f30b-9a9a-44d4-a15e-46b17cc34635.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=107&id=ubcca9368&margin=%5Bobject%20Object%5D&name=image.png&originHeight=214&originWidth=840&originalType=binary&ratio=1&rotation=0&showTitle=false&size=185382&status=done&style=none&taskId=u79f5da16-b378-4e47-87c0-4ca2c2c751f&title=&width=420)
<a name="rNlZ8"></a>
### fastp过滤
<a name="aKr0d"></a>
#### 基本概念
![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650460652655-3f77ebc9-c5cf-4123-bed5-36d9c643a43a.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=374&id=u49dd4c2a&margin=%5Bobject%20Object%5D&name=image.png&originHeight=1114&originWidth=1022&originalType=binary&ratio=1&rotation=0&showTitle=false&size=293098&status=done&style=none&taskId=ud8e0de4b-13f9-4659-b801-53cd173d228&title=&width=343)![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1650460672978-943e8304-eb84-4ac1-88ab-6f6275ec0102.png#clientId=uee0149a1-35e4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=209&id=u2be90806&margin=%5Bobject%20Object%5D&name=image.png&originHeight=574&originWidth=998&originalType=binary&ratio=1&rotation=0&showTitle=false&size=207361&status=done&style=none&taskId=ub348dbba-c11e-4485-82cb-edc016945d6&title=&width=363)
<a name="mv5Ow"></a>
#### 代码
注意这里也是cleandata和rawdata的修改成自己的,以及在数据很大的时候建议使用fastq这种方式
```r
cd $HOME/project/Human-16-Asthma-Trans/data/cleandata/fastp
# 定义文件夹: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 36 -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 &
笔记记录
- 工作目录的管理十分重要
后续的分析也是在不同的目录下进行分析
值得注意的是 参考基因组数据库命名习惯 项目分析命名等等
- 创建好好文件夹后,到数据质控这一步,老师指导我们链接到服务器上的练习数据到rawdata文件夹里
这里切换位置——连接,可以ls -l一下 可以看到文件的来源
- 输入history | less可以显示出之前输出过的命令
- 很多脚本是写成sh脚本的
- 查看rawdata的ID特点其实就是获取SRR的这串数字不一样,也就是获取这段变量awk -F’/‘ ‘{print $NF}’ | cut -d’_’ -f1 >ID
(这里重温awk)$NF 输出最后一行
- fastp是写脚本 运行完了可以看一眼
- 最后输出是html网页文件,名字带有reporter 或cleandata 在服务器上,需要下载到自己的文件夹里再打开
以上代码和pdf文件内容均来自生信技能树课程