NVBIO
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mapping.h
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 
31 
32 #pragma once
33 
41 #include <nvbio/io/utils.h>
47 #include <nvbio/basic/algorithms.h>
48 
49 namespace nvbio {
50 namespace bowtie2 {
51 namespace cuda {
52 
55 
74 
77 
81 void gather_ranges(
82  const uint32 count,
83  const uint32 n_reads,
84  SeedHitDequeArrayDeviceView hits,
85  const uint32* hit_counts_scan,
86  uint64* out_ranges);
87 
91 void map_whole_read(
92  const ReadsDef::type& read_batch,
93  const FMIndexDef::type fmi,
94  const FMIndexDef::type rfmi,
96  uint8* reseed,
97  SeedHitDequeArrayDeviceView hits,
98  const ParamsPOD params,
99  const bool fw,
100  const bool rc);
101 
106 void map_exact(
107  const ReadsDef::type& read_batch,
108  const FMIndexDef::type fmi,
109  const FMIndexDef::type rfmi,
110  const uint32 retry,
112  uint8* reseed,
113  SeedHitDequeArrayDeviceView hits,
114  const ParamsPOD params,
115  const bool fw,
116  const bool rc);
117 
121 void map_exact(
122  const ReadsDef::type& read_batch,
123  const FMIndexDef::type fmi,
124  const FMIndexDef::type rfmi,
125  SeedHitDequeArrayDeviceView hits,
126  const uint2 seed_range,
127  const ParamsPOD params,
128  const bool fw,
129  const bool rc);
130 
135 void map_approx(
136  const ReadsDef::type& read_batch,
137  const FMIndexDef::type fmi,
138  const FMIndexDef::type rfmi,
139  const uint32 retry,
141  uint8* reseed,
142  SeedHitDequeArrayDeviceView hits,
143  const ParamsPOD params,
144  const bool fw,
145  const bool rc);
146 
150 void map_approx(
151  const ReadsDef::type& read_batch,
152  const FMIndexDef::type fmi,
153  const FMIndexDef::type rfmi,
154  SeedHitDequeArrayDeviceView hits,
155  const uint2 seed_range,
156  const ParamsPOD params,
157  const bool fw,
158  const bool rc);
159 
163 void map(
164  const ReadsDef::type& read_batch,
165  const FMIndexDef::type fmi,
166  const FMIndexDef::type rfmi,
167  const uint32 retry,
169  uint8* reseed,
170  SeedHitDequeArrayDeviceView hits,
171  const ParamsPOD params,
172  const bool fw,
173  const bool rc);
174 
177 
178 } // namespace cuda
179 } // namespace bowtie2
180 } // namespace nvbio