美国国家癌症研究所(NCI)已经建立了基因组数据共享(环球数码创意)。GDC为癌症研究界提供了一个开放和统一的存储库,用于通过高性能的数据传输和查询基础设施共享和访问众多癌症研究和项目的数据。的GenomicDataCommonsBioconductor软件包为查询、访问和挖掘来自GDC的基因组数据集提供了基本的基础设施。我们期望Bioconductor开发人员和更大的生物信息学社区将建立在GenomicDataCommons包添加更高级别的功能,并将癌症基因组数据暴露于Bioconductor中可用的大量最先进的生物信息学方法。
美国国家癌症研究所(NCI)的基因组数据共享(GDC)是一个促进肿瘤精准医疗的数据共享平台。它不仅仅是一个数据库或工具;它是一个可扩展的知识网络,支持癌症研究项目的基因组和临床数据的导入和标准化。
GDC包含nci生成的一些最大、最全面的癌症基因组数据集的数据,包括癌症基因组图谱(TCGA)和生成有效疗法的治疗应用研究(TARGET)。这些数据集首次使用一套通用的生物信息学管道进行了协调,以便可以直接比较数据。
作为一个不断增长的癌症知识系统,GDC还允许研究人员提交数据,并将这些数据统一导入GDC。随着越来越多的研究人员将临床和基因组数据添加到GDC,它将成为发现癌症分子基础的更强大的工具,这可能会为患者带来更好的护理。
的GDC的数据模型非常复杂,但它值得快速概述。数据模型被编码为所谓的属性图。节点表示项目、案例、诊断、文件(各种类型)和注释等实体。这些实体之间的关系被维护为边。节点和边都可能具有提供实例详细信息的属性。GDC API将这些节点和边以某种简化的方式公开宁静的端点。
这个软件正在开发中根据用户反馈可能做出的改变.报告错误或问题提交新问题或提交bug.report(包=“GenomicDataCommons”)
从R(这将重定向到GitHub上的新问题)。
目前可以从GitHub安装。
源(“//www.anjoumacpherson.com/biocLite.R”)biocLite(“GenomicDataCommons”)
库(GenomicDataCommons)
GenomicDataCommons:状态()
[1] "a38d9114206f253599cfcb12e454fc10582be38d" ## ## $data_release ## b[1] "数据发布9.0 - 2017年10月24日" ## ## $status ## b[1] "OK" ## ## $tag ## b[1] "1.10.0" ## ## $version ## [1] 1
如果此语句导致错误,例如SSL连接错误
,请参阅下面的故障排除部分.
下面的代码构建一个清单
可以用来指导原始数据的下载。在这里,过滤发现基因表达文件量化为原始计数使用HTSeq
来自卵巢癌患者。
Library (magrittr) ge_manifest = files() %>% filter(~ case .project. filter)project_id == 'TCGA-OV' & type == 'gene_expression' &分析。workflow_type == 'HTSeq - Counts') %>% manifest()
这个代码块下载上面查询中指定的379个基因表达文件。在许多情况下,使用多个进程进行下载可以极大地加快传输速度。在标准的1Gb连接上,以下操作大约在30秒内完成。
destdir = tempdir() fnames = lapply(ge_manifest$id[1:20],gdcdata, destination_dir=destdir,覆盖=TRUE,进度=FALSE)
如果下载包含受控访问数据,则上面的下载将需要包含一个令牌
.详情请参阅下面的身份验证部分.
扩展= c("诊断","注释","人口统计","暴露")clinResults = cases() %>% GenomicDataCommons::select(NULL) %>% GenomicDataCommons::expand(扩展)%>% results(size=50) clinDF = as.data.frame(clinResults) library(DT) datatable(clinDF, extensions = 'Scroller', options = list(deferRender = TRUE, scrollY = 200, scrollX = TRUE, Scroller = TRUE))
#基本设计
这种包设计与dplyr的“hadleyverse”方法有一些相似之处。大致可以将查找和访问文件和元数据的功能分为:
此外,还有一些令人振奋的函数,用于向GDC API询问有关可用字段和默认字段的信息、切片BAM文件和下载实际数据文件。下面是功能概述1有关具体细节,请参阅各个函数和方法文档。.
项目()
例()
文件()
注释()
filter ()
方面()
select ()
映射()
available_fields ()
default_fields ()
grep_fields ()
field_picker ()
available_values ()
available_expand ()
结果()
count ()
反应()
gdcdata ()
转移()
gdc_client ()
聚合()
gdc_token ()
切片()
在使用NCI GDC时,主要有两类操作。
下面几节将详细讨论这两类操作。
大量关于病例(基本上是病人)、文件、项目和所谓的注释的元数据都可以通过NCI GDC API获得。通常,人们希望查询元数据来集中于一组要下载或传输的文件或执行所谓的聚合(数据透视表,切面,类似于R表()
功能)。
查询元数据以创建一个“空白”查询.人们往往会想这样做过滤器
之前限制结果的查询检索结果.基因组数据公共包有用于列出字段的Helper函数可用于过滤的。
除了获取结果,GDC API还允许面形,或者聚合,,用于编译报告、生成仪表板或构建GDC数据的用户界面(参见GDC web查询界面的非r示例)。
GDC的查询在r中开始。查询遵循GDC上可用的四个元数据端点。具体来说,每个函数都创建了四个方便函数GDCQuery
对象(实际上是GDCQuery
):
项目()
例()
文件()
注释()
Pquery = projects()
的pquery
object现在是(S3)类的对象,GDCQuery
(和gdc_projects
而且列表
).该对象包含以下元素:
项目()
函数,则使用GDC中的默认字段(参见default_fields ()
)filter ()
方法并将用于筛选结果检索.聚合()
.看实际对象(习惯使用str ()
!),注意该查询不包含任何结果。
str (pquery)
## 5 # $字段列表:chr [1:10] "dbgap_accession_number" "disease e_type" "intended_release_date" "name"…## $ filters: NULL ## $ facets: NULL ## $ legacy: logi FALSE ## $ expand: NULL ## - attr(*, "class")= chr [1:3] "gdc_projects" "GDCQuery" "list"
有了查询对象,下一步就是从GDC检索结果。基因组数据共通包。我们能得到的最基本的结果类型是一个简单的count ()
满足筛选条件的可用记录的。注意,我们没有设置任何过滤器,所以acount ()
这里将呈现所有在GDC上公开的“默认”存档项目记录。
Pcount = count(pquery) #或Pcount = pquery %>% count() Pcount
## [1] 40
的结果()
方法将获取实际结果。
results = pquery %>% results()
这些结果将于年从GDC返回JSON格式并转换为r中的(可能嵌套的)列表str ()
方法对于快速查看数据非常有用。
str (presults)
## $ dbgap_accession_number: chr [1:10] NA NA NA NA…## $疾病类型:10个## ..$ TCGA-UVM: chr“葡萄膜黑色素瘤”## ..$ TCGA-STAD: chr“胃腺癌”##…$ TCGA-LUSC: chr“肺鳞癌”## ..$ TCGA-UCEC: chr“子宫肌体子宫内膜癌”## ..$ TCGA-CHOL: chr“胆管癌”##…$ TCGA-OV: chr“卵巢浆液性囊腺癌”## ..$ TCGA-ACC: chr“肾上腺皮质癌”##…$ TCGA-MESO: chr“间皮瘤”##…$ TARGET-AML: chr“急性髓系白血病”##…$ TCGA-LGG: chr“大脑低级别胶质瘤”## $发布:logi[1:10]真真真真真真…## $ state: CHR[1:10] "遗产" "遗产" "遗产" "遗产" "遗产"… ## $ primary_site :List of 10 ## ..$ TCGA-UVM : chr "Eye" ## ..$ TCGA-STAD : chr "Stomach" ## ..$ TCGA-LUSC : chr "Lung" ## ..$ TCGA-UCEC : chr "Uterus" ## ..$ TCGA-CHOL : chr "Bile Duct" ## ..$ TCGA-OV : chr "Ovary" ## ..$ TCGA-ACC : chr "Adrenal Gland" ## ..$ TCGA-MESO : chr "Pleura" ## ..$ TARGET-AML: chr "Blood" ## ..$ TCGA-LGG : chr "Brain" ## $ project_id : chr [1:10] "TCGA-UVM" "TCGA-STAD" "TCGA-LUSC" "TCGA-UCEC" ... ## $ id : chr [1:10] "TCGA-UVM" "TCGA-STAD" "TCGA-LUSC" "TCGA-UCEC" ... ## $ name : chr [1:10] "Uveal Melanoma" "Stomach Adenocarcinoma" "Lung Squamous Cell Carcinoma" "Uterine Corpus Endometrial Carcinoma" ... ## - attr(*, "row.names")= int [1:10] 1 2 3 4 5 6 7 8 9 10 ## - attr(*, "class")= chr [1:3] "GDCprojectsResults" "GDCResults" "list"
默认情况下只返回10条记录。我们可以用大小
而且从
参数结果()
对结果进行分页或更改结果的数量。最后,还有一个方便的方法,results_all ()
这将简单地获取给定查询的所有可用结果。请注意,results_all ()
如果不小心使用,可能需要很长时间并返回巨大的结果集。组合的使用count ()
而且结果()
在调用之前,有必要了解预期的数据大小results_all ()
长度(ids (presults))
## [1]
resulsults = pquery %>% results_all() length(ids(Presults))
## [1] 40
#包含所有记录长度(ids(presults)) == count(pquery)
##[1]真
提取结果子集或将结果操作为更传统的R数据结构是不容易泛化的。然而,purrr,rlist,data.tree对于操作复杂的、嵌套的列表结构,包都是潜在的兴趣点。要在交互式查看器中查看结果,请考虑列表视图包中。
在的情况下项目
实体,默认结果(即使用默认字段)可以很容易地简化as.data.frame
.
头(as.data.frame (presults))
从GDC查询和检索数据的核心功能是指定要返回哪些字段,根据字段和值进行过滤,以及分面或聚合。基因组数据公共包包括两个简单的功能,available_fields ()
而且default_fields ()
.每个都可以操作一个字符(1)端点名称(“case”、“files”、“annotations”或“projects”)或一个GDCQuery
对象。
default_fields(“文件”)
##[1]“access”“acl”“created_datetime”##[4]“data_category”“data_format”“data_type”##[7]“error_type”“experimental_strategy”“file_autocomplete”## b[10]“file_id”“file_name”“file_size”##[13]“file_state”“md5sum”“origin”##[16]“platform”“revision”“state”##[19]“state_comment”“submitter_id”“tags”##[22]“type”“updated_datetime”
#文件端点长度的可用字段的数量(available_fields('files'))
## [1] 592
#文件端点头可用的前几个字段(available_fields('files'))
## [1] "access" "acl" ##[3] "分析。analysis_id”分析。Analysis_type“##[5]”分析。created_datetime analysis.input_files.access”
查询返回的字段可以按照与dplyr包类似的范例指定。的select ()
函数是重置字段槽的谓词GDCQuery
;注意,这与dplyr并不完全类似select ()
限制已存在字段的动词。我们完全取代使用时的字段select ()
在一个GDCQuery
.
qcases = cases() qcases$fields
[1]“aliquot_ids”“analyteids”##[3]“case_autocomplete”“case_id”##[5]“created_datetime”“days_to_index”##[7]“days_to_lost_to_followup”“疾病类型”##[9]“index_date”“lost_to_followup”##[9]“portion_ids”“primary_site”##[13]“sample_ids”“slide_ids”##[15]“state”“submitter_aliquot_ids”##[17]“submitter_analyte_ids”“submitter_sample_ids”##[19]“submitter_portion_ids”“submitter_sample_ids”## b[19]“submitter_portion_ids”“submitter_sample_ids”##[21]“submitter_slide_ids”##[21]“submitter_slide_ids”“updated_datetime”
#设置查询使用所有可用字段#注意字段的检查是通过select() qcases = cases() %>% GenomicDataCommons::select(available_fields('cases')) head(qcases$fields)完成的
##[1]“case_id”“aliquot_ids”##[3]“analyte_ids”“注释。Annotation_id“##[5]”注释。case_id annotations.case_submitter_id”
寻找感兴趣的领域是一种非常常见的操作,因此基因组数据共享包括grep_fields ()
功能和field_picker ()
小部件。有关详细信息,请参阅相应的帮助页面。
GDC API提供了一种称为聚合或面化的功能。通过指定一个或多个字段(适当类型),GDC可以返回与每个潜在值匹配的记录数量的计数。这类似于R表格
方法。可以一次返回多个字段,但GDC API没有交叉列表功能;所有聚合一次只在一个字段上。的结果聚合()
调用以data.frames(实际上是tibbles)列表的形式返回。
#特定类型的文件总数res = files() %>% facet(c('type','data_type')) %>% aggreations () res$type . #
使用聚合()
也是一种学习各个字段内容的简单方法,并形成面向面搜索页面的基础。
GenomicDataCommons包使用一种非标准的评估形式来指定类似R的查询,然后将其翻译成R列表。在调用从GDC API获取结果的方法时,R列表被转换为适当的JSON字符串。R表达式使用由Hadley Wickham在他的关于非标准评估的小插图
最好使用公式,因为公式可以同时捕获要计算的表达式和计算发生的环境。如果表达式是数据帧中的变量和本地环境中的对象的混合物,这就很重要[例如]。
对于用户来说,这些细节并不太重要,只是需要注意过滤器表达式必须以“~”开头。
Qfiles = files() Qfiles %>% count() #所有文件
## [1] 310858
方法来限制文件类型面饰部分查看文件字段“type”的可能值。例如,要将文件结果过滤为“gene_expression”文件,只需指定一个过滤器。
Qfiles = files() %>% filter(~ type == 'gene_expression') #这里是翻译后的过滤器的样子str(get_filter(Qfiles))
## $ op: class 'scalar', 'character' chr "=" ## $ content:List of 2 ## ..$ field: CHR "type" ## ..$ value: CHR "gene_expression"
如果我们想要创建一个基于项目的过滤器(例如' TCGA-OVCA ')呢?我们有几种可能的方法来发现可用字段。第一个是基于基本R功能和一些直觉。
grep(“pro”available_fields(“文件”),价值= TRUE)
## [1] "cases. diagnostics。Progression_free_survival " ## [2] "cases. diagnostics。“##[3]”case . diagnostics。“##[4]”case .project。Dbgap_accession_number“##[5]”case .project。疾病类型“##[6]”case .project.intended_release_date“##[7]”case .project.name“##[8]”case .project.namePrimary_site“##[9]”case .project.program。Dbgap_accession_number“##[10]”case .project.program.name“##[11]”case .project.program.nameProgram_id“##[12]”case .project。Project_id“##[13]”case .project。可发布的“##[14]”case .project。发布“##[15]”case .project。声明" ## [16]"cases.samples。Days_to_sample_procurement“##[17]”case .samples。方法_of_sample_procurement" ## [18] "cases.samples.portions.slides.number_proliferating_cells" ## [19] "cases.tissue_source_site.project"
有趣的是,项目信息“嵌套”在案例中。我们不需要知道这些细节,只需要知道我们现在对信息在文件记录中的位置有一些可能的猜测。我们需要知道在哪里,因为我们需要构造适当的过滤器。
Files () %>% facet('cases.project.project_id') %>% aggreations ()
# # cases.project美元。project_id # #键doc_count FM-AD # # 36134 # # 27207 # # 3 TCGA-BRCA TCGA-LUAD 14804 # # 4 TCGA-UCEC 13604 # # 13124 # # 6 TCGA-HNSC TCGA-LUSC 12895 # # 7 TCGA-LGG 12603 # # 8 TCGA-THCA 12703 # # 9 TCGA-OV TCGA-PRAD 13054 # # 12568 # 11824 # 11 TCGA-COAD # # 11265 # # 13 TCGA-SKCM TCGA-KIRC 12272 # # 14 TCGA-STAD TCGA-BLCA 10731 # # 10193 # # 16 TCGA-GBM 9657 # # 17 TCGA-LIHC 9511 18 TCGA-CESC 7349 # # # # 19 TCGA-KIRP 7368 # # 6282 # # 21 TCGA-ESCA TCGA-SARC 4473 # # 22 TCGA-PAAD 4433 # # 23Tcga-pcpg 4422 ## 24 tcga-read 4012 ## 25 tcga-laml 3954 ## 26 tcga-tgct 3636 ## 27 target-nbl 2806 ## 28 tcga-thym 2974 ## 29 target-aml 1873 ## 30 tcga-acc 2108 ## 31 target-wt 1324 ## 32 tcga-meso 2050 ## 33 tcga-uvm 1928 ## 34 tcga-kich 1853 ## 35 tcga-ucs 1364 ## 36 tcga-chol 1157 ## 37 tcga-dlbc 1163 ## 38 target-os 4 ## 39 target-rt 174 ## 40 target-ccsk 2
我们注意到cases.project.project_id
看起来挺合适的。我们也注意到TCGA-OV
正确的project_id,不是吗TCGA-OVCA
.请注意,不像dplyr和他的朋友们filter ()
方法在这里替换过滤器,并且不构建在任何先前的过滤器之上.
Qfiles = files() %>% filter(~ case .project. filter)project_id == 'TCGA-OV' & type == 'gene_expression') str(get_filter(qfiles))
## $ op:类的“标量”,“字符”chr”和“## $ content: 2 ##的列表。$: 2 ## .. ..的列表$ op:类“标量”,“性格”对应 "=" ## .. ..$ content: 2 ## .. .. ..的列表$ field: CHR“case .project”。Project_id " ## .. .. ..$ value: chr "TCGA-OV" ##…$: 2 ## .. ..的列表$ op:类“标量”,“性格”对应 "=" ## .. ..$ content: 2 ## .. .. ..的列表$ field: CHR“type”## .. .. ..$ value: CHR "gene_expression"
Qfiles %>% count()
## [1] 1137
请求count ()
在给定这些新的过滤条件的结果中,给出1137个结果。为批量下载生成清单非常简单,只需从当前查询中请求清单即可。
manifest() %>% manifest() head(manifest_df)
请注意,我们可能还没有完全到达那里。查看文件名,有可疑的命名文件可能包括“FPKM”、“FPKM- uq”或“counts”。又一轮grep
而且available_fields
,寻找“型”,翻出“场”的分析。Workflow_type "具有适当的筛选条件。
Qfiles = files() %>% filter(~ case .project. filter)project_id == 'TCGA-OV' & type == 'gene_expression' &分析。workflow_type == 'HTSeq - Counts') manifest() = qfiles %>% manifest() nrow(manifest)
## [1] 379
可以使用GDC数据传输工具(from R;转移()
或从命令行)来编排清单中所有文件的高性能、可重新启动的传输。看到批量下载部分获取详细信息。
GDC同时提供“可控访问”和“开放”数据。在撰写本文时,只有以文件形式存储的数据是“可控访问”的;也就是说,通过GDC访问的元数据都是“开放”数据,有些文件是“开放”的,有些是“可控访问”的。受控访问数据只有在通过获取权限的过程。
在获得对一个或多个数据集的受控访问权限后,你可以登录到GDC web门户网站访问GDC身份验证令牌可以下载,然后通过基因组数据共享包访问可用的受控访问数据。
GenomicDataCommons仅在下载数据时使用身份验证令牌(参见转移
而且gdcdata
文档)。这个包包含一个辅助函数,gdc_token
,查找令牌以以下三种方式之一存储(按此顺序解析):
GDC_TOKEN
GDC_TOKEN_FILE
.gdc_token
举个具体的例子:
Token = gdc_token() transfer(…,Token = Token) # or transfer(…,Token =get_token())
的gdcdata
函数接受一个或多个文件id的字符向量。生成这样一个向量的一个简单方法是生成A清单
数据帧,然后传递在第一列,其中将包含文件id。
fnames = gdcdata(manifest_df$id[1:2],progress=FALSE)
注意,对于受控访问数据,使用GDC身份验证令牌是必需的。使用BiocParallel
软件包可能对并行下载很有用,特别是对于大量的小文件。
批量下载功能仅适用于相对较大的文件(GDC Data Transfer Tool的v1.2.0版本),因此仅在传输BAM文件或较大的VCF文件时使用此方法。否则,可以考虑使用上面所示的方法,或者并行使用。
Mfile = tempfile()写入。表格(manifest_df[1:50,],mfile, col.names=TRUE, row.names=FALSE, quote=FALSE,sep="\t") transfer(mfile,gdc_client='gdc-client')
## [1] "/tmp/Rtmpc94Mpv/filef5b2101d0c2"
Res = cases() %>% facet("project.project_id") %>% aggreges () head(Res)
# # $项目。project_id # #键doc_count FM-AD # # 18004 # # 1127 # # 3 TARGET-NBL TCGA-BRCA 1098 # # 4 TARGET-AML 988 # # 652 # # 6 TCGA-GBM TARGET-WT 617 # # 7 TCGA-OV 608 # # 8 TCGA-LUAD 585 # # 9 TCGA-UCEC TCGA-KIRC 560 # # 537 # 528 # 11 TCGA-HNSC # # 516 # # 13 TCGA-LGG TCGA-THCA 507 # # 14 TCGA-LUSC TCGA-PRAD 504 # # 500 # # 16 TCGA-SKCM 470 # # 17 TCGA-COAD 461 18 TCGA-STAD 443 # # # # 19 TCGA-BLCA 412 # # 381 # # 21 TCGA-LIHC目标os 377 # # 22 TCGA-CESC 307 # # 23 TCGA-KIRP 291 24 TCGA-SARC 261 # # # #25 tcga-laml 200 ## 26 tcga-esca 185 ## 27 tcga-paad 185 ## 28 tcga-pcpg 179 ## 29 tcga-read 172 ## 30 tcga-tgct 150 ## 31 tcga-thym 124 ## 32 tcga-kich 113 ## 33 tcga-acc 92 ## 34 tcga-meso 87 ## 35 tcga-uvm 80 ## 36 target-rt 75 ## 37 tcga-dlbc 58 ## 38 tcga-ucs 57 ## 39 tcga-chol 51 ## 40 target-ccsk 13
图书馆(ggplot2) ggplot (res美元项目。Project_id,aes(x = key, y = doc_count)) + geom_bar(stat='identity') + theme(axis.text. text)。X = element_text(angle = 45, hjust = 1))
cases() %>% filter(~ project.program.name=='TARGET') %>% count()
## [1] 3236
例()% > %过滤器(~ project.program.name = =, TCGA) % > %数()
## [1] 11315
在这里执行“&”是GDC API当前版本的要求。我已经提交了一个功能#请求删除这一要求。Resp = cases() %>% filter(~项目。project_id=='TCGA-BRCA' &项目。project_id=='TCGA-BRCA') %>% facet('samples.sample_type') %>% aggregs () resp$samples.sample_type
在这里执行“&”是GDC API当前版本的要求。我已经提交了一个功能#请求删除这一要求。Resp = cases() %>% filter(~项目。project_id=='TCGA-BRCA' &样本。sample_type=='Solid Tissue Normal') %>% GenomicDataCommons::select(c(default_fields(cases()),'samples.sample_type')) %>% response_all() count(resp)
## [1] 162
Res = resp %>% results() str(Res [1],list.len=6)
## 1 ## $ updated_datetime: chr [1:162] "2017-03-04T16:39:19.244769-06:00" "2017-03-04T16:39:19.244769-06:00" "2017-03-04T16:39:19.244769-06:00"…
头(ids(职责))
##[6]“##[6]”“##[2]”“##[2]”“##[2]”“##[3]”“a851ca14-7bbf-455b-a054-ec03979a4247”“##[5]”“##[5]”“##[6]”
Res = files() %>% facet('type') %>% aggreations () Res $type
Ggplot (res$type,aes(x = key,y = doc_count)) + geom_bar(stat='identity') + theme(axis.text. key)。X = element_text(angle = 45, hjust = 1))
q = files() %>% GenomicDataCommons::select(available_fields('files')) %>% filter(~ case .project。project_id=='TCGA-GBM' & data_type=='基因表达量化')q %>% facet('analysis.workflow_type') %>% aggretsations ()
# # $分析。workflow_type ## key doc_count ## 1 HTSeq - Counts 174 ## 2 HTSeq - FPKM 174 ## 3 HTSeq - FPKM- uq 174
#所以需要添加另一个过滤器file_ids = q %>% filter(~ case .project. #)project_id=='TCGA-GBM' & data_type=='基因表达量化' &分析。workflow_type == 'HTSeq - Counts') %>% GenomicDataCommons::select('file_id') %>% response_all() %>% ids()
我需要弄清楚如何在测试环境中重复地切片和小插图建筑.
q = files() %>% GenomicDataCommons::select(available_fields('files')) %>% filter(~ case .project。project_id == 'TCGA-GBM' & data_type == 'Aligned Reads' & experimental_strategy == 'RNA-Seq' & data_format == 'BAM') file_ids = q %>% response_all() %>% ids()
bamfile = slicing(file_ids[1],regions="chr12:6534405-6538375",token=gdc_token()) library(GenomicAlignments) alignments = readGAlignments(bamfile)
症状:试图连接到API会导致:
curl::curl_fetch_memory(url, handle = handle)中的错误:SSL连接错误
openssl
到1.0.1或更高版本。openssl
,重新安装R旋度
而且httr
包。sessionInfo ()
## R版本3.4.2(2017-09-28)##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 16.04.3 LTS下## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.6-bioc/R/lib/libRblas。/home/biocbuild/bbs-3.6-bioc/R/lib/libRlapack。所以## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# # [3] LC_TIME=en_US。UTF-8 LC_COLLATE= c# # [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 ## [7] LC_PAPER=en_US。UTF-8 LC_NAME= c# # [9] LC_ADDRESS=C lc_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]stats graphics grDevices utils datasets methods base ## ##其他附加包:## [1]ggplot2_2.2.1 DT_0.2 ## [3] GenomicDataCommons_1.2.0 magrittr_1. 1.5 ## [5] knitr_1.17 BiocStyle_2.6.0 ## ##通过命名空间加载(且未附加):[1] Rcpp_0.12.13 plyr_1.8.4 compiler_3.4.2 ## [4] GenomeInfoDb_1.14.0 XVector_0.18.0 bitops_1.0-6 ## [7] tools_3.4.2 zlibbioc_1.24.0 digest_0.6.12 ## [10] gtable_0.2.0 jsonlite_1.5 evaluate_0.10.1 ## [13] tibble_1.3.4 rlang_0.1.2 curl_3.0 ## [13] yaml_2.1.14 parallel_3.4.2 GenomeInfoDbData_0.99.1 ## [22] S4Vectors_0.16.0 htmlwidgets_0.9 IRanges_2.12.0 ## [25] hms_0.3 grid_3.4.2 stats4_3.4.2 ## [28] rprojroot_1.2 data.table_1.10.4-3 R6_2.2.2 ## [31]rmarkdown_1. 1.6 bookdown_0.5 readr_1.1.1 ## [34] scales_0.5.0 backports_1.1.1 htmltools_0.3.6 ## [37] BiocGenerics_0.24.0 genome icranges_1 .30.0 colorspace_1.3-2 ## [40] labeling_0.3 stringi_1.1.5 munsell_0.4.3 ## [43] RCurl_1.95-4.8 lazyeval_0.2.1
S3
采用面向对象编程范式。