TypeError with model.train() using R reticulate
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
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?
Closed due to inactivity.