Cloud-based platform to infer cancer genomic and epigenomic events associated with gene expression modulation.
This document is focused on the development of the system. If you are looking for documentation for a production deployment see DEPLOYING.md.
- Python >=
3.7
(tested version:3.12
) - Node JS >=
20.x
(tested version:20.x
) - Modulector
2.2.0
- BioAPI
1.2.1
- Create a Python virtual environment to install some dependencies:
cd src
python3 -m venv venv
source venv/bin/activate
(run only when you need to work)pip install -r ../config/requirements.txt
. Maybe you need to runpython3.exe -m pip install -r ../config/requirements.txt
in Windows instead.
- Install Node JS dependencies:
cd frontend/static/frontend
npm i
npm run dev
(only run once, during development we recommend running thewatch
script instead)
- Multiomix needs a SQL DB, a MongoDB and a Redis DB to work properly. You can install all three on your machine, or you can choose to use the Docker configuration already available (recommended). For the latter solution follow the steps below on the project root folder:
- Create the needed volumes:
docker volume create --name=multiomics_intermediate_mongo_data
docker volume create --name=multiomics_intermediate_mongo_config
docker volume create --name=multiomics_intermediate_postgres_data
docker volume create --name=multiomics_intermediate_redis_data
docker volume create --name=multiomics_intermediate_static_data
docker volume create --name=multiomics_intermediate_media_data
docker volume create --name=multiomics_intermediate_logs_data
- Test that all the services start correctly:
docker-compose -f docker-compose.dev.yml up -d
- Create the needed volumes:
- Go back to the
src
folder to create the DB and an admin user:python3 manage.py makemigrations
python3 manage.py migrate
python3 manage.py createsuperuser
- Now you can access to
\<URL:port\>/admin
panel
- The platform needs Modulector and BioAPI platforms for some functionalities. Please, follow the instructions in the DEPLOYING.md file to install them.
Every time you want to work with Multiomix, you need to follow the below steps:
-
Start up the Postgres, Mongo DB and Redis DB (which takes care of the Websocket). If you have docker-compose installed you can simply run (from the root of the project) the following command:
docker-compose -f docker-compose.dev.yml up -d
and all the necessary services will be deployed on your machine.- In case you want to shut down all the Docker services, just run:
docker-compose -f docker-compose.dev.yml down
.
- In case you want to shut down all the Docker services, just run:
-
Start Django server. In the
src
folder and with the virtual environment enabled, run:python3 manage.py runserver
. A server will be run on http://127.0.0.1:8000/. -
For frontend development:
cd src/frontend/static/frontend
- Run the script you need:
npm run dev
: compiles code in development mode.npm run watch
: compiles code in development mode and re compiles every time a file changes.npm run prod
: compiles code in production mode.
-
Run Celery tasks queue to run experiments (in Windows add
--pool=solo
to the end of all the Celery commands as proposed here):cd src
python3 -m celery -A multiomics_intermediate worker -l info -Q correlation_analysis
python3 -m celery -A multiomics_intermediate worker -l info -Q feature_selection
python3 -m celery -A multiomics_intermediate worker -l info -Q stats
python3 -m celery -A multiomics_intermediate worker -l info -Q inference
python3 -m celery -A multiomics_intermediate worker -l info -Q sync_datasets
- If you want to check Task in the GUI you can run Flower
python3 -m celery -A multiomics_intermediate flower
NOTE: maybe in Windows is needed to add
--pool=solo
to the previous commands. Example:python3 -m celery -A multiomics_intermediate worker -l info -Q correlation_analysis --concurrency 1 --pool=solo
All the scripts mentioned below must be run inside the src/frontend/static/frontend
folder.
ESLint was added to the project to make all the code respects a standard. It also allows detecting errors and unused elements. It is installed when npm i
is run and can be integrated with many current development tools. To check if all ESLint rules are being complied, run: npm run check-lint
.
Typescript provides type support for safe and robust development. You can verify that all rules comply by running the following command: npm run check-tsc
To check no breaking changes when you are working on Multiomix, you can run npm run check-all
. This command will run both ESLint and Typescript checks.
If you use any part of our code, or Multiomix is useful for your research, please consider citing:
@article{10.1093/bioinformatics/btab678,
author = {Camele, Genaro and Menazzi, Sebastian and Chanfreau, Hernán and Marraco, Agustin and Hasperué, Waldo and Butti, Matias D and Abba, Martin C},
title = "{Multiomix: a cloud-based platform to infer cancer genomic and epigenomic events associated with gene expression modulation}",
journal = {Bioinformatics},
year = {2021},
month = {09},
abstract = "{Large-scale cancer genome projects have generated genomic, transcriptomic, epigenomic, and clinicopathological data from thousands of samples in almost every human tumor site. Although most omics data and their associated resources are publicly available, its full integration and interpretation to dissect the sources of gene expression modulation require specialized knowledge and software.We present Multiomix, an interactive cloud-based platform that allows biologists to identify genetic and epigenetic events associated with the transcriptional modulation of cancer-related genes through the analysis of multi-omics data available on public functional genomic databases or user-uploaded datasets. Multiomix consists of an integrated set of functions, pipelines, and a graphical user interface that allows retrieval, aggregation, analysis and visualization of different omics data sources. After the user provides the data to be analyzed, Multiomix identifies all significant correlations between mRNAs and non-mRNA genomics features (e.g.: miRNA, DNA methylation and CNV) across the genome, the predicted sequence based interactions (e.g., miRNA-mRNA), and their associated prognostic values.Multiomix is available at https://www.multiomix.org The source code is freely available at https://github.com/omics-datascience/multiomixSupplementary data are available at Bioinformatics online.}",
issn = {1367-4803},
doi = {10.1093/bioinformatics/btab678},
url = {https://doi.org/10.1093/bioinformatics/btab678},
note = {btab678},
eprint = {https://academic.oup.com/bioinformatics/advance-article-pdf/doi/10.1093/bioinformatics/btab678/40472409/btab678.pdf},
}
Multiomix uses GGCA, therefore inherits the GPL license.