解析列表列表中的项目,以三个为一组,并提取阅读框之间的片段。(又名 DNA 外显子转录)

我正在尝试找到一种方法来读取一组列表中的项目,一组三个,并找到 3 个项目(密码子)的组合以确定片段的开头,另一个 3 个项目的组合找到结束一个片段(终止密码子)。

因此,阅读框架和列表应该由程序像这样读取:

清单 1:XXXXX-开始-感兴趣的片段-停止-XXXXXXX

我想做的只是提取感兴趣的片段并将其附加到另一个列表中,然后删除其余部分。

这是一个更具体的例子:

起始密码子:ATG

终止密码子:TAG

gene_1='ACGGACTATTC'

gene_2= 'GGCC ATG AGTAACGCA TAG GGCCC

gene_3=GGGCCC ATG ACGTAC标签GGGCCC ATG CATTCA标签

因此,第一个列表不包含任何感兴趣的片段,而第二个列表包含 1,第三个列表包含 2。我试图摆脱这些阅读框架之外的所有内容,并将这些感兴趣的片段附加到一个应该看起来像东西的列表中像这样。

frag_int = ['AGTAACGCA', 'ACGTAC', 'CATTCA']

这是我到目前为止所拥有的:

#这些是str基因列表=[]

gene_1= 'A','C','G','G','A','C','T','A','T','T','C'

gene_2= 'G','G','C','C','A','T','G','A','G','T','A','A','C','G','C','A','T','A','G','G','G','C','C','C'

gene_3='G','G','G','C','C','C','A','T','G','A','C','G','T','A','C','T','A','G','G','G','G','C','C','C','A','T','G','C','A','T','T','C','A','T','A','G'


genelist.append(gene_1)

genelist.append(gene_2)

genelist.append(gene_3)


def transcription(ORF):

    mRNA= ''

    for i in range(0, len(ORF), 3):

        codon= ORF[i:i+3]

        if codon != 'ATG':

            next(codon)

            if codon == 'ATG':

                mRNA=codon.transcribe()

                if codon == 'TAG':

                    break

    return(mRNA)


mRNAs=[]

for gene in genelist:

    for codon in gene:

        mRNA= transcription(codon)

        mRNAs.append(mRNA)

print(mRNAs)

但它并没有真正回馈任何东西,我想知道是不是代码太冗余了,我真的不需要在这里定义一个函数,你知道更好的方法吗?谢谢!!


茅侃侃
浏览 109回答 2
2回答

拉风的咖菲猫

这是做我在问题中描述的最基本的方法,但是,请注意,如果有人试图找到 ORFS 和转录基因,在使用 python 的程序中,有一些生物学规则需要考虑,阅读和停止应该考虑密码子,但是,这只是一个关于如何开始构建代码的示例:另外,请注意此代码使用 biopython从 Bio.Seq 导入 Seq 从 Bio.Seq 导入转录genelist=[]gene_1= 'A','C','G','G','A','C','T','A','T','T','C'gene_2= 'G','G','C','C','A','T','G','A','G','T','A','A','C','G','C','A','T','A','G','G','G','C','C','C'gene_3='G','G','G','C','C','C','A','T','G','A','C','G','T','A','C','T','A','G','G','G','G','C','C','C','A','T','G','C','A','T','T','C','A','T','A','G'genelist.append(gene_1)genelist.append(gene_2)genelist.append(gene_3)def transcription(ORF):    mRNA= ''    foundStart = False    foundEnd = False    for i in range(0, len(ORF), 3):        codon= "".join(ORF[i:i+3])        if codon == 'ATG' and not foundStart:            foundStart = True        if foundStart and not foundEnd:            cc=transcribe(codon)            mRNA = mRNA + transcribe(codon)        if codon == 'TAG':            foundEnd = True           return(mRNA)mRNAs=[]for gene in genelist:    mRNA = transcription(gene)    mRNAs.append(mRNA)print(mRNAs)

呼啦一阵风

与其列出每个氨基酸,不如尝试将基因转换为字符串并使用正则表达式查找起始和结束位点?基因 3 会不会是一个多顺反子基因而不是一个带有外显子的基因?是这样的:import regene = 'GGGCCCATGACGTACTAGGGGCCCATGCATTCATAG'rna = re.findall('ATG(.+?(?=TAG))', gene)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python