X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=glf.h;h=12e54002481b7b1edf5e4e6a76721e354253e63c;hb=50706bea83d8a1518485283876333279f4ae7137;hp=af72a48f95385635a09ee692138969acb1c8cfde;hpb=635998cfe030da5f3dbec42a6daa3ca82fa5c871;p=samtools.git diff --git a/glf.h b/glf.h index af72a48..12e5400 100644 --- a/glf.h +++ b/glf.h @@ -12,33 +12,42 @@ typedef struct { #include "bgzf.h" typedef BGZF *glfFile; -#define GLF_TYPE_NORMAL 0 -#define GLF_TYPE_INDEL 1 -#define GLF_TYPE_END 15 +#define GLF3_RTYPE_END 0 +#define GLF3_RTYPE_SUB 1 +#define GLF3_RTYPE_INDEL 2 typedef struct { - unsigned char ref_base:4, type:4; /** "XACMGRSVTWYHKDBN"[ref_base] gives the reference base */ - unsigned char max_mapQ; /** maximum mapping quality */ - unsigned char lk[10]; /** log likelihood ratio, capped at 255 */ - unsigned min_lk:8, depth:24; /** minimum lk capped at 255, and the number of mapped reads */ - unsigned pos; /** this is ***ZERO-BASED*** coordinate */ -} glf2_t; + uint8_t ref_base:4, rtype:4; /** "XACMGRSVTWYHKDBN"[ref_base] gives the reference base */ + uint8_t rms_mapQ; /** RMS mapping quality */ + uint8_t lk[10]; /** log likelihood ratio, capped at 255 */ + uint32_t min_lk:8, depth:24; /** minimum lk capped at 255, and the number of mapped reads */ + int32_t offset; /** the first base in a chromosome has offset zero. */ + // for indel (lkHom1, lkHom2 and lkHet are the first three elements in lk[10]) + int16_t indel_len[2]; + int32_t max_len; // maximum indel len; will be modified by glf3_read1() + char *indel_seq[2]; +} glf3_t; typedef struct { int32_t l_text; uint8_t *text; -} glf_header_t; +} glf3_header_t; #ifdef __cplusplus extern "C" { #endif - glf_header_t *glf_header_init(); - glf_header_t *glf_header_read(glfFile fp); - void glf_header_write(glfFile fp, const glf_header_t *h); - void glf_header_destroy(glf_header_t *h); - char *glf_ref_read(glfFile fp); - void glf_ref_write(glfFile fp, const char *str); +#define glf3_init1() ((glf3_t*)calloc(1, sizeof(glf3_t))) +#define glf3_destroy1(g3) do { free((g3)->indel_seq[0]); free((g3)->indel_seq[1]); free(g3); } while (0) + + glf3_header_t *glf3_header_init(); + glf3_header_t *glf3_header_read(glfFile fp); + void glf3_header_write(glfFile fp, const glf3_header_t *h); + void glf3_header_destroy(glf3_header_t *h); + char *glf3_ref_read(glfFile fp, int *len); + void glf3_ref_write(glfFile fp, const char *name, int len); + int glf3_write1(glfFile fp, const glf3_t *g3); + int glf3_read1(glfFile fp, glf3_t *g3); #ifdef __cplusplus }