删除重复序列

时间:2011-04-13 09:13:28

标签: ruby

我是Ruby新手,我喜欢一些指示。我有一个包含以下许多内容的文件:

更新:

+ 

?@??>=???>?>??>?>=9>>==?2>===<=>=== @IL9_2657:1:1:1:1217/1 

TTTTCCGTGCTTTTTTTTTCGGTTCGATCCCCTCTTT

 +

我想要一个脚本,对每个包含+到+的块说,如果序列有

,则删除块
TTTTTTTTT.

提前致谢。

标记

4 个答案:

答案 0 :(得分:2)

这应该做:

s = 'preceding_string+ ?@??>=???>?>??>?>=9>>==?2>===<=>=== @IL9_2657:1:1:1:1217/1 TTTTCCGTGCTTTTTTTTTCGGTTCGATCCCCTCTTT +following_string'

s.gsub!(/\+[^+]*TTTTTTTTT[^+]*\+/, '')
p s

# => "preceding_stringfollowing_string"

答案 1 :(得分:1)

首先将数据拆分为数组。 scan可以使用简单的正则表达式执行此操作。然后,您可以使用reject!删除不需要的项目。例如:

data = "+x+ +y+ +TTTTTTTTT+ +z+"

blocks = data.scan(/\+[^+]+\+/)
blocks.reject! { |b| b.include? "TTTTTTTTT" }

p blocks
# => ["+x+", "+y+", "+z+"]

答案 2 :(得分:1)

ruby -0777 -ne 'puts $_.split(/\+/).reject{|x| x[/TTTTTTT/] }.join("+")' file

答案 3 :(得分:1)

序列中是否含有过多的腺嘌呤?如果是这样,使用bioruby得到序列的反向补码。