搜索字符串中最近的序列

2024-05-16 18:33:39 发布

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

我需要在给定一个参考基因组的情况下,将重叠群转换成它们各自的蛋白质序列(即,我需要取一个子串,其位置在字符串上已经是已知的,并且我需要找到最近的起始密码子和终止密码子-一个写在代码中的特定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->;ATGAACGAA->;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']。你知道吗

怎么做?如果对于任何重叠群(例如'TGAAC'),起始或结束是另一个密码子的一部分(不是3的完美倍数),则会保留两端的额外密码子(例如'MN'保持'MN')。否则,如果contig(例如'GAA')与密码子完全匹配,则添加到密码子上的任何内容都将被删除(例如'MNE'成为'E')。你知道吗

我会尝试自己解决代码的两个部分,但我不确定如何在字符串上定位(即contig的起始点)并沿着字符串查找最近的起始/终止密码子,这样我就可以确定DNA的功能并准确地将编码contig的蛋白质排序为肽。你知道吗

任何帮助都将不胜感激!你知道吗


Tags: 字符串代码extended编码fortag基因dna
1条回答
网友
1楼 · 发布于 2024-05-16 18:33:39

这个答案似乎以前就有人回答过

How to find a open reading frame in Python

但是你真的不需要自己去做(除非你真的想做)。有很多工具可以轻松做到这一点。浮雕套件的一个例子。你知道吗

getorf -find 3 genome.fna genome.orf

我想如果你是在Windows系统上做这件事会比较棘手,但是考虑在virtualbox环境下做。目前大多数生物信息学都是在unix系统上进行的。你知道吗

相关问题 更多 >