常见基因选择方法[持续更新中...]

  1. SCMarker:选择表达水平呈双/模态分布,并且与其他一些基因共同表达或相互排斥性表达的基因。
    论文链接
library(SCMarker)
scMarker <- function(data){
  Res <- ModalFilter(data = data, geneK = 10, cellK = 10)
  Res <- GeneFilter(obj = Res)
  Res <- getMarker(obj = Res, k = 300, n = 30)
  scMarker_genes <- Res$marker
  return(scMarker_genes)
}
  1. Seurat:首先利用局部加权回归(Locally Weighted Linear Regression, loess)[13]对基因表达量的均值和方差的对数拟合一条直线,然后利用观测均值和期望方差对基因表达量进行标准化,最后根据标准化的表达量计算方差,选取最高排名基因,称为高度可变基因。
    论文链接
HVG <- function(data){
  s=nrow(data)*0.1
  s=floor(s)
  pbmc_small <- CreateSeuratObject(data)
  pbmc_small <- NormalizeData(object = pbmc_small)
  pbmc_small <- FindVariableFeatures(object = pbmc_small,nfeatures = s)
  pbmc_small <- ScaleData(object = pbmc_small)
  Seurat_genes=pbmc_small@assays[["RNA"]]@var.features
  return(Seurat_genes)
}
  1. M3Drop:对所有基因的缺失率和平均表达量拟合一个 Michaelis-Menten(MM)方程,并估计一个全局 MM 常数。然后计算每个基因的 MM 常数,使用 Z 检验将其与全局 MM 常数比较,从而得出每个基因的 p-value 值,随后用 p-value 对基因进行排名。
    论文链接
# M3Drop
library(M3Drop)
M3Drop <- function(data){
  uso_list <- M3Drop::M3DropCleanData(
    data,
    labels = colnames(data),
    min_detected_genes = 100,
    is.counts = FALSE
  )
  expr_matrix <- uso_list$data
  ex=M3Drop::M3DropFeatureSelection(expr_matrix,mt_method = "fdr",mt_threshold = 0.01)
  M3Drop_genes=ex[[1]]
  return(M3Drop_genes)
}
  1. Expr:使用基因的平均表达作为基因重要性度量
    论文链接
Expr <- function(data){
  meanExp = apply(data,1,mean)
  meanExp = meanExp[order(meanExp,decreasing = TRUE)]
  s=nrow(data)*0.1
  s=floor(s)
  Expr_genes = names(meanExp)[1:s]
  return(Expr_genes)
}
  1. SC3:过滤掉普遍存在和很少表达的基因,根据平均表达水平和 dropout 比率保留重要基因
    论文链接

sce <-
  SingleCellExperiment(assays = list(counts = as.matrix(t(embedding_data)),
                                     logcounts = as.matrix(log2(
                                       t(embedding_data) + 1
                                     ))))
# define feature names in feature_symbol column
rowData(sce)$feature_symbol <- rownames(sce)
# remove features with duplicated names
sce <- sce[!duplicated(rowData(sce)$feature_symbol), ]
sce <- runPCA(sce)

#estimate optimal k for clustering
k <- sc3_estimate_k(sce)@metadata$sc3$k_estimation
res <- sc3(sce, ks = k)

adjustedRandIndex(res$sc3_xxx_clusters, meta$label)
  1. FEAST:计算基因的 F-statistics 得分,选择前 n 个基因作为特征集合,使用 MSE 估计最佳特征集合。
    原文链接
test <- load("filepath")
K <- length(unique(meta$label))
Y <- process_Y(data)

#FEAST+SC3
con_res <-  Consensus(Y, k = K)
F_res = cal_F2(Y, con_res$cluster)
ixs = order(F_res$F_scores, decreasing = T) # order the features

top = 2000 # try the top 2000 features
markers = rownames(Y)[ixs][1:top]
sc3_res = SC3_Clust(Y, k = K, input_markers = markers)
eval_Cluster(sc3_res$cluster, meta$label)
  1. GiniClust:根据每个基因的表达水平计算基尼系数,选择基尼系数值较大的基因。
    论文链接
    代码链接

  2. Laplacian Scores:基于拉普拉斯特征映射(Laplacian Eigenmaps)和局部保留投影(Locality Preserving Projection),通过构造一个局部加权图来评估特征的重要性。
    论文链接

  3. SCMER:通过优化原始数据和低维空间的相似度矩阵的 KL 散度,选择非零权重对应的基因,从而识别非冗余特征,用于描绘常见的细胞类型和罕见的细胞状态。
    论文链接
    代码链接

  4. EDGE:结合集成学习和 sketching 技术[21],使用大量的弱学习器学习细胞间相似性概率,通过最小化交叉熵函数学习并优化数据的低维表示,同时选择在这一过程中做出重要贡献的基因作为标记基因。
    论文链接
    代码链接
    pipeline

  5. scCCESS:从原始数据中提取随机投影子空间,使用自编码器将每一个随机投影压缩到低维空间进行聚类,应用集成学习思想生成最终的细胞簇划分。
    论文链接

pipeline

  1. DUBStepR:基于基因间相关性的特征选择方法 DUBStepR[23],使用逐步回归的方法识别数据集中最能代表生物变异的基因集合,随后定义了一种基于图的细胞聚类度量方法密度指数(density index,DI)用来优化特征的数量。
    论文链接
    源码链接

  2. rankCorr(论文太长了~感兴趣自己看)
    论文链接
    源码链接

  3. NS-Forest
    论文链接
    源码链接

from NSForest_v3 import *
import itertools

adata_markers = NS_Forest(adata) #Runs NS_Forest on scanpy object
#gets list of minimal markers from dataframe for display in scanpy plotting functions
Markers = list(itertools.chain.from_iterable(adata_markers['NSForest_Markers']))
# gets list of binary markers from dataframe for display in scanpy plotting functions
Binary_Markers = list(itertools.chain.from_iterable(adata_markers['Binary_Genes']))
  1. scPNMF:计算权重矩阵来选择基因,对基因权重排序,权重越大,基因贡献越大。
    论文链接
    源码链接
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

eynoZzzzc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值