豆豆和花花用代码P了个K
今天是生信星球陪你的第482天
大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~
就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~
这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!
豆豆和花花写于19.11.7
问题&起因
给定一个fq文件,不论用什么方法,把它变成fa
上班路上,花花说能用R解决的事情就不会想用linux,比如以前线下培训会讲的:什么fastq转fasta,放进R里面最多五行代码。
豆豆就说:五行吗?我用linux你用R我们各写一个答案,今天推文有了。
我去,好主意。
以前也不是没打过,比如这两篇:
一不小心就是一大把狗粮。
具体规则,花花来定
下周四是豆豆和花花恋爱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啊

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
方法二


有R包呢,从谷歌搜关键词,找到R包和函数的名字,安装,加载,看帮助文档示例部分,就会膨胀起来。你那点需求,早被人拿去写包了。
对不起,暴露了,我是一个有故事的人,可能是我的课程和笔记都写得太过保姆,剥夺了学员自己思考和搜索的能力,以前总嫌曾老板写的教程太短,没有细节,事实证明我错了,给你指个路,你自己去探索才是最好的!
比如他喊我学R的时候就只说了一句“你需要学点R语言”,这件事就结束了。
有了一个需求,fq转fa,告诉你去搜索,这件事也结束了。有需求,怎么都能学会,我以后要多讲搜索技巧和思路~
豆豆解答
方法一: 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
投票通道开启
插个小广告!
再给生信技能树打个call!
全国巡讲第19-20站(福州和上海线下培训)
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!