Я пытаюсь создать фрагменты переменной длины N и C termini (1,2,3,4,5,6,7). Но перед тем, как попасть туда, у меня проблемы с чтением в моих файлах фаста. Я следовал главному учебнику «Случайные подпоследовательности» из: https://biopython.org/wiki/SeqIO. Но в этом случае есть только одна последовательность, так что, возможно, именно здесь я ошибся. Код с примерами последовательностей и моими ошибками. Любая помощь приветствуется. Я явно вне моей глубины. Похоже, есть много подобных проблем, с которыми сталкивались другие, поэтому я представляю, что делаю что-то глупое, потому что не до конца понимаю структуры SeqRecord. Спасибо!
Два примера последовательности в моем файле domains.fasta:
>GA98
TTYKLILNLKQAKEEAIKELVDAGTAEKYFKLIANAKTVEGVWTLKDEIKTFTVTE
>GB98
TTYKLILNLKQAKEEAIKELVDAGTAEKYFKLIANAKTVEGVWTYKDEIKTFTVTE
мой код, который не работает:
from Bio import SeqIO
from Bio.SeqRecord import SeqRecord
# Load data:
domains = list(SeqIO.parse("domains.fa",'fasta'))
#set up receiving arrays
home=[]
num=1
#slice data
for i in range(0, 6):
num = num+1
domain = domains
seq_n = domains.seq[0:num]
seq_c = domains.seq[len(domain)-num:len(domain)]
name = domains.id
record_d = SeqRecord(domain,'%s' % (name), '', '')
home.append(record_d)
record_n = SeqRecord(seq_n,'%s_n_%i' % (name,num), '', '')
home.append(record_n)
record_c = SeqRecord(seq_c,'%s_c_%i' % (name,num), '', '')
home.append(record_c)
SeqIO.write(home, "domains_variants.fasta", "fasta")
Я получаю ошибку:
Traceback (most recent call last):
File "~/fasta_nc_sequences.py", line 20, in <module>
seq_n = domains.seq[0:num]
AttributeError: 'list' object has no attribute 'SeqRecord'
Когда я распечатываю 'domains = list (SeqIO.parse ("domains.fa",' fasta '))', я получаю это:
[SeqRecord(seq=Seq('TTYKLILNLKQAKEEAIKELVDAGTAEKYFKLIANAKTVEGVWTLKDEIKTFTVTE', SingleLetterAlphabet()), id='GA98', name='GA98', description='GA98', dbxrefs=[]), SeqRecord(seq=Seq('TTYKLILNLKQAKEEAIKELVDAGTAEKYFKLIANAKTVEGVWTYKDEIKTFTVTE', SingleLetterAlphabet()), id='GB98', name='GB98', description='GB98', dbxrefs=[])]
Я не уверен почему Я не могу получить доступ к тому, что находится в SeqRecord. Может быть, это потому, что я обернул SeqIO.parse в список, потому что перед тем, как мне выдавали другую ошибку:
AttributeError: 'generator' object has no attribute 'seq'