-
Notifications
You must be signed in to change notification settings - Fork 57
Description
While doing the coykat analysis, I found that by the second step of running, my cells were all filtered out
[1] "10503 genes past LOW.DR filtering"
[1] "step 2: annotations gene coordinates ..."
[1] "start annotation ..."
错误于copykat(rawmat = exp.rawdata, id.type = "S", cell.line = "no", :
all cells are filtered
The code to run is“copykat.test <- copykat(rawmat=exp.NBTHCA,
id.type="S",
cell.line="no",
ngene.chr=1,
win.size=25,
KS.cut=0.15,
sam.name="NBTHCA",
distance="euclidean",
n.cores=20)”
When debugging, it is found that the parameter changes to 0 when annotating the hg20 gene.
The corresponding code is as follows
“if (genome == "hg20") {
anno.mat <- annotateGenes.hg20(mat = rawmat, ID.type = id.type)
}
else if (genome == "mm10") {
anno.mat <- annotateGenes.mm10(mat = rawmat, ID.type = id.type)
dim(rawmat)
}
anno.mat <- anno.mat[order(as.numeric(anno.mat$abspos),
decreasing = FALSE), ]
if (genome == "hg20") {
HLAs <- anno.mat$hgnc_symbol[grep("^HLA-", anno.mat$hgnc_symbol)]
toRev <- which(anno.mat$hgnc_symbol %in% c(as.vector(cyclegenes[[1]]),
HLAs))
if (length(toRev) > 0) {
anno.mat <- anno.mat[-toRev, ]
}
}
ToRemov2 <- NULL
for (i in 8:ncol(anno.mat)) {
cell <- cbind(anno.mat$chromosome_name, anno.mat[, i])
cell <- cell[cell[, 2] != 0, ]
if (length(as.numeric(cell)) < 5) {
rm <- colnames(anno.mat)[i]
ToRemov2 <- c(ToRemov2, rm)
}
else if (length(rle(cell[, 1])$length) < length(unique((anno.mat$chromosome_name))) |
min(rle(cell[, 1])$length) < ngene.chr) {
rm <- colnames(anno.mat)[i]
ToRemov2 <- c(ToRemov2, rm)
}
i <- i + 1
}
if (length(ToRemov2) == (ncol(anno.mat) - 7))
stop("all cells are filtered")”
What is the cause of this? How do I deal with it