豆豆和花花用代码P了个K
豆豆和花花写于19.11.7
问题&起因
给定一个fq文件,不论用什么方法,把它变成fa
上班路上,花花说能用R解决的事情就不会想用linux,比如以前线下培训会讲的:什么fastq转fasta,放进R里面最多五行代码。
豆豆就说:五行吗?来来来我用linux你用R我们各写一个答案,今天推文有了。
我去,好主意。
以前也不是没打过,比如这两篇:
具体规则,花花来定
下周四是豆豆和花花恋爱7周年纪念日,大家投票谁的代码好,规则太难写了,改了好几遍,总之就是我要赢啊啊啊啊。
tip:关于fq和fa格式的区别
目前给定的fq节选如下
@A00204:437:HMHMLDSXX:2:1101:1524:1000
AGAAAGTTTGCCTATCTGGGGTGCCTGGCTCACGAGGTTGGCTGGAAGTACCAGGCAGTGACAGCCACCCTGGAGGAGAAGAGGAAAGAGAAAGCCAAGATCCACTACCGGAAGAAGAAACAGCTCATGAGGCTACGGAAACAGGCCGAG
+
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@A00204:437:HMHMLDSXX:2:1101:1868:1000
ATAGCCCTGGCCGTACGCCTAACCGCTAACATTACTGCAGGCCACCTACTCATGCACCTAATTGGAAGCGCCACCCTAGCAATATCAACCATTAACCTTCCCTCTACACTTATCATCTTCACAATTCTAATTCTACTGACTATCCTAGAA
+
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFF:F,FFFFFF:FF:FFFFFF,FFFFFFFF,FFFFFFF:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FF:FF,FFFFFFFFFFF:FF,FFF:FFFFFF
要变成=》
>A00204:437:HMHMLDSXX:2:1101:1524:1000
AGAAAGTTTGCCTATCTGGGGTGCCTGGCTCACGAGGTTGGCTGGAAGTACCAGGCAGTGACAGCCACCCTGGAGGAGAAGAGGAAAGAGAAAGCCAAGATCCACTACCGGAAGAAGAAACAGCTCATGAGGCTACGGAAACAGGCCGAG
>A00204:437:HMHMLDSXX:2:1101:1868:1000 2:N:0:CACTCGGA+TCTTTCCC
ATAGCCCTGGCCGTACGCCTAACCGCTAACATTACTGCAGGCCACCTACTCATGCACCTAATTGGAAGCGCCACCCTAGCAATATCAACCATTAACCTTCCCTCTACACTTATCATCTTCACAATTCTAATTCTACTGACTATCCTAGAA
花花解答
方法一: 向量配stringr啊
image-20191107092718416test = readLines("test.fq")
test1 = test[seq(1,length(test),4)]
test2 = test[seq(2,length(test),4)]
result = paste(stringr::str_replace(test1,"@",">"),test2 ,sep = "\n")
writeLines(result)
# >A00204:437:HMHMLDSXX:2:1101:1524:1000 AGAAAGTTTGCCTATCTGGGGTGCCTGGCTCACGAGGTTGGCTGGAAGTACCAGGCAGTGACAGCCACCCTGGAGGAGAAGAGGAAAGAGAAAGCCAAGATCCACTACCGGAAGAAGAAACAGCTCATGAGGCTACGGAAACAGGCCGAG
# >A00204:437:HMHMLDSXX:2:1101:1868:1000 ATAGCCCTGGCCGTACGCCTAACCGCTAACATTACTGCAGGCCACCTACTCATGCACCTAATTGGAAGCGCCACCCTAGCAATATCAACCATTAACCTTCCCTCTACACTTATCATCTTCACAATTCTAATTCTACTGACTATCCTAGAA
# >A00204:437:HMHMLDSXX:2:1101:2193:1000 TAGTTATTATCGAAACCATCAGCCTACTCATTCAACCAATAGCCCTGGCCGTACGCCTAACCGCTAACATTACTGCAGGCCACCTACTCATGCACCTAATTGGAAGCGCCACCCTAGCAATATCAACCATTAACCTTCCCTCTACACTTA
方法二
有R包呢,从谷歌找到R包和函数的名字,安装,加载,看帮助文档示例部分,你就会膨胀起来。
对不起,暴露了,我是一个有故事的人,可能是我的课程和笔记都写得太过保姆,剥夺了学员自己思考和搜索的能力,我改还不行吗?
豆豆解答
方法一: linux "paste + tr"
cat test.fq | paste - - - - | cut -f 1-2 | awk -F ' ' '{print $1,$3}' | tr ' ' '\n' | tr '@' '>' >dou1.fa
head -n4 dou1.fa
>A00204:437:HMHMLDSXX:2:1101:1524:1000
AGAAAGTTTGCCTATCTGGGGTGCCTGGCTCACGAGGTTGGCTGGAAGTACCAGGCAGTGACAGCCACCCTGGAGGAGAAGAGGAAAGAGAAAGCCAAGATCCACTACCGGAAGAAGAAACAGCTCATGAGGCTACGGAAACAGGCCGAG
>A00204:437:HMHMLDSXX:2:1101:1868:1000
ATAGCCCTGGCCGTACGCCTAACCGCTAACATTACTGCAGGCCACCTACTCATGCACCTAATTGGAAGCGCCACCCTAGCAATATCAACCATTAACCTTCCCTCTACACTTATCATCTTCACAATTCTAATTCTACTGACTATCCTAGAA
方法二:bioawk
这个软件好像保留的ID行更精炼一些
conda install -c bioconda bioawk
bioawk -c fastx '{print ">"$name; print $seq}' test.fq >dou2.fa
head -n4 dou2.fa
>A00204:437:HMHMLDSXX:2:1101:1524:1000
AGAAAGTTTGCCTATCTGGGGTGCCTGGCTCACGAGGTTGGCTGGAAGTACCAGGCAGTGACAGCCACCCTGGAGGAGAAGAGGAAAGAGAAAGCCAAGATCCACTACCGGAAGAAGAAACAGCTCATGAGGCTACGGAAACAGGCCGAG
>A00204:437:HMHMLDSXX:2:1101:1868:1000
ATAGCCCTGGCCGTACGCCTAACCGCTAACATTACTGCAGGCCACCTACTCATGCACCTAATTGGAAGCGCCACCCTAGCAATATCAACCATTAACCTTCCCTCTACACTTATCATCTTCACAATTCTAATTCTACTGACTATCCTAGAA
投票通道在公众号~
网友评论