1 #ifndef CODE_ReadAlignChunk
2 #define CODE_ReadAlignChunk
3 
4 #include "IncludeDefine.h"
5 #include "Parameters.h"
6 #include "ReadAlign.h"
7 #include "OutSJ.h"
8 #include "Transcriptome.h"
9 #include "BAMoutput.h"
10 #include "Quantifications.h"
11 
12 class ReadAlignChunk {//chunk of reads and alignments
13 public:
14     Parameters& P;
15     ReadAlign* RA;
16 
17     Transcriptome *chunkTr;
18 
19     char **chunkIn; //space for the chunk of input reads
20     array<uint64, MAX_N_MATES> chunkInSizeBytesTotal;
21 
22     char *chunkOutBAM, *chunkOutBAM1;//space for the chunk of output SAM
23     OutSJ *chunkOutSJ, *chunkOutSJ1;
24 
25     BAMoutput *chunkOutBAMcoord, *chunkOutBAMunsorted, *chunkOutBAMquant;
26     Quantifications *chunkQuants;
27 
28     istringstream** readInStream;
29     ostringstream*  chunkOutBAMstream;
30     ofstream chunkOutBAMfile;
31     string chunkOutBAMfileName;
32 
33     bool noReadsLeft;
34     uint iChunkIn; //current chunk # as read from .fastq
35     uint iChunkOutSAM; //current chunk # writtedn to Aligned.out.sam
36     int iThread; //current thread
37     uint chunkOutBAMtotal; //total number of bytes in the write buffer
38 
39     ReadAlignChunk(Parameters& Pin, Genome &genomeIn, Transcriptome *TrIn, int iChunk);
40     void processChunks();
41     void mapChunk();
42     void chunkFstreamOpen(string filePrefix, int iChunk, fstream &fstreamOut);
43     void chunkFstreamCat (fstream &chunkOut, ofstream &allOut, bool mutexFlag, pthread_mutex_t &mutexVal);
44     void chunkFilesCat(ostream *allOut, string filePrefix, uint &iC);
45 
46     Genome &mapGen;
47 private:
48 };
49 #endif
50