Is there a way to import gene list into Seurat to define cell type? The default cell types in Seurat is not enough for our research. For example, we want to mark a subtype of B cells in Seurat, but seems like Seurat only have general B cell, I'm planning to download gene list from Genomic Cytometry, and then import the gene list into Seurat and then Seurat define cell types in the cluster based on the gene list I import. Does Seurat support this function?

  • $\begingroup$ Welcome to the site. Did you find anything on the vignette and on the several questions (and answers) posted online? $\endgroup$
    – llrs
    Commented Jun 20, 2019 at 7:07
  • $\begingroup$ I checked, but unfortunately I couldn't find any information. $\endgroup$ Commented Jun 20, 2019 at 23:52
  • $\begingroup$ I am in roughly the same situation: I have a list of marker genes for each cell type, and I now I want to assign a cell type to each cell using this. Did you ended up finding solution and would you mind sharing? $\endgroup$ Commented Jul 7, 2020 at 14:33

3 Answers 3


You can use scID with your gene list to find the cells that match your gene list. You can then find which cluster in Seurat have these cells.


Seurat does not define cell types by name. It clusters and assigns each cell to a cluster, from 0 to X. If your data has the cell type (e.g. B,T, Mast cells) it means that someone annotate the clusters so that they have a biological meaning.

You can assign different names to the clusters by using the AddMetaData function.

sampleID  cellType
cell1     B
cell2     B
cell3     T
cell4     T

newMeta <- oldMEta
newMeta$origType <- newMeta$cellType
newMeta$cellType <- c("B1","B","Treg","Tkill")

object <- AddMetaData(object, newMeta)

The new metadata should look like

sampleID  origType  cellType
cell1     B         B1
cell2     B         B
cell3     T         Treg
cell4     T         Tkill

You can then swap the labels using SetAllIdent(object = test, id = "cellType"). Your tSNE or uMAp, will now show the new cell types.

Have a look at Manually define clusters in Seurat and determine marker genes

  • $\begingroup$ Thank you so much for your answer. But actually I want to define a new subtype of B cells in the B cell cluster. I know the genes that express the new subtype of B cells, but the current Seurat cluster only showing the general B cell. I'm thinking about doing a subtype of B cells, and then import the the gene list to the Seurat to see if Seurat can show the subtype of B cells based on the gene list I provided. I'm not sure if Seurat can do this. $\endgroup$ Commented Jun 20, 2019 at 23:51
  • $\begingroup$ Seurat does not use gene lists to cluster the data. What I usually do to look for sub-cell types, is to subset the dataset (only the cells from one cluster) and re-run the clustering/PCA steps to see how those cells (and only those cells) are clustering together. The expression of your genes will tell you if the sub-clusters contains specific sub-types. Have a look at the Seurat documentation under "Selecting particular cells and subsetting the Seurat object". $\endgroup$
    – fra
    Commented Jun 21, 2019 at 7:05
  • $\begingroup$ Hello, you mentioned that Seurat not use gene list to cluster data, but I thought that Seurat cluster cells based on the expression of certain genes, if a cells have high expression in certain genes, they will be define as a specific cell types, do you mean that this is not the case? $\endgroup$ Commented Jun 25, 2019 at 20:32
  • $\begingroup$ Seurat clusters based on the expression of certain genes, but those genes will be determined independently for each experiment. By default, it would be the most variable genes. It does not know if those genes have been previously described to be associated with a specific cell type. $\endgroup$
    – burger
    Commented Jun 26, 2019 at 1:27

Maybe you can try Seurat::AddModuleScore(), then FeaturePlot() and see if some of your B cells are different. After plotting this on GenePlot(), perhaps you can set a cutoff, then assign identities.

Alternatively, use your B cell gene list in RunPCA(object, pc.genes = yourgenelist) instead of the usual variable genes. You can also subset B cells first with SubsetData(), and run the above.


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.