美文网首页
小试牛刀——学会开Seurat函数“盲盒”

小试牛刀——学会开Seurat函数“盲盒”

作者: Bio_Infor | 来源:发表于2022-06-26 23:33 被阅读0次

水有源,故其流不穷;木有根,故其生不穷。

长期以来,我们的单细胞分析仅仅停留在调包套函数、……,这个过程会“蒙住”我们的眼睛,有些时候我们需要知道每个函数究竟在干什么才能够游刃有余,正如前述:水有源,故其流不穷;木有根,故其生不穷。一方面,这有利于我们的深入理解,另一方面也能给我们学习到优秀函数构建的机会。今天以PercentageFeatureSet()函数为例来进行分享。

PercentageFeatureSet()函数

不知道大家注意到没有,Seurat包里面的很多函数在对 SeuratObject 进行操作时,都是如下的格式:

SeuratObject <- function(SeuratObject, operation...)

简单来看就是函数对SeuratObject操作后产生的结果直接赋值给原SeuratObject。
但是PercentageFeatureSet()函数似乎不是这样(以计算线粒体基因含量为例):

SeuratObject[['percent.mt']] <- PercentageFeatureSet(SeuratObject, pattern = '^MT-')

计算产生的结果是赋给了SeuratObject的metadata的新的一列。那么为什么会是这样?或者说PercentageFeatureSet()函数能用其它函数那样的调用格式来进行使用吗?这一切都要求我们知道PercentageFeatureSet()函数的具体内容。

下面来看如何开函数盲盒,给大家提供两种方法:

方法一:直接调用函数(不加参数)

PercentageFeatureSet
############ following is the result ############
function (object, pattern = NULL, features = NULL, col.name = NULL, 
    assay = NULL) 
{
    assay <- assay %||% DefaultAssay(object = object)
    if (!is.null(x = features) && !is.null(x = pattern)) {
        warning("Both pattern and features provided. Pattern is being ignored.")
    }
    features <- features %||% grep(pattern = pattern, x = rownames(x = object[[assay]]), 
        value = TRUE)
    percent.featureset <- colSums(x = GetAssayData(object = object, 
        assay = assay, slot = "counts")[features, , drop = FALSE])/object[[paste0("nCount_", 
        assay)]] * 100
    if (!is.null(x = col.name)) {
        object <- AddMetaData(object = object, metadata = percent.featureset, 
            col.name = col.name)
        return(object)
    }
    return(percent.featureset)
}
<bytecode: 0x000002488cdb0de0>
<environment: namespace:Seurat>

通过这个方法我们成功的看到了这个函数的内部结构:

  • 首先关注这句percent.featureset <- colSums(x = GetAssayData(object = object, assay = assay, slot = "counts")[features, , drop = FALSE])/object[[paste0("nCount_", assay)]] * 100,它至少告诉我们两个信息:首先,percent.featureset是一个某些基因表达占比的数值向量;其次,这个数值是百分比,而不是小数。
  • 进一步关注这句:if (!is.null(x = col.name)) { object <- AddMetaData(object = object, metadata = percent.featureset, col.name = col.name) return(object) },这句的意思是,如果我们在调用PercentageFeatureSet()函数时添加了col.name参数时,这个函数就会返回一个SeuratObject,这里的col.name参数就是新的metadata列的列名。反之如果没有指定col.name,就只会返回一个percent.featureset的比例数值向量,自然需要我们指定metadata新列的信息。

方法二:使用edit()函数

edit(PercentageFeatureSet)

执行这个语句后会出现一个新的小界面,你可以在看到这个函数的内部结构的同时,手动对该函数进行编辑。在这里不赘述了。

通过上面的分析,实际上PercentageFeatureSet()函数的调用还可以用下面这种格式:
SeuratObject <- PercentageFeatureSet(SeuratObject, pattern = '^MT-', col.name = 'percent.mt')
今天又是摸鱼的一天!

相关文章

  • 小试牛刀——学会开Seurat函数“盲盒”

    水有源,故其流不穷;木有根,故其生不穷。 长期以来,我们的单细胞分析仅仅停留在调包、套函数、……,这个过程会“蒙住...

  • 盲盒全系列软件开发

    盲盒全系列开发,有各种盲盒商城抽奖系统源码小程序盲盒商城,H5盲盒商城,APP盲盒商城,盲盒商城源码搭建开发,二开...

  • 开盲盒

    现在流行开盲盒,这不在网上买了两盆大岩桐,颜色随机。 两盆花包装完好,颜色翠绿,更喜人的是带花苞,期盼花开,不管什...

  • 开盲盒

    郭树宾 睡梦之中,正跟一位美女津津有味地看电影,不知怎么地忽然间感觉浑身燥热起来。 一骨碌身儿睁开眼,迷迷瞪瞪中,...

  • 开盲盒

    前几天在网上买了一个盲盒杯,今天终于收到了,还好,不算失望。 盲盒是前几年兴起的一种销售模式,它以...

  • 开盲盒

    我准备给小样儿来点学习刺激,现在流行开盲盒。 那么期末奖品就来个开盲盒。 为啥会有期末奖品? 我同事说,考的好不好...

  • 开盲盒

    今天是小孩“双减政策”下第一个期考成绩出单日。退步的一个学期,成绩惨不忍睹,果真是宽松的态度带来紧张的情绪...

  • 开盲盒

    今天又去郊区种菜,一切都欣欣向荣的样子。 城里的农人喜欢种菜,我大致区别了一下,有这么几类,一类是随着生活条件的改...

  • 开盲盒

    城里新开了一家密室馆,是在废弃剧院的基础上改造的,三层楼,只运行一个剧本,名叫《开盲盒》。 密室运行许久,但一直没...

  • 开盲盒

    原创图文 我们一家在外游玩时,有时去的地方不远也不近,或者赶时间的话,儿子都会叫网约车。我发现每次来的车子都不一样...

网友评论

      本文标题:小试牛刀——学会开Seurat函数“盲盒”

      本文链接:https://www.haomeiwen.com/subject/hcxnvrtx.html