forked from ding-lab/msisensor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
bamreader.h
130 lines (115 loc) · 2.97 KB
/
bamreader.h
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/*
* bamreader.h for MSIsensor
* Copyright (c) 2013 Beifang Niu && Kai Ye WUGSC All Rights Reserved.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef BAMREADER_H
#define BAMREADER_H
#include "map"
#include "vector"
// Samtools header files
#include "bam.h"
#include "sam.h"
#include "kstring.h"
#include "kseq.h"
#include "khash.h"
#include "ksort.h"
const unsigned g_SpacerBeforeAfter = 10000000;
struct flags_hit {
flags_hit() {
mapped = false;
unique = false;
sw = false;
edits = 0;
suboptimal = false;
}
bool mapped;
bool unique;
bool sw;
int edits;
bool suboptimal;
};
/* initial from kai
// struct of grab reads
struct SPLIT_READ
{
SPLIT_READ()
{
FragName = "";
Name = "";
Mapped = true;
ReadSeq = "";
MatchedD = 0;
MatchedRelPos = 0;
MS = 0;
Tag = "";
}
std::string FragName;
std::string Name;
bool Mapped;
char MatchedD; // rename AnchorStrand?
unsigned int MatchedRelPos;
short MS; // rename MappingQuality ?
std::string Tag; // rename SampleName ?
friend std::ostream& operator<<(std::ostream& os, const SPLIT_READ& splitRead);
std::string ReadSeq;
};
*/
struct SPLIT_READ {
SPLIT_READ() {
ReadSeq = "";
Mapped = true;
MatchedRelPos = 0;
}
std::string ReadSeq;
bool Mapped;
unsigned int MatchedRelPos;
};
struct SupportPerSample {
int NumPlus;
int NumMinus;
int NumUPlus;
int NumUMinus;
SupportPerSample() {
NumPlus = 0;
NumMinus = 0;
NumUPlus = 0;
NumUMinus = 0;
}
};
// read processing
struct HomoSiteforBam {
HomoSiteforBam(){
length = 0;
type = '\0';
front_kmer = "";
end_kmer = "";
}
unsigned int length;
std::string front_kmer;
std::string end_kmer;
char type;
std::vector< unsigned int > distribution;
};
void build_record( const bam1_t * mapped_read,
void *data,
const flags_hit *flag_current_read);
bool ReadInBamReads( const char *bam_path,
const std::string & FragName,
unsigned start,
unsigned end,
std::vector < SPLIT_READ > & AllReads,
std::string Tag);
#endif /* READER_H */