Home - singa-bio/singa GitHub Wiki

SiNGA

SiNGA (Simulation of Natural Systems using Graph Automata) is an open-source library containing tools especially for structural bioinformatics and systems biology.

Many aspects are under development. API changes might be frequent, nevertheless we try to keep them minimal.

Our tenets

  • explicit is better than implicit
  • good code is better than good documentation
  • flat is better than nested
  • readability is more important than performance

Quick start

SiNGA is deployed to the Maven Central Repository. Simply add the desired modules to your pom.xml:

<dependencies>
    <dependency>
        <groupId>bio.singa</groupId>
        <artifactId>singa-[module]</artifactId>
        <version>0.5.0</version>
    </dependency>
    <!-- more dependencies -->
</dependencies>

Documentation

The full JavaDocs are available at cleberecht.github.io/singa-doc.

Modules

SiNGA is currently divided into eight modules intended for different areas of application.

Core

The core module contains some shared functionality and utility used in other modules, for example a parsing template, resource loading.

Mathematics

Get started

The mathematics package contains the basic mathematical structures for frequent bioinformatic applications. This encompasses different classes of graphs, trees, matrices, vectors, geometry, metrics and a little topology.

Further algorithms such as matrix decomposition, graph path finding and vector super imposition and voronoi diagram creation are provided.

Chemistry

Get started

The chemistry module contains classes required for the handling of information of chemical entities.

Entities can be annotated with Features in accordance with the Features module. Features are assigned to entities using estimation algorithms and databases. Features can be used for further processing and have quantitative character such as molecular mass or diffusivity. Annotations should be used for qualitative data such as textual descriptions and taxonomy.

Structures

The structure module defines data structures to handle macromolecular structures. Structures can be fetched in legacy PDB format or in the macro molecular transmission format (mmtf), online as well as local. Structural alignments and motif searching can be performed. Interaction can be parsed from Protein Ligand Interaction Profiler XML files and processed.

Simulation

The simulation component of SiNGA allows for the definition of models and simulations based on modules, that define cellular processes. A spatial component can be defined using a graph like structure that is placed across the simulation space. Each node of the graph is responsible for the simulation of a subsection of the simulation space. Modules for reactions, different types of diffusion, and transport processes are available. The SimulationManager can be used to conveniently write trajectories of the simulation, define termination conditions.

The next major update will bring major improvements and refactorings to this package.

Features

The features module allows to annotate additional information to objects. Features can be automatically resolved by writing FeatureProviders, Features are also recursively resolved if all necessary FeatureProviders are available. Multiple ways to resolve a single Feature can be implemented using priority groups.

Identifiers for databases are implemented as features und can be resolved from databases to access other databases. Additionally, identifiers can be checked for validity and retrieved from a list of string using their inherent pattern.

Quantities and Units for are specified with the units of measurements library. Commonly used units and natural constants are deposited here als well.

Javafx

The Javafx module provides means to visualize data from the framework directly. The Renderer allows to render objects from the mathematics/geometry package to any GraphicsContext provided by Javafx. A viewer for graphs is implemented to visualize and arrange graphs. A very simple viewer for macromolecular structures is also available. Different examples and Playgrounds are provided.

This module requires the Orace version of the JDK.

Sequences

A very minimal package for sequence handling. Provides a parser for sequences from the ENA database, works in conjunction with the structure package to provide sequences for consecutive structures. Further Needleman Wunsch alignments can be computed.

⚠️ **GitHub.com Fallback** ⚠️