R包SomaticSignatures进行denovo的signature推断,比如:0元,10小时教学视频直播《跟着百度李彦宏学习肿瘤基因组测序数据分析》 这个文献,研究者就是使用R包SomaticSignatures 组成的时候,替换掉内置的signatures.cosmic 和 signatures.nature2013,代码如下: signatures.cosmic rowSums(signatures.cosmic 文件,来自于教程:使用R包SomaticSignatures进行denovo的signature推断。 把自己的11个signature制作成为R包内置的signatures.cosmic 和 signatures.nature2013样式,这个代码非常复杂,需要大家自行认真的理解。 as.data.frame(sp) 就替代了 R包内置的signatures.cosmic 和 signatures.nature2013。
一 查看数据集的缺失情况 R中使用NA代表缺失值,用is.na识别缺失值,返回值为TRUE或FALSE。 由于逻辑值TRUE和FALSE分别等价于数值1和0,可用sum()和mean()来获取数据集的缺失情况。 载入R包及内置数据集 library(VIM) #VIM包的sleep数据集示例 data(sleep,package="VIM") 1)查看数据集整体有多少缺失值及百分比 sum(is.na(sleep 左侧第一列,’42’代表有42条数据无缺失值,第一个’9’代表9条数据Dream和NonD同时缺失。最后一行返回的就是每一个变量(列)对应的缺失数目,38为一共有多少缺失值。下图同样的意思。 ? 三 处理缺失值 当充分了解了缺失值的情况后,可以根据数据量的大小,以及某一列是否为重要的预测作用变量,对数据集中的NA行和某些NA列进行处理。
Vite学习指南,基于腾讯云Webify部署项目。
软件配置 需要使用C++编译器,安装方法取决于操作系统,Linux:一般安装了R就会安装了;Mac:Xocode;Windows:Rtools,与版本要对应。 高效的基础R 改善性能的标准方式和替代方法 if与ifelse函数 marks <- runif(n=10e6, min=30, max=99) system.time({ result1 <- ifelse 哪个索引是TRUE which() 将因子转换成数值 逻辑AND与OR &和|是向量化的,非向量版本的&&和||,只在必要情况下执行第二个条件,注意不要使用它们操作向量。 行和列操作 apply()家族,rowSums()和colSums()。 is.na与anyNA 想了解一具向量是否包含任何缺失值,anyNA()更高效。 矩阵 数据框中提取行比矩阵中慢约150倍。 有没有见过显示n是6L,而不是6的情况,L是一个简写,用于生成 一个整型,应该是long吧,R中数值是以双精度存储的。整数可以比小数存储空间节约一倍,更进一步节约空间是用bit包。
R基本语法 获取帮助文档,查看命令或函数的使用方法、事例或适用范围 >>> ?command >>> ?? 系列函数用来判断变量的属性和转换变量的属性 # 矩阵转换为data.frame > is.character(a) [1] FALSE > is.numeric(a) [1] TRUE > is.matrix =0,] 错误: 意外的']' in "a <- a[rowSums(abs(a)!=0,]" # 去除全部为0的行 > a <- a[rowSums(abs(a))! (中值绝对偏差,一般认为比方差的鲁棒性更强,更少受异常值的影响,更能反映数据间的差异) > apply(a,1,mad) [1] 0.7923976 2.0327283 0.2447279 0.4811672 It calls ‘args’ for (non-primitive) function objects. str用来告诉结果的构成方式,对于不少Bioconductor的包,或者复杂的R函数的输出
其中异常值检测的方法主要有:箱型图、简单统计量(比如观察极值) 异常值处理方法主要有:删除法、插补法、替换法。 提到异常值不得不说一个词:鲁棒性。就是不受异常值影响,一般是鲁棒性高的数据,比较优质。 1、基本函数 summary可以显示每个变量的缺失值数量. 2、缺失值检验 关于缺失值的检测应该包括:缺失值数量、缺失值比例、缺失值与完整值数据筛选。 2、盖帽法 整行替换数据框里99%以上和1%以下的点,将99%以上的点值=99%的点值;小于1%的点值=1%的点值。 ? 4、异常值处理——均值替换 数据集分为缺失值、非缺失值两块内容。缺失值处理如果是连续变量,可以选择均值;离散变量,可以选择众数或者中位数。 计算非缺失值数据的均值, 然后赋值给缺失值数据。 最终模型的标准误和p值都将准确地反映出由于缺失值和多重插补而产生的不确定性。
前面我们的泛癌系列教程,都是直接使用count矩阵进行分析,最多就是进行一些转换而已。但是很多读者不依不饶一定要我们使用TPM表达量矩阵,因为这个更权威或者说更流行! 关于基因长度的探讨 五年前我分享过前主流定义基因长度的几种方式。 挑选基因的最长转录本 选取多个转录本长度的平均值 非冗余外显子(EXON)长度之和 非冗余 CDS(Coding DNA Sequence) 长度之和 参考我的博客:定义基因长度为非冗余CDS之和 http 我这里有一个代码可以获取小鼠的 基因长度,基于 非冗余exon长度之和: # BiocManager::install('TxDb.Hsapiens.UCSC.hg38.knownGene') library 前面的泛癌目录是: estimate的两个打分值本质上就是两个基因集的ssGSEA分析 针对TCGA数据库全部的癌症的表达量矩阵批量运行estimate 不同癌症内部按照estimate的两个打分值高低分组看蛋白编码基因表达量差异
duplicated(genes$ENTREZID),] x$genes <- genes x 数据预处理 从原始尺度转换 对于差异表达和相关分析,基因表达很少在原始计数水平上考虑,因为文库测序的深度更大会导致更高的计数 流行的转换包括每百万次计数(CPM),每百万次计数(log-CPM),每千克转录本的读数(RPKM)和每千万转录本的百万分率(FPKM)。 假设条件之间的异构体使用没有差异差异表达分析着眼于条件之间的基因表达变化,而不是比较多个基因的表达或得出绝对表达水平的结论。 换句话说,基因长度对于感兴趣的比较保持不变,任何观察到的差异都是条件变化的结果,而不是基因长度的变化。 这里使用edgeR中的cpm函数将原始计数转换为CPM和log-CPM值,其中对数转换使用先前计数为0.25来避免采用零对数。
1.前言 马赛克图(mosaic plot),显示分类数据中一对变量之间的关系,原理类似双向的100%堆叠式条形图,但其中所有条形在数值/标尺轴上具有相等长度,并会被划分成段。 此外,我们也很难准确地对每个分段进行比较,因为它们并非沿着共同基线排列在一起。 适用 马赛克图比较适合提供数据概览。 计算出每行的最大,最小值,并计算每行各数的百分比。ddply()对data.frame分组计算,并利用join()函数进行两个表格连接。 /segpct[i]*100 #将数字转换成百分比 } } segpct<-segpct/sum(segpct)*100 df$xmax <- cumsum(segpct) df$xmin <- ,从横向来看,不同变量(A,B等)的宽度代表该变量占所有数据的占比情况,越宽说明该变量数据总和越大。
分析转录组测序数据时,通常使用p值/q值和foldchange值来衡量基因的差异的表达水平。目前,大家普遍都认为转录组数据的read counts(即基因的reads数量)符合泊松分布。 几个用于差异表达分析的R包如DESeq2和edgeR等,都是基于负二项分布模型设计的,整体而言结果相差不大。Limma包也可以用来分析RNA-seq数据,但主要用于分析芯片数据,现在用的人不多了。 当然如果用泊松分布来做差异表达分析的话,也存在缺点,可能会忽视生物学样本间的个体差异。 这里,我将RNA-seq数据差异表达分析大体分为差异表达基因鉴定和后续分析两个部分。 ? 我们可以做: 01 富集分析 包括GO和KEGG富集分析,可以用R里的clustProfiler包进行,也可以利用已有的一些网站。 02 聚类分析 基于差异表达基因间表达模式的相似性,分为不同类,后续可以对这些不同类的基因list分别进行分析。
7千多个,下调的基因也有六千五百多个,尽管上下调基因数量和normal基因数量比例还算合适,但这个数量也太离谱了。 (正常情况下应该是2万个基因,不过主要是取决于gtf文件的记录情况) 查看了一下表达矩阵,嘶,这些居然是外显子...... 完蛋,做成了差异的外显子了。(非常懊恼啊,简直是脑子被驴踢了!) 换一句话说,featureCounts默认定量的水平为Meta-features。 feature指的是基因组区间的最小单位,比如exon; 而meta-feature可以看做是许多的feature构成的区间,比如属于同一个gene的外显子的组合,也可以是不同转录本。 -t "exon" -g "ID" 相当于手动将定量的level又降到exon了 -t "exon" -g "gene_id" 则是将定量到的exon汇总到gene水平上 解决办法 既然如此,提供两条解决办法
简介 由于R语言的apply家族函数是用C写的,所以使用apply进行遍历的执行效率远远高于自己编写的循环语句。 lapply函数 lapply函数是一个最基础循环操作函数之一,用来对list、data.frame数据集进行循环,并返回和X长度同样的list结构作为结果集,通过lapply的开头的第一个字母’l’就可以判断返回结果集的类型 mapply(max, x, y, z)[1] 10 9 8 7 8 9 10 又比如想生成4个符合正态分布的数据集,分别对应的均值和方差为c(1,10,100,1000)。 eapply函数平时很难被用到,但对于R包开发来说,环境空间的使用是必须要掌握的。特别是当R要做为工业化的工具时,对变量的精确控制和管理是非常必要的。 总结 从上面这8个函数的参数定义,我们可以发现它们都接收一个函数作为它的参数,在编程的世界里,这种把函数作为参数传入的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。
关于缺失值还有一个函数:complete.cases函数 该函数与is.na的区别在于: 1、输出数据格式不同。 ——因为R默认将TURE、FALSE当做1、0 #计算缺失值个数 sum(is.na(an)) #单数列,sum一下可以直接计算“Ture”的数值和 colSums (is.na(an),na.rm = T) #多维数列,按列,na.rm为是否需要忽略缺失值,na.rm=T表示忽略,删除 rowSums(is.na(an),na.rm = T) is.na(an)) & x>0] -> z #可以用 & 加入其他条件,进行筛选 —————————————————————————————————————————————————————— —————— 缺失值检测解决方案: 关于缺失值的检测应该包括:缺失值数量、缺失值比例、缺失值与完整值数据筛选。
这是通过使用tm_map()函数将特殊字符如“/”、“@”和“|”替换为空格来完成的。下一步是删除不必要的空格,并将文本转换为小写。 “stopwords”的信息值接近于零,因为它们在语言中非常常见。在进一步分析之前,删除这类词是有用的。 对于“stopwords”,支持的语言是丹麦语,荷兰语,英语,芬兰语,法语,德语,匈牙利语,意大利语,挪威语,葡萄牙语,俄语,西班牙语和瑞典语。语言名称区分大小写。 换句话说,这个过程去掉单词的后缀,使其变得简单,并获得共同的起源。例如,词干提取过程将单词“moving”、“moved”和“movement”还原为词根词“move”。 】情绪可以分为积极的、中性的和消极的。
limma这个R包可以用于分析芯片数据,也可以分析NGS测序的数据,其核心是通过线性模型去估算不同分组中基因表达量的均值和方差,从而进行差异分析。 读取文件 读取基因在所有样本中的表达量文件,示例如下 gene_id ctrl-1 ctrl-2 ctrl-3 case-1 case-2 case-3 geneA 14 0 11 4 0 12 过滤count数很低的基因 和edgeR中的预处理过程类似,根据CPM表达量对基因进行过滤,代码如下 keep <- rowSums(cpm(y)>1) >= 2 y <- y[keep, , keep.lib.sizes 表达量转换 在进行差异分析前,需要对表达量进行转换,有以下两种选择 logCPM voom 第一种转换就是计算logCPM值,第二种转换适用于样本间sizaFactors差异较大的情况。 这里只是介绍了最简单的用法,更多复杂案例,比如多个分组,时间序列的差异分析等,请参考官方文档。 ·end· —如果喜欢,快分享给你的朋友们吧—
S4对象 主要是基于 SCESet 对象来进行下游分析,跟ExpressionSet对象类似,也是常见的3个组成: exprs, a numeric matrix of expression values 主要就是读取scRNA上游分析处理得到的表达矩阵,加上每个样本的描述信息,形成矩阵之后。对样本进行过滤,然后对基因进行过滤。针对过滤后的表达矩阵进行各种分类的可视化。 详细的QC 做QC要结合上面的可视化步骤,所有没办法自动化,只能先可视化,肉眼分辨一下哪些样本或者基因数据是需要舍弃的。 默认的筛选条件如下: pct_counts_top100features total_features pct_counts_feature_controls n_detected_feature_controls ,它作为单细胞转录组3大R包,功能肯定是非常全面的,比如前面我们讲解的normalization,DEG, features selection,cluster,它都手到擒来,只不过是包装的是其它R包的函数
云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。 腾讯云服务器(CVM)为您提供安全可靠的弹性云计算服务。只需几分钟,您就可以在云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。
扫码关注云+社区
领取腾讯云代金券