1 #ifndef H_SoloReadFeatureStats 2 #define H_SoloReadFeatureStats 3 #include "IncludeDefine.h" 4 5 class SoloReadFeatureStats { 6 public: 7 vector<string> names; 8 enum { nUnmapped, nNoFeature, nAmbigFeature, nAmbigFeatureMultimap, nTooMany, nNoExactMatch, nExactMatch, nMatch, nMatchUnique, nCellBarcodes, nUMIs, nStats}; 9 uint64 V[nStats]; SoloReadFeatureStats()10 SoloReadFeatureStats() 11 { 12 names={"nUnmapped","nNoFeature","nAmbigFeature","nAmbigFeatureMultimap","nTooMany","nNoExactMatch","nExactMatch","nMatch","nMatchUnique","nCellBarcodes","nUMIs"}; 13 for (uint32 ii=0; ii<nStats; ii++) 14 V[ii]=0; 15 }; 16 numInvalidBarcodes()17 uint64 numInvalidBarcodes() 18 { 19 return V[nTooMany]+V[nNoExactMatch]; 20 }; 21 numMappedToTranscriptome()22 uint64 numMappedToTranscriptome() 23 { 24 return V[nMatch]; 25 }; 26 27 /* 28 void calcUnique(bool multYes) 29 { 30 if ( multYes ) {//multi-genic reads were counted in nMatch 31 V[nMatchUnique] = V[nMatch] - V[nAmbigFeature]; 32 } else {//no multi-genic reads 33 V[nMatchUnique] = V[nMatch]; 34 }; 35 }; 36 */ 37 numMappedToTranscriptomeUnique()38 uint64 numMappedToTranscriptomeUnique() 39 { 40 return V[nMatchUnique]; 41 }; 42 numSequencingSaturation()43 double numSequencingSaturation() 44 { 45 return 1.0 - double(V[nUMIs])/V[nMatchUnique]; //nUMIs is calculated for unqiue-gene reads 46 }; 47 }; 48 49 #endif