Я хочу объединить все последовательности в файле fasta с фиксированным числом «N», вставленным между последовательностями. Я попытался сделать это, добавив кучу «N» для всех последовательностей в файле fasta и затем объединив измененные последовательности с использованием biopython (на основе кулинарной книги here). Однако мой код печатает каждую из записей по мере их изменения, а затем, наконец, конкатенированную версию, когда я только хочу, чтобы она распечатала последнюю. Я был бы очень признателен, если кто-нибудь может указать на ошибки в моем коде или предложить лучший способ сделать это. Благодаря!Самый быстрый способ добавить «N» s и объединить миллионы последовательностей в fasta
обновление: я исправил код, предложенный Целео, но для обработки моего фактического файла требуется более 12 миллионов последовательностей. У нас есть более быстрый и эффективный способ сделать это с использованием других языков (perl/awk) ? Вот входной образец
$ cat test.fa
>read_1
GAAGTACGT
>read_2
AACTCAAGAACAAGAAAAAA
>read_3
TGGACGACCATTCATGGCGACGTCAAGGTCAATCAT
Вот мой код:
$cat merge_seq.py
import sys
from Bio import SeqIO
from Bio.Seq import Seq
in_file = open(sys.argv[1],'r')
sequences = SeqIO.parse(in_file, "fasta")
concat=Seq("")
for record in sequences:
record.seq= record.seq + ("N" * 20)
concat+=record.seq
print concat
И это выходной ток:
$ python merge_seq.py test.fa
GAAGTACGTNNNNNNNNNNNNNNNNNNNN
GAAGTACGTNNNNNNNNNNNNNNNNNNNNAACTCAAGAACAAGAAAAAANNNNNNNNNNNNNNNNNNNN
GAAGTACGTNNNNNNNNNNNNNNNNNNNNAACTCAAGAACAAGAAAAAANNNNNNNNNNNNNNNNNNNNTGGACGACCATTCATGGCGACGTCAAGGTCAATCATNNNNNNNNNNNNNNNNNNNN
Это works-- такой очевидной ошибки :(однако этот код не очень быстро для моих фактических данных (~ 12 миллионов последовательностей), есть ли у вас какие-либо предложения по ускорению обработки? Благодаря! – psaima
Вы можете комбинировать 'record.seq = record.seq + (" N "* 20)' и 'concat + = record.seq' с' concat + = record.seq + ("N" * 20) 'Я не знайте, что это сэкономит вам много, но, возможно, также не сделает дополнительного шага. – Celeo
пробовал это, все еще очень медленно .. – psaima