在给定参考基因组的情况下,我需要将重叠群转化为各自的蛋白质序列(即,我需要获取一个子串,该子串的位置在该字符串上是已知的,并且我需要找到最近的起始和终止密码子-具体为3字母顺序(如代码中所写)。
这很棘手,因为有时重叠群的第一个位置不是三个的倍数(即重叠群中的前三个核苷酸可能并不完全匹配密码子)。而且,重叠群有时可以位于基因间区域(即基因之间)。目的是分离编码和非编码DNA。
到目前为止,这是我的代码:
from Bio.Seq import Seq
from Bio.Alphabet import generic_dna, generic_protein
start_codons = ['ATG']
stop_codons = ['TAG', 'TAA', 'TGA']
string = 'GG*TAG*CCAATT*ATG*AACGAA*TAG*GAC' #remove '*', just for visual
contigs = ['CCAA', 'TGAAC', 'GAA', 'GGAC']
positions = [5, 12, 17, 22] #position indices for each contig on string
extended_contigs = []
extended_position_contigs = []
intergenic_contigs = []
intergenic_position_contigs = []
for i in contigs:
extended_contigs.append(#some code)
extended_positions_contigs.append(#some code)
intergenic_contigs.append(#some code)
intergenic_positions_contigs.append(#some code)
我应该得到extended_contigs = ['ATGAAC', 'ATGAACGAA']
和extended_positions_contigs = [12, 17]
。这些是位于基因内的重叠群。为了将它们编码为肽,我需要返回字符串,直到找到起始密码子并扩展初始重叠群(例如TGAAC
-> ATGAAC
和GAA
-> { {1}})
我还应该得到ATGAACGAA
和intergenic_contigs = ['CCAA', 'GGAC']
。运行缺少的代码后,计算机将在字符串的左侧搜索并在起始密码子之前找到终止密码子(例如intergenic_positions_contigs = [5, 22]
)。因此,重叠群位于两个基因之间,不需要添加任何东西。这些基因间重叠群仅存储在新列表中。
我的代码继续:
TAG
在这里,无需添加新代码。运行以上命令后,prot_contigs = []
for i in extended_contigs:
my_dna = Seq(i, generic_dna)
my_prot = my_dna.translate()
prot_contigs.append(str(my_prot))
。
代码的最后一步(需要帮助)将prot_contigs = ['MN', 'MNE']
转换为prot_contigs
。
如何?如果对于任何重叠群(例如new_prot_contigs = ['MN', 'E']
),其开头或结尾是另一个密码子的一部分(不是3的完美倍数),则将保留两端的额外密码子(例如'TGAAC'
保持{{1 }})。否则,如果重叠群(例如'MN'
)与密码子完全匹配,则添加到其上的任何内容都将被删除(例如'MN'
变成'GAA'
)。
我会尝试自己解决代码的2个部分,但是我不确定如何在字符串上定位(即重叠群的起点),然后沿着字符串查找最接近的起始/终止密码子,因此我可以确定DNA的功能,并准确地将编码蛋白质的重叠群测序为肽。
任何帮助将不胜感激!
答案 0 :(得分:0)
这个答案似乎以前已经回答过
How to find a open reading frame in Python
但是您实际上不需要自己执行此操作(除非您确实想要这样做)。有很多工具可以轻松地做到这一点。 EMBOSS Suite中的示例。
getorf -find 3 genome.fna genome.orf
我想如果您在Windows系统上执行此操作会比较棘手,但是请考虑在virtualbox环境中执行此操作。如今,大多数生物信息学都是在unix系统上完成的。