第18题和第20题不会做,求高手指教啊~~
该练习使用的数据为bowtie2中的示例数据,获取方法如下:
# 下载bowtie2软件先
wget -c https://sourceforge.net/projects/bowtie-bio/files/bowtie2/2.3.5.1/bowtie2-2.3.5.1-linux-x86_64.zip
unzip bowtie2-2.3.5.1-linux-x86_64.zip
# 找到示例数据
cd bowtie2-2.3.5.1-linux-x86_64/example/reads
- 统计
reads_1.fq
文件中共有多少条序列信息
# fq文件格式有4行,均以@打头,统计@字符的数量即可 (此处有坑,字符@需要再行首)
less -S reads_1.fq | grep "^@" | wc
- 输出所有的
reads_1.fq
文件中的标识符(即以@开头的那一行)
# 筛选出来后重定向
less -S reads_1.fq | grep "^@" > head.txt
- 输出
reads_1.fq
文件中的 所有序列信息(即每个序列的第二行)
# fq格式中的第二行为碱基序列,观察数据格式
less reads_1.fq | paste -d " " - - - - | less -SN | awk '{print$2}' > sequence.txt
- 输出以‘+’及其后面的描述信息(即每个序列的第三行)
# 每个序列的第三行不是除了+都是空的咩
less reads_1.fq | paste -d " " - - - - | less -SN | awk '{print$3}' > line3.txt
- 输出质量值信息(即每个序列的第四行)
# 命令跟上面差不多
less reads_1.fq | paste -d " " - - - - | less -SN | awk '{print$4}' > line4.txt
- 计算
reads_1.fq
文件含有N
碱基的reads
个数
# 要用到上面生成的sequence.txt文件
less -SN sequence.txt | grep N | wc
- 统计文件中
reads_1.fq
文件里面的序列的碱基总数
# 还是要用到sequence.txt文件
cat sequence.txt | grep -o -i "[atcgn]" | wc
- 计算
reads_1.fq
所有的reads
中N
碱基的总数
# 很有必要再复习一下grep的各个参数的功能
cat sequence.txt | grep -o N | wc
- 统计
reads_1.fq
中测序碱基质量值恰好为Q20
的个数
# Q20对应的ASCII值为5,质量值在第4行
cat line4.txt | grep -o 5 | wc
- 统计
reads_1.fq
中测序碱基质量值恰好为Q30
的个数
# Q30对应的ASCII值为?,质量值在第4行
cat line4.txt | grep -o ? | wc
- 统计
reads_1.fq
中所有序列的第一位碱基的ATCGNatcg
分布情况
# 筛选出来然后计数
less -S sequence.txt | cut -c-1 | sort | uniq -c
- 将
reads_1.fq
转为reads_1.fa
文件(即将fastq
转化为fasta
)
# 需明确.fq文件和.fa文件的异同。可知只需提取.fq文件前两行,然后把"@"替换为">"即可,如下:
less reads_1.fq | paste - - - - | awk '{print $1,$2}' | tr " " "\n" | tr "@" ">" > reads_1.fa
- 统计上述
reads_1.fa
文件中共有多少条序列
# 相对.fq文件来说就更简单了
cat reads_1.fa | grep "^>" | wc
- 计算
reads_1.fa
文件中总的碱基序列的GC
数量
cat reads_1.fa | grep -o GC | wc
- 删除
reads_1.fa
文件中的每条序列的N
碱基
# 终于sed出场
cat reads_1.fa | sed 's/[nN]/""/g' > reads_1_non.fa
- 删除
reads_1.fa
文件中的含有N
碱基的序列
# 先找到含有N的序列,然后删除
cat reads_1.fa | grep -i -v n > reads_1_qual.fa
- 删除
reads_1.fa
文件中的短于65bp
的序列
# 得复习awk语法了啊, 删除短于65bp的,那就选择长于65bp的
cat reads_1.fa | paste - - | awk '{if(length($2)>65)print}' | tr "\t " "\n" > reads_1_65.fa
- 删除
reads_1.fa
文件每条序列的前后五个碱基
# 看网上有人用下面的命令,实测是错误的
cat reads_1.fa | paste - - | cut -f 2 | cut -c 5- | cut -c -5 > reads_1_trim.fa
# 正确的是什么样的?
??????
- 删除
reads_1.fa
文件中的长于125bp
的序列
# 跟17题原理一样,筛选长度小于125bp的序列
cat reads_1.fa | paste - - | awk '{if(length($2)<125) print}' | tr "\t " "\n" > reads_1_125.fa
- 查看
reads_1.fq
中每条序列的第一位碱基的质量值的平均值
# 思路应该是提取出条序列第一个碱基对应的质量值,然后换算成可计算的数值,然后加和求平均数(吧)?可是怎么转换成数字呢```
cat reads_1.fa | paste - - - - | awk '{print $4}' | cut -c -1 > reads_1.l4.fa
每天都有新的收获的感觉很棒~