NVBIO
Main Page
Modules
Classes
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
nvbio-aln-diff
alignment_dbg.cpp
Go to the documentation of this file.
1
/*
2
* nvbio
3
* Copyright (c) 2011-2014, NVIDIA CORPORATION. All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
7
* * Redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer.
9
* * Redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution.
12
* * Neither the name of the NVIDIA CORPORATION nor the
13
* names of its contributors may be used to endorse or promote products
14
* derived from this software without specific prior written permission.
15
*
16
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
* DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE FOR ANY
20
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
*/
27
28
#include <
nvbio-aln-diff/alignment.h
>
29
#include <zlib/zlib.h>
30
31
namespace
nvbio {
32
namespace
alndiff {
33
34
struct
DebugAlignmentStream
:
public
AlignmentStream
35
{
36
struct
Info
37
{
38
uint32
flag
;
39
uint32
ref_id
;
40
// 8-bytes
41
uint8
mate
;
42
uint8
mapQ
;
43
uint8
ed
;
44
uint8
pad
;
45
// 12-bytes
46
uint16
subs
:16;
47
uint8
ins
;
48
uint8
dels
;
49
// 16-bytes
50
uint8
mms
;
51
uint8
gapo
;
52
uint8
gape
;
53
uint8
has_second
;
54
// 20-bytes
55
int32
score
;
56
int32
sec_score
;
57
// 24-bytes
58
};
59
60
DebugAlignmentStream
(
const
char
* file_name)
61
{
62
m_file
=
gzopen
( file_name,
"rb"
);
63
}
64
65
// return if the stream is ok
66
//
67
bool
is_ok
() {
return
m_file
!= NULL; }
68
69
// get the next batch
70
//
71
uint32
next_batch
(
72
const
uint32
count,
73
Alignment
* batch)
74
{
75
uint32
n_read = 0;
76
77
Info
info;
78
79
while
(n_read < count)
80
{
81
Alignment
* aln = batch + n_read;
82
83
// clean the alignment
84
*aln =
Alignment
();
85
86
// read id
87
if
(
gzread
(
m_file
, &aln->
read_id
,
sizeof
(
uint32
) ) == 0)
88
break
;
89
90
// read length
91
gzread
(
m_file
, &aln->
read_len
,
sizeof
(
uint32
) );
92
93
// alignment position
94
gzread
(
m_file
, &aln->
pos
,
sizeof
(
uint32
) );
95
96
if
(aln->
pos
!=
uint32
(0))
97
{
98
gzread
(
m_file
, &info,
sizeof
(
Info
) );
99
100
aln->
flag
= info.
flag
;
101
aln->
ref_id
= info.
ref_id
;
102
aln->
mate
= info.
mate
;
103
aln->
score
= info.
score
;
104
aln->
mapQ
= info.
mapQ
;
105
aln->
ed
= info.
ed
;
106
aln->
subs
= info.
subs
;
107
aln->
ins
= info.
ins
;
108
aln->
dels
= info.
dels
;
109
aln->
n_mm
= info.
mms
;
110
aln->
n_gapo
= info.
gapo
;
111
aln->
n_gape
= info.
gape
;
112
aln->
has_second
= info.
has_second
;
113
aln->
sec_score
= info.
sec_score
;
114
}
115
116
++n_read;
117
}
118
return
n_read;
119
}
120
121
gzFile
m_file
;
122
};
123
124
AlignmentStream
*
open_dbg_file
(
const
char
* file_name)
125
{
126
return
new
DebugAlignmentStream
( file_name );
127
}
128
129
}
// alndiff namespace
130
}
// nvbio namespace
131
132
Generated on Wed Feb 25 2015 08:32:51 for NVBIO by
1.8.4