我有以下脚本来计算基因文件中的密码子数量(codon.list.csv)(test.fasta),然而它不管帧数都计算所有密码子,我想只计算每个密码子第0帧,(ATG,TAT,TAT,TAA)。例如:
>test1
ATGTATTATTAA
ATG:1 TAT:2 TAA:1
目前我的剧本正在计算TGT,ATT,TTA等......我不需要。
我认为这会更容易,但我无法纠正......
任何建议都会很棒!
from Bio import SeqIO
mRNA_sequences = "test.fasta"
in_seq_handle = open(mRNA_sequences)
seq_dict = SeqIO.to_dict(SeqIO.parse(in_seq_handle, "fasta"))
in_seq_handle.close()
seq_dict_keys = seq_dict.keys()
dict_sequences2={}
dict_codons = {}
contig_file = open("codon.list.csv")
for line in contig_file:
gene_id = line[0:3]
for sequence in seq_dict.values():
seqstring = sequence.seq
if dict_hepts.has_key((line[:-1])):
dict_codons[(line[:-1])] += seqstring.count(gene_id)
else:
dict_codons[(line[:-1])] = seqstring.count(gene_id)
print dict_codons
答案 0 :(得分:1)
这个怎么样:
a = 'ATGTATTATTAA'
codons = (a[n:n+3] for n in xrange(0,len(a),3)) # creates generator
dict_codons = {}
for codon in codons:
if dict_codons.has_key(codon):
dict_codons[codon] += 1
else:
dict_codons[codon] = 1
print dict_codons
简而言之,此代码生成一个生成第0帧密码子的生成器, 并计算它们以将数据存储在字典中。