theislab / scib

Benchmarking analysis of data integration tools
MIT License
288 stars 62 forks source link

failed to save seurat "No data in provided assay - counts" #227

Closed z5ouyang closed 3 years ago

z5ouyang commented 3 years ago

Hi there, I just installed the latest version 7d11d7959baaebc3ad588356407a78ac2c3271f4 with one script shared at the end.

But when I tried it on human_pancreas_norm.h5ad, which generated by following "scib/notebooks/data_preprocessing/pancreas/01... & 02", the snakemake --configfile config.yaml --cores 8 with following error:

Traceback (most recent call last):
  File "scripts/runPP.py", line 72, in <module>
    runPP(file, out, hvg, batch, rout, scale, seurat)
  File "scripts/runPP.py", line 43, in runPP
    scIB.preprocessing.saveSeurat(adata, outPath, batch, hvgs)
  File ".../anaconda3/envs/scIB-python/lib/python3.7/site-packages/scIB/preprocessing.py", line 493, in saveSeurat
    ro.r('sobj = as.Seurat(adata, counts="counts", data = "X")')
  File ".../anaconda3/envs/scIB-python/lib/python3.7/site-packages/rpy2/robjects/__init__.py", line 389, in __call__
    res = self.eval(p)
  File ".../anaconda3/envs/scIB-python/lib/python3.7/site-packages/rpy2/robjects/functions.py", line 192, in __call__
    .__call__(*args, **kwargs))
  File "/home/oyoung/anaconda3/envs/scIB-python/lib/python3.7/site-packages/rpy2/robjects/functions.py", line 121, in __call__
    res = super(Function, self).__call__(*new_args, **new_kwargs)
  File ".../anaconda3/envs/scIB-python/lib/python3.7/site-packages/rpy2/rinterface_lib/conversion.py", line 28, in _
    cdata = function(*args, **kwargs)
  File ".../anaconda3/envs/scIB-python/lib/python3.7/site-packages/rpy2/rinterface.py", line 785, in __call__
    raise embedded.RRuntimeError(_rinterface._geterrmessage())
rpy2.rinterface_lib.embedded.RRuntimeError: Error: No data in provided assay - counts

The installation script is, this might help others with installation:

#!/usr/bin/env bash
git clone https://github.com/theislab/scib.git
#git rev-parse HEAD
cd scib
git checkout 7d11d7959baaebc3ad588356407a78ac2c3271f4
cd envs
conda env create -f scIB-python.yml
conda env create -f scIB-R-conversion.yml
conda env create -f scIB-R-integration.yml

for v in scIB-python scIB-R-conversion scIB-R-integration
do
  conda activate $v
  cp env_vars_activate.sh $CONDA_PREFIX/etc/conda/activate.d/
  cp env_vars_deactivate.sh $CONDA_PREFIX/etc/conda/deactivate.d/
  conda deactivate
done

cd ..
## install R packages in env scIB-R-integration
conda activate scIB-R-integration
pip install python-igraph==0.8.3
conda install -c conda-forge -y louvain=0.6.1
conda install -c r -y r-cairo
R -q -e 'if(!require(Seurat)) install.packages("Seurat",repos="https://cloud.r-project.org")'
R -q -e 'if(!require(BiocManager)) install.packages("BiocManager",repos="https://cloud.r-project.org")'
R -q -e 'if(!require(devtools)) install.packages("devtools",repos="https://cloud.r-project.org")'
R -q -e 'if(!require(BBmisc)) install.packages("BBmisc",repos="https://cloud.r-project.org")'
R -q -e 'if(!require(scran)) BiocManager::install("scran",update=F)'
R -q -e 'if(!require(splatter)) BiocManager::install("splatter",update=F)'
R -q -e 'if(!require(DropletUtils)) BiocManager::install("DropletUtils",update=F)'
R -q -e 'if(!require(conos)) devtools::install_github("kharchenkolab/conos@v1.3.0",upgrade="never")'
Rscript packages.R
rm packages.R
conda deactivate

## install scIB in env scIB-python
conda activate scIB-python
R -q -e 'if(!require(kBET)) devtools::install_github("theislab/kBET")'
cd scib
pip install annoy==1.16.2 snakemake==5.26.1
pip install -e .
pip install pytest==5.0.1 pytest-runner==5.2 pytest-icdiff==0.5
cd ..
git clone https://github.com/KrishnaswamyLab/SAUCIE
pip install -r SAUCIE/requirements.txt
conda deactivate
z5ouyang commented 3 years ago

Just realized I needed to add counts layer in the h5ad (which is missing from the notebook).