/////////////////////////////////////////////////////////////////////////////// // Run calculations. /////////////////////////////////////////////////////////////////////////////// void EnergyPlot::run() { /* * Make sure the dot plot data can be accessed. */ // Print a message that says the dot plot data file is being checked. cout << "Checking dot plot input file..." << flush; // Initialize the dot plot handler and an error string. DotPlotHandler* plotHandler = 0; string error = ""; // Create the RNA strand that holds the dot plot data. RNA* strand = new RNA( inputFile.c_str(), 4 ); ErrorChecker<RNA>* checker = new ErrorChecker<RNA>( strand ); error = checker->returnError(); if( error == "" ) { cout << "done." << endl; } /* * Prepare the dot plot data. */ if( error == "" ) { // Print a message saying that the dot plot data is being prepared. cout << "Preparing dot plot data..." << flush; // Build the dot plot handler using the strand's sequence length. int length = strand->GetSequenceLength(); plotHandler = new DotPlotHandler( descriptionSettings.getDescription(inputFile, true), length ); // Add all possible dots to the dot plot. for( int i = 1; i <= length; i++ ) { for( int j = i; j <= length; j++ ) { double energy = strand->GetPairEnergy( i, j ); if( energy > 0.0 ) { energy = numeric_limits<double>::infinity(); } else { stringstream stream( stringstream::in | stringstream::out ); stream << fixed << setprecision( 1 ) << energy; stream >> energy; } plotHandler->addDotValue( i, j, energy ); } } // Print a message saying that the dot plot data has been prepared. cout << "done." << endl; }