Skip to content
This repository has been archived by the owner on Oct 16, 2023. It is now read-only.

arthanzel/quantumofcells

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Quantum of Cells

Build Status

Quantum of Cells (QoC) is a nifty differential equation solver. You type your equations in a box, click a button, and QoC will evaluate them and display a graph of the solution. It's very handy for prototyping and troubleshooting dynamical systems without the hassle of buying and learning Matlab.

QoC was originally written to allow iGEM teams to create and test genetic networks. However, it can solve many other non-stiff, higher-order, initial-value problems as well.

Building

This app contains a client module and a server module.

Building the client:

cd client
npm install
npm start

Building the server:

cd server
npm install
npm start

Point your browser to http://lvh.me:8080.

Note: lvh.me (Local Virtual Host) is a domain that resolves to 127.0.0.1. This is necessary to avoid issues with authentication and CORS. You can edit your hosts file to point lvh.me to 127.0.0.1 and avoid the DNS lookup.

Database

Quantum of Cells uses MongoDB. You can use either a local instance, or connect to a service such as mLab.

If you have Docker, get a database up and running quickly with:

docker run -d -p 127.0.0.1:27017:27017 --name qoc-mongo mongo

If you want to use your own database, or if you want to use a service like mLab, paste the following in client/config/local.json:

{
    "db": {
        "host": "my.database.host.com",
        "port": 27017,
        "name": "my-database-name",
        "user": "myUser",
        "password": "myPassword"
    }
}

Warning: The default database name for development is qocdb-dev, and the default name for testing is qocdb-test. Don't use the same database name for both environments - you'll end up losing all data. To override database settings for testing only, paste the above JSON into client/config/local-test.json.

You can override any of the database parameters with the following environment variables: DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD. Environment variables take precedence over any config.

Note: Some services (like mLab) use uncommon ports, which are blocked on some organizations' networks (like uOttawa's). Therefore, you'll need to use a VPN if you want to use uncommon ports.

Internet Connection Required

Quantum of Cells depends on external APIs, so an internet connection is required when developing.

Technology

Quantum of Cells consists of a client, which is a React single-page application (SPA), and a Node.js API server. They communicate through a REST API.

Client:

Server:

  • Node.js + ES6 + Babel
  • Hosted on Heroku free tier
  • MongoDB database hosted by mLab free tier

Roadmap

List of future features:

  • Solving systems using a variety of integration methods (currently, only the Euler method is available)
  • Comprehensive and documented sample projects on physics, chemistry, ecology, population dynamics, and genetic engineering
  • Rendering of two-variable parametric plots