辛丑年初始,风风专栏打算开一个新的系列——从零开始单细胞系列一。看到后面带了个一,大家就可以猜到这是一个长期系列,如果后面有新的内容或者你们有新的单细胞相关的需求,我们可以再开个二,与时俱进嘛!今天大年初一嘛,所以主要是跟大家聊一聊这个系列会有什么内容。
这次的系列推文总共分为3个部分:
第一部分:单细胞文章解读。
计划为大家准备3篇论著和两篇综述,3篇论著已经找好了,分为三个阶段,分别来自:CllRport(没错,就是前段时间被某个事件误伤的那本Cll子刊)、NaturCommunication以及NaturMdicin。综述的文章我还没找好,所以没办法放出来截图。
我们先进行单细胞论著的文章解读,对单细胞系列的文章有一个大致的认识之后,接着开始通过两篇综述学习单细胞分析的一些常识和前沿知识。这也是酸菜校长在《三十六策》教给大家的一种方法:通过阅读综述学习一个领域的常识。两篇综述解读完如果觉得不够的话,可以再加两篇,这个我们后续再说。
第二部分:模块分析。
按照生信全书中酸菜校长的四字心法:挑、圈、联、靠,我们分模块学习在单细胞分析中对应的内容,内容包括但不局限于GEO单细胞数据下载、数据质控和过滤、批次效应和数据整合、聚类和分类分析、细胞注释、鉴定标志物和拟时序分析等等内容。
第三部分:实战演练与文章复现。
学习完第二部分的模块分析内容之后,我们需要把模块组合起来应用到自己的分析中从而产出自己的文章,最好的办法就是复现别人文章,然后对比和作者结果的差异。目前也是计划复现两篇文章的部分图片,也是分别来自:CllRport和NaturCommunication,先说好,不是完整复现啊哈哈哈,不然我会罢工的!如果大家有觉得比较容易上手又跟第二部分所学的知识比较接近的文章想要复现的话,也欢迎来提供文献,看看我能不能驾驭得住(驾驭不住那我也是爱莫能助/(ㄒoㄒ)/~~)。
好啦,就是以上三部分的内容,考虑到大家可能R也还不太熟悉,甚至可能跟我一样“菜”,更别说其他的编程语言了,所以这个系列全部使用R语言来完成,不涉及到python和Linux(Flag我先立在这,就看会不会倒了),如果R语言是零基础,欢迎参加我们的R语言基础训练营或者参加B站直播教小白学习R语言的直播课,直播课目前用的讲义是风风打赏营第一期的一部分讲义,所以参加过打赏营的各位就不要去浪费时间啦!如果还是对自己没信心的话,在留言区告诉我,我们可以用2-3期推文来一起从0开始R语言(安装软件不算,以前有推文了我记得)。对了对了对了,最后,单细胞数据都很大,对电脑要求也高,希望你们有个心里准备,比如我的电脑,写教程时候竟然崩溃了两次???完蛋!
如果你能看到这里,那我相信你是“真爱”了,那总要有点惊喜嘛,我们提前来复现下面这张NaturCommunication的图片吧,体验一下单细胞的图片和分析代码吧,年初一,我们整个简单点的,大家先看一看,图个开心,详细的代码讲解我们后面复现的时候会再具体讲§(* ̄▽ ̄*)§
数据读取
我们先把数据读取进来,并且对数据进行相应处理:
rm(list=ls())sourc("utils.R")library(stringr)library(rshap2)library(scals)library(scatr)library(phatmap)pathway_fil-"KEGG_mtabolism.gmt"#加载数据slctd_imput_sc-radRDS("slctd_imput_sc.rds")pathways-gmtPathways(pathway_fil)pathway_nams-nams(pathways)all_cll_typs-as.vctor(slctd_imput_sccllTyp)cll_typs-uniqu(all_cll_typs)我们知道,每个通路都有很多基因,并且这些通路之间的基因可能有交叉,因此,我们计算一下每个基因参与的通路数目,同时计算通路活性:#查看每个基因参与的代谢通路数量gn_pathway_numbr-num_of_pathways(pathway_fil,rownams(slctd_imput_sc)[rowData(slctd_imput_sc)mtabolic])st.sd()norm_rds_fil-fil.path("Dconvolution_tpm.rds")norm_tpm-radRDS(norm_rds_fil)##计算通路活性man_xprssion_shuffl-matrix(NA,nrow=lngth(pathway_nams),ncol=lngth(cll_typs),dimnams=list(pathway_nams,cll_typs))man_xprssion_noshuffl-matrix(NA,nrow=lngth(pathway_nams),ncol=lngth(cll_typs),dimnams=list(pathway_nams,cll_typs))#计算p值pvalus_mat-matrix(NA,nrow=lngth(pathway_nams),ncol=lngth(cll_typs),dimnams=(list(pathway_nams,cll_typs)))for(pinpathway_nams){gns-pathways[[p]]gns_