vignettes/interoperability_anndata.Rmd
interoperability_anndata.Rmd
This tutorial details how to use the conversion functions anndataToGiotto()
and giottoToAnnData()
. A mini Giotto object will be used for minimal computational requirements. Please note that these functions are inherently in active development, since changes to either squidpy or anndata are possible.
# Ensure Giotto Suite is installed
if(!"Giotto" %in% installed.packages()) {
pak::pkg_install("drieslab/Giotto")
}
library(Giotto)
# Ensure Giotto Data is installed
if(!"GiottoData" %in% installed.packages()) {
pak::pkg_install("drieslab/GiottoData")
}
library(GiottoData)
# Ensure the Python environment for Giotto has been installed
genv_exists <- checkGiottoEnvironment()
if(!genv_exists){
# The following command need only be run once to install the Giotto environment
installGiottoEnvironment()
}
# Specify path to which results may be saved
results_folder <- "/path/to/results/"
# Optional: Specify a path to a Python executable within a conda or miniconda
# environment. If set to NULL (default), the Python executable within the previously
# installed Giotto environment will be used.
python_path <- NULL # alternatively, "/local/python/path/python" if desired.
mini_gobject <- loadGiottoMini(dataset = "vizgen",
python_path = python_path)
instructions <- showGiottoInstructions(mini_gobject)
instructions$save_dir <- results_directory
mini_gobject <- replaceGiottoInstructions(gobject = mini_gobject,
instructions = instructions)
Since Giotto is structured hierarchically, converting Giotto to AnnData will result in multiple .h5ad
files. Each file will correspond to a Giotto spat_unit
feat_type
pair. Furthermore, each expression slot will be treated as a layer
in the resulting AnnData slot.
Squidpy anndata objects take different defaults for various operations compared to Giotto. For instance, the default nearest neighbor network is a kNN for squidpy, while the default for Giotto is a sNN. We"ll create a kNN in addition to the sNN within this object already to show how it they are handled.
mini_gobject <- createNearestNetwork(gobject = mini_gobject,
spat_unit = "aggregate",
feat_type = "rna",
type = "kNN",
dim_reduction_to_use = "umap",
dim_reduction_name = "umap",
k = 15,
name = "kNN.umap")
The above cell creates a nearest network with almost all default parameters. We"ll change some and make a new network to show how the converter handles this.
mini_gobject <- createNearestNetwork(gobject = mini_gobject,
spat_unit = "aggregate",
feat_type = "rna",
type = "kNN",
dim_reduction_to_use = "umap",
dim_reduction_name = "umap",
k = 6,
name = "new_network")
Since we have multiple spat_unit
feat_type
pairs, there will be multiple files created by this function. The names of the .h5ad
files will be returned. In the case of a non-anndata-default nearest network or spatial network name, the key_added terms will be recorded and saved in .txt
files named accordingly. Please see the documentation for further details.
anndata_conversions <- giottoToAnnData(gobject = mini_gobject,
save_directory = results_directory,
python_path = my_python_path)
To convert an AnnData Object back into a Giotto object, it must first be saved as a .h5ad
file. The name of said file may then be provided to anndataToGiotto()
for conversion.
If a nearest neighbor network or spatial network was created using the key_added
argument, they may be provided to arguments n_key_added and/or spatial_n_key_added, respectively. If converting an anndata object that was originally a giotto object, the .txt
files generated by giottoToAnnData()
may be provided to these arguments as well.
z0_rna_gobject <- anndataToGiotto(anndata_path = "./giotto_anndata_conversion/z0_rna_converted_gobject.h5ad",
python_path = python_path)
z1_rna_gobject <- anndataToGiotto(anndata_path = "./giotto_anndata_conversion/z1_rna_converted_gobject.h5ad",
python_path = python_path)
aggregate_rna_gobject <- anndataToGiotto(anndata_path = "./giotto_anndata_conversion/aggregate_rna_converted_gobject.h5ad",
python_path = python_path,
n_key_added = list("sNN.pca","new_network"),
spatial_n_key_added = "aggregate_rna_spatial_network_keys_added.txt")
4.2.2 (2022-10-31 ucrt)
R version : x86_64-w64-mingw32/x64 (64-bit)
Platform: Windows 10 x64 (build 22621)
Running under
: default
Matrix products
:
locale [1] LC_COLLATE=English_United States.utf8
2] LC_CTYPE=English_United States.utf8
[3] LC_MONETARY=English_United States.utf8
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.utf8
[
:
attached base packages [1] stats graphics grDevices utils datasets methods base
:
other attached packages [1] GiottoData_0.2.1 Giotto_3.2.1
namespace (and not attached):
loaded via a [1] Rcpp_1.0.10 pillar_1.9.0 compiler_4.2.2 tools_4.2.2
5] digest_0.6.30 jsonlite_1.8.3 evaluate_0.20 lifecycle_1.0.3
[9] tibble_3.2.1 gtable_0.3.3 lattice_0.20-45 png_0.1-7
[13] pkgconfig_2.0.3 rlang_1.1.0 igraph_1.4.1 Matrix_1.5-1
[17] cli_3.4.1 rstudioapi_0.14 parallel_4.2.2 yaml_2.3.7
[21] xfun_0.38 fastmap_1.1.0 terra_1.7-18 dplyr_1.1.1
[25] knitr_1.42 rappdirs_0.3.3 generics_0.1.3 vctrs_0.6.1
[29] rprojroot_2.0.3 grid_4.2.2 tidyselect_1.2.0 here_1.0.1
[33] reticulate_1.26 glue_1.6.2 data.table_1.14.6 R6_2.5.1
[37] fansi_1.0.4 rmarkdown_2.21 ggplot2_3.4.1 magrittr_2.0.3
[41] scales_1.2.1 codetools_0.2-18 htmltools_0.5.4 colorspace_2.1-0
[45] utf8_1.2.3 munsell_0.5.0 dbscan_1.1-11 [