From a1136060ed41198afa78f67ea9d1f52f987c07fd Mon Sep 17 00:00:00 2001 From: Christian Pich Date: Fri, 10 Apr 2026 13:00:15 +0200 Subject: [PATCH] SCRUM-5952 enable transgenic constructs to be displayed. --- .../api/controller/AlleleController.java | 6 +++--- .../api/rest/interfaces/AlleleRESTInterface.java | 4 ++-- .../alliancegenome/api/service/AlleleESService.java | 12 ++++++------ .../variant/converters/VariantSummaryConverter.java | 9 +++++++++ 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/agr_api/src/main/java/org/alliancegenome/api/controller/AlleleController.java b/agr_api/src/main/java/org/alliancegenome/api/controller/AlleleController.java index bc9e86fec..de62f6a1f 100644 --- a/agr_api/src/main/java/org/alliancegenome/api/controller/AlleleController.java +++ b/agr_api/src/main/java/org/alliancegenome/api/controller/AlleleController.java @@ -19,7 +19,7 @@ import org.alliancegenome.core.exceptions.RestErrorMessage; import org.alliancegenome.core.translators.tdf.AlleleToTdfTranslator; import org.alliancegenome.curation_api.model.document.es.AlleleSummaryDocument; -import org.alliancegenome.curation_api.model.document.es.TransgenicAlleleDocument; +import org.alliancegenome.api.entity.TransgenicAlleleSummaryDocument; import org.alliancegenome.curation_api.model.document.es.VariantSummaryDocument; import org.alliancegenome.es.model.query.FieldFilter; import org.alliancegenome.es.model.query.Pagination; @@ -67,8 +67,8 @@ public AlleleSummaryDocument getAllele(String id) { } @Override - public TransgenicAlleleDocument getAlleleConstructs(String alleleId) { - JsonResultResponse transgenicAlleles = alleleEsService.getTransgenicAlleles(alleleId); + public TransgenicAlleleSummaryDocument getAlleleConstructs(String alleleId) { + JsonResultResponse transgenicAlleles = alleleEsService.getTransgenicAlleles(alleleId); if (transgenicAlleles == null) { return null; } diff --git a/agr_api/src/main/java/org/alliancegenome/api/rest/interfaces/AlleleRESTInterface.java b/agr_api/src/main/java/org/alliancegenome/api/rest/interfaces/AlleleRESTInterface.java index b4b39f146..494d210eb 100644 --- a/agr_api/src/main/java/org/alliancegenome/api/rest/interfaces/AlleleRESTInterface.java +++ b/agr_api/src/main/java/org/alliancegenome/api/rest/interfaces/AlleleRESTInterface.java @@ -4,7 +4,7 @@ import org.alliancegenome.api.entity.AllelePhenotypeAnnotationDocument; import org.alliancegenome.cache.repository.helper.JsonResultResponse; import org.alliancegenome.curation_api.model.document.es.AlleleSummaryDocument; -import org.alliancegenome.curation_api.model.document.es.TransgenicAlleleDocument; +import org.alliancegenome.api.entity.TransgenicAlleleSummaryDocument; import org.alliancegenome.curation_api.model.document.es.VariantSummaryDocument; import org.alliancegenome.neo4j.view.PublicView; import org.apache.commons.lang3.ObjectUtils.Null; @@ -48,7 +48,7 @@ public interface AlleleRESTInterface { @Operation(description = "Searches for transgenic alleles", summary = "Transgenic Alleles") @APIResponses(value = {@APIResponse(responseCode = "404", description = "Missing transgenic alleles", content = @Content(mediaType = "text/plain")), @APIResponse(responseCode = "200", description = "Search for alleles.", content = @Content(mediaType = "application/json", schema = @Schema(implementation = Null.class)))}) - TransgenicAlleleDocument getAlleleConstructs(@Parameter(in = ParameterIn.PATH, name = "id", description = "Search for constructs for a given Allele by ID", required = true, schema = @Schema(type = SchemaType.STRING)) @PathParam("id") String id); + TransgenicAlleleSummaryDocument getAlleleConstructs(@Parameter(in = ParameterIn.PATH, name = "id", description = "Search for constructs for a given Allele by ID", required = true, schema = @Schema(type = SchemaType.STRING)) @PathParam("id") String id); @GET @Path("/{id}/variants") 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 e21f88a26..429fe4627 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 @@ -13,7 +13,7 @@ import org.alliancegenome.cache.repository.helper.JsonResultResponse; import org.alliancegenome.curation_api.model.document.es.AlleleSummaryDocument; import org.alliancegenome.curation_api.model.document.es.ESDocument; -import org.alliancegenome.curation_api.model.document.es.TransgenicAlleleDocument; +import org.alliancegenome.api.entity.TransgenicAlleleSummaryDocument; import org.alliancegenome.curation_api.model.document.es.VariantSummaryDocument; import org.alliancegenome.es.model.query.Pagination; import org.elasticsearch.action.search.SearchResponse; @@ -64,23 +64,23 @@ public class AlleleESService extends ESService { put(null, defaultSortMap); }}; - public JsonResultResponse getTransgenicAlleles(String alleleId) { + public JsonResultResponse getTransgenicAlleles(String alleleId) { BoolQueryBuilder bool = boolQuery(); BoolQueryBuilder bool2 = boolQuery(); bool.must(bool2); // ToDo: Change this class such that the category is public - // TransgenicAlleleDocument.category + // TransgenicAlleleSummaryDocument.category bool.filter(new TermQueryBuilder("category", "transgenic_allele_summary")); bool2.should(new MatchQueryBuilder("allele.primaryExternalId.keyword", alleleId)); - JsonResultResponse ret = new JsonResultResponse<>(); + JsonResultResponse ret = new JsonResultResponse<>(); SearchResponse searchResponse = getSearchResponse(bool, new Pagination(), null, false); ret.setTotal((int) searchResponse.getHits().getTotalHits().value); - List list = new ArrayList<>(); + List list = new ArrayList<>(); Arrays.stream(searchResponse.getHits().getHits()).forEach(searchHit -> { try { - TransgenicAlleleDocument object = mapper.readValue(searchHit.getSourceAsString(), TransgenicAlleleDocument.class); + TransgenicAlleleSummaryDocument object = mapper.readValue(searchHit.getSourceAsString(), TransgenicAlleleSummaryDocument.class); list.add(object); } catch (Exception e) { e.printStackTrace(); 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 64638626d..5d62e06b9 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 @@ -262,6 +262,15 @@ public List convertContextToDocument(VariantContext ctx, allele.setTaxon(taxon); // If we want to show + // Sort PVCs by most severe consequence + consequences.sort(Comparator.comparingInt(pvc -> { + if (pvc.getVepConsequences() == null || pvc.getVepConsequences().isEmpty()) { + return Integer.MAX_VALUE; + } + return pvc.getVepConsequences().stream() + .mapToInt(c -> c.getSeverityOrder() != null ? c.getSeverityOrder() : Integer.MAX_VALUE) + .min().orElse(Integer.MAX_VALUE); + })); cvgla.setPredictedVariantConsequences(consequences); // Create the document for each consequence (full flattening) VariantSummaryDocument doc = new VariantSummaryDocument();