cell type specific genes - heatmap using rank based approach I was wondering if some one can help me with pseudo r code for my approach here based on this paper to plot a heatmap
Figure 3

Figure description
The top 40 enriched genes percelltypeare shown in a heat map.Onlyhighlyexpressed genes with FPKM ⬎20 areincludedin this analysis. Fold enrichment iscalculatedasFPKM of one cell type divided by the average FPKM of all other cell types. The majority of these genes showed specific expression by only one cell type, with the exception that some are expressed during more than one maturation stage in the oligodendrocyte lineage.
Similar description in their methods:
Differential expression was calculated as the FPKM of a given cell type
divided by the average FPKM of all other cell types. Genes were ranked by
their fold enrichment in each cell type, and top enriched genes for each
cell type were identified
In my case I have 9 cell types(columns) and ~24000 genes(rows) from mouse and the values are TPMs.
I know to order celltype only based on one column like this
expr.order = expr[order(expr[,1],decreasing =T),]

Which clearly not the right way and would need some help with code in r
The figure caption says "the top 40 genes per celltype" - so we can simply use the code you provided for the top 40 genes for a single celltype, repeat this for all celltypes, and then remove any duplicate genes. Here's an example:

&gt; expr &lt;- matrix(runif(9*24000), nrow=24000, ncol=9)
&gt; top_genes_each_celltype &lt;- sapply(1:ncol(expr), function(i) order(expr[,i],decreasing =T)[1:40])
&gt; dim(top_genes_each_celltype)
[1] 40 9
&gt; top_genes_all_celltypes &lt;- unique(as.vector(top_genes_each_celltype))
&gt; length(top_genes_all_celltypes)
[1] 358


Then you can build a biclustered heatmap with expr[top_genes_all_celltypes,], for example, using heatmap2.