I got an input matrix which RNA expression and ADT capture are combined into one file. I loaded the file into Seurat successfully, however, when I tried to create Seurat object, it threw out an error saying

Error in CreateAssayObject(counts = counts, min.cells = min.cells, min.features = min.features) : 
  No cell names (colnames) names present in the input matrix

How can I create Seurat object when RNA expression and ADT data are combine together?

  • $\begingroup$ It shouldn't be a problem to have both types of data into a matrix as long as they are identified (i.e different naming of the columns). From the error that you say it seems that there are no column names in your matrix? Did you try to add colnames and see if it works? $\endgroup$
    – plat
    Jul 5, 2019 at 6:51
  • $\begingroup$ @plat I checked the data and the columns(cell) name is there. I don't know why it keep saying no cell names presents. $\endgroup$ Jul 5, 2019 at 15:58
  • $\begingroup$ Then I don't know what is going on. Could you please edit your question with a minimal reproducible example (stackoverflow.com/help/minimal-reproducible-example) of your problem? $\endgroup$
    – plat
    Jul 8, 2019 at 7:26

2 Answers 2


Given the fact that you have RNA and ADT data (probably on the same set of cells), some colnames (which represent individual cells) would be duplicated. Normally duplicated colnames are tolerated with matrices and sparse matrices, however, Seurat apparently does not do so, below is from the ?CreateAssayObject:

Non-unique cell or feature names are not allowed. Please make unique before calling this function.

Possible solution to your problem: Seuart has a dedicated vignette for working with multimodal data and as you would see you will need to initiate your Seurat object with one matrix per assay: RNA and ADT. All you need to do is split your matrix into RNA and ADT, create your Seurat object with RNA data and then add the ADT data with:

seurat_obj_with_rna_only[["ADT"]] <- CreateAssayObject(counts = your_adt_matrix)

For efficiency, Seurat uses sparse matrices so don't forget to convert your data matrices to sparse.


I don't know if you solved the problem. Howerver,I think it's caused by multiple data types.

For output from CellRanger >= 3.0 with multiple data types

data <- Read10X(data.dir = data_dir)

This step creates multiple matrices, depending on how many types of data there are.

seurat_object = CreateSeuratObject(counts = data$`Gene Expression`)

So (counts = data$Gene Expression),You should also be able to choose the type of research you want to do.

I hope my answer will help some people.


Your Answer

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

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