1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
#include "SoloReadFeature.h"
#include "streamFuns.h"
#include "SoloFeatureTypes.h"
SoloReadFeature::SoloReadFeature(int32 feTy, Parameters &Pin, int iChunk)
: featureType(feTy), P(Pin), pSolo(P.pSolo)
{
if (pSolo.type==0)
return;
// if (pSolo.type==pSolo.SoloTypes::CB_samTagOut)
// return;
readInfoYes = pSolo.readInfoYes[featureType];
readIndexYes = pSolo.readIndexYes[featureType];
if (pSolo.cbWLyes) {
cbReadCount.resize(pSolo.cbWLsize,0);
};
if (iChunk>=0) {
//open with flagDelete=false, i.e. try to keep file if it exists
streamReads = &fstrOpen(P.outFileTmp+"/solo"+SoloFeatureTypes::Names[featureType]+'_'+std::to_string(iChunk), ERROR_OUT, P, false);
};
if (featureType==SoloFeatureTypes::Transcript3p)
transcriptDistCount.resize(10000,0);
};
void SoloReadFeature::addCounts(const SoloReadFeature &rfIn)
{
if (pSolo.cbWLyes) {//WL
for (uint32 ii=0; ii<pSolo.cbWLsize; ii++) {
cbReadCount[ii] += rfIn.cbReadCount[ii];
};
} else {
for (auto ii=rfIn.cbReadCountMap.cbegin(); ii!=rfIn.cbReadCountMap.cend(); ++ii) {
cbReadCountMap[ii->first] += ii->second;
};
};
if (transcriptDistCount.size()>0) {
for (uint32 ii=0; ii<transcriptDistCount.size(); ii++)
transcriptDistCount[ii] += rfIn.transcriptDistCount[ii];
};
};
void SoloReadFeature::addStats(const SoloReadFeature &rfIn)
{
for (uint32 ii=0; ii<stats.nStats; ii++)
stats.V[ii] += rfIn.stats.V[ii];
for (uint32 ii=0; ii<readFlag.nBits; ii++)
readFlag.flagCountsNoCB[ii] += rfIn.readFlag.flagCountsNoCB[ii];
};
void SoloReadFeature::statsOut(ofstream &streamOut)
{
//streamOut << setw(50) << "CELL BARCODES IN READS:\n"
for (uint32 ii=0; ii<stats.nStats; ii++) {
streamOut << setw(50) << stats.names[ii] << setw(15) << stats.V[ii] << '\n';
};
streamOut.flush();
};
|