Open yuzhong1997 opened 6 months ago
Hi Yu,
I think you're right with point 2.
For point 1, briefly, what happens in quantileNorm()
is that we label cells by the max factor loading (e.g. cluster 1 if factor 1 loads the most for a cell), and then align the factor loadings of cells assigned to the same "cluster". There is a step of NN searching where the graph is used to refine the previously described cluster voting before aligning cells with quantile normalization. So here the graph is indeed used for clustering cells, but this clustering is not the primary purpose of the whole thing, i.e. it is not what users usually look for when they want clustering labels for downstream analysis. Hope this explains, and I'll try to update the documentation in future versions so it causes less confusion.
Thanks, Yichen
Hi,
Thanks for your quick response! Yeah, I'm totaly clear about quantileNorm, but just confused when the first glance on documentation. Thanks again.
Yu
Hi,
Thanks for your excellent software! I just have questions on your workflow after I checked all your codes on Github:
Based on your workflow (https://welch-lab.github.io/liger/reference/quantileNorm.html), you said "This process builds a shared factor neighborhood graph to jointly cluster cells, then quantile normalizes corresponding clusters." by running
quantileNorm
command. But actually, it seems like.quantileNorm.HList
function (line 1444 in integration.R file) only cluster cells across datasets independently asclusters <- **lapply**(Hs, function(H) clusterAssign[rownames(H)])
. And those cell factor loadings normalized given a reference afterwards.It seems like shared factor neighborhood graph really occurs when running
runCluster
assnn <- ComputeSNN(knn$nn.idx, prune = prune)
, which is based on previous normalized cell factor loadings.I'm not sure if I understand here correctly or not. Appreciate it if any helps here.
Yu