Prometheus: Modelling as a Service
==================================
This is a repository for building a customised [tmpnb](https://github.com/jupyter/tmpnb) server for optogenetics with [PyRhO](https://github.com/ProjectPyRhO/PyRhO) installed and configured. Credit to the [Jupyter team](https://github.com/orgs/jupyter/people) for their work on tmpnb as one of the many great [Jupyter projects](https://github.com/jupyter)!
For updates on PyRhO, follow us on [twitter (@ProjectPyRhO)](https://twitter.com/ProjectPyRhO).
Quickstart: Try PyRhO
---------------------
Simply go to [try.projectpyrho.org](http://try.projectpyrho.org) and enjoy!
Further Information
-------------------
A paper introducing Prometheus and Modelling as a Service (MaaS) can be found [here](https://dx.doi.org/10.1109/BioCAS.2016.7833795). If you use or adapt this work, please use the following citation:
Evans, B. D. and Nikolic, K. (2016) "From Bytes to Insights with Modelling as a Service: A new paradigm for computational modelling illustrated with PyRhO, in *2016 IEEE Biomedical Circuits and Systems Conference (BioCAS)*, Shanghai, China. p316319. [doi:10.1109/BioCAS.2016.7833795](https://dx.doi.org/10.1109/BioCAS.2016.7833795)
```
@InProceedings{Evans+Nikolic2016c,
author = {Evans, Benjamin D. and Nikolic, Konstantin},
booktitle = {2016 IEEE Biomedical Circuits and Systems Conference (BioCAS)},
title = {From Bytes to Insights with Modelling as a Service: A new paradigm for computational modelling illustrated with {PyRhO}},
year = {2016},
month = {Oct},
isbn = {978-1-5090-2959-4},
location = {Shanghai, China},
pages = {316--319},
publisher = {IEEE},
address = {New York, NY, USA},
doi = {10.1109/BioCAS.2016.7833795},
}
```
Interactive Docker image
------------------------
#### To run the PyRhO docker image:
Clone the repository: `git clone https://github.com/ProjectPyRhO/Prometheus.git && cd Prometheus`
Start the docker service e.g.: `sudo service docker start`
Then run these commands to build the image and launch the notebook:
```bash
docker build -t pyrho/minimal .
docker run -p 8888:8888 -it pyrho/minimal
```
Finally go to your browser and open `localhost:8888`.
N.B. If you are using docker machine, you will need to replace `localhost` with the IP address of the host, obtained with the following command: `docker-machine ip`.
Build Prometheus
----------------
#### Create an account to run the portal and disable root access
See [this guide](https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04) for details including generating ssh keys.
```bash
adduser monty
gpasswd -a monty sudo
sudo nano /etc/ssh/sshd_config
```
Edit the sshd_config file to disable root login:
> PermitRootLogin no
Then restart the ssh daemon:
`service ssh restart`
Log out then log back in with the new (non-root) user account.
Finally update the system, install docker, build the image and launch the server!
```bash
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install make
git clone https://github.com/ProjectPyRhO/Prometheus.git
cd Prometheus
make setup
make image
make launch
```
Useful commands
---------------
#### Clean docker images
`make clean`
Alternatively:
```bash
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rm $(docker ps -qa --no-trunc --filter "status=exited")
docker rmi $(docker images -q --no-trunc --filter "dangling=true")
```
#### Check logs
```bash
make log-proxy
make log-tmpnb
sudo iptables -L
```
N.B. After an os update it may be necessary to run:
`sudo apt-get install linux-image-extra-$(uname -r)`