/*
     Description: 解析后的一些参数，文件，数据等，主要供线程用，每个线程一个实例

     Copyright : All right reserved by ICT

     Author : Zhang Zhonghai
     Date : 2025/12/29
*/
#pragma once

#include <htslib/faidx.h>
#include <htslib/sam.h>

#include <vector>

#include "util/vcf_parser.h"
#include "recal_tables.h"

using std::vector;

// 解析后的一些参数，文件，数据等
struct AuxVar {
    const static int REF_CONTEXT_PAD = 3;                 // 需要做一些填充
    const static int REFERENCE_HALF_WINDOW_LENGTH = 150;  // 需要额外多取出一些ref序列，防止边界效应

    sam_hdr_t* header = nullptr;  // bam header
    faidx_t* faidx = nullptr;     // reference index
    char* ref_seq = nullptr;      // reference sequence
    int ref_len = 0;              // reference sequence length
    int offset = 0;               // 在要求的ref序列两边，多余取出的碱基数量

    vector<VCFParser> vcfArr;  // 从vcf中获取已知位点

    RecalTables recalTables; // 每个线程对应一个recal tables
};