У меня есть два файла fastq, которые я хочу сравнить.Структура файлов fastq следующая ( на чтение ):
- Строка 1 = заголовок, содержащий идентификатор чтения.Эта строка всегда начинается с «@».
- Строка 2 = последовательность оснований для данного конкретного чтения (A, G, C или T)
- Строки 3 и 4 = Содержат информацию о показателе качества для чтения, которое я неt потребность.
Два файла, с которыми я работаю:
File1 = Содержит конкретные последовательности интересующих меня баз, а также соответствующие имстроки заголовка ( 2 строки на чтение )
File2 = обычный файл fastq для сравнения ( 4 строки на чтение )
Мне нужно сравнить файлы 1 и 2, чтобы найти все совпадающие строки заголовка, а затем сохранить соответствующие строки последовательности из файла 2.
Где файл 1:
@HWI-D00461:137:C9H2FACXX:3:1101:1239:1968 1:N:0:GGCTAC
NTGTGTAATAGATTTTACTTTTGCCTTTAAGCCCAAGGTCCTGGACTTGAAACATCCAAGGGATGGAAAATGCCGTATAACAGGGTGGAAGAGAGATTTGA
@HWI-D00461:137:C9H2FACXX:3:1101:1117:1968 1:N:0:GGCTAC
NAAAGTCTACCAATTATACTTAGTGTGAAGAGGTGGGAGTTAAATATGACTTCCATTAATAGTTTCATTGTTTGGAAAACAGAGGTAATTTTTGATACAGA
@HWI-D00461:137:C9H2FACXX:3:1101:1087:1973 1:N:0:GGCTAC
NTAATCCAACTAACTAAAAATAAAAAGATTCAAATAGGTACAGAAAACAATGAAGGTGTAGAGGTGAGAAATCAACAGGATGTTCAGAAGCCTGTGTATGA
И файл 2:
@HWI-D00461:137:C9H2FACXX:3:1101:1239:1968 1:N:0:GGCTAC
NTGTGTAATAGATTTTACTTTTGCCTTTAAGCCCAAGGTCCTGGACTTGAAACATCCAAGGGATGGAAAATGCCGTATAACAGGGTGGAAGAGAGATTTGN
+
#1=BDDFFHHHFHIJJJJJJJJJJJJJJJJJJJJJIJJIJJJJJHJIIJHGIJJJJJJIHJJBGHJHIIJJJHHHHFFFFEEEDD;?BACDDDA?@CDDDC
@HWI-D00461:137:C9H2FACXX:3:1101:1117:1968 1:N:0:GGCTAC
NAAAGTCTACCAATTATACTTAGTGTGAAGAGGTGGGAGTTAAATATGACTTCCATTAATAGTTTCATTGTTTGGAAAACAGAGGTAATTTTTGATACNNN
+
#1=DDDFDFHHHGHIIGJJJJHIJIHHDIHHIJGGEI@GFGHIHIJHEFHIIIIGIJGHHGECFGIDHGIHIIEGIIJHHEEFFF7?ACEECCBBDEDDDC
@HWI-D00461:137:C9H2FACXX:3:1101:1200:1972 1:N:0:GGCTAC
NTACGTTTAGTAGAGACAGTGTCTTGCTATGTTGCCCAGGCTGGTCTCAAACTCCTGAGCTCTAGCAAGCCTTCCACCTCTGCCTCCCAGTGTTCTGGGAT
+
#1=DDDDFHHHBHGIGIIJHCDHHIJJJHEGFIIHFHGEGHJEIFHHHEFHHGIGIJEHIIJJJJIJIJIJGIIH.?CEFFFFDCEDD3>>@CDDDDDD<@
Другими словами, для каждой совпадающей строки заголовка я хочу сохранить его строку последовательности с партнером.
Наконец, я хочу записать все эти заголовки и последовательности в новый файл для последующего анализа.
Мой текущий вывод:
@HWI-D00461:137:C9H2FACXX:3:1101:1357:1984 1:N:0:GGCTAC
@HWI-D00461:137:C9H2FACXX:3:1101:1755:2000 1:N:0:GGCTAC
@HWI-D00461:137:C9H2FACXX:3:1101:1260:1977 1:N:0:GGCTAC
@HWI-D00461:137:C9H2FACXX:3:1101:1917:1984 1:N:0:GGCTAC
Мой желаемый вывод будет:
@HWI-D00461:137:C9H2FACXX:3:1101:1239:1968 1:N:0:GGCTAC
NTGTGTAATAGATTTTACTTTTGCCTTTAAGCCCAAGGTCCTGGACTTGAAACATCCAAGGGATGGAAAATGCCGTATAACAGGGTGGAAGAGAGATTTGA
@HWI-D00461:137:C9H2FACXX:3:1101:1117:1968 1:N:0:GGCTAC
NAAAGTCTACCAATTATACTTAGTGTGAAGAGGTGGGAGTTAAATATGACTTCCATTAATAGTTTCATTGTTTGGAAAACAGAGGTAATTTTTGATACAGA
@HWI-D00461:137:C9H2FACXX:3:1101:1087:1973 1:N:0:GGCTAC
NTAATCCAACTAACTAAAAATAAAAAGATTCAAATAGGTACAGAAAACAATGAAGGTGTAGAGGTGAGAAATCAACAGGATGTTCAGAAGCCTGTGTATGA
Вот что у меня есть.
ids = ''
with open(no_adapter_file, 'r') as file1:
with open(comparison_file, 'r') as file2:
common = set(file1).intersection(file2)
for line in common:
if line[0] == '@'
ids += line
with open(comparison_file, 'r') as file2:
ids_seq = ''
for line in file2:
if line == ids:
line += ids_seq
with open(new_file, 'w') as file_out:
for line in ids_seq:
file_out.write(line)
print(new_file + " was created.")
Код успешно извлекает все совпадающие строки заголовка, но я не знаю, как извлечь строки последовательности, которые следуют.
РЕДАКТИРОВАТЬ: Добавлены некоторые примеры ввода и ожидаемого вывода.