我如何用FASTA的集合编字典?

2024-09-29 21:28:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含FASTA序列的文本文件,如下所示。在

我需要创建一个字典,上面写着:

{header1\id number1: "ATCGTCAGGTCAGTCGTA", header2\idnumber2: "ATTGCAGTCATGCAG"}

header1\idnumber

ATCGTCAG公司

GTCA公司

GTCGTA公司

header2\idnumber2

ATTGCA公司

GTCA公司

TGCAG

等等

到目前为止,我已经成功地以这种方式将标题作为键:

^{pr2}$

但我不知道如何进一步连接序列并将它们作为值放在适当的键下

编辑:文本文件的实际部分:

FASTA658_B CCATCGGTAGCGCATCCTTAGTCCAATTAAGTCCCTATCCAGGCGCTCCGCCGAAGGTCT ATATCCATTTGTCAGCAGACACGC

TEK1-3586_CD CCACCCTCGTGGTATGGCTAGGCATTCAGGAACCGGAGAACGCTTCAGACCAGCCCGGAC TGGGAACCTGCGGGCAGTAGGTGGAAT


Tags: id字典公司序列fasta文本文件idnumbernumber1
2条回答

使用有序字典

from collections import OrderedDict
import re
import string

bad_chars = '\n>'
rgx = re.compile('[%s]' % bad_chars)
data = OrderedDict()
with open('test.txt', 'r') as f:
    for line in f:
        if line.startswith('>'):
            data[line.translate(string.maketrans("", "", ), bad_chars)] = ''
        else:
            data[data.keys()[-1]] += line.strip('\n')

print data

您可以使用defaultdict()使添加值更容易

from collections import defaultdict

d = defaultdict(str)

with open('file') as file1:
    for line in file1:
        if line[0] == '>': #I'm assuming header/idnumber starts with '>'
            key = line.strip('\n')
        else:
            d[key] += line.strip('\n')

键之间的每一行都是要添加到字典中的值。去掉换行符并将其添加到dict中的value中。如果该行只是一个换行符,则无所谓,因为一旦换行符被剥离,它将不会向字符串添加任何内容

相关问题 更多 >

    热门问题