-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsex_ploidy_map.h
72 lines (55 loc) · 2.3 KB
/
sex_ploidy_map.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
/* The MIT License
Copyright (c) 2014 Adrian Tan <atks@umich.edu> and Hyun Min Kang <hmkang@umich.edu>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#ifndef SEX_PLOIDY_MAP_H
#define SEX_PLOIDY_MAP_H
extern "C" {
#include "htslib/kseq.h"
#include "htslib/vcf.h"
}
#include "qgenlib/hts_utils.h"
#define PLOIDY_TYPE_AUTOSOME 0
#define PLOIDY_TYPE_X 1
#define PLOIDY_TYPE_Y 2
#define PLOIDY_TYPE_MT 3
class sex_ploidy_map {
public:
std::string x_label;
std::string y_label;
std::string mt_label;
int32_t x_rid;
int32_t y_rid;
int32_t mt_rid;
int32_t x_start;
int32_t x_stop;
std::map<std::string,int> mSex; // sample ID to sex info
std::vector<int32_t> vSex; // vector of sex info
int32_t n_males;
int32_t prev_ploidy_type;
int8_t* ploidies;
// setters
sex_ploidy_map(std::string xLabel, std::string yLabel, std::string mtLabel, int32_t xStart, int32_t xStop) :
x_label(xLabel), y_label(yLabel), mt_label(mtLabel), x_start(xStart), x_stop(xStop), n_males(0), prev_ploidy_type(-1), ploidies(NULL) {}
~sex_ploidy_map() { if ( ploidies ) delete [] ploidies; }
int32_t set_rids_from_hdr(bcf_hdr_t* hdr);
int32_t load_sex_map_file(const char* filename, bcf_hdr_t* hdr);
// getters
int8_t* get_ploidies(bcf1_t* v);
int32_t get_ploidy_type(bcf1_t* v);
};
#endif