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
|
#ifndef _QIDX
#define _QIDX
#include <htslib/hts.h>
#include <stdbool.h>
// @abstract Structure representing an unique alignment and virtual file pointer
// @field tid chromosome ID
// @field pos 0-based leftmost coordinate
// @field vptr virtual pointer
typedef struct {
uint32_t tid;
uint32_t pos;
uint64_t vptr;
} aln_spec_t;
// @abstract Structure representing all alignments by queryname
// @field qname queryname (name for the given read)
// @field n_alns number of alignments
// @field alns array with alignments structures
typedef struct {
char * qname;
uint16_t n_alns;
aln_spec_t * alns;
} qidx_record_t;
typedef enum {
QIDX_OK = 0,
QIDX_ITER_DONE,
QIDX_NO_MEM,
QIDX_NO_BAM_HDR,
QIDX_BAM_READ_FAILURE,
QIDX_REC_ITER_FAILURE,
QIDX_NOT_SORTED,
QIDX_BUCKET_MAX_SIZE_EXCEEDED,
QIDX_MAP_FAIL,
QIDX_IO_FAIL,
QIDX_FAILED_TO_OPEN_BAMFILE,
QIDX_FAILED_TO_OPEN_INDEX_FILE,
QIDX_INVALID_VERSION,
QIDX_INVALID_MAGIC,
} qidx_err_t;
bool qidx_errno(qidx_err_t err);
char const * qidx_strerr(qidx_err_t err);
#define QIDX_MAGIC 0x5d1de6b4
#define QIDX_VERSION 1
struct qidx_fp;
typedef struct qidx_fp qidx_fp_t;
qidx_err_t qidx_open(qidx_fp_t ** fp, int fd);
qidx_err_t qidx_create(qidx_fp_t ** fp, int fd, uint32_t _n_buckets,
uint32_t max_bucket_size);
qidx_err_t qidx_close(qidx_fp_t * fp);
qidx_err_t qidx_create_index3(htsFile * fp, int fd, qidx_fp_t ** q_fp,
uint32_t n_buckets, uint32_t max_bucket_size);
qidx_err_t qidx_create_index2(htsFile * fp, int fd, qidx_fp_t ** q_fp,
double soft_limit, double z, uint32_t n_buckets, uint32_t max_bucket_size);
qidx_err_t qidx_create_index1(char const * bamfile, char const * indexfile, uint32_t n_buckets, uint32_t max_bucket_size);
qidx_err_t qidx_create_index(char const * bamfile, char const * indexfile);
// DO NOT USE
qidx_err_t qidx_search_index(char const * indexfile,
char const * bamfile, char const * qname);
#endif /* ifndef _QIDX */
|