4272 |
24 Jan 23 |
peter |
1 |
#ifndef theplu_yat_omic_bam_region_ |
4272 |
24 Jan 23 |
peter |
2 |
#define theplu_yat_omic_bam_region_ |
4272 |
24 Jan 23 |
peter |
3 |
|
4272 |
24 Jan 23 |
peter |
// $Id$ |
4272 |
24 Jan 23 |
peter |
5 |
|
4272 |
24 Jan 23 |
peter |
6 |
/* |
4272 |
24 Jan 23 |
peter |
Copyright (C) 2023 Peter Johansson |
4272 |
24 Jan 23 |
peter |
8 |
|
4272 |
24 Jan 23 |
peter |
This file is part of the yat library, https://dev.thep.lu.se/yat |
4272 |
24 Jan 23 |
peter |
10 |
|
4272 |
24 Jan 23 |
peter |
The yat library is free software; you can redistribute it and/or |
4272 |
24 Jan 23 |
peter |
modify it under the terms of the GNU General Public License as |
4272 |
24 Jan 23 |
peter |
published by the Free Software Foundation; either version 3 of the |
4272 |
24 Jan 23 |
peter |
License, or (at your option) any later version. |
4272 |
24 Jan 23 |
peter |
15 |
|
4272 |
24 Jan 23 |
peter |
The yat library is distributed in the hope that it will be useful, |
4272 |
24 Jan 23 |
peter |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
4272 |
24 Jan 23 |
peter |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
4272 |
24 Jan 23 |
peter |
General Public License for more details. |
4272 |
24 Jan 23 |
peter |
20 |
|
4272 |
24 Jan 23 |
peter |
You should have received a copy of the GNU General Public License |
4272 |
24 Jan 23 |
peter |
along with yat. If not, see <https://www.gnu.org/licenses/>. |
4272 |
24 Jan 23 |
peter |
23 |
*/ |
4272 |
24 Jan 23 |
peter |
24 |
|
4275 |
25 Jan 23 |
peter |
// File htslib/hts.h below is using INT_MAX to #define HTS_POS_MAX, |
4275 |
25 Jan 23 |
peter |
// but older versions of htslib/hts.h (e.g. 1.10.2) does not include |
4275 |
25 Jan 23 |
peter |
// climits (or limits.h). In htslib 1.16 the file is included. |
4275 |
25 Jan 23 |
peter |
28 |
#include <climits> |
4275 |
25 Jan 23 |
peter |
29 |
|
4272 |
24 Jan 23 |
peter |
30 |
#include <htslib/hts.h> |
4272 |
24 Jan 23 |
peter |
31 |
|
4272 |
24 Jan 23 |
peter |
32 |
namespace theplu { |
4272 |
24 Jan 23 |
peter |
33 |
namespace yat { |
4272 |
24 Jan 23 |
peter |
34 |
namespace omic { |
4272 |
24 Jan 23 |
peter |
35 |
|
4272 |
24 Jan 23 |
peter |
36 |
/** |
4272 |
24 Jan 23 |
peter |
Class holds a region as defined by tid (chromosome), begin and end |
4272 |
24 Jan 23 |
peter |
coordinates. The region is 0-based, which means it is semi open such |
4272 |
24 Jan 23 |
peter |
that begin is included and end is not. |
4272 |
24 Jan 23 |
peter |
40 |
|
4272 |
24 Jan 23 |
peter |
\since New in yat 0.21 |
4272 |
24 Jan 23 |
peter |
42 |
*/ |
4272 |
24 Jan 23 |
peter |
43 |
class BamRegion |
4272 |
24 Jan 23 |
peter |
44 |
{ |
4272 |
24 Jan 23 |
peter |
45 |
public: |
4272 |
24 Jan 23 |
peter |
/// default constructor |
4272 |
24 Jan 23 |
peter |
47 |
BamRegion(void) = default; |
4272 |
24 Jan 23 |
peter |
48 |
|
4272 |
24 Jan 23 |
peter |
49 |
/** |
4272 |
24 Jan 23 |
peter |
\brief Constructor |
4272 |
24 Jan 23 |
peter |
51 |
*/ |
4272 |
24 Jan 23 |
peter |
52 |
explicit BamRegion(int tid, hts_pos_t begin=0, hts_pos_t end=HTS_POS_MAX); |
4272 |
24 Jan 23 |
peter |
53 |
|
4272 |
24 Jan 23 |
peter |
54 |
/** |
4272 |
24 Jan 23 |
peter |
\return chromosome ID |
4272 |
24 Jan 23 |
peter |
56 |
*/ |
4272 |
24 Jan 23 |
peter |
57 |
int& tid(void); |
4272 |
24 Jan 23 |
peter |
58 |
|
4272 |
24 Jan 23 |
peter |
59 |
/** |
4272 |
24 Jan 23 |
peter |
\return chromosome ID |
4272 |
24 Jan 23 |
peter |
61 |
*/ |
4272 |
24 Jan 23 |
peter |
62 |
const int& tid(void) const; |
4272 |
24 Jan 23 |
peter |
63 |
|
4272 |
24 Jan 23 |
peter |
64 |
/** |
4272 |
24 Jan 23 |
peter |
\return first position |
4272 |
24 Jan 23 |
peter |
66 |
*/ |
4272 |
24 Jan 23 |
peter |
67 |
hts_pos_t& begin(void); |
4272 |
24 Jan 23 |
peter |
68 |
|
4272 |
24 Jan 23 |
peter |
69 |
/** |
4272 |
24 Jan 23 |
peter |
\return first position |
4272 |
24 Jan 23 |
peter |
71 |
*/ |
4272 |
24 Jan 23 |
peter |
72 |
const hts_pos_t& begin(void) const; |
4272 |
24 Jan 23 |
peter |
73 |
|
4272 |
24 Jan 23 |
peter |
74 |
/** |
4272 |
24 Jan 23 |
peter |
\return end position |
4272 |
24 Jan 23 |
peter |
76 |
*/ |
4272 |
24 Jan 23 |
peter |
77 |
hts_pos_t& end(void); |
4272 |
24 Jan 23 |
peter |
78 |
|
4272 |
24 Jan 23 |
peter |
79 |
/** |
4272 |
24 Jan 23 |
peter |
\return end position |
4272 |
24 Jan 23 |
peter |
81 |
*/ |
4272 |
24 Jan 23 |
peter |
82 |
const hts_pos_t& end(void) const; |
4272 |
24 Jan 23 |
peter |
83 |
private: |
4272 |
24 Jan 23 |
peter |
84 |
int tid_; |
4272 |
24 Jan 23 |
peter |
85 |
hts_pos_t begin_; |
4272 |
24 Jan 23 |
peter |
86 |
hts_pos_t end_; |
4272 |
24 Jan 23 |
peter |
87 |
}; |
4272 |
24 Jan 23 |
peter |
88 |
|
4272 |
24 Jan 23 |
peter |
89 |
}}} |
4272 |
24 Jan 23 |
peter |
90 |
#endif |