我如何用 collection 的 FASTA 制作字典?
How do I make a dictionary out of a collection of FASTA?
我有一个包含 FASTA
个序列的文本文件,看起来像这样。
我需要创建一个字典,上面写着:
{header1\id number1: "ATCGTCAGGTCAGTCGTA", header2\idnumber2: "ATTGCAGTCATGCAG"}
header1\idnumber
ATCGTCAG
GTCA
GTCGTA
header2\idnumber2
ATTGCA
GTCA
TGCAG
等等
到目前为止,我已经设法以这种方式将我的 header 作为密钥:
file1 = open("test.txt")
sequence = []
text = []
for line in file1:
text.append(line.rstrip('\n'))
dic = {}
for thing in text:
if thing[0]=='>':
dic[thing] = ""
print dic
但我不知道如何进一步加入序列并将它们作为值放在适当的键下
编辑:文本文件的实际部分:
FASTA658_B
CCATCGGTAGCGCATCCTTAGTCCAATTAAGTCCCTATCCAGGCGCTCCGCCGAAGGTCT
ATATCCATTTGTCAGCAGACACGC
TEK1-3586_CD
CCACCCTCGTGGTATGGCTAGGCATTCAGGAACCGGAGAACGCTTCAGACCAGCCCGGAC
TGGGAACCTGCGGGCAGTAGGTGGAAT
您可以使用 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')
键之间的每一行都是要添加到字典中的值。去除换行符并将其添加到字典中的值。该行是否只是换行并不重要,因为一旦换行被剥离,它就不会向字符串添加任何内容
使用有序字典
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
我有一个包含 FASTA
个序列的文本文件,看起来像这样。
我需要创建一个字典,上面写着:
{header1\id number1: "ATCGTCAGGTCAGTCGTA", header2\idnumber2: "ATTGCAGTCATGCAG"}
header1\idnumber
ATCGTCAG
GTCA
GTCGTA
header2\idnumber2
ATTGCA
GTCA
TGCAG
等等
到目前为止,我已经设法以这种方式将我的 header 作为密钥:
file1 = open("test.txt")
sequence = []
text = []
for line in file1:
text.append(line.rstrip('\n'))
dic = {}
for thing in text:
if thing[0]=='>':
dic[thing] = ""
print dic
但我不知道如何进一步加入序列并将它们作为值放在适当的键下
编辑:文本文件的实际部分:
FASTA658_B CCATCGGTAGCGCATCCTTAGTCCAATTAAGTCCCTATCCAGGCGCTCCGCCGAAGGTCT ATATCCATTTGTCAGCAGACACGC
TEK1-3586_CD CCACCCTCGTGGTATGGCTAGGCATTCAGGAACCGGAGAACGCTTCAGACCAGCCCGGAC TGGGAACCTGCGGGCAGTAGGTGGAAT
您可以使用 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')
键之间的每一行都是要添加到字典中的值。去除换行符并将其添加到字典中的值。该行是否只是换行并不重要,因为一旦换行被剥离,它就不会向字符串添加任何内容
使用有序字典
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