0

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

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

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

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

这是一个更具体的例子:

起始密码子:ATG

终止密码子:TAG

基因_1 = 'ACGGACTATTC'

基因_2 = 'GGCC ATG AGTAACGCA TAG GGCCC

基因_3= GGGCCC ATG ACGTAC标记GGGCCC ATG CATTCA标记

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

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

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

#这些是str 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= ''
    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)

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

4

2 回答 2

0

谢谢大家的评论,我去了生物信息学部分并得到了@terdon的帮助。这是我在问题中描述的最基本的方法,但是,请注意,如果有人试图找到 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)
于 2020-08-11T14:04:49.653 回答
0

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

像这样的东西:

import re

gene = 'GGGCCCATGACGTACTAGGGGCCCATGCATTCATAG'

rna = re.findall('ATG(.+?(?=TAG))', gene)
于 2020-07-31T12:38:11.513 回答