scvi-tools icon indicating copy to clipboard operation
scvi-tools copied to clipboard

TypeError with model.train() using R reticulate

Open jdownie2389 opened this issue 1 year ago • 1 comments

When attempting to integrate several samples with scVI within an R environment, I'm running into an error that I'm pretty stumped about: "Error in py_call_impl(callable, call_args$unnamed, call_args$named) : TypeError: Cannot cast scalar from dtype('float64') to dtype('int64') according to the rule 'safe'"

# merging together several seurat objects stored as .rds files
merged_srt <- merge(x = rds_vector[[1]], y = rds_vector[-1], merge.data=TRUE)

# second step of merge
merged_srt[["RNA"]] <- JoinLayers(merged_srt[["RNA"]])

# Identify genes that are expressed in at least 3 cells
genes_to_keep <- rowSums(merged_srt[["RNA"]]$counts > 0) >= 3

# remove non-expressed genes
merged_srt <- subset(merged_srt, features = names(genes_to_keep)[genes_to_keep])

merged_srt <- NormalizeData(merged_srt) 
merged_srt <- FindVariableFeatures(merged_srt, selection.method = "vst", nfeatures = 2000)
top2k <- head(VariableFeatures(merged_srt), 2000)

merged_srt_2k <- merged_srt[top2k]
merged_srt_2k_new <- merged_srt_2k

#convert seurat v5 to v3/v4
merged_srt_2k_new[["RNA"]] <- as(object = merged_srt_2k[["RNA"]], Class = "Assay")

# convert to adata object
adata <- sceasy::convertFormat(merged_srt_2k_new, 
                              from="seurat",
                              to="anndata",
                              main_layer="data",
                              transfer_layer = "counts",
                              drop_single_values=FALSE)

scvi$model$SCVI$setup_anndata(adata,
                              layer = "counts",
                              batch_key = 'study_id')

model = scvi$model$SCVI(adata)

model$train()

Error output

GPU available: True (cuda), used: True
TPU available: False, using: 0 TPU cores
IPU available: False, using: 0 IPUs
HPU available: False, using: 0 HPUs
Error in py_call_impl(callable, call_args$unnamed, call_args$named) : 
  TypeError: Cannot cast scalar from dtype('float64') to dtype('int64') according to the rule 'safe'
Run `reticulate::py_last_error()` for details.
> reticulate::py_last_error()

── Python Exception Message ──────────────────────────────────────────────────────────────────────────────────────────────────────────
Traceback (most recent call last):
  File "_mt19937.pyx", line 180, in numpy.random._mt19937.MT19937._legacy_seeding
TypeError: 'float' object cannot be interpreted as an integer

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/n/home01/jdownie/.conda/envs/scvi-env/lib/python3.9/site-packages/scvi/model/base/_training_mixin.py", line 143, in train
    return runner()
  File "/n/home01/jdownie/.conda/envs/scvi-env/lib/python3.9/site-packages/scvi/train/_trainrunner.py", line 98, in __call__
    self.trainer.fit(self.training_plan, self.data_splitter)
  File "/n/home01/jdownie/.conda/envs/scvi-env/lib/python3.9/site-packages/scvi/train/_trainer.py", line 219, in fit
    super().fit(*args, **kwargs)
  File "/n/home01/jdownie/.conda/envs/scvi-env/lib/python3.9/site-packages/lightning/pytorch/trainer/trainer.py", line 544, in fit
    call._call_and_handle_interrupt(
  File "/n/home01/jdownie/.conda/envs/scvi-env/lib/python3.9/site-packages/lightning/pytorch/trainer/call.py", line 44, in _call_and_handle_interrupt
    return trainer_fn(*args, **kwargs)
  File "/n/home01/jdownie/.conda/envs/scvi-env/lib/python3.9/site-packages/lightning/pytorch/trainer/trainer.py", line 580, in _fit_impl
    self._run(model, ckpt_path=ckpt_path)
  File "/n/home01/jdownie/.conda/envs/scvi-env/lib/python3.9/site-packages/lightning/pytorch/trainer/trainer.py", line 950, in _run
    call._call_setup_hook(self)  # allow user to setup lightning_module in accelerator environment
  File "/n/home01/jdownie/.conda/envs/scvi-env/lib/python3.9/site-packages/lightning/pytorch/trainer/call.py", line 92, in _call_setup_hook
    _call_lightning_datamodule_hook(trainer, "setup", stage=fn)
  File "/n/home01/jdownie/.conda/envs/scvi-env/lib/python3.9/site-packages/lightning/pytorch/trainer/call.py", line 179, in _call_lightning_datamodule_hook
    return fn(*args, **kwargs)
  File "/n/home01/jdownie/.conda/envs/scvi-env/lib/python3.9/site-packages/scvi/dataloaders/_data_splitting.py", line 132, in setup
    random_state = np.random.RandomState(seed=settings.seed)
  File "numpy/random/mtrand.pyx", line 185, in numpy.random.mtrand.RandomState.__init__
  File "_mt19937.pyx", line 168, in numpy.random._mt19937.MT19937._legacy_seeding
  File "_mt19937.pyx", line 188, in numpy.random._mt19937.MT19937._legacy_seeding
TypeError: Cannot cast scalar from dtype('float64') to dtype('int64') according to the rule 'safe'

── R Traceback ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
    ▆
 1. └─model$train()
 2.   └─reticulate:::py_call_impl(callable, call_args$unnamed, call_args$named)

Versions:

> sessionInfo()
R version 4.2.3 (2023-03-15)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 22.04.1 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0
LAPACK: /n/home01/jdownie/.conda/envs/scvi-env/lib/libmkl_intel_lp64.so.2

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] sceasy_0.0.7       openssl_2.1.1      qs_0.25.5          scCustomize_2.1.2  Seurat_5.0.1       SeuratObject_5.0.1
 [7] sp_2.1-2           ggpubr_0.6.0       readxl_1.4.2       lubridate_1.9.2    forcats_1.0.0      stringr_1.5.1     
[13] dplyr_1.1.4        purrr_1.0.2        readr_2.1.4        tidyr_1.3.1        tibble_3.2.1       ggplot2_3.4.4     
[19] tidyverse_2.0.0    reticulate_1.34.0 

loaded via a namespace (and not attached):
  [1] backports_1.4.1        spam_2.10-0            circlize_0.4.15        plyr_1.8.9             igraph_2.0.1          
  [6] lazyeval_0.2.2         splines_4.2.3          RcppHNSW_0.5.0         RApiSerialize_0.1.2    listenv_0.9.1         
 [11] scattermore_1.2        digest_0.6.34          htmltools_0.5.7        fansi_1.0.6            magrittr_2.0.3        
 [16] paletteer_1.5.0        tensor_1.5             cluster_2.1.4          ROCR_1.0-11            tzdb_0.3.0            
 [21] globals_0.16.2         RcppParallel_5.1.7     matrixStats_1.1.0      askpass_1.2.0          timechange_0.2.0      
 [26] spatstat.sparse_3.0-3  colorspace_2.1-0       rappdirs_0.3.3         ggrepel_0.9.5          jsonlite_1.8.8        
 [31] progressr_0.14.0       spatstat.data_3.0-4    stringfish_0.15.7      survival_3.5-5         zoo_1.8-12            
 [36] glue_1.7.0             polyclip_1.10-6        gtable_0.3.4           leiden_0.4.3.1         car_3.1-2             
 [41] future.apply_1.11.1    shape_1.4.6            abind_1.4-5            scales_1.3.0           rstatix_0.7.2         
 [46] spatstat.random_3.2-2  miniUI_0.1.1.1         Rcpp_1.0.12            viridisLite_0.4.2      xtable_1.8-4          
 [51] dotCall64_1.1-1        htmlwidgets_1.6.4      httr_1.4.7             RColorBrewer_1.1-3     ellipsis_0.3.2        
 [56] ica_1.0-3              pkgconfig_2.0.3        uwot_0.1.16            deldir_2.0-2           janitor_2.2.0         
 [61] utf8_1.2.4             tidyselect_1.2.0       rlang_1.1.3            reshape2_1.4.4         later_1.3.2           
 [66] munsell_0.5.0          cellranger_1.1.0       tools_4.2.3            ggprism_1.0.4          cli_3.6.2             
 [71] generics_0.1.3         broom_1.0.4            ggridges_0.5.6         fastmap_1.1.1          goftest_1.2-3         
 [76] rematch2_2.1.2         fitdistrplus_1.1-11    RANN_2.6.1             pbapply_1.7-2          future_1.33.1         
 [81] nlme_3.1-162           mime_0.12              ggrastr_1.0.1          compiler_4.2.3         rstudioapi_0.14       
 [86] beeswarm_0.4.0         plotly_4.10.4          png_0.1-8              ggsignif_0.6.4         spatstat.utils_3.0-4  
 [91] stringi_1.8.3          RSpectra_0.16-1        lattice_0.21-8         Matrix_1.6-5           vctrs_0.6.5           
 [96] pillar_1.9.0           lifecycle_1.0.4        spatstat.geom_3.2-8    lmtest_0.9-40          GlobalOptions_0.1.2   
[101] RcppAnnoy_0.0.22       data.table_1.14.10     cowplot_1.1.3          irlba_2.3.5.1          httpuv_1.6.14         
[106] patchwork_1.2.0        R6_2.5.1               promises_1.2.1         KernSmooth_2.23-20     gridExtra_2.3         
[111] vipor_0.4.5            parallelly_1.36.0      codetools_0.2-19       fastDummies_1.7.3      MASS_7.3-58.3         
[116] withr_3.0.0            sctransform_0.4.1      parallel_4.2.3         hms_1.1.3              grid_4.2.3            
[121] snakecase_0.11.0       carData_3.0-5          Rtsne_0.17             spatstat.explore_3.2-5 shiny_1.8.0           
[126] ggbeeswarm_0.7.1      

> py_config()
python:         /n/home01/jdownie/.conda/envs/scvi-env/bin/python
libpython:      /n/home01/jdownie/.conda/envs/scvi-env/lib/libpython3.9.so
pythonhome:     /n/home01/jdownie/.conda/envs/scvi-env:/n/home01/jdownie/.conda/envs/scvi-env
version:        3.9.18 | packaged by conda-forge | (main, Dec 23 2023, 16:33:10)  [GCC 12.3.0]
numpy:          /n/home01/jdownie/.conda/envs/scvi-env/lib/python3.9/site-packages/numpy
numpy_version:  1.26.4
scanpy:         /n/home01/jdownie/.conda/envs/scvi-env/lib/python3.9/site-packages/scanpy

NOTE: Python version was forced by use_python() function
$ conda list
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                  2_kmp_llvm    conda-forge
absl-py                   2.1.0                    pypi_0    pypi
aiohttp                   3.9.3                    pypi_0    pypi
aiosignal                 1.3.1                    pypi_0    pypi
anndata                   0.10.5.post1             pypi_0    pypi
array-api-compat          1.4.1                    pypi_0    pypi
async-timeout             4.0.3                    pypi_0    pypi
attrs                     23.2.0                   pypi_0    pypi
blas                      2.116                       mkl    conda-forge
blas-devel                3.9.0            16_linux64_mkl    conda-forge
brotli-python             1.1.0            py39h3d6467e_1    conda-forge
bzip2                     1.0.8                hd590300_5    conda-forge
ca-certificates           2024.2.2             hbcca054_0    conda-forge
certifi                   2024.2.2           pyhd8ed1ab_0    conda-forge
charset-normalizer        3.3.2              pyhd8ed1ab_0    conda-forge
chex                      0.1.85                   pypi_0    pypi
contextlib2               21.6.0                   pypi_0    pypi
contourpy                 1.2.0                    pypi_0    pypi
cuda-cudart               12.1.105                      0    nvidia
cuda-cupti                12.1.105                      0    nvidia
cuda-libraries            12.1.0                        0    nvidia
cuda-nvrtc                12.1.105                      0    nvidia
cuda-nvtx                 12.1.105                      0    nvidia
cuda-opencl               12.4.99                       0    nvidia
cuda-runtime              12.1.0                        0    nvidia
cycler                    0.12.1                   pypi_0    pypi
docrep                    0.3.2                    pypi_0    pypi
etils                     1.5.2                    pypi_0    pypi
exceptiongroup            1.2.0                    pypi_0    pypi
ffmpeg                    4.3                  hf484d3e_0    pytorch
filelock                  3.13.1             pyhd8ed1ab_0    conda-forge
flax                      0.8.1                    pypi_0    pypi
fonttools                 4.49.0                   pypi_0    pypi
freetype                  2.12.1               h267a509_2    conda-forge
frozenlist                1.4.1                    pypi_0    pypi
fsspec                    2024.2.0                 pypi_0    pypi
get-annotations           0.1.2                    pypi_0    pypi
gmp                       6.3.0                h59595ed_0    conda-forge
gmpy2                     2.1.2            py39h376b7d2_1    conda-forge
gnutls                    3.6.13               h85f3911_1    conda-forge
h5py                      3.10.0                   pypi_0    pypi
icu                       73.2                 h59595ed_0    conda-forge
idna                      3.6                pyhd8ed1ab_0    conda-forge
importlib-metadata        7.0.2                    pypi_0    pypi
importlib-resources       6.1.3                    pypi_0    pypi
jax                       0.4.25                   pypi_0    pypi
jaxlib                    0.4.25+cuda12.cudnn89          pypi_0    pypi
jinja2                    3.1.3              pyhd8ed1ab_0    conda-forge
joblib                    1.3.2                    pypi_0    pypi
jpeg                      9e                   h166bdaf_2    conda-forge
kiwisolver                1.4.5                    pypi_0    pypi
lame                      3.100             h166bdaf_1003    conda-forge
lcms2                     2.15                 hfd0df8a_0    conda-forge
ld_impl_linux-64          2.40                 h41732ed_0    conda-forge
lerc                      4.0.0                h27087fc_0    conda-forge
libblas                   3.9.0            16_linux64_mkl    conda-forge
libcblas                  3.9.0            16_linux64_mkl    conda-forge
libcublas                 12.1.0.26                     0    nvidia
libcufft                  11.0.2.4                      0    nvidia
libcufile                 1.9.0.20                      0    nvidia
libcurand                 10.3.5.119                    0    nvidia
libcusolver               11.4.4.55                     0    nvidia
libcusparse               12.0.2.55                     0    nvidia
libdeflate                1.17                 h0b41bf4_0    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libgcc-ng                 13.2.0               h807b86a_5    conda-forge
libgfortran-ng            13.2.0               h69a702a_5    conda-forge
libgfortran5              13.2.0               ha4646dd_5    conda-forge
libgomp                   13.2.0               h807b86a_5    conda-forge
libhwloc                  2.9.3           default_h554bfaf_1009    conda-forge
libiconv                  1.17                 hd590300_2    conda-forge
libjpeg-turbo             2.0.0                h9bf148f_0    pytorch
liblapack                 3.9.0            16_linux64_mkl    conda-forge
liblapacke                3.9.0            16_linux64_mkl    conda-forge
libnpp                    12.0.2.50                     0    nvidia
libnsl                    2.0.1                hd590300_0    conda-forge
libnvjitlink              12.1.105                      0    nvidia
libnvjpeg                 12.1.1.14                     0    nvidia
libpng                    1.6.43               h2797004_0    conda-forge
libsqlite                 3.45.1               h2797004_0    conda-forge
libstdcxx-ng              13.2.0               h7e041cc_5    conda-forge
libtiff                   4.5.0                h6adf6a1_2    conda-forge
libuuid                   2.38.1               h0b41bf4_0    conda-forge
libwebp-base              1.3.2                hd590300_0    conda-forge
libxcb                    1.13              h7f98852_1004    conda-forge
libxcrypt                 4.4.36               hd590300_1    conda-forge
libxml2                   2.12.5               h232c23b_0    conda-forge
libzlib                   1.2.13               hd590300_5    conda-forge
lightning                 2.1.4                    pypi_0    pypi
lightning-utilities       0.10.1                   pypi_0    pypi
llvm-openmp               15.0.7               h0cdce71_0    conda-forge
llvmlite                  0.42.0                   pypi_0    pypi
markdown-it-py            3.0.0                    pypi_0    pypi
markupsafe                2.1.5            py39hd1e30aa_0    conda-forge
matplotlib                3.8.3                    pypi_0    pypi
mdurl                     0.1.2                    pypi_0    pypi
mkl                       2022.1.0           h84fe81f_915    conda-forge
mkl-devel                 2022.1.0           ha770c72_916    conda-forge
mkl-include               2022.1.0           h84fe81f_915    conda-forge
ml-collections            0.1.1                    pypi_0    pypi
ml-dtypes                 0.3.2                    pypi_0    pypi
mpc                       1.3.1                hfe3b2da_0    conda-forge
mpfr                      4.2.1                h9458935_0    conda-forge
mpmath                    1.3.0              pyhd8ed1ab_0    conda-forge
msgpack                   1.0.8                    pypi_0    pypi
mudata                    0.2.3                    pypi_0    pypi
multidict                 6.0.5                    pypi_0    pypi
multipledispatch          1.0.0                    pypi_0    pypi
natsort                   8.4.0                    pypi_0    pypi
ncurses                   6.4                  h59595ed_2    conda-forge
nest-asyncio              1.6.0                    pypi_0    pypi
nettle                    3.6                  he412f7d_0    conda-forge
networkx                  3.2.1              pyhd8ed1ab_0    conda-forge
numba                     0.59.0                   pypi_0    pypi
numpy                     1.26.4           py39h474f0d3_0    conda-forge
numpyro                   0.14.0                   pypi_0    pypi
nvidia-cublas-cu12        12.4.2.65                pypi_0    pypi
nvidia-cuda-cupti-cu12    12.4.99                  pypi_0    pypi
nvidia-cuda-nvcc-cu12     12.4.99                  pypi_0    pypi
nvidia-cuda-nvrtc-cu12    12.4.99                  pypi_0    pypi
nvidia-cuda-runtime-cu12  12.4.99                  pypi_0    pypi
nvidia-cudnn-cu12         8.9.7.29                 pypi_0    pypi
nvidia-cufft-cu12         11.2.0.44                pypi_0    pypi
nvidia-cusolver-cu12      11.6.0.99                pypi_0    pypi
nvidia-cusparse-cu12      12.3.0.142               pypi_0    pypi
nvidia-nccl-cu12          2.20.5                   pypi_0    pypi
nvidia-nvjitlink-cu12     12.4.99                  pypi_0    pypi
openh264                  2.1.1                h780b84a_0    conda-forge
openjpeg                  2.5.0                hfec8fc6_2    conda-forge
openssl                   3.2.1                hd590300_0    conda-forge
opt-einsum                3.3.0                    pypi_0    pypi
optax                     0.2.1                    pypi_0    pypi
orbax-checkpoint          0.5.3                    pypi_0    pypi
packaging                 23.2                     pypi_0    pypi
pandas                    2.2.1                    pypi_0    pypi
patsy                     0.5.6                    pypi_0    pypi
pillow                    9.4.0            py39h2320bf1_1    conda-forge
pip                       24.0               pyhd8ed1ab_0    conda-forge
protobuf                  4.25.3                   pypi_0    pypi
pthread-stubs             0.4               h36c2ea0_1001    conda-forge
pygments                  2.17.2                   pypi_0    pypi
pynndescent               0.5.11                   pypi_0    pypi
pyparsing                 3.1.2                    pypi_0    pypi
pyro-api                  0.1.2                    pypi_0    pypi
pyro-ppl                  1.9.0                    pypi_0    pypi
pysocks                   1.7.1              pyha2e5f31_6    conda-forge
python                    3.9.18          h0755675_1_cpython    conda-forge
python-dateutil           2.9.0.post0              pypi_0    pypi
python_abi                3.9                      4_cp39    conda-forge
pytorch                   2.2.1           py3.9_cuda12.1_cudnn8.9.2_0    pytorch
pytorch-cuda              12.1                 ha16c6d3_5    pytorch
pytorch-lightning         2.2.1                    pypi_0    pypi
pytorch-mutex             1.0                        cuda    pytorch
pytz                      2024.1                   pypi_0    pypi
pyyaml                    6.0.1            py39hd1e30aa_1    conda-forge
readline                  8.2                  h8228510_1    conda-forge
requests                  2.31.0             pyhd8ed1ab_0    conda-forge
rich                      13.7.1                   pypi_0    pypi
scanpy                    1.9.8                    pypi_0    pypi
scikit-learn              1.4.1.post1              pypi_0    pypi
scipy                     1.12.0                   pypi_0    pypi
scvi-tools                1.1.2                    pypi_0    pypi
seaborn                   0.13.2                   pypi_0    pypi
session-info              1.0.0                    pypi_0    pypi
setuptools                69.1.1             pyhd8ed1ab_0    conda-forge
six                       1.16.0                   pypi_0    pypi
statsmodels               0.14.1                   pypi_0    pypi
stdlib-list               0.10.0                   pypi_0    pypi
sympy                     1.12            pypyh9d50eac_103    conda-forge
tbb                       2021.11.0            h00ab1b0_1    conda-forge
tensorstore               0.1.54                   pypi_0    pypi
threadpoolctl             3.3.0                    pypi_0    pypi
tk                        8.6.13          noxft_h4845f30_101    conda-forge
toolz                     0.12.1                   pypi_0    pypi
torchaudio                2.2.1                py39_cu121    pytorch
torchmetrics              1.3.1                    pypi_0    pypi
torchtriton               2.2.0                      py39    pytorch
torchvision               0.17.1               py39_cu121    pytorch
tqdm                      4.66.2                   pypi_0    pypi
typing_extensions         4.10.0             pyha770c72_0    conda-forge
tzdata                    2024.1                   pypi_0    pypi
umap-learn                0.5.5                    pypi_0    pypi
urllib3                   2.2.1              pyhd8ed1ab_0    conda-forge
wheel                     0.42.0             pyhd8ed1ab_0    conda-forge
xorg-libxau               1.0.11               hd590300_0    conda-forge
xorg-libxdmcp             1.1.3                h7f98852_0    conda-forge
xz                        5.2.6                h166bdaf_0    conda-forge
yaml                      0.2.5                h7f98852_2    conda-forge
yarl                      1.9.4                    pypi_0    pypi
zipp                      3.17.0                   pypi_0    pypi
zlib                      1.2.13               hd590300_5    conda-forge
zstd                      1.5.5                hfc55251_0    conda-forge

jdownie2389 avatar Mar 08 '24 05:03 jdownie2389

Can you share the full code. It looks like you have defined a custom seed like scvi.settings.seed = 2. This 2 is interpreted as a float in R. However, scvi-tools requires an integer there. You have to case the type in R. If you haven't set a custom seed. Can you try doing so and see whether it's fixed?

canergen avatar Jul 30 '24 04:07 canergen

Closed due to inactivity.

canergen avatar Aug 30 '24 17:08 canergen