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; } } } } } }
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; } } } }