diff --git a/.Rproj.user/D2E2BE0D/pcs/files-pane.pper b/.Rproj.user/D2E2BE0D/pcs/files-pane.pper index daa73ec..1978dab 100644 --- a/.Rproj.user/D2E2BE0D/pcs/files-pane.pper +++ b/.Rproj.user/D2E2BE0D/pcs/files-pane.pper @@ -1,5 +1,5 @@ { - "path" : "~/Documents/FBT/Single/package/GapClust", + "path" : "~/Documents/FBT/Single/package/GapClust/man", "sortOrder" : [ { "ascending" : true, diff --git a/.Rproj.user/D2E2BE0D/pcs/workbench-pane.pper b/.Rproj.user/D2E2BE0D/pcs/workbench-pane.pper index f4cc0e3..b15bf23 100644 --- a/.Rproj.user/D2E2BE0D/pcs/workbench-pane.pper +++ b/.Rproj.user/D2E2BE0D/pcs/workbench-pane.pper @@ -1,6 +1,6 @@ { "TabSet1" : 3, - "TabSet2" : 1, + "TabSet2" : 0, "TabZoom" : { } } \ No newline at end of file diff --git a/.Rproj.user/D2E2BE0D/persistent-state b/.Rproj.user/D2E2BE0D/persistent-state index 4ef6d40..043ea5a 100644 --- a/.Rproj.user/D2E2BE0D/persistent-state +++ b/.Rproj.user/D2E2BE0D/persistent-state @@ -1,8 +1,8 @@ build-last-errors="[]" build-last-errors-base-dir="~/Documents/FBT/Single/package/GapClust/" -build-last-outputs="[{\"output\":\"==> R CMD INSTALL --no-multiarch --with-keep.source GapClust\\n\\n\",\"type\":0},{\"output\":\"* installing to library ‘/home/sam/R/x86_64-pc-linux-gnu-library/3.6’\\n\",\"type\":1},{\"output\":\"* installing *source* package ‘GapClust’ ...\\n\",\"type\":1},{\"output\":\"** using staged installation\\n\",\"type\":1},{\"output\":\"** R\\n\",\"type\":1},{\"output\":\"** byte-compile and prepare package for lazy loading\\n\",\"type\":1},{\"output\":\"\",\"type\":1},{\"output\":\"** help\\n\",\"type\":1},{\"output\":\"*** installing help indices\\n\",\"type\":1},{\"output\":\"** building package indices\\n\",\"type\":1},{\"output\":\"** testing if installed package can be loaded from temporary location\\n\",\"type\":1},{\"output\":\"\",\"type\":1},{\"output\":\"** testing if installed package can be loaded from final location\\n\",\"type\":1},{\"output\":\"\",\"type\":1},{\"output\":\"** testing if installed package keeps a record of temporary installation path\\n\",\"type\":1},{\"output\":\"* DONE (GapClust)\\n\",\"type\":1},{\"output\":\"\",\"type\":1}]" +build-last-outputs="[{\"output\":\"==> R CMD INSTALL --no-multiarch --with-keep.source GapClust\\n\\n\",\"type\":0},{\"output\":\"* installing to library ‘/home/sam/R/x86_64-pc-linux-gnu-library/3.6’\\n\",\"type\":1},{\"output\":\"* installing *source* package ‘GapClust’ ...\\n\",\"type\":1},{\"output\":\"\",\"type\":1},{\"output\":\"** using staged installation\\n\",\"type\":1},{\"output\":\"** R\\n\",\"type\":1},{\"output\":\"** byte-compile and prepare package for lazy loading\\n\",\"type\":1},{\"output\":\"\",\"type\":1},{\"output\":\"** help\\n\",\"type\":1},{\"output\":\"\",\"type\":1},{\"output\":\"*** installing help indices\\n\",\"type\":1},{\"output\":\"** building package indices\\n\",\"type\":1},{\"output\":\"** testing if installed package can be loaded from temporary location\\n\",\"type\":1},{\"output\":\"\",\"type\":1},{\"output\":\"** testing if installed package can be loaded from final location\\n\",\"type\":1},{\"output\":\"\",\"type\":1},{\"output\":\"** testing if installed package keeps a record of temporary installation path\\n\",\"type\":1},{\"output\":\"* DONE (GapClust)\\n\",\"type\":1},{\"output\":\"\",\"type\":1}]" compile_pdf_state="{\"errors\":[],\"output\":\"\",\"running\":false,\"tab_visible\":false,\"target_file\":\"\"}" files.monitored-path="" find-in-files-state="{\"handle\":\"\",\"input\":\"\",\"path\":\"\",\"regex\":true,\"results\":{\"file\":[],\"line\":[],\"lineValue\":[],\"matchOff\":[],\"matchOn\":[]},\"running\":false}" -imageDirtyState="1" -saveActionState="-1" +imageDirtyState="0" +saveActionState="0" diff --git a/.Rproj.user/D2E2BE0D/sources/prop/6C59A91 b/.Rproj.user/D2E2BE0D/sources/prop/6C59A91 index 3974b0a..15d709e 100644 --- a/.Rproj.user/D2E2BE0D/sources/prop/6C59A91 +++ b/.Rproj.user/D2E2BE0D/sources/prop/6C59A91 @@ -1,4 +1,4 @@ { - "cursorPosition" : "100,0", - "scrollLine" : "81" + "cursorPosition" : "90,64", + "scrollLine" : "77" } \ No newline at end of file diff --git a/.Rproj.user/D2E2BE0D/sources/prop/CFC898F2 b/.Rproj.user/D2E2BE0D/sources/prop/CFC898F2 new file mode 100644 index 0000000..99b6f0c --- /dev/null +++ b/.Rproj.user/D2E2BE0D/sources/prop/CFC898F2 @@ -0,0 +1,4 @@ +{ + "cursorPosition" : "7,122", + "scrollLine" : "0" +} \ No newline at end of file diff --git a/.Rproj.user/D2E2BE0D/sources/prop/INDEX b/.Rproj.user/D2E2BE0D/sources/prop/INDEX index a830aa1..b8511a9 100644 --- a/.Rproj.user/D2E2BE0D/sources/prop/INDEX +++ b/.Rproj.user/D2E2BE0D/sources/prop/INDEX @@ -2,6 +2,7 @@ ~%2FDocuments%2FFBT%2FSingle%2Fpackage%2FGapClust%2FDESCRIPTION="51B67C04" ~%2FDocuments%2FFBT%2FSingle%2Fpackage%2FGapClust%2FNAMESPACE="5DA31145" ~%2FDocuments%2FFBT%2FSingle%2Fpackage%2FGapClust%2FR%2FGapClust.R="6C59A91" +~%2FDocuments%2FFBT%2FSingle%2Fpackage%2FGapClust%2Fman%2FGapClust.Rd="CFC898F2" ~%2FDocuments%2FFBT%2FSingle%2Fpackage%2FGapClust_manuscript%2FRscript%2FALL_10X_doublets.R="65DF4126" ~%2FDocuments%2FFBT%2FSingle%2Fpackage%2Fminerva_1.5.8%2FGapClust%2FGapClust%2FDESCRIPTION="F323D26F" ~%2FDocuments%2FFBT%2FSingle%2Fpackage%2Fminerva_1.5.8%2FGapClust%2FGapClust%2FNAMESPACE="18AAA614" diff --git a/.Rproj.user/D2E2BE0D/sources/s-504B2FB1/8D9CCF8A b/.Rproj.user/D2E2BE0D/sources/s-36E65813/8D9CCF8A similarity index 88% rename from .Rproj.user/D2E2BE0D/sources/s-504B2FB1/8D9CCF8A rename to .Rproj.user/D2E2BE0D/sources/s-36E65813/8D9CCF8A index 49c8b05..77842fa 100644 --- a/.Rproj.user/D2E2BE0D/sources/s-504B2FB1/8D9CCF8A +++ b/.Rproj.user/D2E2BE0D/sources/s-36E65813/8D9CCF8A @@ -12,8 +12,8 @@ "path" : "~/Documents/FBT/Single/package/GapClust/R/GapClust.R", "project_path" : "R/GapClust.R", "properties" : { - "cursorPosition" : "100,0", - "scrollLine" : "81" + "cursorPosition" : "90,64", + "scrollLine" : "77" }, "relative_order" : 1, "source_on_save" : false, diff --git a/.Rproj.user/D2E2BE0D/sources/s-504B2FB1/8D9CCF8A-contents b/.Rproj.user/D2E2BE0D/sources/s-36E65813/8D9CCF8A-contents similarity index 100% rename from .Rproj.user/D2E2BE0D/sources/s-504B2FB1/8D9CCF8A-contents rename to .Rproj.user/D2E2BE0D/sources/s-36E65813/8D9CCF8A-contents diff --git a/.Rproj.user/D2E2BE0D/sources/s-36E65813/F5671F33-contents b/.Rproj.user/D2E2BE0D/sources/s-36E65813/F5671F33-contents new file mode 100644 index 0000000..137e195 --- /dev/null +++ b/.Rproj.user/D2E2BE0D/sources/s-36E65813/F5671F33-contents @@ -0,0 +1,19 @@ +\name{GapClust} +\alias{GapClust} +\title{Detecting rare cells from expression profiles by single cell RNA-seq.} +\usage{ +GapClust(data, k=200) +} +\arguments{ + \item{data}{ a data matrix, normalized expression profiles of single cells, where rows are genes and columns are cells. } + \item{k}{ number of neighbors to consider and the upper limit of minor cluster size. } +} +\description{ +GapClust takes advantage of the gap between minor cluster and neighbouring +abundant cluster to let rare cells within minor cluster stand out through +delicately designed statistics. Meanwhile, GapClust does not struggle to +search for rare cell informative genes like most of the competitors, +but learns the cluster size as well as rare cells using simple arithmetic calculation. +} +\examples{ +} diff --git a/.Rproj.user/D2E2BE0D/sources/s-504B2FB1/lock_file b/.Rproj.user/D2E2BE0D/sources/s-36E65813/lock_file similarity index 100% rename from .Rproj.user/D2E2BE0D/sources/s-504B2FB1/lock_file rename to .Rproj.user/D2E2BE0D/sources/s-36E65813/lock_file diff --git a/.Rproj.user/D2E2BE0D/sources/s-504B2FB1/D6EEF942-contents b/.Rproj.user/D2E2BE0D/sources/s-504B2FB1/D6EEF942-contents deleted file mode 100644 index a6990eb..0000000 --- a/.Rproj.user/D2E2BE0D/sources/s-504B2FB1/D6EEF942-contents +++ /dev/null @@ -1,351 +0,0 @@ -#fixed parameters for GiniClust2 -minCellNum = 3 # filtering, remove genes expressed in fewer than minCellNum cells -minGeneNum = 2000 # filtering, remove cells expressed in fewer than minGeneNum genes -expressed_cutoff = 1 # filtering, for raw counts -gini.bi = 0 # fitting, default is 0, for qPCR data, set as 1. -log2.expr.cutoffl = 0 # cutoff for range of gene expression -log2.expr.cutoffh = 20 # cutoff for range of gene expression -Gini.pvalue_cutoff = 0.0001 # fitting, Pvalue, control how many Gini genes chosen -Norm.Gini.cutoff = 1 # fitting, NormGini, control how many Gini genes chosen, 1 means not used. -span = 0.9 # parameter for LOESS fitting -outlier_remove = 0.75 # parameter for LOESS fitting -GeneList = 1 # parameter for clustering, 1 means using pvalue, 0 means using HighNormGini -Gamma = 0.9 # parameter for clustering -diff.cutoff = 1 # MAST analysis, filter genes that don't have high a log2_foldchange to reduce gene num -lr.p_value_cutoff = 1e-5 # MAST analysis, pvalue cutoff to identify differentially expressed genes -CountsForNormalized = 100000 # if normalizing- by default not used -Rfundir = "/home/sam/Documents/RareCellDetection/Rfunction/" -# where GiniClust2 R functions are stored - -#dataset specific parameters: -MinPts = 2 ## change 3 to 2 for doublets # parameter for DBSCAN -eps = 0.45 # parameter for DBSCAN -mycols = c("grey50","greenyellow","red","blue","black","green","orange","purple","yellow","navy","magenta") -# color setting for tSNE plot -perplexity_G = 30 # parameter for Gini tSNE -perplexity_F = 30 # parameter for Fano tSNE -max_iter_G = 1000 # parameter for Gini tSNE -max_iter_F = 1000 # parameter for Fano tSNE -ks = c(2,2,2,3,3,3,3) # a range of k's for k-means for subsampled data depending on rarity: use k=2 for rarer, k=3 for more common -gap_statistic = FALSE # whether the gap statistic should be used to determine k -K.max = 10 # if using the gap statistic, highest k that should be considered -automatic_eps = TRUE # whether to determine eps using KNN- for consistency we use the same eps as full data set here -automatic_minpts = TRUE - -source('utils.R') -workdir = paste0(getwd(), '/../Rproj/Doublet') -# where you put the data and results - -setwd(workdir) -library(pbapply) -library(future.apply) -library(ROCR) -library(Rcpp) -library(splatter) -library(rflann) -library(e1071) -library(svd) -library(RaceID) -library(minerva) -library(FiRE) -library(ineq) -library(Seurat) -library(irlba) - -#sourceCpp('/home/sam/Documents/FBT/Single/package/Rare/src/utils.cpp') - -source("../../Rfunction/GiniClust2_packages.R") -source("../../Rfunction/GiniClust2_functions.R") - -source('../../Rfunction/CellSIUS.R') -source('../../Rfunction/CellSIUS_final_cluster_assignment.R') -source('../../Rfunction/CellSIUS_GetResults.R') - - -ranger_preprocess<-function(data_mat, ngenes_keep=1000, dataSave='./', optionToSave=F, minLibSize=0, verbose=T){ - - ngenes_keep = 1000 - #write.csv(x = data_mat$gene_symbols, file = "gene_symbols.csv",quote = F,row.names =F) - #l<-.normalize_by_umi(data_mat) - l<-.normalize_by_umi_2(data_mat, dataSave, minLibSize, verbose) - m_n<-l$m - - if (verbose){ - cat("Select variable Genes...\n") - } - - df<- .get_variable_gene(m_n) - gc() - - if (verbose){ - cat("Sort Top Genes...\n") - } - - disp_cut_off<-sort(df$dispersion_norm,decreasing=T)[ngenes_keep] - - if (verbose){ - cat("Cutoff Genes...\n") - } - - df$used<-df$dispersion_norm >= disp_cut_off - - features = head(order(-df$dispersion_norm),ngenes_keep) - #system("rm genes",ignore.stderr = T) - - if (optionToSave){ - write.csv(features, file = paste(dataSave,"genes",sep=""), quote = F,row.names = F) - write.csv(l$use_genes[features], file = paste(dataSave,"genes_used_all",sep=""), quote = F,row.names = F) - } - - #genes = read.csv(file = "genes") - #features = genes$x - - #Final Data - m_n_68K<-m_n[,features] - m_filt<-Matrix(log2(m_n_68K+1),sparse = T) - - if (verbose){ - cat(paste("Writing Log Normalized whole_matrix, DIM:",dim(m_filt)[1], dim(m_filt)[2])) - } - #system("rm whole_matrix",ignore.stderr = T) - if (optionToSave){ - writeMM(m_filt,file="whole_matrix") - } - - list(preprocessedData=m_filt, selGenes=features) -} - -# --------------------------------------------- -# normalize the gene barcode matrix by umi -# filter based on read count first -# --------------------------------------------- - -.normalize_by_umi_2 <-function(x, dataSave, minLibSize, verbose){ - mat = x$mat - gene_symbols = x$gene_symbols - - #Filter Cells - if (minLibSize > 0){ - - keepCellIndex <- c() - for (i in c(1:dim(mat)[1])){ - count = sum(mat[i,] > 0) - if (count > minLibSize){ - keepCellIndex <- c(keepCellIndex, i) - } - } - - mat <- mat[keepCellIndex,] - if (verbose){ - cat(paste("Dimensions of matrix after cell filtering : ",dim(mat),"\n")) - } - write.csv(keepCellIndex, file = paste(dataSave,"keepCellIndexes.csv",sep=""), quote = F,row.names = F) - } - - #Filter Genes - cs <- colSums(mat>2) - x_use_genes <- which(cs > 3) - - x_filt<-mat[,x_use_genes] - gene_symbols = gene_symbols[x_use_genes] - if (verbose){ - cat("Dimensions os filtered Matrix:") - cat(paste(dim(x_filt),"\n")) - } - - rs<-rowSums(x_filt) - rs_med<-median(rs) - x_norm<-x_filt/(rs/rs_med) - list(m=x_norm,use_genes=gene_symbols) -} - - -# -------------------------------------------------- -# get variable genes from normalized UMI counts -# -------------------------------------------------- -# m: matrix normalized by UMI counts -.get_variable_gene<-function(m){ - - df<-data.frame(mean=colMeans(m),cv=apply(m,2,sd)/colMeans(m),var=apply(m,2,var)) - df$dispersion<-with(df,var/mean) - df$mean_bin<-with(df,cut(mean,breaks=c(-Inf,quantile(mean,seq(0.1,1,0.05)),Inf))) - var_by_bin<-ddply(df,"mean_bin",function(x) { - data.frame(bin_median=median(x$dispersion), - bin_mad=mad(x$dispersion)) - }) - df$bin_disp_median<-var_by_bin$bin_median[match(df$mean_bin,var_by_bin$mean_bin)] - df$bin_disp_mad<-var_by_bin$bin_mad[match(df$mean_bin,var_by_bin$mean_bin)] - df$dispersion_norm<-with(df,abs(dispersion-bin_disp_median)/bin_disp_mad) - df -} - - -transform.gini <- function(){ - gini.res <- list() - for(i in 1:length(Gini.result)){ - cnt <- table(Gini.result[[i]]) - cnt.top <- table(Gini.result[[i]][1:5]) - small <- names(cnt)[cnt <= sum(cnt) * 0.15] # 0.15 is for 100 cells or a little more - small <- small[small != 'Singleton'] - small <- small[small %in% names(cnt.top)] - if(length(small)>=1){ - gini.res[[i]] <- ifelse(Gini.result[[i]] %in% small, 1, 0) - - }else{ - gini.res[[i]] <- (rep(0, length(Gini.result[[i]]))) - } - } - return(gini.res) -} - - -transform.race <- function(){ - race.res <- list() - for(i in 1:length(RaceID.result)){ - - cnt <- table(RaceID.result[[i]]) - cnt.top <- table(RaceID.result[[i]][1:5]) - small <- names(cnt)[cnt <= sum(cnt) * 0.15] # 0.15 is for 100 cells or a little more - small <- small[small %in% names(cnt.top)] - if(length(small)>=1){ - race.res[[i]] <- ifelse(RaceID.result[[i]] %in% small, 1, 0) - - }else{ - race.res[[i]] <- (rep(0, length(RaceID.result[[i]]))) - } - - } - return(race.res) -} - - - - -# -set.seed(2019) - -RaceID.result <- list() -Gini.result <- list() -OUR.result <- list() -FiRE.result <- list() -CELLSIUS.result <- list() -for (q in 1:7){ - for (i in 1:20){ - #set.seed(j * 7 + 20 * i) - exprimentID<-paste("10X_rare",q,"_",i, '_ExprM.filter.RData',sep="") - load(paste0("data/", exprimentID)) - - data <- (ExprM.RawCounts.filter[rowMeans(ExprM.RawCounts.filter) > 0,]) - zero.cnt <- apply(data, 1, function(x){length(x[x>0])}) - data <- data[zero.cnt>=2,] - norm.data <- .normalize_by_umi(t(data), gene_symbols = dimnames(data)[[1]], minLibSize=0, verbose = F) - data2 <- t(norm.data$m) - dimnames(data2)[[2]] <- paste0(dimnames(data2)[[2]], '_', 1:dim(data2)[2]) - #data2 <- log2(data2 + 1) - #group <- simulate.data$group - group <- ifelse(grepl('CD14', dimnames(data2)[[2]]), 'Group1', 'Group2') - - - ######################################################### - km <- kmeans(t(data2), centers=2) - res <- CellSIUS(data2, group_id=km$cluster, min_n_cells = 2) - #CellSIUS_GetResults(res) - predictions.cell <- CellSIUS_final_cluster_assignment(CellSIUS.out=res, group_id=km$cluster, min_n_genes = 3) - CELLSIUS.result[[((q-1) * 20) + i]] <- predictions.cell - ######################################################### - sc <- SCseq(data2) - sc.temp <- sc - sc <- filterdata(sc,mintotal=min(colSums(data2))-1, minexpr=min(data2[data2>0]-0.001), minnumber=2) - fdata <- getfdata(sc) - features <- sc@cluster$features - - - sc <- compdist(sc,metric="pearson") - sc <- clustexp(sc) - sc <- clustexp(sc,cln=2,sat=FALSE) - sc <- findoutliers(sc) - - finalcls <- (sc@cpart) - print(table(finalcls, group)) - RaceID.result[[((q-1) * 20) + i]] <- finalcls - rm('sc') - gc() - - res <- GapClust::GapClust(data2) - - predictions <- rep(0, dim(data2)[2]) - predictions[res$rare_cell_indices[[which.max(res$skewness[as.integer(names(res$rare_cell_indices))+1])]]] <- 1 - - OUR.result[[((q-1) * 20) + i]] <- predictions - # a1.ave.group <- matrix(NA, length(a1.ave.k), length(table(predictions))) - - print(table(predictions, group)) - pred <- prediction(predictions, group) - perf <- performance(pred, "auc") - - print(perf@y.values[[1]]) - - - ######################################################################### - ExprM.normCounts.filter <- data2 - source(paste(Rfundir,"GiniClust2_fitting_DE.R",sep="")) - ExprM.RawCounts<-ExprM.RawCounts.filter - - source(paste(Rfundir,"GiniClust2_Gini_clustering.R",sep="")) - print(length(P_G)) - Gini.result[[((q-1) * 20) + i]] <- P_G - ######################################################################### - - - data1 <- t(log2(data2 + 1)) #Samples * Features - - #Genes - genes <- c(1:dim(data1)[2]) #It can be replaced with original gene names - - data_mat <- list(mat=data1, gene_symbols=genes) - preprocessedList <- ranger_preprocess(data_mat) - preprocessedData <- as.matrix(preprocessedList$preprocessedData) - model <- new(FiRE::FiRE, 100, 50, 1017881, 5489, 0) - model$fit(preprocessedData) - score <- model$score(preprocessedData) - - #Apply IQR-based criteria to identify rare cells for further downstream analysis. - q3 <- quantile(score, 0.75) - iqr <- IQR(score) - th1 <- q3 + (1.5*iqr) - th2 <- q3 + (1*iqr) - th3 <- q3 + (0.5*iqr) - - #Select indexes that satisfy IQR-based thresholding criteria. - indIqr <- which(score >= th1) - - #Create a file with binary predictions - predictions.15 <- integer(dim(data1)[1]) - predictions.15[which(score >= th1)] <- 1 #Replace predictions for rare cells with '1'. - predictions.10 <- integer(dim(data1)[1]) - predictions.10[which(score >= th2)] <- 1 #Replace predictions for rare cells with '1'. - predictions.05 <- integer(dim(data1)[1]) - predictions.05[which(score >= th3)] <- 1 #Replace predictions for rare cells with '1'. - - FiRE.result[[((q-1) * 20) + i]] <- predictions.15 - - perf.15 <- performance(prediction(predictions.15, group), "auc") - perf.10 <- performance(prediction(predictions.10, group), "auc") - perf.05 <- performance(prediction(predictions.05, group), "auc") - - print(perf.15@y.values[[1]]) - print(perf.10@y.values[[1]]) - print(perf.05@y.values[[1]]) - - } -} - - - -save(RaceID.result, file='results/RaceIDClustering.RData') -save(OUR.result, file='results/OURClustering.RData') -save(Gini.result, file='results/GiniClustering.RData') -save(FiRE.result, file='results/FiREClustering.RData') -save(CELLSIUS.result, file='results/CELLSIUSClustering.RData') - - diff --git a/.Rproj.user/shared/notebooks/paths b/.Rproj.user/shared/notebooks/paths index f8039d2..9ba7015 100644 --- a/.Rproj.user/shared/notebooks/paths +++ b/.Rproj.user/shared/notebooks/paths @@ -2,6 +2,7 @@ /home/sam/Documents/FBT/Single/package/GapClust/DESCRIPTION="28315973" /home/sam/Documents/FBT/Single/package/GapClust/NAMESPACE="7A21DD5C" /home/sam/Documents/FBT/Single/package/GapClust/R/GapClust.R="BB791694" +/home/sam/Documents/FBT/Single/package/GapClust/man/GapClust.Rd="5B904EF8" /home/sam/Documents/FBT/Single/package/GapClust_manuscript/Rscript/ALL_10X_doublets.R="99F25B2" /home/sam/Documents/RareCellDetection/Main/68K_PBMC_20200729.R="8540FF6F" /home/sam/Documents/RareCellDetection/Main/Intestine.R="79A77135" diff --git a/man/GapClust.Rd b/man/GapClust.Rd index dd9807b..137e195 100644 --- a/man/GapClust.Rd +++ b/man/GapClust.Rd @@ -5,7 +5,7 @@ GapClust(data, k=200) } \arguments{ - \item{data}{ a data matrix, normalized expression profiles of single cells. } + \item{data}{ a data matrix, normalized expression profiles of single cells, where rows are genes and columns are cells. } \item{k}{ number of neighbors to consider and the upper limit of minor cluster size. } } \description{