diff --git a/gepi/README.md b/gepi/README.md index b95435bf..a277f247 100644 --- a/gepi/README.md +++ b/gepi/README.md @@ -19,8 +19,8 @@ The `production` stage expects that the complete GePI project has been built in Run the following commands to create a `development` container: ```bash -DOCKER_BUILDKIT=1 docker build -t gepi:0.11.1 --target development . -docker run -dp 8080:8080 -v {/path/to/gepi/directory}:/var/gepi/dev -e GEPI_CONFIGURATION= gepi:0.11.1 +DOCKER_BUILDKIT=1 docker build -t gepi:0.11.2 --target development . +docker run -dp 8080:8080 -v {/path/to/gepi/directory}:/var/gepi/dev -e GEPI_CONFIGURATION= gepi:0.11.2 ``` The first command builds an image of the `development` stage. This will also build the `dependencies` stage where all the Java dependencies of the GePI application are downloaded and cached. This will take a while on the first execution but should be faster afterwards thanks to caching. @@ -38,8 +38,8 @@ To run the `production` container, run ```bash mvn clean package --projects gepi-webapp --also-make -DOCKER_BUILDKIT=1 docker build -t gepi:0.11.1 --target production . -docker run -dp 8080:8080 --name gepi gepi:0.11.1 +DOCKER_BUILDKIT=1 docker build -t gepi:0.11.2 --target production . +docker run -dp 8080:8080 --name gepi gepi:0.11.2 ``` These commands @@ -68,7 +68,7 @@ gepi.neo4j.bolt.url=bolt://: A production environment has a few requirements that are of lesser importance during development. This section explains requirements and solutions that may come up during GePI deployment with the Docker container. While detailed explanations come below, the full Docker `run` command we use for deployment looks like the following: ``` -docker run -dp 80:8080 -p 443:8443 -v /host/path/to/certificate.p12:/var/lib/jetty/etc/keystore.p12 -v /host/path/to/configuration.properties:/gepi-webapp-configuration.properties --add-host=host.docker.internal:host-gateway --name gepi -e GEPI_CONFIGURATION=/gepi-webapp-configuration.properties gepi:0.11.1 jetty.sslContext.keyStorePassword= +docker run -dp 80:8080 -p 443:8443 -v /host/path/to/certificate.p12:/var/lib/jetty/etc/keystore.p12 -v /host/path/to/configuration.properties:/gepi-webapp-configuration.properties --add-host=host.docker.internal:host-gateway --name gepi -e GEPI_CONFIGURATION=/gepi-webapp-configuration.properties gepi:0.11.2 jetty.sslContext.keyStorePassword= ``` Alternatively, the `docker-compose-webapp.yml` file can be used with a few additions. @@ -103,7 +103,8 @@ Update the new version number in the following places: * `pom.xml` files (tip: use `mvn versions:set -DnewVersion=` and `mvn versions:commit` to remove the backup files) * `README.md` (by executing `mvn clean package -DskipTests=true` to filter the `readme-raw/README.md` file to automatically set the current version to the `README.md` file) * `AppModule.java` in `gepi-webapp` + * set `PRODUCTION_MODE` to true for releases * the Docker image version in the `docker-compose.yml` * the DB version in `gene-database.xml` in the `gepi-concept-database` module -* in `gepi-indexing-base` execute `python ../../../../jcore-misc/jcore-scripts/createMetaDescriptors.py -c -i -r manual -v 1.0 .` given that `jcore-misc` has been cloned to the same directory as GePI +* in `gepi`-code base directory, execute `python ../../jcore-misc/jcore-scripts/createMetaDescriptors.py -c -i -r manual -v 1.0 gepi-indexing/gepi-indexing-base` given that `jcore-misc` has been cloned to the same directory as GePI * this updates the description file for the use with the JCoRe pipeline builder \ No newline at end of file diff --git a/gepi/docker-compose-webapp.yml b/gepi/docker-compose-webapp.yml index 5641c537..c9887cf0 100644 --- a/gepi/docker-compose-webapp.yml +++ b/gepi/docker-compose-webapp.yml @@ -1,7 +1,7 @@ version: "3.2" services: gepi: - image: gepi:0.11.1 + image: gepi:0.11.2 container_name: gepi ports: - 0.0.0.0:80:8080 diff --git a/gepi/docker-compose-with-es.yml b/gepi/docker-compose-with-es.yml index ecebd50a..9fc06265 100644 --- a/gepi/docker-compose-with-es.yml +++ b/gepi/docker-compose-with-es.yml @@ -1,6 +1,6 @@ services: gepi: - image: gepi:0.11.1 + image: gepi:0.11.2 container_name: gepi ports: - 0.0.0.0:80:8080 diff --git a/gepi/gepi-concept-database/pom.xml b/gepi/gepi-concept-database/pom.xml index 317f886f..fdbbf4b8 100644 --- a/gepi/gepi-concept-database/pom.xml +++ b/gepi/gepi-concept-database/pom.xml @@ -4,7 +4,7 @@ de.julielab gepi - 0.11.1 + 0.11.2 gepi-concept-database GePi Concept Database diff --git a/gepi/gepi-concept-database/src/main/resources/gene-database.xml b/gepi/gepi-concept-database/src/main/resources/gene-database.xml index 6a34139a..3563ecb7 100644 --- a/gepi/gepi-concept-database/src/main/resources/gene-database.xml +++ b/gepi/gepi-concept-database/src/main/resources/gene-database.xml @@ -5,7 +5,7 @@ http://www.julielab.de/conceptdb/facets/default http://www.julielab.de/conceptdb/facets/defaultfacet-1.1.0.xsd http://julielab.de/conceptdb/concepts/bioportal http://www.julielab.de/conceptdb/concepts/bioportalconcepts-1.1.0.xsd"> - 0.11.1 + 0.11.2 http://localhost:7474 diff --git a/gepi/gepi-core/pom.xml b/gepi/gepi-core/pom.xml index 762b5e6e..af4ebe47 100644 --- a/gepi/gepi-core/pom.xml +++ b/gepi/gepi-core/pom.xml @@ -7,7 +7,7 @@ de.julielab gepi - 0.11.1 + 0.11.2 ../pom.xml diff --git a/gepi/gepi-core/src/main/java/de/julielab/gepi/core/retrieval/data/GepiRequestData.java b/gepi/gepi-core/src/main/java/de/julielab/gepi/core/retrieval/data/GepiRequestData.java index c419d6b4..6898aab8 100644 --- a/gepi/gepi-core/src/main/java/de/julielab/gepi/core/retrieval/data/GepiRequestData.java +++ b/gepi/gepi-core/src/main/java/de/julielab/gepi/core/retrieval/data/GepiRequestData.java @@ -18,6 +18,7 @@ public class GepiRequestData implements Cloneable { private String filterFieldsConnectionOperator = "AND"; private EnumSet inputMode; private String docId; + private int eventRetrievalLimitForAggregations; private long dataSessionId; private boolean includeUnary; private int eventLikelihood; @@ -25,7 +26,11 @@ public class GepiRequestData implements Cloneable { private String sectionNameFilterString; private int pageSize = 10; - public GepiRequestData(List eventTypes, boolean includeUnary, int eventLikelihood, Future listAGePiIds, Future listBGePiIds, String[] taxId, String sentenceFilterString, String paragraphFilterString, String filterFieldsConnectionOperator, String sectionNameFilterString, EnumSet inputMode, String docId, long dataSessionId) { + public int getEventRetrievalLimitForAggregations() { + return eventRetrievalLimitForAggregations; + } + + public GepiRequestData(List eventTypes, boolean includeUnary, int eventLikelihood, Future listAGePiIds, Future listBGePiIds, String[] taxId, String sentenceFilterString, String paragraphFilterString, String filterFieldsConnectionOperator, String sectionNameFilterString, EnumSet inputMode, String docId, int eventRetrievalLimitForAggregations, long dataSessionId) { this.includeUnary = includeUnary; this.eventLikelihood = eventLikelihood; this.taxId = taxId; @@ -38,6 +43,7 @@ public GepiRequestData(List eventTypes, boolean includeUnary, int eventL this.filterFieldsConnectionOperator = filterFieldsConnectionOperator; this.inputMode = inputMode; this.docId = docId; + this.eventRetrievalLimitForAggregations = eventRetrievalLimitForAggregations; this.dataSessionId = dataSessionId; } diff --git a/gepi/gepi-core/src/main/java/de/julielab/gepi/core/retrieval/services/EventRetrievalService.java b/gepi/gepi-core/src/main/java/de/julielab/gepi/core/retrieval/services/EventRetrievalService.java index 0f8c5ab2..955c6af9 100644 --- a/gepi/gepi-core/src/main/java/de/julielab/gepi/core/retrieval/services/EventRetrievalService.java +++ b/gepi/gepi-core/src/main/java/de/julielab/gepi/core/retrieval/services/EventRetrievalService.java @@ -147,7 +147,7 @@ public class EventRetrievalService implements IEventRetrievalService { FIELD_EVENT_ARG_HOMOLOGY_PREFERRED_NAME, FIELD_NUM_ARGUMENTS ); - private static final int SCROLL_SIZE = 200; + private static final int SCROLL_SIZE = 2000; private Logger log; private ISearchServerComponent searchServerComponent; private String documentIndex; @@ -218,8 +218,8 @@ public CompletableFuture closedSearch(GepiRequestData requ serverRqst.index = documentIndex; serverRqst.start = from; serverRqst.rows = numRows; - serverRqst.requestTimeout = "10m"; - configureDeepPaging(serverRqst, downloadAll, forCharts); +// serverRqst.requestTimeout = "10m"; + configureDeepPaging(serverRqst, downloadAll, forCharts, requestData.getEventRetrievalLimitForAggregations()); if (!downloadAll) { addHighlighting(serverRqst); } @@ -230,7 +230,7 @@ public CompletableFuture closedSearch(GepiRequestData requ log.debug("Sent closed search server request"); searchServerComponent.process(carrier); if (log.isDebugEnabled()) - log.debug("Server answered after {} seconds. Reading results.", (System.currentTimeMillis()-time) / 1000); + log.debug("Server answered after {} seconds. Reading results.", (System.currentTimeMillis() - time) / 1000); EventRetrievalResult eventResult = eventResponseProcessingService .getEventRetrievalResult(carrier.getSingleSearchServerResponse()); @@ -303,7 +303,7 @@ public CompletableFuture openSearch(GepiRequestData gepiRe log.debug("Sent open search server request"); searchServerComponent.process(carrier); if (log.isDebugEnabled()) - log.debug("Server answered after {} seconds. Reading results.", (System.currentTimeMillis()-time) / 1000); + log.debug("Server answered after {} seconds. Reading results.", (System.currentTimeMillis() - time) / 1000); EventRetrievalResult eventResult = eventResponseProcessingService @@ -342,23 +342,24 @@ public SearchServerRequest getOpenSearchRequest(GepiRequestData requestData, int serverRqst.index = documentIndex; serverRqst.start = from; serverRqst.rows = numRows; - serverRqst.requestTimeout = "10m"; - configureDeepPaging(serverRqst, downloadAll, forCharts); +// serverRqst.requestTimeout = "10m"; + configureDeepPaging(serverRqst, downloadAll, forCharts, requestData.getEventRetrievalLimitForAggregations()); if (!downloadAll) { addHighlighting(serverRqst); } return serverRqst; } - private void configureDeepPaging(SearchServerRequest serverRqst, boolean downloadAll, boolean forCharts) { + private void configureDeepPaging(SearchServerRequest serverRqst, boolean downloadAll, boolean forCharts, int interactionRetrievalLimit) { if (downloadAll) - serverRqst.rows = SCROLL_SIZE; + serverRqst.rows = Math.min(SCROLL_SIZE, interactionRetrievalLimit); serverRqst.fieldsToReturn = forCharts ? FIELDS_FOR_CHARTS : FIELDS_FOR_TABLE; - serverRqst.downloadCompleteResults = downloadAll; + serverRqst.downloadCompleteResults = downloadAll && interactionRetrievalLimit > 0; serverRqst.downloadCompleteResultsMethod = "searchAfter"; serverRqst.downloadCompleteResultMethodKeepAlive = "5m"; if (downloadAll) { - serverRqst.downloadCompleteResultsLimit = 200; + if (interactionRetrievalLimit < Integer.MAX_VALUE) + serverRqst.downloadCompleteResultsLimit = interactionRetrievalLimit; serverRqst.addSortCommand("_shard_doc", SortOrder.ASCENDING); } } @@ -424,8 +425,8 @@ public CompletableFuture getFulltextFilteredEvents(GepiReq serverRqst.index = documentIndex; serverRqst.start = from; serverRqst.rows = numRows; - serverRqst.requestTimeout = "10m"; - configureDeepPaging(serverRqst, downloadAll, forCharts); +// serverRqst.requestTimeout = "10m"; + configureDeepPaging(serverRqst, downloadAll, forCharts, requestData.getEventRetrievalLimitForAggregations()); if (!downloadAll) { addHighlighting(serverRqst); } @@ -436,7 +437,7 @@ public CompletableFuture getFulltextFilteredEvents(GepiReq log.debug("Sent full-text search server request"); searchServerComponent.process(carrier); if (log.isDebugEnabled()) - log.debug("Server answered after {} seconds. Reading results.", (System.currentTimeMillis()-time) / 1000); + log.debug("Server answered after {} seconds. Reading results.", (System.currentTimeMillis() - time) / 1000); EventRetrievalResult eventResult = eventResponseProcessingService .getEventRetrievalResult(carrier.getSingleSearchServerResponse()); diff --git a/gepi/gepi-indexing/gepi-indexing-base/component.meta b/gepi/gepi-indexing/gepi-indexing-base/component.meta index 112bc29b..bae7d061 100644 --- a/gepi/gepi-indexing/gepi-indexing-base/component.meta +++ b/gepi/gepi-indexing/gepi-indexing-base/component.meta @@ -18,7 +18,7 @@ "maven-artifact": { "artifactId": "gepi-indexing-base", "groupId": "de.julielab", - "version": "0.11.1" + "version": "0.11.2" }, "name": "GePi Indexing Base" } diff --git a/gepi/gepi-indexing/gepi-indexing-base/pom.xml b/gepi/gepi-indexing/gepi-indexing-base/pom.xml index 056e7b37..5d638080 100644 --- a/gepi/gepi-indexing/gepi-indexing-base/pom.xml +++ b/gepi/gepi-indexing/gepi-indexing-base/pom.xml @@ -5,7 +5,7 @@ gepi-indexing de.julielab - 0.11.1 + 0.11.2 4.0.0 diff --git a/gepi/gepi-indexing/gepi-indexing-base/src/main/java/de/julielab/gepi/indexing/RelationFieldValueGenerator.java b/gepi/gepi-indexing/gepi-indexing-base/src/main/java/de/julielab/gepi/indexing/RelationFieldValueGenerator.java index de2bfaef..25162046 100644 --- a/gepi/gepi-indexing/gepi-indexing-base/src/main/java/de/julielab/gepi/indexing/RelationFieldValueGenerator.java +++ b/gepi/gepi-indexing/gepi-indexing-base/src/main/java/de/julielab/gepi/indexing/RelationFieldValueGenerator.java @@ -194,6 +194,7 @@ else if (j > i) // document.addField("argument1prefname", createRawFieldValueForAnnotation(argPair[0], arg1EntryIdPath, geneFb.egid2prefNameReplaceFilter)); final IFieldValue arg1HomoPrefNameValue = createRawFieldValueForAnnotation(argPair[0], arg1EntryIdPath, geneFb.orgid2topaggprefname); // document.addField("argument1homoprefname", arg1HomoPrefNameValue); + document.addField("argument1homoprefnameaggvalue", arg1HomoPrefNameValue); // final IFieldValue arg1GoPrefnames = createRawFieldValueForAnnotation(argPair[0], arg1EntryIdPath, geneFb.eg2goprefnameFilter); // document.addField("argument1goprefnames", arg1GoPrefnames); // document.addField("argument1matchtype", Stream.of(argPair).map(ArgumentMention.class::cast).map(ArgumentMention::getRef).map(ConceptMention.class::cast).map(cm -> cm.getResourceEntryList(0).getConfidence() == null || cm.getResourceEntryList(0).getConfidence().contains("9999") ? "exact" : "fuzzy").toArray()); @@ -211,6 +212,7 @@ else if (j > i) // document.addField("argument2prefname", createRawFieldValueForFieldValue(document.getAsRawToken("argument2conceptid"), geneFb.conceptid2prefNameFilter)); final IFieldValue arg2HomoPrefNameValue = createRawFieldValueForAnnotation(argPair[1], arg2EntryIdPath, geneFb.orgid2topaggprefname); // document.addField("argument2homoprefname", arg2HomoPrefNameValue); + document.addField("argument2homoprefnameaggvalue", arg2HomoPrefNameValue); // final IFieldValue arg2GoPrefnames = createRawFieldValueForAnnotation(argPair[1], arg2EntryIdPath, geneFb.eg2goprefnameFilter); // document.addField("argument2goprefnames", arg2GoPrefnames); // document.addField("argument2matchtype", Stream.of(argPair).map(ArgumentMention.class::cast).map(ArgumentMention::getRef).map(ConceptMention.class::cast).map(cm -> cm.getResourceEntryList(0).getConfidence() == null || cm.getResourceEntryList(0).getConfidence().contains("9999") ? "exact" : "fuzzy").toArray()); @@ -255,7 +257,7 @@ else if (j > i) document.addField("ARGUMENT_FS", argPair); // For ElasticSearch aggregations, we create terms in the form 'symbol1---symbol2'. We also sort the symbols so that the same pair of symbols is always stored in the same order. // Then we can use ElasticSearch aggregations to count interactions occurrences instead of retrieving all documents and counting ourselves. -// document.addField("aggregationvalue", document.getAsArrayFieldValue("argumenthomoprefnames").stream().map(IFieldValue::toString).sorted().collect(Collectors.joining("---"))); + document.addField("aggregationvalue", document.getAsArrayFieldValue("argumenthomoprefnames").stream().map(IFieldValue::toString).sorted().collect(Collectors.joining("---"))); // final ArrayFieldValue go1Values = new ArrayFieldValue(arg1GoPrefnames); // final ArrayFieldValue go2Values = new ArrayFieldValue(arg2GoPrefnames); // for (IFieldValue go1 : go1Values) { diff --git a/gepi/gepi-indexing/gepi-indexing-base/src/main/resources/elasticSearchMapping.json b/gepi/gepi-indexing/gepi-indexing-base/src/main/resources/elasticSearchMapping.json index bd438c71..690b0038 100644 --- a/gepi/gepi-indexing/gepi-indexing-base/src/main/resources/elasticSearchMapping.json +++ b/gepi/gepi-indexing/gepi-indexing-base/src/main/resources/elasticSearchMapping.json @@ -103,6 +103,9 @@ "store": true, "norms": false }, + "argument1homoprefnameaggvalue": { + "type": "keyword" + }, "argument1conceptid": { "type": "keyword", "store": true @@ -158,6 +161,9 @@ "store": true, "norms": false }, + "argument2homoprefnameaggvalue": { + "type": "keyword" + }, "argument2conceptid": { "type": "keyword", "store": true diff --git a/gepi/gepi-indexing/gepi-indexing-debug/pom.xml b/gepi/gepi-indexing/gepi-indexing-debug/pom.xml index 76425162..2142baf2 100644 --- a/gepi/gepi-indexing/gepi-indexing-debug/pom.xml +++ b/gepi/gepi-indexing/gepi-indexing-debug/pom.xml @@ -5,7 +5,7 @@ gepi-indexing de.julielab - 0.11.1 + 0.11.2 ../pom.xml 4.0.0 @@ -15,7 +15,7 @@ de.julielab gepi-indexing-base - 0.11.1 + 0.11.2 \ No newline at end of file diff --git a/gepi/gepi-indexing/gepi-indexing-pmc/aeDescriptions.json b/gepi/gepi-indexing/gepi-indexing-pmc/aeDescriptions.json index 3ede8a73..e97c845d 100644 --- a/gepi/gepi-indexing/gepi-indexing-pmc/aeDescriptions.json +++ b/gepi/gepi-indexing/gepi-indexing-pmc/aeDescriptions.json @@ -1 +1 @@ -[{"uri":null,"location":"de.julielab.jcore.ae.lingpipegazetteer.desc.jcore-lingpipe-gazetteer-ae-configurable-resource","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Basically used as NE tagger based on Lingpipe's dictionary-lookup tagger.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Lingpipe Gazetteer AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-lingpipe-gazetteer-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-lingpipe-gazetteer-ae/2.6.1/jcore-lingpipe-gazetteer-ae-2.6.1.jar","packaging":"jar"}},"name":"Gazetteer FPLX HGNC Group Dictionary dev","active":false},{"uri":null,"location":"de.julielab.jcore.ae.lingpipegazetteer.desc.jcore-lingpipe-gazetteer-ae-configurable-resource","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Basically used as NE tagger based on Lingpipe's dictionary-lookup tagger.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Lingpipe Gazetteer AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-lingpipe-gazetteer-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-lingpipe-gazetteer-ae/2.6.1/jcore-lingpipe-gazetteer-ae-2.6.1.jar","packaging":"jar"}},"name":"Gazetteer FPLX HGNC Group Dictionary","active":true},{"uri":null,"location":"de.julielab.jcore.ae.genemerge.desc.gepi-famplex-id-assigner","category":"ae","uimaDescPath":null,"metaDescription":{"description":"","group":"general","module":{"type":"ComponentRepository","name":"manual","version":"1.0","updateable":false,"type":"ComponentRepository"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"GePi Indexing","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"gepi-indexing-base","version":"0.11.0","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/gepi-indexing-base/0.11.0/gepi-indexing-base-0.11.0.jar","packaging":"jar"}},"name":"GePi Famplex ID Assigner","active":true},{"uri":null,"location":"de.julielab.jcore.ae.likelihooddetection.desc.jcore-likelihood-detection-ae","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Analysis Engine to detect epistemic modal expressions and assign the appropriate likelihood category.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Likelihood Detection AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-likelihood-detection-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-likelihood-detection-ae/2.6.1/jcore-likelihood-detection-ae-2.6.1.jar","packaging":"jar"}},"name":"JCoRe Likelihood Detection AE","active":true},{"uri":null,"location":"de.julielab.jcore.ae.likelihoodassignment.desc.jcore-likelihood-assignment-ae","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Analysis Engine to assign likelihood indicators to their corresponding entities and events.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Likelihood Assignment AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-likelihood-assignment-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-likelihood-assignment-ae/2.6.1/jcore-likelihood-assignment-ae-2.6.1.jar","packaging":"jar"}},"name":"JCoRe Likelihood Assignment AE","active":true},{"uri":null,"location":"de.julielab.jcore.ae.eventflattener.desc.jcore-event-flattener-ae","category":"ae","uimaDescPath":null,"metaDescription":{"description":"This component reads de.julielab.jcore.types.EventMention annotations and converts event structures into de.julielab.jcore.types.ext.FlattenedRelation annotation. The purpose of FlattenedRelations is to represent complex event structures in a more simple manner. This can be helpful for visualization or further processing.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Event Flattener AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-event-flattener-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-event-flattener-ae/2.6.1/jcore-event-flattener-ae-2.6.1.jar","packaging":"jar"}},"name":"de.julielab.jcore.ae.eventflattener.EventFlattener","active":true}] \ No newline at end of file +[{"uri":null,"location":"de.julielab.jcore.ae.lingpipegazetteer.desc.jcore-lingpipe-gazetteer-ae-configurable-resource","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Basically used as NE tagger based on Lingpipe's dictionary-lookup tagger.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Lingpipe Gazetteer AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-lingpipe-gazetteer-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-lingpipe-gazetteer-ae/2.6.1/jcore-lingpipe-gazetteer-ae-2.6.1.jar","packaging":"jar"}},"name":"Gazetteer FPLX HGNC Group Dictionary dev","active":false},{"uri":null,"location":"de.julielab.jcore.ae.lingpipegazetteer.desc.jcore-lingpipe-gazetteer-ae-configurable-resource","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Basically used as NE tagger based on Lingpipe's dictionary-lookup tagger.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Lingpipe Gazetteer AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-lingpipe-gazetteer-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-lingpipe-gazetteer-ae/2.6.1/jcore-lingpipe-gazetteer-ae-2.6.1.jar","packaging":"jar"}},"name":"Gazetteer FPLX HGNC Group Dictionary","active":true},{"uri":null,"location":"de.julielab.jcore.ae.genemerge.desc.gepi-famplex-id-assigner","category":"ae","uimaDescPath":null,"metaDescription":{"description":"","group":"general","module":{"type":"ComponentRepository","name":"manual","version":"1.0","updateable":false,"type":"ComponentRepository"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"GePi Indexing","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"gepi-indexing-base","version":"0.11.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/gepi-indexing-base/0.11.1/gepi-indexing-base-0.11.1.jar","packaging":"jar"}},"name":"GePi Famplex ID Assigner","active":true},{"uri":null,"location":"de.julielab.jcore.ae.likelihooddetection.desc.jcore-likelihood-detection-ae","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Analysis Engine to detect epistemic modal expressions and assign the appropriate likelihood category.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Likelihood Detection AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-likelihood-detection-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-likelihood-detection-ae/2.6.1/jcore-likelihood-detection-ae-2.6.1.jar","packaging":"jar"}},"name":"JCoRe Likelihood Detection AE","active":true},{"uri":null,"location":"de.julielab.jcore.ae.likelihoodassignment.desc.jcore-likelihood-assignment-ae","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Analysis Engine to assign likelihood indicators to their corresponding entities and events.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Likelihood Assignment AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-likelihood-assignment-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-likelihood-assignment-ae/2.6.1/jcore-likelihood-assignment-ae-2.6.1.jar","packaging":"jar"}},"name":"JCoRe Likelihood Assignment AE","active":true},{"uri":null,"location":"de.julielab.jcore.ae.eventflattener.desc.jcore-event-flattener-ae","category":"ae","uimaDescPath":null,"metaDescription":{"description":"This component reads de.julielab.jcore.types.EventMention annotations and converts event structures into de.julielab.jcore.types.ext.FlattenedRelation annotation. The purpose of FlattenedRelations is to represent complex event structures in a more simple manner. This can be helpful for visualization or further processing.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Event Flattener AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-event-flattener-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-event-flattener-ae/2.6.1/jcore-event-flattener-ae-2.6.1.jar","packaging":"jar"}},"name":"de.julielab.jcore.ae.eventflattener.EventFlattener","active":true}] \ No newline at end of file diff --git a/gepi/gepi-indexing/gepi-indexing-pmc/pom.xml b/gepi/gepi-indexing/gepi-indexing-pmc/pom.xml index 94a0cc26..ed0aadc9 100644 --- a/gepi/gepi-indexing/gepi-indexing-pmc/pom.xml +++ b/gepi/gepi-indexing/gepi-indexing-pmc/pom.xml @@ -5,7 +5,7 @@ gepi-indexing de.julielab - 0.11.1 + 0.11.2 ../pom.xml 4.0.0 @@ -15,7 +15,7 @@ de.julielab gepi-indexing-base - 0.11.1 + 0.11.2 diff --git a/gepi/gepi-indexing/gepi-indexing-pubmed/aeDescriptions.json b/gepi/gepi-indexing/gepi-indexing-pubmed/aeDescriptions.json index 44beee2a..66a12b90 100644 --- a/gepi/gepi-indexing/gepi-indexing-pubmed/aeDescriptions.json +++ b/gepi/gepi-indexing/gepi-indexing-pubmed/aeDescriptions.json @@ -1 +1 @@ -[{"uri":null,"location":"de.julielab.jcore.ae.lingpipegazetteer.desc.jcore-lingpipe-gazetteer-ae-configurable-resource","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Basically used as NE tagger based on Lingpipe's dictionary-lookup tagger.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Lingpipe Gazetteer AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-lingpipe-gazetteer-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-lingpipe-gazetteer-ae/2.6.1/jcore-lingpipe-gazetteer-ae-2.6.1.jar","packaging":"jar"}},"name":"Gazetteer FPLX HGNC Groups Dictionary dev","active":false},{"uri":null,"location":"de.julielab.jcore.ae.lingpipegazetteer.desc.jcore-lingpipe-gazetteer-ae-configurable-resource","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Basically used as NE tagger based on Lingpipe's dictionary-lookup tagger.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Lingpipe Gazetteer AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-lingpipe-gazetteer-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-lingpipe-gazetteer-ae/2.6.1/jcore-lingpipe-gazetteer-ae-2.6.1.jar","packaging":"jar"}},"name":"Gazetteer FPLX HGNC Groups Dictionary","active":true},{"uri":null,"location":"de.julielab.jcore.ae.genemerge.desc.gepi-famplex-id-assigner","category":"ae","uimaDescPath":null,"metaDescription":{"description":"","group":"general","module":{"type":"ComponentRepository","name":"manual","version":"1.0","updateable":false,"type":"ComponentRepository"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"GePi Indexing","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"gepi-indexing-base","version":"0.11.0-SNAPSHOT","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/gepi-indexing-base/0.11.0-SNAPSHOT/gepi-indexing-base-0.11.0-SNAPSHOT.jar","packaging":"jar"}},"name":"GePi Famplex ID Assigner","active":true},{"uri":null,"location":"de.julielab.jcore.ae.likelihooddetection.desc.jcore-likelihood-detection-ae","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Analysis Engine to detect epistemic modal expressions and assign the appropriate likelihood category.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Likelihood Detection AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-likelihood-detection-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-likelihood-detection-ae/2.6.1/jcore-likelihood-detection-ae-2.6.1.jar","packaging":"jar"}},"name":"JCoRe Likelihood Detection AE","active":true},{"uri":null,"location":"de.julielab.jcore.ae.likelihoodassignment.desc.jcore-likelihood-assignment-ae","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Analysis Engine to assign likelihood indicators to their corresponding entities and events.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Likelihood Assignment AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-likelihood-assignment-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-likelihood-assignment-ae/2.6.1/jcore-likelihood-assignment-ae-2.6.1.jar","packaging":"jar"}},"name":"JCoRe Likelihood Assignment AE","active":true},{"uri":null,"location":"de.julielab.jcore.ae.eventflattener.desc.jcore-event-flattener-ae","category":"ae","uimaDescPath":null,"metaDescription":{"description":"This component reads de.julielab.jcore.types.EventMention annotations and converts event structures into de.julielab.jcore.types.ext.FlattenedRelation annotation. The purpose of FlattenedRelations is to represent complex event structures in a more simple manner. This can be helpful for visualization or further processing.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Event Flattener AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-event-flattener-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-event-flattener-ae/2.6.1/jcore-event-flattener-ae-2.6.1.jar","packaging":"jar"}},"name":"de.julielab.jcore.ae.eventflattener.EventFlattener","active":true},{"uri":null,"location":"de.julielab.jcore.ae.acronymtagger.desc.jcore-acronym-ae","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Arconym Tagger based on the SCHWARTZ & HEARST Algorithm: Ariel S. Schwartz and Marti A. Hearst: A Simple Algorithm For Identifying Abbreviation Definitions in Biomedical Text. In: Pacific Symposium on Biocomputing, 2003.","group":"morpho syntactic","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Acronym Tagger","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-acronym-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-acronym-ae/2.6.1/jcore-acronym-ae-2.6.1.jar","packaging":"jar"}},"name":"JCoRe AcronymAnnotator","active":true}] \ No newline at end of file +[{"uri":null,"location":"de.julielab.jcore.ae.lingpipegazetteer.desc.jcore-lingpipe-gazetteer-ae-configurable-resource","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Basically used as NE tagger based on Lingpipe's dictionary-lookup tagger.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Lingpipe Gazetteer AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-lingpipe-gazetteer-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-lingpipe-gazetteer-ae/2.6.1/jcore-lingpipe-gazetteer-ae-2.6.1.jar","packaging":"jar"}},"name":"Gazetteer FPLX HGNC Groups Dictionary dev","active":false},{"uri":null,"location":"de.julielab.jcore.ae.lingpipegazetteer.desc.jcore-lingpipe-gazetteer-ae-configurable-resource","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Basically used as NE tagger based on Lingpipe's dictionary-lookup tagger.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Lingpipe Gazetteer AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-lingpipe-gazetteer-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-lingpipe-gazetteer-ae/2.6.1/jcore-lingpipe-gazetteer-ae-2.6.1.jar","packaging":"jar"}},"name":"Gazetteer FPLX HGNC Groups Dictionary","active":true},{"uri":null,"location":"de.julielab.jcore.ae.genemerge.desc.gepi-famplex-id-assigner","category":"ae","uimaDescPath":null,"metaDescription":{"description":"","group":"general","module":{"type":"ComponentRepository","name":"manual","version":"1.0","updateable":false,"type":"ComponentRepository"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"GePi Indexing","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"gepi-indexing-base","version":"0.11.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/gepi-indexing-base/0.11.1/gepi-indexing-base-0.11.1.jar","packaging":"jar"}},"name":"GePi Famplex ID Assigner","active":true},{"uri":null,"location":"de.julielab.jcore.ae.likelihooddetection.desc.jcore-likelihood-detection-ae","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Analysis Engine to detect epistemic modal expressions and assign the appropriate likelihood category.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Likelihood Detection AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-likelihood-detection-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-likelihood-detection-ae/2.6.1/jcore-likelihood-detection-ae-2.6.1.jar","packaging":"jar"}},"name":"JCoRe Likelihood Detection AE","active":true},{"uri":null,"location":"de.julielab.jcore.ae.likelihoodassignment.desc.jcore-likelihood-assignment-ae","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Analysis Engine to assign likelihood indicators to their corresponding entities and events.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Likelihood Assignment AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-likelihood-assignment-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-likelihood-assignment-ae/2.6.1/jcore-likelihood-assignment-ae-2.6.1.jar","packaging":"jar"}},"name":"JCoRe Likelihood Assignment AE","active":true},{"uri":null,"location":"de.julielab.jcore.ae.eventflattener.desc.jcore-event-flattener-ae","category":"ae","uimaDescPath":null,"metaDescription":{"description":"This component reads de.julielab.jcore.types.EventMention annotations and converts event structures into de.julielab.jcore.types.ext.FlattenedRelation annotation. The purpose of FlattenedRelations is to represent complex event structures in a more simple manner. This can be helpful for visualization or further processing.","group":"general","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Event Flattener AE","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-event-flattener-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-event-flattener-ae/2.6.1/jcore-event-flattener-ae-2.6.1.jar","packaging":"jar"}},"name":"de.julielab.jcore.ae.eventflattener.EventFlattener","active":true},{"uri":null,"location":"de.julielab.jcore.ae.acronymtagger.desc.jcore-acronym-ae","category":"ae","uimaDescPath":null,"metaDescription":{"description":"Arconym Tagger based on the SCHWARTZ & HEARST Algorithm: Ariel S. Schwartz and Marti A. Hearst: A Simple Algorithm For Identifying Abbreviation Definitions in Biomedical Text. In: Pacific Symposium on Biocomputing, 2003.","group":"morpho syntactic","module":{"type":"GitHubRepository","name":"jcore-base","version":"v2.6","updateable":true,"type":"GitHubRepository","gitHubName":"JULIELab"},"base":null,"exposable":true,"categories":["ae"],"pear":false,"name":"JCoRe Acronym Tagger","base-project":null,"maven-artifact":{"groupId":"de.julielab","artifactId":"jcore-acronym-ae","version":"2.6.1","classifier":null,"file":"/Users/faessler/.m2/repository/de/julielab/jcore-acronym-ae/2.6.1/jcore-acronym-ae-2.6.1.jar","packaging":"jar"}},"name":"JCoRe AcronymAnnotator","active":true}] \ No newline at end of file diff --git a/gepi/gepi-indexing/gepi-indexing-pubmed/pom.xml b/gepi/gepi-indexing/gepi-indexing-pubmed/pom.xml index 1bfbee9c..5abfc5d5 100644 --- a/gepi/gepi-indexing/gepi-indexing-pubmed/pom.xml +++ b/gepi/gepi-indexing/gepi-indexing-pubmed/pom.xml @@ -5,7 +5,7 @@ gepi-indexing de.julielab - 0.11.1 + 0.11.2 ../pom.xml 4.0.0 @@ -15,7 +15,7 @@ de.julielab gepi-indexing-base - 0.11.1 + 0.11.2 diff --git a/gepi/gepi-indexing/gepi-indexing-testdata/pom.xml b/gepi/gepi-indexing/gepi-indexing-testdata/pom.xml index d3fc2754..40097cbb 100644 --- a/gepi/gepi-indexing/gepi-indexing-testdata/pom.xml +++ b/gepi/gepi-indexing/gepi-indexing-testdata/pom.xml @@ -5,7 +5,7 @@ gepi-indexing de.julielab - 0.11.1 + 0.11.2 ../pom.xml 4.0.0 @@ -15,7 +15,7 @@ de.julielab gepi-indexing-base - 0.11.1 + 0.11.2 diff --git a/gepi/gepi-indexing/pom.xml b/gepi/gepi-indexing/pom.xml index 8a3b64d7..733c606e 100644 --- a/gepi/gepi-indexing/pom.xml +++ b/gepi/gepi-indexing/pom.xml @@ -5,7 +5,7 @@ gepi de.julielab - 0.11.1 + 0.11.2 ../pom.xml pom diff --git a/gepi/gepi-test-data/pom.xml b/gepi/gepi-test-data/pom.xml index 0fae6afd..94016e6b 100644 --- a/gepi/gepi-test-data/pom.xml +++ b/gepi/gepi-test-data/pom.xml @@ -5,7 +5,7 @@ gepi de.julielab - 0.11.1 + 0.11.2 ../pom.xml 4.0.0 diff --git a/gepi/gepi-webapp/pom.xml b/gepi/gepi-webapp/pom.xml index 47093781..3eb29346 100644 --- a/gepi/gepi-webapp/pom.xml +++ b/gepi/gepi-webapp/pom.xml @@ -224,7 +224,7 @@ of testing facilities designed for use with TestNG (http://testng.org/), so it's de.julielab gepi - 0.11.1 + 0.11.2 ../pom.xml diff --git a/gepi/gepi-webapp/src/main/java/de/julielab/gepi/webapp/components/GepiInput.java b/gepi/gepi-webapp/src/main/java/de/julielab/gepi/webapp/components/GepiInput.java index 77bcec31..42842a7e 100644 --- a/gepi/gepi-webapp/src/main/java/de/julielab/gepi/webapp/components/GepiInput.java +++ b/gepi/gepi-webapp/src/main/java/de/julielab/gepi/webapp/components/GepiInput.java @@ -150,6 +150,14 @@ public class GepiInput { @Persist(TabPersistentField.TAB) private boolean includeUnary; + @Property + @Persist(TabPersistentField.TAB) + private Integer interactionRetrievalLimitForAggregations; + + @Property + @Persist(TabPersistentField.TAB) + private boolean interactionRetrievalLimitForAggregationsNoLimit; + /** * This is not an ID for the servlet session but to the current data state. */ @@ -200,6 +208,7 @@ public void reset() { paragraphFilterString = ""; sectionNameFilterString = ""; docId = ""; + interactionRetrievalLimitForAggregations = 1000; } public ValueEncoder getEventTypeEncoder() { @@ -217,6 +226,8 @@ void setupRender() { eventLikelihood = 1; if (selectedEventTypes == null) selectedEventTypes = new ArrayList<>(EnumSet.allOf(EventTypes.class)); + if (interactionRetrievalLimitForAggregations == null) + interactionRetrievalLimitForAggregations = 1000; } void onValidateFromInputForm() { @@ -283,7 +294,7 @@ public void executeSearch() { else inputMode = EnumSet.of(InputMode.FULLTEXT_QUERY); } - requestData = new GepiRequestData(selectedEventTypeNames, includeUnary, eventLikelihood, listAGePiIds, listBGePiIds, taxId != null ? taxId.split("\\s*,\\s*") : null, sentenceFilterString, paragraphFilterString, filterFieldsConnectionOperator, sectionNameFilterString, inputMode, docId, dataSessionId); + requestData = new GepiRequestData(selectedEventTypeNames, includeUnary, eventLikelihood, listAGePiIds, listBGePiIds, taxId != null ? taxId.split("\\s*,\\s*") : null, sentenceFilterString, paragraphFilterString, filterFieldsConnectionOperator, sectionNameFilterString, inputMode, docId, interactionRetrievalLimitForAggregationsNoLimit ? Integer.MAX_VALUE : interactionRetrievalLimitForAggregations, dataSessionId); log.debug("Fetching events from ElasticSearch"); // if ((filterString != null && !filterString.isBlank())) { Future pagedEsResult = eventRetrievalService.getEvents(requestData, 0, TableResultWidget.ROWS_PER_PAGE, false); diff --git a/gepi/gepi-webapp/src/main/java/de/julielab/gepi/webapp/data/FilteredGepiRequestData.java b/gepi/gepi-webapp/src/main/java/de/julielab/gepi/webapp/data/FilteredGepiRequestData.java index 36eddbc4..34a59cc7 100644 --- a/gepi/gepi-webapp/src/main/java/de/julielab/gepi/webapp/data/FilteredGepiRequestData.java +++ b/gepi/gepi-webapp/src/main/java/de/julielab/gepi/webapp/data/FilteredGepiRequestData.java @@ -70,7 +70,7 @@ public void setArg2IdFilter(String arg2IdFilter) { private String arg2IdFilter; public FilteredGepiRequestData(GepiRequestData requestData) { - super(requestData.getEventTypes(), requestData.isIncludeUnary(), requestData.getEventLikelihood(), requestData.getListAGePiIds(),requestData.getListBGePiIds(), requestData.getTaxId(), requestData.getSentenceFilterString(), requestData.getParagraphFilterString(), requestData.getFilterFieldsConnectionOperator(), requestData.getSectionNameFilterString(), requestData.getInputMode(), requestData.getDocId(), requestData.getDataSessionId()); + super(requestData.getEventTypes(), requestData.isIncludeUnary(), requestData.getEventLikelihood(), requestData.getListAGePiIds(),requestData.getListBGePiIds(), requestData.getTaxId(), requestData.getSentenceFilterString(), requestData.getParagraphFilterString(), requestData.getFilterFieldsConnectionOperator(), requestData.getSectionNameFilterString(), requestData.getInputMode(), requestData.getDocId(), requestData.getEventRetrievalLimitForAggregations(), requestData.getDataSessionId()); } } diff --git a/gepi/gepi-webapp/src/main/java/de/julielab/gepi/webapp/data/GepiQueryParameters.java b/gepi/gepi-webapp/src/main/java/de/julielab/gepi/webapp/data/GepiQueryParameters.java index 9beb9856..b5eff38e 100644 --- a/gepi/gepi-webapp/src/main/java/de/julielab/gepi/webapp/data/GepiQueryParameters.java +++ b/gepi/gepi-webapp/src/main/java/de/julielab/gepi/webapp/data/GepiQueryParameters.java @@ -23,6 +23,7 @@ public class GepiQueryParameters { public static final String SECTIONNAMEFILTER = "sectionnamefilter"; public static final String INCLUDE_UNARY = "includeunary"; public static final String DOCID = "docid"; + public static final String INTERACTION_RETRIEVAL_LIMIT = "interactionretrievalllimit"; private String listATextAreaValue; private String listBTextAreaValue; private String taxId; @@ -35,6 +36,7 @@ public class GepiQueryParameters { private String docid; private boolean includeUnary; private boolean formdata; + private int interactionRetrievalLimit; public GepiQueryParameters(Request request) { readParameters(request); @@ -143,6 +145,11 @@ private void readParameters(Request request) { sectionNameFilterString = decodeUrlEncoding(sectionNameFilterString); docid = request.getParameter(DOCID); includeUnary = Boolean.parseBoolean(request.getParameter(INCLUDE_UNARY)); + try { + interactionRetrievalLimit = Integer.parseInt(request.getParameter(INTERACTION_RETRIEVAL_LIMIT)); + } catch (NumberFormatException e) { + // no number given + } } } diff --git a/gepi/gepi-webapp/src/main/java/de/julielab/gepi/webapp/services/AppModule.java b/gepi/gepi-webapp/src/main/java/de/julielab/gepi/webapp/services/AppModule.java index 0fbe9e7c..8e8b5d22 100644 --- a/gepi/gepi-webapp/src/main/java/de/julielab/gepi/webapp/services/AppModule.java +++ b/gepi/gepi-webapp/src/main/java/de/julielab/gepi/webapp/services/AppModule.java @@ -53,7 +53,7 @@ public static void contributeFactoryDefaults( // The application version is primarily useful as it appears in // any exception reports (HTML or textual). - configuration.override(SymbolConstants.APPLICATION_VERSION, "0.11.1"); + configuration.override(SymbolConstants.APPLICATION_VERSION, "0.11.2"); // Avoid Ajax-requests waiting for each other. This would make asynchronous lading of // dashboard elements impossible configuration.override(SymbolConstants.SESSION_LOCKING_ENABLED, false); diff --git a/gepi/gepi-webapp/src/main/resources/META-INF/modules/gepi/components/gepiinput.js b/gepi/gepi-webapp/src/main/resources/META-INF/modules/gepi/components/gepiinput.js index 67b4dbaf..66395502 100644 --- a/gepi/gepi-webapp/src/main/resources/META-INF/modules/gepi/components/gepiinput.js +++ b/gepi/gepi-webapp/src/main/resources/META-INF/modules/gepi/components/gepiinput.js @@ -20,6 +20,7 @@ define(["jquery", "gepi/pages/index", "gepi/charts/data", "bootstrap5/tooltip"], observeFormSubmit(); observeInputFetchArea(); setupInputExamples(); + setupTooltips(); let running = false; window.addEventListener('resize', () => { if (!running) { @@ -232,6 +233,8 @@ define(["jquery", "gepi/pages/index", "gepi/charts/data", "bootstrap5/tooltip"], const formElementIds = { listaTextAreaId : "lista", listbTextAreaId : "listb", + interactionLimitTextFieldId : "intagglimit", + interactionNoLimitCheckboxId : "intaggnolimit", orgTextFieldId : "organismInput", eventTypeChecklistId : "eventtypes", negRegulationCheckboxSelector : "#eventtypes input[value='Negative_regulation']", @@ -299,6 +302,8 @@ define(["jquery", "gepi/pages/index", "gepi/charts/data", "bootstrap5/tooltip"], function resetInputFields(formElementIds) { const listaTextArea = document.getElementById(formElementIds.listaTextAreaId); const listbTextArea = document.getElementById(formElementIds.listbTextAreaId); + const interactionLimitTextField = document.getElementById(formElementIds.interactionLimitTextFieldId); + const interactionNoLimitCheckbox = document.getElementById(formElementIds.interactionNoLimitCheckboxId); const orgTextField = document.getElementById(formElementIds.orgTextFieldId); const eventTypeCheckboxes = document.querySelectorAll(`#${formElementIds.eventTypeChecklistId} input`); const radioLikelihoodNegRadio = document.querySelector(`input[clientid='${formElementIds.radioLikelihoodNegRadioClientId}'`); @@ -310,6 +315,8 @@ define(["jquery", "gepi/pages/index", "gepi/charts/data", "bootstrap5/tooltip"], listaTextArea.value = ""; listbTextArea.value = ""; + interactionLimitTextField.value = "500"; + interactionNoLimitCheckbox.checked = false; orgTextField.value = ""; eventTypeCheckboxes.forEach(box => box.checked=true); includeUnaryCheckbox.checked = false; @@ -322,6 +329,11 @@ define(["jquery", "gepi/pages/index", "gepi/charts/data", "bootstrap5/tooltip"], togglelistb(); } + function setupTooltips() { + const retrieveAllInterationsCheckbox = document.getElementById("intaggnolimit"); + new Tooltip(retrieveAllInterationsCheckbox, {"trigger":"hover"}); + } + }; diff --git a/gepi/gepi-webapp/src/main/resources/de/julielab/gepi/webapp/components/GepiInput.tml b/gepi/gepi-webapp/src/main/resources/de/julielab/gepi/webapp/components/GepiInput.tml index ba064305..79a6d7fd 100644 --- a/gepi/gepi-webapp/src/main/resources/de/julielab/gepi/webapp/components/GepiInput.tml +++ b/gepi/gepi-webapp/src/main/resources/de/julielab/gepi/webapp/components/GepiInput.tml @@ -70,6 +70,24 @@ +
+
Limit for retrieved interactions for charts and statistics +
+
+
Specify a limit of interactions to be used for the calculation of statistics and charts on the Web page
+
+ + +
+ Retrieve all + +
+
+
+
Filter the results by organism