I want to define two clusters of cells in my dataset and find marker genes that are specific to one and the other. Is there a way to do this in Seurat? Say, if I produce two subsets by the SubsetData function, is there a way to feed them into some other function that would calculate marker genes? If not, what other packages would you recommend for doing that?

If you look here:


I just need a way to define ident myself, the number of levels (2) and assign numbers to each cell (0, 1), and then run DE between 0 and 1 clusters which is obvious how to do afterwards.

  • $\begingroup$ A related issue was answered on github. Just as an alternative reference to the excellent answers below) $\endgroup$
    – Tapper
    Mar 14, 2019 at 17:31

2 Answers 2


I think you are looking to FindAllMarkers function from Seurat. As you said, you just have to define your ident, that have to have the structure of a table (cell names as names and cluster as value):


And then run the FindAllMarkers function:

FindAllMarkers(object1, min.pct = 0.25, min.diff.pct = 0.25)

You can specify several parameters in this function (type of DE to perform, thresholds of expression, etc).


Seurat has functions for adding metadata and setting identities. Get unique cell names:

cell.labels <- seuratobject@ident

Replace column and its name with your cluster labels (e.g.), then:

seuratobject <- AddMetaData(seuratobject, metadata=cell.labels)
seuratobject <- SetAllIdent(seuratobject, id='yourclusterlabels')

Because you want to contrast two clusters against each other, I suggest using FindMarkers() as opposed to FindAllMarkers():

FindMarkers(object, ident.1, ident.2)

It can also compare combinations of clusters.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.