首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RNA转蛋白质。程序编译,但不会停止运行

RNA转蛋白质。程序编译,但不会停止运行
EN

Stack Overflow用户
提问于 2015-08-11 04:59:02
回答 1查看 1.1K关注 0票数 0

我最近学习了多维数组,并被赋予了分析RNA链并将其转化为蛋白质序列的任务。我决定用我对多维数组的知识来定义每一个密码子(由3个RNA碱基组成)。

代码语言:javascript
复制
//RNA codon to amino acid mapping
    char aminoAcid[4][4][4];
        //A = 0, C = 1, G = 2, U = 3

        //phenylalanine - F
            aminoAcid[3][3][3] = 'F';
            aminoAcid[3][3][1] = 'F';
        //Leucine - L
            aminoAcid[3][3][0] = 'L';
            aminoAcid[3][3][2] = 'L';
        //Serine - S
            aminoAcid[3][1][3] = 'S';
            aminoAcid[3][1][1] = 'S';
            aminoAcid[3][1][0] = 'S';
            aminoAcid[3][1][2] = 'S';
        //tyrosine - Y
            aminoAcid[3][0][3] = 'Y';
            aminoAcid[3][0][1] = 'Y';
        //stop codon
            aminoAcid[3][0][0] = '-';
            aminoAcid[3][0][2] = '-';
        //cysteine - C
            aminoAcid[3][2][3] = 'C';
            aminoAcid[3][2][1] = 'C';
        //stop codon
            aminoAcid[3][2][0] = '-';
        //tryptophan - W
            aminoAcid[3][2][2] = 'W';
        //leucine - L
            aminoAcid[1][3][3] = 'L';
            aminoAcid[1][3][1] = 'L';
            aminoAcid[1][3][0] = 'L';
            aminoAcid[1][3][2] = 'L';
        //proline - P
            aminoAcid[1][1][3] = 'P';
            aminoAcid[1][1][1] = 'P';
            aminoAcid[1][1][0] = 'P';
            aminoAcid[1][1][2] = 'P';
        //histidine - H
            aminoAcid[1][0][3] = 'H';
            aminoAcid[1][0][1] = 'H';
        //glutamine - Q
            aminoAcid[1][0][0] = 'Q';
            aminoAcid[1][0][2] = 'Q';
        //arginine - R 
            aminoAcid[1][2][3] = 'R';
            aminoAcid[1][2][1] = 'R';
            aminoAcid[1][2][0] = 'R';
            aminoAcid[1][2][2] = 'R';
        //isoleucine - I
            aminoAcid[0][3][3] = 'I';
            aminoAcid[0][3][1] = 'I';
            aminoAcid[0][3][0] = 'I';
        //methionine(start codon) - M
            aminoAcid[0][3][2] = 'M';
        //threonine -T
            aminoAcid[0][1][3] = 'T';
            aminoAcid[0][1][1] = 'T';
            aminoAcid[0][1][0] = 'T';
            aminoAcid[0][1][2] = 'T';
        //asparagine - N
            aminoAcid[0][0][3] = 'N';
            aminoAcid[0][0][1] = 'N';
        //lysine - K
            aminoAcid[0][0][0] = 'K';
            aminoAcid[0][0][2] - 'K';
        //serine - S
            aminoAcid[0][2][3] = 'S';
            aminoAcid[0][2][1] = 'S';
        //arginine - R
            aminoAcid[0][2][0] = 'R';
            aminoAcid[0][2][2] = 'R';
        //valine - V
            aminoAcid[2][3][3] = 'V';
            aminoAcid[2][3][1] = 'V';
            aminoAcid[2][3][0] = 'V';
            aminoAcid[2][3][2] = 'V';
        //alanine - A
            aminoAcid[2][1][3] = 'A';
            aminoAcid[2][1][1] = 'A';
            aminoAcid[2][1][0] = 'A';
            aminoAcid[2][1][2] = 'A';
        //aspartic acid - D
            aminoAcid[2][0][3] = 'D';
            aminoAcid[2][0][1] = 'D';
        //glutamic acid - E
            aminoAcid[2][0][0] = 'E';
            aminoAcid[2][0][2] = 'E';
        //glycine - G
            aminoAcid[2][2][3] = 'G';
            aminoAcid[2][2][1] = 'G';
            aminoAcid[2][2][0] = 'G';
            aminoAcid[2][2][2] = 'G';

我创建了下面的函数来翻译这个链。在这种情况下,请注意我的rna链是:

AUGCUUAUUAACUGAAAACAUAUGGGUAGUCGAUGA

代码语言:javascript
复制
string rnaAnalysis::translateRna()
{
    string protein = "";
    int firstBase, secondBase, thirdBase;

    for(int i = 0; i < newSequence.length() - 2; i+3)
    {
        if(newSequence[i] == 'A')
        {
            firstBase = 0;
        }
        else if(newSequence[i] == 'C')
        {
            firstBase = 1;
        }
        else if(newSequence[i] == 'G')
        {
            firstBase = 2;
        }
        else if(newSequence[i] == 'U')
        {
            firstBase = 3;
        }

        if(newSequence[i+1] == 'A')
        {
            secondBase = 0;
        }
        else if(newSequence[i+1] == 'C')
        {
            secondBase = 1;
        }
        else if(newSequence[i+1] == 'G')
        {
            secondBase = 2;
        }
        else if(newSequence[i+1] == 'U')
        {
            secondBase = 3;
        }

        if(newSequence[i+2] == 'A')
        {
            thirdBase = 0;
        }
        else if(newSequence[i+2] == 'C')
        {
            thirdBase = 1;
        }
        else if(newSequence[i+2] == 'G')
        {
            thirdBase = 2;
        }
        else if(newSequence[i+2] == 'U')
        {
            thirdBase = 3;
        }

        bool readSequence = true;
        if (aminoAcid[firstBase][secondBase][thirdBase] == aminoAcid[0][3][2])
        {
            readSequence = true;
        }
        else if (aminoAcid[firstBase][secondBase][thirdBase] == aminoAcid[3][0][0] || 
        aminoAcid[firstBase][secondBase][thirdBase] == aminoAcid[3][0][2] || 
        aminoAcid[firstBase][secondBase][thirdBase] == aminoAcid[3][2][0])
        {
            readSequence = false;
        }


        if(readSequence)
        {
            protein = protein + aminoAcid[firstBase][secondBase][thirdBase] + " ";
        }
        else 
        {
            continue;
        }
    }

    return protein;
}

bool用于“启动密码子”和“停止密码子”,基本上是链内的密码子,它将告诉你何时记录和何时停止。newSequence为RNA链。

编辑:我在这方面很新,所以我知道我的代码看起来很难看。任何关于如何清理它的反馈都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-11 05:22:13

代码语言:javascript
复制
for(int i = 0; i < newSequence.length() - 2; i+3)

应该是

代码语言:javascript
复制
for(int i = 0; i < newSequence.length() - 2; i += 3)

您的代码从不更改i的值,这就是为什么它从未停止运行的原因。

您的循环从同一段代码开始三次,其中将字母转换为“基本索引”。这显然是一个使用函数的地方

代码语言:javascript
复制
for (int i = 0; i < newSequence.length() - 2; i += 3)
{
    int firstBase = baseIndex(newSequence[i]);
    int secondBase = baseIndex(newSequence[i + 1]);
    int thirdBase = baseIndex(newSequence[i + 2]);
    ...

我将让您编写baseIndex函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31933548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档