OSCR

Odorant receptor coexpression and multi-expression in the dengue mosquito.

Code ↔ Paper

16 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 16 matches · 2 of them tie a paragraph to a whole file, not to given lines: weak matches, whose lines are not tinted
  1. [1] § Methods › THSN and OSN renormalization and clustering ↔ AllNeuron_analyses_v4.R, lines 1–45 · score 0.81 · nompC, OSN cluster, Ir93a, junk, UMAP, mechanosensory
  2. [2] § Results › Twelve small subpopulations of candidate heat and humidity sensors ↔ THSN_analyses_v4.R, the whole file · a weak match · score 0.74 · Ir21a, Ir40a, hygrosensory neurons, Ir93a, THSNs, thermo
  3. [3] § Methods › Genome reannotation ↔ orcoMinusOSN_analyses_v8.R, lines 1–42 · score 0.70 · Drosophila orthologs, AaegL5, mosquito genes, renaming, grep, gtf
  4. [4] § Methods › Data preprocessing, ambient RNA decontamination and doublet removal ↔ THSN_analyses_v4.R, the whole file · a weak match · score 0.69 · CellRanger, pre clustering, Seurat, libraries, dims, UMAPs
  5. [5] § Methods › Genome reannotation ↔ AllNeuron_analyses_v4.R, lines 1–45 · score 0.67 · Drosophila orthologs, AaegL5, mosquito genes, grep, gtf, match
  6. [6] § Methods › Quantification of co-receptor expression in all neuron clustering ↔ orcoMinusOSN_analyses_v8.R, lines 44–87 · score 0.64 · co receptor, Ir8a, Ir76b, Ir25a, cutoff, break
  7. [7] § Methods › Quantification of co-receptor expression in all neuron clustering ↔ orcoPlusOSN_analyses_v7.R, lines 42–95 · score 0.64 · co receptor, Ir8a, Ir76b, Ir25a, cutoff, break
  8. [8] § Results › Segregated expression of ligand-specific ORs and IRs ↔ AllNeuron_analyses_v4.R, lines 47–108 · score 0.62 · OSN clusters, Ir8a, Ir76b, Ir25a, coreceptor, Ligand
  9. [9] § Methods › Data preprocessing, ambient RNA decontamination and doublet removal ↔ orcoMinusOSN_analyses_v8.R, lines 1–42 · score 0.58 · CellRanger, pre clustering, dims, Seurat, UMAPs, match
  10. [10] § Methods › Receptor gene tree inference ↔ orcoMinusOSN_analyses_v8.R, lines 205–239 · score 0.57 · cophenetic.phylo, Phylogenetic distances, trees, IR
  11. [11] § Methods › Receptor gene tree inference ↔ orcoPlusOSN_analyses_v7.R, lines 205–255 · score 0.56 · cophenetic.phylo, Phylogenetic distances, trees
  12. [12] § Methods › Quantification of receptor expression in THSN, orco + OSN, and orco- OSN clusters ↔ orcoPlusOSN_analyses_v7.R, lines 42–95 · score 0.55 · median log2FC, subtracting, breaks, thresholds, OSNs, orco
  13. [13] § Methods › Quantification of receptor expression in THSN, orco + OSN, and orco- OSN clusters ↔ orcoMinusOSN_analyses_v8.R, lines 44–87 · score 0.53 · median log2FC, subtracting, breaks, thresholds, orco, OSNs
  14. [14] § Methods › Quantification of receptor expression in THSN, orco + OSN, and orco- OSN clusters ↔ orcoMinusOSN_analyses_v8.R, lines 136–198 · score 0.52 · Pearson correlations, co expression, orco, OSN, clusters, receptor
  15. [15] § Methods › Quantification of receptor expression in THSN, orco + OSN, and orco- OSN clusters ↔ orcoPlusOSN_analyses_v7.R, lines 143–198 · score 0.52 · Pearson correlations, co expression, orco, OSN, clusters, receptor
  16. [16] § Methods › Genome reannotation ↔ Reannotation_ThreePrimeUTR_Extender.py, lines 467–472 · score 0.51 · gff3sort.pl, gffread, UTRs, gtf, reannotation

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

R · 240 lines · 14 KB · no license · 6 matches

  1. library(Seurat)
  2. library(viridis)
  3. library(plotrix)
  4. library(scCustomize)
  5. library(scales)
  6. # LOAD pre-clustered orco- OSN data object
  7. # Navigate to directory containing the R object THSN_Seurat_object.Rdata
  8. load("orcoMinusOSN_Seurat_object.Rdata")
  9. MyOrcoMinusOSNs <- IR_Seurat
  10. total_droplets<-ncol(MyOrcoMinusOSNs) # 12,243 droplet dataset
  11. clustorder=c("0","7","13","2","10a","10b","1","17","6","12","15","3","16","11","5","4","9","14a","14b","8")
  12. # Fig. 3A and S11: Visualize UMAPs for clusters, batches, and key marker genes
  13. # Note that the AaegL5 gtf annotation used for the CellRanger alignments underlying these data uses
  14. # "OrX", "IrX", "GrX" names for chemosensory receptors. Other genes are named using the associated
  15. # AAEL number followed by the name of the Drosophila ortholog (*where orthologs include multiple
  16. # mosquito genes that have the same best match in Drosophila). For example, "AAEL019818" was changed
  17. # to "AAEL019818-nompC". See Methods
  18. DimPlot(MyOrcoMinusOSNs, pt.size=0.5, label=T) # Fig. 3A
  19. DimPlot(MyOrcoMinusOSNs, group.by="orig.ident", pt.size=0.5)
  20. FeaturePlot(MyOrcoMinusOSNs, feature="Ir25a", pt.size=0.5, cols=rev(viridis(100, option='D')), order=T)
  21. FeaturePlot(MyOrcoMinusOSNs, feature="Ir8a", pt.size=0.5, cols=rev(viridis(100, option='D')), order=T)
  22. FeaturePlot(MyOrcoMinusOSNs, feature="Ir76b", pt.size=0.5, cols=rev(viridis(100, option='D')), order=T)
  23. FeaturePlot(MyOrcoMinusOSNs, feature="Ir64a", pt.size=0.5, cols=rev(viridis(100, option='D')), order=T)
  24. genes <- rownames(MyOrcoMinusOSNs)
  25. FeaturePlot(MyOrcoMinusOSNs, features = genes[grep('Amt',genes)], pt.size=0.6, cols=rev(viridis(100, option='D')), order=T) #UMAP for gene of interest with "XXX" somewhere in name
  26. # Fig 3B and S12A-B: Choosing and using log2FC' cutoff to call receptor expression
  27. #------- OPTIONAL (used in Fig. 3B): Merging 4/9 and 14a/14b due to expression of same/similar complement of receptors
  28. MyOrcoMinusOSNs<-RenameIdents(MyOrcoMinusOSNs,"4"="4_9", "9"="4_9", "14a"="14a_14b", "14b"="14a_14b")
  29. clustorder=c("0","7","13","2","10a","10b","1","17","6","12","15","3","16","11","5","4_9","14a_14b","8")
  30. #-------- Assembling list of tuning receptors detected in at least one droplet
  31. receptorlist = rownames(MyOrcoMinusOSNs$SCT@data)[grep('^[OIG]r',rownames(MyOrcoMinusOSNs$SCT@data))] # Add all expressed ORs, GRs, IRs to list
  32. receptorlist <- c(receptorlist, rownames(MyOrcoMinusOSNs$SCT@data)[grep('Amt',rownames(MyOrcoMinusOSNs$SCT@data))]) # Add Amt to list
  33. receptorlist <- receptorlist[!rowSums(MyOrcoMinusOSNs$SCT@data[receptorlist,])==0] # Remove receptors that were not detected in any orco- OSN droplet
  34. #-------- Calculating Log2FC' for each receptor gene in each cluster
  35. MyMarkers <- FindAllMarkers(MyOrcoMinusOSNs, features=receptorlist, logfc.threshold=0, return.thresh=1, min.pct=0, test.use='t')
  36. log2FC <- matrix(NA, nrow=length(receptorlist), ncol=length(levels(MyMarkers$cluster))) # create empty matrix
  37. colnames(log2FC) <- levels(MyMarkers$cluster) # columns are clusters
  38. rownames(log2FC) <- receptorlist # rows are receptors
  39. for(i in 1:nrow(MyMarkers)){ # populate matrix with ave_log2FC values
  40. log2FC[MyMarkers$gene[i],as.character(MyMarkers$cluster[i])]<-MyMarkers$avg_log2FC[i]
  41. }
  42. log2FC[is.na(log2FC)] <- 0 #replacing NAs with 0s
  43. med.att <- apply(log2FC, 1, median) #calculating median Log2FC values (for each gene across clusters)
  44. log2FCprime <- sweep(log2FC, 1, med.att) #subtract median Log2FC value from cluster-specific Log2FCs to get Log2FC'
  45. #---------- Fig. S12A: Plotting log2FC` Histogram (includes values for each Ir/Gr/Or in each cluster)
  46. par(mfrow=c(2,1))
  47. hist(log2FCprime, xlim=c(-2,7), breaks=seq(-2,7,0.1))
  48. abline(v=0.4, col='red') # add threshold value used for calling expression (see below)
  49. hist(log2FCprime, xlim=c(-2,7), ylim=c(0,20), breaks=seq(-2,7,0.1))
  50. abline(v=0.4, col='red') # add threshold value used for calling expression (see below)
  51. #---------- Fig. 3B and S12B: Plotting heatmap of log2FC` values (with dots marking those expressed above cutoff of 0.4)
  52. cutoffthresh = 0.4
  53. displaythresh = cutoffthresh
  54. displaythresh = 0.15 # used for Fig. S12B-C
  55. abovedisplaythresh <- rownames(log2FCprime)[apply(log2FCprime,1,max)>displaythresh]
  56. abovedisplaythresh <- abovedisplaythresh[!(abovedisplaythresh %in% c("Orco","Ir25a","Ir76b","Ir8a","Ir93a"))] # exclude co-receptors from log2FC' heatmap
  57. log2FCP_Heatmap_tuning <-log2FCprime[abovedisplaythresh,clustorder]
  58. receptororder <- abovedisplaythresh[order(apply(log2FCP_Heatmap_tuning,1,which.max))] # order receptors by maximal expression in each sequential cluster
  59. receptororder <- receptororder[c(grep('^[O]r',receptororder),grep('^[G]r',receptororder),grep('^[I]r',receptororder))] # pull Grs and Irs to front
  60. log2FCP_Heatmap_tuning <-log2FCP_Heatmap_tuning[receptororder,]
  61. log2FCP_Heatmap_tuning[log2FCP_Heatmap_tuning<0]<-0 #converting negative log2FC` values to zero
  62. log2FCP_Heatmap <- log2FCP_Heatmap_tuning
  63. color_palette=c(colorRampPalette(c(alpha("white", alpha = 0),'#FDE333'))(10),hcl.colors(450, palette = 'viridis', alpha = NULL, rev = T, fixup = TRUE))
  64. par(mfrow=c(1,1))
  65. image(t(log2FCP_Heatmap),col=color_palette,axes=F,zlim=c(0,round(max(log2FCP_Heatmap))), main='Log2FC`')
  66. axis(3,at=seq(0,1,length=ncol(log2FCP_Heatmap)),las=2,labels=colnames(log2FCP_Heatmap),cex.axis=0.5,lwd=0)
  67. axis(2,at=seq(0,1,length=nrow(log2FCP_Heatmap)),las=2,labels=rownames(log2FCP_Heatmap),cex.axis=0.5,lwd=0)
  68. color.legend(0.05,-0.15,0.2,-0.17,rect.col=color_palette,legend=c(0,round(max(log2FCP_Heatmap))),align='rb')
  69. for(i in 1:length(clustorder)){
  70. for(j in 1:length(receptororder)){
  71. if(log2FCP_Heatmap[receptororder[j],clustorder[i]]>cutoffthresh) text(seq(0,1,length=length(clustorder))[i],
  72. seq(0,1,length=nrow(log2FCP_Heatmap))[j],labels='.',cex=1, col = "black")
  73. }
  74. }
  75. # Fig S12C: Visualizing alternative log average expression cutoff for receptors
  76. AveExp <- AverageExpression(MyOrcoMinusOSNs, features=receptorlist, return.seurat=T)
  77. AveExp_tuning <- AveExp$SCT@data[receptororder,clustorder] # extracting log normalized average counts for same tuning receptors that met the log2FC display threshold used above
  78. AveExp_co <- AveExp$SCT@data[c("Ir25a","Ir76b","Ir8a"),clustorder] # extracting log normalized average counts for co-receptors
  79. #---------- Explore histogram of log average expression values for each receptor in each cluster to choose cutoff
  80. par(mfrow=c(2,1))
  81. hist(AveExp_tuning, breaks=seq(0,5,0.01), main='logAveExpression')
  82. hist(AveExp_tuning, ylim=c(0,50), breaks=seq(0,5,0.01), xlim=c(0,1),main='logAveExpression')
  83. abline(v=0.15)
  84. #---------- Plotting heatmap of log average expression values (including co-receptors)
  85. AveExpcutoffthresh = 0.15
  86. AveExp_Heatmap <- rbind(AveExp_co,AveExp_tuning)
  87. Corcols=hcl.colors(450, palette = 'rocket', alpha = NULL, rev = T, fixup = TRUE)
  88. par(mfrow=c(1,1))
  89. image(t(AveExp_Heatmap),col=Corcols,axes=F, zlim=c(0,ceiling(max(AveExp_Heatmap))), main='Log average expression')
  90. axis(3,at=seq(0,1,length=ncol(AveExp_Heatmap)),las=2,labels=colnames(AveExp_Heatmap),cex.axis=0.5,lwd=0)
  91. axis(2,at=seq(0,1,length=nrow(AveExp_Heatmap)),las=2,labels=rownames(AveExp_Heatmap),cex.axis=0.3,lwd=0)
  92. color.legend(0.05,-0.15,0.2,-0.17,rect.col=Corcols,legend=c(0,ceiling(max(AveExp_Heatmap))),align='rb')
  93. # add dots for receptors that exceed log ave expression threshold
  94. for(i in 1:length(clustorder)){
  95. for(j in 1:length(receptororder)){
  96. y<-j+3 # accounts for space taken up by co-receptors at bottom of plot
  97. if(AveExp_Heatmap[receptororder[j],clustorder[i]]>AveExpcutoffthresh) text(seq(0,1,length=length(clustorder))[i],
  98. seq(0,1,length=nrow(AveExp_Heatmap))[y],labels='.',cex=1, col = "black")
  99. }
  100. }
  101. # Fig. S12D-E: Calculating and plotting pairwise Pearson's correlations
  102. #---------- Refresh list of receptors with log2FC'>0.15 in at least one cluster and get count data for all droplets
  103. myreceptors <- rownames(log2FCprime)[apply(log2FCprime,1,max)>displaythresh]
  104. myreceptors <- myreceptors[!(myreceptors %in% c("Orco","Ir25a","Ir76b","Ir8a","Ir93a"))]
  105. MyData <- subset(MyOrcoMinusOSNs,features=myreceptors)
  106. MyMatrix <- t(as.matrix(MyData@assays$SCT@data))
  107. #---------- Generate matrix of pairwise correlations and reorder the receptors
  108. log2FCP_matrix <- log2FCprime[myreceptors,clustorder]
  109. receptororder <- myreceptors[order(apply(log2FCP_matrix,1,which.max))] # order receptors by maximal expression in each sequential cluster
  110. receptororder <- receptororder[c(grep('^[G]r',receptororder),grep('^[I]r',receptororder))] # pull Grs and Irs to front
  111. cormat <- cor(MyMatrix, method = "pearson", use = 'everything')
  112. cormat <- cormat[receptororder,receptororder] # reorder receptors
  113. #---------- Generate matrix showing which genes are called as coexpressed in at least one cluster
  114. coexp = matrix(data=F, nrow=length(receptororder), ncol=length(receptororder))
  115. colnames(coexp) <- receptororder
  116. rownames(coexp) <- receptororder
  117. for (i in 1:nrow(coexp)) {
  118. for (j in 1:ncol(coexp)) {
  119. is_coexp = F
  120. for (k in 1:ncol(log2FCP_Heatmap)) { # check whether the two receptors BOTH have log2FC'>0.3 in any of k clusters
  121. if (sum(c(log2FCP_Heatmap[receptororder[i],k]>cutoffthresh,log2FCP_Heatmap[receptororder[j],k]>cutoffthresh))==2) { is_coexp = T }
  122. }
  123. if (is_coexp) { coexp[i,j] = T }
  124. }
  125. }
  126. #---------- Fig. S12E: Plot heatmap of pairwise correlations for all receptors with log2FC'>0.15 in at least one cluster
  127. par(mfrow=c(1,1))
  128. image(cormat,col=viridis(256, direction = -1, option = "B"),zlim=c(0,1),axes=F)
  129. axis(1,at=seq(0,1,length=nrow(cormat)),las=2,labels=rownames(cormat),cex.axis=0.5,lwd=0)
  130. axis(2,at=seq(0,1,length=ncol(cormat)),las=2,labels=colnames(cormat),cex.axis=0.5,lwd=0)
  131. color.legend(0.01,0.99,0.1,1.0,rect.col=viridis(256, direction = -1, option = "B"),legend=c(0,1),align='rb')
  132. # Add dots for squares that correspond to receptors called as co-expressed
  133. for(i in 1:length(receptororder)){
  134. for(j in 1:length(receptororder)){
  135. if(coexp[receptororder[i],receptororder[j]]) text(seq(0,1,length=length(receptororder))[i],
  136. seq(0,1,length=length(receptororder))[j],labels='.',cex=1, col = "black")
  137. }
  138. }
  139. #---------- Limit matrices to 'expressed' IRs (with log2FC'>0.4 in at least one cluster)
  140. myexpressedIRs <- rownames(log2FCprime)[apply(log2FCprime,1,max)>cutoffthresh]
  141. myexpressedIRs <- myexpressedIRs[!(myexpressedIRs %in% c("Orco","Ir25a","Ir76b","Ir8a","Ir93a"))]
  142. myexpressedIRs <- myexpressedIRs[grep('^[I]r',myexpressedIRs)] #limit to IRs only
  143. cormat2 <- cormat
  144. cormat2 <- cormat2[rownames(cormat2) %in% myexpressedIRs,colnames(cormat2) %in% myexpressedIRs]
  145. coexp2 <- coexp
  146. coexp2 <- coexp2[rownames(coexp2) %in% myexpressedIRs,colnames(coexp2) %in% myexpressedIRs]
  147. #---------- Fig. S12D: Plotting histogram of pairwise Pearson correlations for 'expressed' IRs
  148. YEScoexpressed <- cormat2[upper.tri(cormat2, diag=F)][coexp2[upper.tri(cormat2, diag=F)]]
  149. NOcoexpressed <- cormat2[upper.tri(cormat2, diag=F)][!coexp2[upper.tri(cormat2, diag=F)]]
  150. par(mfrow=c(2,1))
  151. hist(NOcoexpressed, xlim=c(-0.2,0.9), breaks=seq(-0.2,0.9,0.02))
  152. hist(YEScoexpressed, xlim=c(-0.2,0.9), breaks=seq(-0.2,0.9,0.02))
  153. # Fig. S10: Dotplots of marker expression
  154. MyOrcoMinusOSNs_Marks<-FindAllMarkers(MyOrcoMinusOSNs,logfc.threshold=0.3, return.thresh=1,min.pct=0,test.use='t', only.pos = T)
  155. MyOrcoMinusOSNs_markers <- Extract_Top_Markers(marker_dataframe = MyOrcoMinusOSNs_Marks, num_genes = 900, named_vector = FALSE,
  156. make_unique = TRUE)
  157. Clustered_DotPlot(seurat_object = MyOrcoMinusOSNs, features = MyOrcoMinusOSNs_markers, exp_color_min=0, exp_color_max = 2,
  158. colors_use_exp = viridis(50, direction = -1, option = "D"), plot_km_elbow=F, raster = T)
  159. # Fig. 5A: Plot phylogenetic VS genome distance for pairs of receptors
  160. IRcoexp <- coexp2 # use geneset that includes all IRs with log2FC'>0.4
  161. #---------- Load genomic distances
  162. # Use the following linux code to extract OR and IR start positions from the updated annotation file
  163. # awk '$3 == "transcript" && $12 ~ /^\"[OI]r/ {split($12, a, "\""); print $1 "\t" $4 "\t" a[2]}' AaegyptiLVP_AGWG_ThreePrimeUTRextended_Adavi2024.gtf > ORIRpositions.txt
  164. # Navigate to directory containing the new file
  165. genomicPositions <- read.table("ORIRpositions.txt", header=T)
  166. rownames(genomicPositions) <- genomicPositions$Gene
  167. calculate_distance <- function(gene1, gene2) {
  168. if (gene1$Chr == gene2$Chr) {distance <- abs(gene1$Start - gene2$Start)} #if genes on same chromosome
  169. else {distance <- 600000000} #or else just return very large number
  170. return(distance)
  171. }
  172. #---------- Load pairwise phylogenetic distances from treefile
  173. library(ggtree)
  174. library(ape)
  175. # Navigate to directory containing the new file
  176. tree_Aedes_irs <- read.tree(file = "Aedes_IR_tree.txt") # Load IR tree
  177. tree_Aedes_irs <- root(tree_Aedes_irs,outgroup='Ir25a') # Re-root tree
  178. IRpairwise_phylo <- cophenetic.phylo(tree_Aedes_irs)
  179. #---------- Populate matrices
  180. IRgenodist <- matrix(nrow=nrow(IRcoexp), ncol=ncol(IRcoexp))
  181. rownames(IRgenodist) <- rownames(IRcoexp)
  182. colnames(IRgenodist) <- colnames(IRcoexp)
  183. IRphylodist <- IRgenodist
  184. IRcoexpcol <- matrix("black",nrow=nrow(IRcoexp), ncol=ncol(IRcoexp))
  185. IRcoexpcol[IRcoexp] <- "green"
  186. for (i in (1:nrow(IRcoexp))) {
  187. for (j in (1:ncol(IRcoexp))) {
  188. gene1 <- rownames(IRcoexp)[i]
  189. gene2 <- colnames(IRcoexp)[j]
  190. IRgenodist[i,j] <- calculate_distance(genomicPositions[gene1,],genomicPositions[gene2,])
  191. IRphylodist[i,j] <- IRpairwise_phylo[gene1,gene2]
  192. }
  193. }
  194. #---------- Fig. 5A: Plot genomic by phylogenetic distances (colored by whether genes are coexpressed)
  195. par(mfrow=c(2,1))
  196. MyGenodists = log10(IRgenodist[upper.tri(IRcoexp)])
  197. for (i in 1:length(MyGenodists)) { if (MyGenodists[i]==log10(600000000)) MyGenodists[i]=jitter(9,factor=0.3) }
  198. plot(MyGenodists,IRphylodist[upper.tri(IRcoexp)],xlab="Genomic distance (log10(bp))",ylab="Phylogenetic distance",col=IRcoexpcol[upper.tri(IRcoexp)])
  199. plot(IRgenodist[upper.tri(IRcoexp)],IRphylodist[upper.tri(IRcoexp)],xlab="Genomic distance (bp)",ylab="Phylogenetic distance",col=IRcoexpcol[upper.tri(IRcoexp)])
  200. #---------- Fig. 5A: Plot marginal densities for phylogenetic distances (separately for genes that are or are not coexpressed)
  201. par(mfrow=c(2,1))
  202. plot(density(IRphylodist[upper.tri(IRcoexp) & !IRcoexp]),xlim=c(0,0.14))
  203. plot(density(IRphylodist[upper.tri(IRcoexp) & IRcoexp]),xlim=c(0,0.14),col="green")

orcoMinusOSN_analyses_v8.R at commit ff813a7, no license · at the source

Overview

Authors: Elisha David1,2,3,4, Vitor L. dos Anjos5, Sumer M. Kotb5,6, Melanie Edwards5,7, Hillery C. Metz5,8, David Tian5,9, Zhilei Zhao1,5,10, Jessica L. Zung1,5,11, Noah H. Rose5,12, Carolyn S. McBride1,2,5
  1. Princeton Neuroscience Institute, Princeton University,Princeton, NJ USA
  2. Department of Molecular Biology, Princeton University,Princeton, NJ USA
  3. Present Address: EDEN Medical Genomics, Jerusalem, Israel
  4. Present Address: Leumit Health Services, Tel-Aviv, Israel
  5. Department of Ecology and Evolutionary Biology, Princeton University,Princeton, NJ USA
  6. Present Address: Biologics Process Research and Development, Merck & Co,Rahway, NJ USA
  7. Present Address: Muséum national d’Histoire naturelle,Paris, France
  8. Present Address: Medical and Scientific Affairs, Illumina Inc,San Diego, CA USA
  9. Present Address: Department of Ecology and Evolutionary Biology, University of California,Los Angeles, CA USA
  10. Present Address: State Key Laboratory of Animal Biodiversity and Conservation and Integrated Pest Management, Institute of Zoology, Chinese Academy of Sciences,Beijing, China
  11. Present Address: Zuckerman Mind Brain Behavior Institute, Columbia University,New York, NY USA
  12. Present Address: Department of Ecology, Behavior, and Evolution, University of California,San Diego, CA USA
Journal: Nature communications, volume 17, issue 1, article 9828
Dates: received 7 April 2026; accepted 4 August 2026; published online 15 August 2026
Type: Research article · Language: English
License: CC BY-NC-ND
Identifiers: DOI 10.1038/s41467-026-76682-2 · PMID 42736291 · PMCID PMC13575207 · OpenAlex W7203546563
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: genetics / omics (modality), other (organism), drosophila (organism), cellular / molecular (subfield)
Methods: Smoothing, state filtering, decompositions, Evoked potentials, Connectivity, Machine learning
Keywords: Olfactory receptors, Molecular neuroscience, Genetics of the nervous system
MeSH: Aedes*, Insect Proteins*, Olfactory Receptor Neurons*, Receptors, Odorant*, Animals, Dengue, Drosophila, Drosophila melanogaster, Female, Gene Expression Regulation, Transcriptome (* major topic)
Topic: Neurobiology and Insect Physiology Research (Cellular and Molecular Neuroscience, Neuroscience), according to OpenAlex
Funding: National Institute of Allergy and Infectious Diseases (R01AI175490); New York Stem Cell Foundation (NYSCF) (Robertson Neuroscience Investigator Award)
Citations: cited by 4 papers (Europe PMC); 71 references in the paper

Abstract

The abstract is not reproduced here: the paper's license (CC BY-NC-ND) does not allow it. Read it in the paper, at the publisher or on Europe PMC.

Repository

Its files are read in the Code ↔ Paper reader above, with 16 matches between paragraphs and lines of code.

mcbridelab/Adavi_2024_snRNAseqAaegAntennae

License: none: the authors keep all their rights
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: ff813a7183ae56cbf3a03a5458450fdf057e674e, 16 August 2024
Languages: R (4), Python (1)
Size: 9 files, 5 scripts
Software Heritage: not archived
Found in: “Code availability”
Holds: README
Not found: license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: Seurat (4 files), ggpubr (1 file), NumPy (1 file), tidyverse (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
6 files

Code availability statement

The paper has a code availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:

Read it in the paper: doi.org/10.1038/s41467-026-76682-2.

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:

  • 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 5 scripts, each with its path and the digest of its content;
  • 16 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

Data availability statement

The paper has a data availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:

Read it in the paper: doi.org/10.1038/s41467-026-76682-2.

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, issue, pages, dates, 10 authors, 3 keywords, 11 MeSH terms, 2 funders, 67 references.

Cite

This paper

David, E., dos Anjos, V. L., Kotb, S. M., Edwards, M., Metz, H. C., Tian, D., Zhao, Z., Zung, J. L., Rose, N. H., & McBride, C. S. (2026). Odorant receptor coexpression and multi-expression in the dengue mosquito. Nature communications, 17(1), 9828. https://doi.org/10.1038/s41467-026-76682-2

BibTeX

@article{david2026odorant,
author = {David, Elisha and dos Anjos, Vitor L. and Kotb, Sumer M. and Edwards, Melanie and Metz, Hillery C. and Tian, David and Zhao, Zhilei and Zung, Jessica L. and Rose, Noah H. and McBride, Carolyn S.},
title = {{Odorant receptor coexpression and multi-expression in the dengue mosquito}},
journal = {Nature communications},
year = {2026},
month = aug,
volume = {17},
number = {1},
pages = {9828},
publisher = {Nature Publishing Group},
issn = {2041-1723},
doi = {10.1038/s41467-026-76682-2},
url = {https://doi.org/10.1038/s41467-026-76682-2},
pmid = {42736291},
pmcid = {PMC13575207}
}

RIS

TY - JOUR
AU - David, Elisha
AU - dos Anjos, Vitor L.
AU - Kotb, Sumer M.
AU - Edwards, Melanie
AU - Metz, Hillery C.
AU - Tian, David
AU - Zhao, Zhilei
AU - Zung, Jessica L.
AU - Rose, Noah H.
AU - McBride, Carolyn S.
TI - Odorant receptor coexpression and multi-expression in the dengue mosquito
T2 - Nature communications
J2 - Nat Commun
PY - 2026
DA - 2026/08/15
VL - 17
IS - 1
SP - 9828
SN - 2041-1723
PB - Nature Publishing Group
DO - 10.1038/s41467-026-76682-2
UR - https://doi.org/10.1038/s41467-026-76682-2
LA - en
ER -

CSL-JSON

{
"id": "10.1038/s41467-026-76682-2",
"type": "article-journal",
"title": "Odorant receptor coexpression and multi-expression in the dengue mosquito",
"container-title": "Nature communications",
"author": [
{
"family": "David",
"given": "Elisha"
},
{
"family": "dos Anjos",
"given": "Vitor L."
},
{
"family": "Kotb",
"given": "Sumer M."
},
{
"family": "Edwards",
"given": "Melanie"
},
{
"family": "Metz",
"given": "Hillery C."
},
{
"family": "Tian",
"given": "David"
},
{
"family": "Zhao",
"given": "Zhilei"
},
{
"family": "Zung",
"given": "Jessica L."
},
{
"family": "Rose",
"given": "Noah H."
},
{
"family": "McBride",
"given": "Carolyn S."
}
],
"container-title-short": "Nat Commun",
"volume": "17",
"issue": "1",
"page": "9828",
"DOI": "10.1038/s41467-026-76682-2",
"PMID": "42736291",
"PMCID": "PMC13575207",
"ISSN": "2041-1723",
"publisher": "Nature Publishing Group",
"URL": "https://doi.org/10.1038/s41467-026-76682-2",
"language": "en",
"issued": {
"date-parts": [
[
2026,
8,
15
]
]
}
}

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.1371/journal.pbio.3003955 [code]
Beat- and Side-family cell-surface molecules are expressed combinatorially in the partner neurons of the olfactory circuit in Drosophila.
Journal: PLoS biology
In common: Seurat, ggpubr, tidyverse, drosophila, other, cellular / molecular, 7 references
[2] doi:10.1371/journal.pbio.3003959 [code]
Recurrent synapses between CO2-sensitive olfactory sensory neurons enable robust CO2 detection in Aedes aegypti mosquitoes.
Journal: PLoS biology
In common: NumPy, drosophila, cellular / molecular, 9 references
[3] doi:10.1007/s44297-026-00082-7
Functional conservation of IR75q.2 in the recognition of volatile acids and aldehydes in two Spodoptera species.
Journal: Crop health
In common: other, cellular / molecular, 5 references
[4] doi:10.1016/j.celrep.2026.117500 [code]
Spatio-molecular gene expression reflects dorsal anterior cingulate cortex structure and function in the human brain.
Journal: Cell reports
In common: Seurat, ggpubr, tidyverse, 1 other tool, genetics / omics, cellular / molecular, 2 references
[5] doi:10.1186/s13059-026-04177-w [code]
Genomic sequence evolution underlying human neocortical interareal diversification.
Journal: Genome biology
In common: Seurat, ggpubr, tidyverse, 1 other tool, genetics / omics, cellular / molecular, 2 references
[6] doi:10.1016/j.cell.2026.05.047 [code]
An emergent disease-associated motor neuron state precedes cell death in ALS.
Journal: Cell
In common: Seurat, ggpubr, tidyverse, 1 other tool, genetics / omics, cellular / molecular, 2 references
[7] doi:10.1038/s41467-026-74038-4 [code]
Semaglutide attenuates neuroinflammation in male mice.
Journal: Nature communications
In common: Seurat, ggpubr, tidyverse, 1 other tool, cellular / molecular, 2 references
[8] doi:10.1038/s41467-026-69944-6 [code]
Multi-modal dissection of cell-type specific TDP-43 pathology in the motor cortex.
Journal: Nature communications
In common: Seurat, ggpubr, tidyverse, 1 other tool, genetics / omics, 2 references
[9] doi:10.1016/j.crmeth.2026.101337 [code]
Comparative analysis of nuclei isolation methods for brain single-nucleus RNA sequencing.
Journal: Cell reports methods
In common: Seurat, ggpubr, tidyverse, genetics / omics, cellular / molecular, 2 references
[10] doi:10.1016/j.cpblue.2026.100072 [code]
NodoMap: A single-cell and spatial transcriptomic atlas of the mouse nodose ganglion.
Journal: Cell press blue
In common: Seurat, tidyverse, 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.

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.