Skip to content

Server and web part of Ada Discovery Analytics.

License

Notifications You must be signed in to change notification settings

ada-discovery/ada-app

Repository files navigation

Ada App version License Build Status

A Discovery Analytics

This source code repo represents the base of Ada Discovery Analytics platform. It contains three components:

Ada Server

Server part provides several headless functionality, in particular:

  • Domain classes with JSON formatters.
  • Persistence layer with convenient repo abstractions for Mongo, Elastic Search, and Apache Ignite.
  • WS clients to call REDCap, Synapse, and eGaIT REST services.
  • Data set importers and transformations.
  • Stats calculators with Akka streaming support.
  • Machine learning service providing various classification, regression, and clustering routines backed by Apache Spark.
Ada Web

This is a web part of the platform serving as a visual manifestation of Ada server. In a nutshell, Ada web consists of controllers with actions whose results are rendered by views as actual presentation endpoints produced by an HTML templating engine. It is implemented by using Play Framework, a popular web framework for Scala built on asynchronous non-blocking processing.

Ada's main features include a visually pleasing and intuitive web UI for an interactive data set exploration and filtering, and configurable views with widgets presenting various statistical results, such as, distributions, scatters, correlations, independence tests, and box plots. Ada facilitates robust access control through LDAP authentication and an in-house user management with fine-grained permissions backed by Deadbolt library.

Ada Web NCER-PD

Custom extension serving NCER-PD project in Luxembourg, primarily a batch order request plugin.

Installation

There are essentially two ways how to install a full-stack Ada Web:

  • Install all the components including Mongo and Elastic Search manually, which gives a full control and all configurability options at the expense of moderate installation and maintenance effort. The complete guides are available for Linux and MacOS.

  • Use a dockerized version as described in https://github.com/ada-discovery/ada-docker, which is undoubtedly the easier option.

Development

Here are some guidelines for developers:

Using the Libs

If you want to use Ada Server in your own project all you need is Scala 2.11. To pull the library you have to add the following dependency to build.sbt

"org.adada" %% "ada-server" % "0.9.0"

or to pom.xml (if you use maven)

<dependency>
    <groupId>org.adada</groupId>
    <artifactId>ada-server_2.11</artifactId>
    <version>0.9.0</version>
</dependency>

Similarly, if instead of installing a stand alone Ada app, you want to use the Ada Web libraries in your project, you can do so by adding the following dependencies in build.sbt (be sure the Scala compilation version is 2.11)

"org.adada" %% "ada-web" % "0.9.0",
"org.adada" %% "ada-web" % "0.9.0" classifier "assets"

Alternatively if you use maven your pom.xml has to contain

<dependency>
    <groupId>org.adada</groupId>
    <artifactId>ada-web_2.11</artifactId>
    <version>0.9.0</version>
</dependency>
<dependency>
    <groupId>org.adada</groupId>
    <artifactId>ada-web_2.11</artifactId>
    <version>0.9.0</version>
    <classifier>assets</classifier>
</dependency>

License

The project and all its source code (i.e., everything belonging to Ada Server, Ada Web and Ada Web NCER subprojects) is distributed under the terms of the Apache 2.0 license.

Note that if you wish to use the Highcharts-based widget engine in Ada, along with or as a replacement for the default one implemented using Plotly library, you can do so by using/extending Ada Web Highcharts project, which is however distributed under the CC BY-NC 3.0 license.

Acknowledgement and Support

Development of this project has been significantly supported by

  • an FNR Grant (2015-2019, 2019-ongoing): National Centre of Excellence in Research on Parkinson's Disease (NCER-PD): Phase I and Phase II

  • a one-year MJFF Grant (2018-2019): Scalable Machine Learning And Reservoir Computing Platform for Analyzing Temporal Data Sets in the Context of Parkinson’s Disease and Biomedicine