其实是补一下再重温一下最近老师讲课了,知识是跟的上的,但是一些具体的内容就有些乏力了,然后想了想还是视觉的一些命令的参数不记得这方面影响更大一些
以及这里我会把前面学习到的一些命令参数在这理手动打一下,用以重温

基础知识

fastq的数据基本知识

image.png
以及,每一段都是不同的身份标识符,使用冒号进行分割 最早的是测序仪的名字 image.png
image.png为了避免空值,会Q+33或Q+64,如果是后者的话,ASCII码会出现小写字母
image.png
Q20 指的是碱基质量值大于20的比例,后面同理。肯定越高越好,大约85以上已经很好了

转录分析流程

image.png

课后习题

  1. 然后针对这个课后习题,我有很多要说(也是我上课开始迷糊的地方)image.png(在后面我讨论)
  2. 课后习题答案 ```r
    课后习题答案

1.统计reads_1.fq文件种共有多少条reads?

  1. # 答案不只一种,看看你能用集中方法算出来
  2. # NR表示行号
  3. # %表示除于取整、
  4. zless SRR1039510_1.fastq.gz | grep '^@SRR' |wc -l
  5. zless -S SRR1039510_1.fastq.gz | paste - - - - |wc -l
  6. zless SRR1039510_1.fastq.gz |wc -l | awk '{print $0/4}'
  7. zless -S SRR1039510_1.fastq.gz |awk '{ if(NR%4==2) {print} }' |wc -l
  8. # sed 版本 课后习题

2.输出reads_1.fq文件中所有的序列ID(即第一行)

  1. zless SRR1039510_1.fastq.gz | grep '^@SRR' |less -S
  2. zless SRR1039510_1.fastq.gz | paste - - - - |cut -f 1 |less -S
  3. zless -S SRR1039510_1.fastq.gz |awk '{if(NR%4==1){print}}' |less -S

3.输出SRR1039510_1.fastq.gz文件中所有的序列(即第二行)

  1. zless SRR1039510_1.fastq.gz | paste - - - - |cut -f 2 |less -S
  2. zless -S SRR1039510_1.fastq.gz |awk '{if(NR%4==2){print}}' |less -S

4.统计SRR1039510_1.fastq.gz碱基总数

  1. # 简单版本
  2. zless -S SRR1039510_1.fastq.gz |paste - - - - |cut -f 2 |tr -d '\n' |wc -m
  3. zless -S SRR1039510_1.fastq.gz |paste - - - - |cut -f 2 |grep -o [ATCGN] |wc -l
  4. # awk的高阶用法:BEGIN END模块
  5. zless -S SRR1039510_1.fastq.gz |awk '{ if(NR%4==2){print} }' | awk 'BEGIN {num=0} {num=num+length($0)} END{ print "num="num}'
  1. 这里我补充部分笔记<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)
  2. 如果想要使用答案中的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)(这里看一眼)
  3. 这里还有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 其实就是要的是第二行,做个除法
  4. <a name="MP2MZ"></a>
  5. ## 使用fastqc对原始数据进行质量评估
  6. <a name="LXImV"></a>
  7. ### 基本概念
  8. <a name="LfQVV"></a>
  9. ### ![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)
  10. ![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)
  11. <a name="c1Z9W"></a>
  12. ### 数据解读
  13. ![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)
  14. <a name="K0DVo"></a>
  15. ### 代码
  16. 这里需要注意的是修改rawdata路径 以及
  17. ```r
  18. # 激活conda环境
  19. conda activate rna
  20. # 连接数据到自己的文件夹
  21. cd $HOME/project/Human-16-Asthma-Trans/data/rawdata
  22. ln -s /home/t_rna/data/airway/fastq_raw25000/*gz ./ 之前已经连接过这里就不用了
  23. # 使用FastQC软件对单个fastq文件进行质量评估,结果输出到qc/文件夹下
  24. nohup fastqc -t 6 -o ./ SRR*.fastq.gz >qc.log &
  25. # 使用MultiQc整合FastQC结果
  26. # 使用绝对路径运行
  27. multiqc=/home/t_rna/miniconda3/envs/rna/bin/multiqc
  28. fastqc=/home/t_rna/miniconda3/envs/rna/bin/fastqc
  29. fq_dir=/home/t_rna/project/Human-16-Asthma-Trans/data/rawdata
  30. outdir=/home/t_rna/project/Human-16-Asthma-Trans/data/rawdata
  31. #这里的两个fq_dir 和 out_dir 等于的东西是自己rawdata路径
  32. $fastqc -t 6 -o $outdir ${fq_dir}/SRR*.fastq.gz >${fq_dir}/qc.log
  33. $multiqc $outdir/*.zip -o $outdir/ >${fq_dir}/multiqc.log

数据过滤

image.png

trim_galore过滤

基本概念

image.pngimage.png

代码

这里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 &

笔记记录

  1. 工作目录的管理十分重要

image.pngimage.png
后续的分析也是在不同的目录下进行分析
值得注意的是 参考基因组数据库命名习惯 项目分析命名等等

  1. 创建好好文件夹后,到数据质控这一步,老师指导我们链接到服务器上的练习数据到rawdata文件夹里image.png

这里切换位置——连接,可以ls -l一下image.png 可以看到文件的来源

  1. 输入history | less可以显示出之前输出过的命令
  2. 很多脚本是写成sh脚本的
  3. 查看rawdata的ID特点image.png其实就是获取SRR的这串数字不一样,也就是获取这段变量awk -F’/‘ ‘{print $NF}’ | cut -d’_’ -f1 >ID

image.pngimage.png(这里重温awk)$NF 输出最后一行

  1. fastp是写脚本 运行完了可以看一眼

image.png

  1. 最后输出是html网页文件,名字带有reporter 或cleandata 在服务器上,需要下载到自己的文件夹里再打开

以上代码和pdf文件内容均来自生信技能树课程