Bootstrap-based OscoNet method: Method to infer sinusoidal oscillations in single cell data.
This software reproduces the approach presented in 'OscoNet: inferring oscillatory gene networks' by Luisa Cutillo, Alexis Boukouvalas, Elli Marinopoulou, Nancy Papalopulu & Magnus Rattray
BMC Bioinformatics volume 21, Article number: 351 (2020)
https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-020-03561-y
contact: l.cutillo@leeds.ac.uk
The authors would like to thank Michael Croucher @mikecroucher for code optimization.
- Create new environment
conda create --name fullosconet python=3
and to activate it withconda activate fullosconet
before proceeding. - Install required packages using
pip install -r requirements.txt
- Install package
pip install -e .
- Install numba
conda install numba
- Verify your installation by running
pytest
from the project root directoryFullOscoNet
. Note this can take around 1-2 minutes.
- Run
python OscopeBootstrap/oscope_tf.py --test_mode
for a simple demonstration of the method on synthetic data. This will run under a quick configuration to demonstrate the capabilities of the method. This should take 10-20 seconds. - Remove the
--test_mode
flag for a 1000-sample bootstrap test on the exact synthetic run configuraiton used in the paper (1000 genes, 100 cells with 3 clusters of co-oscillating genes).
notebooks/OscoNet introduction.ipynb
: provides an introduction to the hypothesis test on a simple synthetic example.notebooks/Reproduce_figures_5_7.ipynb
: pseudotime on Whitfield microarray data. To see how the spectral embedding pseudotime method can be applied.notebooks/Reproduce_Table1.ipynb
: Reproduce table 1 from OscoNet papernotebooks/Reproduce_Table5.ipynb
: Reproduce table 5 from OscoNet papernotebooks/Reproduce_Figure4.ipynb
: Reproduce Figure 4 from OscoNet paper
OscoNet requires the data to be already normalised and rescaled between [-1,1].
We suggest you chose your favourite normalization pipeline and also you continue the preprocessing in R, using the functions 'MVfilter' and 'NormForSine' from the R package Oscope: https://www.bioconductor.org/packages/release/bioc/html/Oscope.html