0
|
1 #ifndef GLF_H_
|
|
2 #define GLF_H_
|
|
3
|
|
4 typedef struct {
|
|
5 unsigned char ref_base:4, dummy:4; /** "XACMGRSVTWYHKDBN"[ref_base] gives the reference base */
|
|
6 unsigned char max_mapQ; /** maximum mapping quality */
|
|
7 unsigned char lk[10]; /** log likelihood ratio, capped at 255 */
|
|
8 unsigned min_lk:8, depth:24; /** minimum lk capped at 255, and the number of mapped reads */
|
|
9 } glf1_t;
|
|
10
|
|
11 #include <stdint.h>
|
|
12 #include "bgzf.h"
|
|
13 typedef BGZF *glfFile;
|
|
14
|
|
15 #define GLF3_RTYPE_END 0
|
|
16 #define GLF3_RTYPE_SUB 1
|
|
17 #define GLF3_RTYPE_INDEL 2
|
|
18
|
|
19 typedef struct {
|
|
20 uint8_t ref_base:4, rtype:4; /** "XACMGRSVTWYHKDBN"[ref_base] gives the reference base */
|
|
21 uint8_t rms_mapQ; /** RMS mapping quality */
|
|
22 uint8_t lk[10]; /** log likelihood ratio, capped at 255 */
|
|
23 uint32_t min_lk:8, depth:24; /** minimum lk capped at 255, and the number of mapped reads */
|
|
24 int32_t offset; /** the first base in a chromosome has offset zero. */
|
|
25 // for indel (lkHom1, lkHom2 and lkHet are the first three elements in lk[10])
|
|
26 int16_t indel_len[2];
|
|
27 int32_t max_len; // maximum indel len; will be modified by glf3_read1()
|
|
28 char *indel_seq[2];
|
|
29 } glf3_t;
|
|
30
|
|
31 typedef struct {
|
|
32 int32_t l_text;
|
|
33 uint8_t *text;
|
|
34 } glf3_header_t;
|
|
35
|
|
36 #ifdef __cplusplus
|
|
37 extern "C" {
|
|
38 #endif
|
|
39
|
|
40 #define glf3_init1() ((glf3_t*)calloc(1, sizeof(glf3_t)))
|
|
41 #define glf3_destroy1(g3) do { free((g3)->indel_seq[0]); free((g3)->indel_seq[1]); free(g3); } while (0)
|
|
42
|
|
43 glf3_header_t *glf3_header_init();
|
|
44 glf3_header_t *glf3_header_read(glfFile fp);
|
|
45 void glf3_header_write(glfFile fp, const glf3_header_t *h);
|
|
46 void glf3_header_destroy(glf3_header_t *h);
|
|
47 char *glf3_ref_read(glfFile fp, int *len);
|
|
48 void glf3_ref_write(glfFile fp, const char *name, int len);
|
|
49 int glf3_write1(glfFile fp, const glf3_t *g3);
|
|
50 int glf3_read1(glfFile fp, glf3_t *g3);
|
|
51
|
|
52 #ifdef __cplusplus
|
|
53 }
|
|
54 #endif
|
|
55
|
|
56 #endif
|