7df6e18265341f87a69fba808aa1f92f8ebca841 markd Wed Apr 15 13:39:42 2026 -0700 move copy of htslib diff --git src/htslib/htslib/vcfutils.h src/htslib/htslib/vcfutils.h deleted file mode 100644 index 82181b1bd7c..00000000000 --- src/htslib/htslib/vcfutils.h +++ /dev/null @@ -1,134 +0,0 @@ -/* vcfutils.h -- allele-related utility functions. - - Copyright (C) 2012, 2013, 2015 Genome Research Ltd. - - Author: Petr Danecek <pd3@sanger.ac.uk> - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#ifndef HTSLIB_VCFUTILS_H -#define HTSLIB_VCFUTILS_H - -#include "vcf.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct kbitset_t; - -/** - * bcf_trim_alleles() - remove ALT alleles unused in genotype fields - * @header: for access to BCF_DT_ID dictionary - * @line: VCF line obtain from vcf_parse1 - * - * Returns the number of removed alleles on success or negative - * on error: - * -1 .. some allele index is out of bounds - */ -int bcf_trim_alleles(const bcf_hdr_t *header, bcf1_t *line); - -/** - * bcf_remove_alleles() - remove ALT alleles according to bitmask @mask - * @header: for access to BCF_DT_ID dictionary - * @line: VCF line obtained from vcf_parse1 - * @mask: alleles to remove - * - * If you have more than 31 alleles, then the integer bit mask will - * overflow, so use bcf_remove_allele_set instead - */ -void bcf_remove_alleles(const bcf_hdr_t *header, bcf1_t *line, int mask); - -/** - * bcf_remove_allele_set() - remove ALT alleles according to bitset @rm_set - * @header: for access to BCF_DT_ID dictionary - * @line: VCF line obtained from vcf_parse1 - * @rm_set: pointer to kbitset_t object with bits set for allele - * indexes to remove - * - * Number=A,R,G INFO and FORMAT fields will be updated accordingly. - */ -void bcf_remove_allele_set(const bcf_hdr_t *header, bcf1_t *line, const struct kbitset_t *rm_set); - -/** - * bcf_calc_ac() - calculate the number of REF and ALT alleles - * @header: for access to BCF_DT_ID dictionary - * @line: VCF line obtained from vcf_parse1 - * @ac: array of length line->n_allele - * @which: determine if INFO/AN,AC and indv fields be used - * - * Returns 1 if the call succeeded, or 0 if the value could not - * be determined. - * - * The value of @which determines if existing INFO/AC,AN can be - * used (BCF_UN_INFO) and and if indv fields can be splitted - * (BCF_UN_FMT). - */ -int bcf_calc_ac(const bcf_hdr_t *header, bcf1_t *line, int *ac, int which); - - -/** - * bcf_gt_type() - determines type of the genotype - * @fmt_ptr: the GT format field as set for example by set_fmt_ptr - * @isample: sample index (starting from 0) - * @ial: index of the 1st non-reference allele (starting from 1) - * @jal: index of the 2nd non-reference allele (starting from 1) - * - * Returns the type of the genotype (one of GT_HOM_RR, GT_HET_RA, - * GT_HOM_AA, GT_HET_AA, GT_HAPL_R, GT_HAPL_A or GT_UNKN). If $ial - * is not NULL and the genotype has one or more non-reference - * alleles, $ial will be set. In case of GT_HET_AA, $ial is the - * position of the allele which appeared first in ALT. If $jal is - * not null and the genotype is GT_HET_AA, $jal will be set and is - * the position of the second allele in ALT. - */ -#define GT_HOM_RR 0 // note: the actual value of GT_* matters, used in dosage r2 calculation -#define GT_HOM_AA 1 -#define GT_HET_RA 2 -#define GT_HET_AA 3 -#define GT_HAPL_R 4 -#define GT_HAPL_A 5 -#define GT_UNKN 6 -int bcf_gt_type(bcf_fmt_t *fmt_ptr, int isample, int *ial, int *jal); - -static inline int bcf_acgt2int(char c) -{ - if ( (int)c>96 ) c -= 32; - if ( c=='A' ) return 0; - if ( c=='C' ) return 1; - if ( c=='G' ) return 2; - if ( c=='T' ) return 3; - return -1; -} - -#define bcf_int2acgt(i) "ACGT"[i] - -/** - * bcf_ij2G() - common task: allele indexes to Number=G index (diploid) - * @i,j: allele indexes, 0-based, i<=j - * - * Returns index to the Number=G diploid array - */ -#define bcf_ij2G(i, j) ((j)*((j)+1)/2+(i)) - -#ifdef __cplusplus -} -#endif - -#endif