为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

茅侃侃 2023-04-18 15:05:40
我正在尝试找到一种方法来读取一组列表中的项目,一组三个,并找到 3 个项目(密码子)的组合以确定片段的开头,另一个 3 个项目的组合找到结束一个片段(终止密码子)。因此,阅读框架和列表应该由程序像这样读取:清单 1:XXXXX-开始-感兴趣的片段-停止-XXXXXXX我想做的只是提取感兴趣的片段并将其附加到另一个列表中,然后删除其余部分。这是一个更具体的例子:起始密码子:ATG终止密码子:TAGgene_1='ACGGACTATTC'gene_2= 'GGCC ATG AGTAACGCA TAG GGCCCgene_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)但它并没有真正回馈任何东西,我想知道是不是代码太冗余了,我真的不需要在这里定义一个函数,你知道更好的方法吗?谢谢!!
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超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)


查看完整回答
反对 回复 2023-04-18
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

与其列出每个氨基酸,不如尝试将基因转换为字符串并使用正则表达式查找起始和结束位点?基因 3 会不会是一个多顺反子基因而不是一个带有外显子的基因?


是这样的:


import re


gene = 'GGGCCCATGACGTACTAGGGGCCCATGCATTCATAG'


rna = re.findall('ATG(.+?(?=TAG))', gene)


查看完整回答
反对 回复 2023-04-18
  • 2 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信