2015-06-19 1 views
0

У меня есть 2 файла fastq F1.fastq и F2.fastq. F2.fastq - это файл меньшего размера, который является подмножеством чтений из F1.fastq. Я хочу читать в F1.fastq, которые НЕ находятся в F2.fastq. Следующий код python, похоже, не работает. Можете ли вы предложить изменения?получение записей, отличных от двух файлов fastq

needed_reads = [] 

reads_array = [] 

chosen_array = [] 

for x in Bio.SeqIO.parse("F1.fastq","fastq"): 

     reads_array.append(x) 

for y in Bio.SeqIO.parse("F2.fastq","fastq"): 

     chosen_array.append(y) 

for y in chosen_array: 

     for x in reads_array: 

       if str(x.seq) != str(y.seq) : needed_reads.append(x) 

output_handle = open("DIFF.fastq","w") 

SeqIO.write(needed_reads,output_handle,"fastq") 

output_handle.close() 
+0

крест отправленный: https://www.biostars.org/p/147317/ – Pierre

ответ

2

Вы можете использовать наборы для выполнения ваших требований, вы можете конвертировать list1 в set, а затем list2 к set, а затем сделать set(list1) - set(list2), это даст элементы в list1, которые не являются в list2.

Пример кода -

needed_reads = [] 

reads_array = [] 

chosen_array = [] 

for x in Bio.SeqIO.parse("F1.fastq","fastq"): 

     reads_array.append(x) 

for y in Bio.SeqIO.parse("F2.fastq","fastq"): 

     chosen_array.append(y) 

needed_reads = list(set(reads_array) - set(chosen_array)) 

output_handle = open("DIFF.fastq","w") 

SeqIO.write(needed_reads,output_handle,"fastq") 

output_handle.close() 
+0

Это не работает, DIFF.fastq, кажется, так же, как F1.fastq – Ssank

+0

Вы уверены, что между ними есть общие ценности? –

+0

Да, файл DIFF.fastq имеет записи из файла F2.fastq также – Ssank

 Смежные вопросы

  • Нет связанных вопросов^_^