Last updated: 2022-02-28
Checks: 5 2
Knit directory: STUtility_web_site/
This reproducible R Markdown analysis was created with workflowr (version 1.7.0). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.
The R Markdown file has unstaged changes. To know which version of the R Markdown file created these results, you’ll want to first commit it to the Git repo. If you’re still working on the analysis, you can ignore this warning. When you’re finished, you can run wflow_publish
to commit the R Markdown file and build the HTML.
The global environment had objects present when the code in the R Markdown file was run. These objects can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment. Use wflow_publish
or wflow_build
to ensure that the code is always run in an empty environment.
The following objects were defined in the global environment when these results were created:
Name | Class | Size |
---|---|---|
corners | matrix;array | 344 bytes |
crop.geoms | list | 2.8 Kb |
de.markers | data.frame | 1.7 Mb |
im | cimg;imager_array;numeric | 89.3 Mb |
p1 | patchwork;gg;ggplot | 41.1 Kb |
p2 | patchwork;gg;ggplot | 41.1 Kb |
p3 | patchwork;gg;ggplot | 41.1 Kb |
p4 | patchwork;gg;ggplot | 41.1 Kb |
raw.HE | raster | 3.9 Mb |
se | Seurat | 230.9 Mb |
se.masked | Seurat | 1 Gb |
settings | data.frame | 2.2 Kb |
top10 | grouped_df;tbl_df;tbl;data.frame | 18 Kb |
The command set.seed(20191031)
was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.
Great job! Recording the operating system, R version, and package versions is critical for reproducibility.
Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.
Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.
Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.
The results in this page were generated with repository version a13f35b. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.
Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish
or wflow_git_commit
). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:
Ignored files:
Ignored: analysis/.DS_Store
Ignored: analysis/manual_annotation.png
Ignored: pre_data/
Unstaged changes:
Modified: analysis/Maize_data.Rmd
Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.
These are the previous versions of the repository in which changes were made to the R Markdown (analysis/Maize_data.Rmd
) and HTML (docs/Maize_data.html
) files. If you’ve configured a remote Git repository (see ?wflow_git_remote
), click on the hyperlinks in the table below to view the files as they were in that past version.
File | Version | Author | Date | Message |
---|---|---|---|---|
Rmd | a13f35b | Ludvig Larsson | 2022-02-28 | Added walkthrough |
library(Seurat)
library(magrittr)
library(imager)
library(EBImage)
library(STutility)
library(magrittr)
library(dplyr)
library(harmony)
samples <- "data/filtered_feature_bc_matrix.h5"
imgs <- "data/tissue_hires_image.png"
spotfiles <- "data/tissue_positions_list.csv"
json <- "data/scalefactors_json.json"
infoTable <- data.frame(samples, imgs, spotfiles, json)
se <- InputFromTable(infoTable)
Here we manually annotated the four section as “group1” - “group4”.
se <- LoadImages(se, time.resolve = FALSE)
se <- ManualAnnotation(se)
First, let’s have a look at the histological image and then overlay our selections on top of it.
ImagePlot(se, method = "raster", annotate = FALSE)
FeatureOverlay(se, features = "labels")
We can use the GetCropWindows
function to extract “crop geometries” which we will be using to crop the data. Since we have four tissue sections in diofferent orientation, it is more convenient to work with the data if we can split each section into a separate dataset.
crop.geoms <- GetCropWindows(se, groups.to.keep = paste0("group", 1:4))
crop.geoms
$`1`
geom group group.by
"620x623+499+416" "group1" "labels"
$`1`
geom group group.by
"551x664+1216+356" "group2" "labels"
$`1`
geom group group.by
"621x603+509+1262" "group3" "labels"
$`1`
geom group group.by
"551x623+1273+1202" "group4" "labels"
The ´crop.geoms´ is a list where each element is named by section id (for example “1” above since all crop windows come from section 1) and contain a vector with: (1) a string which defines the width, height and offset along the x and y axes, (2) the group column name and (3) the group variable name. The latter two are required to make sure that spots are only selected from the correct group regardless if the cropped images overlap with another group.
To illustrate this, we can plot the “crop windows” on our histological image:
im <- magick::image_read(GetStaffli(se)@imgs[1]) %>% imager::magick2cimg()
corners <- apply(do.call(rbind, sapply(crop.geoms, function(x) {
strsplit(x[1], "x|\\+")
})), 2, as.numeric)
plot(im)
rect(xleft = corners[, 3], ybottom = corners[, 4], xright = corners[, 3] + corners[, 1], ytop = corners[, 4] + corners[, 2])
se.cropped <- CropImages(se, crop.geometry.list = crop.geoms, xdim = 500, time.resolve = FALSE, verbose = TRUE)
Next, we’ll mask the images. The MaskImages
default masking function usually works well for HE staining, but in this case we need to resort to a different strategy. Below is an example of a custom masking function that we can use on our tissue images.
se.masked <- readRDS("~/chi_chih/R_objects/se.masked")
msk.fkn <- function(im) {
suppressWarnings({
im <- imager::grayscale(im)
im <- imager::isoblur(im, 3)
out <- imager::threshold(im)
out <- !out
out <- imager::fill(out, 5)
out <- EBImage::as.Image(out)
out <- EBImage::fillHull(out)
out <- imager::as.pixset(out)
})
return(out)
}
se.masked <- MaskImages(se.cropped, custom.msk.fkn = msk.fkn, verbose = TRUE)
Next we can align the four tissue sections using the ManualAlignImages
function. There are some distortions in the sections which makes it virtually impossible to achieve a good alignment using only rigid transformations. To achieve a decent alignment, we also need to strecth/compress the tissue.
se.masked <- ManualAlignImages(se.masked, fix.axes = TRUE)
Here are approximate settings that were used fo the manual alignment.
settings <- data.frame(sample = c(2, 3, 4),
rotation_angle = c(-27.7, 88.8, 4.2),
shift_x = c(-9, 26, 40),
shift_y = c(69, -7, -26),
angle_blue = c(27, 0, 37.4),
stretch_blue = c(0.92, 1, 0.93),
angle_red = c(33.3, 0, 37.4),
stretch_red = c(0.87, 1, 0.87),
mirror_x = c(FALSE, FALSE, TRUE),
mirror_y = c(FALSE, FALSE, TRUE))
DT::datatable(settings)
Below is the result after tissue alignment
ImagePlot(se.masked, ncols = 4, method = "raster")
There are slightly higher counts in group1 and group2 which might represent a batch effect, but overall the quality metrics are high.
VlnPlot(se.masked, features = c("nFeature_RNA", "nCount_RNA"), group.by = "labels")
Below is a simple analysis workflow based on Seurat functions. For dimensionality reduction we run PCA.
se.masked <- se.masked %>%
SCTransform() %>%
RunPCA() %>%
RunUMAP(reduction = "pca", dims = 1:30)
se.masked <- se.masked %>%
FindNeighbors(reduction = "pca", dims = 1:30) %>%
FindClusters() %>%
RunUMAP(reduction = "pca", dims = 1:30)
se.masked$seurat_clusters_pca <- se.masked$seurat_clusters
From the UMAP we can see that the sections are not well mixed, indicating that there is a batch effect present in the data. This could of course be biological, but we could try to use an integration technique to find shared structures across the sections.
p1 <- DimPlot(se.masked, group.by = "labels", reduction = "umap")
p2 <- DimPlot(se.masked, group.by = "seurat_clusters_pca", label = TRUE, label.size = 8, reduction = "umap")
p1 - p2
There are also some discrepancies in the spatial distribution of clusters in the different sections.
p1 <- ST.FeaturePlot(se.masked, features = "seurat_clusters_pca", indices = 1, split.labels = T, pt.size = 2) & theme(plot.title = element_blank(), strip.text = element_blank())
p2 <- ST.FeaturePlot(se.masked, features = "seurat_clusters_pca", indices = 2, split.labels = T, pt.size = 2) & theme(plot.title = element_blank(), strip.text = element_blank())
p3 <- ST.FeaturePlot(se.masked, features = "seurat_clusters_pca", indices = 3, split.labels = T, pt.size = 2) & theme(plot.title = element_blank(), strip.text = element_blank())
p4 <- ST.FeaturePlot(se.masked, features = "seurat_clusters_pca", indices = 4, split.labels = T, pt.size = 2) & theme(plot.title = element_blank(), strip.text = element_blank())
cowplot::plot_grid(p1, p2, p3, p4, ncol = 4)
Next, we’ll use harmony to integrate the data from the four sections:
se.masked <- RunHarmony(se.masked, group.by.vars = "labels", reduction = "pca", dims.use = 1:30, assay.use = "SCT", verbose = FALSE) %>%
RunUMAP(reduction = "harmony", dims = 1:30, reduction.name = "umap.harmony") %>%
FindNeighbors(reduction = "harmony", dims = 1:30) %>%
FindClusters()
se.masked$seurat_clusters_harmony <- se.masked$seurat_clusters
After integration, we can see that the four sections are more evenly mixed.
p1 <- DimPlot(se.masked, group.by = "labels", reduction = "umap.harmony")
p2 <- DimPlot(se.masked, group.by = "seurat_clusters_harmony", label = TRUE, label.size = 8, reduction = "umap.harmony")
p1 - p2
By plotting the clusters on tissue coordinates we can also see that each cluster appearin every tissue section.
p1 <- ST.FeaturePlot(se.masked, features = "seurat_clusters_harmony", indices = 1, split.labels = T, pt.size = 2) & theme(plot.title = element_blank(), strip.text = element_blank())
p2 <- ST.FeaturePlot(se.masked, features = "seurat_clusters_harmony", indices = 2, split.labels = T, pt.size = 2) & theme(plot.title = element_blank(), strip.text = element_blank())
p3 <- ST.FeaturePlot(se.masked, features = "seurat_clusters_harmony", indices = 3, split.labels = T, pt.size = 2) & theme(plot.title = element_blank(), strip.text = element_blank())
p4 <- ST.FeaturePlot(se.masked, features = "seurat_clusters_harmony", indices = 4, split.labels = T, pt.size = 2) & theme(plot.title = element_blank(), strip.text = element_blank())
cowplot::plot_grid(p1, p2, p3, p4, ncol = 4)
From these clsuetrs, we can extract marker genes by differential expression analysis (DEA).
de.markers <- FindAllMarkers(se.masked, only.pos = TRUE)
top10 <- de.markers %>%
dplyr::filter(p_val_adj < 0.01) %>%
dplyr::group_by(cluster) %>%
dplyr::top_n(wt = -p_val_adj, n = 10)
DoHeatmap(se.masked, features = top10$gene)
Warning in DoHeatmap(se.masked, features = top10$gene): The following features were omitted as they were not found in the scale.data
slot for the SCT assay: Zm00001d044529, G2-like-transcription factor 26, cyclin11, ribosomal protein S27, Zm00001d038374
By runnig Create3DStack
, we can create a z-stack of “2D point patterns” which we’ll use to interpolate expression values over and visualzie expression in 2D space.
se.masked <- Create3DStack(object = se.masked, limit = 0.5, maxnum = 5e3, nx = 200)
Now that we have some marker genes we can try to visualize them in 3D
FeaturePlot3D(se.masked, features = "Zm00001d053156")
If you don’t want to use the “cell scatter cloud”, you can also just visualize expression at the spot level.
FeaturePlot3D(se.masked, features = "Zm00001d053156", mode = "spots", pt.size = 4, pt.alpha = 0.7)
Or do some other fancy tricks to color the sections according to similarities in gene expression for example
se.masked <- RunUMAP(se.masked, dims = 1:30, reduction = "harmony", n.components = 3, reduction.name = "umap.3d")
13:36:32 UMAP embedding parameters a = 0.9922 b = 1.112
13:36:32 Read 1761 rows and found 30 numeric columns
13:36:32 Using Annoy for neighbor search, n_neighbors = 30
13:36:32 Building Annoy index with metric = cosine, n_trees = 50
0% 10 20 30 40 50 60 70 80 90 100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
13:36:32 Writing NN index file to temp file /var/folders/zb/1fj07x_5343fvs_k28gnm1z80002xs/T//RtmpOKq740/file15e977826d34d
13:36:32 Searching Annoy index using 1 thread, search_k = 3000
13:36:33 Annoy recall = 100%
13:36:34 Commencing smooth kNN distance calibration using 1 thread
13:36:37 Initializing from normalized Laplacian + noise
13:36:37 Commencing optimization for 500 epochs, with 69192 positive edges
13:36:41 Optimization finished
DimPlot3D(se.masked, dims = 1:3, blend = TRUE, reduction = "umap.3d", mode = "spots", pt.size = 5, pt.alpha = 1)
This can of course also be done in 2D
ImagePlot(se.masked, ncols = 4, method = "raster")
ST.DimPlot(se.masked, dims = 1:3, reduction = "umap.3d", blend = TRUE, ncol = 4, pt.size = 3)
date()
[1] "Mon Feb 28 13:36:46 2022"
devtools::session_info()
─ Session info ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
setting value
version R version 4.0.3 (2020-10-10)
os macOS Mojave 10.14.6
system x86_64, darwin13.4.0
ui RStudio
language (EN)
collate en_US.UTF-8
ctype en_US.UTF-8
tz Europe/Stockholm
date 2022-02-28
─ Packages ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
! package * version date lib source
abind 1.4-5 2016-07-21 [1] CRAN (R 4.0.0)
akima 0.6-2.1 2020-05-30 [1] CRAN (R 4.0.3)
assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.0.0)
BiocGenerics 0.36.0 2020-10-27 [1] Bioconductor
bit 4.0.4 2020-08-04 [1] CRAN (R 4.0.2)
bit64 4.0.5 2020-08-30 [1] CRAN (R 4.0.2)
bitops 1.0-7 2021-04-24 [1] CRAN (R 4.0.3)
bmp 0.3 2017-09-11 [1] CRAN (R 4.0.3)
boot 1.3-27 2021-02-12 [1] CRAN (R 4.0.3)
bslib 0.2.4 2021-01-25 [1] CRAN (R 4.0.3)
cachem 1.0.4 2021-02-13 [1] CRAN (R 4.0.3)
V callr 3.6.0 2021-04-20 [1] CRAN (R 4.0.3)
class 7.3-18 2021-01-24 [1] CRAN (R 4.0.3)
classInt 0.4-3 2020-04-07 [1] CRAN (R 4.0.3)
cli 3.1.1 2022-01-20 [1] CRAN (R 4.0.3)
cluster 2.1.1 2021-02-14 [1] CRAN (R 4.0.3)
coda 0.19-4 2020-09-30 [1] CRAN (R 4.0.2)
codetools 0.2-18 2020-11-04 [1] CRAN (R 4.0.3)
colorRamps 2.3 2012-10-29 [1] CRAN (R 4.0.3)
colorspace 2.0-0 2020-11-11 [1] CRAN (R 4.0.3)
cowplot 1.1.1 2020-12-30 [1] CRAN (R 4.0.3)
crayon 1.4.1 2021-02-08 [1] CRAN (R 4.0.3)
crosstalk 1.1.1 2021-01-12 [1] CRAN (R 4.0.3)
data.table 1.14.0 2021-02-21 [1] CRAN (R 4.0.3)
DBI 1.1.1 2021-01-15 [1] CRAN (R 4.0.3)
dbscan 1.1-6 2021-02-26 [1] CRAN (R 4.0.3)
deldir 1.0-6 2021-10-23 [1] CRAN (R 4.0.3)
desc 1.3.0 2021-03-05 [1] CRAN (R 4.0.3)
devtools 2.4.0 2021-04-07 [1] CRAN (R 4.0.3)
digest 0.6.27 2020-10-24 [1] CRAN (R 4.0.3)
doParallel 1.0.16 2020-10-16 [1] CRAN (R 4.0.3)
dplyr * 1.0.8 2022-02-08 [1] CRAN (R 4.0.3)
DT 0.17 2021-01-06 [1] CRAN (R 4.0.3)
e1071 1.7-6 2021-03-18 [1] CRAN (R 4.0.3)
EBImage * 4.32.0 2020-10-27 [1] Bioconductor
ellipsis 0.3.2 2021-04-29 [1] CRAN (R 4.0.3)
evaluate 0.14 2019-05-28 [1] CRAN (R 4.0.0)
expm 0.999-6 2021-01-13 [1] CRAN (R 4.0.3)
fansi 0.4.2 2021-01-15 [1] CRAN (R 4.0.3)
farver 2.1.0 2021-02-28 [1] CRAN (R 4.0.3)
fastmap 1.1.0 2021-01-25 [1] CRAN (R 4.0.3)
fftwtools 0.9-11 2021-03-01 [1] CRAN (R 4.0.5)
fitdistrplus 1.1-3 2020-12-05 [1] CRAN (R 4.0.3)
foreach 1.5.1 2020-10-15 [1] CRAN (R 4.0.3)
fs 1.5.0 2020-07-31 [1] CRAN (R 4.0.2)
future 1.21.0 2020-12-10 [1] CRAN (R 4.0.3)
future.apply 1.7.0 2021-01-04 [1] CRAN (R 4.0.3)
gdata 2.18.0 2017-06-06 [1] CRAN (R 4.0.0)
gdtools * 0.2.3 2021-01-06 [1] CRAN (R 4.0.3)
generics 0.1.0 2020-10-31 [1] CRAN (R 4.0.3)
getPass 0.2-2 2017-07-21 [1] CRAN (R 4.0.3)
GGally * 2.1.2 2021-06-21 [1] CRAN (R 4.0.3)
ggiraph 0.7.8 2020-07-01 [1] CRAN (R 4.0.3)
ggplot2 * 3.3.5 2021-06-25 [1] CRAN (R 4.0.3)
ggrepel 0.9.1 2021-01-15 [1] CRAN (R 4.0.3)
ggridges 0.5.3 2021-01-08 [1] CRAN (R 4.0.3)
git2r 0.28.0 2021-01-10 [1] CRAN (R 4.0.3)
globals 0.14.0 2020-11-22 [1] CRAN (R 4.0.3)
glue 1.4.2 2020-08-27 [1] CRAN (R 4.0.3)
gmodels 2.18.1 2018-06-25 [1] CRAN (R 4.0.0)
goftest 1.2-2 2019-12-02 [1] CRAN (R 4.0.0)
gridExtra 2.3 2017-09-09 [1] CRAN (R 4.0.0)
gtable 0.3.0 2019-03-25 [1] CRAN (R 4.0.0)
gtools 3.8.2 2020-03-31 [1] CRAN (R 4.0.0)
harmony * 1.0 2021-05-11 [1] Github (immunogenomics/harmony@c8f4901)
hdf5r 1.3.3 2020-08-18 [1] CRAN (R 4.0.3)
highr 0.8 2019-03-20 [1] CRAN (R 4.0.0)
htmltools 0.5.1.1 2021-01-22 [1] CRAN (R 4.0.3)
htmlwidgets 1.5.3 2020-12-10 [1] CRAN (R 4.0.3)
httpuv 1.5.5 2021-01-13 [1] CRAN (R 4.0.3)
httr 1.4.2 2020-07-20 [1] CRAN (R 4.0.2)
ica 1.0-2 2018-05-24 [1] CRAN (R 4.0.0)
igraph 1.2.6 2020-10-06 [1] CRAN (R 4.0.3)
imager * 0.42.8 2021-03-15 [1] CRAN (R 4.0.3)
irlba 2.3.3 2019-02-05 [1] CRAN (R 4.0.0)
iterators 1.0.13 2020-10-15 [1] CRAN (R 4.0.3)
jpeg 0.1-8.1 2019-10-24 [1] CRAN (R 4.0.3)
jquerylib 0.1.3 2020-12-17 [1] CRAN (R 4.0.3)
jsonlite 1.7.2 2020-12-09 [1] CRAN (R 4.0.3)
KernSmooth 2.23-18 2020-10-29 [1] CRAN (R 4.0.3)
knitr 1.31 2021-01-27 [1] CRAN (R 4.0.3)
labeling 0.4.2 2020-10-20 [1] CRAN (R 4.0.3)
later 1.1.0.1 2020-06-05 [1] CRAN (R 4.0.0)
lattice 0.20-41 2020-04-02 [1] CRAN (R 4.0.3)
lazyeval 0.2.2 2019-03-15 [1] CRAN (R 4.0.0)
LearnBayes 2.15.1 2018-03-18 [1] CRAN (R 4.0.0)
leiden 0.3.7 2021-01-26 [1] CRAN (R 4.0.3)
lifecycle 1.0.1 2021-09-24 [1] CRAN (R 4.0.3)
limma 3.46.0 2020-10-27 [1] Bioconductor
listenv 0.8.0 2019-12-05 [1] CRAN (R 4.0.0)
lmtest 0.9-38 2020-09-09 [1] CRAN (R 4.0.3)
locfit 1.5-9.4 2020-03-25 [1] CRAN (R 4.0.3)
magick * 2.7.2 2021-05-02 [1] CRAN (R 4.0.3)
magrittr * 2.0.1 2020-11-17 [1] CRAN (R 4.0.3)
manipulateWidget 0.11.0 2021-05-31 [1] CRAN (R 4.0.3)
MASS 7.3-53.1 2021-02-12 [1] CRAN (R 4.0.3)
Matrix 1.3-2 2021-01-06 [1] CRAN (R 4.0.3)
matrixStats 0.58.0 2021-01-29 [1] CRAN (R 4.0.3)
memoise 2.0.0 2021-01-26 [1] CRAN (R 4.0.3)
mgcv 1.8-34 2021-02-16 [1] CRAN (R 4.0.3)
mime 0.10 2021-02-13 [1] CRAN (R 4.0.3)
miniUI 0.1.1.1 2018-05-18 [1] CRAN (R 4.0.0)
Morpho 2.8 2020-03-09 [1] CRAN (R 4.0.3)
munsell 0.5.0 2018-06-12 [1] CRAN (R 4.0.0)
nlme 3.1-152 2021-02-04 [1] CRAN (R 4.0.3)
parallelly 1.25.0 2021-04-30 [1] CRAN (R 4.0.3)
patchwork * 1.1.1 2020-12-17 [1] CRAN (R 4.0.3)
pbapply 1.4-3 2020-08-18 [1] CRAN (R 4.0.2)
pillar 1.7.0 2022-02-01 [1] CRAN (R 4.0.3)
pkgbuild 1.2.0 2020-12-15 [1] CRAN (R 4.0.3)
pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.0.0)
pkgload 1.2.1 2021-04-06 [1] CRAN (R 4.0.3)
plotly 4.9.3 2021-01-10 [1] CRAN (R 4.0.3)
plyr 1.8.6 2020-03-03 [1] CRAN (R 4.0.0)
png 0.1-7 2013-12-03 [1] CRAN (R 4.0.0)
polyclip 1.10-0 2019-03-14 [1] CRAN (R 4.0.0)
prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.0.0)
processx 3.5.1 2021-04-04 [1] CRAN (R 4.0.3)
promises 1.2.0.1 2021-02-11 [1] CRAN (R 4.0.3)
proxy 0.4-25 2021-03-05 [1] CRAN (R 4.0.3)
ps 1.6.0 2021-02-28 [1] CRAN (R 4.0.3)
purrr 0.3.4 2020-04-17 [1] CRAN (R 4.0.0)
R6 2.5.0 2020-10-28 [1] CRAN (R 4.0.3)
RANN 2.6.1 2019-01-08 [1] CRAN (R 4.0.0)
raster * 3.4-10 2021-05-03 [1] CRAN (R 4.0.3)
RColorBrewer 1.1-2 2014-12-07 [1] CRAN (R 4.0.3)
Rcpp * 1.0.6 2021-01-15 [1] CRAN (R 4.0.3)
RcppAnnoy 0.0.18 2020-12-15 [1] CRAN (R 4.0.3)
RCurl 1.98-1.3 2021-03-16 [1] CRAN (R 4.0.3)
readbitmap 0.1.5 2018-06-27 [1] CRAN (R 4.0.3)
remotes 2.3.0 2021-04-01 [1] CRAN (R 4.0.3)
reshape 0.8.8 2018-10-23 [1] CRAN (R 4.0.3)
reshape2 1.4.4 2020-04-09 [1] CRAN (R 4.0.0)
reticulate 1.18 2020-10-25 [1] CRAN (R 4.0.3)
rgl 0.105.22 2021-03-04 [1] CRAN (R 4.0.3)
rlang 1.0.1 2022-02-03 [1] CRAN (R 4.0.3)
rmarkdown 2.7 2021-02-19 [1] CRAN (R 4.0.3)
ROCR 1.0-11 2020-05-02 [1] CRAN (R 4.0.0)
rpart 4.1-15 2019-04-12 [1] CRAN (R 4.0.3)
rprojroot 2.0.2 2020-11-15 [1] CRAN (R 4.0.3)
rsconnect 0.8.17 2021-04-09 [1] CRAN (R 4.0.3)
RSpectra 0.16-0 2019-12-01 [1] CRAN (R 4.0.0)
rstudioapi 0.13 2020-11-12 [1] CRAN (R 4.0.3)
Rtsne 0.15 2018-11-10 [1] CRAN (R 4.0.0)
Rvcg 0.19.2 2021-01-11 [1] CRAN (R 4.0.3)
sass 0.3.1 2021-01-24 [1] CRAN (R 4.0.3)
scales 1.1.1 2020-05-11 [1] CRAN (R 4.0.3)
scattermore 0.7 2020-11-24 [1] CRAN (R 4.0.3)
sctransform 0.3.2 2020-12-16 [1] CRAN (R 4.0.3)
sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 4.0.0)
Seurat * 4.0.2 2021-06-21 [1] Github (lldelisle/seurat@af2925c)
SeuratObject * 4.0.0 2021-01-15 [1] CRAN (R 4.0.3)
sf 0.9-8 2021-03-17 [1] CRAN (R 4.0.3)
shiny * 1.6.0 2021-01-25 [1] CRAN (R 4.0.3)
shinyjs 2.0.0 2020-09-09 [1] CRAN (R 4.0.3)
sp * 1.4-5 2021-01-10 [1] CRAN (R 4.0.3)
spatstat.core 2.3-0 2021-07-16 [1] CRAN (R 4.0.3)
spatstat.data 2.1-0 2021-03-21 [1] CRAN (R 4.0.3)
spatstat.geom 2.3-0 2021-10-09 [1] CRAN (R 4.0.3)
spatstat.sparse 2.0-0 2021-03-16 [1] CRAN (R 4.0.3)
spatstat.utils 2.2-0 2021-06-14 [1] CRAN (R 4.0.3)
spData 0.3.8 2020-07-03 [1] CRAN (R 4.0.2)
spdep 1.1-7 2021-04-03 [1] CRAN (R 4.0.3)
stringi 1.5.3 2020-09-09 [1] CRAN (R 4.0.3)
stringr 1.4.0 2019-02-10 [1] CRAN (R 4.0.0)
STutility * 0.1.0 2022-02-28 [1] local
survival 3.2-10 2021-03-16 [1] CRAN (R 4.0.3)
systemfonts 1.0.1 2021-02-09 [1] CRAN (R 4.0.3)
tensor 1.5 2012-05-05 [1] CRAN (R 4.0.0)
testthat 3.0.2 2021-02-14 [1] CRAN (R 4.0.3)
tibble 3.1.6 2021-11-07 [1] CRAN (R 4.0.3)
tidyr * 1.2.0 2022-02-01 [1] CRAN (R 4.0.3)
tidyselect 1.1.1 2021-04-30 [1] CRAN (R 4.0.3)
tiff 0.1-8 2021-03-31 [1] CRAN (R 4.0.3)
units 0.7-1 2021-03-16 [1] CRAN (R 4.0.3)
usethis 2.0.1 2021-02-10 [1] CRAN (R 4.0.2)
utf8 1.2.1 2021-03-12 [1] CRAN (R 4.0.3)
uuid 0.1-4 2020-02-26 [1] CRAN (R 4.0.0)
uwot 0.1.10 2020-12-15 [1] CRAN (R 4.0.3)
vctrs 0.3.8 2021-04-29 [1] CRAN (R 4.0.3)
viridis 0.6.1 2021-05-11 [1] CRAN (R 4.0.3)
viridisLite 0.4.0 2021-04-13 [1] CRAN (R 4.0.3)
whisker 0.4 2019-08-28 [1] CRAN (R 4.0.0)
withr 2.4.1 2021-01-26 [1] CRAN (R 4.0.3)
workflowr * 1.7.0 2021-12-21 [1] CRAN (R 4.0.3)
xfun 0.20 2021-01-06 [1] CRAN (R 4.0.3)
xtable 1.8-4 2019-04-21 [1] CRAN (R 4.0.0)
yaml 2.2.1 2020-02-01 [1] CRAN (R 4.0.3)
zeallot 0.1.0 2018-01-28 [1] CRAN (R 4.0.3)
zoo 1.8-9 2021-03-09 [1] CRAN (R 4.0.3)
[1] /Users/ludviglarsson/anaconda3/envs/R4.0/lib/R/library
V ── Loaded and on-disk version mismatch.
A work by Joseph Bergenstråhle and Ludvig Larsson
sessionInfo()
R version 4.0.3 (2020-10-10)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: macOS Mojave 10.14.6
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Users/ludviglarsson/anaconda3/envs/R4.0/lib/libopenblasp-r0.3.12.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] workflowr_1.7.0 STutility_0.1.0 raster_3.4-10 sp_1.4-5 magick_2.7.2 gdtools_0.2.3
[7] shiny_1.6.0 EBImage_4.32.0 imager_0.42.8 harmony_1.0 Rcpp_1.0.6 patchwork_1.1.1
[13] GGally_2.1.2 tidyr_1.2.0 dplyr_1.0.8 magrittr_2.0.1 ggplot2_3.3.5 SeuratObject_4.0.0
[19] Seurat_4.0.2
loaded via a namespace (and not attached):
[1] utf8_1.2.1 reticulate_1.18 tidyselect_1.1.1 htmlwidgets_1.5.3 grid_4.0.3
[6] Rtsne_0.15 devtools_2.4.0 munsell_0.5.0 codetools_0.2-18 ica_1.0-2
[11] units_0.7-1 DT_0.17 future_1.21.0 miniUI_0.1.1.1 withr_2.4.1
[16] colorspace_2.0-0 highr_0.8 knitr_1.31 uuid_0.1-4 rstudioapi_0.13
[21] ROCR_1.0-11 tensor_1.5 listenv_0.8.0 labeling_0.4.2 git2r_0.28.0
[26] polyclip_1.10-0 bit64_4.0.5 farver_2.1.0 rprojroot_2.0.2 coda_0.19-4
[31] parallelly_1.25.0 LearnBayes_2.15.1 vctrs_0.3.8 generics_0.1.0 xfun_0.20
[36] R6_2.5.0 doParallel_1.0.16 locfit_1.5-9.4 Morpho_2.8 hdf5r_1.3.3
[41] ggiraph_0.7.8 manipulateWidget_0.11.0 cachem_1.0.4 bitops_1.0-7 spatstat.utils_2.2-0
[46] reshape_0.8.8 assertthat_0.2.1 promises_1.2.0.1 scales_1.1.1 gtable_0.3.0
[51] globals_0.14.0 processx_3.5.1 bmp_0.3 goftest_1.2-2 rlang_1.0.1
[56] zeallot_0.1.0 akima_0.6-2.1 systemfonts_1.0.1 splines_4.0.3 lazyeval_0.2.2
[61] spatstat.geom_2.3-0 rgl_0.105.22 yaml_2.2.1 reshape2_1.4.4 abind_1.4-5
[66] crosstalk_1.1.1 rsconnect_0.8.17 httpuv_1.5.5 usethis_2.0.1 tools_4.0.3
[71] spData_0.3.8 ellipsis_0.3.2 spatstat.core_2.3-0 jquerylib_0.1.3 RColorBrewer_1.1-2
[76] proxy_0.4-25 BiocGenerics_0.36.0 sessioninfo_1.1.1 Rvcg_0.19.2 ggridges_0.5.3
[81] plyr_1.8.6 classInt_0.4-3 purrr_0.3.4 RCurl_1.98-1.3 prettyunits_1.1.1
[86] ps_1.6.0 rpart_4.1-15 dbscan_1.1-6 deldir_1.0-6 pbapply_1.4-3
[91] viridis_0.6.1 cowplot_1.1.1 zoo_1.8-9 ggrepel_0.9.1 cluster_2.1.1
[96] fs_1.5.0 colorRamps_2.3 data.table_1.14.0 RSpectra_0.16-0 scattermore_0.7
[101] readbitmap_0.1.5 gmodels_2.18.1 lmtest_0.9-38 RANN_2.6.1 whisker_0.4
[106] fitdistrplus_1.1-3 matrixStats_0.58.0 pkgload_1.2.1 evaluate_0.14 shinyjs_2.0.0
[111] mime_0.10 fftwtools_0.9-11 xtable_1.8-4 jpeg_0.1-8.1 gridExtra_2.3
[116] testthat_3.0.2 compiler_4.0.3 tibble_3.1.6 KernSmooth_2.23-18 crayon_1.4.1
[121] htmltools_0.5.1.1 mgcv_1.8-34 later_1.1.0.1 spdep_1.1-7 tiff_0.1-8
[126] expm_0.999-6 DBI_1.1.1 MASS_7.3-53.1 sf_0.9-8 boot_1.3-27
[131] Matrix_1.3-2 cli_3.1.1 gdata_2.18.0 parallel_4.0.3 igraph_1.2.6
[136] pkgconfig_2.0.3 getPass_0.2-2 plotly_4.9.3 spatstat.sparse_2.0-0 foreach_1.5.1
[141] bslib_0.2.4 callr_3.7.0 stringr_1.4.0 digest_0.6.27 sctransform_0.3.2
[146] RcppAnnoy_0.0.18 spatstat.data_2.1-0 rmarkdown_2.7 leiden_0.3.7 uwot_0.1.10
[151] gtools_3.8.2 lifecycle_1.0.1 nlme_3.1-152 jsonlite_1.7.2 limma_3.46.0
[156] desc_1.3.0 viridisLite_0.4.0 fansi_0.4.2 pillar_1.7.0 lattice_0.20-41
[161] pkgbuild_1.2.0 fastmap_1.1.0 httr_1.4.2 survival_3.2-10 remotes_2.3.0
[166] glue_1.4.2 png_0.1-7 iterators_1.0.13 bit_4.0.4 sass_0.3.1
[171] class_7.3-18 stringi_1.5.3 memoise_2.0.0 irlba_2.3.3 e1071_1.7-6
[176] future.apply_1.7.0