豆豆和花花用代码P了个K

豆豆和花花用代码P了个K

豆豆和花花写于19.11.7

问题&起因

给定一个fq文件,不论用什么方法,把它变成fa

上班路上,花花说能用R解决的事情就不会想用linux,比如以前线下培训会讲的:什么fastq转fasta,放进R里面最多五行代码。

豆豆就说:五行吗?来来来我用linux你用R我们各写一个答案,今天推文有了。

我去,好主意。

以前也不是没打过,比如这两篇:

花花:linux不会,不如用R吧

豆豆:批量重命名:如果会linux呢?

具体规则,花花来定

下周四是豆豆和花花恋爱7周年纪念日,大家投票谁的代码好,规则太难写了,改了好几遍,总之就是我要赢啊啊啊啊。

tip:关于fq和fa格式的区别

生信小白第5天-聊下数据格式

目前给定的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啊

豆豆和花花用代码P了个K_第1张图片
image-20191107092718416
test = 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

方法二

豆豆和花花用代码P了个K_第2张图片
豆豆和花花用代码P了个K_第3张图片

有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

一个神奇的小软件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

投票通道在公众号~

你可能感兴趣的:(豆豆和花花用代码P了个K)