Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
301 changes: 273 additions & 28 deletions Manifest.toml

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,24 @@ DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
DataFramesMeta = "1313f7d8-7da2-5740-9ea0-a2ca25f37964"
Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7"
Distributed = "8ba89e20-285c-5b6f-9357-94700520ee1b"
FFTW = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341"
FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
Folds = "41a02a25-b8f0-4f67-bc48-60067656b558"
GZip = "92fee26a-97fe-5a0c-ad85-20a5f3185b63"
GeneticsMakie = "8ca62643-82d8-47b5-a233-a06d1654fb35"
Glob = "c27321d9-0574-5035-807b-f59d2c89b15c"
Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6"
Grep = "775960c6-9b90-5df0-b405-1e337feb71e5"
HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f"
HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3"
HypothesisTests = "09f84164-cd44-5f33-b23f-e6b0d136a0d5"
IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a"
ImageCore = "a09fc81d-aa75-5fe9-8630-4744c3626534"
ImageMorphology = "787d08f9-d448-5407-9aad-5290dd7ab264"
Images = "916415d5-f1e6-5110-898d-aaa5f9f070e0"
JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819"
JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
KernelDensity = "5ab0869b-81aa-558d-bb23-cbf5423bbe9b"
Leiden = "e5cf005d-d64d-44d4-821e-2384bf4ace83"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
Loess = "4345ca2d-374a-55d4-8d30-97f9976e7612"
Expand All @@ -38,6 +42,7 @@ MatrixMarket = "4d4711f2-db25-561a-b6b3-d35e7d4047d3"
MultipleTesting = "f8716d33-7c4a-5097-896f-ce0ecbd3ef6b"
MultivariateStats = "6f286f6a-111f-5878-ab1e-185364afe411"
NearestNeighborDescent = "dd2c4c9e-a32f-5b2f-b342-08c2f244fce8"
NearestNeighbors = "b8a86587-4115-5ab1-83bc-aa920d37bbce"
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
PlotlyJS = "f0f68f2c-4968-5e81-91da-67840de0976a"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
Expand All @@ -48,6 +53,7 @@ PyCallUtils = "02651160-e6c3-11e9-0e2a-551f75d9519e"
RCall = "6f49c342-dc21-5d91-9882-a32aef131414"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
RollingFunctions = "b0e4dd01-7b14-53d8-9b45-175a3e362653"
SimpleWeightedGraphs = "47aef6b3-ad0c-573a-a1e2-d07658019622"
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
Expand Down
10 changes: 10 additions & 0 deletions src/CellScopes.jl
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,14 @@ using GeneticsMakie
using Arrow
using HDF5
using PyCallUtils
import FFTW
import ImageMorphology
import Graphs
using NearestNeighbors: KDTree, knn
using SimpleWeightedGraphs
using StatsBase: countmap
using KernelDensity
using Graphs: src, dst

include("scrna/objects.jl")
include("spatial/sp_objects.jl")
Expand All @@ -70,4 +78,6 @@ include("spatial/sp_processing.jl")
include("scatac/atac_processing.jl")
include("scatac/atac_plots.jl")
include("scatac/atac_utils.jl")
include("spatial/baysor_boundary.jl")

end
7 changes: 5 additions & 2 deletions src/properties.jl
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ function Base.show(io::IO, count::AbstractCount)
[println("- ", string(i)) for i in fieldnames(typeof(count))]
end

function Base.show(io::IO, obj_type::Union{AbstractDimReduction, ClusteringObject, VariableGeneObject, UndefinedObject, SpaImputeObj, VisiumImgObject, SpaCountObj,SpaMetaObj})
function Base.show(io::IO, obj_type::Union{AbstractDimReduction, ClusteringObject, VariableGeneObject, UndefinedObject, SpaImputeObj, VisiumImgObject, SpaCountObj,SpaMetaObj,SpaImageObj})
println(io, string(typeof(obj_type)))
println("All fields:")
[println("- ", string(i)) for i in fieldnames(typeof(obj_type))]
Expand All @@ -76,10 +76,11 @@ matchtype(field) = @match field begin
spMeta::SpaMetaObj => println("- Spatial metadata")
spCoord::SpaCoordObj => println("- Spatial coordiantes")
fragment::FragmentObject => println("- Fragment data")
imgObject::SpaImageObj => println("- Image data")
uns::UndefinedObject => println("- Undefined slot")
end

function Base.show(io::IO, sp_obj::Union{ImagingSpatialObject, CartanaObject, VisiumObject, XeniumObject, MerfishObject, SlideseqObject, STARmapObject, seqFishObject})
function Base.show(io::IO, sp_obj::Union{ImagingSpatialObject, CartanaObject, VisiumObject, XeniumObject, MerfishObject, SlideseqObject, STARmapObject, seqFishObject, StereoSeqObject})
if isa(sp_obj, ImagingSpatialObject)
println(io, "ImagingSpatialObject in CellScopes.jl")
elseif isa(sp_obj, CartanaObject)
Expand All @@ -94,6 +95,8 @@ function Base.show(io::IO, sp_obj::Union{ImagingSpatialObject, CartanaObject, Vi
println(io, "seqFishObject in CellScopes.jl")
elseif isa(sp_obj, SlideseqObject)
println(io, "SlideseqObject in CellScopes.jl")
elseif isa(sp_obj, StereoSeqObject)
println(io, "StereoSeqObject in CellScopes.jl")
else
println(io, "VisiumObject in CellScopes.jl")
end
Expand Down
22 changes: 11 additions & 11 deletions src/scrna/processing.jl
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ function normalize_object(ct_obj::RawCountObject; scale_factor = 10000, norm_met
return norm_obj
end

function normalize_object(sc_obj::Union{scRNAObject, VisiumObject,ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, SlideseqObject, STARmapObject, seqFishObject}; scale_factor = 10000, norm_method = "logarithm", pseudocount = 1)
function normalize_object(sc_obj::Union{scRNAObject, VisiumObject,ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, SlideseqObject, STARmapObject, seqFishObject, StereoSeqObject}; scale_factor = 10000, norm_method = "logarithm", pseudocount = 1)
norm_obj = normalize_object(sc_obj.rawCount; scale_factor = scale_factor, norm_method = norm_method, pseudocount = pseudocount)
sc_obj.normCount = norm_obj
if isa(sc_obj, Union{MerfishObject, CartanaObject, XeniumObject})
Expand Down Expand Up @@ -42,7 +42,7 @@ function scale_object(ct_obj::NormCountObject; features::Union{Vector{String}, N
return scale_obj
end

function scale_object(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject,MerfishObject, SlideseqObject, STARmapObject, seqFishObject}; features::Union{Vector{String}, Nothing}=nothing, scale_max = 10.0, do_scale::Bool = true, do_center::Bool = true)
function scale_object(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject,MerfishObject, SlideseqObject, STARmapObject, seqFishObject, StereoSeqObject}; features::Union{Vector{String}, Nothing}=nothing, scale_max = 10.0, do_scale::Bool = true, do_center::Bool = true)
scale_obj = scale_object(sc_obj.normCount; features = features, scale_max=scale_max, do_scale=do_scale, do_center=do_center)
sc_obj.scaleCount = scale_obj
return sc_obj
Expand Down Expand Up @@ -72,14 +72,14 @@ function find_variable_genes(ct_mtx::RawCountObject; nFeatures::Int64 = 2000, sp
return vst_data, Features
end

function find_variable_genes(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject,MerfishObject, SlideseqObject, STARmapObject, seqFishObject}; nFeatures::Int64 = 2000, span::Float64 = 0.3)
function find_variable_genes(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject,MerfishObject, SlideseqObject, STARmapObject, seqFishObject, StereoSeqObject}; nFeatures::Int64 = 2000, span::Float64 = 0.3)
vst_data, Features = find_variable_genes(sc_obj.rawCount; nFeatures = nFeatures, span = span)
var_obj = VariableGeneObject(Features, vst_data)
sc_obj.varGene = var_obj
return sc_obj
end

function run_pca(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject,MerfishObject, SlideseqObject, STARmapObject, seqFishObject}; method=:svd, pratio = 1, maxoutdim = 10)
function run_pca(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject,MerfishObject, SlideseqObject, STARmapObject, seqFishObject, StereoSeqObject}; method=:svd, pratio = 1, maxoutdim = 10)
features = sc_obj.varGene.var_gene
if length(sc_obj.scaleCount.gene_name) == length(sc_obj.rawCount.gene_name)
new_count = subset_count(sc_obj.scaleCount; genes = features)
Expand All @@ -99,7 +99,7 @@ function run_pca(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject,
return sc_obj
end

function run_clustering_atlas(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, scATACObject,MerfishObject, SlideseqObject, STARmapObject, seqFishObject}; n_neighbors=30, metric=CosineDist(), res= 0.06, seed_use=1234)
function run_clustering_atlas(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, scATACObject,MerfishObject, SlideseqObject, STARmapObject, seqFishObject, StereoSeqObject}; n_neighbors=30, metric=CosineDist(), res= 0.06, seed_use=1234)
if isdefined(sc_obj.dimReduction, :umap)
indices = sc_obj.dimReduction.umap.knn_data
else
Expand Down Expand Up @@ -147,7 +147,7 @@ function run_clustering_atlas(sc_obj::Union{scRNAObject, VisiumObject, ImagingSp
return sc_obj
end

function run_clustering_small(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, scATACObject, MerfishObject, SlideseqObject, STARmapObject, seqFishObject}; n_neighbors=30, metric=CosineDist(), res= 0.06, seed_use=1234)
function run_clustering_small(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, scATACObject, MerfishObject, SlideseqObject, STARmapObject, seqFishObject, StereoSeqObject}; n_neighbors=30, metric=CosineDist(), res= 0.06, seed_use=1234)
knn_data = [collect(i) for i in eachrow(sc_obj.dimReduction.pca.cell_embedding)]
graph = nndescent(knn_data, n_neighbors, metric)
indices, dist_mat = knn_matrices(graph);
Expand Down Expand Up @@ -192,7 +192,7 @@ function run_clustering_small(sc_obj::Union{scRNAObject, VisiumObject, ImagingSp
return sc_obj
end

function run_clustering(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, scATACObject, MerfishObject, SlideseqObject, STARmapObject, seqFishObject}; n_neighbors=30, metric=CosineDist(), res= 0.06, seed_use=1234)
function run_clustering(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, scATACObject, MerfishObject, SlideseqObject, STARmapObject, seqFishObject, StereoSeqObject}; n_neighbors=30, metric=CosineDist(), res= 0.06, seed_use=1234)
n = size(sc_obj.rawCount.count_mtx, 2)
if n < 10000
obj = run_clustering_small(sc_obj; n_neighbors=n_neighbors, metric=metric, res= res, seed_use=seed_use)
Expand All @@ -203,7 +203,7 @@ function run_clustering(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialO
end
end

function run_tsne(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, scATACObject, MerfishObject, SlideseqObject, STARmapObject, seqFishObject}; ndim::Int64 = 2, dims_use = 1:10, max_iter::Int64 = 2000, perplexit::Real = 30.0, pca_init::Bool = true, seed_use::Int64 = 1234)
function run_tsne(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, scATACObject, MerfishObject, SlideseqObject, STARmapObject, seqFishObject, StereoSeqObject}; ndim::Int64 = 2, dims_use = 1:10, max_iter::Int64 = 2000, perplexit::Real = 30.0, pca_init::Bool = true, seed_use::Int64 = 1234)
Random.seed!(seed_use)
pca_mat = sc_obj.dimReduction.pca.cell_embedding
pca_mat = pca_mat[:, dims_use]
Expand All @@ -215,7 +215,7 @@ function run_tsne(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject,
return sc_obj
end

function run_umap(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, scATACObject,MerfishObject, SlideseqObject, STARmapObject, seqFishObject}; ndim::Int64 = 2, dims_use = 1:10, n_neighbors::Int64 = 30, n_epochs=300, init = :spectral, metric = CosineDist(), min_dist::Real = 0.4, seed_use::Int64 = 1234)
function run_umap(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, scATACObject,MerfishObject, SlideseqObject, STARmapObject, seqFishObject, StereoSeqObject}; ndim::Int64 = 2, dims_use = 1:10, n_neighbors::Int64 = 30, n_epochs=300, init = :spectral, metric = CosineDist(), min_dist::Real = 0.4, seed_use::Int64 = 1234)
Random.seed!(seed_use)
pca_mat = sc_obj.dimReduction.pca.cell_embedding
pca_mat = pca_mat[:, dims_use]
Expand All @@ -233,7 +233,7 @@ function run_umap(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject,
return sc_obj
end

function find_markers(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, scATACObject, MerfishObject, SlideseqObject, STARmapObject, seqFishObject}; cluster_1::Union{String, Nothing}=nothing, cluster_2::Union{String, Nothing}=nothing,
function find_markers(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, scATACObject, MerfishObject, SlideseqObject, STARmapObject, seqFishObject, StereoSeqObject}; cluster_1::Union{String, Nothing}=nothing, cluster_2::Union{String, Nothing}=nothing,
anno::Union{String, Symbol}="cluster", expr_cutoff=0.0, min_pct=0.1, p_cutoff = 0.05, only_pos = true)
if isa(cluster_1, Nothing)
error("Please provide the name of the cell cluster for which you wish to obtain the differential genes. The \"cluster_1\" parameter cannot be left blank.")
Expand Down Expand Up @@ -275,7 +275,7 @@ function find_markers(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObj
return test_result
end

function find_all_markers(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, scATACObject,MerfishObject, SlideseqObject, STARmapObject, seqFishObject}; anno::Union{String, Symbol}="cluster", expr_cutoff=0.0, min_pct=0.1, p_cutoff = 0.05, only_pos = true)
function find_all_markers(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, scATACObject,MerfishObject, SlideseqObject, STARmapObject, seqFishObject, StereoSeqObject}; anno::Union{String, Symbol}="cluster", expr_cutoff=0.0, min_pct=0.1, p_cutoff = 0.05, only_pos = true)
if isa(anno, String)
anno = Symbol(anno)
end
Expand Down
20 changes: 10 additions & 10 deletions src/scrna/utils.jl
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
colSum(mtx::AbstractMatrix{<:Real}) = sum(mtx, dims=1)
rowSum(mtx::AbstractMatrix{<:Real}) = sum(mtx, dims=2)
rownames(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, SlideseqObject, seqFishObject, STARmapObject}) = sc_obj.rawCount.gene_name
rownames(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, SlideseqObject, seqFishObject, STARmapObject, StereoSeqObject}) = sc_obj.rawCount.gene_name
rownames(sc_obj::scATACObject) = sc_obj.rawCount.peak_name
colnames(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, scATACObject, MerfishObject, SlideseqObject, seqFishObject, STARmapObject}) = sc_obj.rawCount.cell_name
colnames(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, scATACObject, MerfishObject, SlideseqObject, seqFishObject, STARmapObject, StereoSeqObject}) = sc_obj.rawCount.cell_name
rownames(ct_mat::AbstractCount) = ct_mat.gene_name
colnames(ct_mat::AbstractCount) = ct_mat.cell_name

Expand Down Expand Up @@ -86,7 +86,7 @@ function subset_count(ct_obj::T;
return new_obj
end

function extract_cluster_count(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, SlideseqObject, seqFishObject, STARmapObject}, cl; count_type = "norm", anno = Union{String, Symbol}="cluster")
function extract_cluster_count(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, SlideseqObject, seqFishObject, STARmapObject, StereoSeqObject}, cl; count_type = "norm", anno = Union{String, Symbol}="cluster")
df = sc_obj.clustData.clustering
if isa(anno, String)
anno = Symbol(anno)
Expand Down Expand Up @@ -150,12 +150,12 @@ function jitter(x)
end
end

function variable_genes(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, SlideseqObject, seqFishObject, STARmapObject})
function variable_genes(sc_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, SlideseqObject, seqFishObject, STARmapObject, StereoSeqObject})
vargenes = pbmc.varGene.var_gene
return vargenes
end

function update_object(sp_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, SlideseqObject, seqFishObject, STARmapObject})
function update_object(sp_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, SlideseqObject, seqFishObject, STARmapObject, StereoSeqObject})
cells = colnames(sp_obj)
genes = rownames(sp_obj)
all_cells = sp_obj.metaData.Cell_id
Expand Down Expand Up @@ -189,7 +189,7 @@ function update_object(sp_obj::Union{scRNAObject, VisiumObject, ImagingSpatialOb
sp_obj.clustData.adj_mat = sp_obj.clustData.adj_mat[check_cell, check_cell]
end
end
if isa(sp_obj, Union{ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, seqFishObject, STARmapObject})
if isa(sp_obj, Union{ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, seqFishObject, STARmapObject, StereoSeqObject})
println("Updating spatial data...")
sp_obj.spmetaData.cell = filter(:cell => ∈(cell_set), sp_obj.spmetaData.cell)
sp_obj.spmetaData.molecule = filter(:cell => ∈(cell_set), sp_obj.spmetaData.molecule)
Expand Down Expand Up @@ -250,13 +250,13 @@ function update_object(sp_obj::Union{scRNAObject, VisiumObject, ImagingSpatialOb
return sp_obj
end

function subset_object(sp_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, SlideseqObject, seqFishObject, STARmapObject}; cells = nothing, genes = nothing)
function subset_object(sp_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, SlideseqObject, seqFishObject, STARmapObject, StereoSeqObject}; cells = nothing, genes = nothing)
sp_obj.rawCount = subset_count(sp_obj.rawCount; genes = genes, cells = cells)
sp_obj = update_object(sp_obj)
return sp_obj
end

function check_dim(sp_obj::Union{scRNAObject, VisiumObject,ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, seqFishObject, STARmapObject}, field_name::Union{Symbol, String})
function check_dim(sp_obj::Union{scRNAObject, VisiumObject,ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, seqFishObject, STARmapObject, StereoSeqObject}, field_name::Union{Symbol, String})
if isa(field_name, String)
field_name = Symbol(field_name)
end
Expand All @@ -265,7 +265,7 @@ function check_dim(sp_obj::Union{scRNAObject, VisiumObject,ImagingSpatialObject,
return check_length
end

function update_count(sp_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, seqFishObject, STARmapObject}, ct_name::Union{Symbol, String})
function update_count(sp_obj::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, seqFishObject, STARmapObject, StereoSeqObject}, ct_name::Union{Symbol, String})
cell_id = colnames(sp_obj)
gene_id = rownames(sp_obj)
if isa(ct_name, String)
Expand Down Expand Up @@ -337,7 +337,7 @@ function sparse_r_to_jl(counts::RObject{S4Sxp})
return julia_sparse_matrix
end

function annotate_cells(sp::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, SlideseqObject, seqFishObject, STARmapObject}, cell_map::Dict; old_id_name::Union{String, Symbol}="cluster", new_id_name::Union{String, Symbol}="celltype")
function annotate_cells(sp::Union{scRNAObject, VisiumObject, ImagingSpatialObject, CartanaObject, XeniumObject, MerfishObject, SlideseqObject, seqFishObject, STARmapObject, StereoSeqObject}, cell_map::Dict; old_id_name::Union{String, Symbol}="cluster", new_id_name::Union{String, Symbol}="celltype")
sp.metaData = map_values(sp.metaData, old_id_name , new_id_name, collect(keys(cell_map)), collect(values(cell_map)))
if isa(sp, Union{CartanaObject, MerfishObject, XeniumObject, seqFishObject, STARmapObject})
sp.spmetaData.cell[!, old_id_name] = sp.metaData.cell[!, old_id_name]
Expand Down
Loading