From 05cd88dd0b0f64cbea77131dadbdbfde4f8ab71f Mon Sep 17 00:00:00 2001 From: Olin Blodgett Date: Sun, 2 Mar 2025 07:45:35 -0500 Subject: [PATCH 01/12] Added dynamic views to the indexer --- .../DiseaseAnnotationCurationIndexer.java | 4 +-- .../AGMDiseaseAnnotationInterface.java | 6 ++-- .../AlleleDiseaseAnnotationInterface.java | 6 ++-- .../interfaces/EcoTermRESTInterface.java | 14 ++------- .../interfaces/ForPublicFindInterface.java | 29 +++++++++++++++++++ .../GeneDiseaseAnnotationInterface.java | 6 ++-- .../GeneExpressionAnnotationInterface.java | 4 +-- .../GeneGeneticInteractionInterface.java | 6 ++-- .../GeneMolecularInteractionInterface.java | 6 ++-- ...GeneToGeneOrthologyGeneratedInterface.java | 17 +---------- .../GeneToGeneParalogyInterface.java | 20 +------------ .../interfaces/OrganizationInterface.java | 18 +----------- .../interfaces/ReferenceInterface.java | 4 +-- .../interfaces/VocabularyRESTInterface.java | 28 ------------------ .../VocabularyTermRESTInterface.java | 14 +++++++++ .../curation/service/EcoTermService.java | 2 +- .../service/GeneDiseaseAnnotationService.java | 6 ++-- .../service/GeneToGeneParalogyService.java | 2 +- .../curation/service/OrganizationService.java | 2 +- ...ervice.java => VocabularyTermService.java} | 8 ++--- 20 files changed, 74 insertions(+), 128 deletions(-) create mode 100644 agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ForPublicFindInterface.java delete mode 100644 agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/VocabularyRESTInterface.java create mode 100644 agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/VocabularyTermRESTInterface.java rename agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/{VocabularyService.java => VocabularyTermService.java} (71%) diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/DiseaseAnnotationCurationIndexer.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/DiseaseAnnotationCurationIndexer.java index 58d9dba6a..cf74af860 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/DiseaseAnnotationCurationIndexer.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/DiseaseAnnotationCurationIndexer.java @@ -19,7 +19,7 @@ import org.alliancegenome.indexer.indexers.curation.service.AGMDiseaseAnnotationService; import org.alliancegenome.indexer.indexers.curation.service.AlleleDiseaseAnnotationService; import org.alliancegenome.indexer.indexers.curation.service.GeneDiseaseAnnotationService; -import org.alliancegenome.indexer.indexers.curation.service.VocabularyService; +import org.alliancegenome.indexer.indexers.curation.service.VocabularyTermService; import org.alliancegenome.neo4j.entity.SpeciesType; import org.alliancegenome.neo4j.repository.DiseaseRepository; import org.apache.commons.collections4.CollectionUtils; @@ -38,7 +38,7 @@ public class DiseaseAnnotationCurationIndexer extends Indexer { private GeneDiseaseAnnotationService geneService = new GeneDiseaseAnnotationService(); private AlleleDiseaseAnnotationService alleleService = new AlleleDiseaseAnnotationService(); private AGMDiseaseAnnotationService agmService = new AGMDiseaseAnnotationService(); - private VocabularyService vocabService = new VocabularyService(); + private VocabularyTermService vocabService = new VocabularyTermService(); private DiseaseRepository diseaseRepository; private Map> closureMap; diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AGMDiseaseAnnotationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AGMDiseaseAnnotationInterface.java index e33ef8011..a387c2e13 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AGMDiseaseAnnotationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AGMDiseaseAnnotationInterface.java @@ -2,7 +2,6 @@ import java.util.HashMap; -import org.alliancegenome.curation_api.interfaces.base.BaseIdCrudInterface; import org.alliancegenome.curation_api.model.entities.AGMDiseaseAnnotation; import org.alliancegenome.curation_api.response.SearchResponse; import org.alliancegenome.curation_api.view.View; @@ -19,11 +18,10 @@ @Path("/agm-disease-annotation") @Produces({"application/json"}) @Consumes({"application/json"}) -public interface AGMDiseaseAnnotationInterface extends BaseIdCrudInterface { - +public interface AGMDiseaseAnnotationInterface extends ForPublicFindInterface { + @Override @POST @Path("/findForPublic") @JsonView({View.ForPublic.class}) SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); - } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AlleleDiseaseAnnotationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AlleleDiseaseAnnotationInterface.java index a232214e9..35aad30af 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AlleleDiseaseAnnotationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AlleleDiseaseAnnotationInterface.java @@ -2,7 +2,6 @@ import java.util.HashMap; -import org.alliancegenome.curation_api.interfaces.base.BaseIdCrudInterface; import org.alliancegenome.curation_api.model.entities.AlleleDiseaseAnnotation; import org.alliancegenome.curation_api.response.SearchResponse; import org.alliancegenome.curation_api.view.View; @@ -19,11 +18,10 @@ @Path("/allele-disease-annotation") @Produces({"application/json"}) @Consumes({"application/json"}) -public interface AlleleDiseaseAnnotationInterface extends BaseIdCrudInterface { - +public interface AlleleDiseaseAnnotationInterface extends ForPublicFindInterface { + @Override @POST @Path("/findForPublic") @JsonView({View.ForPublic.class}) SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); - } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/EcoTermRESTInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/EcoTermRESTInterface.java index 3cbf11191..98cebbbb8 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/EcoTermRESTInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/EcoTermRESTInterface.java @@ -1,25 +1,15 @@ package org.alliancegenome.indexer.indexers.curation.interfaces; +import org.alliancegenome.curation_api.interfaces.base.crud.BaseReadCurieControllerInterface; import org.alliancegenome.curation_api.model.entities.ontology.ECOTerm; -import org.alliancegenome.curation_api.response.ObjectResponse; -import org.alliancegenome.curation_api.view.View; - -import com.fasterxml.jackson.annotation.JsonView; import jakarta.ws.rs.Consumes; -import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; -import jakarta.ws.rs.PathParam; import jakarta.ws.rs.Produces; @Path("/ecoterm") @Produces({"application/json"}) @Consumes({"application/json"}) -public interface EcoTermRESTInterface { - - @GET - @Path("/{curie}") - @JsonView({View.FieldsAndLists.class}) - ObjectResponse find(@PathParam("curie") String curie); +public interface EcoTermRESTInterface extends BaseReadCurieControllerInterface { } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ForPublicFindInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ForPublicFindInterface.java new file mode 100644 index 000000000..971a5f249 --- /dev/null +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ForPublicFindInterface.java @@ -0,0 +1,29 @@ +package org.alliancegenome.indexer.indexers.curation.interfaces; + +import java.util.HashMap; + +import org.alliancegenome.curation_api.response.SearchResponse; + +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.QueryParam; + +public interface ForPublicFindInterface { + + @POST + @Path("/findForPublic") + SearchResponse findForPublic( + @DefaultValue("0") @QueryParam("page") Integer page, + @DefaultValue("10") @QueryParam("limit") Integer limit, + @DefaultValue("ForPublic") @QueryParam("view") String view, + HashMap params); + + @POST + @Path("/findForPublic") + SearchResponse findForPublic( + @DefaultValue("0") @QueryParam("page") Integer page, + @DefaultValue("10") @QueryParam("limit") Integer limit, + HashMap params); + +} diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneDiseaseAnnotationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneDiseaseAnnotationInterface.java index 232a03b68..44f08ef8f 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneDiseaseAnnotationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneDiseaseAnnotationInterface.java @@ -2,7 +2,6 @@ import java.util.HashMap; -import org.alliancegenome.curation_api.interfaces.base.BaseIdCrudInterface; import org.alliancegenome.curation_api.model.entities.GeneDiseaseAnnotation; import org.alliancegenome.curation_api.response.SearchResponse; import org.alliancegenome.curation_api.view.View; @@ -19,11 +18,10 @@ @Path("/gene-disease-annotation") @Produces({"application/json"}) @Consumes({"application/json"}) -public interface GeneDiseaseAnnotationInterface extends BaseIdCrudInterface { - +public interface GeneDiseaseAnnotationInterface extends ForPublicFindInterface { + @Override @POST @Path("/findForPublic") @JsonView({View.ForPublic.class}) SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); - } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneExpressionAnnotationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneExpressionAnnotationInterface.java index 754a26d22..0120d7775 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneExpressionAnnotationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneExpressionAnnotationInterface.java @@ -2,7 +2,6 @@ import java.util.HashMap; -import org.alliancegenome.curation_api.interfaces.base.BaseIdCrudInterface; import org.alliancegenome.curation_api.model.entities.GeneExpressionAnnotation; import org.alliancegenome.curation_api.response.SearchResponse; import org.alliancegenome.curation_api.view.View; @@ -19,7 +18,8 @@ @Path("/gene-expression-annotation") @Produces({"application/json"}) @Consumes({"application/json"}) -public interface GeneExpressionAnnotationInterface extends BaseIdCrudInterface { +public interface GeneExpressionAnnotationInterface extends ForPublicFindInterface { + @Override @POST @Path("/findForPublic") @JsonView({View.ForPublic.class}) diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneGeneticInteractionInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneGeneticInteractionInterface.java index 7b8b90854..24efdfe74 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneGeneticInteractionInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneGeneticInteractionInterface.java @@ -2,7 +2,6 @@ import java.util.HashMap; -import org.alliancegenome.curation_api.interfaces.base.BaseIdCrudInterface; import org.alliancegenome.curation_api.model.entities.GeneGeneticInteraction; import org.alliancegenome.curation_api.response.SearchResponse; import org.alliancegenome.curation_api.view.View; @@ -19,11 +18,10 @@ @Path("/gene-genetic-interaction") @Produces({"application/json"}) @Consumes({"application/json"}) -public interface GeneGeneticInteractionInterface extends BaseIdCrudInterface { - +public interface GeneGeneticInteractionInterface extends ForPublicFindInterface { + @Override @POST @Path("/findForPublic") @JsonView({View.ForPublic.class}) SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); - } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneMolecularInteractionInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneMolecularInteractionInterface.java index a2aada415..87ce658cc 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneMolecularInteractionInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneMolecularInteractionInterface.java @@ -2,7 +2,6 @@ import java.util.HashMap; -import org.alliancegenome.curation_api.interfaces.base.BaseIdCrudInterface; import org.alliancegenome.curation_api.model.entities.GeneMolecularInteraction; import org.alliancegenome.curation_api.response.SearchResponse; import org.alliancegenome.curation_api.view.View; @@ -19,11 +18,10 @@ @Path("/gene-molecular-interaction") @Produces({"application/json"}) @Consumes({"application/json"}) -public interface GeneMolecularInteractionInterface extends BaseIdCrudInterface { - +public interface GeneMolecularInteractionInterface extends ForPublicFindInterface { + @Override @POST @Path("/findForPublic") @JsonView({View.ForPublic.class}) SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); - } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneOrthologyGeneratedInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneOrthologyGeneratedInterface.java index b065048ad..d83b40fe8 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneOrthologyGeneratedInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneOrthologyGeneratedInterface.java @@ -1,29 +1,14 @@ package org.alliancegenome.indexer.indexers.curation.interfaces; -import java.util.HashMap; - -import org.alliancegenome.curation_api.interfaces.base.BaseIdCrudInterface; import org.alliancegenome.curation_api.model.entities.orthology.GeneToGeneOrthologyGenerated; -import org.alliancegenome.curation_api.response.SearchResponse; -import org.alliancegenome.curation_api.view.View; - -import com.fasterxml.jackson.annotation.JsonView; import jakarta.ws.rs.Consumes; -import jakarta.ws.rs.DefaultValue; -import jakarta.ws.rs.POST; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; -import jakarta.ws.rs.QueryParam; @Path("/orthologygenerated") @Produces({"application/json"}) @Consumes({"application/json"}) -public interface GeneToGeneOrthologyGeneratedInterface extends BaseIdCrudInterface { - - @POST - @Path("/findForPublic") - @JsonView({View.ForPublic.class}) - SearchResponse find(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); +public interface GeneToGeneOrthologyGeneratedInterface extends ForPublicFindInterface { } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneParalogyInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneParalogyInterface.java index 1cd3475df..4750d1184 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneParalogyInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneParalogyInterface.java @@ -1,32 +1,14 @@ package org.alliancegenome.indexer.indexers.curation.interfaces; -import java.util.HashMap; - -import org.alliancegenome.curation_api.interfaces.base.BaseIdCrudInterface; import org.alliancegenome.curation_api.model.entities.GeneToGeneParalogy; -import org.alliancegenome.curation_api.response.SearchResponse; -import org.alliancegenome.curation_api.view.View; - -import com.fasterxml.jackson.annotation.JsonView; import jakarta.ws.rs.Consumes; -import jakarta.ws.rs.DefaultValue; -import jakarta.ws.rs.POST; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; -import jakarta.ws.rs.QueryParam; @Path("/paralogy") @Produces({"application/json"}) @Consumes({"application/json"}) -public interface GeneToGeneParalogyInterface extends BaseIdCrudInterface { - @POST - @Path("/findForPublic") - @JsonView({View.ForPublic.class}) - SearchResponse find( - @DefaultValue("0") @QueryParam("page") Integer page, - @DefaultValue("10") @QueryParam("limit") Integer limit, - HashMap params - ); +public interface GeneToGeneParalogyInterface extends ForPublicFindInterface { } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/OrganizationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/OrganizationInterface.java index 38bb69218..cc7263a61 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/OrganizationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/OrganizationInterface.java @@ -1,30 +1,14 @@ package org.alliancegenome.indexer.indexers.curation.interfaces; -import java.util.HashMap; - -import org.alliancegenome.curation_api.interfaces.base.BaseIdCrudInterface; import org.alliancegenome.curation_api.model.entities.Organization; -import org.alliancegenome.curation_api.response.SearchResponse; -import org.alliancegenome.curation_api.view.View; - -import com.fasterxml.jackson.annotation.JsonView; import jakarta.ws.rs.Consumes; -import jakarta.ws.rs.DefaultValue; -import jakarta.ws.rs.POST; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; -import jakarta.ws.rs.QueryParam; @Path("/organization") @Produces({ "application/json" }) @Consumes({ "application/json" }) -public interface OrganizationInterface extends BaseIdCrudInterface { - - @Override - @POST - @Path("/find") - @JsonView({ View.FieldsAndLists.class }) - SearchResponse find(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); +public interface OrganizationInterface extends ForPublicFindInterface { } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ReferenceInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ReferenceInterface.java index 22ef663eb..9916b49bf 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ReferenceInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ReferenceInterface.java @@ -1,6 +1,6 @@ package org.alliancegenome.indexer.indexers.curation.interfaces; -import org.alliancegenome.curation_api.interfaces.base.BaseIdCrudInterface; +import org.alliancegenome.curation_api.interfaces.base.crud.BaseReadCurieControllerInterface; import org.alliancegenome.curation_api.model.entities.Reference; import org.alliancegenome.curation_api.response.ObjectResponse; import org.alliancegenome.curation_api.view.View; @@ -16,7 +16,7 @@ @Path("/reference") @Produces({"application/json"}) @Consumes({"application/json"}) -public interface ReferenceInterface extends BaseIdCrudInterface { +public interface ReferenceInterface extends BaseReadCurieControllerInterface { @GET @Path("/{curie}") diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/VocabularyRESTInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/VocabularyRESTInterface.java deleted file mode 100644 index c5ca43bc4..000000000 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/VocabularyRESTInterface.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.alliancegenome.indexer.indexers.curation.interfaces; - -import java.util.HashMap; - -import org.alliancegenome.curation_api.model.entities.VocabularyTerm; -import org.alliancegenome.curation_api.response.SearchResponse; -import org.alliancegenome.curation_api.view.View; - -import com.fasterxml.jackson.annotation.JsonView; - -import jakarta.ws.rs.Consumes; -import jakarta.ws.rs.DefaultValue; -import jakarta.ws.rs.POST; -import jakarta.ws.rs.Path; -import jakarta.ws.rs.Produces; -import jakarta.ws.rs.QueryParam; - -@Path("/vocabularyterm") -@Produces({ "application/json" }) -@Consumes({ "application/json" }) -public interface VocabularyRESTInterface { - - @POST - @Path("/find") - @JsonView({ View.FieldsAndLists.class }) - SearchResponse find(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); - -} diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/VocabularyTermRESTInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/VocabularyTermRESTInterface.java new file mode 100644 index 000000000..d8233e5af --- /dev/null +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/VocabularyTermRESTInterface.java @@ -0,0 +1,14 @@ +package org.alliancegenome.indexer.indexers.curation.interfaces; + +import org.alliancegenome.curation_api.model.entities.VocabularyTerm; + +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; + +@Path("/vocabularyterm") +@Produces({ "application/json" }) +@Consumes({ "application/json" }) +public interface VocabularyTermRESTInterface extends ForPublicFindInterface { + +} diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/EcoTermService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/EcoTermService.java index cdbba8fcc..3970f36d3 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/EcoTermService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/EcoTermService.java @@ -13,7 +13,7 @@ public class EcoTermService { private EcoTermRESTInterface ecoTermApi = RestProxyFactory.createProxy(EcoTermRESTInterface.class, ConfigHelper.getCurationApiUrl(), RestConfig.config); public ECOTerm getEcoTerm(String curie) { - ObjectResponse response = ecoTermApi.find(curie); + ObjectResponse response = ecoTermApi.getByCurie(curie); return response.getEntity(); } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneDiseaseAnnotationService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneDiseaseAnnotationService.java index 4e216aa2b..16ca84c7a 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneDiseaseAnnotationService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneDiseaseAnnotationService.java @@ -13,10 +13,10 @@ import org.alliancegenome.core.config.ConfigHelper; import org.alliancegenome.curation_api.model.entities.AGMDiseaseAnnotation; import org.alliancegenome.curation_api.model.entities.AlleleDiseaseAnnotation; -import org.alliancegenome.curation_api.model.entities.Organization; import org.alliancegenome.curation_api.model.entities.DiseaseAnnotation; import org.alliancegenome.curation_api.model.entities.Gene; import org.alliancegenome.curation_api.model.entities.GeneDiseaseAnnotation; +import org.alliancegenome.curation_api.model.entities.Organization; import org.alliancegenome.curation_api.model.entities.Reference; import org.alliancegenome.curation_api.model.entities.VocabularyTerm; import org.alliancegenome.curation_api.model.entities.ontology.ECOTerm; @@ -38,7 +38,7 @@ public class GeneDiseaseAnnotationService extends BaseDiseaseAnnotationService { private final GeneDiseaseAnnotationInterface geneApi = RestProxyFactory.createProxy(GeneDiseaseAnnotationInterface.class, ConfigHelper.getCurationApiUrl(), RestConfig.config); private final GeneToGeneOrthologyGeneratedInterface orthologyApi = RestProxyFactory.createProxy(GeneToGeneOrthologyGeneratedInterface.class, ConfigHelper.getCurationApiUrl(), RestConfig.config); - private VocabularyService vocabService = new VocabularyService(); + private VocabularyTermService vocabService = new VocabularyTermService(); private EcoTermService ecoTermService = new EcoTermService(); private OrganizationService orgService = new OrganizationService(); private ReferenceService referenceService = new ReferenceService(); @@ -126,7 +126,7 @@ public Map> getOrthologousGeneDiseaseAnnotations(M for (String geneID : geneIDs) { List focusDiseaseAnnotations = geneMap.get(geneID).getRight(); params.put("subjectGene.primaryExternalId", geneID); - SearchResponse response = orthologyApi.find(0, 500, params); + SearchResponse response = orthologyApi.findForPublic(0, 500, params); for (GeneToGeneOrthologyGenerated geneGeneOrthology : response.getResults()) { Gene orthologousGene = geneGeneOrthology.getObjectGene(); if (!isValidNeoEntity(allNeoGeneIDs, orthologousGene.getIdentifier()) || orthologousGene.getObsolete() || orthologousGene.getInternal()) { diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneToGeneParalogyService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneToGeneParalogyService.java index 754b2cacc..11e647d5d 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneToGeneParalogyService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneToGeneParalogyService.java @@ -18,6 +18,6 @@ public SearchResponse getGeneToGeneParalogy(Integer page, In HashMap params = new HashMap<>(); params.put("internal", false); params.put("obsolete", false); - return paralogyApi.find(page, limit, params); + return paralogyApi.findForPublic(page, limit, params); } } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/OrganizationService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/OrganizationService.java index 67c7e39b3..36cfa56be 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/OrganizationService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/OrganizationService.java @@ -26,7 +26,7 @@ public Organization getOrganization(String abbreviation) { } HashMap params = new HashMap<>(); params.put("abbreviation", abbreviation); - SearchResponse response = organizationApi.find(0, 1000, params); + SearchResponse response = organizationApi.findForPublic(0, 1000, params); List list = response.getResults(); if (CollectionUtils.isEmpty(list) || list.size() > 1) { throw new RuntimeException("Could not find organization by abbreviation " + abbreviation); diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/VocabularyService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/VocabularyTermService.java similarity index 71% rename from agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/VocabularyService.java rename to agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/VocabularyTermService.java index 01895fd65..84923e679 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/VocabularyService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/VocabularyTermService.java @@ -6,13 +6,13 @@ import org.alliancegenome.curation_api.model.entities.VocabularyTerm; import org.alliancegenome.curation_api.response.SearchResponse; import org.alliancegenome.indexer.RestConfig; -import org.alliancegenome.indexer.indexers.curation.interfaces.VocabularyRESTInterface; +import org.alliancegenome.indexer.indexers.curation.interfaces.VocabularyTermRESTInterface; import si.mazi.rescu.RestProxyFactory; -public class VocabularyService { +public class VocabularyTermService { - private VocabularyRESTInterface vocabularyApi = RestProxyFactory.createProxy(VocabularyRESTInterface.class, ConfigHelper.getCurationApiUrl(), RestConfig.config); + private VocabularyTermRESTInterface vocabularyApi = RestProxyFactory.createProxy(VocabularyTermRESTInterface.class, ConfigHelper.getCurationApiUrl(), RestConfig.config); private HashMap terms; @@ -23,7 +23,7 @@ public HashMap getDiseaseRelationTerms() { HashMap params = new HashMap<>(); params.put("vocabulary.name", "Disease Relation"); - SearchResponse response = vocabularyApi.find(0, 1000, params); + SearchResponse response = vocabularyApi.findForPublic(0, 1000, params); terms = new HashMap<>(); for (VocabularyTerm vt : response.getResults()) { terms.put(vt.getName(), vt); From d95a17e0539859f405e46cb0388d1de00c8cadf5 Mon Sep 17 00:00:00 2001 From: Olin Blodgett Date: Sun, 2 Mar 2025 07:50:21 -0500 Subject: [PATCH 02/12] Changed reference endpoint --- .../curation/interfaces/ReferenceInterface.java | 11 ----------- .../indexers/curation/service/ReferenceService.java | 2 +- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ReferenceInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ReferenceInterface.java index 9916b49bf..148de4895 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ReferenceInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ReferenceInterface.java @@ -2,15 +2,9 @@ import org.alliancegenome.curation_api.interfaces.base.crud.BaseReadCurieControllerInterface; import org.alliancegenome.curation_api.model.entities.Reference; -import org.alliancegenome.curation_api.response.ObjectResponse; -import org.alliancegenome.curation_api.view.View; - -import com.fasterxml.jackson.annotation.JsonView; import jakarta.ws.rs.Consumes; -import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; -import jakarta.ws.rs.PathParam; import jakarta.ws.rs.Produces; @Path("/reference") @@ -18,9 +12,4 @@ @Consumes({"application/json"}) public interface ReferenceInterface extends BaseReadCurieControllerInterface { - @GET - @Path("/{curie}") - @JsonView({View.FieldsAndLists.class}) - ObjectResponse get(@PathParam("curie") String curie); - } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/ReferenceService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/ReferenceService.java index c44cf454d..f9be92acc 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/ReferenceService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/ReferenceService.java @@ -22,7 +22,7 @@ public Reference getReference(String curie) { if (ref != null) { return ref; } - ObjectResponse objectRef = referenceApi.get(curie); + ObjectResponse objectRef = referenceApi.getByCurie(curie); Reference reference = objectRef.getEntity(); if (reference == null) { throw new RuntimeException("Could not find Reference by curie " + curie); From 4e42609c32a726a6a44520ee012e7ae2fa95aaaa Mon Sep 17 00:00:00 2001 From: Olin Blodgett Date: Sun, 2 Mar 2025 07:53:18 -0500 Subject: [PATCH 03/12] Switched out text for static string --- .../curation/interfaces/AGMDiseaseAnnotationInterface.java | 5 +++-- .../interfaces/AlleleDiseaseAnnotationInterface.java | 5 +++-- .../indexers/curation/interfaces/EcoTermRESTInterface.java | 5 +++-- .../curation/interfaces/GeneDiseaseAnnotationInterface.java | 5 +++-- .../interfaces/GeneExpressionAnnotationInterface.java | 5 +++-- .../curation/interfaces/GeneGeneticInteractionInterface.java | 5 +++-- .../interfaces/GeneMolecularInteractionInterface.java | 5 +++-- .../interfaces/GeneToGeneOrthologyGeneratedInterface.java | 5 +++-- .../curation/interfaces/GeneToGeneParalogyInterface.java | 5 +++-- .../indexers/curation/interfaces/OrganizationInterface.java | 5 +++-- .../indexers/curation/interfaces/ReferenceInterface.java | 5 +++-- .../curation/interfaces/VocabularyTermRESTInterface.java | 5 +++-- 12 files changed, 36 insertions(+), 24 deletions(-) diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AGMDiseaseAnnotationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AGMDiseaseAnnotationInterface.java index a387c2e13..3c188c932 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AGMDiseaseAnnotationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AGMDiseaseAnnotationInterface.java @@ -14,10 +14,11 @@ import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; @Path("/agm-disease-annotation") -@Produces({"application/json"}) -@Consumes({"application/json"}) +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) public interface AGMDiseaseAnnotationInterface extends ForPublicFindInterface { @Override @POST diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AlleleDiseaseAnnotationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AlleleDiseaseAnnotationInterface.java index 35aad30af..a4f273a9a 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AlleleDiseaseAnnotationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AlleleDiseaseAnnotationInterface.java @@ -14,10 +14,11 @@ import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; @Path("/allele-disease-annotation") -@Produces({"application/json"}) -@Consumes({"application/json"}) +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) public interface AlleleDiseaseAnnotationInterface extends ForPublicFindInterface { @Override @POST diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/EcoTermRESTInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/EcoTermRESTInterface.java index 98cebbbb8..3eeac43e5 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/EcoTermRESTInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/EcoTermRESTInterface.java @@ -6,10 +6,11 @@ import jakarta.ws.rs.Consumes; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; @Path("/ecoterm") -@Produces({"application/json"}) -@Consumes({"application/json"}) +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) public interface EcoTermRESTInterface extends BaseReadCurieControllerInterface { } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneDiseaseAnnotationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneDiseaseAnnotationInterface.java index 44f08ef8f..f712a25cb 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneDiseaseAnnotationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneDiseaseAnnotationInterface.java @@ -14,10 +14,11 @@ import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; @Path("/gene-disease-annotation") -@Produces({"application/json"}) -@Consumes({"application/json"}) +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) public interface GeneDiseaseAnnotationInterface extends ForPublicFindInterface { @Override @POST diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneExpressionAnnotationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneExpressionAnnotationInterface.java index 0120d7775..b4f0827be 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneExpressionAnnotationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneExpressionAnnotationInterface.java @@ -14,10 +14,11 @@ import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; @Path("/gene-expression-annotation") -@Produces({"application/json"}) -@Consumes({"application/json"}) +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) public interface GeneExpressionAnnotationInterface extends ForPublicFindInterface { @Override @POST diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneGeneticInteractionInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneGeneticInteractionInterface.java index 24efdfe74..e5585c304 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneGeneticInteractionInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneGeneticInteractionInterface.java @@ -14,10 +14,11 @@ import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; @Path("/gene-genetic-interaction") -@Produces({"application/json"}) -@Consumes({"application/json"}) +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) public interface GeneGeneticInteractionInterface extends ForPublicFindInterface { @Override @POST diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneMolecularInteractionInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneMolecularInteractionInterface.java index 87ce658cc..cc0129c02 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneMolecularInteractionInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneMolecularInteractionInterface.java @@ -14,10 +14,11 @@ import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; @Path("/gene-molecular-interaction") -@Produces({"application/json"}) -@Consumes({"application/json"}) +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) public interface GeneMolecularInteractionInterface extends ForPublicFindInterface { @Override @POST diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneOrthologyGeneratedInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneOrthologyGeneratedInterface.java index d83b40fe8..d89b5c5be 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneOrthologyGeneratedInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneOrthologyGeneratedInterface.java @@ -5,10 +5,11 @@ import jakarta.ws.rs.Consumes; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; @Path("/orthologygenerated") -@Produces({"application/json"}) -@Consumes({"application/json"}) +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) public interface GeneToGeneOrthologyGeneratedInterface extends ForPublicFindInterface { } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneParalogyInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneParalogyInterface.java index 4750d1184..26a547b0a 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneParalogyInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneParalogyInterface.java @@ -5,10 +5,11 @@ import jakarta.ws.rs.Consumes; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; @Path("/paralogy") -@Produces({"application/json"}) -@Consumes({"application/json"}) +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) public interface GeneToGeneParalogyInterface extends ForPublicFindInterface { } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/OrganizationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/OrganizationInterface.java index cc7263a61..c27aa6989 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/OrganizationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/OrganizationInterface.java @@ -5,10 +5,11 @@ import jakarta.ws.rs.Consumes; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; @Path("/organization") -@Produces({ "application/json" }) -@Consumes({ "application/json" }) +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) public interface OrganizationInterface extends ForPublicFindInterface { } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ReferenceInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ReferenceInterface.java index 148de4895..5de917ab6 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ReferenceInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ReferenceInterface.java @@ -6,10 +6,11 @@ import jakarta.ws.rs.Consumes; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; @Path("/reference") -@Produces({"application/json"}) -@Consumes({"application/json"}) +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) public interface ReferenceInterface extends BaseReadCurieControllerInterface { } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/VocabularyTermRESTInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/VocabularyTermRESTInterface.java index d8233e5af..d0a75e61c 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/VocabularyTermRESTInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/VocabularyTermRESTInterface.java @@ -5,10 +5,11 @@ import jakarta.ws.rs.Consumes; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; @Path("/vocabularyterm") -@Produces({ "application/json" }) -@Consumes({ "application/json" }) +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) public interface VocabularyTermRESTInterface extends ForPublicFindInterface { } From 6f64c21e40cffb786398f388981782dfc83b4712 Mon Sep 17 00:00:00 2001 From: Olin Blodgett Date: Sun, 2 Mar 2025 07:56:05 -0500 Subject: [PATCH 04/12] Refactored vocab server --- .../curation/service/GeneDiseaseAnnotationService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneDiseaseAnnotationService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneDiseaseAnnotationService.java index 16ca84c7a..92993f5e7 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneDiseaseAnnotationService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneDiseaseAnnotationService.java @@ -38,7 +38,7 @@ public class GeneDiseaseAnnotationService extends BaseDiseaseAnnotationService { private final GeneDiseaseAnnotationInterface geneApi = RestProxyFactory.createProxy(GeneDiseaseAnnotationInterface.class, ConfigHelper.getCurationApiUrl(), RestConfig.config); private final GeneToGeneOrthologyGeneratedInterface orthologyApi = RestProxyFactory.createProxy(GeneToGeneOrthologyGeneratedInterface.class, ConfigHelper.getCurationApiUrl(), RestConfig.config); - private VocabularyTermService vocabService = new VocabularyTermService(); + private VocabularyTermService vocabularyTermService = new VocabularyTermService(); private EcoTermService ecoTermService = new EcoTermService(); private OrganizationService orgService = new OrganizationService(); private ReferenceService referenceService = new ReferenceService(); @@ -108,8 +108,8 @@ public Map> getOrthologousGeneDiseaseAnnotations(M params.put("obsolete", false); params.put("strictFilter", true); - VocabularyTerm isMarkerViaOrthology = vocabService.getDiseaseRelationTerms().get("is_marker_via_orthology"); - VocabularyTerm isImplicatedViaOrthology = vocabService.getDiseaseRelationTerms().get("is_implicated_via_orthology"); + VocabularyTerm isMarkerViaOrthology = vocabularyTermService.getDiseaseRelationTerms().get("is_marker_via_orthology"); + VocabularyTerm isImplicatedViaOrthology = vocabularyTermService.getDiseaseRelationTerms().get("is_implicated_via_orthology"); ECOTerm ecoTermIEA = ecoTermService.getEcoTerm("ECO:0000501"); // hard code MGI:6194238 with corresponding AGRKB ID Reference allianceReference = referenceService.getReference("AGRKB:101000000828456"); From ae564e91fd5c1bc6f9e9ee615f1117a0a74c8bda Mon Sep 17 00:00:00 2001 From: Olin Blodgett Date: Mon, 3 Mar 2025 15:53:40 -0500 Subject: [PATCH 05/12] Refactor vocabualry service --- .../PhenotypeAnnotationCurationIndexer.java | 36 +++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/PhenotypeAnnotationCurationIndexer.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/PhenotypeAnnotationCurationIndexer.java index 6438a9f0c..2615807cf 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/PhenotypeAnnotationCurationIndexer.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/PhenotypeAnnotationCurationIndexer.java @@ -1,11 +1,27 @@ package org.alliancegenome.indexer.indexers.curation; -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.extern.slf4j.Slf4j; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Optional; +import java.util.concurrent.LinkedBlockingDeque; + import org.alliancegenome.api.entity.AllelePhenotypeAnnotationDocument; import org.alliancegenome.api.entity.GenePhenotypeAnnotationDocument; import org.alliancegenome.api.entity.PhenotypeAnnotationDocument; -import org.alliancegenome.curation_api.model.entities.*; +import org.alliancegenome.curation_api.model.entities.AGMPhenotypeAnnotation; +import org.alliancegenome.curation_api.model.entities.AffectedGenomicModel; +import org.alliancegenome.curation_api.model.entities.Allele; +import org.alliancegenome.curation_api.model.entities.AllelePhenotypeAnnotation; +import org.alliancegenome.curation_api.model.entities.BiologicalEntity; +import org.alliancegenome.curation_api.model.entities.CrossReference; +import org.alliancegenome.curation_api.model.entities.Gene; +import org.alliancegenome.curation_api.model.entities.GenePhenotypeAnnotation; +import org.alliancegenome.curation_api.model.entities.PhenotypeAnnotation; +import org.alliancegenome.curation_api.model.entities.Reference; +import org.alliancegenome.curation_api.model.entities.VocabularyTerm; import org.alliancegenome.es.util.ProcessDisplayHelper; import org.alliancegenome.indexer.RestConfig; import org.alliancegenome.indexer.config.IndexerConfig; @@ -13,13 +29,13 @@ import org.alliancegenome.indexer.indexers.curation.service.AGMPhenotypeAnnotationService; import org.alliancegenome.indexer.indexers.curation.service.AllelePhenotypeAnnotationService; import org.alliancegenome.indexer.indexers.curation.service.GenePhenotypeAnnotationService; -import org.alliancegenome.indexer.indexers.curation.service.VocabularyService; +import org.alliancegenome.indexer.indexers.curation.service.VocabularyTermService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.tuple.Pair; -import java.util.*; -import java.util.Map.Entry; -import java.util.concurrent.LinkedBlockingDeque; +import com.fasterxml.jackson.databind.ObjectMapper; + +import lombok.extern.slf4j.Slf4j; @Slf4j public class PhenotypeAnnotationCurationIndexer extends Indexer { @@ -27,7 +43,7 @@ public class PhenotypeAnnotationCurationIndexer extends Indexer { private GenePhenotypeAnnotationService geneService = new GenePhenotypeAnnotationService(); private AllelePhenotypeAnnotationService alleleService = new AllelePhenotypeAnnotationService(); private AGMPhenotypeAnnotationService agmService = new AGMPhenotypeAnnotationService(); - private VocabularyService vocabService = new VocabularyService(); + private VocabularyTermService vocabTermService = new VocabularyTermService(); private Map>> geneMap = new HashMap<>(); private Map>> alleleMap = new HashMap<>(); private Map>> agmMap = new HashMap<>(); @@ -70,7 +86,7 @@ private List createGenePhenotypeAnnotationDocum ProcessDisplayHelper ph = new ProcessDisplayHelper(10000); ph.startProcess("Creating Gene Phenotype Annotations", geneMap.size()); - final VocabularyTerm relationIsImplicatedIn = vocabService.getDiseaseRelationTerms().get("is_implicated_in"); + final VocabularyTerm relationIsImplicatedIn = vocabTermService.getDiseaseRelationTerms().get("is_implicated_in"); for (Entry>> pairMap : geneMap.entrySet()) { HashMap lookup = new HashMap<>(); @@ -209,7 +225,7 @@ private List createAllelePhenotypeAnnotationD ProcessDisplayHelper ph = new ProcessDisplayHelper(10000); ph.startProcess("Creating Allele Disease Annotations", alleleMap.size()); - VocabularyTerm relation = vocabService.getDiseaseRelationTerms().get("is_implicated_in"); + VocabularyTerm relation = vocabTermService.getDiseaseRelationTerms().get("is_implicated_in"); for (Entry>> pairMap : alleleMap.entrySet()) { HashMap lookup = new HashMap<>(); From 960142c5afb3345f27491c5292f8ca559f75e951 Mon Sep 17 00:00:00 2001 From: Olin Blodgett Date: Mon, 3 Mar 2025 19:39:08 -0500 Subject: [PATCH 06/12] Removed more neo depends --- .../indexer/indexers/GoIndexer.java | 7 +- .../DiseaseAnnotationCurationIndexer.java | 56 ++-- ...GeneGeneticInteractionCurationIndexer.java | 5 +- ...neMolecularInteractionCurationIndexer.java | 4 +- .../curation/GeneToGeneParalogyIndexer.java | 5 +- .../es/index/site/schema/Mapping.java | 270 ++++++++---------- .../es/index/site/schema/Settings.java | 34 ++- .../neo4j/entity/node/Variant.java | 3 +- 8 files changed, 205 insertions(+), 179 deletions(-) diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/GoIndexer.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/GoIndexer.java index e6c4a42f1..e10c9b583 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/GoIndexer.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/GoIndexer.java @@ -13,8 +13,8 @@ @Slf4j public class GoIndexer extends Indexer { - private final GoRepository goRepo = new GoRepository(); - private final GoTranslator goTrans = new GoTranslator(); + private GoRepository goRepo; + private GoTranslator goTrans; public GoIndexer(IndexerConfig config) { super(config); @@ -22,6 +22,9 @@ public GoIndexer(IndexerConfig config) { @Override public void index() { + + goRepo = new GoRepository(); + goTrans = new GoTranslator(); log.info("Pulling All Terms"); diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/DiseaseAnnotationCurationIndexer.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/DiseaseAnnotationCurationIndexer.java index cf74af860..602753312 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/DiseaseAnnotationCurationIndexer.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/DiseaseAnnotationCurationIndexer.java @@ -1,13 +1,36 @@ package org.alliancegenome.indexer.indexers.curation; -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.extern.slf4j.Slf4j; +import static java.util.stream.Collectors.groupingBy; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Objects; +import java.util.Set; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.stream.Collectors; + import org.alliancegenome.api.entity.AGMDiseaseAnnotationDocument; import org.alliancegenome.api.entity.AlleleDiseaseAnnotationDocument; import org.alliancegenome.api.entity.DiseaseAnnotationDocument; import org.alliancegenome.api.entity.GeneDiseaseAnnotationDocument; import org.alliancegenome.core.helpers.DiseaseAnnotationHelper; -import org.alliancegenome.curation_api.model.entities.*; +import org.alliancegenome.curation_api.model.entities.AGMDiseaseAnnotation; +import org.alliancegenome.curation_api.model.entities.AffectedGenomicModel; +import org.alliancegenome.curation_api.model.entities.Allele; +import org.alliancegenome.curation_api.model.entities.AlleleDiseaseAnnotation; +import org.alliancegenome.curation_api.model.entities.BiologicalEntity; +import org.alliancegenome.curation_api.model.entities.ConditionRelation; +import org.alliancegenome.curation_api.model.entities.DiseaseAnnotation; +import org.alliancegenome.curation_api.model.entities.ExperimentalCondition; +import org.alliancegenome.curation_api.model.entities.Gene; +import org.alliancegenome.curation_api.model.entities.GeneDiseaseAnnotation; +import org.alliancegenome.curation_api.model.entities.Reference; +import org.alliancegenome.curation_api.model.entities.VocabularyTerm; import org.alliancegenome.curation_api.model.entities.base.SubmittedObject; import org.alliancegenome.curation_api.model.entities.ontology.DOTerm; import org.alliancegenome.curation_api.model.entities.ontology.ECOTerm; @@ -25,25 +48,22 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.tuple.Pair; -import java.util.*; -import java.util.Map.Entry; -import java.util.concurrent.LinkedBlockingDeque; -import java.util.stream.Collectors; +import com.fasterxml.jackson.databind.ObjectMapper; -import static java.util.stream.Collectors.groupingBy; +import lombok.extern.slf4j.Slf4j; @Slf4j public class DiseaseAnnotationCurationIndexer extends Indexer { - private GeneDiseaseAnnotationService geneService = new GeneDiseaseAnnotationService(); - private AlleleDiseaseAnnotationService alleleService = new AlleleDiseaseAnnotationService(); - private AGMDiseaseAnnotationService agmService = new AGMDiseaseAnnotationService(); - private VocabularyTermService vocabService = new VocabularyTermService(); + private GeneDiseaseAnnotationService geneService; + private AlleleDiseaseAnnotationService alleleService; + private AGMDiseaseAnnotationService agmService; + private VocabularyTermService vocabTermService; private DiseaseRepository diseaseRepository; private Map> closureMap; private Map>> geneMap = new HashMap<>(); - Map>> generatedImplicatedGeneMap = new HashMap<>(); + private Map>> generatedImplicatedGeneMap = new HashMap<>(); private Map>> alleleMap = new HashMap<>(); private Map>> agmMap = new HashMap<>(); @@ -66,8 +86,12 @@ protected void startSingleThread(LinkedBlockingDeque queue) { @Override protected void index() { - + geneService = new GeneDiseaseAnnotationService(); + alleleService = new AlleleDiseaseAnnotationService(); + agmService = new AGMDiseaseAnnotationService(); + vocabTermService = new VocabularyTermService(); diseaseRepository = new DiseaseRepository(); + closureMap = diseaseRepository.getDOClosureChildMapping(); indexGenes(); @@ -185,7 +209,7 @@ private List createGeneDiseaseAnnotationDocuments ProcessDisplayHelper ph = new ProcessDisplayHelper(10000); ph.startProcess("Creating Gene Disease Annotations", geneMap.size()); - final VocabularyTerm relationIsImplicatedIn = vocabService.getDiseaseRelationTerms().get("is_implicated_in"); + final VocabularyTerm relationIsImplicatedIn = vocabTermService.getDiseaseRelationTerms().get("is_implicated_in"); for (Entry>> entry : geneMap.entrySet()) { HashMap lookup = new HashMap<>(); @@ -287,7 +311,7 @@ private List createAlleleDiseaseAnnotationDocum ProcessDisplayHelper ph = new ProcessDisplayHelper(10000); ph.startProcess("Creating Allele Disease Annotations", alleleMap.size()); - VocabularyTerm relation = vocabService.getDiseaseRelationTerms().get("is_implicated_in"); + VocabularyTerm relation = vocabTermService.getDiseaseRelationTerms().get("is_implicated_in"); for (Entry>> entry : alleleMap.entrySet()) { HashMap lookup = new HashMap<>(); diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/GeneGeneticInteractionCurationIndexer.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/GeneGeneticInteractionCurationIndexer.java index 85dd2b47e..db7a1f42a 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/GeneGeneticInteractionCurationIndexer.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/GeneGeneticInteractionCurationIndexer.java @@ -20,7 +20,8 @@ @Slf4j public class GeneGeneticInteractionCurationIndexer extends Indexer { - private GeneGeneticInteractionService geneGeneticInteractionService = new GeneGeneticInteractionService(); + + private GeneGeneticInteractionService geneGeneticInteractionService; public GeneGeneticInteractionCurationIndexer(IndexerConfig config) { super(config); @@ -28,7 +29,7 @@ public GeneGeneticInteractionCurationIndexer(IndexerConfig config) { @Override protected void index() { - + geneGeneticInteractionService = new GeneGeneticInteractionService(); try { SearchResponse interactionResponse = geneGeneticInteractionService.getGeneGeneticInteractions(0, 0); log.info("GeneGeneticInteraction count: " + interactionResponse.getTotalResults()); diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/GeneMolecularInteractionCurationIndexer.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/GeneMolecularInteractionCurationIndexer.java index 935eb75dd..e6d57640c 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/GeneMolecularInteractionCurationIndexer.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/GeneMolecularInteractionCurationIndexer.java @@ -20,7 +20,7 @@ @Slf4j public class GeneMolecularInteractionCurationIndexer extends Indexer { - private GeneMolecularInteractionService geneMolecularInteractionService = new GeneMolecularInteractionService(); + private GeneMolecularInteractionService geneMolecularInteractionService; public GeneMolecularInteractionCurationIndexer(IndexerConfig config) { super(config); @@ -28,7 +28,7 @@ public GeneMolecularInteractionCurationIndexer(IndexerConfig config) { @Override protected void index() { - + geneMolecularInteractionService = new GeneMolecularInteractionService(); try { SearchResponse interactionResponse = geneMolecularInteractionService.getGeneMolecularInteractions(0, 0); log.info("GeneMolecularInteraction count: " + interactionResponse.getTotalResults()); diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/GeneToGeneParalogyIndexer.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/GeneToGeneParalogyIndexer.java index 1b821b397..caccd2bf5 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/GeneToGeneParalogyIndexer.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/GeneToGeneParalogyIndexer.java @@ -11,13 +11,15 @@ import org.alliancegenome.indexer.config.IndexerConfig; import org.alliancegenome.indexer.indexers.Indexer; import org.alliancegenome.indexer.indexers.curation.service.GeneToGeneParalogyService; + import com.fasterxml.jackson.databind.ObjectMapper; + import lombok.extern.slf4j.Slf4j; @Slf4j public class GeneToGeneParalogyIndexer extends Indexer { - GeneToGeneParalogyService service = new GeneToGeneParalogyService(); + GeneToGeneParalogyService service; public GeneToGeneParalogyIndexer(IndexerConfig indexerConfig) { super(indexerConfig); @@ -25,6 +27,7 @@ public GeneToGeneParalogyIndexer(IndexerConfig indexerConfig) { @Override protected void index() { + service = new GeneToGeneParalogyService(); try { SearchResponse paralogyResponse = service.getGeneToGeneParalogy(0, 0); //log.info("GeneToGeneParalogy count: " + paralogyResponse.getTotalResults()); 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 0f2af72cd..bcd9e44f0 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 @@ -20,155 +20,6 @@ public void buildMapping() { } } - protected void buildSharedSearchableDocumentMappings() throws IOException { - new FieldBuilder(builder, "alterationType", "text").keyword().build(); - new FieldBuilder(builder, "age", "text").keyword().build(); - new FieldBuilder(builder, "alleles", "text").keyword().autocomplete().build(); - new FieldBuilder(builder, "anatomicalExpression", "text").keyword().build(); - new FieldBuilder(builder, "assays", "text").keyword().build(); - new FieldBuilder(builder, "associatedSpecies", "text").keyword().synonym().sort().build(); - new FieldBuilder(builder, "associationType", "text").symbol().autocomplete().keyword().standardText().build(); - new FieldBuilder(builder, "biologicalProcess", "text").keyword().build(); - new FieldBuilder(builder, "biologicalProcessAgrSlim", "text").keyword().build(); - new FieldBuilder(builder, "biologicalProcessWithParents", "text").keyword().build(); - new FieldBuilder(builder, "biotype0", "text").keyword().build(); - new FieldBuilder(builder, "biotype1", "text").keyword().build(); - new FieldBuilder(builder, "biotype2", "text").keyword().build(); - new FieldBuilder(builder, "biotypes", "text").keyword().letterText().build(); - new FieldBuilder(builder, "branch", "text").keyword().build(); - new FieldBuilder(builder, "category", "keyword").symbol().autocomplete().keyword().build(); - new FieldBuilder(builder, "cellularComponent", "text").keyword().build(); - new FieldBuilder(builder, "cellularComponentAgrSlim", "text").keyword().build(); - new FieldBuilder(builder, "cellularComponentWithParents", "text").keyword().build(); - new FieldBuilder(builder, "cellularComponentExpression", "text").keyword().build(); - new FieldBuilder(builder, "cellularComponentExpressionWithParents", "text").keyword().build(); - new FieldBuilder(builder, "cellularComponentExpressionAgrSlim", "text").keyword().build(); - new FieldBuilder(builder, "chromosomes", "text").keyword().build(); - new FieldBuilder(builder, "constructs", "text").keyword().classicText().build(); - new FieldBuilder(builder, "constructExpressedComponent", "text").keyword().build(); - new FieldBuilder(builder, "constructKnockdownComponent", "text").keyword().build(); - new FieldBuilder(builder, "constructRegulatoryRegion", "text").keyword().build(); - new FieldBuilder(builder, "crossReferences", "text").keyword().classicText().build(); - new FieldBuilder(builder, "dataProvider", "text").keyword().build(); - new FieldBuilder(builder, "definition", "text").standardText().build(); - new FieldBuilder(builder, "description", "text").build(); - new FieldBuilder(builder, "diseases", "text").keyword().build(); - new FieldBuilder(builder, "diseasesAgrSlim", "text").keyword().build(); - new FieldBuilder(builder, "diseasesWithParents", "text").keyword().build(); - new FieldBuilder(builder, "expressionStages", "text").keyword().standardText().build(); - new FieldBuilder(builder, "external_ids", "text").analyzer("symbols"); - new FieldBuilder(builder, "genes", "text").keyword().autocomplete().keywordAutocomplete().build(); - new FieldBuilder(builder, "geneLiteratureUrl", "keyword").build(); - new FieldBuilder(builder, "geneSynopsis", "text").build(); - new FieldBuilder(builder, "geneSynopsisUrl", "keyword").build(); - new FieldBuilder(builder, "geneSynonyms", "text").keyword().build(); - new FieldBuilder(builder, "geneCrossReferences", "text").keyword().build(); - new FieldBuilder(builder, "href", "keyword"); - new FieldBuilder(builder, "id", "keyword"); - new FieldBuilder(builder, "models", "text").keyword().autocomplete().build(); - new FieldBuilder(builder, "molecularConsequence", "text").keyword().build(); - new FieldBuilder(builder, "molecularFunction", "text").keyword().build(); - new FieldBuilder(builder, "molecularFunctionAgrSlim", "text").keyword().build(); - new FieldBuilder(builder, "molecularFunctionWithParents", "text").keyword().build(); - new FieldBuilder(builder, "name", "text") - .symbol() - .autocomplete() - .keyword() - .keywordAutocomplete() - .htmlSmoosh() - .standardBigrams() - .build(); - new FieldBuilder(builder, "nameText", "text").keyword().standardText().build(); - new FieldBuilder(builder, "name_key", "text").analyzer("symbols") - .autocomplete() - .keyword() - .keywordAutocomplete() - .htmlSmoosh() - .standardBigrams() - .build(); - new FieldBuilder(builder, "object.name", "text").keyword().sort().build(); - new FieldBuilder(builder, "object.curie", "text").keyword().sort().build(); - new FieldBuilder(builder, "subject.alleleSymbol.displayText", "text").keyword().sort().build(); - new FieldBuilder(builder, "subject.geneSymbol.displayText", "text").keyword().sort().build(); - new FieldBuilder(builder, "subject.name", "text").keyword().sort().build(); - new FieldBuilder(builder, "subject.primaryExternalId", "text").keyword().sort().build(); - new FieldBuilder(builder, "subject.modEntityId", "text").keyword().sort().build(); - new FieldBuilder(builder, "phenotypeStatement", "text").keyword().sort().build(); - new FieldBuilder(builder, "phenotypeStatements", "text") - .keyword() - .build(); - new FieldBuilder(builder, "popularity", "double").build(); - new FieldBuilder(builder, "primaryKey", "keyword").build(); - - new FieldBuilder(builder, "references.crossReferences", "nested").build(); - - new FieldBuilder(builder, "sampleIds", "keyword").build(); - new FieldBuilder(builder, "symbol", "text").analyzer("symbols") - .autocomplete() - .htmlSmoosh() - .keyword() - .keywordAutocomplete() - .sort() - .build(); - new FieldBuilder(builder, "searchSymbol", "text").analyzer("symbols") - .autocomplete() - .keyword() - .keywordAutocomplete() - .sort() - .build(); - new FieldBuilder(builder, "sex", "text").keyword().build(); - new FieldBuilder(builder, "secondaryIds", "keyword").build(); - new FieldBuilder(builder, "soTermName", "text").keyword().letterText().build(); - new FieldBuilder(builder, "soTermId", "keyword").build(); - new FieldBuilder(builder, "species", "text").keyword().synonym().sort().build(); - new FieldBuilder(builder, "displayText", "text").keyword().sort().build(); - - // speciesOrder will generate properly and it will be of type: long - - // new FieldBuilder(builder, "stage", "text").keyword().build(); - new FieldBuilder(builder, "strictOrthologySymbols", "text").keyword().autocomplete().build(); - new FieldBuilder(builder, "summary", "text").build(); - new FieldBuilder(builder, "symbolText", "text").keyword().standardText().build(); - new FieldBuilder(builder, "synonyms", "text").analyzer("symbols") - .autocomplete() - .keyword() - .keywordAutocomplete() - .htmlSmoosh() - .standardBigrams() - .build(); - new FieldBuilder(builder, "systematicName", "text").analyzer("symbols").build(); - new FieldBuilder(builder, "taxonId", "keyword").build(); - new FieldBuilder(builder, "variants", "text").keyword().standardText().build(); - new FieldBuilder(builder, "variantType", "text").keyword().build(); - new FieldBuilder(builder, "variantSynonyms", "text").keyword().standardText().build(); - new FieldBuilder(builder, "whereExpressed", "text").keyword().build(); - - buildMetaDataField(); - - } - - private void buildMetaDataField() throws IOException { - builder.startObject("metaData"); - builder.startObject("properties"); - new FieldBuilder(builder, "dateProduced", "date").build(); - new FieldBuilder(builder, "dataProvider", "keyword").build(); - new FieldBuilder(builder, "release", "keyword").build(); - builder.endObject(); - builder.endObject(); - } - - private void buildCrossReferenceLinkField() throws IOException { - builder.startObject("crossReferenceLinks"); - builder.startObject("properties"); - new FieldBuilder(builder, "name", "keyword").build(); - new FieldBuilder(builder, "displayName", "keyword").build(); - new FieldBuilder(builder, "url", "keyword").build(); - builder.endObject(); - builder.endObject(); - } - - - protected void buildNestedDocument(String name) throws IOException { builder.startObject(name); builder.startObject("properties"); @@ -178,6 +29,127 @@ protected void buildNestedDocument(String name) throws IOException { builder.endObject(); } + protected void buildSharedSearchableDocumentMappings() throws IOException { + // Not used fields + //new FieldBuilder(builder, "age", "text").keyword().build(); + //new FieldBuilder(builder, "associationType", "text").symbol().autocomplete().keyword().standardText().build(); + //new FieldBuilder(builder, "biologicalProcess", "text").keyword().build(); + //new FieldBuilder(builder, "cellularComponent", "text").keyword().build(); + //new FieldBuilder(builder, "cellularComponentExpression", "text").keyword().build(); + //new FieldBuilder(builder, "cellularComponentExpressionWithParents", "text").keyword().build(); + //new FieldBuilder(builder, "cellularComponentExpressionAgrSlim", "text").keyword().build(); + //new FieldBuilder(builder, "description", "text").build(); + //new FieldBuilder(builder, "external_ids", "text").analyzer("symbols"); + //new FieldBuilder(builder, "geneLiteratureUrl", "keyword").build(); + //new FieldBuilder(builder, "id", "keyword"); + //new FieldBuilder(builder, "molecularFunction", "text").keyword().build(); + //new FieldBuilder(builder, "references.crossReferences", "nested").build(); + //new FieldBuilder(builder, "searchSymbol", "text").analyzer("symbols").autocomplete().keyword().keywordAutocomplete().sort().build(); + //new FieldBuilder(builder, "displayText", "text").keyword().sort().build(); + //new FieldBuilder(builder, "stage", "text").keyword().build(); + //new FieldBuilder(builder, "systematicName", "text").analyzer("symbols").build(); + //new FieldBuilder(builder, "taxonId", "keyword").build(); + + + // Allele Only Fields + new FieldBuilder(builder, "alterationType", "text").keyword().build(); // Allele + new FieldBuilder(builder, "constructs", "text").keyword().classicText().build(); // allele + new FieldBuilder(builder, "constructExpressedComponent", "text").keyword().build(); // allele + new FieldBuilder(builder, "constructKnockdownComponent", "text").keyword().build(); // allele + new FieldBuilder(builder, "constructRegulatoryRegion", "text").keyword().build(); // allele + new FieldBuilder(builder, "geneSynonyms", "text").keyword().build(); // allele + new FieldBuilder(builder, "geneCrossReferences", "text").keyword().build(); // allele + 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, "variantType", "text").keyword().build(); // ?? + new FieldBuilder(builder, "variantSynonyms", "text").keyword().standardText().build(); // allele + + // Gene Only Fields + new FieldBuilder(builder, "biologicalProcessAgrSlim", "text").keyword().build(); // gene + new FieldBuilder(builder, "biologicalProcessWithParents", "text").keyword().build(); // gene + new FieldBuilder(builder, "biotype0", "text").keyword().build(); // gene + new FieldBuilder(builder, "biotype1", "text").keyword().build(); // gene + new FieldBuilder(builder, "biotype2", "text").keyword().build(); // gene + new FieldBuilder(builder, "biotypes", "text").keyword().letterText().build(); // gene + new FieldBuilder(builder, "cellularComponentAgrSlim", "text").keyword().build(); // gene + new FieldBuilder(builder, "cellularComponentWithParents", "text").keyword().build(); // gene + new FieldBuilder(builder, "chromosomes", "text").keyword().build(); // gene + new FieldBuilder(builder, "expressionStages", "text").keyword().standardText().build(); // gene + new FieldBuilder(builder, "geneSynopsis", "text").build(); // gene + new FieldBuilder(builder, "geneSynopsisUrl", "keyword").build(); // gene + new FieldBuilder(builder, "molecularFunctionAgrSlim", "text").keyword().build(); // gene + new FieldBuilder(builder, "molecularFunctionWithParents", "text").keyword().build(); // gene + new FieldBuilder(builder, "soTermName", "text").keyword().letterText().build(); // gene + new FieldBuilder(builder, "soTermId", "keyword").build(); // gene + new FieldBuilder(builder, "strictOrthologySymbols", "text").keyword().autocomplete().build(); // gene + + // Dataset Only Fields + new FieldBuilder(builder, "assays", "text").keyword().build(); // dataset + new FieldBuilder(builder, "dataProvider", "text").keyword().build(); // dataset + new FieldBuilder(builder, "sampleIds", "keyword").build(); // dataset + new FieldBuilder(builder, "sex", "text").keyword().build(); // dataset + new FieldBuilder(builder, "summary", "text").build(); // dataset + + new FieldBuilder(builder, "diseases", "text").keyword().build(); // gene, allele, model + new FieldBuilder(builder, "diseasesAgrSlim", "text").keyword().build(); // gene, allele, model + new FieldBuilder(builder, "diseasesWithParents", "text").keyword().build(); // gene, allele, model + new FieldBuilder(builder, "phenotypeStatements", "text").keyword().build(); // gene, allele, model + + new FieldBuilder(builder, "object.name", "text").keyword().sort().build(); // gene_disease_annotation, allele_disease_annotation, agm_disease_annotation + new FieldBuilder(builder, "object.curie", "text").keyword().sort().build(); // gene_disease_annotation, allele_disease_annotation, agm_disease_annotation + new FieldBuilder(builder, "subject.primaryExternalId", "text").keyword().sort().build(); // gene_disease_annotation, allele_disease_annotation, agm_disease_annotation + + new FieldBuilder(builder, "anatomicalExpression", "text").keyword().build(); // gene, dataset + new FieldBuilder(builder, "whereExpressed", "text").keyword().build(); // gene, dataset + + new FieldBuilder(builder, "associatedSpecies", "text").keyword().synonym().sort().build(); // go, disease + new FieldBuilder(builder, "definition", "text").standardText().build(); // go, disease + + new FieldBuilder(builder, "models", "text").keyword().autocomplete().build(); // gene, disease + new FieldBuilder(builder, "secondaryIds", "keyword").build(); // gene, disease + + + + + + + + + new FieldBuilder(builder, "alleles", "text").keyword().autocomplete().build(); // model, gene, disease + + new FieldBuilder(builder, "branch", "text").keyword().build(); // go + new FieldBuilder(builder, "category", "keyword").symbol().autocomplete().keyword().build(); // ALL document must have + new FieldBuilder(builder, "crossReferences", "text").keyword().classicText().build(); // allele, gene, dataset, disease + + + new FieldBuilder(builder, "genes", "text").keyword().autocomplete().keywordAutocomplete().build(); // allele, model, go, disease + new FieldBuilder(builder, "href", "keyword"); // go, dataset + + + + new FieldBuilder(builder, "name", "text").symbol().autocomplete().keyword().keywordAutocomplete().htmlSmoosh().standardBigrams().build(); // allele, gene, model, go, dataset, disease + new FieldBuilder(builder, "nameText", "text").keyword().standardText().build(); // model + new FieldBuilder(builder, "name_key", "text").analyzer("symbols").autocomplete().keyword().keywordAutocomplete().htmlSmoosh().standardBigrams().build(); // allele, gene, model, go, dataset, disease + + + + new FieldBuilder(builder, "subject.alleleSymbol.displayText", "text").keyword().sort().build(); // allele_disease_annotation + new FieldBuilder(builder, "subject.geneSymbol.displayText", "text").keyword().sort().build(); // gene_disease_annotation + new FieldBuilder(builder, "subject.name", "text").keyword().sort().build(); // agm_disease_annotation + + + new FieldBuilder(builder, "popularity", "double").build(); // gene, model, dataset, disease + new FieldBuilder(builder, "primaryKey", "keyword").build(); // allele, gene, model, go, dataset, disease + new FieldBuilder(builder, "symbol", "text").analyzer("symbols").autocomplete().htmlSmoosh().keyword().keywordAutocomplete().sort().build(); // allele, gene + + + new FieldBuilder(builder, "species", "text").keyword().synonym().sort().build(); // allele, gene, model, dataset + new FieldBuilder(builder, "synonyms", "text").analyzer("symbols").autocomplete().keyword().keywordAutocomplete().htmlSmoosh().standardBigrams().build(); // gene, go, disease, model + + + } + public static class FieldBuilder { XContentBuilder builder; String name; diff --git a/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/Settings.java b/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/Settings.java index 2b21901d8..8a444233d 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/Settings.java +++ b/agr_java_core/src/main/java/org/alliancegenome/es/index/site/schema/Settings.java @@ -6,8 +6,6 @@ import java.util.Set; import java.util.stream.Collectors; -import org.alliancegenome.neo4j.repository.indexer.GeneIndexerRepository; - public abstract class Settings extends Builder { public Settings(Boolean pretty) { @@ -119,11 +117,35 @@ public String[] getSpeciesSynonyms(Boolean skipSynonymFetching) { if (skipSynonymFetching) { return new String[0]; } - - GeneIndexerRepository geneIndexerRepository = new GeneIndexerRepository(); - Map> synonymMap = geneIndexerRepository.getSpeciesCommonNames(); + + // TODO remove this hardcoding due to getting rid of NEO + Map> synonymMap = Map.of( + "Caenorhabditis elegans", Set.of("worm", "cel"), + "Mus musculus", Set.of("mouse", "mmu"), + "SARS-CoV-2", Set.of( + "SARS-CoV-2", + "Severe acute respiratory syndrome coronavirus 2", + "SARS-CoV2", + "sars cov 2", + "SARS-2", + "SARS2", + "COVID", + "COVID19", + "COVID-19", + "COVID-19 virus", "2019-nCoV", "HCoV-19", + "Human coronavirus 2019" + ), + "Xenopus laevis", Set.of("African clawed frog", "xbxl", "X.laevis", "X. laevis", "Bufo laevis", "Common platanna", "Platanna", "African claw-toed frog"), + "Rattus norvegicus", Set.of("rat", "rno"), + "Danio rerio", Set.of("zebrafish", "fish", "dre"), + "Homo sapiens", Set.of("human", "hsa"), + "Xenopus tropicalis", Set.of("Western clawed frog", "xbxt", "X.tropicalis", "X. tropicalis", "Tropical clawed frog", "Silurana tropicalis"), + "Saccharomyces cerevisiae", Set.of("yeast", "sce"), + "Drosophila melanogaster", Set.of("fly", "fruit fly", "dme") + ); Set synonymMapping = new HashSet<>(); + for (String speciesName : synonymMap.keySet()) { StringBuilder sb = new StringBuilder(); sb.append(speciesName.toLowerCase()); @@ -137,7 +159,7 @@ public String[] getSpeciesSynonyms(Boolean skipSynonymFetching) { ); synonymMapping.add(sb.toString()); } - geneIndexerRepository.close(); + return synonymMapping.toArray(new String[0]); } diff --git a/agr_java_core/src/main/java/org/alliancegenome/neo4j/entity/node/Variant.java b/agr_java_core/src/main/java/org/alliancegenome/neo4j/entity/node/Variant.java index d1bc7fcbb..3e380c12f 100644 --- a/agr_java_core/src/main/java/org/alliancegenome/neo4j/entity/node/Variant.java +++ b/agr_java_core/src/main/java/org/alliancegenome/neo4j/entity/node/Variant.java @@ -70,7 +70,8 @@ public Variant() { @Relationship(type = "ASSOCIATION") private GenomeLocation location; @JsonView({ View.API.class }) - @Relationship(type = "ASSOCIATION", direction = Relationship.Direction.INCOMING) protected List transcriptList; + @Relationship(type = "ASSOCIATION", direction = Relationship.Direction.INCOMING) + protected List transcriptList; @JsonView({ View.API.class, View.AlleleVariantSequenceConverterForES.class }) @Relationship(type = "ASSOCIATION") protected List transcriptLevelConsequence; From 454a953339377b7cd14bfa3f28a85b7d39f9472e Mon Sep 17 00:00:00 2001 From: Olin Blodgett Date: Mon, 3 Mar 2025 20:07:05 -0500 Subject: [PATCH 07/12] Made ids listed only pull when needed so that extra connections to neo are not created --- .../GeneExpressionAnnotationIndexer.java | 15 ++-- .../PhenotypeAnnotationCurationIndexer.java | 14 ++- .../service/AGMDiseaseAnnotationService.java | 4 +- .../AGMPhenotypeAnnotationService.java | 13 +-- .../AlleleDiseaseAnnotationService.java | 4 +- .../AllelePhenotypeAnnotationService.java | 13 +-- .../service/BaseInteractionService.java | 4 +- .../curation/service/BaseService.java | 90 +++++++++++-------- .../service/GeneDiseaseAnnotationService.java | 6 +- .../GeneGeneticInteractionService.java | 4 +- .../GenePhenotypeAnnotationService.java | 13 +-- 11 files changed, 103 insertions(+), 77 deletions(-) diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/GeneExpressionAnnotationIndexer.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/GeneExpressionAnnotationIndexer.java index 3f031a89f..ac97ef33a 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/GeneExpressionAnnotationIndexer.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/GeneExpressionAnnotationIndexer.java @@ -1,7 +1,9 @@ package org.alliancegenome.indexer.indexers.curation; -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.extern.slf4j.Slf4j; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.LinkedBlockingDeque; + import org.alliancegenome.api.entity.GeneExpressionAnnotationDocument; import org.alliancegenome.curation_api.model.entities.GeneExpressionAnnotation; import org.alliancegenome.curation_api.response.SearchResponse; @@ -11,14 +13,14 @@ import org.alliancegenome.indexer.indexers.curation.service.GeneExpressionAnnotationService; import org.apache.commons.collections.CollectionUtils; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.LinkedBlockingDeque; +import com.fasterxml.jackson.databind.ObjectMapper; + +import lombok.extern.slf4j.Slf4j; @Slf4j public class GeneExpressionAnnotationIndexer extends Indexer { - GeneExpressionAnnotationService geneExpressionAnnotationService = new GeneExpressionAnnotationService(); + GeneExpressionAnnotationService geneExpressionAnnotationService; public GeneExpressionAnnotationIndexer(IndexerConfig indexerConfig) { super(indexerConfig); @@ -27,6 +29,7 @@ public GeneExpressionAnnotationIndexer(IndexerConfig indexerConfig) { @Override protected void index() { try { + geneExpressionAnnotationService = new GeneExpressionAnnotationService(); SearchResponse response = geneExpressionAnnotationService.getGeneExpressionAnnotations(0, 0); log.info("GeneExpressionAnnotation count: " + response.getTotalResults()); int totalPages = (int) (response.getTotalResults() / indexerConfig.getBufferSize()); diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/PhenotypeAnnotationCurationIndexer.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/PhenotypeAnnotationCurationIndexer.java index 2615807cf..de5e6c4b6 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/PhenotypeAnnotationCurationIndexer.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/PhenotypeAnnotationCurationIndexer.java @@ -40,10 +40,11 @@ @Slf4j public class PhenotypeAnnotationCurationIndexer extends Indexer { - private GenePhenotypeAnnotationService geneService = new GenePhenotypeAnnotationService(); - private AllelePhenotypeAnnotationService alleleService = new AllelePhenotypeAnnotationService(); - private AGMPhenotypeAnnotationService agmService = new AGMPhenotypeAnnotationService(); - private VocabularyTermService vocabTermService = new VocabularyTermService(); + private GenePhenotypeAnnotationService geneService; + private AllelePhenotypeAnnotationService alleleService; + private AGMPhenotypeAnnotationService agmService; + private VocabularyTermService vocabTermService; + private Map>> geneMap = new HashMap<>(); private Map>> alleleMap = new HashMap<>(); private Map>> agmMap = new HashMap<>(); @@ -65,6 +66,11 @@ protected void startSingleThread(LinkedBlockingDeque queue) { @Override protected void index() { + geneService = new GenePhenotypeAnnotationService(); + alleleService = new AllelePhenotypeAnnotationService(); + agmService = new AGMPhenotypeAnnotationService(); + vocabTermService = new VocabularyTermService(); + indexGenes(); indexAlleles(); indexAGMs(); diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AGMDiseaseAnnotationService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AGMDiseaseAnnotationService.java index d675c4da4..2332de5d5 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AGMDiseaseAnnotationService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AGMDiseaseAnnotationService.java @@ -46,8 +46,8 @@ public List getFiltered() { SearchResponse response = agmApi.findForPublic(page, batchSize, params); for (AGMDiseaseAnnotation da: response.getResults()) { - if (isValidNeoEntity(allNeoModelIDs, da.getDiseaseAnnotationSubject().getIdentifier()) && hasNoObsoletedOrInternalEntities(da)) { - if (hasValidEntities(da, allNeoGeneIDs, allNeoAlleleIDs, allNeoModelIDs)) { + if (isValidNeoEntity(getAllNeoModelIDs(), da.getDiseaseAnnotationSubject().getIdentifier()) && hasNoObsoletedOrInternalEntities(da)) { + if (hasValidEntities(da, getAllNeoGeneIDs(), getAllNeoAlleleIDs(), getAllNeoModelIDs())) { if (da.getInferredGene() != null && da.getInferredGene().getConstructGenomicEntityAssociations() != null) { da.getInferredGene().getConstructGenomicEntityAssociations().clear(); } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AGMPhenotypeAnnotationService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AGMPhenotypeAnnotationService.java index 5b22ff38b..0fe5eab4f 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AGMPhenotypeAnnotationService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AGMPhenotypeAnnotationService.java @@ -1,17 +1,18 @@ package org.alliancegenome.indexer.indexers.curation.service; -import lombok.extern.log4j.Log4j2; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + import org.alliancegenome.core.config.ConfigHelper; import org.alliancegenome.curation_api.model.entities.AGMPhenotypeAnnotation; import org.alliancegenome.curation_api.response.SearchResponse; import org.alliancegenome.es.util.ProcessDisplayHelper; import org.alliancegenome.indexer.RestConfig; import org.alliancegenome.indexer.indexers.curation.interfaces.AGMPhenotypeAnnotationInterface; -import si.mazi.rescu.RestProxyFactory; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; +import lombok.extern.log4j.Log4j2; +import si.mazi.rescu.RestProxyFactory; @Log4j2 public class AGMPhenotypeAnnotationService extends BaseDiseaseAnnotationService { @@ -41,7 +42,7 @@ public List getFiltered() { do { SearchResponse response = agmApi.findForPublic(page, batchSize, params); for (AGMPhenotypeAnnotation da : response.getResults()) { - if (isValidNeoEntity(allNeoModelIDs, da.getPhenotypeAnnotationSubject().getIdentifier())) { + if (isValidNeoEntity(getAllNeoModelIDs(), da.getPhenotypeAnnotationSubject().getIdentifier())) { ret.add(da); } } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AlleleDiseaseAnnotationService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AlleleDiseaseAnnotationService.java index 635c09d9f..a417c7145 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AlleleDiseaseAnnotationService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AlleleDiseaseAnnotationService.java @@ -44,8 +44,8 @@ public List getFiltered() { SearchResponse response = alleleApi.findForPublic(page, batchSize, params); for (AlleleDiseaseAnnotation da: response.getResults()) { - if (isValidNeoEntity(allNeoAlleleIDs, da.getDiseaseAnnotationSubject().getIdentifier()) && hasNoObsoletedOrInternalEntities(da)) { - if (hasValidEntities(da, allNeoGeneIDs, allNeoAlleleIDs, allNeoModelIDs)) { + if (isValidNeoEntity(getAllNeoAlleleIDs(), da.getDiseaseAnnotationSubject().getIdentifier()) && hasNoObsoletedOrInternalEntities(da)) { + if (hasValidEntities(da, getAllNeoGeneIDs(), getAllNeoAlleleIDs(), getAllNeoModelIDs())) { if (da.getInferredGene() != null && da.getInferredGene().getConstructGenomicEntityAssociations() != null) { da.getInferredGene().getConstructGenomicEntityAssociations().clear(); } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AllelePhenotypeAnnotationService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AllelePhenotypeAnnotationService.java index 642b67748..1c0f7307b 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AllelePhenotypeAnnotationService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AllelePhenotypeAnnotationService.java @@ -1,17 +1,18 @@ package org.alliancegenome.indexer.indexers.curation.service; -import lombok.extern.log4j.Log4j2; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + import org.alliancegenome.core.config.ConfigHelper; import org.alliancegenome.curation_api.model.entities.AllelePhenotypeAnnotation; import org.alliancegenome.curation_api.response.SearchResponse; import org.alliancegenome.es.util.ProcessDisplayHelper; import org.alliancegenome.indexer.RestConfig; import org.alliancegenome.indexer.indexers.curation.interfaces.AllelePhenotypeAnnotationInterface; -import si.mazi.rescu.RestProxyFactory; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; +import lombok.extern.log4j.Log4j2; +import si.mazi.rescu.RestProxyFactory; @Log4j2 public class AllelePhenotypeAnnotationService extends BaseDiseaseAnnotationService { @@ -42,7 +43,7 @@ public List getFiltered() { do { SearchResponse response = alleleApi.findForPublic(page, batchSize, params); for (AllelePhenotypeAnnotation da : response.getResults()) { - if (isValidNeoEntity(allNeoAlleleIDs, da.getPhenotypeAnnotationSubject().getIdentifier())) { + if (isValidNeoEntity(getAllNeoAlleleIDs(), da.getPhenotypeAnnotationSubject().getIdentifier())) { ret.add(da); } } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/BaseInteractionService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/BaseInteractionService.java index b7dbf0056..2f9fdb22d 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/BaseInteractionService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/BaseInteractionService.java @@ -40,12 +40,12 @@ protected boolean hasNoObsoletedOrInternalEntities(E protected boolean hasInteractingGenesInNeo(E interaction) { if (interaction.getGeneAssociationSubject() != null) { - if (!isValidNeoEntity(allNeoGeneIDs, interaction.getGeneAssociationSubject().getIdentifier())) { + if (!isValidNeoEntity(getAllNeoGeneIDs(), interaction.getGeneAssociationSubject().getIdentifier())) { return false; } } if (interaction.getGeneGeneAssociationObject() != null) { - if (!isValidNeoEntity(allNeoGeneIDs, interaction.getGeneGeneAssociationObject().getIdentifier())) { + if (!isValidNeoEntity(getAllNeoGeneIDs(), interaction.getGeneGeneAssociationObject().getIdentifier())) { return false; } } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/BaseService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/BaseService.java index 1797a2b32..cdbf4aa1d 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/BaseService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/BaseService.java @@ -17,47 +17,61 @@ @Log4j2 public class BaseService { - protected HashSet allNeoAlleleIDs; - protected HashSet allNeoGeneIDs; - protected HashSet allNeoModelIDs; - - public BaseService() { - AlleleRepository alleleRepository = new AlleleRepository(); - GeneRepository geneRepository = new GeneRepository(); - - String alleleIdsFileName = "allele_ids.gz"; - List alleleList = readFromCache(alleleIdsFileName, List.class); - - if (CollectionUtils.isNotEmpty(alleleList)) { - allNeoAlleleIDs = new HashSet<>(alleleList); - } else { - allNeoAlleleIDs = new HashSet<>(alleleRepository.getAllAlleleIDs()); - writeToCache(alleleIdsFileName, new ArrayList<>(allNeoAlleleIDs)); + private static HashSet allNeoAlleleIDs; + private static HashSet allNeoGeneIDs; + private static HashSet allNeoModelIDs; + + protected HashSet getAllNeoAlleleIDs() { + if(allNeoAlleleIDs == null) { + String alleleIdsFileName = "allele_ids.gz"; + List alleleList = readFromCache(alleleIdsFileName, List.class); + + if (CollectionUtils.isNotEmpty(alleleList)) { + allNeoAlleleIDs = new HashSet<>(alleleList); + } else { + AlleleRepository alleleRepository = new AlleleRepository(); + allNeoAlleleIDs = new HashSet<>(alleleRepository.getAllAlleleIDs()); + alleleRepository.close(); + writeToCache(alleleIdsFileName, new ArrayList<>(allNeoAlleleIDs)); + } } - - String geneIdsFileName = "gene_ids.gz"; - List geneList = readFromCache(geneIdsFileName, List.class); - - if (CollectionUtils.isNotEmpty(geneList)) { - allNeoGeneIDs = new HashSet<>(geneList); - } else { - allNeoGeneIDs = new HashSet<>(geneRepository.getAllGeneKeys()); - writeToCache(geneIdsFileName, new ArrayList<>(allNeoGeneIDs)); + return allNeoAlleleIDs; + } + + protected HashSet getAllNeoGeneIDs() { + + if(allNeoGeneIDs == null) { + String geneIdsFileName = "gene_ids.gz"; + List geneList = readFromCache(geneIdsFileName, List.class); + + if (CollectionUtils.isNotEmpty(geneList)) { + allNeoGeneIDs = new HashSet<>(geneList); + } else { + GeneRepository geneRepository = new GeneRepository(); + allNeoGeneIDs = new HashSet<>(geneRepository.getAllGeneKeys()); + geneRepository.close(); + writeToCache(geneIdsFileName, new ArrayList<>(allNeoGeneIDs)); + } } - log.info("Number of all Gene IDs from Neo4j: " + allNeoGeneIDs.size()); - - String modelIdsFileName = "model_ids.gz"; - List modelList = readFromCache(modelIdsFileName, List.class); - - if (CollectionUtils.isNotEmpty(modelList)) { - allNeoModelIDs = new HashSet<>(modelList); - } else { - allNeoModelIDs = new HashSet<>(alleleRepository.getAllModelKeys()); - writeToCache(modelIdsFileName, new ArrayList<>(allNeoModelIDs)); + + return allNeoGeneIDs; + } + + protected HashSet getAllNeoModelIDs() { + if(allNeoModelIDs == null) { + String modelIdsFileName = "model_ids.gz"; + List modelList = readFromCache(modelIdsFileName, List.class); + + if (CollectionUtils.isNotEmpty(modelList)) { + allNeoModelIDs = new HashSet<>(modelList); + } else { + AlleleRepository alleleRepository = new AlleleRepository(); + allNeoModelIDs = new HashSet<>(alleleRepository.getAllModelKeys()); + alleleRepository.close(); + writeToCache(modelIdsFileName, new ArrayList<>(allNeoModelIDs)); + } } - - alleleRepository.close(); - geneRepository.close(); + return allNeoModelIDs; } protected E readFromCache(String fileName, Class clazz) { diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneDiseaseAnnotationService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneDiseaseAnnotationService.java index 92993f5e7..c3f9b314c 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneDiseaseAnnotationService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneDiseaseAnnotationService.java @@ -67,8 +67,8 @@ public List getFiltered() { do { SearchResponse response = geneApi.findForPublic(page, batchSize, params); for (GeneDiseaseAnnotation da : response.getResults()) { - if (isValidNeoEntity(allNeoGeneIDs, da.getDiseaseAnnotationSubject().getIdentifier()) && hasNoObsoletedOrInternalEntities(da)) { - if (hasValidGeneticModifiers(da, allNeoGeneIDs, allNeoAlleleIDs, allNeoModelIDs)) { + if (isValidNeoEntity(getAllNeoGeneIDs(), da.getDiseaseAnnotationSubject().getIdentifier()) && hasNoObsoletedOrInternalEntities(da)) { + if (hasValidGeneticModifiers(da, getAllNeoGeneIDs(), getAllNeoAlleleIDs(), getAllNeoModelIDs())) { ret.add(da); } } @@ -129,7 +129,7 @@ public Map> getOrthologousGeneDiseaseAnnotations(M SearchResponse response = orthologyApi.findForPublic(0, 500, params); for (GeneToGeneOrthologyGenerated geneGeneOrthology : response.getResults()) { Gene orthologousGene = geneGeneOrthology.getObjectGene(); - if (!isValidNeoEntity(allNeoGeneIDs, orthologousGene.getIdentifier()) || orthologousGene.getObsolete() || orthologousGene.getInternal()) { + if (!isValidNeoEntity(getAllNeoGeneIDs(), orthologousGene.getIdentifier()) || orthologousGene.getObsolete() || orthologousGene.getInternal()) { continue; } // create orthologous DAs for each focus DA diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneGeneticInteractionService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneGeneticInteractionService.java index 7384dcb2d..08003fb29 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneGeneticInteractionService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GeneGeneticInteractionService.java @@ -52,12 +52,12 @@ public List getFilteredAndReversedInteractions(List getFiltered() { do { SearchResponse response = geneApi.findForPublic(page, batchSize, params); for (GenePhenotypeAnnotation pa : response.getResults()) { - if (isValidNeoEntity(allNeoGeneIDs, pa.getPhenotypeAnnotationSubject().getIdentifier())) { + if (isValidNeoEntity(getAllNeoGeneIDs(), pa.getPhenotypeAnnotationSubject().getIdentifier())) { ret.add(pa); } } From d6d4407e38e9a72e3fc19d5f927a6a6e7a58027c Mon Sep 17 00:00:00 2001 From: Olin Blodgett Date: Mon, 3 Mar 2025 21:23:39 -0500 Subject: [PATCH 08/12] Update indexers to be more multi threaded --- agr_indexer/pom.xml | 13 ++ .../indexer/config/IndexerConfig.java | 2 +- .../PhenotypeAnnotationCurationIndexer.java | 8 +- .../AGMPhenotypeAnnotationService.java | 112 +++++++++++++---- .../AllelePhenotypeAnnotationService.java | 113 ++++++++++++++---- .../GenePhenotypeAnnotationService.java | 110 +++++++++++++---- 6 files changed, 277 insertions(+), 81 deletions(-) diff --git a/agr_indexer/pom.xml b/agr_indexer/pom.xml index 9e6ecf2ba..be2573273 100644 --- a/agr_indexer/pom.xml +++ b/agr_indexer/pom.xml @@ -32,6 +32,19 @@ process-display 1.0.12 + + + + org.apache.logging.log4j + log4j-to-slf4j + 2.20.0 + + + + + org.apache.logging.log4j + log4j-api + ${project.artifactId} 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 199155cf5..346e69e1d 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 @@ -30,7 +30,7 @@ public enum IndexerConfig { GeneGeneticInteractionIndexers("geneGeneticInteraction", GeneGeneticInteractionCurationIndexer.class, 4, 1500, 1500, 2, 1), GeneMolecularInteractionIndexers("geneMolecularInteraction", GeneMolecularInteractionCurationIndexer.class, 4, 1500, 1500, 2, 1), ParalogyIndexer("paralogy", GeneToGeneParalogyIndexer.class, 4, 5000, 5000, 8, 1), - PhenotypeAnnotationIndexer("phenotypeAnnotation", PhenotypeAnnotationCurationIndexer.class, 1, 1500, 1500, 2, 1), + PhenotypeAnnotationIndexer("phenotypeAnnotation", PhenotypeAnnotationCurationIndexer.class, 4, 1500, 1500, 2, 1), ReleaseInfoIndexer("release", ReleaseInfoIndexer.class, 1, 1, 1, 1, 1), ; diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/PhenotypeAnnotationCurationIndexer.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/PhenotypeAnnotationCurationIndexer.java index de5e6c4b6..3a542b18e 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/PhenotypeAnnotationCurationIndexer.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/PhenotypeAnnotationCurationIndexer.java @@ -22,7 +22,6 @@ import org.alliancegenome.curation_api.model.entities.PhenotypeAnnotation; import org.alliancegenome.curation_api.model.entities.Reference; import org.alliancegenome.curation_api.model.entities.VocabularyTerm; -import org.alliancegenome.es.util.ProcessDisplayHelper; import org.alliancegenome.indexer.RestConfig; import org.alliancegenome.indexer.config.IndexerConfig; import org.alliancegenome.indexer.indexers.Indexer; @@ -36,6 +35,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; +import net.nilosplace.process_display.ProcessDisplayHelper; @Slf4j public class PhenotypeAnnotationCurationIndexer extends Indexer { @@ -152,7 +152,7 @@ private static String getConsolidationKey(PhenotypeAnnotation da) { } private void indexGenes() { - List genePhenotypeAnnotations = geneService.getFiltered(); + List genePhenotypeAnnotations = geneService.getFiltered(indexerConfig.getThreadCount(), indexerConfig.getBufferSize()); addPhenotypeAnnotationsToLGlobalMap(genePhenotypeAnnotations); } @@ -167,7 +167,7 @@ private void addPhenotypeAnnotationsToLGlobalMap(List g private void indexAlleles() { - List allelePhenotypeAnnotations = alleleService.getFiltered(); + List allelePhenotypeAnnotations = alleleService.getFiltered(indexerConfig.getThreadCount(), indexerConfig.getBufferSize()); log.info("Filtered Alleles: " + allelePhenotypeAnnotations.size()); for (AllelePhenotypeAnnotation da : allelePhenotypeAnnotations) { Allele allele = da.getPhenotypeAnnotationSubject(); @@ -194,7 +194,7 @@ private void extractGenePhenotypeAnnotations(PhenotypeAnnotation da, Gene inferr private void indexAGMs() { - List agmDiseaseAnnotations = agmService.getFiltered(); + List agmDiseaseAnnotations = agmService.getFiltered(indexerConfig.getThreadCount(), indexerConfig.getBufferSize()); log.info("Filtered AGM PAs: " + String.format("%,d", agmDiseaseAnnotations.size())); for (AGMPhenotypeAnnotation da : agmDiseaseAnnotations) { diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AGMPhenotypeAnnotationService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AGMPhenotypeAnnotationService.java index 0fe5eab4f..ddd2abcde 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AGMPhenotypeAnnotationService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AGMPhenotypeAnnotationService.java @@ -3,11 +3,13 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; import org.alliancegenome.core.config.ConfigHelper; import org.alliancegenome.curation_api.model.entities.AGMPhenotypeAnnotation; import org.alliancegenome.curation_api.response.SearchResponse; -import org.alliancegenome.es.util.ProcessDisplayHelper; +import org.alliancegenome.curation_api.util.ProcessDisplayHelper; import org.alliancegenome.indexer.RestConfig; import org.alliancegenome.indexer.indexers.curation.interfaces.AGMPhenotypeAnnotationInterface; @@ -20,7 +22,7 @@ public class AGMPhenotypeAnnotationService extends BaseDiseaseAnnotationService private final AGMPhenotypeAnnotationInterface agmApi = RestProxyFactory.createProxy(AGMPhenotypeAnnotationInterface.class, ConfigHelper.getCurationApiUrl(), RestConfig.config); private final String cacheFileName = "agm_phenotype_annotation.json.gz"; - public List getFiltered() { + public List getFiltered(int threadCount, int bufferSize) { List ret = readFromCache(cacheFileName, List.class); if (ret != null && ret.size() > 0) { return ret; @@ -29,36 +31,94 @@ public List getFiltered() { } ProcessDisplayHelper display = new ProcessDisplayHelper(2000); - int batchSize = 1000; - int page = 0; - int pages; - - HashMap params = new HashMap<>(); - params.put("internal", false); - params.put("obsolete", false); - //params.put("phenotypeAnnotationSubject.primaryExternalId", "ZFIN:ZDB-FISH-210325-47"); - //params.put("phenotypeAnnotationSubject.modEntityId", "MGI:4829791"); - - do { - SearchResponse response = agmApi.findForPublic(page, batchSize, params); - for (AGMPhenotypeAnnotation da : response.getResults()) { - if (isValidNeoEntity(getAllNeoModelIDs(), da.getPhenotypeAnnotationSubject().getIdentifier())) { - ret.add(da); - } - } + + LinkedBlockingDeque queue = new LinkedBlockingDeque<>(); + LinkedBlockingDeque fullList = new LinkedBlockingDeque<>(); + + SearchResponse response = agmApi.findForPublic(0, 0, null); + + int totalPages = (int) (response.getTotalResults() / bufferSize); + + display.startProcess("Pulling AGM PA's from curation", response.getTotalResults()); + + for (int i = 0; i <= totalPages; i++) { + //log.info("page: " + i + " limit: " + indexerConfig.getBufferSize()); + queue.add(String.valueOf(i)); + } + + List threads = new ArrayList(); + for (int i = 0; i < threadCount; i++) { + WorkerThread thread = new WorkerThread(bufferSize, queue, fullList, display); + threads.add(thread); + thread.start(); + } - if (page == 0) { - display.startProcess("Pulling AGM PA's from curation", response.getTotalResults()); + try { + while (queue.size() > 0) { + TimeUnit.SECONDS.sleep(10); } - display.progressProcess(response.getReturnedRecords().longValue()); - pages = (int) (response.getTotalResults() / batchSize); - page++; - } while (page <= pages); + + for (Thread t : threads) { + t.join(); + } + } catch (Exception e) { + e.printStackTrace(); + System.exit(-1); + } display.finishProcess(); - + + ret = new ArrayList<>(fullList); + writeToCache(cacheFileName, ret); return ret; + + } + + public class WorkerThread extends Thread { + private int bufferSize; + private LinkedBlockingDeque queue; + private LinkedBlockingDeque fullList; + private ProcessDisplayHelper display; + + public WorkerThread(int bufferSize, LinkedBlockingDeque queue, LinkedBlockingDeque fullList, ProcessDisplayHelper display) { + this.bufferSize = bufferSize; + this.queue = queue; + this.fullList = fullList; + this.display = display; + } + + @Override + public void run() { + + HashMap params = new HashMap<>(); + params.put("internal", false); + params.put("obsolete", false); + //params.put("phenotypeAnnotationSubject.primaryExternalId", "SGD:S000001240"); + + while(true) { + if(queue.isEmpty()) { + return; + } + + try { + int page = Integer.parseInt(queue.takeFirst()); + + SearchResponse response = agmApi.findForPublic(page, bufferSize, params); + for (AGMPhenotypeAnnotation pa : response.getResults()) { + if (isValidNeoEntity(getAllNeoModelIDs(), pa.getPhenotypeAnnotationSubject().getIdentifier())) { + fullList.offer(pa); + } + display.progressProcess(); + } + + } catch (NumberFormatException | InterruptedException e) { + e.printStackTrace(); + } + } + + } + } } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AllelePhenotypeAnnotationService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AllelePhenotypeAnnotationService.java index 1c0f7307b..4403fdde0 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AllelePhenotypeAnnotationService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AllelePhenotypeAnnotationService.java @@ -3,11 +3,13 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; import org.alliancegenome.core.config.ConfigHelper; import org.alliancegenome.curation_api.model.entities.AllelePhenotypeAnnotation; import org.alliancegenome.curation_api.response.SearchResponse; -import org.alliancegenome.es.util.ProcessDisplayHelper; +import org.alliancegenome.curation_api.util.ProcessDisplayHelper; import org.alliancegenome.indexer.RestConfig; import org.alliancegenome.indexer.indexers.curation.interfaces.AllelePhenotypeAnnotationInterface; @@ -21,7 +23,7 @@ public class AllelePhenotypeAnnotationService extends BaseDiseaseAnnotationServi private final String cacheFileName = "allele_phenotype_annotation.json.gz"; - public List getFiltered() { + public List getFiltered(int threadCount, int bufferSize) { List ret = readFromCache(cacheFileName, List.class); if (ret != null && ret.size() > 0) { return ret; @@ -30,36 +32,95 @@ public List getFiltered() { } ProcessDisplayHelper display = new ProcessDisplayHelper(2000); - int batchSize = 1000; - int page = 0; - int pages; - - HashMap params = new HashMap<>(); - params.put("internal", false); - params.put("obsolete", false); - //params.put("phenotypeAnnotationSubject.primaryExternalId", "SGD:S000286812"); - //params.put("phenotypeAnnotationSubject.modEntityId", "MGI:4829791"); - - do { - SearchResponse response = alleleApi.findForPublic(page, batchSize, params); - for (AllelePhenotypeAnnotation da : response.getResults()) { - if (isValidNeoEntity(getAllNeoAlleleIDs(), da.getPhenotypeAnnotationSubject().getIdentifier())) { - ret.add(da); - } - } + + LinkedBlockingDeque queue = new LinkedBlockingDeque<>(); + LinkedBlockingDeque fullList = new LinkedBlockingDeque<>(); + + SearchResponse response = alleleApi.findForPublic(0, 0, null); + + + int totalPages = (int) (response.getTotalResults() / bufferSize); + + display.startProcess("Pulling Allele PA's from curation", response.getTotalResults()); + + for (int i = 0; i <= totalPages; i++) { + //log.info("page: " + i + " limit: " + indexerConfig.getBufferSize()); + queue.add(String.valueOf(i)); + } - if (page == 0) { - display.startProcess("Pulling Allele PA's from curation", response.getTotalResults()); + List threads = new ArrayList(); + for (int i = 0; i < threadCount; i++) { + WorkerThread thread = new WorkerThread(bufferSize, queue, fullList, display); + threads.add(thread); + thread.start(); + } + + try { + while (queue.size() > 0) { + TimeUnit.SECONDS.sleep(10); + } + + for (Thread t : threads) { + t.join(); } - display.progressProcess(response.getReturnedRecords().longValue()); - pages = (int) (response.getTotalResults() / batchSize); - page++; - } while (page <= pages); + } catch (Exception e) { + e.printStackTrace(); + System.exit(-1); + } display.finishProcess(); - + + ret = new ArrayList<>(fullList); + writeToCache(cacheFileName, ret); return ret; + } + + + public class WorkerThread extends Thread { + private int bufferSize; + private LinkedBlockingDeque queue; + private LinkedBlockingDeque fullList; + private ProcessDisplayHelper display; + + public WorkerThread(int bufferSize, LinkedBlockingDeque queue, LinkedBlockingDeque fullList, ProcessDisplayHelper display) { + this.bufferSize = bufferSize; + this.queue = queue; + this.fullList = fullList; + this.display = display; + } + + @Override + public void run() { + HashMap params = new HashMap<>(); + params.put("internal", false); + params.put("obsolete", false); + //params.put("phenotypeAnnotationSubject.primaryExternalId", "SGD:S000001240"); + + while(true) { + if(queue.isEmpty()) { + return; + } + + try { + int page = Integer.parseInt(queue.takeFirst()); + + SearchResponse response = alleleApi.findForPublic(page, bufferSize, params); + for (AllelePhenotypeAnnotation pa : response.getResults()) { + if (isValidNeoEntity(getAllNeoAlleleIDs(), pa.getPhenotypeAnnotationSubject().getIdentifier())) { + fullList.offer(pa); + } + display.progressProcess(); + } + + } catch (NumberFormatException | InterruptedException e) { + e.printStackTrace(); + } + } + + } + + } } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GenePhenotypeAnnotationService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GenePhenotypeAnnotationService.java index daa1404cd..f379b30df 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GenePhenotypeAnnotationService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GenePhenotypeAnnotationService.java @@ -3,11 +3,13 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; import org.alliancegenome.core.config.ConfigHelper; import org.alliancegenome.curation_api.model.entities.GenePhenotypeAnnotation; import org.alliancegenome.curation_api.response.SearchResponse; -import org.alliancegenome.es.util.ProcessDisplayHelper; +import org.alliancegenome.curation_api.util.ProcessDisplayHelper; import org.alliancegenome.indexer.RestConfig; import org.alliancegenome.indexer.indexers.curation.interfaces.GenePhenotypeAnnotationInterface; @@ -20,7 +22,7 @@ public class GenePhenotypeAnnotationService extends BaseDiseaseAnnotationService private final GenePhenotypeAnnotationInterface geneApi = RestProxyFactory.createProxy(GenePhenotypeAnnotationInterface.class, ConfigHelper.getCurationApiUrl(), RestConfig.config); private final String cacheFileName = "gene_phenotype_annotation.json.gz"; - public List getFiltered() { + public List getFiltered(int threadCount, int bufferSize) { List ret = readFromCache(cacheFileName, List.class); if (ret != null && ret.size() > 0) { return ret; @@ -29,35 +31,95 @@ public List getFiltered() { } ProcessDisplayHelper display = new ProcessDisplayHelper(2000); + + LinkedBlockingDeque queue = new LinkedBlockingDeque<>(); + LinkedBlockingDeque fullList = new LinkedBlockingDeque<>(); + + SearchResponse response = geneApi.findForPublic(0, 0, null); - int batchSize = 1000; - int page = 0; - int pages; - - HashMap params = new HashMap<>(); - params.put("internal", false); - params.put("obsolete", false); - //params.put("phenotypeAnnotationSubject.primaryExternalId", "SGD:S000001240"); - do { - SearchResponse response = geneApi.findForPublic(page, batchSize, params); - for (GenePhenotypeAnnotation pa : response.getResults()) { - if (isValidNeoEntity(getAllNeoGeneIDs(), pa.getPhenotypeAnnotationSubject().getIdentifier())) { - ret.add(pa); - } - } + int totalPages = (int) (response.getTotalResults() / bufferSize); + + display.startProcess("Pulling Gene PA's from curation", response.getTotalResults()); + + for (int i = 0; i <= totalPages; i++) { + //log.info("page: " + i + " limit: " + indexerConfig.getBufferSize()); + queue.add(String.valueOf(i)); + } - if (page == 0) { - display.startProcess("Pulling Gene PA's from curation", response.getTotalResults()); + List threads = new ArrayList(); + for (int i = 0; i < threadCount; i++) { + WorkerThread thread = new WorkerThread(bufferSize, queue, fullList, display); + threads.add(thread); + thread.start(); + } + + try { + while (queue.size() > 0) { + TimeUnit.SECONDS.sleep(10); + } + + for (Thread t : threads) { + t.join(); } - display.progressProcess(response.getReturnedRecords().longValue()); - pages = (int) (response.getTotalResults() / batchSize); - page++; - } while (page <= pages); + } catch (Exception e) { + e.printStackTrace(); + System.exit(-1); + } display.finishProcess(); - + + ret = new ArrayList<>(fullList); + writeToCache(cacheFileName, ret); return ret; + + } + + + public class WorkerThread extends Thread { + private int bufferSize; + private LinkedBlockingDeque queue; + private LinkedBlockingDeque fullList; + private ProcessDisplayHelper display; + + public WorkerThread(int bufferSize, LinkedBlockingDeque queue, LinkedBlockingDeque fullList, ProcessDisplayHelper display) { + this.bufferSize = bufferSize; + this.queue = queue; + this.fullList = fullList; + this.display = display; + } + + @Override + public void run() { + + HashMap params = new HashMap<>(); + params.put("internal", false); + params.put("obsolete", false); + //params.put("phenotypeAnnotationSubject.primaryExternalId", "SGD:S000001240"); + + while(true) { + if(queue.isEmpty()) { + return; + } + + try { + int page = Integer.parseInt(queue.takeFirst()); + + SearchResponse response = geneApi.findForPublic(page, bufferSize, params); + for (GenePhenotypeAnnotation pa : response.getResults()) { + if (isValidNeoEntity(getAllNeoGeneIDs(), pa.getPhenotypeAnnotationSubject().getIdentifier())) { + fullList.offer(pa); + } + display.progressProcess(); + } + + } catch (NumberFormatException | InterruptedException e) { + e.printStackTrace(); + } + } + + } + } } From f992c8110d6180940b471025fffa6ac504c21447 Mon Sep 17 00:00:00 2001 From: Olin Blodgett Date: Mon, 3 Mar 2025 21:25:00 -0500 Subject: [PATCH 09/12] Formatting fix --- .../AGMPhenotypeAnnotationService.java | 25 +++++++-------- .../AllelePhenotypeAnnotationService.java | 31 +++++++++---------- .../curation/service/BaseService.java | 20 ++++++------ .../GenePhenotypeAnnotationService.java | 31 +++++++++---------- 4 files changed, 51 insertions(+), 56 deletions(-) diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AGMPhenotypeAnnotationService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AGMPhenotypeAnnotationService.java index ddd2abcde..a14b08978 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AGMPhenotypeAnnotationService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AGMPhenotypeAnnotationService.java @@ -31,18 +31,17 @@ public List getFiltered(int threadCount, int bufferSize) } ProcessDisplayHelper display = new ProcessDisplayHelper(2000); - LinkedBlockingDeque queue = new LinkedBlockingDeque<>(); LinkedBlockingDeque fullList = new LinkedBlockingDeque<>(); - + SearchResponse response = agmApi.findForPublic(0, 0, null); int totalPages = (int) (response.getTotalResults() / bufferSize); - + display.startProcess("Pulling AGM PA's from curation", response.getTotalResults()); - + for (int i = 0; i <= totalPages; i++) { - //log.info("page: " + i + " limit: " + indexerConfig.getBufferSize()); + // log.info("page: " + i + " limit: " + indexerConfig.getBufferSize()); queue.add(String.valueOf(i)); } @@ -57,7 +56,7 @@ public List getFiltered(int threadCount, int bufferSize) while (queue.size() > 0) { TimeUnit.SECONDS.sleep(10); } - + for (Thread t : threads) { t.join(); } @@ -66,9 +65,9 @@ public List getFiltered(int threadCount, int bufferSize) System.exit(-1); } display.finishProcess(); - + ret = new ArrayList<>(fullList); - + writeToCache(cacheFileName, ret); return ret; @@ -80,7 +79,7 @@ public class WorkerThread extends Thread { private LinkedBlockingDeque queue; private LinkedBlockingDeque fullList; private ProcessDisplayHelper display; - + public WorkerThread(int bufferSize, LinkedBlockingDeque queue, LinkedBlockingDeque fullList, ProcessDisplayHelper display) { this.bufferSize = bufferSize; this.queue = queue; @@ -94,10 +93,10 @@ public void run() { HashMap params = new HashMap<>(); params.put("internal", false); params.put("obsolete", false); - //params.put("phenotypeAnnotationSubject.primaryExternalId", "SGD:S000001240"); + // params.put("phenotypeAnnotationSubject.primaryExternalId", "SGD:S000001240"); - while(true) { - if(queue.isEmpty()) { + while (true) { + if (queue.isEmpty()) { return; } @@ -118,7 +117,7 @@ public void run() { } } - + } } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AllelePhenotypeAnnotationService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AllelePhenotypeAnnotationService.java index 4403fdde0..3d44e80c1 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AllelePhenotypeAnnotationService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/AllelePhenotypeAnnotationService.java @@ -32,19 +32,17 @@ public List getFiltered(int threadCount, int bufferSi } ProcessDisplayHelper display = new ProcessDisplayHelper(2000); - LinkedBlockingDeque queue = new LinkedBlockingDeque<>(); LinkedBlockingDeque fullList = new LinkedBlockingDeque<>(); - + SearchResponse response = alleleApi.findForPublic(0, 0, null); - - + int totalPages = (int) (response.getTotalResults() / bufferSize); - + display.startProcess("Pulling Allele PA's from curation", response.getTotalResults()); - + for (int i = 0; i <= totalPages; i++) { - //log.info("page: " + i + " limit: " + indexerConfig.getBufferSize()); + // log.info("page: " + i + " limit: " + indexerConfig.getBufferSize()); queue.add(String.valueOf(i)); } @@ -59,7 +57,7 @@ public List getFiltered(int threadCount, int bufferSi while (queue.size() > 0) { TimeUnit.SECONDS.sleep(10); } - + for (Thread t : threads) { t.join(); } @@ -68,22 +66,21 @@ public List getFiltered(int threadCount, int bufferSi System.exit(-1); } display.finishProcess(); - + ret = new ArrayList<>(fullList); - + writeToCache(cacheFileName, ret); return ret; } - - + public class WorkerThread extends Thread { private int bufferSize; private LinkedBlockingDeque queue; private LinkedBlockingDeque fullList; private ProcessDisplayHelper display; - + public WorkerThread(int bufferSize, LinkedBlockingDeque queue, LinkedBlockingDeque fullList, ProcessDisplayHelper display) { this.bufferSize = bufferSize; this.queue = queue; @@ -97,10 +94,10 @@ public void run() { HashMap params = new HashMap<>(); params.put("internal", false); params.put("obsolete", false); - //params.put("phenotypeAnnotationSubject.primaryExternalId", "SGD:S000001240"); + // params.put("phenotypeAnnotationSubject.primaryExternalId", "SGD:S000001240"); - while(true) { - if(queue.isEmpty()) { + while (true) { + if (queue.isEmpty()) { return; } @@ -121,6 +118,6 @@ public void run() { } } - + } } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/BaseService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/BaseService.java index cdbf4aa1d..b40960794 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/BaseService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/BaseService.java @@ -20,9 +20,9 @@ public class BaseService { private static HashSet allNeoAlleleIDs; private static HashSet allNeoGeneIDs; private static HashSet allNeoModelIDs; - + protected HashSet getAllNeoAlleleIDs() { - if(allNeoAlleleIDs == null) { + if (allNeoAlleleIDs == null) { String alleleIdsFileName = "allele_ids.gz"; List alleleList = readFromCache(alleleIdsFileName, List.class); @@ -37,10 +37,10 @@ protected HashSet getAllNeoAlleleIDs() { } return allNeoAlleleIDs; } - + protected HashSet getAllNeoGeneIDs() { - - if(allNeoGeneIDs == null) { + + if (allNeoGeneIDs == null) { String geneIdsFileName = "gene_ids.gz"; List geneList = readFromCache(geneIdsFileName, List.class); @@ -53,12 +53,12 @@ protected HashSet getAllNeoGeneIDs() { writeToCache(geneIdsFileName, new ArrayList<>(allNeoGeneIDs)); } } - + return allNeoGeneIDs; } - + protected HashSet getAllNeoModelIDs() { - if(allNeoModelIDs == null) { + if (allNeoModelIDs == null) { String modelIdsFileName = "model_ids.gz"; List modelList = readFromCache(modelIdsFileName, List.class); @@ -95,10 +95,10 @@ protected void writeToCache(String fileName, E object) { e.printStackTrace(); } } - + protected boolean hasNoExcludedEntities(List entitiesToBeValidated) { AtomicBoolean hasNoExcludedEntities = new AtomicBoolean(true); - for (AuditedObject auditedObject: entitiesToBeValidated) { + for (AuditedObject auditedObject : entitiesToBeValidated) { if (auditedObject.getObsolete()) { hasNoExcludedEntities.set(false); } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GenePhenotypeAnnotationService.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GenePhenotypeAnnotationService.java index f379b30df..6af44c057 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GenePhenotypeAnnotationService.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/service/GenePhenotypeAnnotationService.java @@ -31,18 +31,18 @@ public List getFiltered(int threadCount, int bufferSize } ProcessDisplayHelper display = new ProcessDisplayHelper(2000); - + LinkedBlockingDeque queue = new LinkedBlockingDeque<>(); LinkedBlockingDeque fullList = new LinkedBlockingDeque<>(); - + SearchResponse response = geneApi.findForPublic(0, 0, null); int totalPages = (int) (response.getTotalResults() / bufferSize); - + display.startProcess("Pulling Gene PA's from curation", response.getTotalResults()); - + for (int i = 0; i <= totalPages; i++) { - //log.info("page: " + i + " limit: " + indexerConfig.getBufferSize()); + // log.info("page: " + i + " limit: " + indexerConfig.getBufferSize()); queue.add(String.valueOf(i)); } @@ -57,7 +57,7 @@ public List getFiltered(int threadCount, int bufferSize while (queue.size() > 0) { TimeUnit.SECONDS.sleep(10); } - + for (Thread t : threads) { t.join(); } @@ -66,22 +66,21 @@ public List getFiltered(int threadCount, int bufferSize System.exit(-1); } display.finishProcess(); - + ret = new ArrayList<>(fullList); - + writeToCache(cacheFileName, ret); return ret; - + } - - + public class WorkerThread extends Thread { private int bufferSize; private LinkedBlockingDeque queue; private LinkedBlockingDeque fullList; private ProcessDisplayHelper display; - + public WorkerThread(int bufferSize, LinkedBlockingDeque queue, LinkedBlockingDeque fullList, ProcessDisplayHelper display) { this.bufferSize = bufferSize; this.queue = queue; @@ -95,10 +94,10 @@ public void run() { HashMap params = new HashMap<>(); params.put("internal", false); params.put("obsolete", false); - //params.put("phenotypeAnnotationSubject.primaryExternalId", "SGD:S000001240"); + // params.put("phenotypeAnnotationSubject.primaryExternalId", "SGD:S000001240"); - while(true) { - if(queue.isEmpty()) { + while (true) { + if (queue.isEmpty()) { return; } @@ -119,7 +118,7 @@ public void run() { } } - + } } From 803c6002c25c9ba64e71cda3f88f83f3529d97ff Mon Sep 17 00:00:00 2001 From: Olin Blodgett Date: Tue, 4 Mar 2025 10:25:05 -0500 Subject: [PATCH 10/12] Revert ForPubic interfaces until the github issue can be resolved --- .../PhenotypeAnnotationCurationIndexer.java | 7 ++--- .../AGMPhenotypeAnnotationInterface.java | 24 ++++++++++------- .../AlleleDiseaseAnnotationInterface.java | 2 +- .../AllelePhenotypeAnnotationInterface.java | 24 ++++++++++------- .../interfaces/ForPublicFindInterface.java | 4 +++ .../GeneDiseaseAnnotationInterface.java | 2 +- .../GeneExpressionAnnotationInterface.java | 8 ++---- .../GeneGeneticInteractionInterface.java | 2 +- .../GeneMolecularInteractionInterface.java | 2 +- .../GenePhenotypeAnnotationInterface.java | 26 ++++++++++++------- ...GeneToGeneOrthologyGeneratedInterface.java | 15 +++++++++++ .../GeneToGeneParalogyInterface.java | 14 ++++++++++ .../VocabularyTermRESTInterface.java | 15 +++++++++++ 13 files changed, 104 insertions(+), 41 deletions(-) diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/PhenotypeAnnotationCurationIndexer.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/PhenotypeAnnotationCurationIndexer.java index 3a542b18e..9ad10a6ae 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/PhenotypeAnnotationCurationIndexer.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/PhenotypeAnnotationCurationIndexer.java @@ -22,6 +22,7 @@ import org.alliancegenome.curation_api.model.entities.PhenotypeAnnotation; import org.alliancegenome.curation_api.model.entities.Reference; import org.alliancegenome.curation_api.model.entities.VocabularyTerm; +import org.alliancegenome.curation_api.util.ProcessDisplayHelper; import org.alliancegenome.indexer.RestConfig; import org.alliancegenome.indexer.config.IndexerConfig; import org.alliancegenome.indexer.indexers.Indexer; @@ -35,7 +36,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; -import net.nilosplace.process_display.ProcessDisplayHelper; + @Slf4j public class PhenotypeAnnotationCurationIndexer extends Indexer { @@ -92,7 +93,7 @@ private List createGenePhenotypeAnnotationDocum ProcessDisplayHelper ph = new ProcessDisplayHelper(10000); ph.startProcess("Creating Gene Phenotype Annotations", geneMap.size()); - final VocabularyTerm relationIsImplicatedIn = vocabTermService.getDiseaseRelationTerms().get("is_implicated_in"); + VocabularyTerm relationIsImplicatedIn = vocabTermService.getDiseaseRelationTerms().get("is_implicated_in"); for (Entry>> pairMap : geneMap.entrySet()) { HashMap lookup = new HashMap<>(); @@ -168,7 +169,7 @@ private void addPhenotypeAnnotationsToLGlobalMap(List g private void indexAlleles() { List allelePhenotypeAnnotations = alleleService.getFiltered(indexerConfig.getThreadCount(), indexerConfig.getBufferSize()); - log.info("Filtered Alleles: " + allelePhenotypeAnnotations.size()); + log.info("Filtered Alleles: " + String.format("%,d", allelePhenotypeAnnotations.size())); for (AllelePhenotypeAnnotation da : allelePhenotypeAnnotations) { Allele allele = da.getPhenotypeAnnotationSubject(); Pair> allelePair = alleleMap.computeIfAbsent(allele.getIdentifier(), alleleCurie -> Pair.of(allele, new ArrayList<>())); diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AGMPhenotypeAnnotationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AGMPhenotypeAnnotationInterface.java index 3a1070c1b..1a841b89e 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AGMPhenotypeAnnotationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AGMPhenotypeAnnotationInterface.java @@ -1,22 +1,28 @@ package org.alliancegenome.indexer.indexers.curation.interfaces; -import com.fasterxml.jackson.annotation.JsonView; -import jakarta.ws.rs.*; -import org.alliancegenome.curation_api.interfaces.base.BaseIdCrudInterface; +import java.util.HashMap; + import org.alliancegenome.curation_api.model.entities.AGMPhenotypeAnnotation; import org.alliancegenome.curation_api.response.SearchResponse; import org.alliancegenome.curation_api.view.View; -import java.util.HashMap; +import com.fasterxml.jackson.annotation.JsonView; -@Path("/agm-phenotype-annotation") -@Produces({"application/json"}) -@Consumes({"application/json"}) -public interface AGMPhenotypeAnnotationInterface extends BaseIdCrudInterface { +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; +@Path("/agm-phenotype-annotation") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public interface AGMPhenotypeAnnotationInterface extends ForPublicFindInterface { + @Override @POST @Path("/findForPublic") @JsonView({View.PhenotypeAnnotationView.class}) SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); - } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AlleleDiseaseAnnotationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AlleleDiseaseAnnotationInterface.java index a4f273a9a..33f2815cc 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AlleleDiseaseAnnotationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AlleleDiseaseAnnotationInterface.java @@ -23,6 +23,6 @@ public interface AlleleDiseaseAnnotationInterface extends ForPublicFindInterface @Override @POST @Path("/findForPublic") - @JsonView({View.ForPublic.class}) + @JsonView({ View.ForPublic.class }) SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AllelePhenotypeAnnotationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AllelePhenotypeAnnotationInterface.java index dd2de4cbe..7bf764163 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AllelePhenotypeAnnotationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AllelePhenotypeAnnotationInterface.java @@ -1,22 +1,28 @@ package org.alliancegenome.indexer.indexers.curation.interfaces; -import com.fasterxml.jackson.annotation.JsonView; -import jakarta.ws.rs.*; -import org.alliancegenome.curation_api.interfaces.base.BaseIdCrudInterface; +import java.util.HashMap; + import org.alliancegenome.curation_api.model.entities.AllelePhenotypeAnnotation; import org.alliancegenome.curation_api.response.SearchResponse; import org.alliancegenome.curation_api.view.View; -import java.util.HashMap; +import com.fasterxml.jackson.annotation.JsonView; -@Path("/allele-phenotype-annotation") -@Produces({"application/json"}) -@Consumes({"application/json"}) -public interface AllelePhenotypeAnnotationInterface extends BaseIdCrudInterface { +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; +@Path("/allele-phenotype-annotation") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public interface AllelePhenotypeAnnotationInterface extends ForPublicFindInterface { + @Override @POST @Path("/findForPublic") @JsonView({View.PhenotypeAnnotationView.class}) SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); - } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ForPublicFindInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ForPublicFindInterface.java index 971a5f249..5d6d9ca19 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ForPublicFindInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/ForPublicFindInterface.java @@ -3,6 +3,9 @@ import java.util.HashMap; import org.alliancegenome.curation_api.response.SearchResponse; +import org.alliancegenome.curation_api.view.View; + +import com.fasterxml.jackson.annotation.JsonView; import jakarta.ws.rs.DefaultValue; import jakarta.ws.rs.POST; @@ -21,6 +24,7 @@ SearchResponse findForPublic( @POST @Path("/findForPublic") + @JsonView({ View.ForPublic.class }) SearchResponse findForPublic( @DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneDiseaseAnnotationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneDiseaseAnnotationInterface.java index f712a25cb..9c99b54da 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneDiseaseAnnotationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneDiseaseAnnotationInterface.java @@ -23,6 +23,6 @@ public interface GeneDiseaseAnnotationInterface extends ForPublicFindInterface findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneExpressionAnnotationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneExpressionAnnotationInterface.java index b4f0827be..d934e8175 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneExpressionAnnotationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneExpressionAnnotationInterface.java @@ -23,10 +23,6 @@ public interface GeneExpressionAnnotationInterface extends ForPublicFindInterfac @Override @POST @Path("/findForPublic") - @JsonView({View.ForPublic.class}) - SearchResponse findForPublic( - @DefaultValue("0") @QueryParam("page") Integer page, - @DefaultValue("10") @QueryParam("limit") Integer limit, - HashMap params - ); + @JsonView({ View.ForPublic.class }) + SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneGeneticInteractionInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneGeneticInteractionInterface.java index e5585c304..a34cdefdb 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneGeneticInteractionInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneGeneticInteractionInterface.java @@ -23,6 +23,6 @@ public interface GeneGeneticInteractionInterface extends ForPublicFindInterface< @Override @POST @Path("/findForPublic") - @JsonView({View.ForPublic.class}) + @JsonView({ View.ForPublic.class }) SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneMolecularInteractionInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneMolecularInteractionInterface.java index cc0129c02..17316f235 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneMolecularInteractionInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneMolecularInteractionInterface.java @@ -23,6 +23,6 @@ public interface GeneMolecularInteractionInterface extends ForPublicFindInterfac @Override @POST @Path("/findForPublic") - @JsonView({View.ForPublic.class}) + @JsonView({ View.ForPublic.class }) SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GenePhenotypeAnnotationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GenePhenotypeAnnotationInterface.java index 7cef74d04..9174c8aa6 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GenePhenotypeAnnotationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GenePhenotypeAnnotationInterface.java @@ -1,22 +1,28 @@ package org.alliancegenome.indexer.indexers.curation.interfaces; -import com.fasterxml.jackson.annotation.JsonView; -import jakarta.ws.rs.*; -import org.alliancegenome.curation_api.interfaces.base.BaseIdCrudInterface; +import java.util.HashMap; + import org.alliancegenome.curation_api.model.entities.GenePhenotypeAnnotation; import org.alliancegenome.curation_api.response.SearchResponse; import org.alliancegenome.curation_api.view.View; -import java.util.HashMap; +import com.fasterxml.jackson.annotation.JsonView; -@Path("/gene-phenotype-annotation") -@Produces({"application/json"}) -@Consumes({"application/json"}) -public interface GenePhenotypeAnnotationInterface extends BaseIdCrudInterface { +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; +@Path("/gene-phenotype-annotation") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public interface GenePhenotypeAnnotationInterface extends ForPublicFindInterface { + @Override @POST @Path("/findForPublic") - @JsonView({View.PhenotypeAnnotationView.class}) + @JsonView({ View.PhenotypeAnnotationView.class }) SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); - } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneOrthologyGeneratedInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneOrthologyGeneratedInterface.java index d89b5c5be..1b79620a8 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneOrthologyGeneratedInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneOrthologyGeneratedInterface.java @@ -1,10 +1,19 @@ package org.alliancegenome.indexer.indexers.curation.interfaces; +import java.util.HashMap; + import org.alliancegenome.curation_api.model.entities.orthology.GeneToGeneOrthologyGenerated; +import org.alliancegenome.curation_api.response.SearchResponse; +import org.alliancegenome.curation_api.view.View; + +import com.fasterxml.jackson.annotation.JsonView; import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.POST; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; import jakarta.ws.rs.core.MediaType; @Path("/orthologygenerated") @@ -12,4 +21,10 @@ @Consumes(MediaType.APPLICATION_JSON) public interface GeneToGeneOrthologyGeneratedInterface extends ForPublicFindInterface { + @Override + @POST + @Path("/findForPublic") + @JsonView({View.ForPublic.class}) + SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); + } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneParalogyInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneParalogyInterface.java index 26a547b0a..1b22a4d02 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneParalogyInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/GeneToGeneParalogyInterface.java @@ -1,15 +1,29 @@ package org.alliancegenome.indexer.indexers.curation.interfaces; +import java.util.HashMap; + import org.alliancegenome.curation_api.model.entities.GeneToGeneParalogy; +import org.alliancegenome.curation_api.response.SearchResponse; +import org.alliancegenome.curation_api.view.View; + +import com.fasterxml.jackson.annotation.JsonView; import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.POST; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; import jakarta.ws.rs.core.MediaType; @Path("/paralogy") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public interface GeneToGeneParalogyInterface extends ForPublicFindInterface { + @Override + @POST + @Path("/findForPublic") + @JsonView({View.ForPublic.class}) + SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/VocabularyTermRESTInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/VocabularyTermRESTInterface.java index d0a75e61c..2ed3926bd 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/VocabularyTermRESTInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/VocabularyTermRESTInterface.java @@ -1,15 +1,30 @@ package org.alliancegenome.indexer.indexers.curation.interfaces; +import java.util.HashMap; + import org.alliancegenome.curation_api.model.entities.VocabularyTerm; +import org.alliancegenome.curation_api.response.SearchResponse; +import org.alliancegenome.curation_api.view.View; + +import com.fasterxml.jackson.annotation.JsonView; import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.POST; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; import jakarta.ws.rs.core.MediaType; @Path("/vocabularyterm") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public interface VocabularyTermRESTInterface extends ForPublicFindInterface { + + @Override + @POST + @Path("/findForPublic") + @JsonView({View.ForPublic.class}) + SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); } From c8e22a8856217eda6506cb5f2c934b423bb6ad01 Mon Sep 17 00:00:00 2001 From: Olin Blodgett Date: Tue, 4 Mar 2025 10:31:42 -0500 Subject: [PATCH 11/12] Updated elastic search --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 72e964ce1..e56c4a321 100644 --- a/pom.xml +++ b/pom.xml @@ -58,17 +58,17 @@ org.elasticsearch elasticsearch - 7.17.14 + 7.17.28 org.elasticsearch elasticsearch-core - 7.17.14 + 7.17.28 org.elasticsearch.client elasticsearch-rest-high-level-client - 7.17.14 + 7.17.28 com.github.mmazi From 094bd0e74a481c42c25b510e8995d6806adc46fa Mon Sep 17 00:00:00 2001 From: Olin Blodgett Date: Tue, 4 Mar 2025 12:41:06 -0500 Subject: [PATCH 12/12] Fix for interfaces --- .../curation/interfaces/AGMPhenotypeAnnotationInterface.java | 2 +- .../curation/interfaces/AllelePhenotypeAnnotationInterface.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AGMPhenotypeAnnotationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AGMPhenotypeAnnotationInterface.java index 1a841b89e..d9df14b18 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AGMPhenotypeAnnotationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AGMPhenotypeAnnotationInterface.java @@ -23,6 +23,6 @@ public interface AGMPhenotypeAnnotationInterface extends ForPublicFindInterface< @Override @POST @Path("/findForPublic") - @JsonView({View.PhenotypeAnnotationView.class}) + @JsonView({ View.PhenotypeAnnotationView.class }) SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); } diff --git a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AllelePhenotypeAnnotationInterface.java b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AllelePhenotypeAnnotationInterface.java index 7bf764163..102d36d9b 100644 --- a/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AllelePhenotypeAnnotationInterface.java +++ b/agr_indexer/src/main/java/org/alliancegenome/indexer/indexers/curation/interfaces/AllelePhenotypeAnnotationInterface.java @@ -23,6 +23,6 @@ public interface AllelePhenotypeAnnotationInterface extends ForPublicFindInterfa @Override @POST @Path("/findForPublic") - @JsonView({View.PhenotypeAnnotationView.class}) + @JsonView({ View.PhenotypeAnnotationView.class }) SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, HashMap params); }