Skip to content

Commit c6fbf2c

Browse files
Merge pull request #1255 from alliance-genome/interactions_fixes
SCRUM-4077 / SCRUM-4078 / SCRUM-4795 / SCRUM-4825 Various interaction fixes
2 parents 58c1efd + 712713b commit c6fbf2c

File tree

6 files changed

+67
-24
lines changed

6 files changed

+67
-24
lines changed

agr_api/src/main/java/org/alliancegenome/api/controller/GeneController.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.alliancegenome.neo4j.view.HomologView;
3939
import org.alliancegenome.neo4j.view.OrthologyFilter;
4040
import org.apache.commons.collections.CollectionUtils;
41+
import org.apache.commons.lang3.StringUtils;
4142

4243
import java.util.*;
4344
import java.util.stream.Collectors;
@@ -291,6 +292,9 @@ public JsonResultResponse<GeneGeneticInteractionDocument> getGeneticInteractions
291292
@Context UriInfo info) {
292293
long startTime = System.currentTimeMillis();
293294

295+
if (StringUtils.isEmpty(sortBy)) {
296+
sortBy = "geneGeneticInteraction.geneGeneAssociationObject.geneSymbol.displayText.keyword";
297+
}
294298
Pagination pagination = new Pagination(page, limit, sortBy, asc, new InteractionColumnFieldMapping());
295299
pagination.addFilterOption("geneGeneticInteraction.geneGeneAssociationObject.geneSymbol.displayText", interactorGeneSymbol);
296300
pagination.addFilterOption("geneGeneticInteraction.interactionId", source);
@@ -341,6 +345,9 @@ public Response getGeneticInteractionsDownload(String id, String sortBy, String
341345
String phenotypes,
342346
String interactionType
343347
) {
348+
if (StringUtils.isEmpty(sortBy)) {
349+
sortBy = "geneGeneticInteraction.geneGeneAssociationObject.geneSymbol.displayText.keyword";
350+
}
344351
Pagination pagination = new Pagination(1, 150000, sortBy, asc);
345352
pagination.addFilterOption("geneGeneticInteraction.geneGeneAssociationObject.geneSymbol.displayText", interactorGeneSymbol);
346353
pagination.addFilterOption("geneGeneticInteraction.interactionId", source);
@@ -378,6 +385,9 @@ public JsonResultResponse<GeneMolecularInteractionDocument> getMolecularInteract
378385
String reference,
379386
@Context UriInfo info) {
380387
long startTime = System.currentTimeMillis();
388+
if (StringUtils.isEmpty(sortBy)) {
389+
sortBy = "geneMolecularInteraction.geneGeneAssociationObject.geneSymbol.displayText.keyword";
390+
}
381391
Pagination pagination = new Pagination(page, limit, sortBy, asc, new InteractionColumnFieldMapping());
382392
pagination.addFilterOption("geneMolecularInteraction.interactorAType.name.keyword", moleculeType);
383393
pagination.addFilterOption("geneMolecularInteraction.geneGeneAssociationObject.geneSymbol.displayText", interactorGeneSymbol);
@@ -422,6 +432,9 @@ public Response getMolecularInteractionsDownload(String id, String sortBy, Strin
422432
String source,
423433
String reference
424434
) {
435+
if (StringUtils.isEmpty(sortBy)) {
436+
sortBy = "geneMolecularInteraction.geneGeneAssociationObject.geneSymbol.displayText.keyword";
437+
}
425438
Pagination pagination = new Pagination(1, 150000, sortBy, asc);
426439
pagination.addFilterOption("geneMolecularInteraction.interactorAType.name.keyword", moleculeType);
427440
pagination.addFilterOption("geneMolecularInteraction.geneGeneAssociationObject.geneSymbol.displayText", interactorGeneSymbol);

agr_api/src/main/java/org/alliancegenome/api/service/GeneService.java

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
11
package org.alliancegenome.api.service;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
4-
import jakarta.enterprise.context.RequestScoped;
5-
import jakarta.inject.Inject;
3+
import static org.alliancegenome.cache.repository.helper.JsonResultResponse.DISTINCT_FIELD_VALUES;
4+
import static org.elasticsearch.index.query.QueryBuilders.boolQuery;
5+
6+
import java.time.LocalDateTime;
7+
import java.util.ArrayList;
8+
import java.util.Arrays;
9+
import java.util.HashMap;
10+
import java.util.LinkedHashMap;
11+
import java.util.List;
12+
import java.util.Map;
13+
import java.util.stream.Collectors;
14+
615
import org.alliancegenome.api.entity.AlleleVariantSequence;
716
import org.alliancegenome.api.entity.GeneGeneticInteractionDocument;
817
import org.alliancegenome.api.entity.GeneMolecularInteractionDocument;
@@ -25,8 +34,6 @@
2534
import org.apache.commons.lang3.StringUtils;
2635
import org.elasticsearch.action.search.SearchResponse;
2736
import org.elasticsearch.index.query.BoolQueryBuilder;
28-
import org.elasticsearch.index.query.MatchQueryBuilder;
29-
import org.elasticsearch.index.query.TermQueryBuilder;
3037
import org.elasticsearch.search.aggregations.AggregationBuilder;
3138
import org.elasticsearch.search.aggregations.AggregationBuilders;
3239
import org.elasticsearch.search.aggregations.bucket.MultiBucketsAggregation;
@@ -35,12 +42,10 @@
3542
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
3643
import org.elasticsearch.search.sort.SortOrder;
3744

38-
import java.time.LocalDateTime;
39-
import java.util.*;
40-
import java.util.stream.Collectors;
45+
import com.fasterxml.jackson.databind.ObjectMapper;
4146

42-
import static org.alliancegenome.cache.repository.helper.JsonResultResponse.DISTINCT_FIELD_VALUES;
43-
import static org.elasticsearch.index.query.QueryBuilders.boolQuery;
47+
import jakarta.enterprise.context.RequestScoped;
48+
import jakarta.inject.Inject;
4449

4550
@RequestScoped
4651
public class GeneService {
@@ -104,10 +109,20 @@ public JsonResultResponse<AlleleVariantSequence> getAllelesAndVariantInfo(String
104109

105110
public JsonResultResponse<GeneGeneticInteractionDocument> getGeneticInteractions(String geneId, Pagination pagination) {
106111
BoolQueryBuilder query = boolQuery();
107-
query.should(new MatchQueryBuilder("geneGeneticInteraction.geneAssociationSubject.curie.keyword", geneId));
108-
query.should(new MatchQueryBuilder("geneGeneticInteraction.geneAssociationSubject.primaryExternalId.keyword", geneId));
109-
query.should(new MatchQueryBuilder("geneGeneticInteraction.geneAssociationSubject.modInternalId.keyword", geneId));
112+
113+
String[] idFields = {
114+
"geneGeneticInteraction.geneAssociationSubject.curie.keyword",
115+
"geneGeneticInteraction.geneAssociationSubject.primaryExternalId.keyword",
116+
"geneGeneticInteraction.geneAssociationSubject.modInternalId.keyword"
117+
};
118+
BoolQueryBuilder idQuery = boolQuery();
119+
Arrays.stream(idFields).forEach(idField -> {
120+
BoolQueryBuilder orClause = elasticSearchHelper.getBooleanAndedQueryBuilder(idField, geneId);
121+
idQuery.should(orClause);
122+
});
110123

124+
query.must(idQuery);
125+
111126
JsonResultResponse<GeneGeneticInteractionDocument> ret = new JsonResultResponse<>();
112127
ret.setSupplementalData(getGeneticInteractionSupplementalData(query));
113128

@@ -141,13 +156,19 @@ public JsonResultResponse<GeneGeneticInteractionDocument> getGeneticInteractions
141156

142157
public JsonResultResponse<GeneMolecularInteractionDocument> getMolecularInteractions(String geneId, Pagination pagination) {
143158
BoolQueryBuilder query = boolQuery();
144-
BoolQueryBuilder query2 = boolQuery();
145-
query.must(query2);
146-
query2.should(new MatchQueryBuilder("geneMolecularInteraction.geneAssociationSubject.curie.keyword", geneId));
147-
query2.should(new MatchQueryBuilder("geneMolecularInteraction.geneAssociationSubject.primaryExternalId.keyword", geneId));
148-
query2.should(new MatchQueryBuilder("geneMolecularInteraction.geneAssociationSubject.modInternalId.keyword", geneId));
159+
String[] idFields = {
160+
"geneMolecularInteraction.geneAssociationSubject.curie.keyword",
161+
"geneMolecularInteraction.geneAssociationSubject.primaryExternalId.keyword",
162+
"geneMolecularInteraction.geneAssociationSubject.modInternalId.keyword"
163+
};
164+
BoolQueryBuilder idQuery = boolQuery();
165+
Arrays.stream(idFields).forEach(idField -> {
166+
BoolQueryBuilder orClause = elasticSearchHelper.getBooleanAndedQueryBuilder(idField, geneId);
167+
idQuery.should(orClause);
168+
});
149169

150-
query.filter(new TermQueryBuilder("category", "gene_molecular_interaction"));
170+
query.must(idQuery);
171+
151172
JsonResultResponse<GeneMolecularInteractionDocument> ret = new JsonResultResponse<>();
152173
ret.setSupplementalData(getMolecularInteractionSupplementalData(query));
153174

agr_api/src/main/java/org/alliancegenome/api/service/helper/ElasticSearchHelper.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,12 @@ private void generateFilter(BoolQueryBuilder bool, String filterName, String fil
5656
}
5757
}
5858
}
59-
//Log.info(bool);
6059
}
6160

6261
/*
6362
* split filter values by white spaces and create and ANDed boolean query
6463
*/
65-
private BoolQueryBuilder getBooleanAndedQueryBuilder(String filterName, String filterValue) {
64+
public BoolQueryBuilder getBooleanAndedQueryBuilder(String filterName, String filterValue) {
6665
BoolQueryBuilder andClause = boolQuery();
6766
String[] elements = escapeValue(filterValue).split(" ");
6867
Arrays.stream(elements).forEach(element -> andClause.must(QueryBuilders.queryStringQuery("*" + element + "*").field(filterName)));

agr_java_core/src/main/java/org/alliancegenome/core/translators/tdf/GeneGeneticInteractionToTdfTranslator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
import org.alliancegenome.api.entity.GeneGeneticInteractionDocument;
77
import org.alliancegenome.core.config.ConfigHelper;
8+
import org.alliancegenome.curation_api.model.entities.InformationContentEntity;
9+
import org.alliancegenome.curation_api.model.entities.Reference;
810
import org.apache.commons.collections.CollectionUtils;
911

1012
public class GeneGeneticInteractionToTdfTranslator {
@@ -81,7 +83,10 @@ public String getAllRows(List<GeneGeneticInteractionDocument> interactions) {
8183
String referenceCuries = "";
8284
if (CollectionUtils.isNotEmpty(interaction.getGeneGeneticInteraction().getEvidence())) {
8385
StringJoiner referenceJoiner = new StringJoiner(",");
84-
interaction.getGeneGeneticInteraction().getEvidence().forEach(reference -> referenceJoiner.add(reference.getCurie()));
86+
for (InformationContentEntity ice : interaction.getGeneGeneticInteraction().getEvidence()) {
87+
Reference reference = (Reference) ice;
88+
referenceJoiner.add(reference.getReferenceID());
89+
}
8590
referenceCuries = referenceJoiner.toString();
8691
}
8792
joiner.add(referenceCuries);

agr_java_core/src/main/java/org/alliancegenome/core/translators/tdf/GeneMolecularInteractionToTdfTranslator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
import org.alliancegenome.api.entity.GeneMolecularInteractionDocument;
77
import org.alliancegenome.core.config.ConfigHelper;
8+
import org.alliancegenome.curation_api.model.entities.InformationContentEntity;
9+
import org.alliancegenome.curation_api.model.entities.Reference;
810
import org.apache.commons.collections.CollectionUtils;
911

1012
public class GeneMolecularInteractionToTdfTranslator {
@@ -100,7 +102,10 @@ public String getAllRows(List<GeneMolecularInteractionDocument> interactions) {
100102
String referenceCuries = "";
101103
if (CollectionUtils.isNotEmpty(interaction.getGeneMolecularInteraction().getEvidence())) {
102104
StringJoiner referenceJoiner = new StringJoiner(",");
103-
interaction.getGeneMolecularInteraction().getEvidence().forEach(reference -> referenceJoiner.add(reference.getCurie()));
105+
for (InformationContentEntity ice : interaction.getGeneMolecularInteraction().getEvidence()) {
106+
Reference reference = (Reference) ice;
107+
referenceJoiner.add(reference.getReferenceID());
108+
}
104109
referenceCuries = referenceJoiner.toString();
105110
}
106111
joiner.add(referenceCuries);

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
<quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
3333
<quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
3434
<quarkus.platform.version>${quarkus.version}</quarkus.platform.version>
35-
<curation.version>v0.36.9</curation.version>
35+
<curation.version>v0.36.12</curation.version>
3636
<!-- <curation.version>0.0.0-SNAPSHOT</curation.version> -->
3737
</properties>
3838
<dependencyManagement>

0 commit comments

Comments
 (0)