Main.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "SamFile.h"
00018 #include "Pileup.h"
00019 #include "PileupElementBaseQual.h"
00020
00021
00022 void newAnalyze(PileupElementBaseQual& element)
00023 {
00024 std::cout << "newAnalyze: ";
00025 element.analyze();
00026 }
00027
00028
00029 class AnalyzeClass
00030 {
00031 public:
00032 AnalyzeClass()
00033 {
00034 myCounter = 33;
00035 }
00036 bool operator() (PileupElementBaseQual& element)
00037 {
00038 std::cout << "Class Analyze: Counter = " << myCounter << ": ";
00039 element.analyze();
00040 ++myCounter;
00041 return(true);
00042 }
00043 int myCounter;
00044 private:
00045 };
00046
00047
00048 int main(int argc, char ** argv)
00049 {
00050 const char* fileName = "../../test/testFiles/sortedBam.bam";
00051 const char* indexName = "../../test/testFiles/sortedBam.bam.bai";
00052
00053 printf("\nPileup<PileupElementBaseQual> on entire file: %s\n", fileName);
00054 Pileup<PileupElementBaseQual> pileup(1024);
00055 pileup.processFile(fileName);
00056
00057 printf("\nPileup<PileupElement> on entire file: %s\n", fileName);
00058 Pileup<PileupElement> pileup1(1024);
00059 pileup1.processFile(fileName);
00060
00061 printf("\nPileup<PileupElementBaseQual> on a section of file: %s\n", fileName);
00062
00063 Pileup<PileupElementBaseQual> pileup2(100);
00064
00065 SamFile samIn;
00066 SamFileHeader header;
00067 SamRecord record;
00068
00069 if(!samIn.OpenForRead(fileName))
00070 {
00071 fprintf(stderr, "%s\n", samIn.GetStatusMessage());
00072 return(samIn.GetStatus());
00073 }
00074
00075
00076 if(!samIn.ReadBamIndex(indexName))
00077 {
00078 fprintf(stderr, "%s\n", samIn.GetStatusMessage());
00079 return(samIn.GetStatus());
00080 }
00081
00082 if(!samIn.ReadHeader(header))
00083 {
00084 fprintf(stderr, "%s\n", samIn.GetStatusMessage());
00085 return(samIn.GetStatus());
00086 }
00087
00088 const char* refName = "1";
00089 int start = 1000;
00090 int end = 1500;
00091 if(!samIn.SetReadSection(refName, start, end))
00092 {
00093 fprintf(stderr, "%s\n", samIn.GetStatusMessage());
00094 return(samIn.GetStatus());
00095 }
00096
00097
00098 while (samIn.ReadRecord(header, record))
00099 {
00100 pileup2.processAlignment(record);
00101 }
00102
00103 pileup2.flushPileup();
00104
00105 int returnValue = 0;
00106 if(samIn.GetStatus() != SamStatus::NO_MORE_RECS)
00107 {
00108
00109 fprintf(stderr, "%s\n", samIn.GetStatusMessage());
00110 returnValue = samIn.GetStatus();
00111 }
00112
00113 printf("\nPileup<PileupElementBaseQual> on entire file, newAnalyze: %s\n", fileName);
00114
00115 void (*fnPtr)(PileupElementBaseQual&) = newAnalyze;
00116
00117 Pileup<PileupElementBaseQual, void (*)(PileupElementBaseQual&)> pileup3(1024, fnPtr);
00118 pileup3.processFile(fileName);
00119
00120 printf("\nPileup<PileupElementBaseQual> on entire file, newAnalyze: %s\n", fileName);
00121
00122 AnalyzeClass myAnalyzeClass;
00123 myAnalyzeClass.myCounter = 2;
00124 Pileup<PileupElementBaseQual, AnalyzeClass> pileup4(1024, myAnalyzeClass);
00125 pileup4.processFile(fileName);
00126
00127 return(0);
00128 }