The MouseGastrulationData package provides convenient access to various -omics datasets from mouse gastrulation and organogeneis.
These datasets are provided in a highly annotated format, so can be used very easily to probe different biological questions, or for methods development.
The primary datasets are the single-cell RNA sequencing (scRNA-seq) datasets from Pijuan-Sala et al. (2019) and Guibentif et al. (n.d.).
These include an atlas of embryonic development (EmbryoAtlasData()
) with high sampling density across time, alongside chimaera experiments, that include gene knockouts in an in vivo system.
These Datasets are provided as count matrices with additional feature- and sample-level metadata after processing.
Raw sequencing data can be acquired from ArrayExpress accession E-MTAB-6967 for the atlas.
In addition, the package also provides single-nucleus ATAC-seq data from E8.25 embryos (Pijuan-Sala et al. (2020)), and seqFISH (i.e. spatial transcriptomic) data from E8.5 embryos (Lohoff et al. (2020)).
The package may be installed from Bioconductor. Bioconductor packages can be accessed using the BiocManager package.
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("MouseGastrulationData")
Bioconductor devel includes the most recent datasets and changes to the package. Instructions for installation of Bioconductor devel are available on their website.
To use the package, load it in the typical way.
library(MouseGastrulationData)
Detailed methods are available in the methods that accompany the paper, or from the code in the corresponding Github repository. Briefly, whole embryos were dissociated at timepoints between embryonic days (E) 6.5 and 8.5 of development. Libraries were generated using the 10x Genomics Chromium platform (v1 chemistry) and sequenced on the Illumina HiSeq 2500. The computational analysis involved a number of steps:
swappedDrops()
function from DropletUtils (Griffiths et al. 2018).emptyDrops()
function from DropletUtils (Lun et al. 2019).computeSumFactors()
function from scran (Lun, Bach, and Marioni 2016).doubletCells()
function from scran.fastMNN()
from scran (Haghverdi et al. 2018).buildSNNGraph()
(from scran)
and cluster_louvain
(from igraph), and were annotated and merged into interpretable units by hand.The data accessible via this package is stored in subsets according to the different 10x samples that were generated.
For the embryo atlas, the exported object AtlasSampleMetadata
provides metadata information for each of the samples.
Descriptions of the contents of each column can be accessed using ?AtlasSampleMetadata
.
head(AtlasSampleMetadata, n = 3)
## sample stage pool_index seq_batch ncells
## 1 1 E6.5 1 1 360
## 2 2 E7.5 2 1 356
## 3 3 E7.5 3 1 458
All data access functions allow you to select the particular samples you would like to access. By loading only the samples that you are interested in for your particular analysis, you will save time when downloading and loading the data, and also reduce memory consumption on your machine.
The package provides the dataset in the form of a SingleCellExperiment
object.
This section details how you can interact with the object.
We load in only one of the samples from the atlas to reduce memory consumption when compiling this vignette.
sce <- EmbryoAtlasData(samples = 21)
sce
## class: SingleCellExperiment
## dim: 29452 4651
## metadata(0):
## assays(1): counts
## rownames(29452): ENSMUSG00000051951 ENSMUSG00000089699 ...
## ENSMUSG00000096730 ENSMUSG00000095742
## rowData names(2): ENSEMBL SYMBOL
## colnames(4651): cell_52466 cell_52467 ... cell_57115 cell_57116
## colData names(17): cell barcode ... colour sizeFactor
## reducedDimNames(2): pca.corrected umap
## mainExpName: NULL
## altExpNames(0):
We use the counts()
function to retrieve the count matrix.
These are stored as a sparse matrix, as implemented in the Matrix package.
counts(sce)[6:9, 1:3]
## 4 x 3 sparse Matrix of class "dgTMatrix"
## cell_52466 cell_52467 cell_52468
## ENSMUSG00000104328 . . .
## ENSMUSG00000033845 6 8 10
## ENSMUSG00000025903 . . .
## ENSMUSG00000104217 . . .
Size factors for normalisation are present in the object and are accessed with the sizeFactors()
function.
head(sizeFactors(sce))
## [1] 0.8845695 1.4688375 1.2512019 0.8287969 1.3668086 0.9247460
After running scuttle’s logNormCounts
function on the SingleCellExperiment object, normalised or log-transformed counts can be accessed using logcounts
(or, if log=FALSE
, normcounts
).
These are not demonstrated in this vignette to avoid a dependency on scuttle.
The MGI symbol and Ensembl gene ID for each gene is stored in the rowData
of the SingleCellExperiment
object.
All of this data was processed with Ensembl 92 annotation.
head(rowData(sce))
## DataFrame with 6 rows and 2 columns
## ENSEMBL SYMBOL
## <character> <character>
## ENSMUSG00000051951 ENSMUSG00000051951 Xkr4
## ENSMUSG00000089699 ENSMUSG00000089699 Gm1992
## ENSMUSG00000102343 ENSMUSG00000102343 Gm37381
## ENSMUSG00000025900 ENSMUSG00000025900 Rp1
## ENSMUSG00000025902 ENSMUSG00000025902 Sox17
## ENSMUSG00000104328 ENSMUSG00000104328 Gm37323
The colData
contains cell-specific attributes.
The meaning of each field is detailed in the function documentation (?EmbryoAtlasData
).
head(colData(sce))
## DataFrame with 6 rows and 17 columns
## cell barcode sample pool stage
## <character> <character> <integer> <integer> <character>
## cell_52466 cell_52466 AAACATACACGGAG 21 17 mixed_gastrulation
## cell_52467 cell_52467 AAACATACCCAACA 21 17 mixed_gastrulation
## cell_52468 cell_52468 AAACATACTTGCGA 21 17 mixed_gastrulation
## cell_52469 cell_52469 AAACATTGATCGGT 21 17 mixed_gastrulation
## cell_52470 cell_52470 AAACATTGCTTATC 21 17 mixed_gastrulation
## cell_52471 cell_52471 AAACATTGGTTCGA 21 17 mixed_gastrulation
## sequencing.batch theiler doub.density doublet cluster
## <integer> <character> <numeric> <logical> <integer>
## cell_52466 2 TS9-10 0.0315539 FALSE 14
## cell_52467 2 TS9-10 0.1362419 FALSE 3
## cell_52468 2 TS9-10 0.7468976 FALSE 2
## cell_52469 2 TS9-10 0.2704532 FALSE 1
## cell_52470 2 TS9-10 0.2226039 FALSE 19
## cell_52471 2 TS9-10 0.3261519 FALSE 5
## cluster.sub cluster.stage cluster.theiler stripped
## <integer> <integer> <integer> <logical>
## cell_52466 2 5 5 FALSE
## cell_52467 6 12 12 FALSE
## cell_52468 3 3 3 FALSE
## cell_52469 3 1 1 FALSE
## cell_52470 1 5 5 FALSE
## cell_52471 1 4 4 FALSE
## celltype colour sizeFactor
## <character> <character> <numeric>
## cell_52466 Blood progenitors 2 c9a997 0.884569
## cell_52467 ExE ectoderm 989898 1.468838
## cell_52468 Epiblast 635547 1.251202
## cell_52469 Rostral neurectoderm 65A83E 0.828797
## cell_52470 Haematoendothelial p.. FBBE92 1.366809
## cell_52471 Nascent mesoderm C594BF 0.924746
Batch-corrected PCA representations of the data are available via the reducedDim
function, in the pca.corrected
slot.
This representation contains NA
values for cells that are doublets, or cytoplasm-stripped nuclei.
A vector of celltype colours (as used in the paper) is also provided in the exported object EmbryoCelltypeColours
.
Its use is shown below.
#exclude technical artefacts
singlets <- which(!(colData(sce)$doublet | colData(sce)$stripped))
plot(
x = reducedDim(sce, "umap")[singlets, 1],
y = reducedDim(sce, "umap")[singlets, 2],
col = EmbryoCelltypeColours[colData(sce)$celltype[singlets]],
pch = 19,
xaxt = "n", yaxt = "n",
xlab = "UMAP1", ylab = "UMAP2"
)