/************************************************************************************************* ************************************************************************************************* * * Start of Main Function * ************************************************************************************************* ************************************************************************************************/ int main (int argc, char *argv[]) { init_salute(); #ifdef _DEBUG atexit (memstatus); dbgmemInit(); #endif /* _DEBUG */ ofstream null_ostream("/dev/null"); // must stay live for entire scope, or crash when writing TheSilenceOfTheArmadillos(null_ostream); TrackProgress my_progress; DumpStartingStateOfProgram (argc,argv,my_progress); CommandLineOpts inception_state (argc, argv); SeqListClass my_keys; ImageSpecClass my_image_spec; SlicedPrequel my_prequel_setup; InitStackUnwind(inception_state.sys_context.stackDumpFile); SetUpOrLoadInitialState(inception_state, my_keys, my_progress, my_image_spec, my_prequel_setup); // Start logging process parameters & timing now that we have somewhere to log my_progress.InitFPLog(inception_state); // Write processParameters.parse file now that processing is about to begin my_progress.WriteProcessParameters(inception_state); // Do background model RealImagesToWells ( inception_state, my_keys, my_progress, my_image_spec, my_prequel_setup); my_progress.ReportState ("Analysis (wells file only) Complete"); exit (EXIT_SUCCESS); }
/************************************************************************************************* ************************************************************************************************* * * Start of Main Function * ************************************************************************************************* ************************************************************************************************/ int main (int argc, char *argv[]) { init_salute(); #ifdef _DEBUG atexit (memstatus); dbgmemInit(); #endif /* _DEBUG */ // Disable armadillo warning messages. ofstream null_ostream("/dev/null"); arma::set_stream_err1(null_ostream); arma::set_stream_err2(null_ostream); TrackProgress my_progress; DumpStartingStateOfProgram (argc,argv,my_progress); CommandLineOpts clo (argc, argv); InitPinnedWellReporterSystem (clo.img_control); // Directory to which results files will be written char *experimentName = NULL; experimentName = strdup (clo.GetExperimentName()); CreateResultsFolder (experimentName); CreateResultsFolder (clo.sys_context.basecaller_output_directory); string analysisLocation; clo.sys_context.SetUpAnalysisLocation (experimentName,analysisLocation); // Start logging process parameters & timing now that we have somewhere to log to my_progress.fpLog = clo.InitFPLog(); // create a raw wells file object // for new analysis, this is a file to be created; for reprocessing, this is the wells file to be read. // create the new wells file on a local partition. ClearStaleWellsFile(); clo.sys_context.MakeNewTmpWellsFile (experimentName); RawWells rawWells (clo.sys_context.wellsFilePath, clo.sys_context.wellsFileName); int well_rows, well_cols; // dimension of wells file - found out from images if we use them - why is this separate from the rawWells object? // structure our flows & special key sequences we look for int numFlows = clo.GetNumFlows(); SeqListClass my_keys; my_keys.StdInitialize (clo.flow_context.flowOrder,clo.key_context.libKey, clo.key_context.tfKey,my_progress.fpLog); // 8th duplicated flow processing code //@TODO: these parameters are just for reporting purposes??? // they appear to be ignored everywhere my_keys.UpdateMinFlows (clo.key_context.minNumKeyFlows); my_keys.UpdateMaxFlows (clo.key_context.maxNumKeyFlows); // GENERATE FUNCTIONAL WELLS FILE & BEADFIND FROM IMAGES OR PREVIOUS PROCESS Region wholeChip; //Create empty Mask object ExportSubRegionSpecsToMask (clo.loc_context); Mask bfmask (1, 1); Mask *maskPtr = &bfmask; GetFromImagesToWells (rawWells, maskPtr, clo, experimentName, analysisLocation, numFlows, my_keys,my_progress, wholeChip, well_rows,well_cols); if (!clo.mod_control.USE_RAWWELLS & clo.mod_control.WELLS_FILE_ONLY) { // stop after generating the functional wells file UpdateBeadFindOutcomes (maskPtr, wholeChip, experimentName, !clo.bfd_control.SINGLEBF, clo.mod_control.USE_RAWWELLS); my_progress.ReportState ("Analysis (wells file only) Complete"); } else { fprintf (stderr, "\n"); fprintf (stderr, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n"); fprintf (stderr, "ERROR: Analysis has reached removed BaseCalling code section\n"); fprintf (stderr, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n"); fprintf (stderr, "\n"); exit (EXIT_FAILURE); /* // Update progress bar status file: img proc complete/sig proc started updateProgress (IMAGE_TO_SIGNAL); // ============================================== // BASE CALLING // ============================================== // no images below this point // operating from a wells file generated above GenerateBasesFromWells (clo, rawWells, maskPtr, my_keys.seqList, well_rows, well_cols, experimentName, my_progress); UpdateBeadFindOutcomes (maskPtr, wholeChip, experimentName, !clo.bfd_control.SINGLEBF, clo.mod_control.USE_RAWWELLS); my_progress.ReportState ("Analysis Complete"); */ } clo.sys_context.CleanupTmpWellsFile (clo.mod_control.USE_RAWWELLS); free (experimentName); exit (EXIT_SUCCESS); }