diff options
author | flu0r1ne <flu0r1ne@flu0r1ne.net> | 2022-10-31 05:42:30 -0500 |
---|---|---|
committer | flu0r1ne <flu0r1ne@flu0r1ne.net> | 2022-10-31 05:42:30 -0500 |
commit | b164ac63745e307bfef009400fc3191a27f7c96c (patch) | |
tree | 61795b4d6b5e623500311585b526a75d5157ca17 /qidx.h | |
parent | 20e52f326cdf1b6c2ca9b2c0b5be07637d9196d2 (diff) | |
download | qidx-b164ac63745e307bfef009400fc3191a27f7c96c.tar.xz qidx-b164ac63745e307bfef009400fc3191a27f7c96c.zip |
restructure library
Diffstat (limited to 'qidx.h')
-rw-r--r-- | qidx.h | 70 |
1 files changed, 70 insertions, 0 deletions
@@ -0,0 +1,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 */ |