Wiki

Clone wiki

SOApp / Developer Manual

SnowyOwl Application Root Directory

SnowyOwl web application files are hosted on /export/geno_new NetApp volume under the SOApp directory.

Directory Layout

DirectoryNotes
/export/geno_new/SOApp/prodSnowyOwl web application code (includes user uploads and project data)
/export/geno_new/SOApp/SnowyOwlSnowyOwl gene prediction pipeline code (https://bitbucket.org/snowyowl/snowyowl)
/export/geno_new/SOApp/tuqueTuque read mapping software from Concordia (see Tuque)
/export/geno_new/SOApp/soapp.gitGit (mirror) repository (a complete and independent copy of this repository)
/export/geno_new/SOApp/wikiA backup of this wiki
/export/geno_new/SOApp/augustus.2.5.5A dedicated copy of Augustus
/export/geno_new/SOApp/utilSome external programs required by the application
/export/geno_new/SOApp/sampleA small dataset intended for testing

Note Please see Application Layout for detailed web app (SOApp/prod) file system layout

Updating Local Repos

The local repositories (SOApp/so.app, SOApp/SnowyOwl, SOApp/wiki) can be kept in sync with the online repositories by running the following commands:

$ cd SOApp/SnowyOwl
$ git pull

$ cd SOApp/wiki
$ git pull

$ cd SOApp/so.app
$ git fetch # can't pull no working tree

Rolling Out Updates

It is recommended that the developer implements and test new code on a separate development environment and commit the code to the online code repositories and the sync the local data. Alternatively the developer may want to commit directly to the local repositories.

To update the local SnowyOwl (production) code under SOApp/SnowyOwl, simply pull from the remote repository as shown above. In the case of SOApp/prod, run the following commands:

$ cd SOApp/so.app
$ git fetch
$ cd SOApp/bin/admin
$ ./repo_to_prod.sh

The developer may want to edit files directly on the development server or use an IDLE (with git and sftp support) to edit and upload files seemlessly from their desktop machine. Some recommended IDLEs are NetBeans (PHP) and PyCharm (Python, cheap academic licence). It is not recommended to directly edit code on the production server, unless you know what you are doing. It is more reliable to deploy updates from the repository. The repositories serve as historical record as well.

Backend Daemon

The backend daemon (written in Python) processes jobs submitted through the web interface and stored in the database and SOApp/data filesystem.

The soctl.py script (under SOApp/bin) can be used to start and stop the backend service. The user mush belong to the snowyowl user group.

$ soctl.py start
You do not have permission to run SnowyOwl.
$ newgrp snowyowl
$ soctl.py
usage: soctl.py [-h] {start,stop}
soctl.py: error: too few arguments
$ soctl.py start
$ soctl.py stop

Daemon Log File

The deamon log file (soctl_log) is saved under SOApp/prod/log.

$ cd SOApp/prod/log
$ soctly.py start && tailf soctl_log

Database

The structure of the PostgreSQL database (tables and functions) can be found in /sql/schema.sql. Also, user permissions and table data can be found under /sql/init.sql.

Two unprivileged data users (one for the web interface and one for the daemon) should be created. These users should not be owners of the database, for security reasons. Database connection parameters can be set in /config.ini (see Sample Configuration)

Updated