Skip to content
/ spc Public

The Scientific Platform for the Cloud (SPC) - migrate and run scientific applications in the cloud


Notifications You must be signed in to change notification settings


Repository files navigation


Note: see file for important release notes.

10/9/23 Since Python 2 was officially sunset on January 1st, 2020 - the most convenient way to run SPC is via Docker. See the Docker repo here: or build a new Docker image by running docker build . -t spc:latest from the etc/ folder. After building, should be able to run the container using docker run -p 8580:8580 spc:latest, then open the browser to the URL localhost:8580.

Full documentation is available online at


The Scientific Platform for the Cloud (SPC) is a Python-based cloud platform/framework for easily migrating and running scientific applications in the cloud. It is described in more detail in the following paper:

W Brewer, W Scott, and J Sanford, “An Integrated Cloud Platform for Rapid Interface Generation, Job Scheduling, Monitoring, Plotting, and Case Management of Scientific Applications”, Proc. of the International Conference on Cloud Computing Research and Innovation, Singapore, IEEE Press, October 2015, pp. 156-165, doi:10.1109/ICCCRI.2015.24

Also, check out this white paper case study of using SPC to integrate bioinformatics algorithms:

This platform is ideally suited to run scientific applications that: (1) require an input deck full of integers, floats, strings, and booleans stored in a standardized file format such as INI, XML, JSON, YAML, TOML, or Namelist.input, (2) require some amount of processing time (i.e. not instantaneous -- although it can handle such cases too), (3) require some plotting at the end of the simulation, (4) use MPI or MapReduce for parallelization (although handles serial cases well too). Moreover, it can handle other applications as well, but some amount of pre- or post-processing may be required. Such topics are described in more detail in the aforementioned paper. If you need a copy of this paper, please send an e-mail request to the address at the bottom of this file.

Disclaimer: SPC has been tested primarily with Google Chrome browser, Python 2.7.8 to 2.7.12, on Linux and OS X systems. Other environments may work, but are not guaranteed to work.


  • Note, SPC assumes you have a few packages installed by default, namely: Python 2.78 or later, virtualenv, gcc, and python-dev (required for compiling psutil). If you don't have these installed, use either apt-get or yum to install them.

  • To install dependencies, create and initialize the database which SPC uses, type:

    ./spc init

  • To start running the web server, type:

    ./spc run

  • Open browser to

  • To run the pre-installed example DNA Analyzer app in SPC:

    a. Activate App. Click Apps and then click installed. Activate the DNA app, then click Activated again

    b. Enter Parameters. Click on dna the default installed app. Enter a DNA string, or use the default. Then Click confirm to write the datafile to disk

    c. Start Job. Click execute to run the DNA analysis. SPC will submit it to the job scheduler, and will redirect to the output.

    d. Inspect Outputs. At this point, you can look at the files output by clicking the files button to show the file manager. The output button will show the redirected output of the executable. All the files for the case can be zipped up and downloaded by clicking the download button.

    e. View Plots. Click plot to see or define a list of plots. For each plot, you can view it by clicking the plot button. You can also see the data behind the plots by clicking the data button. These files are also available in the file manager by clicking files.


To install another SPC packaged app, e.g. Mendel's Accountant run the following commands according to the version needed:


To update SPC: if you got the code using git clone you can just do git pull within the spc directory. If the database schema changes from the version you have, you may need to run ./spc migrate to migrate the new changes to the database. However, DB schema changes do not occur often, and should be annotated in the commits.

For more information, see user's manual at