创建一个新的.Rmd
文件
处理.Rmd
文件
解剖学
' YAML '头,包含关于文档的信息
——标题:“Notes”作者:“Martin Morgan”日期:“6/30/2019”输出:html_document——
纯文本' markdown '
#
:顶层标题;# #
第二级标题,…更多的帮助下,“帮助”->“markdown快速参考
锻炼要继续,请保留YAML头,但删除其他所有内容。
图书馆()
,install.packages ()
,BiocManager:安装()
我们将使用以下库;将它们连接到电流上R会话。
库(readr)库(dplyr)
如果R响应
在库(readr)中出现错误:没有名为“readr”的包
或者类似的情况,这意味着需要安装库。“Bioconductor’的库安装方式(能够安装凹口而且Bioconductor包)是要使用的BiocManager包中。确保你有BiocManager
包安装
如果(!requireNamespace("BiocManager", quiet = TRUE))安装包("BiocManager")
然后安装所需的软件包
BiocManager:安装(c(“readr”、“dplyr”))
read_csv ()
找到数据文件" ALL-sample-sheet.csv "
Pdata_file <- file.choose()
然后输入数据使用read_csv ()
Pdata <- read_csv(pdata_file)
##用列规范解析:## cols(## .default = col_character(), ## age = col_double(), ## t(4;11) ' = col_logical(), ## t(9;22) ' = col_logical(), ## cyto。Normal = col_logical(), ## CCR = col_logical(), ## relapse = col_logical(), ## transplant = col_logical() ##)
##参见spec(…)获取完整的列规范。
如果R响应
错误在read_csv():无法找到函数“read_csv”
这意味着readr
包还没有贴上去R会话;补救措施和库(readr)
.
看一下数据,看看我们有什么
pdata
一个小码:128 x 22样本鳕鱼诊断性别年龄BT缓解CR日期。cr # # <空空的> <空空的> <空空的> <空空的> <双> <空空的> <空空的> <空空的> < >从而向# # 1 01005 1005 5/21/1997 53 B2 cr cr 8/6/19…# # 2 01010 1010 3/29/2000 19 B2 cr cr 6/27/2…# # 3 03002 3002 6/24/1998 F 52 B4 cr cr 8/17/1…# # 4 04006 4006 7/17/1997 38 B1 cr cr 9/8/19…# # 5 04007 4007 7/22/1997 57 B2 cr cr 9/17/1…# # 6 04008 4008 7/30/1997 17 B1 cr cr 9/27/1…# # 7 04010 4010 10/30/19 18 F B1 cr cr 1/7/19…# # 8 04016 4016 2/10/2000 16 B1 cr cr 4/17/2…# # 9 06002 6002 3/19/1997 15 B2 cr cr 6/9/19…# # 1008001 8001 1/15/1997 M 40 B2 CR CR 3/26/1…## #…与118多行,和13个变量:' t(4;11) ' , ## # ' t(9;22) ' , cyto。Normal , citog , mol.biol , ## # '融合蛋白' , MDR , kinet , CCR , ## #复发,移植, f.u , '最后一次见到日期'
这代表了从一个经典的微阵列实验中收集到的128个样本上的22个变量。有些列名是模糊的;我们只关注其中的几个。
添加顶级节标题(以#
)像
第一天:R / Bioconductor实用
添加到目前为止你学过的关键功能的注释,使用项目列表,如
关键功能:—' file.choose() ':交互选择文件位置。- ' library(readr) ':将readr包附加到当前_R_会话- ' read_csv() '
按下“Knit”按钮,调试发生的任何错误。
创建一个包含数据输入指令的代码块,使用“fence”后跟{r}
{r} library(readr) pdata_file = "path/to/file" pdata <- readr(pdata_file) pdata ' ' ' '
按下“针织”按钮。注意,代码实际上是求值的,正确时将从pdata_file
.
安排()
使用安排()
从最年轻到最年长的人排列
Pdata %>% age
一个小码:128 x 22样本鳕鱼诊断性别年龄BT缓解CR日期。cr # # <空空的> <空空的> <空空的> <空空的> <双> <空空的> <空空的> <空空的> < >从而向# # 1 08018 8018 8/27/1999 5 B3 cr cr 10/18 /…# # 2 19017 19017 3/17/2000 14 T2 cr cr 6/15/2…# # 3 06002 6002 3/19/1997 15 B2 cr cr 6/9/19…# # 4 25003 25003 5/22/1998 15 B2 cr cr 8/4/19…# # 5 04016 4016 2/10/2000 16 B1 cr cr 4/17/2…# # 6 24010 24010 6/3/1997 F 16 B2 cr cr 8/11/1…# # 7 24019 24019 5/4/1999 16 B4 cr cr 7/28/1…# # 8 28001 28001 10/19/19…16 B3 REF REF < NA > # # 9 28044 28044 7/20/1999 16 B3 cr cr 9/20/1…# # 1001007 1007 9/30/1998 F 16 T3 CR CR 11/30/…## #…与118多行,和13个变量:' t(4;11) ' , ## # ' t(9;22) ' , cyto。Normal , citog , mol.biol , ## # '融合蛋白' , MDR , kinet , CCR , ## #复发,移植, f.u , '最后一次见到日期'
如果R响应与
> pdata %>% arrange(age)错误在pdata %>% summary (n = n()):无法找到函数"%>%"
然后我们需要附加dplyr
包,库(dplyr)
.
从大到小排列
Pdata %>% arrange(desc(age))
一个小码:128 x 22样本鳕鱼诊断性别年龄BT缓解CR日期。cr # # <空空的> <空空的> <空空的> <空空的> <双> <空空的> <空空的> <空空的> < >从而向# # 1 16004 16004 4/19/1997 F 58 B1 cr cr 7/15/1…# # 2 20002 20002 5/9/1997 F 58 B2 cr cr 8/19/1…# # 3 04007 4007 7/22/1997 57 B2 cr cr 9/17/1…# # 4 24017 24017 9/15/1998 57 B2 cr cr 12/7/1…# # 5 08012 8012 10/22/19…55 B3 cr cr 1/9/19…# # 6 28021 28021 3/18/1998 F 54 B3 cr 5/22/1…亲爱的…# # 7 30001 30001 1/16/1997 F 54 B3 < NA >亲爱的…< NA > # # 8 43007 43007 10/14/19…54 B4 cr cr 12/30 /…# # 9 62002 62002 1/15/1998 54 B4 < NA >亲爱的…… ## 10 01005 1005 5/21/1997 M 53 B2 CR CR 8/6/19…## #…与118多行,和13个变量:' t(4;11) ' , ## # ' t(9;22) ' , cyto。Normal , citog , mol.biol , ## # '融合蛋白' , MDR , kinet , CCR , ## #复发,移植, f.u , '最后一次见到日期'
锻炼你会如何使用安排()
将样本按年龄由小到大排列,每个人的年龄相等年龄
下令性
?
总结()
而且group_by ()
让我们问一下男性和女性的平均年龄。首先,使用总结()
和n ()
函数创建一个tibble与每个性别的样本数量。
总结(n = n())
1 * 1 ## n ## ## 1 128
我们现在知道有多少样本。使用group_by ()
告诉dplyr
分别考虑每个性别
Pdata %>% group_by(性别)
然后执行汇总操作…
Pdata %>% group_by(sex) %>% summary (n = n())
## # A tibble: 3 x 2 ## sex n ## # ## 1 F 42 ## 2 M 83 ## 3 3
锻炼什么是NA
性?使用filter ()
识别3条记录is.na(性)
.
锻炼使用安排()
而且desc ()
按频率从高到低排列汇总表。
锻炼添加另一列ave_age
来总结()
,使用意思是()
按性别计算平均年龄。你需要使用na。rm = TRUE
参数来计算缺少值时的平均年龄。
t.test ()
,一个不整洁的函数我们想比较研究中男性和女性的平均年龄t.test ()
.t.test ()
需要一个公式年龄~性别
(年龄
作为函数性
)描述我们想做的比较。它还需要一个参数data =
它包含了我们想要进行t检验的数据。与我们迄今为止遇到的要处理的数据是第一个参数的函数不同,t.test ()
将数据作为第二个参数。适应t.test ()
为了使用,我们需要显式地指出data应该是第二个参数。这样做的一种方法是使用特殊符号.
表示传入数据的位置,调用T.test(年龄~性别,数据= .)
:
t.test(年龄~性别,data = .)
锻炼进行t检验,询问是否有证据表明性别之间的年龄差异。的默认值如何更改var.equal
来真正的
?这样合适吗?
运动(高级)的返回值。t.test ()
不太适合整洁
数据分析,因为它是一个复杂的对象,不能表示为宠物猫
因此不能通过使用常见的整齐动词来计算。写一个简单的函数t_test ()
这样更整洁,更容易接受data =
作为它的第一个参数,使用t.test ()
在内部计算结果,并返回一个宠物猫
包含用于后续计算的格式化结果。探索扫帚::整洁()
作为一种变换多种碱基的方法R对象转换为整洁友好的数据结构。
filter ()
而且%, %
看一下mol.biol
列,使用group_by ()
还有便利函数count ()
Pdata %>% group_by(mol.biol) %>% count()
## #一个tibble: 6 x 2 ## #组:mol.biol [6] ## mol.biol n ## ## 1 ALL1/AF4 10 ## 2 BCR/ABL 37 ## 3 E2A/PBX1 5 ## 4 NEG 74 ## 5 NUP-98 1 ## 6 p15/p16 1
这些代表染色体事件,如存在BCR/ABL融合基因,或NEG(标准)染色体。
锻炼使用filter ()
创建一个新的数据集bcrabl
包含所有22列,但只有BCR/ABL和NEG行。这将有助于使用%, %
运算符,当左边集合中的一个对象出现在右边的对象中时,该运算符返回TRUE。
C ("a", "b", " C ", "b", "a") %in% C ("a", " C ")
##[1]真假真假真
锻炼使用t.test ()
问这些分子生物学之间是否存在年龄差异。
通过在项目列表中总结本节所涵盖的关键功能,继续您的降价文档。包括围栏内的代码示例,并确保在按下“Knit”按钮时对代码进行评估。
ggplot ()
加载ggplot2
图书馆。
库(ggplot2)
通过提供要显示的数据来源以及“美学”来创建图表。aes ()
描述要使用的数据。
Ggplot (pdata, aes(x =性别,y =年龄))
geom_boxplot ()
这足以确定显示的整体尺寸,但我们仍然需要添加“几何”geom_ * ()
显示感兴趣的关系的对象。为初始可视化添加一个箱线图。
Ggplot (pdata, aes(x =性别,y =年龄))+ geom_boxplot()
##警告:删除5行包含非有限值(stat_boxplot)。
geom_jitter ()
添加叠加实际数据的第二层geom_jitter ()
调用,以便性
值的水平位置(宽度= 1
),而年龄则以其实际垂直位置(高度= 0
).
Ggplot (pdata, aes(x =性别,y =年龄))+ geom_boxplot() + geom_jitter(width = .1, height = 0)
##警告:删除5行包含非有限值(stat_boxplot)。
##警告:删除5行包含丢失的值(geom_point)。
锻炼会如何pdata
过滤掉年龄未知的样本,x轴上只有两类?
锻炼是否有其他显示同时传达结果摘要和实际数据?
创建DNA序列的短字符向量。
序列<- c("AAATCGA", "ATACAACAT", "TTGCCA")
在基地R我们可以询问这些序列的属性并执行一些操作
序列
##[1]“aaatcga”“atacaacat”“ttgcca”
长度(序列)
## [1]
nchar(序列)
## [1] 7 9 6
序列(c(1、3))
## [1] " aaatcga " " ttgcca "
样本(序列)
##[1]“ttgcca”“aaatcga”“atacaacat”
基地R没有与DNA序列相关的操作概念,例如,
reverseComplement(序列)
失败。同样,我们可以给一个变量起任何名字,变量名的语义并不是强制的R
my_sequence <-“整个世界是一个舞台,所有的男人和女人只是演员”
库(Biostrings)
加载Biostrings图书馆
库(Biostrings)
如果R响应与
> library(Biostrings)错误在库(Biostrings):没有包称为“Biostrings”
然后必须首先安装包(确保您正确拼写了包名,包括大写!)
如果(!requireNamespace("BiocManager", quiet = TRUE) install.packages("BiocManager") BiocManager::install("Biostrings") library(Biostrings)
DNAStringSet ()
创建一个DNAStringSet
从我们的字符向量
dna <- DNAStringSet(序列)dna
一个DNAStringSet实例,长度3 ## width seq# # [1] 7 AAATCGA ## [2] 9 ATACAACAT ## [3] 6 TTGCCA
锻炼这个物体dna
支持上面描述的字符向量的操作长度()
,nchar ()
,[
,样品()
?
锻炼向你自己证明至少还有其他一些有用的、dna特有的功能存在,例如,反向()
而且reverseComplement ()
.
锻炼当您尝试创建一个DNAStringSet ()
从一个对象,如my_sequence
,定义如上,不包含DNA序列?警告:这条信息很神秘,你能提供一个“人工”翻译吗?
锻炼为什么DNAStringSet(“ACGTMRW”)
不会产生错误,因为股价
不是标准的核苷酸吗?有关提示,请参阅帮助页上的“DNA字母表”部分DNAString ?
.
方法()
,帮助,和browseVignettes ()
这个函数DNAStringSet ()
返回一个对象它有一个特殊的类
类(dna)
# #[1]“DNAStringSet”# # attr(“包”)# #[1]“Biostrings”
与类相关的有一系列方法对类起作用。
锻炼发现作用于类对象的许多(不幸的是,不是全部)方法DNAStringSet
使用方法(class = "DNAStringSet")
.验证reverseComplement
就是这些方法之一。
描述特定方法的帮助页可以使用?
,其中引用了搜索查询,并使用制表符补全提供了关于适当的帮助主题是什么的提示。
锻炼的帮助页reverseComplement
操作于DNAStringSet
对象,使用?”reverseComplement DNAStringSet-method”
.
帮助页提供了创建类和使用方法所需的技术细节的描述。小插图提供了对整个包使用的更有叙述性的描述。
锻炼使用browseVignettes(package = "Biostrings")
要查看可用于此包的小插图;探索一些小插图来了解可能的内容。
readDNAStringSet ()
我们不太可能“手工”输入1000个DNA序列。相反,我们可以从标准文件格式读取数据。对于DNA序列,标准文件格式通常是“FASTA”文件,有时用扩展名缩写.fa
通常还会加上额外的扩展进行压缩.fa.gz
.中注释的所有基因的2000bp上游核苷酸的DNA序列的FASTA文件的一个示例黑腹果蝇dm3
基因组构建,是分布式的Biostrings包中。下面是FASTA文件的路径。
Fa_file <- system。文件(package="Biostrings", "extdata", "dm3_upstream2000.fa.gz")
锻炼通过查看FASTA文件的前五行来了解FASTA文件的结构。
readline (fa_file, 5)
##[5]“>NM_078863_up_2000_chr2L_16764737_f chr2L:16764737-16766736”##[2]“gttggttggcccaccagtgccaaaaaatacacaagagaaaacagagaacagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagacagcatctt”##[2]“gacactaaaatgcaaaaattgacgaaatg”##[4]“tttttgtgcttttcttcgaacaaaaaattgggagcagaattattggattattcgctt”
第一行是一个标识符,包含有关基因的信息NM_078863
以及该序列的基因组坐标chr2L: 16764737 - 16766736
.下一行是DNA序列。在一定数量的行之后,一个新的记录开始。
tail(readLines(fa_file, 44), 5)
## [2] ">NM_001201794_up_2000_chr2L_8382455_f chr2L:8382455-8384454" ## [5] " cgtgtagcgcaacgaccatctacaaggcaatatcgcttttgcttgttagggg " ## [2] "
我们可以相当“容易”地为这种格式编写自己的解析器,但这很容易出错,而且没有必要。
锻炼输入文件
dna <- readnastringset (fa_file
##长度为26454的DNAStringSet实例## width seq names ## [1] 2000GTTTACCGGTTGCACGGT NM_078863_up_2000……## [2] 2000 ttattttatgtaggcgcccg…CGGAAAGTCATCCTCGAT NM_001201794_up_2……## [3] 2000 ttattttatgtaggcgcccg…CGGAAAGTCATCCTCGAT NM_001201795_up_2……## [4] 2000 ttattttatgtaggcgcccg…CGGAAAGTCATCCTCGAT NM_001201796_up_2……## [5] 2000 ttattttatgtaggcgcccg…CGGAAAGTCATCCTCGAT NM_001201797_up_2……## ... ... ... ## [26450] 2000 ATTTACAAGACTAATAAAG...ATTAAATTTCAATAAAAC NM_001111010_up_2... ## [26451] 2000 GATATACGAAGGACGACCT...TTTGAGTTGTTATATATT NM_001015258_up_2... ## [26452] 2000 GATATACGAAGGACGACCT...TTTGAGTTGTTATATATT NM_001110997_up_2... ## [26453] 2000 GATATACGAAGGACGACCT...TTTGAGTTGTTATATATT NM_001276245_up_2... ## [26454] 2000 CGTATGTATTAGTTAACTC...AAGTGTAAGAACAAATTG NM_001015497_up_2...
锻炼查询对象的基本属性,例如it 's长度()
每个序列中的字符数是2000独特的(nchar (dna))
.
letterFrequency ()
:计算GC含量锻炼使用letterFrequency ()
来测定每个DNA序列的GC含量dna
.的信
参数应该是“垃圾收集”
;作为。问题= TRUE
返回0到1之间的值。数据作为一个只有一列的矩阵返回。
锻炼图中GC频率的分布dna
对象使用基本图形嘘()
而且情节(密度())
,以及使用ggplot ()
.
虽然Bioconductor强调形式对象,比如DNAStringSet
而不是宠物猫
就像数据帧一样,我们可以应用一些与整洁数据交互的方式Bioconductor对象。例如,GC内容示例可能以“传统”形式编写为
gc <- letterFrequency(dna, " gc ", as。问题= TRUE)
但是可以使用管道来编写,并产生一个tibble,以便更容易地进行下游操作
gc <- dna %>% letterFrequency(" gc ",如。prob = TRUE) %>% tibble::as_tibble() gc
## #一个tibble: 26,454 x 1 ## ' G|C ' ## # ## 1 0.378 ## 2 0.43 ## 3 0.43 ## 4 0.43 ## 5 0.43 ## 6 0.43 ## 7 0.43 ## 8 0.43 ## 9 0.43 ## 10 0.43 ## ##
锻炼修改上面的其他代码,以遵循这种分析风格。基本方法和“整洁”方法是否有优点/局限性?
锻炼我们为什么不把我们的序列
DNA序列的载体宠物猫
,然后从那里出发?
在标记文档中添加进一步的注释,总结您在本实践中所学到的函数和对象。
属性的围栏部分完成标记文档sessionInfo ()
命令。
' ' ' {r} sessionInfo ()' ' '
以下是用于此实用程序的包:
sessionInfo ()
## R version 3.6.0 Patched (2019-04-26 r76431) ##平台:x86_64-apple-darwin17.7.0(64位)##运行在macOS High Sierra 10.13.6 ## ##矩阵产品:default ## BLAS: /Users/ma38727/bin/R-3-6-branch/lib/libRblas。/Users/ma38727/bin/R-3-6-branch/lib/libRlapack。dylib # # # #语言环境:# # [1]en_US.UTF-8 / en_US.UTF-8 en_US.UTF-8 / C / en_US.UTF-8 / en_US。UTF-8 ## ##附加的基础包:## [1]stats4并行统计图形grDevices utils datasets ##[8]方法基础## ##其他附加包:## [1]Biostrings_2.53.0 XVector_0.25.0 IRanges_2.19.10 ## [4] S4Vectors_0.23.17 BiocGenerics_0.31.4 ggplot2_3.2.0 ## [7] dplyr_0.8.2 readr_1.3.1 BiocStyle_2.13.2 ## ##通过命名空间加载(且未附加):## [1] Rcpp_1.0.1 pillar_1.4.2 compiler_3.6.0 ## [4] BiocManager_1.30.5.1 zlibbioc_1.31.0 tools_3.6.0 ## [7] zeallot_0.1.0 digest_0.6.19 evaluate_0.14 ## [10] tibble_2.1.3 gtable_0.3.0 pkgconfig_2.0.2 ## [13] rlang_0.4.0 cli_1.1.0 yaml_2.2.0 ## [13] xfun_0.8 withr_2.1.2 string_1 .4.0 ## [22] grid_3.6.0 tidyselect_0.2.5 glue_1.3.1 ## [25] R6_2.4.0 fansi_0.4.0 rmarkdown_1.13 ## [28] bookdown_0.11 purrr_0.3.2 magrittr_1. 1.5 ## [31] backports_1.1.4 scales_1.0.0codetools_0.2-16 ## [34] htmltools_0.3.6 assertthat_0.2.1 colorspace_1.4-1 ## [37] labeling_0.3 utf8_1.1.4 stringi_1.4.3 ## [40] lazyeval_0.2.2 munsell_0.5.0 crayon_1.3.4