Skip to content

Commit 7d3eeec

Browse files
pd3daviesrob
authored andcommitted
Prevent empty FORMAT fields and output ":.:" instead of "::"
1 parent 7288638 commit 7d3eeec

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

vcfutils.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -747,7 +747,7 @@ int bcf_remove_allele_set(const bcf_hdr_t *header, bcf1_t *line, const struct kb
747747
nnew = nR_new;
748748
}
749749

750-
#define BRANCH(type_t,is_vector_end) \
750+
#define BRANCH(type_t,is_vector_end,set_missing) \
751751
{ \
752752
for (j=0; j<line->n_sample; j++) \
753753
{ \
@@ -757,7 +757,12 @@ int bcf_remove_allele_set(const bcf_hdr_t *header, bcf1_t *line, const struct kb
757757
int k_src, k_dst = 0; \
758758
for (k_src=0; k_src<nori; k_src++) \
759759
{ \
760-
if ( is_vector_end ) { memcpy(ptr_dst+k_dst, ptr_src+k_src, size); break; } \
760+
if ( is_vector_end ) \
761+
{ \
762+
if ( k_dst ) memcpy(ptr_dst+k_dst, ptr_src+k_src, size); \
763+
else set_missing; \
764+
break; \
765+
} \
761766
if ( kbs_exists(rm_set, k_src+inc) ) continue; \
762767
memcpy(ptr_dst+k_dst, ptr_src+k_src, size); \
763768
k_dst++; \
@@ -766,8 +771,8 @@ int bcf_remove_allele_set(const bcf_hdr_t *header, bcf1_t *line, const struct kb
766771
}
767772
switch (type)
768773
{
769-
case BCF_HT_INT: BRANCH(int32_t,ptr_src[k_src]==bcf_int32_vector_end); break;
770-
case BCF_HT_REAL: BRANCH(float,bcf_float_is_vector_end(ptr_src[k_src])); break;
774+
case BCF_HT_INT: BRANCH(int32_t,ptr_src[k_src]==bcf_int32_vector_end,ptr_dst[k_dst]=bcf_int32_missing); break;
775+
case BCF_HT_REAL: BRANCH(float,bcf_float_is_vector_end(ptr_src[k_src]),bcf_float_set_missing(ptr_dst[k_dst])); break;
771776
}
772777
#undef BRANCH
773778
}

0 commit comments

Comments
 (0)