删除重复序列
我是Ruby新手,我喜欢一些指示。 我有一个包含以下许多内容的文件:
更新:
+ ?@??>=???>?>??>?>=9>>==?2>====== @IL9_2657:1:1:1:1217/1 TTTTCCGTGCTTTTTTTTTCGGTTCGATCCCCTCTTT +
我想要一个脚本,对每个包含+到+的块说,如果序列有一个,则删除块
TTTTTTTTT.
提前致谢。
标记
这应该做:
s = 'preceding_string+ ?@??>=???>?>??>?>=9>>==?2>===<=>=== @IL9_2657:1:1:1:1217/1 TTTTCCGTGCTTTTTTTTTCGGTTCGATCCCCTCTTT +following_string' s.gsub!(/\+[^+]*TTTTTTTTT[^+]*\+/, '') ps # => "preceding_stringfollowing_string"
首先将数据拆分为数组。 scan
可以使用简单的正则表达式执行此操作。 然后,您可以删除不需要的项目reject!
。 例如:
data = "+x+ +y+ +TTTTTTTTT+ +z+" blocks = data.scan(/\+[^+]+\+/) blocks.reject! { |b| b.include? "TTTTTTTTT" } p blocks # => ["+x+", "+y+", "+z+"]
ruby -0777 -ne 'puts $_.split(/\+/).reject{|x| x[/TTTTTTT/] }.join("+")' file
序列中是否含有过多的腺嘌呤? 如果是这样,使用bioruby获得序列的反向补码。