Skip to content

omics-datascience/multiomix

Repository files navigation

Multiomix logo

Multiomix

Last Build & Push

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.

Pre-requisites

  • Python >= 3.7 (tested version: 3.12)
  • Node JS >= 20.x (tested version: 20.x)
  • Modulector 2.2.0
  • BioAPI 1.2.1

Installation

  1. Create a Python virtual environment to install some dependencies:
    1. cd src
    2. python3 -m venv venv
    3. source venv/bin/activate (run only when you need to work)
    4. pip install -r ../config/requirements.txt. Maybe you need to run python3.exe -m pip install -r ../config/requirements.txt in Windows instead.
  2. Install Node JS dependencies:
    1. cd frontend/static/frontend
    2. npm i
    3. npm run dev (only run once, during development we recommend running the watch script instead)
  3. 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:
    1. Create the needed volumes:
      1. docker volume create --name=multiomics_intermediate_mongo_data
      2. docker volume create --name=multiomics_intermediate_mongo_config
      3. docker volume create --name=multiomics_intermediate_postgres_data
      4. docker volume create --name=multiomics_intermediate_redis_data
      5. docker volume create --name=multiomics_intermediate_static_data
      6. docker volume create --name=multiomics_intermediate_media_data
      7. docker volume create --name=multiomics_intermediate_logs_data
    2. Test that all the services start correctly: docker-compose -f docker-compose.dev.yml up -d
  4. Go back to the src folder to create the DB and an admin user:
    1. python3 manage.py makemigrations
    2. python3 manage.py migrate
    3. python3 manage.py createsuperuser
    4. Now you can access to \<URL:port\>/admin panel
  5. The platform needs Modulector and BioAPI platforms for some functionalities. Please, follow the instructions in the DEPLOYING.md file to install them.

Development

Every time you want to work with Multiomix, you need to follow the below steps:

  1. 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.
  2. 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/.

  3. For frontend development:

    1. cd src/frontend/static/frontend
    2. 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.
  4. Run Celery tasks queue to run experiments (in Windows add --pool=solo to the end of all the Celery commands as proposed here):

    1. cd src
    2. python3 -m celery -A multiomics_intermediate worker -l info -Q correlation_analysis
    3. python3 -m celery -A multiomics_intermediate worker -l info -Q feature_selection
    4. python3 -m celery -A multiomics_intermediate worker -l info -Q stats
    5. python3 -m celery -A multiomics_intermediate worker -l info -Q inference
    6. python3 -m celery -A multiomics_intermediate worker -l info -Q sync_datasets
    7. 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

Linter and Typescript

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.

Considerations

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},
}

License

Multiomix uses GGCA, therefore inherits the GPL license.