diff --git a/.github/workflows/r.yml b/.github/workflows/r.yml index 5eef6cf4..65d982ff 100644 --- a/.github/workflows/r.yml +++ b/.github/workflows/r.yml @@ -19,26 +19,53 @@ permissions: jobs: build: - runs-on: macos-latest + runs-on: ${{ matrix.config.os }} + + name: ${{ matrix.config.os }} (${{ matrix.config.r }}) + strategy: + fail-fast: false matrix: - r-version: ['4.1.1'] + config: + - {os: macOS-latest, r: 'release'} + - {os: windows-latest, r: 'release'} + - {os: ubuntu-latest, r: 'release'} + env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + steps: - uses: actions/checkout@v3 - - name: Set up R ${{ matrix.r-version }} - uses: r-lib/actions/setup-r@f57f1301a053485946083d7a45022b278929a78a + + - name: Set up R ${{ matrix.r }} + uses: r-lib/actions/setup-r@v2 with: - r-version: ${{ matrix.r-version }} + r-version: ${{ matrix.config.r }} + http-user-agent: ${{ matrix.config.http-user-agent }} + use-public-rspm: true + + - name: Install library on Linux + if: runner.os == 'Linux' + run: | + sudo apt-get install libhdf5-dev + sudo apt-get install libglpk-dev + - name: Install dependencies run: | install.packages(c("remotes", "rcmdcheck")) remotes::install_deps(dependencies = TRUE) shell: Rscript {0} + - name: Check run: rcmdcheck::rcmdcheck(args = "--no-manual", error_on = "warning") shell: Rscript {0} + + - name: Run codecov + run: | + install.packages("covr") + covr::codecov() + shell: Rscript {0} + - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v3 diff --git a/README.md b/README.md index 5f145676..1e9a3eea 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ - + -[![Build Status](https://api.travis-ci.com/welch-lab/liger.svg?branch=master)](https://api.travis-ci.com/welch-lab/liger.svg?branch=master) +[![R](https://github.com/mvfki/liger/actions/workflows/r.yml/badge.svg?branch=newObj)](https://github.com/mvfki/liger/actions/workflows/r.yml)[![codecov](https://codecov.io/gh/mvfki/liger/branch/newObj/graph/badge.svg?token=77TTU4GY8A)](https://codecov.io/gh/mvfki/liger) # LIGER (Linked Inference of Genomic Experimental Relationships) -LIGER (installed as `rliger` ) is a package for integrating and analyzing multiple single-cell datasets, developed by the Macosko lab and maintained/extended by the Welch lab. It relies on integrative non-negative matrix factorization to identify shared and dataset-specific factors. +LIGER (installed as `rliger` ) is a package for integrating and analyzing multiple single-cell datasets, developed by the Macosko lab and maintained/extended by the Welch lab. It relies on integrative non-negative matrix factorization to identify shared and dataset-specific factors. Check out our [Cell paper](https://www.cell.com/cell/fulltext/S0092-8674%2819%2930504-5) for a more complete description of the methods and analyses. To access data used in our SN and BNST analyses, visit our [study](https://portals.broadinstitute.org/single_cell/study/SCP466) on the -Single Cell Portal. +Single Cell Portal. LIGER can be used to compare and contrast experimental datasets in a variety of contexts, for instance: @@ -18,28 +18,28 @@ LIGER can be used to compare and contrast experimental datasets in a variety of * Across species (e.g., mouse and human) * Across modalities (e.g., scRNAseq and spatial transcriptomics data, scMethylation, or scATAC-seq) -Once multiple datasets are integrated, the package provides functionality for further data exploration, +Once multiple datasets are integrated, the package provides functionality for further data exploration, analysis, and visualization. Users can: -* Identify clusters +* Identify clusters * Find significant shared (and dataset-specific) gene markers * Compare clusters with previously identified cell types * Visualize clusters and gene expression using t-SNE and UMAP -We have also designed LIGER to interface with existing single-cell analysis packages, including +We have also designed LIGER to interface with existing single-cell analysis packages, including [Seurat](https://satijalab.org/seurat/). ## Feedback Consider filling out our [feedback form](https://forms.gle/bhvp3K6tiHwf976r8) to help us improve the functionality and accessibility of LIGER. ## Usage -For usage examples and guided walkthroughs, check the `vignettes` directory of the repo. +For usage examples and guided walkthroughs, check the `vignettes` directory of the repo. * [Iterative Single-Cell Multi-Omic Integration Using Online iNMF](http://htmlpreview.github.io/?https://github.com/welch-lab/liger/blob/master/vignettes/online_iNMF_tutorial.html) * [Integrating unshared features with UINMF](http://htmlpreview.github.io/?https://github.com/welch-lab/liger/blob/master/vignettes/UINMF_vignette.html) * [scATAC and scRNA Integration using unshared features (UINMF)](http://htmlpreview.github.io/?https://github.com/welch-lab/liger/blob/master/vignettes/SNAREseq_walkthrough.html) * [Cross-species Analysis with UINMF](http://htmlpreview.github.io/?https://github.com/welch-lab/liger/blob/master/vignettes/cross_species_vig.html) -* [Performing Parameter Selection](http://htmlpreview.github.io/?https://github.com/welch-lab/liger/blob/master/vignettes/Parameter_selection.html) +* [Performing Parameter Selection](http://htmlpreview.github.io/?https://github.com/welch-lab/liger/blob/master/vignettes/Parameter_selection.html) * [Integrating spatial transcriptomic and transcriptomic datasets using UINMF](https://www.dropbox.com/s/ho62az1kshj59d2/STARmap_dropviz_vig.html?dl=0) (Click to Download) * [Integrating Multiple Single-Cell RNA-seq Datasets](http://htmlpreview.github.io/?https://github.com/welch-lab/liger/blob/master/vignettes/Integrating_multi_scRNA_data.html) @@ -92,9 +92,9 @@ Installation from CRAN is easy because pre-compiled binaries are available for W 1. Install gfortran as suggested [here](https://gcc.gnu.org/wiki/GFortranBinaries) 2. Download clang4 from this [page](https://mac.R-project.org/libs/clang-4.0.0-darwin15.6-Release.tar.gz) -3. Uncompress the resulting zip file and type into Terminal (`sudo` if needed): +3. Uncompress the resulting zip file and type into Terminal (`sudo` if needed): ``` -mv /path/to/clang4/ /usr/local/ +mv /path/to/clang4/ /usr/local/ ``` 4. Create `.R/Makevars` file containing following: ``` @@ -111,9 +111,9 @@ For example, use the following Terminal commands: ``` cd ~ mkdir .R -cd .R +cd .R nano Makevars -``` +``` Paste in the required text above and save with `Ctrl-X`. ### Additional Installation Steps for Online Learning using LIGER @@ -122,7 +122,7 @@ The HDF5 library is required for implementing online learning in LIGER on data f | System | Command |:------------------------------------------|:---------------------------------| |**OS X (using Homebrew or Conda)** | `brew install hdf5` or `conda install -c anaconda hdf5` -|**Debian-based systems (including Ubuntu)**| `sudo apt-get install libhdf5-dev` +|**Debian-based systems (including Ubuntu)**| `sudo apt-get install libhdf5-dev` |**Systems supporting yum and RPMs** | `sudo yum install hdf5-devel` For Windows, the latest HDF5 1.12.0 is available at https://www.hdfgroup.org/downloads/hdf5/. @@ -130,17 +130,17 @@ For Windows, the latest HDF5 1.12.0 is available at https://www.hdfgroup.org/dow ### Detailed Instructions for FIt-SNE Installation Note that the runUMAP function (which calls the `uwot` package) also scales to large datasets and does not require additional installation steps. However, using FIt-SNE is recommended for computational efficiency if you want to perform t-SNE on very large datasets. -Installing and compiling the necessary software requires the use of git, FIt-SNE, and FFTW. For a +Installing and compiling the necessary software requires the use of git, FIt-SNE, and FFTW. For a basic overview of installation, visit this [page](https://github.com/KlugerLab/FIt-SNE). -Basic installation for most Unix machines can be achieved with the following commands after downloading +Basic installation for most Unix machines can be achieved with the following commands after downloading the latest version of FFTW from [here](http://www.fftw.org/). In the fftw directory, run: ``` ./configure make make install ``` -(Additional [instructions](http://www.fftw.org/fftw3_doc/Installation-and-Customization.html) if +(Additional [instructions](http://www.fftw.org/fftw3_doc/Installation-and-Customization.html) if necessary). Then in desired directory: ``` @@ -149,7 +149,7 @@ cd FIt-SNE g++ -std=c++11 -O3 src/sptree.cpp src/tsne.cpp src/nbodyfft.cpp -o bin/fast_tsne -pthread -lfftw3 -lm pwd ``` -Use the output of `pwd` as the `fitsne.path` parameter in runTSNE. +Use the output of `pwd` as the `fitsne.path` parameter in runTSNE. Note that the above instructions require root access. To install into a specified folder (such as your home directory) on a server, use the `--prefix` option: ``` @@ -172,7 +172,7 @@ The expected run time is 1 - 4 hours depending on dataset size and downstream an The `rliger` package provides a small sample dataset for basic demos of the functions. You can find it in folder `liger/tests/testdata/small_pbmc_data.RDS`. We also provide a set of scRNA-seq and scATAC-seq datasets for real-world style demos. These datasets are as follows: - + * scRNA data from control and interferon-stimulated PBMCs. Raw data provided by [Kang, et.al., 2017](https://www.nature.com/articles/nbt.4042); The datasets were downsampled by applying the sample function without replacement yield 3000 cells for each matrix. You can download downsampled data from [here](https://www.dropbox.com/sh/u94ib3dkf9pb6nd/AABemvnxDgKDGRs8Ek5QGlXWa?dl=0): + `PBMC_control.RDS`; + `PBMC_interferon-stimulated.RDS`. diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 81686c4b..00000000 --- a/appveyor.yml +++ /dev/null @@ -1,50 +0,0 @@ -# DO NOT CHANGE the "init" and "install" sections below - -# Download script file from GitHub -init: - ps: | - $ErrorActionPreference = "Stop" - Invoke-WebRequest http://raw.github.com/krlmlr/r-appveyor/master/scripts/appveyor-tool.ps1 -OutFile "..\appveyor-tool.ps1" - Import-Module '..\appveyor-tool.ps1' -install: - - ps: Bootstrap - -# Adapt as necessary starting from here - -environment: - global: - R_ARCH: x64 - USE_RTOOLS: true - BIOC_USE_DEVEL: "FALSE" - _R_CHECK_FORCE_SUGGESTS_: false - CRAN: "https://cloud.r-project.org" - -build_script: - - travis-tool.sh install_deps - - travis-tool.sh bioc_install S4Vectors - -test_script: - - travis-tool.sh run_tests - -on_failure: - - 7z a failure.zip *.Rcheck\* - - appveyor PushArtifact failure.zip - -artifacts: - - path: '*.Rcheck\**\*.log' - name: Logs - - - path: '*.Rcheck\**\*.out' - name: Logs - - - path: '*.Rcheck\**\*.fail' - name: Logs - - - path: '*.Rcheck\**\*.Rout' - name: Logs - - - path: '\*_*.tar.gz' - name: Bits - - - path: '\*_*.zip' - name: Bits diff --git a/inst/extdata/logo.png b/inst/extdata/logo.png new file mode 100755 index 00000000..5e78868c Binary files /dev/null and b/inst/extdata/logo.png differ