GenomicsDB queries overlapping deletions cause core dump
closed | Created 2018-11-26 | Last updated 2019-04-22| Posted by ldgauthier | See in Github


GenomicsDB PRIORITY_HIGH bug


When a 16bp deletion such as
chr7 65074861 . CCAGTCCTACACCTCGT C,<NON_REF> 54.52 . is imported into GenomicsDB, a query at a position inside the deletion, such as position chr7:65074873, causes a core dump.

The CombineGVCFs output looks like:

#CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO    FORMAT  CHMI_CHMI3_Nex1 NA12891 NA12892 NA17-308        NA19238 NA20845 NA20846 NA20847 NA20849 NA20850 NA20851 NA20852 NA20853 NA20854 NA20856 NA20858 NA20859 NA20861 NA2086
chr7    65074872        .       C       *,<NON_REF>     .       .       DP=2    GT:AD:DP:GQ:PGT:PID:PL:SB       ./.     ./.:0,2,0:2:6:0|1:65074846_T_C:90,6,0,90,6,90:0,0,2,0   ./.     ./.     ./.     ./.     ./.     ./.     ./.     ./.
chr7    65074873        .       C       *,<NON_REF>     .       .       DP=2    GT:AD:DP:GQ:MIN_DP:PGT:PID:PL:SB        ./.:.:0:0:0:.:.:0,0,0,0,0,0     ./.:0,2,0:2:6:.:0|1:65074846_T_C:90,6,0,90,6,90:0,0,2,0 ./.:.:1:0:0:.:.:0,0,0,0,0,0
chr7    65074874        .       T       *,<NON_REF>     .       .       DP=2    GT:AD:DP:GQ:MIN_DP:PGT:PID:PL:SB        ./.:.:0:0:0:.:.:0,0,0,0,0,0     ./.:0,2,0:2:6:.:0|1:65074846_T_C:90,6,0,90,6,90:0,0,2,0 ./.:.:1:0:0:.:.:0,0,0,0,0,0
chr7    65074875        .       C       *,<NON_REF>     .       .       DP=2    GT:AD:DP:GQ:MIN_DP:PGT:PID:PL:SB        ./.:.:0:0:0:.:.:0,0,0,0,0,0     ./.:0,2,0:2:6:.:0|1:65074846_T_C:90,6,0,90,6,90:0,0,2,0 ./.:.:1:0:0:.:.:0,0,0,0,0,0
chr7    65074876        .       G       *,<NON_REF>     .       .       DP=2    GT:AD:DP:GQ:MIN_DP:PGT:PID:PL:SB        ./.:.:0:0:0:.:.:0,0,0,0,0,0     ./.:0,2,0:2:6:.:0|1:65074846_T_C:90,6,0,90,6,90:0,0,2,0 ./.:.:1:0:0:.:.:0,0,0,0,0,0
chr7    65074877        .       T       *,<NON_REF>     .       .       DP=2    GT:AD:DP:GQ:MIN_DP:PGT:PID:PL:SB        ./.:.:0:0:0:.:.:0,0,0,0,0,0     ./.:0,2,0:2:6:.:0|1:65074846_T_C:90,6,0,90,6,90:0,0,2,0 ./.:.:1:0:0:.:.:0,0,0,0,0,0
chr7    65074878        .       G       <NON_REF>       .       .       END=65074923    GT:DP:GQ:MIN_DP:PL      ./.:0:0:0:0,0,0 ./.:2:0:0:0,0,0 ./.:1:0:0:0,0,0 ./.:2:0:0:0,0,0 ./.:0:0:0:0,0,0 ./.:0:0:0:0,0,0 ./.:0:0:0:0,0,0 ./.:1:0:0:0,0,

Where the second genotype column with the 65074846_T_C tag is for NA12891, which is the sample that has the deletion. I suspect that the GATK engine logic is smart enough to look upstream since those genotyped get annotations. This is admittedly sort of an ambiguous case, but GDB certainly should be able to power through.

The stack trace looks like this:

Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libtiledbgenomicsdb4636568691140868757.dylib+0x1a2cf]  BroadCombinedGVCFOperator::handle_deletions(Variant&, VariantQueryConfig const&)+0xa7f
C  [libtiledbgenomicsdb4636568691140868757.dylib+0x18f12]  BroadCombinedGVCFOperator::operate(Variant&, VariantQueryConfig const&)+0x22
C  [libtiledbgenomicsdb4636568691140868757.dylib+0x59d98]  VariantQueryProcessor::handle_gvcf_ranges(std::__1::priority_queue<VariantCall*, std::__1::vector<VariantCall*, std::__1::allocator<VariantCall*> >, EndCmpVariantCallStruct>&, VariantQueryConfig const&, Variant&, SingleVariantOperatorBase&, long long&, long long, bool, unsigned long long&, GTProfileStats*) const+0xa8
C  [libtiledbgenomicsdb4636568691140868757.dylib+0x5a8e2]  VariantQueryProcessor::scan_handle_cell(VariantQueryConfig const&, unsigned int, Variant&, SingleVariantOperatorBase&, BufferVariantCell const&, std::__1::priority_queue<VariantCall*, std::__1::vector<VariantCall*, std::__1::allocator<VariantCall*> >, EndCmpVariantCallStruct>&, std::__1::vector<VariantCall*, std::__1::allocator<VariantCall*> >&, long long&, long long&, unsigned long long&, bool, GTProfileStats*) const+0xa2
C  [libtiledbgenomicsdb4636568691140868757.dylib+0x5a436]  VariantQueryProcessor::scan_and_operate(int, VariantQueryConfig const&, SingleVariantOperatorBase&, unsigned int, bool, VariantQueryProcessorScanState*) const+0x516
C  [libtiledbgenomicsdb4636568691140868757.dylib+0xbb885]  GenomicsDBBCFGenerator::GenomicsDBBCFGenerator(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*, int, int, int, unsigned long, unsigned long, char const*, bool, bool, bool)+0x5c5
C  [libtiledbgenomicsdb4636568691140868757.dylib+0xbb2ad]  GenomicsDBBCFGenerator::GenomicsDBBCFGenerator(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*, int, int, int, unsigned long, unsigned long, char const*, bool, bool, bool)+0x3d
C  [libtiledbgenomicsdb4636568691140868757.dylib+0xfad71]  Java_com_intel_genomicsdb_reader_GenomicsDBQueryStream_jniGenomicsDBInit+0x171
j  com.intel.genomicsdb.reader.GenomicsDBQueryStream.jniGenomicsDBInit(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIJJZZZZ)J+0
j  com.intel.genomicsdb.reader.GenomicsDBQueryStream.<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIJJZZZZ)V+32
j  com.intel.genomicsdb.reader.GenomicsDBQueryStream.<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIJJZZ)V+20
j  com.intel.genomicsdb.reader.GenomicsDBQueryStream.<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIZ)V+18
j  com.intel.genomicsdb.reader.GenomicsDBFeatureIterator.setNextSourceAsCurrent()V+96
j  com.intel.genomicsdb.reader.GenomicsDBFeatureIterator.<init>(Ljava/lang/String;Ljava/util/List;Lhtsjdk/tribble/FeatureCodecHeader;Lhtsjdk/tribble/FeatureCodec;Ljava/lang/String;Ljava/util/OptionalInt;Ljava/util/OptionalInt;Ljava/util/Optional;)V+122
j  com.intel.genomicsdb.reader.GenomicsDBFeatureReader.query(Ljava/lang/String;II)Lhtsjdk/tribble/CloseableTribbleIterator;+67
j  org.broadinstitute.hellbender.engine.FeatureIntervalIterator.queryNextInterval()Z+95
j  org.broadinstitute.hellbender.engine.FeatureIntervalIterator.loadNextFeature()Lhtsjdk/tribble/Feature;+20
j  org.broadinstitute.hellbender.engine.FeatureIntervalIterator.loadNextNovelFeature()Lhtsjdk/tribble/Feature;+1
j  org.broadinstitute.hellbender.engine.FeatureIntervalIterator.next()Lhtsjdk/tribble/Feature;+24
j  org.broadinstitute.hellbender.engine.FeatureIntervalIterator.next()Ljava/lang/Object;+1

Return to top