The scripts are written in Python, the database use PostgreSQL.
The main API Server is written in Rust using Actix.
The side API Server is written in Python using FastAPI to run following analysis:
- Spatial variable gene: SpatialDE
- Ripley's Function K, F, G, L
- Spatial community detection
- Cell centrality
Two server is registered under the same domain: https://api.cheunglab.org
through
reverse proxy provided by Nginx.
To run a dev build with HMR
cd aquila-api
cargo watch -x 'run --bin aquila-api' --workdir .
To run a production build
cargo build --release && ./target/release/aquila-api
The computed server for spatial variable gene is in FastAPI and run as docker image.
The UI part is implemented using Next.js, the analysis part is powered by indexedDB.
We also use WebWorker to run tasks parallel on the web.
To run a dev build with HMR
8G RAM is needed to run a dev build,
$Env:NODE_OPTIONS="--max-old-space-size=8192" # powershell
export NODE_OPTIONS="--max-old-space-size=8192" # linux
cd aquila-ui
yarn dev
The UI part will be deployed automatically by Vercel.
To deploy actix server
cd aquila-api
SERVER_PID="$(pidof aquila-api)"
echo "Terminate current running process at $SERVER_PID"
kill $SERVER_PID
cargo build --release
nohup ./target/release/aquila-api > log.out 2>&1 &