Details
Here's the chain of behavior for large sequence insertions (≥1000 bp alt length):
- Routing to the structural variant annotator (JannovarVariantAnnotator.java:95)
return (variant.isSymbolic() || Math.abs(variant.changeLength()) >= 1000)
? structuralVariantAnnotator.annotate(variant)
: smallVariantAnnotator.annotate(variant);
These full-sequence insertions (not <INS> style symbolic) have changeLength >= 1000, so they're sent to the SV annotator. The comment even says:
"Jannovar has a 1Kb cut-off for precise variants where it will simply assign them as 'STRUCTURAL_VARIANT'."
- The SV annotator suppresses the
INSERTION effect (JannovarStructuralVariantAnnotator.java:130-136)
private static VariantEffect filterEffects(Set<VariantEffect> variantEffects) {
for (VariantEffect varEff : variantEffects) {
if (!(varEff == INSERTION || varEff == INVERSION || varEff == STRUCTURAL_VARIANT)) {
return varEff;
}
}
return DEFAULT_EFFECT; // DEFAULT_EFFECT = SEQUENCE_VARIANT
}
INSERTION is explicitly filtered out and falls back to SEQUENCE_VARIANT.
SEQUENCE_VARIANT → pathogenicity score of 0.0 (VariantEffectPathogenicityScore.java:89)
case SEQUENCE_VARIANT -> NON_PATHOGENIC_SCORE; // = 0.0f
- The SvAnna-based scoring never applies (VariantEvaluation.java:412)
if (this.isSymbolic()) {
// SvAnna scoring...
}
These full-sequence insertions are not symbolic, so isSymbolic() is false and the structural scoring branch is skipped entirely.
Fix
The guard around SvAnna scoring should match the original logic for routing to the SV annotator.
if (variant.isSymbolic() || Math.abs(variant.changeLength()) >= 1000) {
// SvAnna scoring...
}
Details
Here's the chain of behavior for large sequence insertions (≥1000 bp alt length):
These full-sequence insertions (not
<INS>style symbolic) havechangeLength >= 1000, so they're sent to the SV annotator. The comment even says:INSERTIONeffect (JannovarStructuralVariantAnnotator.java:130-136)INSERTIONis explicitly filtered out and falls back toSEQUENCE_VARIANT.SEQUENCE_VARIANT→ pathogenicity score of 0.0 (VariantEffectPathogenicityScore.java:89)These full-sequence insertions are not symbolic, so
isSymbolic()is false and the structural scoring branch is skipped entirely.Fix
The guard around SvAnna scoring should match the original logic for routing to the SV annotator.