1 |
#ifndef ALIGN_STATUS_H |
2 |
#define ALIGN_STATUS_H |
3 |
|
4 |
#ifdef HAVE_CONFIG_H |
5 |
#include <config.h> |
6 |
#endif |
7 |
|
8 |
#include <stdint.h> |
9 |
#include <stdio.h> |
10 |
#include <stdlib.h> |
11 |
#include <string> |
12 |
#include <map> |
13 |
#include <vector> |
14 |
#include <cassert> |
15 |
#include <cstring> |
16 |
#include <seqan/sequence.h> |
17 |
#include <bam/sam.h> |
18 |
#include "common.h" |
19 |
#include "junctions.h" |
20 |
|
21 |
|
22 |
using namespace std; |
23 |
|
24 |
|
25 |
/** |
26 |
* The main purpose of this struct is to provide a |
27 |
* (fairly primitive) method for ranking competing alignments |
28 |
* for a read. In general, |
29 |
* continguous > spliced > in/dels |
30 |
* Ties are broken with the number of mismatches |
31 |
*/ |
32 |
struct AlignStatus |
33 |
{ |
34 |
|
35 |
|
36 |
private: |
37 |
/** |
38 |
* Is this alignment free of indels. Note, if there is no alignment |
39 |
* this should still be false. |
40 |
*/ |
41 |
bool _indelFreeAlignment; |
42 |
|
43 |
/** |
44 |
* Is this alignment free of unannotated splices? Note, if there is no alignment |
45 |
* this should still be false |
46 |
*/ |
47 |
bool _unannotatedSpliceFreeAlignment; |
48 |
|
49 |
/** |
50 |
* Is there an alignment? |
51 |
*/ |
52 |
bool _aligned; |
53 |
|
54 |
public: |
55 |
AlignStatus(); |
56 |
AlignStatus(const BowtieHit& bh, const JunctionSet& gtf_junctions); |
57 |
|
58 |
bool operator<(const AlignStatus& rhs) const; |
59 |
bool operator==(const AlignStatus& rhs) const; |
60 |
bool operator!=(const AlignStatus& rhs) const; |
61 |
}; |
62 |
|
63 |
#endif |