40665f857785f2b82af4f5de26642d2be9986d1e angie Thu Dec 15 14:14:31 2016 -0800 If null variants (no_sequence_alteration) are not filtered out, then show them without bothering to intersect with genes. This avoids wasted time and redundant output. diff --git src/hg/inc/gpFx.h src/hg/inc/gpFx.h index 03892b4..68972dd 100644 --- src/hg/inc/gpFx.h +++ src/hg/inc/gpFx.h @@ -1,67 +1,70 @@ /* gpFx --- routines to calculate the effect of variation on a genePred */ /* Copyright (C) 2013 The Regents of the University of California * See README in this or parent directory for licensing information. */ #ifndef GPFX_H #define GPFX_H #include "variant.h" #include "soTerm.h" // a single gpFx variant effect call struct gpFx { struct gpFx *next; char *allele; // Allele sequence used to determine functional effect char *transcript; // ID of feature affected by this call uint soNumber; // Sequence Ontology Number of effect enum detailType // This tells which value to use for 'union details' below { unknown, // Catch uninitialized (except for needMem) use codingChange, // (non)synonymous variant, deletions in CDS nonCodingExon, // variant in non-coding gene or UTR of coding gene intron, // intron_variant none // variant for which soNumber is enough (e.g. up/downstream) } detailType; union details { struct codingChange // (non)synonymous variant, deletions in CDS { uint exonNumber; // 0-based exon number (from genePred, beware false "introns") uint cDnaPosition; // offset of variant in transcript cDNA uint cdsPosition; // offset of variant from transcript's cds start uint pepPosition; // offset of variant in translated product char *aaOld; // peptides, before change by variant (starting at pepPos) char *aaNew; // peptides, changed by variant char *codonOld; // codons, before change by variant (starting at cdsPos) char *codonNew; // codons, changed by variant } codingChange; struct nonCodingExon // variant in non-coding gene or UTR of coding gene { uint exonNumber; // 0-based exon number (from genePred, beware false "introns") uint cDnaPosition; // offset of variant in transcript cDNA } nonCodingExon; struct intron // intron_variant { uint intronNumber; // 0-based intron number (from genePred, beware false "introns") } intron; } details; }; struct gpFx *gpFxPredEffect(struct variant *variant, struct genePred *pred, struct dnaSeq *transcriptSequence, struct lm *lm); // return the predicted effect(s) of a variation list on a genePred // number of bases up or downstream that we flag #define GPRANGE 5000 boolean hasAltAllele(struct allele *alleles); /* Return TRUE if alleles include at least one non-reference allele. */ char *firstAltAllele(struct allele *alleles); /* Ensembl always reports an alternate allele, even if that allele is not being used * to calculate any consequence. When allele doesn't really matter, just use the * first alternate allele that is given. */ +struct gpFx *gpFxNoVariation(struct variant *variant, struct lm *lm); +/* Return a gpFx with SO term no_sequence_alteration, for VCF rows that aren't really variants. */ + #endif /* GPFX_H */