kimpenn / VisCello

Viscello for Visualization of Single Cell Data
21 stars 9 forks source link

Converting Seurat objects to VisCello inputs #4

Closed LacquerHed closed 3 years ago

LacquerHed commented 3 years ago

Wondering if you have any handy R scripts for converting basic Seurat objects/matrices to the inputs needed for VisCello? Thanks.

qinzhu commented 3 years ago

Please see the section "Convert common objects to ExpressionSet" in the README file. Let me know if you have questions.

LacquerHed commented 3 years ago

Just a little confused about this:

fmeta <- data.frame(symbol = @.)) # Seurat does not seem to store feature meta data as of version 3.0 rownames(fmeta) <- fmeta$symbol eset <- new("ExpressionSet", assayData = assayDataNew("environment", @.), sparse = T), norm_exprs = @.), sparse = T)), phenoData = new("AnnotatedDataFrame", data = @.), featureData = new("AnnotatedDataFrame", data = fmeta))

Does something different have to be done if Seurat doesn’t store feature meta data? I ran my Seurat merged object and got the following:

eset <- new("ExpressionSet",

On Mar 30, 2021, at 2:29 PM, Qin Zhu @.**@.>> wrote:

CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.

Please see the section "Convert common objects to ExpressionSet" in the README file. Let me know if you have questions.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fqinzhu%2FVisCello%2Fissues%2F4%23issuecomment-810482699&data=04%7C01%7Crobert.bronstein%40stonybrookmedicine.edu%7C78048b15b2464da04a7d08d8f3a9cbf3%7Ceafa1b31b194425db36656c215b7760c%7C0%7C0%7C637527257886274236%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=BzKIb39BleeLtJ%2F98Snmcj2briR4kFRoOGqbYJUpmd4%3D&reserved=0, or unsubscribehttps://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FATO5CXIIEVUDMBZDIVPLJETTGIKBTANCNFSM42CUY5XA&data=04%7C01%7Crobert.bronstein%40stonybrookmedicine.edu%7C78048b15b2464da04a7d08d8f3a9cbf3%7Ceafa1b31b194425db36656c215b7760c%7C0%7C0%7C637527257886284231%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=PiiA5FxQ3Dt5th0EhU1hzcRl1XwAuNwJ9NM0WXUaxqg%3D&reserved=0.

This e-mail message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by e-mail and destroy all copies of the original.

qinzhu commented 3 years ago

I think you need to run library(Biobase) before making ExpressionSet object.

LacquerHed commented 3 years ago

Ok thanks yeah thought it was on and it wasn’t.

However getting the following:

Error in h(simpleError(msg, call)) : error in evaluating the argument 'x' in selecting a method for function 'as.matrix': no slot of name "raw.data" for this object of class “Seurat"

So the slots Im seeing are the following for the combined object:

assays meta.data active.assay active.ident graphs neighbors reductions images project.name misc version commands tools

On Mar 30, 2021, at 2:45 PM, Qin Zhu @.**@.>> wrote:

CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.

I think you need to run library(Biobase) before making ExpressionSet object.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fqinzhu%2FVisCello%2Fissues%2F4%23issuecomment-810492641&data=04%7C01%7Crobert.bronstein%40stonybrookmedicine.edu%7Ce2b2d686a1794965a3dd08d8f3abf621%7Ceafa1b31b194425db36656c215b7760c%7C0%7C0%7C637527267194343749%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=qAGobnWyFAg2rF03RCl0U2tYi5ldIPbx3s7LhG1JyCg%3D&reserved=0, or unsubscribehttps://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FATO5CXLXLQDI6KFPWAQ4JEDTGIL3ZANCNFSM42CUY5XA&data=04%7C01%7Crobert.bronstein%40stonybrookmedicine.edu%7Ce2b2d686a1794965a3dd08d8f3abf621%7Ceafa1b31b194425db36656c215b7760c%7C0%7C0%7C637527267194343749%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=gzHorELva69s1xiX80HTit3JfGUAWsY0rI491Ze7ItU%3D&reserved=0.

This e-mail message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by e-mail and destroy all copies of the original.

qinzhu commented 3 years ago

For Seurat latest version, you can use code below:

fmeta <- data.frame(symbol = rownames(seurat)) 
rownames(fmeta) <- fmeta$symbol
eset <- new("ExpressionSet",
             assayData = assayDataNew("environment", exprs=seurat.hcc@assays$RNA@counts, 
             norm_exprs = seurat.hcc@assays$RNA@data),
             phenoData =  new("AnnotatedDataFrame", data = seurat@meta.data),
             featureData = new("AnnotatedDataFrame", data = fmeta))
LacquerHed commented 3 years ago

Ok thanks so much that worked perfectly. The only problem remains when I try to launch it, here is my current code:

library(VisCello) library(Matrix) library(Biobase) library(irlba) library(Seurat)

@.**@.

Data.Combined <- readRDS("6Samples_subclustered.rds")

fmeta <- data.frame(symbol = rownames(Data.Combined)) rownames(fmeta) <- fmeta$symbol eset <- new("ExpressionSet", assayData = assayDataNew("environment", @.**@., norm_exprs = @.**@.), phenoData = new("AnnotatedDataFrame", data = @.**@.>), featureData = new("AnnotatedDataFrame", data = fmeta))

transferring embeddings to table for VisCello input

umap = cbind("Barcode" = rownames(Embeddings(object = Data.Combined, reduction = "umap")), Embeddings(object = Data.Combined, reduction = "umap")) write.table(umap, file="/Users/rbronste/Desktop/VisCello/umap.txt", sep = ",", quote = F, row.names = F, col.names = T)

If you already computed your dimension reduction result and wants to make a cello for it, use following R code:

cello <- new("Cello", name = "My cell subset", idx = 1:ncol(eset)) # cell_index is which cells from ExpressionSet are used for the dimension reduction my_umap_proj <- read.table("/Users/rbronste/Desktop/VisCello/umap.txt") # You can put in as many dimension reduction result as you want @.*** <- list("My UMAP [2D]" = my_umap_proj) # Put a 2D or 3D in the name to tell VisCello if you want to visualize this as a 2D plot or as a 3D rotatable plot, if 2D there must be 2 columns for each dimension, if 3D there must be 3 columns.

clist <- list() clist[["Global dataset"]] <- cello saveRDS(clist, "/Users/rbronste/Desktop/VisCello/clist.rds")

running VisCello

cello(data_path = "/Users/rbronste/Desktop/VisCello”)

Warning: Error in h: error in evaluating the argument 'x' in selecting a method for function 't': error in evaluating the argument 'x' in selecting a method for function 'as.matrix': index larger than maximal 31194

Maybe its something to do with transferring embeddings, not sure how to change this index limit. Basically the screen just goes black even though application launches.

Thanks again, Rob.

On Mar 30, 2021, at 10:17 PM, Qin Zhu @.**@.>> wrote:

fmeta <- data.frame(symbol = rownames(seurat)) rownames(fmeta) <- fmeta$symbol eset <- new("ExpressionSet", assayData = assayDataNew("environment", @.**@., norm_exprs = @.**@.), phenoData = new("AnnotatedDataFrame", data = @.**@.>), featureData = new("AnnotatedDataFrame", data = fmeta))

This e-mail message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by e-mail and destroy all copies of the original.

LacquerHed commented 3 years ago

Wondering if you have any thoughts on how to resolve this? Would really love to use package for hosting our data. Thanks.

Rob.

On Mar 31, 2021, at 11:29 AM, Bronstein, Robert @.**@.>> wrote:

Ok thanks so much that worked perfectly. The only problem remains when I try to launch it, here is my current code:

library(VisCello) library(Matrix) library(Biobase) library(irlba) library(Seurat)

@.**@.

Data.Combined <- readRDS("6Samples_subclustered.rds")

fmeta <- data.frame(symbol = rownames(Data.Combined)) rownames(fmeta) <- fmeta$symbol eset <- new("ExpressionSet", assayData = assayDataNew("environment", @.**@., norm_exprs = @.**@.), phenoData = new("AnnotatedDataFrame", data = @.**@.>), featureData = new("AnnotatedDataFrame", data = fmeta))

transferring embeddings to table for VisCello input

umap = cbind("Barcode" = rownames(Embeddings(object = Data.Combined, reduction = "umap")), Embeddings(object = Data.Combined, reduction = "umap")) write.table(umap, file="/Users/rbronste/Desktop/VisCello/umap.txt", sep = ",", quote = F, row.names = F, col.names = T)

If you already computed your dimension reduction result and wants to make a cello for it, use following R code:

cello <- new("Cello", name = "My cell subset", idx = 1:ncol(eset)) # cell_index is which cells from ExpressionSet are used for the dimension reduction my_umap_proj <- read.table("/Users/rbronste/Desktop/VisCello/umap.txt") # You can put in as many dimension reduction result as you want @.*** <- list("My UMAP [2D]" = my_umap_proj) # Put a 2D or 3D in the name to tell VisCello if you want to visualize this as a 2D plot or as a 3D rotatable plot, if 2D there must be 2 columns for each dimension, if 3D there must be 3 columns.

clist <- list() clist[["Global dataset"]] <- cello saveRDS(clist, "/Users/rbronste/Desktop/VisCello/clist.rds")

running VisCello

cello(data_path = "/Users/rbronste/Desktop/VisCello”)

Warning: Error in h: error in evaluating the argument 'x' in selecting a method for function 't': error in evaluating the argument 'x' in selecting a method for function 'as.matrix': index larger than maximal 31194

Maybe its something to do with transferring embeddings, not sure how to change this index limit. Basically the screen just goes black even though application launches.

Thanks again, Rob.

On Mar 30, 2021, at 10:17 PM, Qin Zhu @.**@.>> wrote:

fmeta <- data.frame(symbol = rownames(seurat)) rownames(fmeta) <- fmeta$symbol eset <- new("ExpressionSet", assayData = assayDataNew("environment", @.**@., norm_exprs = @.**@.), phenoData = new("AnnotatedDataFrame", data = @.**@.>), featureData = new("AnnotatedDataFrame", data = fmeta))

This e-mail message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by e-mail and destroy all copies of the original.

qinzhu commented 3 years ago

Hi Rob, In the line below: cello <- new("Cello", name = "My cell subset", idx = 1:ncol(eset)) You need to change the idx to be the index of cells in the umap embedding, like cello <- new("Cello", name = "My cell subset", idx = match(rownames(umap_proj), colnames(eset)) suppose rownames(umap_proj) is the cell barcode.

LacquerHed commented 3 years ago

Hi,

Thank you that worked well, however I am still getting a blank screen when the app actually starts. Wondering if I could send you a test dataset so you can see if it works on your end? Thanks!

Rob.

On Apr 2, 2021, at 3:00 PM, Qin Zhu @.**@.>> wrote:

CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.

Hi Rob, In the line below: cello <- new("Cello", name = "My cell subset", idx = 1:ncol(eset)) You need to change the idx to be the index of cells in the umap embedding, like cello <- new("Cello", name = "My cell subset", idx = match(rownames(umap_proj), colnames(eset)) suppose rownames(umap_proj) is the cell barcode.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fqinzhu%2FVisCello%2Fissues%2F4%23issuecomment-812667269&data=04%7C01%7Crobert.bronstein%40stonybrookmedicine.edu%7Ca16ce1b3530c4c37dab708d8f6099a1b%7Ceafa1b31b194425db36656c215b7760c%7C0%7C0%7C637529868395001898%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=lCdl8Bb0w01KdU0za71x5O5RjIsyjN%2F5wD4kqusqUas%3D&reserved=0, or unsubscribehttps://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FATO5CXIVPBR7INIKTDY2YZLTGYH5JANCNFSM42CUY5XA&data=04%7C01%7Crobert.bronstein%40stonybrookmedicine.edu%7Ca16ce1b3530c4c37dab708d8f6099a1b%7Ceafa1b31b194425db36656c215b7760c%7C0%7C0%7C637529868395011891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=tk52G8hI2IxN2UpYw%2BdO6oe0Dd71q2VsP5DrrrCNHAM%3D&reserved=0.

This e-mail message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by e-mail and destroy all copies of the original.

qinzhu commented 3 years ago

Hi Rob,

Sure you can send it to qinzhu@outlook.com.

Thanks, Qin

LacquerHed commented 3 years ago

Hi Qin,

Just shared a google drive folder with my rds and R script files, this is what I have been running and although I get no errors when running it - I get a blank screen when Shiny app loads and then it goes black. Maybe you have some idea what is wrong with my script? Let me know if you don’t get google drive link. Thanks again!

Best, Rob.

On Apr 16, 2021, at 9:19 AM, Qin Zhu @.**@.>> wrote:

CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.

Reopened #4https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fqinzhu%2FVisCello%2Fissues%2F4&data=04%7C01%7Crobert.bronstein%40stonybrookmedicine.edu%7C6db1a91904f74056508a08d900da464d%7Ceafa1b31b194425db36656c215b7760c%7C0%7C0%7C637541759746095953%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=jUHc%2BdJydew6VIOI5mBeNu4X7R5VMVurIgGUi14BtAk%3D&reserved=0.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fqinzhu%2FVisCello%2Fissues%2F4%23event-4604812936&data=04%7C01%7Crobert.bronstein%40stonybrookmedicine.edu%7C6db1a91904f74056508a08d900da464d%7Ceafa1b31b194425db36656c215b7760c%7C0%7C0%7C637541759746105946%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=GPTR0%2Fcjxmq3B1GK3N4ZI1zy5T27lP0A4Fnda4LM1Uo%3D&reserved=0, or unsubscribehttps://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FATO5CXL6XI5OW2MQHBG54XLTJA2OJANCNFSM42CUY5XA&data=04%7C01%7Crobert.bronstein%40stonybrookmedicine.edu%7C6db1a91904f74056508a08d900da464d%7Ceafa1b31b194425db36656c215b7760c%7C0%7C0%7C637541759746105946%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=tvTupbjxs49t9jaDhDmeMPA5mzb6g4MVRFTVxSXlEAE%3D&reserved=0.

This e-mail message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by e-mail and destroy all copies of the original.

LacquerHed commented 3 years ago

Hi Qin,

Just wanted to confirm that you received the data files I sent? If you have any suggestions on how to get the code right that would be great, really would like to use this to host our data. Thanks again for all the help!

Best, Rob.


Robert Bronstein, Ph.D. Postdoctoral Fellow Mallipattu Lab Stony Brook Medicine 101 Nicolls Road Stony Brook, NY 11794 (201)240-2534

On Apr 16, 2021, at 10:37 AM, Bronstein, Robert @.**@.>> wrote:

Hi Qin,

Just shared a google drive folder with my rds and R script files, this is what I have been running and although I get no errors when running it - I get a blank screen when Shiny app loads and then it goes black. Maybe you have some idea what is wrong with my script? Let me know if you don’t get google drive link. Thanks again!

Best, Rob.

On Apr 16, 2021, at 9:19 AM, Qin Zhu @.**@.>> wrote:

CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.

Reopened #4https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fqinzhu%2FVisCello%2Fissues%2F4&data=04%7C01%7Crobert.bronstein%40stonybrookmedicine.edu%7C6db1a91904f74056508a08d900da464d%7Ceafa1b31b194425db36656c215b7760c%7C0%7C0%7C637541759746095953%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=jUHc%2BdJydew6VIOI5mBeNu4X7R5VMVurIgGUi14BtAk%3D&reserved=0.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fqinzhu%2FVisCello%2Fissues%2F4%23event-4604812936&data=04%7C01%7Crobert.bronstein%40stonybrookmedicine.edu%7C6db1a91904f74056508a08d900da464d%7Ceafa1b31b194425db36656c215b7760c%7C0%7C0%7C637541759746105946%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=GPTR0%2Fcjxmq3B1GK3N4ZI1zy5T27lP0A4Fnda4LM1Uo%3D&reserved=0, or unsubscribehttps://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FATO5CXL6XI5OW2MQHBG54XLTJA2OJANCNFSM42CUY5XA&data=04%7C01%7Crobert.bronstein%40stonybrookmedicine.edu%7C6db1a91904f74056508a08d900da464d%7Ceafa1b31b194425db36656c215b7760c%7C0%7C0%7C637541759746105946%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=tvTupbjxs49t9jaDhDmeMPA5mzb6g4MVRFTVxSXlEAE%3D&reserved=0.

This e-mail message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by e-mail and destroy all copies of the original.

qinzhu commented 3 years ago

Hi Rob, Sorry for my slow response. I can't find any shared google drive link in my outlook mailbox. Could you share with baiseniao@gmail.com? Thanks!

Qin

LacquerHed commented 3 years ago

Hi Qin,

Just shared with that address, thanks again for all of your help! Let me know if you didn’t get it.

Best, Rob.


Robert Bronstein, Ph.D. Postdoctoral Fellow Mallipattu Lab Stony Brook Medicine 101 Nicolls Road Stony Brook, NY 11794 (201)240-2534

On Apr 20, 2021, at 10:15 AM, Qin Zhu @.**@.>> wrote:

@.**@.>

This e-mail message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by e-mail and destroy all copies of the original.

qinzhu commented 3 years ago

Yes I can see it now.

Qin

qinzhu commented 3 years ago

Hi Rob, I have no problem loading the data to VisCello. (see screenshot below)

Screen Shot 2021-04-20 at 2 47 05 PM

Please check modified code below, and also please read the VisCello manual to understand the data format required by VisCello.

library(VisCello)
library(Matrix)
library(Biobase)
library(irlba)
library(Seurat)

Data.Combined <- readRDS("./6Samples2.rds")

fmeta <- data.frame(symbol = rownames(Data.Combined)) 
rownames(fmeta) <- fmeta$symbol
eset <- new("ExpressionSet",
            assayData = assayDataNew("environment", exprs=Data.Combined@assays$RNA@counts, 
                                     norm_exprs = Data.Combined@assays$RNA@data),
            phenoData =  new("AnnotatedDataFrame", data = Data.Combined@meta.data),
            featureData = new("AnnotatedDataFrame", data = fmeta))
saveRDS(eset, "./eset.rds")
#transferring embeddings to table for VisCello input
umap = Embeddings(object = Data.Combined@reductions$umap)

#If you already computed your dimension reduction result and wants to make a cello for it, use following R code:
cello <- new("Cello", name = "My cell subset", idx = match(rownames(umap), colnames(eset)))  # cell_index is which cells from ExpressionSet are used for the dimension reduction
cello@proj <- list("My UMAP [2D]" = umap) # Put a 2D or 3D in the name to tell VisCello if you want to visualize this as a 2D plot or as a 3D rotatable plot, if 2D there must be 2 columns for each dimension, if 3D there must be 3 columns.

clist <- list()
clist[["Global dataset"]] <- cello
saveRDS(clist, "./clist.rds") 

# Manually add config file before this step
#running VisCello
cello(data_path = "./")