public static void OverallManagerConstructor(string terminatorSequenceInput, int top, int minTTailSequenceLength, bool tailScoreAlgorithm, bool autoExtendTail, bool spacer, double HairpinscoreUpbounded, double ttailscoreUpbounded, bool forward, bool sbol, string path, string fileName)
        {
            terminatorSequence   = "";
            terminatorSequence   = getTerminatorSequence(forward, sbol, terminatorSequenceInput, path, fileName);
            errorState           = 0;
            recrusionTrackArray  = new int[top][];
            structure            = new int[top][, ];
            traceBackNumber      = new int[top];
            terminatorEfficiency = new double[top];
            aTail            = new string[top];
            stemloop         = new string[top];
            spacerSequence   = new string[top];
            tTail            = new string[top];
            ttailscore       = new double[top];
            hairpinscore     = new double[top];
            dscore           = new double[top];
            stemloopPosition = new int[top * 2];
            ttailPosition    = new int[top];
            foreach (char A in terminatorSequence)
            {
                if (A != ' ' & A != 'u' & A != 'c' & A != 'g' & A != 't' & A != 'a' & A != 'U' & A != 'C' & A != 'G' & A != 'T' & A != 'A')
                {
                    errorState = 6; break;
                }
            }
            if (errorState != 6)
            {
                if (terminatorSequence.Length >= 150)
                {
                    errorState = 4;
                }
                else if (terminatorSequence.Length <= 11)
                {
                    errorState = 5;
                }
                else
                {
                    protentialTTail.protentialTtailCalculation(terminatorSequence, minTTailSequenceLength);

                    if (protentialTTail.getNoTTailWarning() == true)
                    {
                        errorState = 1;
                    }
                    else
                    {
                        calculationCore.terminatorSequence = terminatorSequence;
                        calculationCore.calculationCoreConstructor();
                        Stemloop.stemloopConstructor(terminatorSequence, spacer, top, HairpinscoreUpbounded);

                        if ((Stemloop.getArraySizeWarning() == false) && (Stemloop.getStemLoopMinSizeWarning() == false))
                        {
                            stemloopPosition = Stemloop.tophairpinScorePosition;
                            ttailPosition    = Stemloop.topttailPosition;
                            for (int i = 0; i <= top - 1; i++)
                            {
                                calculationCore.traceBack(Stemloop.tophairpinScorePosition[2 * i], Stemloop.tophairpinScorePosition[2 * i + 1]);
                                recrusionTrackArray[i] = new int[calculationCore.recrusionTrackNumber * terminatorSequence.Length];
                                structure[i]           = new int[calculationCore.recrusionTrackNumber, terminatorSequence.Length];
                                for (int j = 0; j <= calculationCore.recrusionTrackNumber * terminatorSequence.Length - 1; j++)
                                {
                                    recrusionTrackArray[i][j] = calculationCore.recrusionTrack[j];
                                }
                                for (int t = 0; t <= calculationCore.recrusionTrackNumber; t++)
                                {
                                    for (int j = 0; j <= calculationCore.recrusionTrackNumber * terminatorSequence.Length - 1; j++)
                                    {
                                        if ((j <= (t + 1) * terminatorSequence.Length - 1) && (j >= t * terminatorSequence.Length))
                                        {
                                            structure[i][t, j - t * terminatorSequence.Length] = recrusionTrackArray[i][j];
                                        }
                                    }
                                }
                                tTailScore.tTailScoreCal.tTailScoreConstructor(terminatorSequence.Substring(ttailPosition[i]), minTTailSequenceLength, tailScoreAlgorithm, autoExtendTail);
                                aTail[i]          = terminatorSequence.Substring(0, stemloopPosition[2 * i]);
                                stemloop[i]       = terminatorSequence.Substring(stemloopPosition[2 * i], stemloopPosition[2 * i + 1] - stemloopPosition[2 * i] + 1);
                                spacerSequence[i] = terminatorSequence.Substring(stemloopPosition[2 * i + 1] + 1, ttailPosition[i] - stemloopPosition[2 * i + 1] - 1);
                                tTail[i]          = terminatorSequence.Substring(ttailPosition[i]);

                                ttailscore[i]           = tTailScore.tTailScoreCal.getTailScore();
                                hairpinscore[i]         = Stemloop.tophairpinScore[i];
                                traceBackNumber[i]      = calculationCore.recrusionTrackNumber;
                                terminatorEfficiency[i] = Efficiency.terminatorEfficiencyCal(ttailscore[i], hairpinscore[i], stemloopPosition[2 * i + 1] - stemloopPosition[2 * i] + 1);
                                dscore[i] = Efficiency.dscore;
                            }
                        }
                        else
                        {
                            if (Stemloop.getArraySizeWarning() == true)
                            {
                                errorState = 2;
                            }
                            if (Stemloop.getStemLoopMinSizeWarning() == true)
                            {
                                errorState = 3;
                            }
                        }
                    }
                }
            }
        }
Example #2
0
        public static void OverallManagerConstructor(string terminatorSequence, int top, int minTTailSequenceLength, bool tailScoreAlgorithm, bool autoExtendTail, bool spacer, double HairpinscoreUpbounded, double ttailscoreUpbounded)
        {
            protentialTTail.protentialTtailCalculation(terminatorSequence);

            if (protentialTTail.getNoTTailWarning() == true)
            {
                errorState = 1;
            }
            else
            {
                calculationCore.terminatorSequence = terminatorSequence;
                calculationCore.calculationCoreConstructor();
                Stemloop.stemloopConstructor(terminatorSequence, spacer, top, HairpinscoreUpbounded);
                recrusionTrackArray  = new int[top][];
                structure            = new int[top][, ];
                traceBackNumber      = new int[top];
                terminatorEfficiency = new double[top];
                aTail    = new string[top];
                stemloop = new string[top];
                tTail    = new string[top];



                if ((Stemloop.getArraySizeWarning() == false) && (Stemloop.getStemLoopMinSizeWarning() == false))
                {
                    for (int i = 0; i <= top - 1; i++)
                    {
                        calculationCore.traceBack(Stemloop.tophairpinScorePosition[2 * i], Stemloop.tophairpinScorePosition[2 * i + 1]);
                        recrusionTrackArray[i] = new int[calculationCore.recrusionTrackNumber * terminatorSequence.Length];
                        structure[i]           = new int[calculationCore.recrusionTrackNumber, terminatorSequence.Length];
                        for (int j = 0; j <= calculationCore.recrusionTrackNumber * terminatorSequence.Length - 1; j++)
                        {
                            recrusionTrackArray[i][j] = calculationCore.recrusionTrack[j];
                        }
                        for (int t = 0; t <= calculationCore.recrusionTrackNumber; t++)
                        {
                            for (int j = 0; j <= calculationCore.recrusionTrackNumber * terminatorSequence.Length - 1; j++)
                            {
                                if ((j <= (t + 1) * terminatorSequence.Length - 1) && (j >= t * terminatorSequence.Length))
                                {
                                    structure[i][t, j - t * terminatorSequence.Length] = recrusionTrackArray[i][j];
                                }
                            }
                        }
                        tTailScore.tTailScoreConstructor(terminatorSequence.Substring(Stemloop.tophairpinScorePosition[2 * i + 1] + 1), minTTailSequenceLength, tailScoreAlgorithm, autoExtendTail);
                        ttailscore              = tTailScore.getTailScore();
                        traceBackNumber[i]      = calculationCore.recrusionTrackNumber;
                        terminatorEfficiency[i] = Efficiency.terminatorEfficiencyCal(ttailscore, Stemloop.tophairpinScore[i], Stemloop.tophairpinScorePosition[2 * i + 1] - Stemloop.tophairpinScorePosition[2 * i]);
                        aTail[i]    = terminatorSequence.Substring(0, Stemloop.tophairpinScorePosition[2 * i]);
                        stemloop[i] = terminatorSequence.Substring(Stemloop.tophairpinScorePosition[2 * i], Stemloop.tophairpinScorePosition[2 * i + 1] - Stemloop.tophairpinScorePosition[2 * i] + 1);
                        tTail[i]    = terminatorSequence.Substring(Stemloop.tophairpinScorePosition[2 * i + 1] + 1);
                    }
                }
                else
                {
                    if (Stemloop.getArraySizeWarning() == true)
                    {
                        errorState = 2;
                    }
                    if (Stemloop.getStemLoopMinSizeWarning() == true)
                    {
                        errorState = 3;
                    }
                }
            }
        }