Skip to content

Exomiser doesn't calculate a variant score for non-symbolic insertions > 1kb #633

@TimD1

Description

@TimD1

Details

Here's the chain of behavior for large sequence insertions (≥1000 bp alt length):

  1. 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'."

  1. 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.

  1. SEQUENCE_VARIANT → pathogenicity score of 0.0 (VariantEffectPathogenicityScore.java:89)
  case SEQUENCE_VARIANT -> NON_PATHOGENIC_SCORE;  // = 0.0f
  1. 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...
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions