From d529075b00ddd34645db048bd44105bd487d3b9f Mon Sep 17 00:00:00 2001 From: calledit <1573053+calledit@users.noreply.github.com> Date: Tue, 18 Jun 2024 21:17:11 +0200 Subject: [PATCH 1/2] Added matching for deletions that have longer representations --- src/main/java/org/snpsift/annotate/AnnotateVcfDb.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/org/snpsift/annotate/AnnotateVcfDb.java b/src/main/java/org/snpsift/annotate/AnnotateVcfDb.java index 5c31679..943312a 100644 --- a/src/main/java/org/snpsift/annotate/AnnotateVcfDb.java +++ b/src/main/java/org/snpsift/annotate/AnnotateVcfDb.java @@ -372,6 +372,13 @@ protected boolean match(Variant var, VariantVcfEntry dbEntry) { if (var.getReference().equalsIgnoreCase(dbEntry.getReference()) // && var.getAlt().equalsIgnoreCase(dbEntry.getAlt()) // ) return true; + // if this is a deletion check if the db entry is a longer synonymus version + if (dbEntry.getReference().length() > var.getReference().length()) { + String extraRefStr = dbEntry.getReference().substring(var.getReference().length(), dbEntry.getReference().length()); + if (var.getReference().concat(extraRefStr).equalsIgnoreCase(dbEntry.getReference()) // + && var.getAlt().concat(extraRefStr).equalsIgnoreCase(dbEntry.getAlt()) // + ) return true; + } } else { // No need to use Ref & Alt, it's a match return true; From 37d1ad70b8ae1ce74c4978a0b02fe6ddab3baefd Mon Sep 17 00:00:00 2001 From: calledit <1573053+calledit@users.noreply.github.com> Date: Wed, 19 Jun 2024 15:54:15 +0200 Subject: [PATCH 2/2] improved comment explanation --- src/main/java/org/snpsift/annotate/AnnotateVcfDb.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/snpsift/annotate/AnnotateVcfDb.java b/src/main/java/org/snpsift/annotate/AnnotateVcfDb.java index 943312a..4fc7576 100644 --- a/src/main/java/org/snpsift/annotate/AnnotateVcfDb.java +++ b/src/main/java/org/snpsift/annotate/AnnotateVcfDb.java @@ -372,7 +372,8 @@ protected boolean match(Variant var, VariantVcfEntry dbEntry) { if (var.getReference().equalsIgnoreCase(dbEntry.getReference()) // && var.getAlt().equalsIgnoreCase(dbEntry.getAlt()) // ) return true; - // if this is a deletion check if the db entry is a longer synonymus version + // check if the db is represeting the same variant using a longer Ref + // (can be the case when the db is not normalized or if the db contains multiple alleles and some of them are longer) if (dbEntry.getReference().length() > var.getReference().length()) { String extraRefStr = dbEntry.getReference().substring(var.getReference().length(), dbEntry.getReference().length()); if (var.getReference().concat(extraRefStr).equalsIgnoreCase(dbEntry.getReference()) //