aboutsummaryrefslogtreecommitdiff
path: root/qidx.h
diff options
context:
space:
mode:
Diffstat (limited to 'qidx.h')
-rw-r--r--qidx.h70
1 files changed, 70 insertions, 0 deletions
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 <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 */