Introduction

PlayMolecule standalone applications constitute an alternative way to access the technology in playmolecule.org. These applications are distributed as self-contained Singularity containers, a powerful tool to make applications portable and reproducible accross Linux distributions. You can read more about Singularity in this link.


Requirements

  • Linux OS: Singularity containers only can run on top of a Linux distribution, so please make sure your computer is using Linux.

  • Singularity: All the applications are distributed as Singularity containers. In order to execute them, you will have to install Singularity. Please follow the instructions in this link to install Singularity locally.

  • Nvidia GPU: Most of the applications using machine learning and neural networks require Graphical Processing Units to compute the results in an accesible timeframe. Please make sure that the machine executing Singularity containers has access to at least 1 Nvidia GPU (ideally GTX 980 or better) with the latest drivers installed.


Running applications

Application containers can be used as usual executables.

Getting more info about an app

Here's an example about how to get information about the DeltaDelta.img app container:

singularity run DeltaDelta.img --help

Running an app

Here's an example of how one can run an app:

singularity run -B $(pwd)/mylicense.dat:/data/license.dat --nv DeltaDelta.img -mol2 myprotein.mol2 -sdf_test test.sdf -sdf_train train.sdf

Notice the following details:

  1. License: by using the -B $(pwd)/mylicense.dat:/data/license.dat argument, we are binding a local file called mylicense.dat that contains a valid license to the license.dat inside the container, which is the location where the program will check for a valid license.

  2. GPU: By using the --nv argument, we are exposing our computer GPU to the container, so that it can make use of it.

  3. Args: After the name or path of the container, we specify a number of arguments that are dependent on the app. You can use the singularity run MyApp.img --help notation to query about the required and optional arguments for each app.

Mounting the current directory

Notice that all the commands previously shown work out-of-the-box only because they are being executed by our user (e.g.john) from a folder inside our home directory (e.g. in /home/john/my/first/app). In these cases, Singularity automatically binds our current folder as the home directory of the container.

However, when working with root user or from inside a shared filesystem (e.g. /shared/my/organization/john), Singularity won't bind your current directory by default. In these cases you must force the binding of the current directory by adding the --bind $(pwd) command as follows:

singularity run --bind $(pwd) -B $(pwd)/mylicense.dat:/data/license.dat --nv DeltaDelta.img -mol2 myprotein.mol2 -sdf_test test.sdf -sdf_train train.sdf

If you want more information on Singularity data bindings please check this link.