Я работаю с Bash на кластере Linux.Я пытаюсь извлечь чтения из файла .fastq, если они содержат совпадение с запрашиваемой последовательностью.Ниже приведен пример файла .fastq, содержащего три чтения.
$ cat example.fastq
@SRR1111111.1 1/1
CTGGANAAGTGAAATAATATAAATTTTTCCACTATTGAATAAAAGCAACTTAAATTTTCTAAGTCG
+
AAAAA#EEEEEEEEEEEEEEEEEEEEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEA<AAEEEEE<6
@SRR1111111.2 2/1
CTATANTATTCTATATTTATTCTAGATAAAAGCATTCTATATTTAGCATATGTCTAGCAAAAAAAA
+
AAAAA#EE6EEEEEEEEEEEEAAEEAEEEEEEEEEEEE/EAE/EAE/EA/EAEAAAE//EEAEAA6
@SRR1111111.3 3/1
CTATANTATTGAAATAATAATGTAGATAAAACTATTGAATAACAGCAACTTAAATTTTCAATAAGA
+
AAAAA#EE6EEEEEEEEEEEEAAEEAEEEEEEEEEEEE/EAE/EAE/EA/EAEAAAE//EEAEAA6
Я хотел бы извлечь чтения, содержащие последовательность GAAATAATA.Я могу выполнить это извлечение, используя grep, как показано в следующей команде.
$ grep -F -B 1 -A 2 "GAAATAATA" example.fastq > MATCH.fastq
$ cat MATCH.fastq
@SRR1111111.1 1/1
CTGGANAAGTGAAATAATATAAATTTTTCCACTATTGAATAAAAGCAACTTAAATTTTCTAAGTCG
+
AAAAA#EEEEEEEEEEEEEEEEEEEEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEA<AAEEEEE<6
@SRR1111111.3 3/1
CTATANTATTGAAATAATAATGTAGATAAAACTATTGAATAACAGCAACTTAAATTTTCAATAAGA
+
AAAAA#EE6EEEEEEEEEEEEAAEEAEEEEEEEEEEEE/EAE/EAE/EA/EAEAAAE//EEAEAA6
Однако эта стратегия не допускает никаких несовпадений.Например, чтение, содержащее последовательность GAAAT G ATA, будет проигнорировано.Мне нужно это извлечение, чтобы допустить одно несоответствие в любой позиции в запрашиваемой последовательности.Итак, мой вопрос: как мне этого добиться?Существует ли пакет выравнивания последовательностей с аналогичной функциональностью для grep?Есть ли какие-либо пакеты поднабора fastq, которые выполняют этот тип операции?Одно замечание, что скорость очень важна.Спасибо за ваше руководство.