From 150fcc6dbc52964b28c1bcfc30d4247cd80fb720 Mon Sep 17 00:00:00 2001 From: Christian Pich Date: Tue, 7 Apr 2026 14:47:20 +0200 Subject: [PATCH 01/10] SCRUM-5881 add variants as attributes on allele document --- .../alliancegenome/api/service/helper/SearchHelper.java | 2 ++ .../variant/converters/AlleleSearchResultConverter.java | 7 +++++++ .../org/alliancegenome/es/index/site/schema/Mapping.java | 1 + .../es/model/AlleleSearchResultDocument.java | 1 + 4 files changed, 11 insertions(+) diff --git a/agr_api/src/main/java/org/alliancegenome/api/service/helper/SearchHelper.java b/agr_api/src/main/java/org/alliancegenome/api/service/helper/SearchHelper.java index 0356cb5d3..444159098 100644 --- a/agr_api/src/main/java/org/alliancegenome/api/service/helper/SearchHelper.java +++ b/agr_api/src/main/java/org/alliancegenome/api/service/helper/SearchHelper.java @@ -216,6 +216,8 @@ public List getSearchFields() { add("variants"); add("variants.keyword"); add("variants.standardText"); + add("variantHgvs"); + add("variantHgvs.keyword"); add("variantSynonyms"); add("variantSynonyms.keyword"); add("variantSynonyms.standardText"); diff --git a/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/AlleleSearchResultConverter.java b/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/AlleleSearchResultConverter.java index ea363158c..adbfb4c57 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/AlleleSearchResultConverter.java +++ b/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/AlleleSearchResultConverter.java @@ -126,11 +126,15 @@ public List convert(List alle } Set consequences = new HashSet<>(); + Set variantHgvs = new HashSet<>(); for (var variant : doc.getVariants()) { if (variant.getCuratedVariantGenomicLocations() == null) { continue; } for (var location : variant.getCuratedVariantGenomicLocations()) { + if (location.getHgvs() != null) { + variantHgvs.add(location.getHgvs()); + } if (location.getPredictedVariantConsequences() == null) { continue; } @@ -149,6 +153,9 @@ public List convert(List alle if (!consequences.isEmpty()) { searchDoc.setMolecularConsequence(consequences); } + if (!variantHgvs.isEmpty()) { + searchDoc.setVariantHgvs(variantHgvs); + } } result.add(searchDoc); diff --git a/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/Mapping.java b/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/Mapping.java index 38f82fc12..0c40cbc6c 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/Mapping.java +++ b/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/Mapping.java @@ -99,6 +99,7 @@ protected void buildSharedSearchableDocumentMappings() throws IOException { new FieldBuilder(builder, "symbolText", "text").keyword().standardText().build(); // allele //new FieldBuilder(builder, "variants", "text").keyword().standardText().build(); // allele + new FieldBuilder(builder, "variantHgvs", "text").keyword().build(); // allele - HGVS notation for searchability new FieldBuilder(builder, "variantType", "text").keyword().build(); // variant search result //new FieldBuilder(builder, "variantSynonyms", "text").keyword().standardText().build(); // allele diff --git a/agr_java_core/src/main/java/org/alliancegenome/es/model/AlleleSearchResultDocument.java b/agr_java_core/src/main/java/org/alliancegenome/es/model/AlleleSearchResultDocument.java index a62b69c70..87b56e925 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/es/model/AlleleSearchResultDocument.java +++ b/agr_java_core/src/main/java/org/alliancegenome/es/model/AlleleSearchResultDocument.java @@ -27,6 +27,7 @@ public AlleleSearchResultDocument() { private String alterationType; private List variantType; private Set molecularConsequence; + private Set variantHgvs; private Set constructExpressedComponent; private Set constructRegulatoryRegion; private Set constructKnockdownComponent; From 2fb79ecbedb0337dfd7b2aab72e217480ef35713 Mon Sep 17 00:00:00 2001 From: Christian Pich Date: Tue, 7 Apr 2026 15:27:26 +0200 Subject: [PATCH 02/10] SCRUM-5829 add variantSynonym field on allele doc --- .../org/alliancegenome/api/service/helper/SearchHelper.java | 4 ++-- .../core/variant/converters/AlleleSearchResultConverter.java | 2 +- .../java/org/alliancegenome/es/index/site/schema/Mapping.java | 2 +- .../alliancegenome/es/model/AlleleSearchResultDocument.java | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/agr_api/src/main/java/org/alliancegenome/api/service/helper/SearchHelper.java b/agr_api/src/main/java/org/alliancegenome/api/service/helper/SearchHelper.java index 444159098..cf7220fb6 100644 --- a/agr_api/src/main/java/org/alliancegenome/api/service/helper/SearchHelper.java +++ b/agr_api/src/main/java/org/alliancegenome/api/service/helper/SearchHelper.java @@ -216,8 +216,8 @@ public List getSearchFields() { add("variants"); add("variants.keyword"); add("variants.standardText"); - add("variantHgvs"); - add("variantHgvs.keyword"); + add("variantSynonym"); + add("variantSynonym.keyword"); add("variantSynonyms"); add("variantSynonyms.keyword"); add("variantSynonyms.standardText"); diff --git a/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/AlleleSearchResultConverter.java b/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/AlleleSearchResultConverter.java index adbfb4c57..20bed8b91 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/AlleleSearchResultConverter.java +++ b/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/AlleleSearchResultConverter.java @@ -154,7 +154,7 @@ public List convert(List alle searchDoc.setMolecularConsequence(consequences); } if (!variantHgvs.isEmpty()) { - searchDoc.setVariantHgvs(variantHgvs); + searchDoc.setVariantSynonym(variantHgvs); } } diff --git a/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/Mapping.java b/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/Mapping.java index 0c40cbc6c..b8491db23 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/Mapping.java +++ b/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/Mapping.java @@ -99,7 +99,7 @@ protected void buildSharedSearchableDocumentMappings() throws IOException { new FieldBuilder(builder, "symbolText", "text").keyword().standardText().build(); // allele //new FieldBuilder(builder, "variants", "text").keyword().standardText().build(); // allele - new FieldBuilder(builder, "variantHgvs", "text").keyword().build(); // allele - HGVS notation for searchability + new FieldBuilder(builder, "variantSynonym", "text").keyword().build(); // allele - HGVS notation for searchability new FieldBuilder(builder, "variantType", "text").keyword().build(); // variant search result //new FieldBuilder(builder, "variantSynonyms", "text").keyword().standardText().build(); // allele diff --git a/agr_java_core/src/main/java/org/alliancegenome/es/model/AlleleSearchResultDocument.java b/agr_java_core/src/main/java/org/alliancegenome/es/model/AlleleSearchResultDocument.java index 87b56e925..ceadfd680 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/es/model/AlleleSearchResultDocument.java +++ b/agr_java_core/src/main/java/org/alliancegenome/es/model/AlleleSearchResultDocument.java @@ -27,7 +27,7 @@ public AlleleSearchResultDocument() { private String alterationType; private List variantType; private Set molecularConsequence; - private Set variantHgvs; + private Set variantSynonym; private Set constructExpressedComponent; private Set constructRegulatoryRegion; private Set constructKnockdownComponent; From a6f7c09dad5530babbe0a0a6e57193c277d34fa5 Mon Sep 17 00:00:00 2001 From: Christian Pich Date: Tue, 7 Apr 2026 18:12:41 +0200 Subject: [PATCH 03/10] SCRUM-5829 make LTP variants be aded to allele search result doc --- .../api/service/helper/SearchHelper.java | 2 -- .../org/alliancegenome/indexer/TestSynonyms.java | 6 +++--- .../core/translators/tdf/AlleleToTdfTranslator.java | 6 +++--- .../converters/AlleleSearchResultConverter.java | 8 ++++---- .../converters/AlleleSequenceSummaryConverter.java | 4 ++-- .../variant/converters/SequenceSummaryConverter.java | 4 ++-- .../converters/VariantSearchResultConverter.java | 2 +- .../variant/converters/VariantSummaryConverter.java | 2 +- .../es/index/site/dao/VariantESDAO.java | 2 +- .../alliancegenome/es/index/site/schema/Mapping.java | 12 +++++------- .../es/model/AlleleSearchResultDocument.java | 2 +- pom.xml | 2 +- 12 files changed, 24 insertions(+), 28 deletions(-) diff --git a/agr_api/src/main/java/org/alliancegenome/api/service/helper/SearchHelper.java b/agr_api/src/main/java/org/alliancegenome/api/service/helper/SearchHelper.java index cf7220fb6..0356cb5d3 100644 --- a/agr_api/src/main/java/org/alliancegenome/api/service/helper/SearchHelper.java +++ b/agr_api/src/main/java/org/alliancegenome/api/service/helper/SearchHelper.java @@ -216,8 +216,6 @@ public List getSearchFields() { add("variants"); add("variants.keyword"); add("variants.standardText"); - add("variantSynonym"); - add("variantSynonym.keyword"); add("variantSynonyms"); add("variantSynonyms.keyword"); add("variantSynonyms.standardText"); diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/TestSynonyms.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/TestSynonyms.java index fb23b236b..c04e9380c 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/TestSynonyms.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/TestSynonyms.java @@ -37,9 +37,9 @@ public static void main(String[] args) throws Exception { System.out.println("=== Step 1: AlleleSummaryDocument from API ==="); for (AlleleSummaryDocument doc : response.getResults()) { System.out.println("Allele symbol: " + (doc.getAllele() != null && doc.getAllele().getAlleleSymbol() != null ? doc.getAllele().getAlleleSymbol().getDisplayText() : "null")); - System.out.println("Variants: " + (doc.getVariants() != null ? doc.getVariants().size() : "null")); - if (doc.getVariants() != null) { - for (Variant v : doc.getVariants()) { + System.out.println("Variants: " + (doc.getVariantList() != null ? doc.getVariantList().size() : "null")); + if (doc.getVariantList() != null) { + for (Variant v : doc.getVariantList()) { System.out.println(" Variant type: " + (v.getVariantType() != null ? v.getVariantType().getName() : "null")); if (v.getCuratedVariantGenomicLocations() != null) { for (CuratedVariantGenomicLocationAssociation loc : v.getCuratedVariantGenomicLocations()) { diff --git a/agr_java_core/src/main/java/org/alliancegenome/core/translators/tdf/AlleleToTdfTranslator.java b/agr_java_core/src/main/java/org/alliancegenome/core/translators/tdf/AlleleToTdfTranslator.java index 013997130..31d08ae05 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/core/translators/tdf/AlleleToTdfTranslator.java +++ b/agr_java_core/src/main/java/org/alliancegenome/core/translators/tdf/AlleleToTdfTranslator.java @@ -64,8 +64,8 @@ public List getAlleleDownloadRowsForGenes(List an private List getVariants(AVSParentDocument doc) { return switch (doc) { - case AlleleSummaryDocument asd -> asd.getVariants(); - case VariantSummaryDocument vsd -> vsd.getVariants(); + case AlleleSummaryDocument asd -> asd.getVariantList(); + case VariantSummaryDocument vsd -> vsd.getVariantList(); default -> null; }; } @@ -252,7 +252,7 @@ public List getVariantDownloadRowsForAlleles(List convert(List alle searchDoc.setConstructKnockdownComponent(doc.getConstructKnockdownComponents()); } - if (CollectionUtils.isNotEmpty(doc.getVariants())) { - List variantTypes = doc.getVariants().stream() + if (CollectionUtils.isNotEmpty(doc.getVariantList())) { + List variantTypes = doc.getVariantList().stream() .filter(v -> v.getVariantType() != null && v.getVariantType().getName() != null) .map(v -> v.getVariantType().getName()) .distinct() @@ -127,7 +127,7 @@ public List convert(List alle Set consequences = new HashSet<>(); Set variantHgvs = new HashSet<>(); - for (var variant : doc.getVariants()) { + for (var variant : doc.getVariantList()) { if (variant.getCuratedVariantGenomicLocations() == null) { continue; } @@ -154,7 +154,7 @@ public List convert(List alle searchDoc.setMolecularConsequence(consequences); } if (!variantHgvs.isEmpty()) { - searchDoc.setVariantSynonym(variantHgvs); + searchDoc.setVariants(variantHgvs); } } diff --git a/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/AlleleSequenceSummaryConverter.java b/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/AlleleSequenceSummaryConverter.java index f7fecc79d..c1d3657ea 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/AlleleSequenceSummaryConverter.java +++ b/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/AlleleSequenceSummaryConverter.java @@ -17,7 +17,7 @@ public List convert(List alleleD List result = new ArrayList<>(); for (AlleleSummaryDocument doc : alleleDocs) { - if (CollectionUtils.isEmpty(doc.getVariants())) { + if (CollectionUtils.isEmpty(doc.getVariantList())) { continue; } @@ -26,7 +26,7 @@ public List convert(List alleleD geneIds.add(doc.getAlleleOfGene().getPrimaryExternalId()); } - for (Variant variant : doc.getVariants()) { + for (Variant variant : doc.getVariantList()) { if (CollectionUtils.isEmpty(variant.getCuratedVariantGenomicLocations())) { continue; } diff --git a/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/SequenceSummaryConverter.java b/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/SequenceSummaryConverter.java index afa403ac0..e01de4fb9 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/SequenceSummaryConverter.java +++ b/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/SequenceSummaryConverter.java @@ -21,7 +21,7 @@ public List convertToSequenceSummary(List result = new ArrayList<>(); for (VariantSummaryDocument doc : docs) { - CuratedVariantGenomicLocationAssociation variantLocation = doc.getVariants().get(0).getCuratedVariantGenomicLocations().get(0); + CuratedVariantGenomicLocationAssociation variantLocation = doc.getVariantList().getFirst().getCuratedVariantGenomicLocations().get(0); if (variantLocation == null || variantLocation.getPredictedVariantConsequences() == null) { continue; } @@ -31,7 +31,7 @@ public List convertToSequenceSummary(List convertToVariantSearchDocument(List result = new ArrayList<>(); for (VariantSummaryDocument doc : variantSummaryDocuments) { - CuratedVariantGenomicLocationAssociation variantLocation = doc.getVariants().get(0).getCuratedVariantGenomicLocations().get(0); + CuratedVariantGenomicLocationAssociation variantLocation = doc.getVariantList().get(0).getCuratedVariantGenomicLocations().get(0); if (variantLocation == null) { continue; } diff --git a/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/VariantSummaryConverter.java b/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/VariantSummaryConverter.java index 6aec54429..c9ee5d451 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/VariantSummaryConverter.java +++ b/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/VariantSummaryConverter.java @@ -275,7 +275,7 @@ public List convertContextToDocument(VariantContext ctx, variantWrapper.setTaxon(taxon); variantWrapper.setCuratedVariantGenomicLocations(List.of(cvgla)); variantWrapper.setCrossReferences(variant.getCrossReferences()); - doc.setVariants(List.of(variantWrapper)); + doc.setVariantList(List.of(variantWrapper)); doc.setGeneIds(resultPair.getRight()); returnDocuments.add(doc); } diff --git a/agr_java_core/src/main/java/org/alliancegenome/es/index/site/dao/VariantESDAO.java b/agr_java_core/src/main/java/org/alliancegenome/es/index/site/dao/VariantESDAO.java index 94ff229b7..9ffffde6d 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/es/index/site/dao/VariantESDAO.java +++ b/agr_java_core/src/main/java/org/alliancegenome/es/index/site/dao/VariantESDAO.java @@ -167,7 +167,7 @@ public VariantSummaryDocument getVariant(String id) { for (SearchHit hit : searchHits) { try { VariantSummaryDocument summaryDoc = mapper.readValue(hit.getSourceAsString(), VariantSummaryDocument.class); - if (summaryDoc != null && summaryDoc.getVariants() != null && !summaryDoc.getVariants().isEmpty()) { + if (summaryDoc != null && summaryDoc.getVariantList() != null && !summaryDoc.getVariantList().isEmpty()) { return summaryDoc; } } catch (IOException e) { diff --git a/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/Mapping.java b/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/Mapping.java index b8491db23..6f8f598a6 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/Mapping.java +++ b/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/Mapping.java @@ -98,10 +98,8 @@ protected void buildSharedSearchableDocumentMappings() throws IOException { new FieldBuilder(builder, "molecularConsequence", "text").keyword().build(); // allele new FieldBuilder(builder, "symbolText", "text").keyword().standardText().build(); // allele - //new FieldBuilder(builder, "variants", "text").keyword().standardText().build(); // allele - new FieldBuilder(builder, "variantSynonym", "text").keyword().build(); // allele - HGVS notation for searchability + new FieldBuilder(builder, "variants", "text").keyword().standardText().build(); // allele - HGVS notation new FieldBuilder(builder, "variantType", "text").keyword().build(); // variant search result - //new FieldBuilder(builder, "variantSynonyms", "text").keyword().standardText().build(); // allele // Gene Only Fields new FieldBuilder(builder, "biologicalProcessAgrSlim", "text").keyword().build(); // gene @@ -287,13 +285,13 @@ protected void buildSharedSearchableDocumentMappings() throws IOException { builder.endObject(); new FieldBuilder(builder, "geneIds", "keyword").build(); - builder.startObject("variants"); + builder.startObject("variantList"); builder.field("type", "object"); builder.field("dynamic", false); builder.endObject(); - new FieldBuilder(builder, "variants.variantType.name", "text").keyword().sortSmartAlpha().build(); - new FieldBuilder(builder, "variants.curatedVariantGenomicLocations.predictedVariantConsequences.vepConsequences.name", "text").keyword().sortSmartAlpha().build(); - new FieldBuilder(builder, "variants.curatedVariantGenomicLocations.hgvs", "text").keyword().sortSmartAlpha().build(); + new FieldBuilder(builder, "variantList.variantType.name", "text").keyword().sortSmartAlpha().build(); + new FieldBuilder(builder, "variantList.curatedVariantGenomicLocations.predictedVariantConsequences.vepConsequences.name", "text").keyword().sortSmartAlpha().build(); + new FieldBuilder(builder, "variantList.curatedVariantGenomicLocations.hgvs", "text").keyword().sortSmartAlpha().build(); builder.startObject("crossReference"); builder.field("type", "object"); builder.field("dynamic", false); diff --git a/agr_java_core/src/main/java/org/alliancegenome/es/model/AlleleSearchResultDocument.java b/agr_java_core/src/main/java/org/alliancegenome/es/model/AlleleSearchResultDocument.java index ceadfd680..6a8f0a5cc 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/es/model/AlleleSearchResultDocument.java +++ b/agr_java_core/src/main/java/org/alliancegenome/es/model/AlleleSearchResultDocument.java @@ -27,7 +27,7 @@ public AlleleSearchResultDocument() { private String alterationType; private List variantType; private Set molecularConsequence; - private Set variantSynonym; + private Set variants; private Set constructExpressedComponent; private Set constructRegulatoryRegion; private Set constructKnockdownComponent; diff --git a/pom.xml b/pom.xml index fe3502d0d..53baf71d8 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ 3.3.1 10.17.0 UTF-8 - v0.47.33 + v0.47.35 From 4ca720c24103efe591bfd3da08de4abb676227b1 Mon Sep 17 00:00:00 2001 From: Olin Blodgett Date: Tue, 7 Apr 2026 08:31:03 -0400 Subject: [PATCH 04/10] SCRUM-5950 index LTP variants for search Add VariantSearchResultConverter to VariantSummaryCurationIndexer so low throughput variant HGVS names are indexed and searchable. --- .../curation/VariantSummaryCurationIndexer.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/VariantSummaryCurationIndexer.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/VariantSummaryCurationIndexer.java index 4941157dd..330340f6d 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/VariantSummaryCurationIndexer.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/VariantSummaryCurationIndexer.java @@ -1,12 +1,15 @@ package org.alliancegenome.indexer.indexers.curation; import java.util.HashMap; +import java.util.List; import java.util.concurrent.LinkedBlockingDeque; import org.alliancegenome.core.config.ConfigHelper; +import org.alliancegenome.core.variant.converters.VariantSearchResultConverter; import org.alliancegenome.curation_api.interfaces.document.VariantDocumentInterface; import org.alliancegenome.curation_api.model.document.es.VariantSummaryDocument; import org.alliancegenome.curation_api.response.SearchResponse; +import org.alliancegenome.es.model.VariantSearchResultDocument; import org.alliancegenome.es.rest.RestConfig; import org.alliancegenome.es.util.ProcessDisplayHelper; import org.alliancegenome.exceptional.client.ExceptionCatcher; @@ -23,6 +26,8 @@ public class VariantSummaryCurationIndexer extends Indexer { private final VariantDocumentInterface variantApi = RestProxyFactory.createProxy(VariantDocumentInterface.class, ConfigHelper.getCurationApiUrl(), RestConfig.config); + private VariantSearchResultConverter variantSearchResultConverter = new VariantSearchResultConverter(); + private final HashMap params = new HashMap<>() { { put("internal", false); @@ -66,8 +71,11 @@ protected void startSingleThread(LinkedBlockingDeque queue) { String page = queue.takeFirst(); SearchResponse response = variantApi.findDocuments(Integer.valueOf(page), indexerConfig.getBufferSize(), params); - indexDocuments(response.getResults()); + + List vsrd = variantSearchResultConverter.convertToVariantSearchDocument(response.getResults()); + indexDocuments(vsrd); + } catch (Exception e) { log.error("Error while indexing...", e); ExceptionCatcher.report(e); From 7e63eb9b91c691ea250f06026689277cdd478bc9 Mon Sep 17 00:00:00 2001 From: Olin Blodgett Date: Tue, 7 Apr 2026 13:13:48 -0400 Subject: [PATCH 05/10] Turn off the variant summary indexer --- .../java/org/alliancegenome/indexer/config/IndexerConfig.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/config/IndexerConfig.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/config/IndexerConfig.java index 8505b7be7..bc0e6e7e2 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/config/IndexerConfig.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/config/IndexerConfig.java @@ -21,7 +21,6 @@ import org.alliancegenome.indexer.indexers.curation.ReleaseInfoIndexer; import org.alliancegenome.indexer.indexers.curation.SiteMapAccessionCurationIndexer; import org.alliancegenome.indexer.indexers.curation.TransgenicAlleleCurationIndexer; -import org.alliancegenome.indexer.indexers.curation.VariantSummaryCurationIndexer; public enum IndexerConfig { @@ -39,7 +38,7 @@ public enum IndexerConfig { AffectedGenomicModelAnnotationIndexer("agmAnnotation", AGMAnnotationCurationIndexer.class, 4, 1500, 1500, 8, 1, true), GeneSearchResultCurationIndexer("geneSearchResult", GeneSearchResultCurationIndexer.class, 4, 1000, 1500, 4, 1, true), GeneSummaryIndexer("geneSummary", GeneSummaryCurationIndexer.class, 4, 1500, 1500, 4, 1, true), - VariantSummaryIndexer("variantSummary", VariantSummaryCurationIndexer.class, 1, 3000, 1500, 8, 1, true), + //VariantSummaryIndexer("variantSummary", VariantSummaryCurationIndexer.class, 1, 3000, 1500, 8, 1, true), GeneGeneticInteractionIndexers("geneGeneticInteraction", GeneGeneticInteractionCurationIndexer.class, 4, 1500, 1500, 2, 1, true), HTPDatasetSearchResultCurationIndexer("htpDatasetSearchResult", HTPDatasetSearchResultCurationIndexer.class, 4, 1500, 1500, 4, 1, true), LiteratureIndexer("literature", LiteratureIndexer.class, 4, 5000, 5000, 1, 1, true), From b51817944aa16dffe0db148ee2e4af3d16b30a08 Mon Sep 17 00:00:00 2001 From: Christian Pich Date: Wed, 8 Apr 2026 12:50:49 +0200 Subject: [PATCH 06/10] SCRUM-5829 add crossReferences and phenotypeStatements to allele search results - Add crossReferences field (allele ID + gene ID) so alleles are discoverable by gene cross reference (e.g. MGI:104735, ZFIN:ZDB-GENE-*) - Populate phenotypeStatements from AlleleSummaryDocument so alleles are searchable by phenotype terms (e.g. "embryonic lethality") Co-Authored-By: Claude Opus 4.6 (1M context) --- .../converters/AlleleSearchResultConverter.java | 11 +++++++++++ .../es/model/AlleleSearchResultDocument.java | 1 + 2 files changed, 12 insertions(+) diff --git a/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/AlleleSearchResultConverter.java b/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/AlleleSearchResultConverter.java index 005bb7508..ab21c4173 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/AlleleSearchResultConverter.java +++ b/agr_java_core/src/main/java/org/alliancegenome/core/variant/converters/AlleleSearchResultConverter.java @@ -87,6 +87,13 @@ public List convert(List alle searchDoc.setModCrossRefCompleteUrl(doc.getCrossReference().getReferencedCurie()); } + Set crossRefs = new HashSet<>(); + crossRefs.add(allele.getPrimaryExternalId()); + if (doc.getAlleleOfGene() != null && doc.getAlleleOfGene().getPrimaryExternalId() != null) { + crossRefs.add(doc.getAlleleOfGene().getPrimaryExternalId()); + } + searchDoc.setCrossReferences(crossRefs); + if (allele.getPopularity() != null) { searchDoc.setPopularity(allele.getPopularity()); } else { @@ -103,6 +110,10 @@ public List convert(List alle searchDoc.setDiseasesWithParents(new ArrayList<>(doc.getDiseasesWithParents())); } + if (doc.getPhenotypeStatements() != null && !doc.getPhenotypeStatements().isEmpty()) { + searchDoc.setPhenotypeStatements(new ArrayList<>(doc.getPhenotypeStatements())); + } + if (doc.getConstructExpressedComponents() != null && !doc.getConstructExpressedComponents().isEmpty()) { searchDoc.setConstructExpressedComponent(doc.getConstructExpressedComponents()); } diff --git a/agr_java_core/src/main/java/org/alliancegenome/es/model/AlleleSearchResultDocument.java b/agr_java_core/src/main/java/org/alliancegenome/es/model/AlleleSearchResultDocument.java index 6a8f0a5cc..c5c4f38a8 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/es/model/AlleleSearchResultDocument.java +++ b/agr_java_core/src/main/java/org/alliancegenome/es/model/AlleleSearchResultDocument.java @@ -31,6 +31,7 @@ public AlleleSearchResultDocument() { private Set constructExpressedComponent; private Set constructRegulatoryRegion; private Set constructKnockdownComponent; + private Set crossReferences; private List synonyms; private Set geneSynonyms; private List secondaryIds; From 9d80341e40f2b22fd255283b627caee826b1a299 Mon Sep 17 00:00:00 2001 From: Christian Pich Date: Wed, 8 Apr 2026 19:36:41 +0200 Subject: [PATCH 07/10] upgrade curation library (cherry picked from commit 0aa7b3cc2ebbce62f0289fbd9203c57c807050c5) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 53baf71d8..2885d2399 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ 3.3.1 10.17.0 UTF-8 - v0.47.35 + v0.47.36 From 21255ccca79a10356d55790868c9f98d39831c2e Mon Sep 17 00:00:00 2001 From: Olin Blodgett Date: Wed, 8 Apr 2026 14:15:55 -0400 Subject: [PATCH 08/10] Update fields to point to the new variantList object --- .../alliancegenome/api/controller/GeneController.java | 6 +++--- .../alliancegenome/api/service/AlleleESService.java | 10 +++++----- .../alliancegenome/es/index/site/dao/VariantESDAO.java | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/agr_api/src/main/java/org/alliancegenome/api/controller/GeneController.java b/agr_api/src/main/java/org/alliancegenome/api/controller/GeneController.java index 50b89254c..c78b8b43e 100644 --- a/agr_api/src/main/java/org/alliancegenome/api/controller/GeneController.java +++ b/agr_api/src/main/java/org/alliancegenome/api/controller/GeneController.java @@ -105,12 +105,12 @@ public JsonResultResponse getAllelesPerGene(String id, Integer limit Pagination pagination = new Pagination(page, limit, sortBy, asc); pagination.addFilterOption("symbol", symbol); pagination.addFilterOption("allele.alleleSynonyms.displayText", synonym); - pagination.addFilterOption("variants.curatedVariantGenomicLocations.hgvs", variant); + pagination.addFilterOption("variantList.curatedVariantGenomicLocations.hgvs", variant); pagination.addFilterOption("alterationType.keyword", category); - pagination.addFilterOption("variants.variantType.name.keyword", variantType); + pagination.addFilterOption("variantList.variantType.name.keyword", variantType); pagination.addFilterOption("hasDisease", hasDisease); pagination.addFilterOption("hasPhenotype", hasPhenotype); - pagination.addFilterOption("variants.curatedVariantGenomicLocations.predictedVariantConsequences.vepConsequences.name.keyword", molecularConsequence); + pagination.addFilterOption("variantList.curatedVariantGenomicLocations.predictedVariantConsequences.vepConsequences.name.keyword", molecularConsequence); if (pagination.hasErrors()) { RestErrorMessage message = new RestErrorMessage(); diff --git a/agr_api/src/main/java/org/alliancegenome/api/service/AlleleESService.java b/agr_api/src/main/java/org/alliancegenome/api/service/AlleleESService.java index 6a69fe4be..e21f88a26 100644 --- a/agr_api/src/main/java/org/alliancegenome/api/service/AlleleESService.java +++ b/agr_api/src/main/java/org/alliancegenome/api/service/AlleleESService.java @@ -41,13 +41,13 @@ public class AlleleESService extends ESService { }}; LinkedHashMap variantTypeSortMap = new LinkedHashMap<>() {{ - put("variants.variantType.name.sort", SortOrder.ASC); + put("variantList.variantType.name.sort", SortOrder.ASC); put("symbol.sort", SortOrder.ASC); }}; LinkedHashMap molecualarConsequenceSortMap = new LinkedHashMap<>() {{ - put("variants.curatedVariantGenomicLocations.predictedVariantConsequences.vepConsequences.name.sort", SortOrder.ASC); - put("variants.variantType.name.sort", SortOrder.ASC); + put("variantList.curatedVariantGenomicLocations.predictedVariantConsequences.vepConsequences.name.sort", SortOrder.ASC); + put("variantList.variantType.name.sort", SortOrder.ASC); put("symbol.sort", SortOrder.ASC); }}; @@ -171,8 +171,8 @@ private Map getAlleleSupplementalData(BoolQueryBuilder unfiltere Map aggregationFields = new HashMap<>(); aggregationFields.put("alterationType.keyword", "alleleCategory"); - aggregationFields.put("variants.variantType.name.keyword", "variantType"); - aggregationFields.put("variants.curatedVariantGenomicLocations.predictedVariantConsequences.vepConsequences.name.keyword", "molecularConsequence"); + aggregationFields.put("variantList.variantType.name.keyword", "variantType"); + aggregationFields.put("variantList.curatedVariantGenomicLocations.predictedVariantConsequences.vepConsequences.name.keyword", "molecularConsequence"); Map> distinctFieldValueMap = getAggregations(unfilteredQuery, aggregationFields, null, false, false); Map supplementalData = new LinkedHashMap<>(); diff --git a/agr_java_core/src/main/java/org/alliancegenome/es/index/site/dao/VariantESDAO.java b/agr_java_core/src/main/java/org/alliancegenome/es/index/site/dao/VariantESDAO.java index 9ffffde6d..830579db2 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/es/index/site/dao/VariantESDAO.java +++ b/agr_java_core/src/main/java/org/alliancegenome/es/index/site/dao/VariantESDAO.java @@ -143,7 +143,7 @@ public VariantSummaryDocument getVariant(String id) { BoolQueryBuilder bool = boolQuery(); bool.filter(new TermQueryBuilder("category", "variant_summary")); - bool.must(new TermQueryBuilder("variants.curatedVariantGenomicLocations.hgvs.keyword", id)); + bool.must(new TermQueryBuilder("variantList.curatedVariantGenomicLocations.hgvs.keyword", id)); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(bool); @@ -167,7 +167,7 @@ public VariantSummaryDocument getVariant(String id) { for (SearchHit hit : searchHits) { try { VariantSummaryDocument summaryDoc = mapper.readValue(hit.getSourceAsString(), VariantSummaryDocument.class); - if (summaryDoc != null && summaryDoc.getVariantList() != null && !summaryDoc.getVariantList().isEmpty()) { + if (summaryDoc != null && summaryDoc.getVariants() != null && !summaryDoc.getVariants().isEmpty()) { return summaryDoc; } } catch (IOException e) { From c0e785b30834ef4cd425dce8ee6dffa3fe36821b Mon Sep 17 00:00:00 2001 From: Olin Blodgett Date: Wed, 8 Apr 2026 15:34:11 -0400 Subject: [PATCH 09/10] Update variant mapping --- .../org/alliancegenome/es/index/site/schema/VariantMapping.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/VariantMapping.java b/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/VariantMapping.java index 2ea64066f..2eeffb65e 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/VariantMapping.java +++ b/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/VariantMapping.java @@ -38,7 +38,7 @@ public void buildMapping() { builder.endObject(); builder.endObject(); - builder.startObject("variants"); + builder.startObject("variantList"); builder.field("dynamic", false); builder.startObject("properties"); new FieldBuilder(builder, "variantType.name", "text").keyword().sortLowercase().build(); From 1ccca6a647f19a2f990d20861d92ddb363bab7e8 Mon Sep 17 00:00:00 2001 From: Olin Blodgett Date: Wed, 8 Apr 2026 16:53:16 -0400 Subject: [PATCH 10/10] Fix variants to variantList --- .../java/org/alliancegenome/es/index/site/dao/VariantESDAO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agr_java_core/src/main/java/org/alliancegenome/es/index/site/dao/VariantESDAO.java b/agr_java_core/src/main/java/org/alliancegenome/es/index/site/dao/VariantESDAO.java index 830579db2..d87512ab3 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/es/index/site/dao/VariantESDAO.java +++ b/agr_java_core/src/main/java/org/alliancegenome/es/index/site/dao/VariantESDAO.java @@ -167,7 +167,7 @@ public VariantSummaryDocument getVariant(String id) { for (SearchHit hit : searchHits) { try { VariantSummaryDocument summaryDoc = mapper.readValue(hit.getSourceAsString(), VariantSummaryDocument.class); - if (summaryDoc != null && summaryDoc.getVariants() != null && !summaryDoc.getVariants().isEmpty()) { + if (summaryDoc != null && summaryDoc.getVariantList() != null && !summaryDoc.getVariantList().isEmpty()) { return summaryDoc; } } catch (IOException e) {