Welcome to GenoRing.net!

Description

GenoRing is both platform and a framework designed to handle biological data through an easy-to-deploy web portal that integrates "à la carte" bioinformatics tools. It is free and open source. By promoting open science principles, GenoRing aims to empower laboratories and research teams -particularly those with limited resources- to effortlessly establish and maintain bioinformatics tools for curating and sharing their data.

The platform serves as a central hub for data exploration, ensuring efficient storage, usage, and accessibility with minimal effort. Installation, startup, and maintenance are simplified, requiring only a few command lines and minimal software prerequisites. The user-friendly graphical interface enables easy configuration, alignment with standard data models, and utilization of preconfigured tools, including data-sharing functionalities, thereby minimizing setup challenges and saving time.

The framework features a highly flexible and easily extensible architecture. GenoRing employs a modular approach: each component of GenoRing, including its core, is a module that can be deployed individually while maintaining tight integration with other enabled modules. It uses a hooking mechanism to allow modules to handle a wide range of events, interact with each other, and manage data. Modules can range from simple scripts to complex applications, which are easily deployed using Docker containers. The framework supports module alternatives, enabling users to switch between multiple tool variants to select the most appropriate one for a given problem. Furthermore, provided Docker services can be replaced with local or external services -particularly if they are more efficient (ie. HPC)— with minimal configuration changes.

The base version of the GenoRing platform is shipped with the Drupal CMS and a basic set of modules, primarily based on Docker. It only requires PERL (core) to manage the platform and Docker for easy deployment. Once the GenoRing platform is downloaded from the GitHub project, it can be set up and launched with a single command line. Customizable settings are managed through an interactive prompt. After the Drupal portal is fully initialized, additional customization and data-loading features become available through the web interface..

Current status (12/2024)

GenoRing is currently under heavy development. It is in an alpha stage but a beta release will be available soon (hopefully before the end of January). Source code of the platform will be available soon on GitHub. The current alpha is not shared to prevent people in a hurry to start using it while major change may occur and ruined their work.

How to contribute? This will be addressed soon here...

How to get notified of project evolution?  Watch the news page and/or subscribe to the site RSS.

Features

  • Install and start in one command line (perl genoring.pl start)
  • Limited dependencies: Docker, Perl and Linux (x86/AMD64)*
  • Easy to maintain (auto-update by command line arguments)
  • Modular and extensible (public and custom modules)
  • Flexible (enable/disable modules, switch to alternative versions or existing local services)
  • Highly customizable (config, data sources, CMS features with themes, modules)
  • Open source and (always) free
  • Advanced user experience through integrated CMS (Drupal)
  • Persistent data (backups, data releases)
  • Data import/export and mapping from (almost) any sources (files, DB, REST)
  • Easy to integrate to existing systems (data can be accessed "in place")
  • REST services (standards and customs, easy to setup)
  • FAIR-oriented (metadata integration, ontologies, export tools and UI items)
  • User and permission management interface (with access restrictions)
  • Facilitate collaboration (REST services, user access, data comment support)
  • Supported (based on community-supported elements like Docker and Drupal)

*: It is designed for Linux but will support other architectures. It already partially works on Windows. It works on Mac ARM64 architecture but with adjustments that needs to be automated.

Requirements

GenoRing only requires Docker® with Docker Compose (V2+) and PERL (V5.8+ core). Once downloaded, it can be deployed in a single command line with interactive settings and does not install any additional libraries on the system.

Architecture

Drupal is an open source content management system (CMS) for building amazing
digital experiences. It's free and made by a dedicated community. The GenoRing
Drupal distribution is a fully packaged Drupal distribution focused on
genomic-dedicated modules that also includes other useful more generic
modules. It is partially pre-configured to simplify its deployment and
administration.

To offer a ready-to-use genomic platform, GenoRing relies on Docker® container
system. Docker is a set of platform as a service (PaaS) products that use
OS-level virtualization to deliver software in packages called containers.
With the Docker Container system, it is possible to run the GenoRing platform
with only the required modules but also to add or remove other modules on
demand afterward, easily manage and update each module separately and take
profit for all the other nice features Docker system offers like container
segregation, security, scalability and versioning just to name a few.

GenoRing is started and managed through a single PERL script that provides many
operations on the framework. The choice of a script rather than just using
Docker commands and config files was driven by the necessity to reliably manage
GenoRing modules as well as afford some other complex tasks. The PERL
language was selected because it is included in almost every Linux distribution
or available as a package for other systems, avoids to setup a specific
version of another language such as Python for instance and is more flexible,
robust and powerful than a shell script.

Framework

The GenoRing framework defines the design of GenoRing modules. A GenoRing
module can be a Drupal module, a Docker container or a combination of both that
is generally related to genomics. While some modules may require others to work
properly, each module could be added or removed as needed: in case a module has
missing dependencies, it should not crash the system but rather log a message
explaining the problem(s). GenoRing modules must be located in the GenoRing
installation "modules" directory as sub-directories (one directory per module).

GenoRing modules based on Docker containers can be replaced by equivalent local
services without too much efforts by using generated configuration files (if
needed) and following the related instructions. It is often as simple as:
perl genoring.pl tolocal SERVICE IP (see Switching to local components
dedicated section).

In some cases, GenoRing modules may provide alternative service containers to
suite specific needs. For instance, the core GenoRing module provides an Apache
HTTPd server as an alternative to the default NGINX proxy server for people more
comfortable with Apache HTTPd config files. Switching from one to the other is
done in a single command line: perl genoring.pl enalt genoring httpd.

GenoRing modules use "hook scripts" that are automatically triggered by the
GenoRing PERL script to manage changes such as modules installation,
uninstallation, update, backup, etc.. There are 2 types of hooks: "local hooks"
which are PERL script launched on the server hosting GenoRing to allow local
file system operations as well as local service operations, and "container
hooks" which are scripts executed on service containers. Each container hook
script should be adapted to the service container it targets. The list of
supported hooks is documented in genoring.pl (in "ApplyLocalHooks" and
"ApplyContainerHooks" functions) as well as in the module template (in its
"hooks" directory). Hooks provide a very flexible and efficient way to allow
modules to integrate with other modules as well as to handle many tasks on a
module basis, simplifying GenoRing extension and maintenance.