Skip to content

Latest commit

 

History

History
76 lines (48 loc) · 2.2 KB

README.md

File metadata and controls

76 lines (48 loc) · 2.2 KB

Chemical Space (cspace)

Visualize spaces of embedded chemicals.

UI Example

See a live version at http://cspace.lannysport.net/

Installation / Setup

The project is a standard python/django project. You can get almost all the dependencies from:

pip install -r requirements.txt

RDKit

The exception is rdkit, which for "reasons" has to come from your OS's package manager or equivalent. To make sure that rdkit uses the same numpy as cspace, install from requirements.txt before installing rdkit. Depending on how much of a pain in the ass setting up RDKit is, you may consider using anaconda to install it which is somewhat less painful, but you then have to install all the other project requirements through anaconda too and use its whole environment management ecosystem. I am not a fan of anaconda.

OSX

If you haven't already, you'll need to install the Xcode command line tools. This is done with:

xcode-select --install

Then set up homebrew. Then it's as simple as:

brew tap rdkit/rdkit
brew install rdkit --with-postgresql --with-python3 --without-numpy

Debian based Linux

sudo apt-get install python3-rdkit librdkit1

Others

See here. Be forewarned, building from source on windows is pain.

Space Viewer

The UI code for visualizing chemical spaces is built separately and lives in the space-viewer directory. To install deps and build just:

npm install
npm run build

It will drop a bundled file into cspace/static/js and you're good to go. When editing use

npm run watch

To automatically rebuild on changes in the source tree.

Running CSpace

For development, the webserver can be invoked like so:

./manage.py runserver

Processing of jobs needs to happen outside the request response cycle. Ultimately this should be through something like AMQP, but in the interest of simplifying setup you can run all the pending jobs with

./manage.py run_pending_jobs

You can run this as a cron job (it has logic to avoid situations like double-runs) or with the simple watch_jobs.sh file included.