int dGetOptions(int rgc, char *rgv[]) { int i; for (i=1; i<rgc; i++) { if (rgv[i][0] != '-') return i; switch(rgv[i][1]) { case 'd': homoFile = rgv[++i]; break; case 'n': normalBam = rgv[++i]; break; case 't': tumorBam = rgv[++i]; break; case 'o': disFile = rgv[++i]; break; case 'e': bedFile = rgv[++i]; break; case 'r': one_region = rgv[++i]; break; case 'f': paramd.fdrThreshold = atof(rgv[++i]); break; case 'i': paramd.comentropyThreshold = atof(rgv[++i]); break; case 'c': paramd.covCutoff = atoi(rgv[++i]); break; case 'z': paramd.Normalization = atoi(rgv[++i]); break; case 'l': paramd.MininalHomoSize = atoi(rgv[++i]); break; case 'p': paramd.MininalHomoForDis = atoi(rgv[++i]); break; case 'u': paramd.DisSpan = atoi(rgv[++i]); break; case 'm': paramd.MaxHomoSize = atoi(rgv[++i]); break; case 'q': paramd.MinMicrosate = atoi(rgv[++i]); break; case 's': paramd.MinMicrosateForDis = atoi(rgv[++i]); break; case 'w': paramd.MaxMicrosateForDis = atoi(rgv[++i]); break; case 'b': paramd.numberThreads = atoi(rgv[++i]); break; case 'x': paramd.HomoOnly= atoi(rgv[++i]); break; case 'y': paramd.MicrosateOnly = atoi(rgv[++i]); break; break; case 'h':DisUsage(); case '?':DisUsage(); } } return i; }
int dGetOptions(int rgc, char *rgv[]) { int i; for (i=1; i<rgc; i++) { if (rgv[i][0] != '-') return i; switch(rgv[i][1]) { case 'd': homoFile = rgv[++i]; break; case 'b': bamListFile = rgv[++i]; break; case 'o': disFile = rgv[++i]; break; case 'e': bedFile = rgv[++i]; break; case 'r': one_region = rgv[++i]; break; case 'l': paramd.MininalHomoSize = atoi(rgv[++i]); break; case 'p': paramd.MininalHomoForDis = atoi(rgv[++i]); break; case 'u': paramd.DisSpan = atoi(rgv[++i]); break; case 'm': paramd.MaxHomoSize = atoi(rgv[++i]); break; case 'q': paramd.MinMicrosate = atoi(rgv[++i]); break; case 's': paramd.MinMicrosateForDis = atoi(rgv[++i]); break; case 'w': paramd.MaxMicrosateForDis = atoi(rgv[++i]); break; case 't': paramd.numberThreads = atoi(rgv[++i]); break; case 'x': paramd.HomoOnly= atoi(rgv[++i]); break; case 'y': paramd.MicrosateOnly = atoi(rgv[++i]); break; break; case 'h':DisUsage(); case '?':DisUsage(); } } return i; }
int HomoAndMicrosateDis(int argc, char *argv[]) { if (argc == 1) DisUsage(); for (int i=0; i<argc; i++) { std::cout <<argv[i]<<' '; } Initial_Time(); std::cout <<"Start at: "<<Curr_Time()<< std::endl; int noptions = dGetOptions(argc, argv); // process user defined region if (!one_region.empty()) { if (!polyscan.ParseOneRegion(one_region)) { std::cerr<<"fatal error: Please give correct defined region format (-r) \n"; exit(1); } polyscan.ifUserDefinedRegion = true; } else { polyscan.ifUserDefinedRegion = false; } // reading bed file if is exist finB.open(bedFile.c_str()); if (finB) { std::cout << "loading bed regions ..." << std::endl; polyscan.LoadBeds(finB); polyscan.BedFilterorNot(); } // check bam list file finM.open(bamListFile.c_str()); if (!finM) { std::cerr<<"fatal error: failed to open bam list file\n"; exit(1); } std::cout << "loading bam list ..." << std::endl; polyscan.LoadBams(finM); // check h**o/microsate file finH.open(homoFile.c_str()); if (!finH) { std::cerr<<"fatal error: failed to open homopolymer and microsatellites file\n"; exit(1); } std::cout << "loading homopolymer and microsatellite sites ..." << std::endl; polyscan.LoadHomosAndMicrosates(finH); finH.close(); //polyscan.TestHomos(); polyscan.SplitWindows(); //polyscan.TestWindows(); std::cout << "\nTotal loading windows: " << polyscan.totalWindowsNum << " \n\n"; std::cout << "\nTotal loading homopolymer and microsatellites: " << polyscan.totalHomosites << " \n\n"; // pour out distribution foutD.open( disFile.c_str() ); if (!foutD) { std::cerr <<"failed to open file: "<<disFile<< std::endl; exit(1); } polyscan.GetHomoDistribution(foutD); foutD.close(); std::cout << "\nTotal time consumed: " << Cal_AllTime() << " secs\n\n"; return 0; }
int HomoAndMicrosateDisMsi(int argc, char *argv[]) { if (argc == 1) DisUsage(); for (int i=0; i<argc; i++) { std::cout <<argv[i]<<' '; } Initial_Time(); std::cout <<"Start at: "<<Curr_Time() << std::endl; int noptions = dGetOptions(argc, argv); // process user defined region if (!one_region.empty()) { if (!polyscan.ParseOneRegion(one_region)) { std::cerr<<"fatal error: Please give correct defined region format (-r) \n"; exit(1); } polyscan.ifUserDefinedRegion = true; } else { polyscan.ifUserDefinedRegion = false; } // reading bed file if is exist finB.open(bedFile.c_str()); if (finB) { std::cout << "loading bed regions ..." << std::endl; polyscan.LoadBeds(finB); polyscan.BedFilterorNot(); } // load bam files //polyscan.LoadBams( normalBam, tumorBam ); if (!normalBam.empty() && !tumorBam.empty()) { polyscan.LoadBams( normalBam, tumorBam ); } // just for tumor only data if (normalBam.empty() && !tumorBam.empty()) { polyscan.LoadBam(tumorBam); } // check h**o/microsate file finH.open(homoFile.c_str()); if (!finH) { std::cerr<<"fatal error: failed to open homopolymer and microsatellites file\n"; exit(1); } std::cout << "loading homopolymer and microsatellite sites ..." << std::endl; polyscan.LoadHomosAndMicrosates(finH); finH.close(); //polyscan.TestHomos(); polyscan.SplitWindows(); //polyscan.TestWindows(); std::cout << "\nTotal loading windows: " << polyscan.totalWindowsNum << " \n\n"; std::cout << "\nTotal loading homopolymer and microsatellites: " << polyscan.totalHomosites << " \n\n"; // change code to one sample //polyscan.GetHomoDistribution(sample, disFile); // control distribution for tumor only input if (!normalBam.empty() && !tumorBam.empty()) { polyscan.GetHomoDistribution(sample, disFile); } if (normalBam.empty() && !tumorBam.empty()) { polyscan.GetHomoTumorDistribution(sample, disFile); } std::cout << "\nTotal time consumed: " << Cal_AllTime() << " secs\n\n"; return 0; }