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–291 · score 0.81 · eVgat9, eVgat3, eVgat4, eVgat5, eVgat1, scRNAseq
- [2] § Materials and methods › Integrative clustering and differential gene expression analysis ↔ Integrating Esr1KOF and MPOA scRNAseq Fig4.ipynb, lines 26–37 · score 0.74 · RunUMAP, FindClusters, FindNeighbors, PCA, resolution, clustering
- [3] § Materials and methods › Integrative clustering and differential gene expression analysis ↔ Integrating Esr1KOM and MPOA scRNAseq Fig4.ipynb, lines 20–31 · score 0.74 · RunUMAP, FindClusters, FindNeighbors, PCA, resolution, clustering
- [4] § Materials and methods › Integrative clustering and differential gene expression analysis ↔ 210726 doublet_removal_only_paper.ipynb, lines 13–144 · score 0.64 · FindVariableFeatures, NormalizeData, transformation, Seurat, neighbor, matrix
- [5] § Materials and methods › Integrative analysis of MERFISH and scRNAseq data ↔ 210726 doublet_removal_only_paper.ipynb, lines 13–144 · score 0.60 · FindVariableFeatures, NormalizeData, POA, Seurat, clusters, V3
- [6] § Materials and methods › Integrative clustering and differential gene expression analysis ↔ Integrating Esr1KOF and MPOA scRNAseq Fig4.ipynb, lines 26–37 · score 0.59 · FindVariableFeatures, NormalizeData, scores, neighbor, clustering
- [7] § Materials and methods › DEG and trajectory analysis of scRNAseq in Esr1KO experiments ↔ Integrating Esr1KOM and MPOA scRNAseq Fig4.ipynb, lines 597–622 · score 0.59 · eMix1, eVgat1, Esr1KOM, clustering, V3, cells
- [8] § Materials and methods › DEG and trajectory analysis of scRNAseq in Esr1KO experiments ↔ Integrating Esr1KOF and MPOA scRNAseq Fig4.ipynb, lines 65–71 · score 0.58 · eMix1, eVgat1, Esr1KOF, V3
- [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–663 · score 0.50 · androgen receptor, steroid hormone receptor, AR, Neurons, gene, MPOA
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: 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.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, igraph, 14 other tools, genetics / omics, 3 references
- [2] doi:10.1038/s41586-026-10490-y [code]
- Lineage and organ signals sequentially build organ intrinsic nervous systems.Journal: NatureIn common: Monocle 3, anndata, Scanpy, 12 other tools, developmental, mouse, 3 references
- [3] doi:10.1038/s41586-026-10629-x [code]
- Whole-genome duplication shaped cell-type evolution in the vertebrate brain.Journal: NatureIn common: anndata, igraph, Scanpy, 13 other tools, genetics / omics, mouse, 2 references
- [4] doi:10.1038/s41467-026-75722-1 [code]
- Single-nucleus analysis of the adult human olfactory epithelium uncovers shared neurogenesis programs with the brain.Journal: Nature communicationsIn common: Monocle 3, anndata, Scanpy, 11 other tools, developmental, genetics / omics, 4 references
- [5] doi:10.1186/s13059-026-04177-w [code]
- Genomic sequence evolution underlying human neocortical interareal diversification.Journal: Genome biologyIn common: Monocle 3, anndata, igraph, 12 other tools, genetics / omics, mouse, 2 references
- [6] doi:10.1038/s41467-026-76675-1 [code]
- Long-read proteogenomic atlas of human neuronal differentiation reveals isoform diversity informing neurodevelopmental risk mechanisms.Journal: Nature communicationsIn common: Monocle 3, anndata, igraph, 13 other tools, developmental, genetics / omics
- [7] doi:10.1002/imt2.70163 [code]
- Spatial multi-omics unveils sphingolipid metabolic reprogramming within the retinal pathological niche.Journal: iMetaIn common: Monocle 3, anndata, igraph, 13 other tools, genetics / omics, mouse
- [8] doi:10.1038/s41593-026-02293-1 [code]
- Optics-free spatial genomics for mapping mammalian brain aging by IRISeq.Journal: Nature neuroscienceIn common: Monocle 3, Scanpy, Seurat, 10 other tools, genetics / omics, mouse, 4 references
- [9] doi:10.1016/j.isci.2026.116055 [code]
- Mapping the transcriptional diversity of calcium signaling in the mouse and human brain.Journal: iScienceIn common: Monocle 3, anndata, igraph, 10 other tools, genetics / omics, mouse, 3 references
- [10] doi:10.1126/sciadv.aeg3223 [code]
- The extreme diversity of retinal amacrine cells has deep evolutionary roots.Journal: Science advancesIn common: anndata, igraph, Scanpy, 11 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 its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
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: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
