From b164ac63745e307bfef009400fc3191a27f7c96c Mon Sep 17 00:00:00 2001 From: flu0r1ne Date: Mon, 31 Oct 2022 05:42:30 -0500 Subject: restructure library --- qidx.h | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 qidx.h (limited to 'qidx.h') diff --git a/qidx.h b/qidx.h new file mode 100644 index 0000000..fdc1046 --- /dev/null +++ b/qidx.h @@ -0,0 +1,70 @@ +#ifndef _QIDX +#define _QIDX + +#include +#include + +// @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 */ -- cgit v1.2.3