Skip to content

Structure of the project

Eugenia Oshurko edited this page May 1, 2020 · 11 revisions

The KAMIStudio repository consists of the following directories:

  • kamistudio the main KAMIStudio application package;
  • examples a set of example .JSON files that can be used to import a corpus, interactions and a model;
  • db a set of database resources needed for configuring Neo4j in the KAMIStudio Docker container.

and the following files:

  • setup.py the setup file for python setup.py install;
  • configure.py KAMIStudio configuration script for python configure.py;
  • run.sh bash script for starting the KAMIStudio app (./run.sh);
  • Dockerfile a file containing instructions for assembling a Docker container (see https://docs.docker.com/engine/reference/builder/ for more details on dockerfiles);
  • docker-compose.yml a Docker compose file for assembling a multi-container app (one container for the Neo4j db, one for MongoDB and one for the KAMIStudio app, see https://docs.docker.com/compose/ for more details)

Let's have a closer look at the directories:

Package kamistudio

This package is organized as a 'typical' Flask-app that uses blueprints (see a nice article explaining them). It includes the following blueprint packages (and respectively directories):

  • home blueprint for the home page showing the list of corpora and models, allowing to create and import one;
  • corpus blueprint for the corpus-related functionality: corpus view, addition or import of new interactions, definitions, model instantiation, etc.;
  • model blueprint for the model-related functionality: model view, Kappa generation, etc.;
  • action_graph blueprint for generic (for both corpora and models) action-graph-related functionality;
  • nuggets blueprint for generic (for both corpora and models) nugget-related functionality;
  • definitions blueprint for generic (for both corpora and models) protein-definition-related functionality;

Every blueprint package typically contains the directory templates with the blueprint specific Jinja-templates, the directory static with the static files and the file views.py containing all the routes in the blueprint.

Additionally, the KAMIStudio app contains some generic top-level directories:

  • static containing generic static files (css/js/images);
  • templates containing generic Jinja templates (such as error pages, base.html, etc);
  • instance contains instance-specific configurations (see more details here).

Finally, the top-level

  • config.py default top-level configurations;
  • exceptions.py KAMIStudio custom exceptions;
  • utils.py a set of utilities (like checking db connections, etc.);
  • __init__.py a file containing the application factory (see more details here).

Folder examples

This folder contains the following files:

  • egfr_corpus.json JSON-representation of an example corpus for KAMIStudio import (part of the EGFR signalling pathway);
  • egfr_interactions.json JSON-representation of interactions for batch-import;
  • egfr_model.json an example model for KAMIStudio import (instantiated EGFR corpus).

Folder db

This folder is used for creating a Docker container for KAMIStudio. It contains some resources needed to properly configure the database containers. It serves a double-purpose:

  1. provides necessary resources (i.e. Neo4j plug-ins an configurations),
  2. provides directories where Neo4j and MongoDB will store their data, when container is created (Docker container will use the folders db/noe4j/data and db/mongo/data to store Neo4j and Mongo data respectively).

KAMIStudio is distributed along with the two Neo4j plugins (db/neo4j/plugins) used for transformation and visualization of graphs underlying knowledge corpora:

  • APOC is needed for ReGraph, the latest APOC jar can be downloaded here (please, pay attention to the compatibility with the Neo4j version);

  • Graph Algorithms is needed to find connected components used by the visualization (is now deprecated, you may consider moving KAMIStudio to Graph Data Science).

The db/neo4j/conf folder contains the Neo4j configs used in Docker containers.

Clone this wiki locally