38bc9e01ce6e7b22f0533c6624a64a17fd6c7bff angie Fri Sep 27 17:20:54 2013 -0700 Major restructuring of gpFx.c, to accomodate large deletions thatcan knock out entire exons. Now, instead of iterating through exons and building a new genePred along with a sequence that has one exon's modification, we project the variant start and end onto cDNA and CDS coords up front. Then there is only one modification to make per allele, and in fact we only care about the actual modification when there's a CDS change. A new SO term, exon_loss, has been incorporated into gpFx and hgVai's/annoGratorGpVar's filtering. fixes #11771 diff --git src/lib/vcf.c src/lib/vcf.c index 39178e2..9a5aecf 100644 --- src/lib/vcf.c +++ src/lib/vcf.c @@ -1104,30 +1104,30 @@ allStartSame = FALSE; int offset = allStartSame ? 1 : 0; if (refAllele[offset] == '\0') dyStringAppendC(dy, '-'); else dyStringAppend(dy, refAllele+offset); // VCF alternate alleles are comma-separated, make them /-separated: altAlleles = words[4]; if (isNotEmpty(altAlleles) && differentString(altAlleles, ".")) { // Now construct the string: while ((p = strchr(altAlleles, ',')) != NULL) { dyStringAppendC(dy, '/'); int len = p - altAlleles - offset; - if (len == 0) + if (len == 0 || startsWith("<DEL>", altAlleles+offset)) dyStringAppendC(dy, '-'); else dyStringAppendN(dy, altAlleles+offset, len); altAlleles = p+1; } dyStringAppendC(dy, '/'); int len = strlen(altAlleles) - offset; - if (len == 0) + if (len == 0 || startsWith("<DEL>", altAlleles+offset)) dyStringAppendC(dy, '-'); else dyStringAppendN(dy, altAlleles+offset, len); } return dy->string; }