Найти позиции ВСЕХ вхождений шаблона в строке

Я работаю над файлами последовательностей ДНК (файл FASTQ).

@Read1- ХОРОШО

NAAAGTGAGATTCGAAATAAATACATCTGTGGCTTCACTTTGAACGGAACGATGTTCTCGTAT

+

1D=DDADEHHHHHIGIJJJJGGFGHIHIJJIJJJJJIIIIGG99BDGHHHEGHJJIHHJJGIH

@Read2- Имеет 2 плохих места

NTTCGTAAAGCAGTGAACGAAATACATCTGTGGCTTCACTATGTTCTCGTATGCCGGAACGTC

+

2#1=DFFFFHHHGHGHIJHJIJJJJJJJJJJJJJJJJJGIIHJJJJIIIGGHIIJJIHIIIIJG

@Read3: один хороший, один ранний

NCAGGATCTGCATCGTGAACGATACATCTGTGGCTTCACTAGAACGTGTTCTCGTATGCCGTC

+

B#1:BDDDDFFHDH@AHIGCHIIIIIIIIIIIIIIIIIIIIGIIFHBGGGFGIIIIGGHIIIIG

@Read4: один хорошо, один после

NGCCCTTGACCGCAGGTTAGTGCTAAATACATCTGTGTACTGAACGTCACTATGTTCTCGTAT

+

E#1:A?==@@B>AC<7,2A@ABBBBCBCBCCBCCBBBBBBBB<<?AA?AA)8>ABBAAABABBA

Я хочу найти шаблон длиной 6 символов (GAACG) в последовательности (строка ниже строки, начинающейся с @).

Важно то, что я хочу, чтобы мой шаблон находился в позиции 42 в строке.

Если шаблон найден в этой позиции, я копирую последовательность вместе со строкой перед ней и двумя строками после нее в новый файл. При попытке этого с awk это не сработало, потому что все функции index(), match() смотрят только на 1-е вхождение и не смотрят дальше, поэтому, если он найдет мой шаблон до позиции 41, он не будет копировать мои данные в новый файл.

В основном мой скрипт должен возвращать чтение 1, 3 и 4...

Как я могу просмотреть свой файл FASTQ на наличие шаблона, оценить ВСЕ позиции, в которых он найден, и рассмотреть только последовательности, в которых он находится в позиции 42, независимо от того, присутствует ли шаблон ТАКЖЕ в других позициях?


person user1339677    schedule 17.04.2012    source источник


Ответы (1)


Звучит как проблема с регулярным выражением.

Многие языки и языки сценариев поддерживают регулярное выражение, но это хороший пример для javascript:

как-найти-все- вхождения-одной-строки-в-другой-в-javascript

person Tim    schedule 17.04.2012
comment
Спасибо за ваш ответ. Я работаю в среде Linux, и мне нужно прочитать файл последовательности, содержащий миллионы последовательностей. Кроме того, последовательности только каждые 4 строки, начиная со второй строки (как показано в моем исходном сообщении). Так что я не думаю, что javascript действительно может быть применен в моем случае, к сожалению... Но большое спасибо! - person user1339677; 18.04.2012
comment
На самом деле это было просто... substr(seq,42,6)==pattern должен быть правдой... вот и все! - person user1339677; 18.04.2012