余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

生信科研狗为什么必须学习R?(小狗科研有帮助吗)

xiyangw 2022-12-12 10:11 625 浏览 1 评论

何谓“生信”?

生物信息学(Bioinformatics)是研究通过信息科学方法进行生物数据的存储、检索、组织和分析的一门交叉学科。生物信息学的学科代码:071003。

生物信息学是一门以生物学、数学和信息科学为基础的交叉科学,它通过综合运用数学和信息科学等多领域的方法和工具对生物信息进行获取、加工、存储、分析和解释,来阐明大量生物数据所包含的生物学意义。生物信息学涉及课程包括:基因工程、微生物学基础、动物学基础、R/Python语言编程、动物系统学原理、分子克隆技术、动物资源学及应用、高通量药物筛选、进化算法、生物数据库管理系统、生物统计与实验设计、生物芯片制作技术、生物信息软件综合实践、生物信息学的计算技术、生物信息学进展、生物信息学原理、数据挖掘原理及应用等。

R在生物信息分析中的重要性

R在生物信息分析中有着极其重要的重要,无论我们做什么样的分析,我们都离不开强大的R。无论是统计学分析,还是想得到漂亮的图形,R都成了我们工作必不可少的一部分。无论是统计学算法,还是测序深度、覆盖度、热图、火山图、Peak、PCA、共表达网络、GO、KEGG的图形化,甚至很多TCGA等数据库数据的下载,我们无一例外都可以用R实现。

给大家举个统计学的例子,假如我们想做T检验。


#input
cc13>input<-c(25,25,31,33,35,36,37,38,38,39,39,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,42,42,43,43,43,43,43,43,43,43,44,44,44,44,44,44,44,44,44,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,48,49,49,56,56,57,67)

#t检验
>t.test(input, mu = 45, var.equal = FALSE) 

#mu表示平均值,var.equal = FALSE表示方差未知

One Sample t-test

data:  input
t = -2.7245, df = 66, p-value = 0.008236
alternative hypothesis: true mean is not equal to 45
95 percent confidence interval:
 41.45675 44.45370
sample estimates:
mean of x 
 42.95522 


简单吧,其实我们只要输入一两句话,就可以完成T检验的工作,非常方便。我们再也不要为那些繁琐的公式而发愁了。我们现在看看结果吧。我们可以看到,p-value = 0.008236,我们就得到了想要的结果了。

R,“惊艳”的可视化功能

我们在做GO的时候,想通过柱状图将GO富集的gene数目和P值展示出来。这样我们可以通过图形更加直观的看出我们的差异基因富集在GO或者kegg上。

先看看输入文件,非常的简单,包括三个,第一列为富集的GO的名字,第二列为GO富集的gene数目,第三列为富集的P值。

Term

Count

PValue

GO:0000279~M phase

22

6.73E-19

GO:0022403~cell cycle phase

22

7.09E-18

GO:0007049~cell cycle

27

7.37E-14

GO:0022402~cell cycle process

16

3.90E-15

GO:0007067~mitosis

15

2.48E-13

GO:0000280~nuclear division

15

2.48E-13

GO:0000087~M phase of mitotic cell cycle

15

1.42E-10

GO:0048285~organelle fission

15

4.31E-13

GO:0000278~mitotic cell cycle

16

2.10E-11

GO:0000793~condensed chromosome

10

8.08E-10

GO:0005819~spindle

10

2.58E-09

GO:0051301~cell division

13

2.72E-09

GO:0000775~chromosome, centromeric region

13

1.43E-08

GO:0007017~microtubule-based process

11

8.74E-08

GO:0051726~regulation of cell cycle

12

1.08E-07

GO:0000819~brother chromatid segregation

9

1.44E-06

GO:0015630~microtubule cytoskeleton

13

9.46E-06

GO:0005694~chromosome

12

4.63E-06

下面我们来看看R脚本,我们可以是用ggplot2很方便画这样的图形。这个脚本也只有三行,首先引用ggplot2包,然后读取我们的输入文件,之后使用ggplot对输入文件进行图形化的工作。

结果如下,纵坐标代表GO富集的Term,横坐标代表每个GO富集的基因数目,而每个柱子的染色代表-log10(PValue)。这样一来,我们就可以直观的看出哪些GO富集的数目多,哪些GO富集程度高。

#
 >library(ggplot2)
 >ggplot(data=cc)+geom_bar(aes(x=Term, y=Count, fill=-log10(PValue)), stat='identity') + 
+ coord_flip() + scale_fill_gradient(low="red", high = "blue") + 
+ xlab("") + ylab("") + theme(axis.text.x=element_text(color="black", size=12), 
+ axis.text.y=element_text(color="black", size=12)) + 
+ scale_y_continuous(expand=c(0, 0)) + scale_x_discrete(expand=c(0,0))

强大的bioconductor

Bioconductor给我们生物信息工作者带来了极大的便利。Bioconductor是一个开源的和开放式的软件开发项目,建立多方面的、强有力的基因组数据的统计与图形分析方法。Bioconductor的应用主要以包(Package)的集成形式呈现在用户面前,Bioconductor提供了大量开放式的生物信息学软件包。

Bioconductor中有很多包可以做GO和KEGG分析,今天我们以clusterProfiler包为例,给大家讲解下用bioconductor做生物信息分析。我们的脚本如下,前2行以”#”开头的是怎么安装bioconductor包,接下来就是使用clusterProfiler进行kegg分析的命令了。通过运行,我们可以得到kegg富集的表格和图形。在kegg的图形中,红色代表上调基因,绿色代表下调基因。

#
install.packages('BiocManager') 
library(BiocManager)

BiocManager::install('clusterProfiler')  #安装了好多包,费时20分钟左右
library(clusterProfiler)

kk<-enrichKEGG(gene=gene,organism='human',pvalueCutoff=0.05)


相关推荐

排序算法--归并排序_归并排序例题讲解

原理如图所示(先分割再合并):归并排序代码工作原理:1、申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列2、设定两个指针,最初位置分别为两个已经排序序列的起始位置3、比较两个指针所...

八大排序算法-归并排序_归并排序 算法

算法思想归并排序分为三个步骤:1.分解:将数列分解成n个子数列。(如果是将数列分成2个子数列则为2路归并)2.治理:对每个子数列进行排序操作3.合并:将两个排好序的子数列进行合并生成新的数列算法实现P...

高级排序之归并排序、希尔排序_希尔排序和归并排序区别

前言继上次排序算法简单排序算法之冒泡、插入和选择排序-Java实现版后,本文学习高级排序算法——归并排序、希尔排序,快速排序将在后续更新。本文实现代码调用方法,部分来自前一个文章:简单排序算法之冒泡、...

Excel办公应用:按合并单元格排序的三大方法

1.按姓名对科目排序重点:在"C2"中输入公式=IF(A2<>"",1,C1+1),然后下拉填充。2.按姓名添加连续序号(方法一)重点:选择"A2:A11"单元格区域,在编辑栏中输入公...

快速排序 Vs. 归并排序 Vs. 堆排序——谁才是最强的排序算法

知乎上有一个问题是这样的:堆排序是渐进最优的比较排序算法,达到了O(nlgn)这一下界,而快排有一定的可能性会产生最坏划分,时间复杂度可能为O(n^2),那为什么快排在实际使用中通常优于堆排序?昨天刚...

归并排序思路图解 #归并排序_归并排序百度百科

排序算法1.图解。OK,让它排一下。看好了,要开始排了。能看出来像递归吗?肯定算法难,但是这个次数非常的多,不用管次数。这个是帝规,就是递归。这是并,这是并,这是两个有序数,组合成一个最后的大的有序数...

排序算法学习——归并排序_归并排序算法稳定吗

我们先看归并排序的定义归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(DivideandConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每...

动画|经典的归并排序究竟怎么玩儿?

作者|菠了个菜责编|郭芮由于LeetCode上的算法题很多涉及到一些基础的数据结构,为了更好的理解后续更新的一些复杂题目的动画,推出一个新系列——《图解数据结构》,主要使用动画来描述常见的数据...

Excel中,多列数据统一排名,Rank函数直接搞定

Rank实现多列联合排序排序,那太简单啦,Excel中,升序降序,一个按键就可以。但,那是针对单列情况,若需要联合多列数据进行排序呢?如下图所示,需要对1、3、5列进行统一排序,咋弄嘞?联合排序案例先...

【数据结构与算法】归并排序_数据结构中归并排序

归并排序是建立在归并操作的一种高效的排序方法,该方法采用了分治的思想,比较适用于处理较大规模的数据,但比较耗内存,今天我们聊聊归并排序排序思想一天,小一尘和慧能坐在石头上,眺望着远方师傅,我听山下的柳...

C++基础算法:归并排序_经典排序算法-----归并排序(c语言实现)

归并排序(MergeSort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(DivideandConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列。...

马士兵说之归并排序_马士兵教育的内推是真的

大家对于排序应该是挺熟悉的吧,马士兵老师特意为排序出了一波视频,当然文章是转自博客园的,马士兵老师的视频观看请点击下方的了解更多概要本章介绍排序算法中的归并排序。内容包括:1.归并排序介绍2.归并...

C++快速排序和归并排序_c++快速排序sort

快速排序每一轮挑选一个基准元素(随机选择,编程时一般选取第一个),并让比它大或小的元素移动到基准元素的两边,把数列拆解成了两个部分。而后对这两部分分别进行快速排序。时间复杂度:O(nlogn),辅助空...

经典的排序算法——归并排序_归并排序算法步骤

归并排序(MergeSort)是一种基于分治策略的高效排序算法。它将原始数组不断地分割成两个子数组,直到每个子数组只剩下一个元素为止(即基本有序),然后再通过合并已排序的子数组来最终得到完全有序的大...

归并排序_归并排序c++实现

归并排序概念:归并排序中涉及到一个概念就是分而治之,总序列化成小序列,将小序列排序好,利用排序好的小序列,再归并排序成原来要排序的序列。所以排序前先要分:functiondivide(arr){...

已有1位网友发表了看法:

  • xiyangw

    xiyangw  评论于 [2023-01-01 11:56:24]  回复

    go:0000278

取消回复欢迎 发表评论: