knitr::opts_chunk$set(cache = TRUE)
Please use the devel version of the AnVIL
Bioconductor package.
library(cBioPortalData) library(AnVIL)
The cBioPortal for Cancer Genomics website is a great resource for interactive exploration of study datasets. However, it does not easily allow the analyst to obtain and further analyze the data.
We've developed the cBioPortalData
package to fill this need to
programmatically access the data resources available on the cBioPortal.
The cBioPortalData
package provides an R interface for accessing the
cBioPortal study data within the Bioconductor ecosystem.
It downloads study data from the cBioPortal API (https://cbioportal.org/api) and uses Bioconductor infrastructure to cache and represent the data.
We use the MultiAssayExperiment
(@Ramos2017-er) package to integrate,
represent, and coordinate multiple experiments for the studies availble in the
cBioPortal. This package in conjunction with curatedTCGAData
give access to
a large trove of publicly available bioinformatic data. Please see our
publication here (@Ramos2020-ya).
We demonstrate common use cases of cBioPortalData
and curatedTCGAData
during Bioconductor conference
workshops.
This vignette is for users / developers who would like to learn more about
the available data in cBioPortalData
and to learn how to hit other endpoints
in the cBioPortal API implementation. The functionality demonstrated
here is used internally by the package to create integrative representations
of study datasets.
Note. To avoid overloading the API service, the API was designed to only query a part of the study data. Therefore, the user is required to enter either a set of genes of interest or a gene panel identifier.
Obtaining the cBioPortal API representation object
(cbio <- cBioPortal())
Check available tags, operations, and descriptions as a tibble
:
tags(cbio) head(tags(cbio)$operation)
searchOps(cbio, "clinical")
Get the list of studies available:
getStudies(cbio)
Obtain the clinical data for a particular study:
clinicalData(cbio, "acc_tcga")
A table of molecular profiles for a particular study can be obtained by running the following:
mols <- molecularProfiles(cbio, "acc_tcga") mols[["molecularProfileId"]]
The data for a molecular profile can be obtained with prior knowledge of
available entrezGeneIds
:
molecularData(cbio, molecularProfileIds = "acc_tcga_rna_seq_v2_mrna", entrezGeneIds = c(1, 2), sampleIds = c("TCGA-OR-A5J1-01", "TCGA-OR-A5J2-01") )
A list of all the genes provided by the API service including hugo symbols,
and entrez gene IDs can be obtained by using the geneTable
function:
geneTable(cbio)
genePanels(cbio) getGenePanel(cbio, "IMPACT341")
gprppa <- genePanelMolecular(cbio, molecularProfileId = "acc_tcga_rppa", sampleListId = "acc_tcga_all") gprppa
getGenePanelMolecular(cbio, molecularProfileIds = c("acc_tcga_rppa", "acc_tcga_gistic"), sampleIds = allSamples(cbio, "acc_tcga")$sampleId )
getDataByGenes(cbio, "acc_tcga", genePanelId = "IMPACT341", molecularProfileIds = "acc_tcga_rppa", sampleListId = "acc_tcga_rppa")
It uses the getAllGenesUsingGET
function from the API.
To display all available sample list identifiers for a particular study ID,
one can use the sampleLists
function:
sampleLists(cbio, "acc_tcga")
One can obtain the barcodes / identifiers for each sample using a specific sample list identifier, in this case we want all the copy number alteration samples:
samplesInSampleLists(cbio, "acc_tcga_cna")
This returns a CharacterList
of all identifiers for each sample list
identifier input:
samplesInSampleLists(cbio, c("acc_tcga_cna", "acc_tcga_cnaseq"))
allSamples(cbio, "acc_tcga")
getSampleInfo(cbio, studyId = "acc_tcga", sampleListIds = c("acc_tcga_rppa", "acc_tcga_cna"))
The cBioPortal
API representation is not limited to the functions
provided in the package. Users who wish to make use of any of the endpoints
provided by the API specification should use the dollar sign $
function
to access the endpoints.
First the user should see the input for a particular endpoint as detailed in the API:
cbio$getGeneUsingGET
Then the user can provide such input:
(resp <- cbio$getGeneUsingGET("BRCA1"))
which will require the user to 'translate' the response using httr::content
:
httr::content(resp)
For users who wish to clear the entire cBioPortalData
cache, it is
recommended that they use:
unlink("~/.cache/cBioPortalData/")
sessionInfo()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.