]> git.donarmstrong.com Git - rsem.git/blob - SingleHit.h
Added error detection for cases such as a read's two mates having different names...
[rsem.git] / SingleHit.h
1 #ifndef SINGLEHIT_H_
2 #define SINGLEHIT_H_
3
4 #include<cstdlib>
5 #include<iostream>
6
7 //char dir : 0 +, 1 - , encoding as 1 + , -1 -
8 class SingleHit {
9 public:
10         SingleHit() {
11                 sid = 0; pos = -1; conprb = 0.0; // for noise gene
12         }
13
14         //sid encodes dir here
15         SingleHit(int sid, int pos, double conprb = 0.0) {
16                 this->sid = sid;
17                 this->pos = pos;
18                 this->conprb = conprb;
19         }
20
21         bool isNoise() const { return sid == 0; }
22
23         //makes no sense for noise gene
24         int getDir() const { return sid < 0; }
25
26         int getSid() const { return abs(sid); }
27
28         int getPos() const { return pos; }
29
30         double getConPrb() const { return conprb; }
31
32         void setConPrb(double conprb) {
33             this->conprb = conprb;
34         }
35
36         bool read(std::istream&);
37         void write(std::ostream&);
38
39 protected:
40         int sid, pos; // sid encodes dir
41         double conprb; // conditional probability
42 };
43
44 bool SingleHit::read(std::istream& in) {
45         conprb = 0.0;
46         return (in>>sid>>pos);
47 }
48
49 void SingleHit::write(std::ostream& out) {
50         out<<" "<<sid<<" "<<pos;
51 }
52
53 #endif /* SINGLEHIT_H_ */
54
55
56