Esr1-dependent signaling and transcriptional maturation in the medial preoptic area of the hypothalamus shape the development of mating behavior during adolescence.
The 9 matches
- [1] § Materials and methods › DEG and trajectory analysis of scRNAseq in Esr1KO experiments ↔ Integrating Esr1KOM and MPOA scRNAseq Fig4.ipynb, lines 285 to 291 · score 0.81 · eVgat9, eVgat3, eVgat4, eVgat5, eVgat1, scRNAseq · Report a mismatch
- [2] § Materials and methods › Integrative clustering and differential gene expression analysis ↔ Integrating Esr1KOF and MPOA scRNAseq Fig4.ipynb, lines 26 to 37 · score 0.74 · RunUMAP, FindClusters, FindNeighbors, PCA, resolution, clustering · Report a mismatch
- [3] § Materials and methods › Integrative clustering and differential gene expression analysis ↔ Integrating Esr1KOM and MPOA scRNAseq Fig4.ipynb, lines 20 to 31 · score 0.74 · RunUMAP, FindClusters, FindNeighbors, PCA, resolution, clustering · Report a mismatch
- [4] § Materials and methods › Integrative clustering and differential gene expression analysis ↔ 210726 doublet_removal_only_paper.ipynb, lines 13 to 144 · score 0.64 · FindVariableFeatures, NormalizeData, transformation, Seurat, neighbor, matrix · Report a mismatch
- [5] § Materials and methods › Integrative analysis of MERFISH and scRNAseq data ↔ 210726 doublet_removal_only_paper.ipynb, lines 13 to 144 · score 0.60 · FindVariableFeatures, NormalizeData, POA, Seurat, clusters, V3 · Report a mismatch
- [6] § Materials and methods › Integrative clustering and differential gene expression analysis ↔ Integrating Esr1KOF and MPOA scRNAseq Fig4.ipynb, lines 26 to 37 · score 0.59 · FindVariableFeatures, NormalizeData, scores, neighbor, clustering · Report a mismatch
- [7] § Materials and methods › DEG and trajectory analysis of scRNAseq in Esr1KO experiments ↔ Integrating Esr1KOM and MPOA scRNAseq Fig4.ipynb, lines 597 to 622 · score 0.59 · eMix1, eVgat1, Esr1KOM, clustering, V3, cells · Report a mismatch
- [8] § Materials and methods › DEG and trajectory analysis of scRNAseq in Esr1KO experiments ↔ Integrating Esr1KOF and MPOA scRNAseq Fig4.ipynb, lines 65 to 71 · score 0.58 · eMix1, eVgat1, Esr1KOF, V3 · Report a mismatch
- [9] § Results › Transcriptional dynamics of MPOA cell types during adolescent development ↔ MPOA_log_neurons_basic_figures_UMAP_Propotion_Disc_violin_correlation_Fig2.ipynb, lines 649 to 663 · score 0.50 · androgen receptor, steroid hormone receptor, AR, Neurons, gene, MPOA · Report a mismatch
Paper
Loaded from Europe PMC by your browser; OSCR does not store it: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
Jupyter notebook · 731 lines · 43 KB · MIT · 3 matches
- # %%
- library(Seurat)
- library(dplyr)
- library(magrittr)
- IRdisplay::display_html("<style> .container { width:95% !important; } </style>")
- library("xlsx")
- #library(mgsa)
- library("ggplot2")# note that Seurat v3, they return ggplot object for easy customization
- library(parallel)
- library(scales)
- # %%
- Esr1KOM.data <-Read10X(data.dir = "/media/garret/New Volume/scRNAseq_data/backupv3/v3/Esr1KO_M/01_analysis/cellranger_count_v2/P50Esr1KO/raw_feature_bc_matrix")
- colnames(Esr1KOM.data) = paste0(colnames(Esr1KOM.data),"Esr1KOM")
- Esr1KOM<- CreateSeuratObject(counts = Esr1KOM.data, min.cells = 3, min.features = 200, project = "10X_MPOA")
- Neuron_id<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/all_cells/Neuron_bid.rds")
- Esr1KOM<-subset(x = Esr1KOM, cells=Neuron_id)
- [email hidden]$stim <- "Esr1KOM"
- # %%
- Esr1KOM<- NormalizeData(object = Esr1KOM,verbose = FALSE)
- Esr1KOM<- FindVariableFeatures(object =Esr1KOM,selection.method = "vst", nfeatures = 2000, verbose = FALSE)
- Esr1KOM<- ScaleData(object = Esr1KOM, features = rownames(x =Esr1KOM))
- Esr1KOM<- RunPCA(object = Esr1KOM, features = VariableFeatures(object =Esr1KOM), verbose = FALSE)
- Esr1KOM <- JackStraw(object =Esr1KOM, num.replicate = 100)
- Esr1KOM <- ScoreJackStraw(object = Esr1KOM, dims = 1:20)
- JackStrawPlot(object = Esr1KOM, dims = 1:20)
- ElbowPlot(object =Esr1KOM)
- Esr1KOM <- FindNeighbors(object =Esr1KOM, dims = 1:30)
- Esr1KOM <- FindClusters(object = Esr1KOM, resolution = 0.8)
- Esr1KOM<- RunUMAP(object = Esr1KOM, reduction = "pca", dims = 1:30)
- # %%
- DefaultAssay(Esr1KOM) <- "RNA"
- # %%
- FeaturePlot(object =Esr1KOM, features = c("Slc32a1"),order=TRUE)
- ggsave(file="/media/garret/New Volume/paper submission/MPOA_Science/Revision_Figures/raw/disc_Esr1KOM_all_#rev3_com#feature_Vgat.pdf",width=10,height=10)
- # %%
- FeaturePlot(object =Esr1KOM, features = c("Slc17a6"),order=TRUE)
- ggsave(file="/media/garret/New Volume/paper submission/MPOA_Science/Revision_Figures/raw/disc_Esr1KOM_all_#rev3_com#feature_Vglu.pdf",width=10,height=10)
- # %%
- saveRDS(Esr1KOM,file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/Esr1KOM.rds")
- # %%
- Esr1KOM<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/Esr1KOM.rds")
- new.ident <- c("Mix1","Vgat1","Vglu1","Vgat2","Vgat3","Vgat4","Vglu2","Vglu3","Vgat5","Vgat6","Vgat7","Vgat8","Vgat9","Mix2","Vgat10","Vglu4","Vgat11","Vglu5","Vgat12","Vglu6","Ambiguous")
- names(x = new.ident) <- levels(x =Esr1KOM)
- Esr1KOM<- RenameIdents(object =Esr1KOM, new.ident)
- for (i in 1:length(new.ident)){
- assign(paste(new.ident[i],"_barcode",sep=""),colnames(Esr1KOM@assays$RNA@data[,which(Idents(object=Esr1KOM) %in% new.ident[i])]))}
- # %%
- DimPlot(object = Esr1KOM, reduction = "umap", label = TRUE, repel = TRUE)
- ggsave(file="/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/umap_name.pdf",width=10,height=10)
- # %%
- violin/disc
- # %%
- #start from here
- Esr1KOM<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/Esr1KOM.rds")
- new.ident <- c("eMix1","eVgat1","eVglu1","eVgat2","eVgat3","eVgat4","eVglu2","eVglu3","eVgat5","eVgat6","eVgat7","eVgat8","eVgat9","eMix2","eVgat10","eVglu4","eVgat11","eVglu5","eVgat12","eVglu6","eAmbiguous")
- names(x = new.ident) <- levels(x =Esr1KOM)
- Esr1KOM<- RenameIdents(object =Esr1KOM, new.ident)
- for (i in 1:length(new.ident)){
- assign(paste(new.ident[i],"_barcode",sep=""),colnames(Esr1KOM@assays$RNA@data[,which(Idents(object=Esr1KOM) %in% new.ident[i])]))}
- # %%
- # UMI, gene, fraction, UMAP
- # %%
- [email hidden]$celltype<-Idents(Esr1KOM)
- Celltype<-c("eVgat1","eVgat2","eVgat3","eVgat4","eVgat5","eVgat6","eVgat7","eVgat8","eVgat9","eVgat10","eVgat11","eVgat12","eVglu1","eVglu2","eVglu3","eVglu4","eVglu5","eVglu6","eMix1","eMix2")
- Esr1KOM<-subset(Esr1KOM,cells=rownames([email hidden])[[email hidden]$celltype %in% Celltype])
- [email hidden]$celltype<-factor([email hidden]$celltype,levels=Celltype)
- Idents(Esr1KOM)<-factor(Idents(Esr1KOM),levels=Celltype)
- # %%
- #colors<-rep("cyan4",length(unique([email hidden]$celltype)))
- # %%
- colors<-color<-c("lightblue","lightskyblue","skyblue","deepskyblue","lightsteelblue",
- "dodgerblue","cornflowerblue","steelblue","cadetblue","mediumslateblue",
- "slateblue","darkslateblue","lightsalmon","salmon","darksalmon","lightcoral","indianred",
- "#DC143C","darkgray","dimgray")
- # %%
- #UMAP
- DimPlot(object = Esr1KOM, reduction = "umap", label = FALSE, repel = TRUE,cols=color)
- ggsave(file="/media/garret/New Volume/paper submission/MPOA_Science/Revision_Figures/raw/Esr1KOM_neuron_umap_name_rec#3com#4.pdf",width=10,height=10)
- # %%
- #UMI
- ggplot([email hidden],aes_string(x="celltype",y="nCount_RNA",fill="celltype"))+geom_violin(scale = "width")+scale_fill_manual(values=colors)+
- stat_summary(fun.y=median, geom="point", size=0.6, color="red")+ylab("UMI")+
- theme(axis.title.x=element_blank(),
- ,axis.text.y=element_text(size=12,color="black"),axis.title.y=element_text(size=20,angle=90,color="black",margin = margin(t = 10, r = 8, b = 0, l = 10),vjust=0.5),axis.text.x=element_text(size=12,h=0.5,v=0.5,angle=50,color="black")
- ,axis.title=element_text(size=15,face="bold"),panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
- panel.background = element_blank(), axis.line = element_line(colour = "black"),legend.position="none",plot.margin = unit(c(1, 0,0, 0), "cm"))
- ggsave(file="/media/garret/New Volume/paper submission/MPOA_Science/Revision_Figures/raw/Esr1KOM_UMI_neuroncelltype_rev#3com4.pdf",height=2, width=10 , paper = "letter")
- # %%
- #gene
- ggplot([email hidden],aes_string(x="celltype",y="nFeature_RNA",fill="celltype"))+geom_violin(scale = "width")+scale_fill_manual(values=colors)+
- stat_summary(fun.y=median, geom="point", size=0.6, color="red")+ylab("gene")+
- theme(axis.title.x=element_blank(),
- ,axis.text.y=element_text(size=12,color="black"),axis.title.y=element_text(size=20,angle=90,color="black",margin = margin(t = 10, r = 8, b = 0, l = 10),vjust=0.5),axis.text.x=element_text(size=12,h=0.5,v=0.5,angle=50,color="black")
- ,axis.title=element_text(size=15,face="bold"),panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
- panel.background = element_blank(), axis.line = element_line(colour = "black"),legend.position="none",plot.margin = unit(c(1, 0,0, 0), "cm"))
- ggsave(file="/media/garret/New Volume/paper submission/MPOA_Science/Revision_Figures/raw/Esr1KOM_gene_neuroncelltype_rev#3com4.pdf",height=2, width=10 , paper = "letter")
- # %%
- #fraction
- Cell_type<-Celltype
- # make a data frame for cell number (this data frame is a simple version giving single value for each cluster)
- Cell_number<- data.frame("type" =Cell_type)
- Numberofcells<-vector(mode="numeric", length=0)
- proportion<-vector(mode="numeric", length=0)
- for (i in 1:dim(Cell_number)[1]){Numberofcells[i]<-dim(subset([email hidden],celltype==Cell_number$type[i]))[1]}
- Cell_number$len<-Numberofcells
- for (i in 1:dim(Cell_number)[1]){proportion[i]<-100*Cell_number$len[i]/sum(Cell_number$len)}
- Cell_number$prop<-proportion
- Cell_number$type<-factor(Cell_number$type,levels=Celltype)
- # %%
- # proportion of cells
- ggplot(Cell_number,aes(x=type,y=proportion,fill=type, width=.75))+geom_bar(stat = "identity",position=position_dodge())+ylab("fraction (%)")+
- scale_fill_manual(values=colors)+scale_x_discrete(limits = (levels(Cell_number$type)))+
- theme(legend.position="none",axis.title.x=element_text(size=0),axis.title.y=element_text(size=20,color="black"),axis.text.y=element_text(size=12,color="black"),axis.text.x=element_text(size=15,angle = 50, hjust =0.5,v=0.5,color="black"),panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
- panel.background = element_blank(), axis.line = element_line(colour = "black",size=0.7))+ggtitle("% cells")
- ggsave(file="/media/garret/New Volume/paper submission/MPOA_Science/Revision_Figures/raw/Esr1KOM_neuroncelltypefraction_rev#3com4.pdf",height=6, width=10 , paper = "letter")
- # %%
- #disc plot
- # %%
- #ext fig7
- Cell_type<-factor(rev(c("eVgat7","eVgat3","eVgat4","eVgat8","eVgat9","eVgat10","eVgat2","eVgat1","eVgat5","eVgat6")),levels=rev(c("eVgat7","eVgat3","eVgat4","eVgat8","eVgat9","eVgat10","eVgat2","eVgat1","eVgat5","eVgat6")))
- gene_list<-c("Slc32a1","Slc17a6","Ar","Esr1")
- # %%
- Cell_number<- data.frame(Date=as.Date(character()),File=character(),User=character(),stringsAsFactors=FALSE)
- for (i in 1:length(gene_list)){
- L<-length(Cell_type)
- Cell_number_t<- data.frame("cluster" =Cell_type, "gene"=c(rep(gene_list[i],L)))
- #used normalized uncorrected data
- for (p in 1:length(Cell_type)){
- Cell_number_t$pct[p]<-100*sum(Esr1KOM@assays$RNA@data[gene_list[i],eval(parse(text=paste(Cell_type[p],"_barcode",sep="")))]>0)/length(eval(parse(text=paste(Cell_type[p],"_barcode",sep=""))))
- Cell_number_t$avg[p]<-(mean(Esr1KOM@assays$RNA@data[gene_list[i],eval(parse(text=paste(Cell_type[p],"_barcode",sep="")))])-mean(Esr1KOM@assays$RNA@data[gene_list[i],]))/sd(Esr1KOM@assays$RNA@data[gene_list[i],])
- #for avg only consider the expressed cell
- #t<-LHb.integrated@assays$RNA@data[gene_list[i],eval(parse(text=paste(Cell_type[p],"_barcode",sep="")))]>0
- # Cell_number_t$avg[p]<-mean(LHb.integrated@assays$RNA@data[gene_list[i],t])/sd(LHb.integrated@assays$RNA@data[gene_list[i],eval(parse(text=paste(Cell_type[p],"_barcode",sep="")))])
- }
- Cell_number<-rbind(Cell_number_t,Cell_number)}
- as.factor(Cell_number$cluster)
- # %%
- ggplot(Cell_number, aes(gene, cluster)) + geom_point(aes(size = pct, colour=avg)) +
- scale_y_discrete(limits = (levels(Cell_number$cluster)))+scale_x_discrete(limits =rev(levels(Cell_number$gene)),position = "top")+
- scale_color_gradient(low = "white", high = "darkblue",limits = c(-1,1.5),breaks=seq(-1,1.5,0.5),oob=squish) +scale_size_continuous(range = c(0,8),limits=c(0,100),breaks=seq(0,100,50))+
- geom_point(aes(size = pct), pch=21, lwd=0,stroke=0)+
- theme(axis.title.y=element_text(size=15),axis.text.y=element_text(size=8),axis.text.x=element_text(size=15,angle = 50, hjust = 0.1,vjust=0.5,color="black",face="bold"),panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
- panel.background = element_blank(), axis.line = element_line(colour = "black",size=1),,legend.position ="top",axis.ticks.length=unit(.1, "cm"),axis.ticks = element_line(size = 1), plot.margin = margin(10, 110,30, 30))
- ggsave(file="/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/disc_hormone_vglu.pdf",height=7, width=3.9 , paper = "letter")
- # %%
- ggplot(Cell_number, aes(gene, cluster)) + geom_point(aes(size = pct, colour=avg)) +
- scale_y_discrete(limits = (levels(Cell_number$cluster)))+scale_x_discrete(limits =rev(levels(Cell_number$gene)),position = "top")+
- scale_color_gradient(low = "white", high = "darkblue",limits = c(-1,1),breaks=seq(-1,1,0.5),oob=squish) +scale_size_continuous(range = c(0,8),limits=c(0,100),breaks=seq(0,100,50))+
- geom_point(aes(size = pct), pch=21, lwd=0,stroke=0)+
- theme(axis.title.y=element_text(size=15),axis.text.y=element_text(size=8),axis.text.x=element_text(size=15,angle = 50, hjust = 0.1,vjust=0.5,color="black",face="bold"),panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
- panel.background = element_blank(), axis.line = element_line(colour = "black",size=1),,legend.position ="top",axis.ticks.length=unit(.1, "cm"),axis.ticks = element_line(size = 1), plot.margin = margin(10, 110,30, 30))
- ggsave(file="/media/garret/New Volume/paper submission/MPOA_Science/Revision_Figures/raw/disc_Esr1KOM_all_#rev3_com#.pdf",height=7, width=3.9 , paper = "letter")
- # %%
- Cell_type<-rev(c("eVgat1","eVgat2","eVgat3","eVgat4","eVgat5","eVgat6","eVgat7","eVgat8","eVgat9","eVgat10","eVgat11","eVgat12"))
- gene_list<-c("Slc32a1","Ar","Esr1","Dlx1")
- # %%
- #initialize empty data frame
- Cell_number<- data.frame(Date=as.Date(character()),File=character(),User=character(),stringsAsFactors=FALSE)
- for (i in 1:length(Cell_type)){
- L<-length(eval(parse(text = paste(Cell_type[i],"_barcode",sep=""))))
- Cell_number_t<- data.frame("type" =c(rep(Cell_type[i],L)))
- #used normalized uncorrected data
- for (p in 1:length(gene_list)){
- Cell_number_t[gene_list[p]]<-as.vector(Esr1KOM@assays$RNA@data[gene_list[p],eval(parse(text = paste(Cell_type[i],"_barcode",sep="")))])
- }
- Cell_number<-rbind(Cell_number_t,Cell_number)}
- as.factor(Cell_number$type)
- # %%
- colors<-rep("dodgerblue4",12)
- # %%
- for (k in 1:length(gene_list))
- {
- if (k==length(gene_list)){assign(paste("P",k,sep=""),ggplot(Cell_number,aes_string(x="type",y=gene_list[k],fill="type"))+geom_violin(scale = "width")+scale_fill_manual(values=colors)+ylab(gene_list[k])+ theme(axis.title.x=element_blank(),
- ,axis.text.y=element_blank(), axis.ticks.y=element_blank(),axis.text.x=element_text(size=12,face="bold",color="black",angle = 90, hjust =0,margin = margin(t = 2, r =0, b = 0, l =0)),axis.title.y=element_text(size=12,angle=0,face="bold",vjust=0.5,margin = margin(t = 5, r = 10, b = 0, l = 10)), axis.title=element_text(size=6,face="bold"),panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
- panel.background = element_blank(), axis.line = element_line(colour = "black"),legend.position="none",plot.margin = unit(c(0, 0, 0, 0), "cm")))}
- else{
- assign(paste("P",k,sep=""),ggplot(Cell_number,aes_string(x="type",y=gene_list[k],fill="type"))+geom_violin(scale = "width")+scale_fill_manual(values=colors)+ylab(gene_list[k])+ theme(axis.title.x=element_blank(),
- axis.text.x=element_blank(), axis.ticks.x=element_blank(),axis.text.y=element_blank(), axis.ticks.y=element_blank(),axis.title.y=element_text(size=12,angle=0,face="bold",vjust=0.5,margin = margin(t = 5, r = 10, b = 0, l = 10)), axis.title=element_text(size=12,face="bold"),panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
- panel.background = element_blank(), axis.line = element_line(colour = "black"),legend.position="none",plot.margin = unit(c(0, 0, 0, 0), "cm")))}
- }
- # %%
- library(grid)
- # %%
- #for Slc32a1,gene_list<-c("Slc32a1","Slc17a6","Dlx1","Ar","Esr1","Pgr","Moxd1")
- merge<-list()
- for (i in length(gene_list):1){
- if (length(merge)==0){
- merge<-ggplotGrob(eval(parse(text=paste("P",i,sep = ""))))}else{merge<-rbind(ggplotGrob(eval(parse(text=paste("P",i,sep = "")))),merge,size = "last")}}
- #all gene
- pdf(paste("/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/stackplotviolin_all_clusters_hormone",".pdf",sep=""),height=3,width=18, paper = "letter")
- grid.newpage()
- grid.draw(merge)
- dev.off()
- # %% [markdown]
- # start from here
- # %%
- MPOA.integrated<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/MPOA.integrated.rds")
- P23M<-readRDS(file ="/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/P23M.rds")
- P35M<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/P35M.rds")
- AM<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/AM.rds")
- Cast<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/Cast.rds")
- P23F<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/P23F.rds")
- P35F<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/P35F.rds")
- AF<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/AF.rds")
- OVX<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/OVX.rds")
- new.ident <- c("Mix1","Vgat1","Vglu1","Vgat2","Vgat3","Vgat4","Mix2","Vglu2","Vgat5","Vglu3","Vglu4","Vgat6","Vgat7","Vgat8","Vglu5","Vglu6","Vgat9","Vgat10","Vgat11","Vglu7","Vgat12","Vgat13","Vgat14","Vgat15","Vglu8","Vglu9","Vgat16","Vglu10","Vgat17","Vgat18","Vgat19","Vglu11","Vglu12","Ambiguous1","Mix3","Vgat20")
- names(x = new.ident) <- levels(x =MPOA.integrated)
- MPOA.integrated<- RenameIdents(object =MPOA.integrated, new.ident)
- for (i in 1:length(new.ident)){
- assign(paste(new.ident[i],"_barcode",sep=""),colnames(MPOA.integrated@assays$RNA@data[,which(Idents(object=MPOA.integrated) %in% new.ident[i])]))# this gives all barcodes in cluster
- assign(paste(new.ident[i],"_barcode_P23M",sep=""),intersect(colnames(P23M@assays$RNA@data),eval(parse(text = paste(new.ident[i],"_barcode",sep="")))))
- assign(paste(new.ident[i],"_barcode_P35M",sep=""),intersect(colnames(P35M@assays$RNA@data),eval(parse(text = paste(new.ident[i],"_barcode",sep="")))))
- assign(paste(new.ident[i],"_barcode_AM",sep=""),intersect(colnames(AM@assays$RNA@data),eval(parse(text = paste(new.ident[i],"_barcode",sep="")))))
- assign(paste(new.ident[i],"_barcode_Cast",sep=""),intersect(colnames(Cast@assays$RNA@data),eval(parse(text = paste(new.ident[i],"_barcode",sep="")))))
- assign(paste(new.ident[i],"_barcode_P23F",sep=""),intersect(colnames(P23F@assays$RNA@data),eval(parse(text = paste(new.ident[i],"_barcode",sep="")))))
- assign(paste(new.ident[i],"_barcode_P35F",sep=""),intersect(colnames(P35F@assays$RNA@data),eval(parse(text = paste(new.ident[i],"_barcode",sep="")))))
- assign(paste(new.ident[i],"_barcode_AF",sep=""),intersect(colnames(AF@assays$RNA@data),eval(parse(text = paste(new.ident[i],"_barcode",sep="")))))
- assign(paste(new.ident[i],"_barcode_OVX",sep=""),intersect(colnames(OVX@assays$RNA@data),eval(parse(text = paste(new.ident[i],"_barcode",sep="")))))
- }
- # %%
- [email hidden]$celltype<-Idents(MPOA.integrated)
- # %%
- Esr1KOM<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/Esr1KOM.rds")
- new.ident <- c("eMix1","eVgat1","eVglu1","eVgat2","eVgat3","eVgat4","eVglu2","eVglu3","eVgat5","eVgat6","eVgat7","eVgat8","eVgat9","eMix2","eVgat10","eVglu4","eVgat11","eVglu5","eVgat12","eVglu6","eAmbiguous")
- names(x = new.ident) <- levels(x =Esr1KOM)
- Esr1KOM<- RenameIdents(object =Esr1KOM, new.ident)
- for (i in 1:length(new.ident)){
- assign(paste(new.ident[i],"_barcode",sep=""),colnames(Esr1KOM@assays$RNA@data[,which(Idents(object=Esr1KOM) %in% new.ident[i])]))}
- [email hidden]$celltype<-Idents(Esr1KOM)
- #Celltype may change
- Celltype<-c("eVgat1","eVgat2","eVgat3","eVgat4","eVgat5","eVgat6","eVgat7","eVgat8","eVgat9","eVgat10","eVgat11","eVgat12","eVglu1","eVglu2","eVglu3","eVglu4","eVglu5","eVglu6","eMix1","eMix2")
- Esr1KOM<-subset(Esr1KOM,cells=rownames([email hidden])[[email hidden]$celltype %in% Celltype])
- [email hidden]$celltype<-factor([email hidden]$celltype,levels=Celltype)
- Idents(Esr1KOM)<-factor(Idents(Esr1KOM),levels=Celltype)
- # %%
- celltype<-c(eVglu1_barcode,eVglu2_barcode,eVglu3_barcode,eVglu4_barcode,eVglu5_barcode,eVglu6_barcode)
- # %% [markdown]
- # # correlation KO and scRNAseq
- # %%
- #for extFig7, remove Vgat20
- MPOA_type<-c("Vgat6","Vgat2","Vgat16","Vgat4","Vgat10","Vgat13","Vgat8","Vgat17","Vgat1","Vgat3","Vgat14","Vgat5","Vgat7","Vgat11","Vgat9","Vgat19","Vgat15","Vgat18","Vgat12")
- Esr1KOM_type<-rev(c("eVgat7","eVgat3","eVgat4","eVgat8","eVgat9","eVgat10","eVgat2","eVgat1","eVgat5","eVgat6"))
- # %%
- corr<- data.frame(matrix(NA, ncol=length(MPOA_type),nrow=length(Esr1KOM_type)))
- rownames(corr)<-factor(Esr1KOM_type,levels=Esr1KOM_type)
- colnames(corr)<-factor(MPOA_type,levels=MPOA_type)
- # %%
- p_value<- data.frame(matrix(NA, ncol=length(MPOA_type),nrow=length(Esr1KOM_type)))
- rownames(p_value)<-factor(Esr1KOM_type,levels=Esr1KOM_type)
- colnames(p_value)<-factor(MPOA_type,levels=MPOA_type)
- # %%
- genes<-intersect(rownames(Esr1KOM@ reductions$ pca@ feature.loadings),rownames(MPOA.integrated@assays$RNA@data))
- MPOA_exp<-MPOA.integrated@assays$RNA@data[genes,]
- Esr1KOM_exp<- Esr1KOM@assays$RNA@data[genes,]
- # %%
- length(genes)
- # %%
- MPOA_exp<-t(scale(t(as.matrix(MPOA_exp))))
- Esr1KOM_exp<-t(scale(t(as.matrix(Esr1KOM_exp))))
- # %%
- for (i in 1:length(MPOA_type)){
- for (j in 1:length(Esr1KOM_type)){
- test1<-Esr1KOM_exp[,eval(parse(text = paste(Esr1KOM_type[j],"_barcode",sep="")))]
- rownames(test1) <- c()
- test1<-rowMeans(test1)
- include1<-is.na(test1)
- test2<-MPOA_exp[,eval(parse(text = paste(MPOA_type[i],"_barcode",sep="")))]
- rownames(test2) <- c()
- test2<-rowMeans(test2)
- include2<-is.na(test2)
- include<-(include1+include2)==0
- test1<-test1[include]
- test2<-test2[include]
- corr[j,i]<-cor(test1,test2)
- }}
- # %%
- for (i in 1:length(MPOA_type)){
- for (j in 1:length(Esr1KOM_type)){
- test1<-Esr1KOM_exp[,eval(parse(text = paste(Esr1KOM_type[j],"_barcode",sep="")))]
- rownames(test1) <- c()
- test1<-rowMeans(test1)
- include1<-is.na(test1)
- test2<-MPOA_exp[,eval(parse(text = paste(MPOA_type[i],"_barcode",sep="")))]
- rownames(test2) <- c()
- test2<-rowMeans(test2)
- include2<-is.na(test2)
- include<-(include1+include2)==0
- test1<-test1[include]
- test2<-test2[include]
- p_value[j,i]<-cor.test(test1,test2)[[3]]}}
- # %%
- library("reshape2")
- # %%
- test.m <- melt(as.matrix(corr))
- # %%
- library(scales)
- # %%
- test.p <- melt(as.matrix(p_value))
- # %%
- for(i in 1:dim(test.m)[1]){
- if (test.p$value[i]>0.05){
- test.m$value[i]<-0
- }else{
- test.m$value[i]<-test.m$value[i]
- }
- }
- # %%
- p <- ggplot(test.m, aes(Var2, Var1)) + geom_tile(aes(fill =value),
- colour = "white")+ scale_fill_continuous(limits=c(0.3,0.8), breaks=seq(0.0,0.8,by=0.2),low = "white",high = "darkred", oob=squish)
- #scale_x_discrete(breaks=c(0,5994,7712,9820,11428,11674,11836,11878))
- pp<-p+ylab("Esr1KOM")+xlab("scRNAseq")+theme(axis.text.y=element_text(size=10,colour = "black"),axis.text.x=element_text(size=10,,angle = 50, hjust =1,colour = "black"),axis.title=element_text(size=20,face="bold"),plot.title = element_text(size=16),panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
- panel.background = element_blank(), axis.line = element_line(colour = "black", size = 0.1),axis.ticks.y = element_blank())+ggtitle("correlation between Esr1KOM and scRNAseq")
- print(pp)
- # %%
- p <- ggplot(test.m, aes(Var2, Var1)) + geom_tile(aes(fill =value),
- colour = "white")+ scale_fill_continuous(limits=c(0.3,0.8), breaks=seq(0.0,0.8,by=0.2),low = "white",high = "darkred", oob=squish)
- #scale_x_discrete(breaks=c(0,5994,7712,9820,11428,11674,11836,11878))
- pp<-p+ylab("Esr1KOM")+xlab("scRNAseq")+theme(axis.text.y=element_text(size=15,colour = "black",face="bold"),axis.text.x=element_text(size=14,,angle = 50, hjust =1,colour = "black",face="bold"),axis.title=element_text(size=20,face="bold"),plot.title = element_text(size=16),panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
- panel.background = element_blank(), axis.line = element_line(colour = "black", size = 1),axis.ticks.length=unit(.1, "cm"),axis.ticks = element_line(size = 1), plot.margin = margin(10, 10, 10, 10))
- ggsave(file="/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/correlation_vgat.pdf",height=5, width=10 , paper = "letter")
- # %%
- p <- ggplot(test.m, aes(Var2, Var1)) + geom_tile(aes(fill =value),
- colour = "white")+ scale_fill_continuous(limits=c(0.3,0.8), breaks=seq(0.0,0.8,by=0.2),low = "white",high = "darkred", oob=squish)
- #scale_x_discrete(breaks=c(0,5994,7712,9820,11428,11674,11836,11878))
- pp<-p+ylab("Esr1KOM")+xlab("scRNAseq")+theme(axis.text.y=element_text(size=10,colour = "black"),axis.text.x=element_text(size=12,,angle = 50, hjust =1,colour = "black"),axis.title=element_text(size=20,face="bold"),plot.title = element_text(size=16),panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
- panel.background = element_blank(), axis.line = element_line(colour = "black", size = 0.1),axis.ticks.y = element_blank())+ggtitle("correlation between Esr1KOM and scRNAseq")
- ggsave(file="/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/correlation_vglu.pdf",height=2.2, width=10 , paper = "letter")
- # %% [markdown]
- # # reference based projection
- # %%
- #for S-Fig, remove Vgat20 as no correspondence with Vgat20 in correlation analysis
- MPOA_type<-c("Vgat6","Vgat2","Vgat16","Vgat4","Vgat10","Vgat13","Vgat8","Vgat17","Vgat1","Vgat3","Vgat14","Vgat5","Vgat7","Vgat11","Vgat9","Vgat19","Vgat15","Vgat18","Vgat12")
- Esr1KOM_type<-rev(c("eVgat7","eVgat3","eVgat4","eVgat8","eVgat9","eVgat10","eVgat2","eVgat1","eVgat5","eVgat6"))
- # %%
- MPOA.integrated<-subset(MPOA.integrated,cells=rownames([email hidden])[[email hidden]$celltype %in% MPOA_type])
- Esr1KOM<-subset(Esr1KOM,cells=rownames([email hidden])[[email hidden]$celltype %in% Esr1KOM_type])
- # %%
- POA.list<-objects() #maybe better using POA.list<-vector(mode = "list")
- POA.list$MPOA.integrated<-MPOA.integrated
- POA.list$Esr1KOM<-Esr1KOM
- reference.list <- POA.list[c("MPOA.integrated","Esr1KOM")]
- # %%
- MPOA.integrated
- # %%
- help(FindTransferAnchors)
- # %%
- genes<-intersect(rownames(Esr1KOM@ reductions$ pca@ feature.loadings),rownames(MPOA.integrated@assays$RNA@data))
- # %%
- POA.anchors <- FindTransferAnchors(reference = MPOA.integrated, query = Esr1KOM, reduction = "cca", dims = 1:10,features=genes)
- # %%
- predictions <- TransferData(anchorset = POA.anchors, refdata = MPOA.integrated$celltype, weight.reduction="cca", dims = 1:10)
- Esr1KOM <- AddMetaData(Esr1KOM, metadata = predictions)
- # %%
- [email hidden]$celltype<-factor([email hidden]$celltype,levels=Esr1KOM_type)
- [email hidden]$predicted.id<-factor([email hidden]$predicted.id,levels=MPOA_type)
- # %%
- meta <- [email hidden] %>% select(celltype, predicted.id) %>% group_by(celltype, .drop = FALSE) %>% count(celltype, predicted.id)
- adjusted<-numeric()
- for(i in 1:dim(meta)[1]){
- adjusted[i]<-100*meta$n[i]/sum(subset(meta,predicted.id==meta$predicted.id[i])$n)
- }
- meta$adjusted<-adjusted
- # %%
- meta<-meta[meta$predicted.id %in% c("Vgat2","Vgat4","Vgat16"),]
- # %%
- meta$celltype<-factor(meta$celltype,levels=Esr1KOM_type)
- meta$predicted.id<-factor(meta$predicted.id,levels=c("Vgat2","Vgat4","Vgat16"))
- # %%
- unique(meta$celltype)
- # %%
- colors=c(c("eVgat7"="lightblue","eVgat3"="darkblue","eVgat4"="indianred","eVgat8"="lightskyblue","eVgat9"="skyblue","eVgat10"="lightgray","eVgat2"="darkgray","eVgat1"="lightsalmon","eVgat5"="darkgray","eVgat6"="dimgray"))
- # %%
- #% of scRNAseq Vgat Esr1 cell types predicted in KO data
- ggplot(meta,aes(x=predicted.id,y=adjusted,fill=celltype,group=celltype))+geom_bar(position="dodge",stat = "identity")+ylab("% of predicted cells")+
- scale_fill_manual(values=colors)+
- theme(axis.title.y=element_text(size=20,color="black"),axis.title.x=element_blank(),axis.text.y=element_text(size=15,color="black"),axis.text.x=element_text(size=15,angle = 50, hjust = 0.5,vjust=0.5,color="black",face="bold"),panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
- panel.background = element_blank(), axis.line = element_line(colour = "black",size=0.3),axis.ticks.length=unit(.1, "cm"),axis.ticks = element_line(size =0.3), plot.margin = unit(c(0.6, 0,0, 0), "cm"))
- ggsave(file="/media/garret/New Volume/paper submission/MPOA_Science/Revision_Figures/raw/Esr1KOM_number_of_predicted_celltype_rev#3_com#4.pdf",height=3, width=10 , paper = "letter")
- # %%
- help(FindTransferAnchors)
- # %% [markdown]
- # # DEG analysis
- # %%
- MPOA.integrated<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/MPOA.integrated.rds")
- P23M<-readRDS(file ="/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/P23M.rds")
- P35M<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/P35M.rds")
- AM<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/AM.rds")
- Cast<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/Cast.rds")
- P23F<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/P23F.rds")
- P35F<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/P35F.rds")
- AF<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/AF.rds")
- OVX<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/OVX.rds")
- new.ident <- c("Mix1","Vgat1","Vglu1","Vgat2","Vgat3","Vgat4","Mix2","Vglu2","Vgat5","Vglu3","Vglu4","Vgat6","Vgat7","Vgat8","Vglu5","Vglu6","Vgat9","Vgat10","Vgat11","Vglu7","Vgat12","Vgat13","Vgat14","Vgat15","Vglu8","Vglu9","Vgat16","Vglu10","Vgat17","Vgat18","Vgat19","Vglu11","Vglu12","Ambiguous1","Mix3","Vgat20")
- names(x = new.ident) <- levels(x =MPOA.integrated)
- MPOA.integrated<- RenameIdents(object =MPOA.integrated, new.ident)
- for (i in 1:length(new.ident)){
- assign(paste(new.ident[i],"_barcode",sep=""),colnames(MPOA.integrated@assays$RNA@data[,which(Idents(object=MPOA.integrated) %in% new.ident[i])]))# this gives all barcodes in cluster
- assign(paste(new.ident[i],"_barcode_P23M",sep=""),intersect(colnames(P23M@assays$RNA@data),eval(parse(text = paste(new.ident[i],"_barcode",sep="")))))
- assign(paste(new.ident[i],"_barcode_P35M",sep=""),intersect(colnames(P35M@assays$RNA@data),eval(parse(text = paste(new.ident[i],"_barcode",sep="")))))
- assign(paste(new.ident[i],"_barcode_AM",sep=""),intersect(colnames(AM@assays$RNA@data),eval(parse(text = paste(new.ident[i],"_barcode",sep="")))))
- assign(paste(new.ident[i],"_barcode_Cast",sep=""),intersect(colnames(Cast@assays$RNA@data),eval(parse(text = paste(new.ident[i],"_barcode",sep="")))))
- assign(paste(new.ident[i],"_barcode_P23F",sep=""),intersect(colnames(P23F@assays$RNA@data),eval(parse(text = paste(new.ident[i],"_barcode",sep="")))))
- assign(paste(new.ident[i],"_barcode_P35F",sep=""),intersect(colnames(P35F@assays$RNA@data),eval(parse(text = paste(new.ident[i],"_barcode",sep="")))))
- assign(paste(new.ident[i],"_barcode_AF",sep=""),intersect(colnames(AF@assays$RNA@data),eval(parse(text = paste(new.ident[i],"_barcode",sep="")))))
- assign(paste(new.ident[i],"_barcode_OVX",sep=""),intersect(colnames(OVX@assays$RNA@data),eval(parse(text = paste(new.ident[i],"_barcode",sep="")))))
- }
- Esr1KOM<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/Esr1KOM.rds")
- new.ident <- c("eMix1","eVgat1","eVglu1","eVgat2","eVgat3","eVgat4","eVglu2","eVglu3","eVgat5","eVgat6","eVgat7","eVgat8","eVgat9","eMix2","eVgat10","eVglu4","eVgat11","eVglu5","eVgat12","eVglu6","eAmbiguous")
- names(x = new.ident) <- levels(x =Esr1KOM)
- Esr1KOM<- RenameIdents(object =Esr1KOM, new.ident)
- for (i in 1:length(new.ident)){
- assign(paste(new.ident[i],"_barcode",sep=""),colnames(Esr1KOM@assays$RNA@data[,which(Idents(object=Esr1KOM) %in% new.ident[i])]))}
- # %%
- DefaultAssay(Esr1KOM) <- "RNA"
- #celltype<-c(eVgat3_barcode,eVgat4_barcode,eVgat7_barcode) #not used
- celltype<-c(eVgat3_barcode,eVgat4_barcode)
- KO<-subset(Esr1KOM,cells=celltype)
- # %%
- DefaultAssay(MPOA.integrated) <- "RNA"
- temp<-c(Vgat2_barcode,Vgat4_barcode,Vgat16_barcode)
- celltype<-intersect(temp,rownames(subset([email hidden],stim=="AM")))
- Intact<-subset(MPOA.integrated,cells=celltype)
- # %%
- #vgat low
- DefaultAssay(MPOA.integrated) <- "RNA"
- temp<-c(Vgat14_barcode,Vgat17_barcode,Vgat20_barcode)
- celltype<-intersect(temp,rownames(subset([email hidden],stim=="AM")))
- Intact<-subset(MPOA.integrated,cells=celltype)
- # %%
- #Vgatlow
- DefaultAssay(Esr1KOM) <- "RNA"
- #celltype<-c(eVgat3_barcode,eVgat4_barcode,eVgat7_barcode)
- celltype<-c(eVgat9_barcode)
- KO<-subset(Esr1KOM,cells=celltype)
- # %%
- Merge<-merge(x = KO, y = Intact, merge.data = TRUE)
- DefaultAssay(Merge) <- "RNA"
- # %%
- [email hidden]
- # %%
- celltype.stim<-vector()
- for (i in 1:dim([email hidden])[1]){
- if([email hidden]$stim[i]=="AM"){celltype.stim[i]<-"AM"}
- else if([email hidden]$stim[i]=="Esr1KOM"){celltype.stim[i]<-"Esr1KOM"}
- }
- [email hidden]$celltype.stim<-celltype.stim
- # %%
- Merge[["celltype"]] <- Idents(object = Merge)
- Idents(Merge = Merge) <- [email hidden]$celltype.stim
- # %%
- one.markers <- FindMarkers(Merge, ident.1 = "AM", ident.2 ="Esr1KOM", grouping.var = "stim",print.bar = FALSE,logfc.threshold = 0,min.pct = 0,min.cells.gene = 3, min.cells.group = 1)
- one.markers$p_val_adjust<-one.markers$p_val*(dim(one.markers)[1]:1)
- sort_marker<-one.markers[order(-one.markers["avg_logFC"]),]
- # %%
- #201105 Vgat2 4 16 all
- one.markers <- FindMarkers(Merge, ident.1 = "AM", ident.2 ="Esr1KOM", grouping.var = "stim",print.bar = FALSE,logfc.threshold = 0,min.pct = 0,min.cells.gene = 3, min.cells.group = 1)
- one.markers$p_val_adjust<-one.markers$p_val*(dim(one.markers)[1]:1)
- sort_marker<-one.markers[order(-one.markers["avg_logFC"]),]
- write.xlsx2(subset(sort_marker),file=("/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/DEG/All_gene.xlsx"))
- # %%
- #201105 Vgat2 4 16
- one.markers <- FindMarkers(Merge, ident.1 = "AM", ident.2 ="Esr1KOM", grouping.var = "stim",print.bar = FALSE,logfc.threshold = 0,min.pct = 0,min.cells.gene = 3, min.cells.group = 1)
- one.markers$p_val_adjust<-one.markers$p_val*(dim(one.markers)[1]:1)
- sort_marker<-one.markers[order(-one.markers["avg_logFC"]),]
- write.xlsx2(subset(sort_marker,avg_logFC>0 & p_val_adjust<0.05 & pct.1>0.1),file=("/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/DEG/gene_adjust_0.1.xlsx"))
- write.xlsx2(subset(sort_marker,avg_logFC<0 & p_val_adjust<0.05 & pct.2>0.1),file=("/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/DEG/gene_adjust_0.1n.xlsx"))
- write.xlsx2(subset(sort_marker,avg_logFC>0.1 & p_val_adjust<0.05 & pct.1>0.1),file=("/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/DEG/gene_adjust_0.1_0.1.xlsx"))
- # %%
- #201106 Vgat2 4 16 vs 3 4
- one.markers <- FindMarkers(Merge, ident.1 = "AM", ident.2 ="Esr1KOM", grouping.var = "stim",print.bar = FALSE,logfc.threshold = 0,min.pct = 0,min.cells.gene = 3, min.cells.group = 1)
- one.markers$p_val_adjust<-one.markers$p_val*(dim(one.markers)[1]:1)
- sort_marker<-one.markers[order(-one.markers["avg_logFC"]),]
- write.xlsx2(subset(sort_marker,avg_logFC>0 & p_val_adjust<0.05 & pct.1>0.1),file=("/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/DEG/gene_adjust_0.1_246vs34.xlsx"))
- write.xlsx2(subset(sort_marker,avg_logFC<0 & p_val_adjust<0.05 & pct.2>0.1),file=("/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/DEG/gene_adjust_0.1n_246vs34.xlsx"))
- write.xlsx2(subset(sort_marker,avg_logFC>0.1 & p_val_adjust<0.05 & pct.1>0.1),file=("/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/DEG/gene_adjust_0.1_0.1_246vs34.xlsx"))
- # %%
- one.markers <- FindMarkers(Merge, ident.1 = "Esr1KOM", ident.2 ="AM", grouping.var = "stim",print.bar = FALSE,logfc.threshold = 0,min.pct = 0,min.cells.gene = 3, min.cells.group = 1)
- one.markers$p_val_adjust<-one.markers$p_val*(dim(one.markers)[1]:1)
- sort_marker<-one.markers[order(-one.markers["avg_logFC"]),]
- write.xlsx2(subset(sort_marker,avg_logFC>0.1 & p_val_adjust<0.05 & pct.1>0.1),file=("/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/DEG/gene_adjust_0.1_0.1_KO.xlsx"))
- # %%
- one.markers <- FindMarkers(Merge, ident.1 = "AM", ident.2 ="Esr1KOM", grouping.var = "stim",print.bar = FALSE,logfc.threshold = 0,min.pct = 0,min.cells.gene = 3, min.cells.group = 1)
- one.markers$p_val_adjust<-one.markers$p_val*(dim(one.markers)[1]:1)
- sort_marker<-one.markers[order(-one.markers["avg_logFC"]),]
- write.xlsx2(subset(sort_marker,avg_logFC>0 & p_val_adjust<0.05 & pct.1>0.1),file=("/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/DEG/low/gene_adjust_0.1_246vs34.xlsx"))
- write.xlsx2(subset(sort_marker,avg_logFC<0 & p_val_adjust<0.05 & pct.2>0.1),file=("/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/DEG/low/gene_adjust_0.1n_246vs34.xlsx"))
- write.xlsx2(subset(sort_marker,avg_logFC>0.1 & p_val_adjust<0.05 & pct.1>0.1),file=("/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/DEG/low/gene_adjust_0.1_0.1_246vs34.xlsx"))
- # %% [markdown]
- # # heatmap
- # %%
- MPOA.integrated<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/MPOA.integrated.rds")
- new.ident <- c("Mix1","Vgat1","Vglu1","Vgat2","Vgat3","Vgat4","Mix2","Vglu2","Vgat5","Vglu3","Vglu4","Vgat6","Vgat7","Vgat8","Vglu5","Vglu6","Vgat9","Vgat10","Vgat11","Vglu7","Vgat12","Vgat13","Vgat14","Vgat15","Vglu8","Vglu9","Vgat16","Vglu10","Vgat17","Vgat18","Vgat19","Vglu11","Vglu12","Ambiguous1","Mix3","Vgat20")
- names(x = new.ident) <- levels(x =MPOA.integrated)
- MPOA.integrated<- RenameIdents(object =MPOA.integrated, new.ident)
- for (i in 1:length(new.ident)){
- assign(paste(new.ident[i],"_barcode",sep=""),colnames(MPOA.integrated@assays$RNA@data[,which(Idents(object=MPOA.integrated) %in% new.ident[i])]))# this gives all barcodes in cluster
- }
- #temp<-c(Vgat2_barcode,Vgat4_barcode,Vgat16_barcode) #Vgat Esr1
- temp<-c(Vgat14_barcode,Vgat17_barcode,Vgat20_barcode) # hormone low
- celltype<-intersect(temp,rownames(subset([email hidden],stim=="AM" | stim=="P35M"| stim=="P23M"|stim=="Cast")))
- MPOA.integrated<-subset(MPOA.integrated,cells=celltype)
- Esr1KOM<-readRDS(file = "/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/Esr1KOM.rds")
- new.ident <- c("eMix1","eVgat1","eVglu1","eVgat2","eVgat3","eVgat4","eVglu2","eVglu3","eVgat5","eVgat6","eVgat7","eVgat8","eVgat9","eMix2","eVgat10","eVglu4","eVgat11","eVglu5","eVgat12","eVglu6","eAmbiguous")
- names(x = new.ident) <- levels(x =Esr1KOM)
- Esr1KOM<- RenameIdents(object =Esr1KOM, new.ident)
- for (i in 1:length(new.ident)){
- assign(paste(new.ident[i],"_barcode",sep=""),colnames(Esr1KOM@assays$RNA@data[,which(Idents(object=Esr1KOM) %in% new.ident[i])]))}
- #201111 3 4
- #celltype<-c(eVgat3_barcode,eVgat4_barcode)
- celltype<-c(eVgat9_barcode)
- KO<-subset(Esr1KOM,cells=celltype)
- MPOA.integrated<-merge(x=MPOA.integrated,y=KO)
- # %%
- Cell_type<-c("Esr1KOM","Cast","AM")
- #Cell_type<-c("Esr1KOM","P23M","Cast","P35M","AM")
- Cell_type<-factor(Cell_type,levels=Cell_type)
- # %%
- temp1<-read.xlsx("/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/DEG/Esr1_3/AM_over_Cast/gene_adjust_Vgat_0.1.xlsx",sheetIndex=1)
- temp3<-read.xlsx("/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_integrated/log/Neurons/DEG/Esr1_3/P35M_over_Cast/gene_adjust_Vgat_0.1.xlsx",sheetIndex=1)
- temp2<-read.xlsx("/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/DEG/gene_adjust_0.1_0.1_246vs34.xlsx",sheetIndex=1)
- temp1<-temp1[,1]
- temp2<-temp2[,1]
- temp3<-temp3[,1]
- #both<-intersect(temp1,intersect(temp2,temp3))
- both<-intersect(temp1,temp2)
- # %%
- gene_list<-both
- #gene_list<-temp2
- # %%
- Cell_number<- data.frame(Date=as.Date(character()),File=character(),User=character(),stringsAsFactors=FALSE)
- for (i in 1:length(gene_list)){
- L<-length(Cell_type)
- Cell_number_t<- data.frame("cluster" =Cell_type, "gene"=(rep(gene_list[i],L))) # do not use c if the gene is factorizsed
- #used normalized uncorrected data
- for (p in 1:length(Cell_type)){
- #Cell_number_t$pct[p]<-100*sum(MPOA.integrated@assays$RNA@data[gene_list[i],eval(parse(text=paste(Cell_type[p],"_barcode",sep="")))]>0)/length(eval(parse(text=paste(Cell_type[p],"_barcode",sep=""))))
- Cell_number_t$zscore[p]<-(mean(MPOA.integrated@assays$RNA@data[gene_list[i],rownames(subset([email hidden],stim==Cell_type[p]))])-mean(MPOA.integrated@assays$RNA@data[gene_list[i],]))/sd(MPOA.integrated@assays$RNA@data[gene_list[i],])
- Cell_number_t$FC[p]<-mean(MPOA.integrated@assays$RNA@data[gene_list[i],rownames(subset([email hidden],stim==Cell_type[p]))])-mean(MPOA.integrated@assays$RNA@data[gene_list[i],rownames(subset([email hidden],stim!=Cell_type[p]))])
- Cell_number_t$percent[p]<- 100*sum(MPOA.integrated@assays$RNA@data[gene_list[i],rownames(subset([email hidden],stim==Cell_type[p]))]>0)/length(MPOA.integrated@assays$RNA@data[gene_list[i],rownames(subset([email hidden],stim==Cell_type[p]))])
- }
- Cell_number<-rbind(Cell_number_t,Cell_number)}
- as.factor(Cell_number$cluster)
- # %%
- Cell_number$gene
- # %%
- Cell_number$gene<-factor(Cell_number$gene,levels=gene_list)
- # %%
- temp_gene<-Cell_number$gene
- # %%
- color<-numeric()
- size<-numeric()
- for(i in 1:length(temp_gene)){
- if(temp_gene[i]=="Gal"| temp_gene[i]=="Guk1" | temp_gene[i]=="Pgr" | temp_gene[i]=="Prkce" | temp_gene[i]=="Greb1" | temp_gene[i]=="Sytl4"| temp_gene[i]=="Cntnap2" |temp_gene[i]=="Sv2c" ){
- color[i]<-"black"
- size[i]<-20
- }else{
- color[i]<-"white"
- size[i]<-0
- }
- }
- # %%
- genes<-c("Slc32a1","Esr1","Ar","Npy2r","Pgr15l","Sytl4","Lamp5","Pgr","Nrip1","Acvr1c","Apoc3","Greb1","Tead1","Napb","Apoe","Pgr","Gal","Apoc3","mt-Nd4",'Cdh4','Acvr1c',"Syt6","Prkce")
- # %%
- both
- # %%
- high_C<-"#FCFADE"
- middle_C<-"#489588"
- low_C<-"#262E68"
- low<- -0.0
- high<-1
- p<-ggplot(data = Cell_number, mapping = aes(x = cluster, y = gene,fill =zscore,label=gene)) + scale_y_discrete(breaks=c(genes))+
- geom_tile() + scale_fill_gradient2(limits=c(low, high), breaks=seq(low,high,by=0.1),low = low_C,mid=middle_C,high =high_C, midpoint = 0.5,oob=squish)
- #scale_x_discrete(breaks=c(0,5994,7712,9820,11428,11674,11836,11878))
- pp<-p+ylab("group")+xlab("genes")+theme(axis.text.x=element_text(size=20,colour = "black",angle = 40, vjust =0.6,face="bold"),axis.text.y=element_text(size=10, colour = "black",face="bold"),axis.title=element_blank(),plot.title = element_text(size=16),panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
- panel.background = element_blank(), axis.line = element_blank(),axis.ticks.x = element_blank())+ scale_x_discrete(labels=c("Esr1KOM" = "KOM", "Cast" = "Cast",
- "AM" = "AM"))
- print(pp)
- ggsave(file=paste(text="/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/DEG/heatmap_male_common_3groups_",low,"_",high,"_mini_color_adjusted.pdf",sep=""),width=2.5,height=5,paper="letter")
- # %%
- size
- color
- # %%
- low<- -0.0
- high<-1
- p<-ggplot(Cell_number, aes(cluster, gene))+
- geom_tile(aes(fill =zscore))+ scale_fill_continuous(limits=c(low, high), breaks=seq(low,high,by=0.4),low = "black",high = "yellow", oob=squish)
- #scale_x_discrete(breaks=c(0,5994,7712,9820,11428,11674,11836,11878))
- pp<-p+ylab("group")+xlab("genes")+theme(axis.text.x=element_text(size=15,colour = "black",angle = 55, vjust =0.6,face="bold"),axis.text.y=element_text(size=0,colour = "black"),axis.title=element_blank(),plot.title = element_text(size=16),panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
- panel.background = element_blank(), axis.line = element_blank(),axis.ticks.y = element_blank(),axis.ticks.x = element_blank(), plot.margin = margin(10, 28, 10, 10))
- print(pp)
- ggsave(file=paste(text="/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/DEG/heatmap_male_common_5groups_",low,"_",high,"_mini.pdf",sep=""),width=2.5,height=6)
- # %%
- high_C<-"#FCFADE"
- middle_C<-"#489588"
- low_C<-"#262E68"
- low<- -0.0
- high<-1
- p<-ggplot(data = Cell_number, mapping = aes(x = cluster, y = gene,fill =zscore,label=gene)) + scale_y_discrete(breaks=c(genes))+
- geom_tile() + scale_fill_gradient2(limits=c(low, high), breaks=seq(low,high,by=0.1),low = low_C,mid=middle_C,high =high_C, midpoint = 0.5,oob=squish)
- #scale_x_discrete(breaks=c(0,5994,7712,9820,11428,11674,11836,11878))
- pp<-p+ylab("group")+xlab("genes")+theme(axis.text.x=element_text(size=20,colour = "black",angle = 40, vjust =0.6,face="bold"),axis.text.y=element_text(size=10, colour = "black",face="bold"),axis.title=element_blank(),plot.title = element_text(size=16),panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
- panel.background = element_blank(), axis.line = element_blank(),axis.ticks.x = element_blank())+ scale_x_discrete(labels=c("Esr1KOM" = "KOM", "Cast" = "Cast",
- "AM" = "AM"))
- print(pp)
- ggsave(file=paste(text="/media/garret/New Volume/scRNAseq_data/Koichi/V3_analysis/MPOA/MPOA_Esr1KOM/Neuron/DEG/heatmap_male_common_3groups_hormonelow_",low,"_",high,"_mini.pdf",sep=""),width=2.5,height=5,paper="letter")
Integrating Esr1KOM and MPOA scRNAseq Fig4.ipynb at commit b46c819, under MIT · at the source
Overview
- Center for the Neurobiology of Addiction, Pain, and Emotion, Department of Anesthesiology and Pain Medicine, Department of Pharmacology, University of Washington Seattle United States
- University of North Carolina Chapel Hill United States
- Department of Biochemistry, University of Washington Seattle United States
- Department of Psychology & Neuroscience, Duke University Durham United States
- Howard Hughes Medical Institute, University of Washington Seattle United States
- Department of Psychiatry, University of North Carolina at Chapel Hill Chapel Hill United States
- Department of Psychiatry and Behavioral Sciences, University of Washington Seattle United States
- Department of Pharmacology, University of Washington Seattle United States
Abstract
Mating and other behaviors emerge during adolescence through the coordinated actions of steroid hormone signaling throughout the nervous system and periphery. In this study, we investigated the transcriptional dynamics of the medial preoptic area (MPOA), a critical region for reproductive behavior, using single-cell RNA sequencing (scRNA-seq) and in situ hybridization techniques in male and female mice throughout adolescence development. Our findings reveal that estrogen receptor 1 (Esr1) plays a pivotal role in the transcriptional maturation of GABAergic neurons within the MPOA during adolescence. Deletion of the estrogen receptor gene, Esr1, in GABAergic neurons (Vgat+) disrupted the developmental progression of mating behaviors in both sexes, while its deletion in glutamatergic neurons (Vglut2+) had no observable effect. In males and females, these neurons displayed distinct transcriptional trajectories, with hormone-dependent gene expression patterns emerging throughout adolescence and regulated by Esr1. Esr1 deletion in MPOA GABAergic neurons, prior to adolescence, arrested adolescent transcriptional progression of these cells and uncovered sex-specific gene-regulatory networks associated with Esr1 signaling. Our results underscore the critical role of Esr1 in orchestrating sex-specific transcriptional dynamics during adolescence, revealing gene regulatory networks implicated in the development of hypothalamic-controlled reproductive behaviors.
Reproduced under the paper's license (CC BY), from the paper cited above.
Repositories
Its files are read in the Code ↔ Paper reader above, with 9 matches between paragraphs and lines of code.
theislab/paga
d5688a38d9054c6fcea7302023afa0510cd3577a, 12 April 2019Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
22 files
- blood/
dahlin18/ , Jupyter, 276 linesdahlin18.ipynb - blood/
nestorowa16/ , Jupyter, 280 linesnestorowa16.ipynb - blood/
paul15/ , Jupyter, 200 linespaul15-subsampled.ipynb - blood/
paul15/ , Jupyter, 2 linespaul15.ipynb - blood/
simulated/ , Jupyter, 259 linessimulated.ipynb - comparisons/
nestorowa16_monocle2/ , Jupyter, 60 linesnestorowa16_monocle2.ipy nb - comparisons/
paul15_monocle2/ , Jupyter, 139 linesmonocle2_alternative.ipy nb - comparisons/
paul15_monocle2/ , Jupyter, 167 linesmonocle2_original.ipynb - comparisons/
simulated_data/ , Jupyter, 79 lines_exports.ipynb - comparisons/
simulated_data/ , Jupyter, 36 linesdpt.ipynb - comparisons/
simulated_data/ , Jupyter, 95 linesmonocle2.ipynb - connectivity_measure/
connectivity_measure.ipy , Jupyter, 447 linesnb - deep_learning/
deep_learning.ipynb , Jupyter, 150 lines - embedding_quality/
embedding_quality.ipynb , Jupyter, 547 lines - planaria/
planaria.ipynb , Jupyter, 329 lines - planaria/
planaria_paga_velocyto.i , Jupyter, 137 linespynb - planaria/
velocyto_analysis/ , Jupyter, 176 linesplanaria_velocyto_epider mis.ipynb - robustness/
paul15_robustness.ipynb , Jupyter, 198 lines - robustness/
simulated_data_robustnes , Jupyter, 158 liness.ipynb - zebrafish/
zebrafish.ipynb , Jupyter, 606 lines - LICENSE, License, 29 lines
- README.md, Text, 35 lines
stuberlab/Hashikawa-Hashikawa-eLife
b46c819e2f231da93b0ccce6f367fd33f865571b, 18 June 2026Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
14 files
- 210726 all cells_preprocessing and clustering.ipynb, Jupyter, 669 lines
- 210726 doublet_removal_only_pap
er.ipynb , Jupyter, 307 lines, 2 matches - 210726 neurons_basic_figures.ip
ynb , Jupyter, 844 lines - DEG_calculation-combine-
log_Vgat_analysis of basic_dimorphic genes_Fig2.ipynb , Jupyter, 318 lines - Integrating Esr1KOF and MPOA scRNAseq Fig4.ipynb, Jupyter, 660 lines, 3 matches
- Integrating Esr1KOM and MPOA scRNAseq Fig4.ipynb, Jupyter, 731 lines, 3 matches
- Integrating MERFISH and MPOA scRNAseq.ipynb, Jupyter, 956 lines
- MPOA_DEG-ind_Fig2-log_ca
lculation.ipynb , Jupyter, 104 lines - MPOA_DEGs_Vgat_correlati
on_steroid hormones Fig2.ipynb , Jupyter, 433 lines - MPOA_DEGs_Vglut_correlat
ion_steroid hormones Fig2.ipynb , Jupyter, 299 lines - MPOA_log_neuron_clusteri
ng_only_Seurat_WO_benchm , Jupyter, 648 linesark.ipynb - MPOA_log_neurons_basic_f
igures_UMAP_Propotion_Di , Jupyter, 1,828 lines, 1 matchsc_violin_correlation_Fi g2.ipynb - MPOA_v3_DEGs_correlation
expansion_foldFC_Fig2_fo , Jupyter, 848 linesr Vgat and Vglu_Esr1_Arfraction.ipy nb - repository limit reached (2,000 files or 30 MB): the rest is at the source (17 files)
- LICENSE, License, 21 lines
The paper's code and data availability statement is in the Data section.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 2 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 33 scripts, each with its path and the digest of its content;
- 9 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
Datasets cited
- doi:10.5061/
dryad.8t8s248 , at Dryad; found in the resources table
Data availability
The NCBI Gene Expression Omnibus accession number for the scRNAseq data reported in this paper for the reviewers is GEO: GSE172177. All the codes used to analyze scRNAseq, and HM-HCR FISH are available at a GithubGitHub repository affiliated with Stuber Laboratory group and this manuscript title (https://
The following dataset was generated:
HashikawaK 2025scRNAseq to understand hormonal control on pubertal transcription in the medial preoptic areaNCBI Gene Expression OmnibusGSE172177
Reproduced under the paper's license (CC BY), from the paper cited above.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 27 September 2026: the first record
Recorded: type, language, journal, volume, pages, dates, 19 authors, 4 keywords, 11 MeSH terms, 3 funders, 70 references, 13 RRIDs.
Cite
This paper
Hashikawa, K., Hashikawa, Y., Briones, B., Ishii, K. K., Liu, Y., Rossi, M., Basiri, M. L., Chen, J. Y., Ahmad, O., Mukundan, R., Johnston, N., Simon, R., Soetedjo, J., Siputro, J., McHenry, J., Palmiter, R. D., Rubinow, D., Zweifel, L. S., & Stuber, G. D. (2026). Esr1-dependent signaling and transcriptional maturation in the medial preoptic area of the hypothalamus shape the development of mating behavior during adolescence. eLife, 14, RP106347. https://
BibTeX
@article{hashikawa2026es
author = {Hashikawa, Koichi and Hashikawa, Yoshiko and Briones, Brandy and Ishii, Kentaro K and Liu, Yuejia and Rossi, Mark and Basiri, Marcus L and Chen, Jane Y and Ahmad, Omar and Mukundan, Rishi and Johnston, Nathan and Simon, Rhiana and Soetedjo, James and Siputro, Jason and McHenry, Jenna and Palmiter, Richard D and Rubinow, David and Zweifel, Larry S and Stuber, Garret D},
title = {{Esr1-dependent signaling and transcriptional maturation in the medial preoptic area of the hypothalamus shape the development of mating behavior during adolescence}},
journal = {eLife},
year = {2026},
month = jun,
volume = {14},
pages = {RP106347},
publisher = {eLife Sciences Publications, Ltd},
issn = {2050-084X},
doi = {10.7554/
url = {https://
pmid = {42318880},
pmcid = {PMC13282117}
}
RIS
TY - JOUR
AU - Hashikawa, Koichi
AU - Hashikawa, Yoshiko
AU - Briones, Brandy
AU - Ishii, Kentaro K
AU - Liu, Yuejia
AU - Rossi, Mark
AU - Basiri, Marcus L
AU - Chen, Jane Y
AU - Ahmad, Omar
AU - Mukundan, Rishi
AU - Johnston, Nathan
AU - Simon, Rhiana
AU - Soetedjo, James
AU - Siputro, Jason
AU - McHenry, Jenna
AU - Palmiter, Richard D
AU - Rubinow, David
AU - Zweifel, Larry S
AU - Stuber, Garret D
TI - Esr1-dependent signaling and transcriptional maturation in the medial preoptic area of the hypothalamus shape the development of mating behavior during adolescence
T2 - eLife
J2 - eLife
PY - 2026
DA - 2026/
VL - 14
SP - RP106347
SN - 2050-084X
PB - eLife Sciences Publications, Ltd
DO - 10.7554/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.7554/
"type": "article-journal",
"title": "Esr1-dependent signaling and transcriptional maturation in the medial preoptic area of the hypothalamus shape the development of mating behavior during adolescence",
"container-title": "eLife",
"author": [
{
"family": "Hashikawa",
"given": "Koichi"
},
{
"family": "Hashikawa",
"given": "Yoshiko"
},
{
"family": "Briones",
"given": "Brandy"
},
{
"family": "Ishii",
"given": "Kentaro K"
},
{
"family": "Liu",
"given": "Yuejia"
},
{
"family": "Rossi",
"given": "Mark"
},
{
"family": "Basiri",
"given": "Marcus L"
},
{
"family": "Chen",
"given": "Jane Y"
},
{
"family": "Ahmad",
"given": "Omar"
},
{
"family": "Mukundan",
"given": "Rishi"
},
{
"family": "Johnston",
"given": "Nathan"
},
{
"family": "Simon",
"given": "Rhiana"
},
{
"family": "Soetedjo",
"given": "James"
},
{
"family": "Siputro",
"given": "Jason"
},
{
"family": "McHenry",
"given": "Jenna"
},
{
"family": "Palmiter",
"given": "Richard D"
},
{
"family": "Rubinow",
"given": "David"
},
{
"family": "Zweifel",
"given": "Larry S"
},
{
"family": "Stuber",
"given": "Garret D"
}
],
"container-title-short":
"volume": "14",
"page": "RP106347",
"DOI": "10.7554/
"PMID": "42318880",
"PMCID": "PMC13282117",
"ISSN": "2050-084X",
"publisher": "eLife Sciences Publications, Ltd",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
6,
19
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.7554/elife.81868 [code]
- Molecular and anatomical characterization of parabrachial neurons and their axonal projections.Journal: eLifeIn common: Seurat, reshape2, ggplot2, 1 other tool, mouse, 5 references, 4 authors
- [2] doi:10.1016/j.celrep.2025.115858 [code]
- Decoding gene networks controlling hypothalamic and prethalamic neuron development.Journal: Cell reportsIn common: Monocle 3, anndata, Scanpy, 12 other tools, genetics / omics, mouse, 7 references
- [3] doi:10.1038/s41586-025-08603-0 [code]
- Sensory input, sex and function shape hypothalamic cell type development.Journal: NatureIn common: Scanpy, igraph, pheatmap, 11 other tools, genetics / omics, mouse, 8 references
- [4] doi:10.1038/s41588-024-01664-3 [code]
- BANKSY unifies cell typing and tissue domain segmentation for scalable spatial omics data analysis.Journal: Nature geneticsIn common: anndata, Scanpy, igraph, 12 other tools, Dryad 10.5061/dryad.8t8s248, genetics / omics, mouse, 3 references
- [5] doi:10.1016/j.celrep.2025.116877 [code]
- Spatially resolved molecular sex differences at single-cell resolution in the adult human ventromedial and arcuate hypothalamus.Journal: Cell reportsIn common: anndata, Scanpy, igraph, 12 other tools, genetics / omics, 6 references
- [6] doi:10.1016/j.celrep.2025.116165 [code]
- Spatiotemporal profiling reveals the impact of caloric restriction in the aging mammalian brain.Journal: Cell reportsIn common: Monocle 3, anndata, Scanpy, 13 other tools, genetics / omics, mouse, 5 references
- [7] doi:10.1038/s41467-023-40744-6 [code]
- Projecting RNA measurements onto single cell atlases to extract cell type-specific expression profiles using scProjection.Journal: Nature communicationsIn common: anndata, Scanpy, igraph, 12 other tools, Dryad 10.5061/dryad.8t8s248, genetics / omics, 2 references
- [8] doi:10.1016/j.crmeth.2023.100498 [code]
- hdWGCNA identifies co-expression networks in high-dimensional transcriptomics data.Journal: Cell reports methodsIn common: Monocle 3, anndata, Scanpy, 12 other tools, genetics / omics, 7 references
- [9] doi:10.1016/j.xgen.2025.101101 [code]
- Transcript-guided targeted cell enrichment for scalable single-nucleus RNA sequencing.Journal: Cell genomicsIn common: Monocle 3, anndata, Scanpy, 14 other tools, genetics / omics, mouse, 3 references
- [10] doi:10.1016/j.xcrm.2026.102766 [code]
- A longitudinal single-cell and spatial multiomic atlas of pediatric high-grade glioma.Journal: Cell reports. MedicineIn common: Monocle 3, anndata, Scanpy, 14 other tools, genetics / omics, 3 references
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 2 repositories of the authors' code, each at its verified commit and with its license, 33 scripts, and 9 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:4ec280571272b250…
Add the badge to the code's README
If you are an author or a maintainer of this paper's code, you can add this badge. It says what OSCR knows of the paper (its code, its validated tracing map) and links the code to this page. Paste one of these snippets under the README's title. Keep the two marks around it, so that the badge can be replaced in place and is never added twice. OSCR changes nothing in your repository.
Markdown
<!-- oscr-badge:start -->
[](https://openscicode.org/badge/doi/10.7554/elife.106347)
<!-- oscr-badge:end -->reStructuredText
.. oscr-badge:start
.. image:: https://openscicode.org/badge/doi/10.7554/elife.106347.svg
:target: https://openscicode.org/badge/doi/10.7554/elife.106347
:alt: OSCR
.. oscr-badge:endHTML
<!-- oscr-badge:start -->
<a href="https://openscicode.org/badge/doi/10.7554/elife.106347"><img src="https://openscicode.org/badge/doi/10.7554/elife.106347.svg" alt="OSCR"></a>
<!-- oscr-badge:end -->On GitHub, open the README, choose Edit (the pencil), paste the snippet under the title, then "Commit changes".
If you choose to, you can have the badge kept up to date for you, with oscr badge --write from the command line or with the GitHub Action in your repository's workflows. Every other form and option (a card, AsciiDoc, LaTeX, shields.io) is on the badge page.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: code errors and mismatches between the code and the paper about this paper and its code, from readers and its authors, beside the paper and its tracing map.
Report a mismatch between the code and the paper · Report a code error (signed in)
Reproductions: reports from readers who ran the authors' code and did not get the paper's result, what they ran, with which environment, commit and data.
Report a reproduction failure (signed in)
Versions of its code: the releases of its code tied to a version of this paper (the preprint, the accepted manuscript, the version of record…), each with the tracing map versioned with it.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
