3. Software Organization

BEAT is currently packaged as 5 separate projects. We describe them on this section.

3.1. beat.backend.python

beat.backend.python defines the minimal set of components that are required by user code to be able to run and communicate with the BEAT platform backend. These are:

  • Data formats: the specification of data which is transmitted between blocks of a toolchain;

  • Libraries: routines (source-code or binaries) that can be incorporated into other libraries or user code on algorithms;

  • Algorithms: the program (source-code or binaries) that define the user algorithm to be run within the blocks of a toolchain;

3.2. beat.core

beat.core defines a set of core components useful for the whole platform: the building blocks used by all other packages in the BEAT software suite (c.f. the BEAT public API). beat.core extends the models defined by beat.backend.python, completing full experiment description:

  • Toolchain: the definition of the data flow in an experiment, as a set of interconnected blocks;

  • Databases and Datasets: means to read raw-data from a disk and feed into a toolchain, respecting a certain usage protocol;

  • Experiment: the reunion of algorithms, datasets, a toolchain and parameters that allow the platform to schedule and run the prescribed recipe to produce displayable results.

All other BEAT packages depend directly on beat.core.

3.3. beat.web

beat.web defines the application layer containing an implementation of the web, scheduler and worker components of the platform. The web application, in particular, provides a Representational State Transfer (ReSTful) API for some of the services that are provided by the platform, together with a web-based user interface in which users can register and interact with experiments and generated results. The web server is written in Python using a well-established library for such a purpose called Django, while powerful Javascript libraries are used for the dynamic behaviour of the client-side user interface. A database backend is deployed to store all the information about the users, experiments, their state and all other core objects. Django supports several database backends, both serverless such as SQLite and dedicated running servers such as PostgreSQL.

beat.web also ensures privacy and confidentiality, allowing users to access resources, prepare new experiments and control the amount of information that will be shared with other users of the platform.

The web application communicates with the scheduler, via the shared database, to execute and to manage user experiments.

3.4. beat.examples

This package contains installable examples for all BEAT platform components and can be used to bootstrap a new platform for development and testing purposes. This package cannot be used by itself. It is automatically imported and used from beat.web.

3.5. beat.cmdline

This package contains a command-line client that uses the BEAT web ReSTful API to copy and synchronize local versions of objects installed in a given platform. It can be used to copy full experiments locally and to run experiments using the local machine for debugging purposes. This package provides its own documentation set with instructions and examples show how to use it.