bed文件必有3个字段,以及9个可选字段。
必有字段
1. chrom:染色体
2. start:起始位置
3. end:终止位置
需要注意的是,bed文件是0-base坐标系统,例如以下
1 6484955 6485369
表示的区间坐标实际上是 1号染色体的 [6484956,6485369) 区间
其他可选字段目前没有接触过
比如想判断1:101是否在bed区域
#include <htslib/tbx.h>
#include <htslib/faidx.h>
typedef struct{
htsFile *fp;
tbx_t *tbx;
hts_itr_t *itr;
kstring_t ks;
}bed_t;
bed_t *bedGZ;
bed_t *initBed(char *bedFile)
{
bed_t *b = (bed_t *)malloc(sizeof(bed_t));
b->fp = hts_open(bedFile,"r");
if(!b->fp) cerr << "cannot open bed file" << bedFile <<endl;
b->tbx = tbx_index_load(bedFile);
if(!b->tbx) cerr << "cannot open bed tbi file" << endl;
b->itr = NULL;
b->ks.s = NULL;
b->ks.m = b->