python 读取文件到字典读取顺序_在Python中以正确的顺序从文件解析到字典 (Parse from file to dictionary in correct order, in Python...

2014-08-12 18:22:49

0

I've written some code to parse an EMBL file and dump specific regions of the file into a dictionary.

The keys of the dictionary correlate to the label of a specific region that I want to capture and each key's value is the region itself.

I have then created another function to write the contents of the dictionary to a text file.

However, I have found that the text file contains the information in a different order to that found in the original EMBL file.

I can't figure out why it is doing this - is it because dictionaries are unordered? Is there any way around it?

from Bio import SeqIO

s6633 = SeqIO.read("6633_seq.embl", "embl")

def make_dict_realgenes(x):

dict = {}

for i in range(len(x.features)):

if x.features[i].type == 'CDS':

if 'hypothetical' not in x.features[i].qualifiers['product'][0]:

try:

if x.features[i].location.strand == -1:

x1 = x.features[i].location.end

y1 = x1 + 30

dict[str(x.features[i].qualifiers['product'][0])] =\

str(x[x1:y1].seq.reverse_complement())

else:

x2 = x.features[i].location.start

y2 = x2 - 30

dict[x.features[i].qualifiers['product'][0]] =\

str(x[y2:x2].seq)

except KeyError:

if x.features[i].location.strand == -1:

x1 = x.features[i].location.end

y1 = x1 + 30

dict[str(x.features[i].qualifiers['translation'][0])] =\

str(x[x1:y1].seq.reverse_complement())

else:

x2 = x.features[i].location.start

y2 = x2 - 30

dict[x.features[i].qualifiers['translation'][0]] =\

str(x[y2:x2].seq)

return dict

def rbs_file(dict):

list = []

c = 0

for k, v in dict.iteritems():

list.append(">" + k + " " + str(c) + "\n" + v + "\n")

c = c + 1

f = open("out.txt", "w")

a = 0

for i in list:

f.write(i)

a = a + 1

f.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值