suppressPackageStartupMessages({ library(Seurat) library(patchwork) library(Matrix) library(ggplot2) library(dplyr) library(scales) library(RColorBrewer) }) ### figure Supplement 8-1 # Mapping and annotating human query dataset with mouse as ref dataset # ref: mouse intact-only mDA territories # query: human control mDA from SNpc # load the two datasets MmDA <- readRDS('/path/to/dir/MmDA.rds') HsDA <- readRDS('/path/to/dir/HsDA.rds') HsDA <-SetIdent(HsDA, value = 'Status') MmDA <-SetIdent(MmDA, value = 'Status') # subset control from human and intact from mouse datasets. HsDA <- subset(HsDA, idents = 'Ctrl') MmDA <- subset(MmDA, idents = 'intact') HsDA <- NormalizeData(HsDA, normalization.method = "LogNormalize", scale.factor = 10000) HsDA <- ScaleData(HsDA) # for mouse data, rename territories & unassigned clusters # based on being dopaminergic or non-dopaminergic (nonmDA) # subset only the dopaminergic ones MmDA <-SetIdent(MmDA, value = 'territory') unique(levels(MmDA$territory)) MmDA$TER <- plyr::mapvalues( x = MmDA$territory, from = c("ML", "Gad2", "Fbn2", "Pcsk6", "Pdia5", "Ebf1", "Otx2", "mODC", "Sox6", "Lef1", "HPT", "Vglut1", "36", "35", "STN_Vglut2", "GABA", "51" ), to = c("ML", "Gad2", "Fbn2", "Pcsk6", "Pdia5", "Ebf1", "Otx2", "nonmDA", "Sox6", "nonmDA", "nonmDA", "nonmDA", "nonmDA", "nonmDA", "nonmDA", "nonmDA", "nonmDA")) MmDA <-SetIdent(MmDA, value = 'TER') MmDA <- subset(MmDA, idents = 'nonmDA', invert=T) MmDA <- NormalizeData(MmDA, normalization.method = "LogNormalize", scale.factor = 10000) MmDA <- FindVariableFeatures(MmDA, selection.method = "vst", nfeatures = 2000) MmDA <- ScaleData(MmDA) MmDA <- RunPCA(MmDA, npcs = 50, verbose = F) ElbowPlot(MmDA, reduction = "pca", ndims = 50) + ggtitle("MmDA intact non-mDA TERs removed") ### Unimodal UMAP Projection # enable projection of a query onto the reference UMAP structure. MmDA <- RunUMAP(MmDA, dims = 1:30, reduction = "pca", return.model = TRUE) myanchors <- FindTransferAnchors(reference = MmDA, query = HsDA, dims = 1:30, k.anchor = 5, k.filter = NA, reference.reduction = "pca") HsDA <- MapQuery(anchorset = myanchors, reference = MmDA, query = HsDA, refdata = MmDA$TER , reference.reduction = "pca", reduction.model = "umap") tiff(file = "/path/to/dir/figS8a.tiff", units="cm", width=50, height=25, res=300) p1 <- DimPlot(MmDA, reduction = "umap", group.by = "TER", label = F) + coord_fixed() + ggtitle("Reference territory annotations") + theme(legend.text = element_text(size = 18, face = 'bold')) + guides(colour = guide_legend(override.aes = list(size=9, alpha = 1))) p1 <- LabelClusters(p1, id = 'TER', fontface = 'bold', size = 6, repel = T) p1 dev.off() tiff(file = "/path/to/dir/figS8b.tiff", units="cm", width=50, height=25, res=300) p2 <- DimPlot(HsDA, reduction = "ref.umap", group.by = "predicted.id", label = F, order = 'Sox6') + coord_fixed() + ggtitle("Query transferred labels") + theme(legend.text = element_text(size = 18, face = 'bold')) + guides(colour = guide_legend(override.aes = list(size=9, alpha = 1))) p2 <- LabelClusters(p2, id = 'predicted.id', fontface = 'bold', size = 6, repel = T) p2 dev.off() HsDA <- SetIdent(HsDA, value = 'predicted.id') tiff(file = "/path/to/dir/figS8.tiff", units="cm", width=25, height=25, res=300) DimPlot(HsDA, reduction = "ref.umap", split.by = "predicted.id", label = F, cols = c('Sox6'='#FF61CC', 'Gad2'='#CD9600', 'Otx2'='#C77CFF', 'Pdia5'='#00BFC4'), ncol = 2) + coord_fixed() + ggtitle("Query transferred labels") + theme(legend.text = element_text(size = 18, face = 'bold'), strip.text.x = element_text(size = 18, face = "bold") ) + guides(colour = guide_legend(override.aes = list(size=9, alpha = 1))) dev.off() # figure supplement 8-1 D pie chart of human query nuclei with mouse label transferred tb1 <- table(HsDA$predicted.id ) lbls <- paste(names(tb1), "\n", tb1, sep="") tiff(file = "/path/to/dir/figS8D.tiff", units="cm", width=25, height=25, res=300) pie(tb1, labels = lbls, col = c('Gad2'='#CD9600', 'Otx2'='#C77CFF', 'Pdia5'='#00BFC4', 'Sox6'='#FF61CC'), main="Pie Chart of Human control\n (per mouse mDA territory sizes)", cex = 2) dev.off() ## subset only sox6 labeled human nuclei as query, and mouse Sox6 neighborhoods as reference. # ref: mouse intact only Sox6 neighborhoods # query: human control only Sox6-TER labeled nuclei # 1. human query: Sox6 labeled transferred HsDA <-SetIdent(HsDA, value = 'predicted.id') hssox6 <- subset(HsDA, idents = 'Sox6') hssox6[['prediction.score.id']] <- NULL hssox6[['ref.pca']] <- NULL hssox6[['ref.umap']] <- NULL # 2. mouse ref: Sox6 territory MmDA <-SetIdent(MmDA, value = 'TER') mmsox6 <- subset(MmDA, idents = 'Sox6') mmsox6 <- NormalizeData(mmsox6, normalization.method = "LogNormalize", scale.factor = 10000) mmsox6 <- FindVariableFeatures(mmsox6, selection.method = "vst", nfeatures = 2000) mmsox6 <- ScaleData(mmsox6) mmsox6 <- RunPCA(mmsox6, npcs = 50, verbose = F) ### Unimodal UMAP Projection mmsox6 <- RunUMAP(mmsox6, dims = 1:30, reduction = "pca", return.model = TRUE) myanchors <- FindTransferAnchors(reference = mmsox6, query = hssox6, dims = 1:30, reference.reduction = "pca", k.filter = NA) hssox6 <- MapQuery(anchorset = myanchors, reference = mmsox6, query = hssox6, refdata = mmsox6$neighborhood, reference.reduction = "pca", reduction.model = "umap") p1 <- DimPlot(mmsox6, reduction = "umap", group.by = "neighborhood", label = TRUE, label.size = 5, repel = TRUE) + coord_fixed() + ggtitle("Reference neighborhood annotations") p2 <- DimPlot(hssox6, reduction = "ref.umap", group.by = "predicted.id", label = TRUE, label.size = 5, repel = T) + coord_fixed() + ggtitle("Query transferred labels") p1 + p2 hssox6 <- SetIdent(hssox6, value = 'predicted.id') DimPlot(hssox6, reduction = "ref.umap", split.by = "predicted.id", label = F, cols = c('Sox6_NH1'='#F8766D', 'Sox6_NH2'='#C77CFF', 'Sox6_NH4'='#7CAE00', 'Sox6_NH3'='#00BFC4'), ncol = 2) + coord_fixed() + ggtitle("Query transferred labels") + theme(legend.text = element_text(size = 18, face = 'bold'), strip.text.x = element_text(size = 18, face = "bold") ) + guides(colour = guide_legend(override.aes = list(size=9, alpha = 1))) mmsox6 <- SetIdent(mmsox6, value = 'neighborhood') DimPlot(mmsox6, reduction = "umap", split.by = "neighborhood", label = F, label.size = 5, cols = c('Sox6_NH1'='#F8766D', 'Sox6_NH2'='#C77CFF', 'Sox6_NH4'='#7CAE00', 'Sox6_NH3'='#00BFC4'), ncol = 2) + coord_fixed() + ggtitle("Ref Sox6_NH") # Pie Chart tb1 <- table(hssox6$predicted.id ) lbls <- paste(names(tb1), "\n", tb1, sep="") pie(tb1, labels = lbls, main="Pie Chart of Human control\n (per mouse mDA territory sizes)") print(sessionInfo())