Skip to main content

FedPyDESeq2

This repository contains the FedDESeq2 package, a Python package for Federated Differential Expression Analysis based on PyDESeq2 which is itself a python implementation of DESeq2.

Setup

Package installation through PyPI

You can install the package from PyPI using the following command:

pip install fedpydeseq2

Package installation for developpers

0 - Clone the repository

Start by cloning this repository

git clone git@github.com:owkin/fedpydeseq2.git

1 - Create a conda environment with python 3.10+

conda create -n fedpydeseq2 python=3.11 # or a version compatible
conda activate fedpydeseq2

2 - Install poetry

Run

conda install pip
pip install poetry==1.8.2

and test the installation with poetry --version.

3 - Install the package and its dependencies using poetry

cd to the root of the repository and run

poetry install --with linting,testing

4 - Download the data to run the tests on

To download the data, cd to the root of the repository run this command.

fedpydeseq2-download-data --raw_data_output_path data/raw

This way, you create a data/raw subdirectory in the directory containing all the necessary data. If you want to modify the location of this raw data, you can in the following way. Run this command instead:

fedpydeseq2-download-data --raw_data_output_path MY_RAW_PATH

And create a file in the tests directory named paths.json containing

  • A raw_data field with the path to the raw data MY_RAW_PATH
  • An optional assets_tcga field with the path to the directory containing the opener.py file and its description (by default present in the fedpydeseq2_datasets module, so no need to specify this unless you need to modify the opener).
  • An optional processed_data field with the path to the directory where you want to save processed data. This is used if you want to run tests locally without reprocessing the data during each test session. Otherwise, the processed data will be saved in a temporary file during each test session.
  • An optional default_logging_config field with the path to the logging configuration used by default in tests. For more details on how logging works, please refer to the README in the logging folder.
  • An optional workflow_logging_config field with the path to the logging configuration used in the logging tests.

5 - Install pre-commit hooks

Still in the root of the repository, run

pre-commit install

You are now ready to contribute.

CI on a self-hosted runner

Tests are run using a self-hosted runner. To add a self-hosted runner, instantiate the machine you want to use as a runner, go to the repository settings, then to the Actions tab, and click on Add runner. Follow the instructions to install the runner on the machine you want to use as a self-hosted runner.

Make sure to label the self-hosted runner with the label "fedpydeseq2-self-hosted" so that the CI workflow can find it.

Docker CI

The docker mode is only tested manually. To test it, first run poetry build in order to create a wheel in the dist folder. Then launch in a tmux the following:

pytest -m "docker" -s

The -s option enables to print all the logs/outputs continuously. Otherwise, these outputs appear only once the test is done. As the test takes time, it's better to print them continuously.

Running on a real Substra environment

Running the compute plan

To run a compute plan on an environment with the substra front-end, you need first to generate token in each of the substra nodes. Then you need to duplicate credentials-template.yaml into a new file credentials.yaml and fill in the tokens. You should not need to rebuild the wheel manually by running poetry build as the script will try to do it for you, but watch out for related error message when executing the file.

Citing this work

@article{muzellec2024fedpydeseq2,
  title={FedPyDESeq2: a federated framework for bulk RNA-seq differential expression analysis},
  author={Muzellec, Boris and Marteau-Ferey, Ulysse and Marchand, Tanguy},
  journal={bioRxiv},
  pages={2024--12},
  year={2024},
  publisher={Cold Spring Harbor Laboratory}
}

References

[1] Love, M. I., Huber, W., & Anders, S. (2014). "Moderated estimation of fold change and dispersion for RNA-seq data with DESeq2." Genome biology, 15(12), 1-21. https://genomebiology.biomedcentral.com/articles/10.1186/s13059-014-0550-8

[2] Muzellec, B., Teleńczuk, M., Cabeli, V., & Andreux, M. (2023). "PyDESeq2: a python package for bulk RNA-seq differential expression analysis." Bioinformatics, 39(9), btad547. https://academic.oup.com/bioinformatics/article/39/9/btad547/7260507

License

FedPyDESeq2 is released under an MIT license.

Metadata

Release files for fedpydeseq2 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fedpydeseq2 0.1.1
File Size Uploaded
fedpydeseq2-0.1.1.tar.gz 89.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fedpydeseq2 0.1.1
File Interpreter ABI Platform
fedpydeseq2-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 234.6 kB

Release files / fedpydeseq2-0.1.1.tar.gz

Download URL fedpydeseq2-0.1.1.tar.gz
Size 89.2 kB
Tags Source
SHA-256 checksum
How to use checksums
cddbcf3778e5ab6a94f4867b859fde8069ac514ce180c1aaa1f7f7a01d933ba9
BLAKE2b-256 checksum
How to use checksums
130ac27c8b2c3e250f800d869f0e152af70b0b139fbecd788db2287502a121c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.11

Release files / fedpydeseq2-0.1.1-py3-none-any.whl

Download URL fedpydeseq2-0.1.1-py3-none-any.whl
Size 145.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
12c98c4391554c880198613b9bf9f45deab172a6707ae785738439d10dbeb47c
BLAKE2b-256 checksum
How to use checksums
16becca5e5e46ee25f25ab24e65b6f7b1252b4234df43edd97a43d8126d7b7fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.11

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page