Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,30 +1,18 @@
package org.alliancegenome.indexer.config;

import org.alliancegenome.indexer.indexers.AlleleIndexer;
import org.alliancegenome.indexer.indexers.DatasetIndexer;
import org.alliancegenome.indexer.indexers.DiseaseIndexer;
import org.alliancegenome.indexer.indexers.GeneIndexer;
import org.alliancegenome.indexer.indexers.GoIndexer;
import org.alliancegenome.indexer.indexers.ModelIndexer;
import org.alliancegenome.indexer.indexers.curation.DiseaseAnnotationCurationIndexer;
import org.alliancegenome.indexer.indexers.curation.GeneExpressionAnnotationIndexer;
import org.alliancegenome.indexer.indexers.curation.GeneGeneticInteractionCurationIndexer;
import org.alliancegenome.indexer.indexers.curation.GeneMolecularInteractionCurationIndexer;
import org.alliancegenome.indexer.indexers.curation.GeneToGeneParalogyIndexer;
import org.alliancegenome.indexer.indexers.curation.PhenotypeAnnotationCurationIndexer;
import org.alliancegenome.indexer.indexers.curation.ReleaseInfoIndexer;
import org.alliancegenome.indexer.indexers.curation.GeneToGeneOrthologyIndexer;
import org.alliancegenome.indexer.indexers.*;
import org.alliancegenome.indexer.indexers.curation.*;

public enum IndexerConfig {

// Neo Indexers
GeneIndexer("gene", GeneIndexer.class, 4, 359, 359, 8, 1),
DatasetIndexer("dataset", DatasetIndexer.class, 4, 566, 566, 8, 1),
DiseaseIndexer("disease", DiseaseIndexer.class, 4, 680, 680, 8, 1),
AlleleIndexer("allele", AlleleIndexer.class, 4, 1517, 1517, 8, 1),
GoIndexer("go", GoIndexer.class, 4, 914, 914, 8, 1),
ModelIndexer("model", ModelIndexer.class, 4, 1426, 1426, 8, 1),

// Curation Indexers
DiseaseAnnotationIndexer("diseaseAnnotation", DiseaseAnnotationCurationIndexer.class, 1, 1500, 1500, 2, 1),
GeneExpressionAnnotationIndexer("geneExpressionAnnotation", GeneExpressionAnnotationIndexer.class, 4, 1500, 1500, 2, 1),
Expand All @@ -33,8 +21,8 @@ public enum IndexerConfig {
ParalogyIndexer("paralogy", GeneToGeneParalogyIndexer.class, 4, 5000, 5000, 8, 1),
PhenotypeAnnotationIndexer("phenotypeAnnotation", PhenotypeAnnotationCurationIndexer.class, 4, 1500, 1500, 2, 1),
ReleaseInfoIndexer("release", ReleaseInfoIndexer.class, 1, 1, 1, 1, 1),
GeneToGeneOrthologyIndexer("geneToGeneOrthology", GeneToGeneOrthologyIndexer.class, 4, 1500, 1500, 8, 1)
;
GeneToGeneOrthologyIndexer("geneToGeneOrthology", GeneToGeneOrthologyIndexer.class, 4, 1500, 1500, 8, 1),
GeneSummaryIndexer("geneSummary", GeneSummaryIndexer.class, 4, 2000, 2000, 8, 1);


private String typeName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,14 +186,9 @@ public <D extends ESDocument> void indexDocuments(Iterable<D> docs, Class<?> vie
public void initiateThreading(LinkedBlockingDeque<String> queue) throws InterruptedException {
Integer numberOfThreads = indexerConfig.getThreadCount();

List<Thread> threads = new ArrayList<Thread>();
List<Thread> threads = new ArrayList<>();
for (int i = 0; i < numberOfThreads; i++) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
startSingleThread(queue);
}
});
Thread t = new Thread(() -> startSingleThread(queue));
threads.add(t);
t.start();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package org.alliancegenome.indexer.indexers.curation;

import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.alliancegenome.api.entity.GeneSummaryDocument;
import org.alliancegenome.curation_api.model.entities.Gene;
import org.alliancegenome.curation_api.response.SearchResponse;
import org.alliancegenome.indexer.RestConfig;
import org.alliancegenome.indexer.config.IndexerConfig;
import org.alliancegenome.indexer.indexers.Indexer;
import org.alliancegenome.indexer.indexers.curation.service.GeneSummaryService;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.LinkedBlockingDeque;

@Slf4j
public class GeneSummaryIndexer extends Indexer {

final private GeneSummaryService service = new GeneSummaryService();

public GeneSummaryIndexer(IndexerConfig config) {
super(config);
}

@Override
public void index() {
try {
log.info("Getting Gene Summary Info");
SearchResponse<Gene> geneSummaryResponse = service.getGeneSummary(0, 0);
log.info("GeneSummary count: " + geneSummaryResponse.getTotalResults());
int totalPages = (int) (geneSummaryResponse.getTotalResults() / indexerConfig.getBufferSize());
LinkedBlockingDeque<String> queue = new LinkedBlockingDeque<>();
for (int i = 0; i <= totalPages; i++) {
queue.add(String.valueOf(i));
}
initiateThreading(queue);
} catch (Exception e) {
e.printStackTrace();
}
}

@Override
protected ObjectMapper customizeObjectMapper(ObjectMapper objectMapper) {
return RestConfig.config.getJacksonObjectMapperFactory().createObjectMapper();
}

protected void startSingleThread(LinkedBlockingDeque<String> queue) {
while (true) {
try {
if (queue.isEmpty()) {
return;
}
String page = queue.takeFirst();
SearchResponse<Gene> resp = service.getGeneSummary(Integer.valueOf(page), indexerConfig.getBufferSize());
List<GeneSummaryDocument> docs = createGeneSummaryDocuments(resp.getResults());

indexDocuments(docs);
} catch (Exception e) {
log.error("Error while indexing...", e);
System.exit(-1);
return;
}
}
}

private List<GeneSummaryDocument> createGeneSummaryDocuments(List<Gene> geneInfoList) {
List<GeneSummaryDocument> documents = new ArrayList<>();
for (Gene gene : geneInfoList) {
GeneSummaryDocument document = new GeneSummaryDocument();
document.setGene(gene);
documents.add(document);
}
return documents;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package org.alliancegenome.indexer.indexers.curation.interfaces;

import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;
import org.alliancegenome.curation_api.model.entities.Gene;
import org.alliancegenome.curation_api.response.SearchResponse;

import java.util.HashMap;

@Path("/gene")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface GeneSummaryInterface {
@POST
@Path("/findForPublic")
SearchResponse<Gene> findForPublic(
@DefaultValue("0") @QueryParam("page") Integer page,
@DefaultValue("10") @QueryParam("limit") Integer limit,
HashMap<String, Object> params);

@POST
@Path("/findForPublic")
SearchResponse<Gene> findForPublic(
@DefaultValue("0") @QueryParam("page") Integer page,
@DefaultValue("10") @QueryParam("limit") Integer limit,
@DefaultValue("ForPublic") @QueryParam("view") String view,
HashMap<String, Object> params);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package org.alliancegenome.indexer.indexers.curation.service;

import lombok.extern.slf4j.Slf4j;
import org.alliancegenome.core.config.ConfigHelper;
import org.alliancegenome.curation_api.model.entities.Gene;
import org.alliancegenome.curation_api.response.SearchResponse;
import org.alliancegenome.indexer.RestConfig;
import org.alliancegenome.indexer.indexers.curation.interfaces.GeneSummaryInterface;
import si.mazi.rescu.RestProxyFactory;

import java.util.HashMap;

@Slf4j
public class GeneSummaryService {
private final GeneSummaryInterface geneSummaryApi = RestProxyFactory.createProxy(GeneSummaryInterface.class, ConfigHelper.getCurationApiUrl(), RestConfig.config);

public SearchResponse<Gene> getGeneSummary(Integer page, Integer limit) {

HashMap<String, Object> params = new HashMap<>();
params.put("internal", false);
params.put("obsolete", false);
// params.put("primaryExternalId", "MGI:109583");

return geneSummaryApi.findForPublic(page, limit, "GeneView", params);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.alliancegenome.api.entity;

import lombok.Data;
import lombok.EqualsAndHashCode;
import org.alliancegenome.curation_api.model.entities.Gene;
import org.alliancegenome.es.index.ESDocument;

@Data
@EqualsAndHashCode(callSuper = true)
public class GeneSummaryDocument extends ESDocument {

protected String category = "gene_summary";
private Gene gene;

@Override
public String getType() {
return category;
}

}
Loading