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