удаление повторяющейся последовательности - PullRequest
0 голосов
/ 13 апреля 2011

Я новичок в Ruby, и мне нравятся некоторые указатели, пожалуйста.У меня есть файл, который содержит много из следующего:

ОБНОВЛЕНИЕ:

+ 

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

TTTTCCGTGCTTTTTTTTTCGGTTCGATCCCCTCTTT

 +

Я хочу сценарий, который скажет для каждого блока, который содержит от + до +, удалить блок, если последовательностьимеет

TTTTTTTTT.

Заранее спасибо.

Отметка

Ответы [ 4 ]

2 голосов
/ 13 апреля 2011

Это должно сделать:

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

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

# => "preceding_stringfollowing_string"
1 голос
/ 14 апреля 2011

Может ли последовательность иметь слишком много аденинов?Если это так, используйте bioruby, чтобы получить обратное дополнение последовательности.

1 голос
/ 13 апреля 2011
ruby -0777 -ne 'puts $_.split(/\+/).reject{|x| x[/TTTTTTT/] }.join("+")' file
1 голос
/ 13 апреля 2011

Сначала разделите ваши данные в массив. scan может сделать это с помощью простого регулярного выражения. Затем вы можете удалить ненужные элементы с помощью reject!. Например:

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

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

p blocks
# => ["+x+", "+y+", "+z+"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...