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 d68b4c9bf..c68467712 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 @@ -38,6 +38,7 @@ import org.alliancegenome.neo4j.view.HomologView; import org.alliancegenome.neo4j.view.OrthologyFilter; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import java.util.*; import java.util.stream.Collectors; @@ -291,6 +292,9 @@ public JsonResultResponse getGeneticInteractions @Context UriInfo info) { long startTime = System.currentTimeMillis(); + if (StringUtils.isEmpty(sortBy)) { + sortBy = "geneGeneticInteraction.geneGeneAssociationObject.geneSymbol.displayText.keyword"; + } Pagination pagination = new Pagination(page, limit, sortBy, asc, new InteractionColumnFieldMapping()); pagination.addFilterOption("geneGeneticInteraction.geneGeneAssociationObject.geneSymbol.displayText", interactorGeneSymbol); pagination.addFilterOption("geneGeneticInteraction.interactionId", source); @@ -341,6 +345,9 @@ public Response getGeneticInteractionsDownload(String id, String sortBy, String String phenotypes, String interactionType ) { + if (StringUtils.isEmpty(sortBy)) { + sortBy = "geneGeneticInteraction.geneGeneAssociationObject.geneSymbol.displayText.keyword"; + } Pagination pagination = new Pagination(1, 150000, sortBy, asc); pagination.addFilterOption("geneGeneticInteraction.geneGeneAssociationObject.geneSymbol.displayText", interactorGeneSymbol); pagination.addFilterOption("geneGeneticInteraction.interactionId", source); @@ -378,6 +385,9 @@ public JsonResultResponse getMolecularInteract String reference, @Context UriInfo info) { long startTime = System.currentTimeMillis(); + if (StringUtils.isEmpty(sortBy)) { + sortBy = "geneMolecularInteraction.geneGeneAssociationObject.geneSymbol.displayText.keyword"; + } Pagination pagination = new Pagination(page, limit, sortBy, asc, new InteractionColumnFieldMapping()); pagination.addFilterOption("geneMolecularInteraction.interactorAType.name.keyword", moleculeType); pagination.addFilterOption("geneMolecularInteraction.geneGeneAssociationObject.geneSymbol.displayText", interactorGeneSymbol); @@ -422,6 +432,9 @@ public Response getMolecularInteractionsDownload(String id, String sortBy, Strin String source, String reference ) { + if (StringUtils.isEmpty(sortBy)) { + sortBy = "geneMolecularInteraction.geneGeneAssociationObject.geneSymbol.displayText.keyword"; + } Pagination pagination = new Pagination(1, 150000, sortBy, asc); pagination.addFilterOption("geneMolecularInteraction.interactorAType.name.keyword", moleculeType); pagination.addFilterOption("geneMolecularInteraction.geneGeneAssociationObject.geneSymbol.displayText", interactorGeneSymbol); diff --git a/agr_api/src/main/java/org/alliancegenome/api/service/GeneService.java b/agr_api/src/main/java/org/alliancegenome/api/service/GeneService.java index a3fcb54d6..fbda0b43a 100644 --- a/agr_api/src/main/java/org/alliancegenome/api/service/GeneService.java +++ b/agr_api/src/main/java/org/alliancegenome/api/service/GeneService.java @@ -1,8 +1,17 @@ package org.alliancegenome.api.service; -import com.fasterxml.jackson.databind.ObjectMapper; -import jakarta.enterprise.context.RequestScoped; -import jakarta.inject.Inject; +import static org.alliancegenome.cache.repository.helper.JsonResultResponse.DISTINCT_FIELD_VALUES; +import static org.elasticsearch.index.query.QueryBuilders.boolQuery; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + import org.alliancegenome.api.entity.AlleleVariantSequence; import org.alliancegenome.api.entity.GeneGeneticInteractionDocument; import org.alliancegenome.api.entity.GeneMolecularInteractionDocument; @@ -25,8 +34,6 @@ import org.apache.commons.lang3.StringUtils; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.index.query.BoolQueryBuilder; -import org.elasticsearch.index.query.MatchQueryBuilder; -import org.elasticsearch.index.query.TermQueryBuilder; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.bucket.MultiBucketsAggregation; @@ -35,12 +42,10 @@ import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; import org.elasticsearch.search.sort.SortOrder; -import java.time.LocalDateTime; -import java.util.*; -import java.util.stream.Collectors; +import com.fasterxml.jackson.databind.ObjectMapper; -import static org.alliancegenome.cache.repository.helper.JsonResultResponse.DISTINCT_FIELD_VALUES; -import static org.elasticsearch.index.query.QueryBuilders.boolQuery; +import jakarta.enterprise.context.RequestScoped; +import jakarta.inject.Inject; @RequestScoped public class GeneService { @@ -104,10 +109,20 @@ public JsonResultResponse getAllelesAndVariantInfo(String public JsonResultResponse getGeneticInteractions(String geneId, Pagination pagination) { BoolQueryBuilder query = boolQuery(); - query.should(new MatchQueryBuilder("geneGeneticInteraction.geneAssociationSubject.curie.keyword", geneId)); - query.should(new MatchQueryBuilder("geneGeneticInteraction.geneAssociationSubject.primaryExternalId.keyword", geneId)); - query.should(new MatchQueryBuilder("geneGeneticInteraction.geneAssociationSubject.modInternalId.keyword", geneId)); + + String[] idFields = { + "geneGeneticInteraction.geneAssociationSubject.curie.keyword", + "geneGeneticInteraction.geneAssociationSubject.primaryExternalId.keyword", + "geneGeneticInteraction.geneAssociationSubject.modInternalId.keyword" + }; + BoolQueryBuilder idQuery = boolQuery(); + Arrays.stream(idFields).forEach(idField -> { + BoolQueryBuilder orClause = elasticSearchHelper.getBooleanAndedQueryBuilder(idField, geneId); + idQuery.should(orClause); + }); + query.must(idQuery); + JsonResultResponse ret = new JsonResultResponse<>(); ret.setSupplementalData(getGeneticInteractionSupplementalData(query)); @@ -141,13 +156,19 @@ public JsonResultResponse getGeneticInteractions public JsonResultResponse getMolecularInteractions(String geneId, Pagination pagination) { BoolQueryBuilder query = boolQuery(); - BoolQueryBuilder query2 = boolQuery(); - query.must(query2); - query2.should(new MatchQueryBuilder("geneMolecularInteraction.geneAssociationSubject.curie.keyword", geneId)); - query2.should(new MatchQueryBuilder("geneMolecularInteraction.geneAssociationSubject.primaryExternalId.keyword", geneId)); - query2.should(new MatchQueryBuilder("geneMolecularInteraction.geneAssociationSubject.modInternalId.keyword", geneId)); + String[] idFields = { + "geneMolecularInteraction.geneAssociationSubject.curie.keyword", + "geneMolecularInteraction.geneAssociationSubject.primaryExternalId.keyword", + "geneMolecularInteraction.geneAssociationSubject.modInternalId.keyword" + }; + BoolQueryBuilder idQuery = boolQuery(); + Arrays.stream(idFields).forEach(idField -> { + BoolQueryBuilder orClause = elasticSearchHelper.getBooleanAndedQueryBuilder(idField, geneId); + idQuery.should(orClause); + }); - query.filter(new TermQueryBuilder("category", "gene_molecular_interaction")); + query.must(idQuery); + JsonResultResponse ret = new JsonResultResponse<>(); ret.setSupplementalData(getMolecularInteractionSupplementalData(query)); diff --git a/agr_api/src/main/java/org/alliancegenome/api/service/helper/ElasticSearchHelper.java b/agr_api/src/main/java/org/alliancegenome/api/service/helper/ElasticSearchHelper.java index 6c6542294..2cf674253 100644 --- a/agr_api/src/main/java/org/alliancegenome/api/service/helper/ElasticSearchHelper.java +++ b/agr_api/src/main/java/org/alliancegenome/api/service/helper/ElasticSearchHelper.java @@ -56,13 +56,12 @@ private void generateFilter(BoolQueryBuilder bool, String filterName, String fil } } } - //Log.info(bool); } /* * split filter values by white spaces and create and ANDed boolean query */ - private BoolQueryBuilder getBooleanAndedQueryBuilder(String filterName, String filterValue) { + public BoolQueryBuilder getBooleanAndedQueryBuilder(String filterName, String filterValue) { BoolQueryBuilder andClause = boolQuery(); String[] elements = escapeValue(filterValue).split(" "); Arrays.stream(elements).forEach(element -> andClause.must(QueryBuilders.queryStringQuery("*" + element + "*").field(filterName))); diff --git a/agr_java_core/src/main/java/org/alliancegenome/core/translators/tdf/GeneGeneticInteractionToTdfTranslator.java b/agr_java_core/src/main/java/org/alliancegenome/core/translators/tdf/GeneGeneticInteractionToTdfTranslator.java index b725e8384..e2dca441c 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/core/translators/tdf/GeneGeneticInteractionToTdfTranslator.java +++ b/agr_java_core/src/main/java/org/alliancegenome/core/translators/tdf/GeneGeneticInteractionToTdfTranslator.java @@ -5,6 +5,8 @@ import org.alliancegenome.api.entity.GeneGeneticInteractionDocument; import org.alliancegenome.core.config.ConfigHelper; +import org.alliancegenome.curation_api.model.entities.InformationContentEntity; +import org.alliancegenome.curation_api.model.entities.Reference; import org.apache.commons.collections.CollectionUtils; public class GeneGeneticInteractionToTdfTranslator { @@ -81,7 +83,10 @@ public String getAllRows(List interactions) { String referenceCuries = ""; if (CollectionUtils.isNotEmpty(interaction.getGeneGeneticInteraction().getEvidence())) { StringJoiner referenceJoiner = new StringJoiner(","); - interaction.getGeneGeneticInteraction().getEvidence().forEach(reference -> referenceJoiner.add(reference.getCurie())); + for (InformationContentEntity ice : interaction.getGeneGeneticInteraction().getEvidence()) { + Reference reference = (Reference) ice; + referenceJoiner.add(reference.getReferenceID()); + } referenceCuries = referenceJoiner.toString(); } joiner.add(referenceCuries); diff --git a/agr_java_core/src/main/java/org/alliancegenome/core/translators/tdf/GeneMolecularInteractionToTdfTranslator.java b/agr_java_core/src/main/java/org/alliancegenome/core/translators/tdf/GeneMolecularInteractionToTdfTranslator.java index f37731f01..10557a9e9 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/core/translators/tdf/GeneMolecularInteractionToTdfTranslator.java +++ b/agr_java_core/src/main/java/org/alliancegenome/core/translators/tdf/GeneMolecularInteractionToTdfTranslator.java @@ -5,6 +5,8 @@ import org.alliancegenome.api.entity.GeneMolecularInteractionDocument; import org.alliancegenome.core.config.ConfigHelper; +import org.alliancegenome.curation_api.model.entities.InformationContentEntity; +import org.alliancegenome.curation_api.model.entities.Reference; import org.apache.commons.collections.CollectionUtils; public class GeneMolecularInteractionToTdfTranslator { @@ -100,7 +102,10 @@ public String getAllRows(List interactions) { String referenceCuries = ""; if (CollectionUtils.isNotEmpty(interaction.getGeneMolecularInteraction().getEvidence())) { StringJoiner referenceJoiner = new StringJoiner(","); - interaction.getGeneMolecularInteraction().getEvidence().forEach(reference -> referenceJoiner.add(reference.getCurie())); + for (InformationContentEntity ice : interaction.getGeneMolecularInteraction().getEvidence()) { + Reference reference = (Reference) ice; + referenceJoiner.add(reference.getReferenceID()); + } referenceCuries = referenceJoiner.toString(); } joiner.add(referenceCuries); diff --git a/pom.xml b/pom.xml index c57f8c512..72e964ce1 100644 --- a/pom.xml +++ b/pom.xml @@ -32,7 +32,7 @@ quarkus-bom io.quarkus.platform ${quarkus.version} - v0.36.9 + v0.36.12