This overview provides insight into the available datasets (R package version
1.3.0) provided via ExperimentHub
cloud
services. The main data class is a MultiAssayExperiment
(MAE) object
compatible with numerous Bioconductor packages.
3 different omics base data types and accompanying clinical/phenotype data are currently available:
gex.*
assays contain gene expression values, with the suffix wildcard
indicating unit or method for gene expressioncna.*
assays contain copy number values, with the suffix wildcard
indicating method for copy number alterationsmut
assays contain somatic mutation callsMultiAssayExperiment::colData(maeobj)
contains the clinical metadata
curated based on a pre-defined templateTheir availability is subject to the study in question, and you will find
coverage of the omics here-in. Furthermore, derived variables based on these
base data types are provided in the constructed MultiAssayExperiment
(MAE)
class objects.
For a comprehensive guide on how to neatly handle such MAE
objects, refer to
the MultiAssayExperiment user guide (or cheat-sheets): [MAE User Guide]
(https://www.bioconductor.org/packages/devel/bioc/vignettes/MultiAssayExperiment/inst/doc/MultiAssayExperiment.html) .
The curatedPCaData
package contains a collection of manually curated datasets
concerning patients diagnosed with prostate cancer. The datasets within this
package have followed uniform processing and naming conventions to allow users
to more easily reproduce similar analyses between datasets and spend less time
concerned with harmonzing data from different sources.
To get a full list of available datasets see the documentation for getPCa
function, or via querying ExperimentHub
directly for the components used to
construct MultiAssayExperiments
for the studies. However, getPCa
is aimed
to comprehensively provide readily usable multi-omics compatible MAE-objects.
Fetching all datasets available in curatedPCaData
:
library(curatedPCaData)
# Use a function to extract all known study short identifiers
studies <- curatedPCaData::getPCaStudies()
studies
#> [1] "abida" "baca" "barbieri" "barwick" "chandran"
#> [6] "friedrich" "hieronymus" "icgcca" "igc" "kim"
#> [11] "kunderfranco" "ren" "sun" "taylor" "tcga"
#> [16] "true" "wallace" "wang" "weiner"
# List apply across studies to extract all MAE objects corresponding to the
# short identifiers
maes <- lapply(studies, FUN = \(id) {
curatedPCaData::getPCa(id)
})
names(maes) <- studies
The datasets were manually selected based on various criteria, such as:
The function getPCa
utilizes the studies’ short name for identifying which
data to extract. An overview into the main datasets is as follows:
# Create a summary table depicting key features in available studies
studytable <- curatedPCaData::getPCaSummaryStudies(maes)
Study short id | Sample types | GEX/CNA/MUT platform(s) | Notes | Data source | Reference(s) |
---|---|---|---|---|---|
abida | metastatic: 444 | cBioPortal | Abida et al. | ||
baca | metastatic: 2, primary: 55 | cBioPortal | Baca et al. | ||
barbieri | primary: 123 | cBioPortal | Barbieri et al. | ||
barwick | primary: 146 | Custom DASL | GEO | Barwick et al. | |
chandran | metastatic: 25, normal: 81, primary: 65 | GPL8300 [HG_U95Av2] | GEO | Chandran et al., Yu et al. | |
friedrich | BPH: 39, normal: 52, primary: 164 | Custom Agilent array | GEO | Friedrich et al. | |
hieronymus | primary: 104 | GPL8737 Agilent-021529 Human CGH | CNA only | GEO | Hieronymus et al. |
icgcca | primary: 213 | Canadian data from International Cancer Genome Collaboratory | ICGC Data Portal (PRAD-CA) | PRAD-CA in Zhang et al. | |
igc | primary: 83 | GPL570 [HG-U133_Plus_2] | GEO | GEO accession code GSE2109 | |
kim | primary: 266 | GPL5188 [HuEx-1_0-st] | GEO | Kim et al. | |
kunderfranco | normal: 14, primary: 53 | GPL887 Agilent-012097 Human 1A Microarray (V2) | GEO | Kunderfranco et al., Peraldo-Neia et al., Longoni et al. | |
ren | primary: 65 | cBioPortal | Ren et al. | ||
sun | primary: 79 | GPL96 [HG-U133A] | GEO | Sun et al. | |
taylor | metastatic: 37, normal: 29, primary: 181 | GEX: GPL5188 [HuEx-1_0-st], CNA: GPL4091 Agilent CGH | Also known as MSKCC | GEO | Taylor et al. |
tcga | metastatic: 1, normal: 52, primary: 498 | Xenabrowser | Cancer Genome Atlas Research Network, Goldman et al. | ||
true | primary: 32 | GPL3834 FHCRC Human Prostate PEDB cDNA v3 / v4 | GEO | True et al. | |
wallace | normal: 20, primary: 69 | GPL571 [HG-U133A_2] | GEO | Wallace et al. | |
wang | BPH: 55, atrophic: 21, primary: 60 | GPL96 [HG-U133A] | GEO | Wang et al., Jia et al. | |
weiner | primary: 838 | GPL5175 [HuEx-1_0-st] | GEO | Weiner et al. |
Please note that the TCGA PCa dataset is a subset of the TCGA pan-cancer initiative. For a package focused on TCGA exclusively beyond the PRAD subset, see the Bioconductor package [curatedTCGAData] (https://bioconductor.org/packages/release/data/experiment/html/curatedTCGAData.html).
The use of curatedPCaData
ought to be cited with (Laajala et al. 2023).
For individual datasets there-in, the following citations are suggested:
The curatedPCaData
-package has been curated with an emphasis on the following
primary clinical metadata, which were extracted and cleaned up always when
available:
col.name | var.class | uniqueness | requiredness | allowedvalues | description |
---|---|---|---|---|---|
study_name | character | non-unique | required | * | The study name that will link this information to the study meta-data. |
patient_id | character | non-unique | required | * | A unique identifier for the patient. A single patient may have more than one sample taken. |
sample_name | character | unique | required | * | Primary sample identifier |
alt_sample_name | character | unique | optional | * | If an alternative identifier is available, for example in supplemental tables or any of the repositories, it is reported here. |
overall_survival_status | integer | non-unique | optional | 1 | 0 | Binarized status of the patient, where 1 represents death and 0 represents no reported death. |
days_to_overall_survival | numeric | non-unique | optional | [1-10000] | Time to death or last follow-up in days. |
age_at_initial_diagnosis | integer | non-unique | optional | [1-9][0-9] | Age at diagnosis in years. |
year_diagnosis | integer | non-unique | optional | [1900-2010] | The year at which the patient was diagnoses with PCa. |
gleason_grade | integer | non-unique | optional | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Gleason grade: sum of Gleason major plus minus. |
gleason_major | integer | non-unique | optional | 2 | 3 | 4 | 5 | Gleason grade for the major site score. |
gleason_minor | integer | non-unique | optional | 2 | 3 | 4 | 5 | Gleason grade for the minor site score. |
source_of_gleason | character | non-unique | optional | biopsy | prostatectomy | tissue_block | Source of where the pathogist performed Gleason grading. |
grade_group | character | non-unique | optional | <=6 | 3+4 | 4+3 | 7 | >=8 | Separation of the Gleason grades into groups that show different prognosis; if major+minor is separation not available, allow showing just sum (ie. 7). |
T_pathological | integer | non-unique | optional | 1 | 2 | 3 | 4 | Pathological T stage (assessment made after surgery), based on tumor only. |
T_substage_pathological | character | non-unique | optional | a | b | c | Pathological T substage (assessment made after surgery), based on tumor only. |
T_clinical | integer | non-unique | optional | 1 | 2 | 3 | 4 | Clinical T stage (at time of diagnosis) based on tumor only. |
T_substage_clinical | character | non-unique | optional | a | b | c | Clinical T substage (at time of diagnosis) based on tumor only. |
ERG_fusion_CNA | integer | non-unique | optional | 1 | 0 | Presence of TMPRSS2:ERG gene fusion in prostate tumor as determined by copy number alteration analysis. |
ERG_fusion_IHC | integer | non-unique | optional | 1 | 0 | Presence of TMPRSS2:ERG gene fusion in prostate tumor as determined by immunohistochemistry. |
ERG_fusion_GEX | integer | non-unique | optional | 1 | 0 | Presence of TMPRSS2:ERG gene fusion in prostate tumor as determined by gene expression. |
disease_specific_recurrence_status | integer | non-unique | optional | 1 | 0 | Binarized status of the patient, where 1 represents a recurrence and 0 represents no reported recurrence. |
days_to_disease_specific_recurrence | numeric | non-unique | optional | [1-10000] | Time to recurrence or last follow-up in days. |
metastasis_occurrence_status | integer | non-unique | optional | 1 | 0 | Binarized status of the patient, where 1 represents a metastatic occurrence and 0 represents no reported metastatic occurrence. |
days_to_metastatic_occurrence | numeric | non-unique | optional | [1-10000] | Time to metastatic occurrence or last follow-up in days. |
psa | numeric | non-unique | optional | [0-10000] | Prostate specific antigen level (numeric) at diagnosis. |
race | character | non-unique | optional | caucasian | african_american | asian | other | Ethnicity of the patient. |
smoking_status | integer | non-unique | optional | 1 | 0 | Binarized indicator for smoker (past or current) or never-smoker. |
extraprostatic_extension | integer | non-unique | optional | 1 | 0 | Spread of prostate cancer out of the prostate gland. Denotes a later stage of prostate cancer (NOTE: We do not currently distinguish between focal, established and multifocal, which are all currently translated into this template as y). |
perineural_invasion | integer | non-unique | optional | 1 | 0 | Cancer spreading to the space surrounding a nerve. |
seminal_vesicle_invasion | integer | non-unique | optional | 1 | 0 | Cancer has spread to the seminal vesicles. |
angiolymphatic_invasion | integer | non-unique | optional | 1 | 0 | Cancer has spread to blood vessels and lymph vessels. |
androgen_ablation | integer | non-unique | optional | 1 | 0 | Medical treatment to suppress or block the production of male sex hormones. |
capsule | character | non-unique | optional | extensive | focal | intact | Status of the prostate capsule. |
M_stage | character | non-unique | optional | X | 0 | 1 | Metastasis status at the time of surgery. X: cannot evaluate distant metastasis, 0: there is no distant metastasis, 1: there is distant metastasis. |
M_substage | character | non-unique | optional | [abc] | Letter substage in M1[abc]; M1a: the cancer has spread to lymph nodes beyond the regional ones, M1b: the cancer has spread to_bone, M1c: the cancer has spread to other sites (regardless of bone involvement). |
other_patient | character | non-unique | optional | * | A character string that captures any additional patient information, features separated by bar (e.g. feature_1=value | feature_2=value | feature_3=value). |
sample_type | character | non-unique | optional | primary | metastatic | normal | BPH | atrophic | cell.line | xenograft | Type of tissue isolated from the patient and used for further -omic profiling. Normal samples include both healthy individuals and healthy tissue from PCa patients, and metastatic indicates non-primary tumors. |
sample_paired | integer | non-unique | optional | 1 | 0 | Whether the platform produces paired sample (e.g. 2-channel relative intensities); the paired sample can be a patient specific paired sample or a generic panel of normals. |
genomic_alterations | character | non-unique | optional | * | Character string with the list of reported alterations in the sample, in the format, gene:event, separated by a bar (eg. TP53:mutation | ETV1:fusion | PTEN:deletion). |
tumor_margins_positive | integer | non-unique | optional | 1 | 0 | Histologically altered cells in any surgical margins. |
tissue_source | character | non-unique | optional | biopsy | TURP | prostatectomy | prostatectomy_and_TURP | autopsy | cystoprostatectomy | other | The source of the sample. |
metastatic_site | character | non-unique | optional | prostate | liver | lung | bone | brain | lymph_node | soft_tissue | adrenal_gland | other | Site where the metastatic sample was taken from. |
microdissected | integer | non-unique | optional | 1 | 0 | Microdissected or not. |
frozen_ffpe | character | non-unique | optional | frozen | FFPE | Frozen or FFPE |
other_feature | character | non-unique | optional | CRPC | cribriform | neuroendocrine | Other descriptions of the sample. |
batch | character | non-unique | optional | * | A way that describes a batch and provides an effect that can be modeled (can be numeric or categorical). |
other_sample | character | non-unique | optional | * | A character string that captures any additional sample information, features separated by bar (e.g. feature_1=value | feature_2=value | feature_3=value). |
tumor_purity_pathology | integer | non-unique | optional | [0-100] | Estimate of the tumor purity according to pathological assessment. |
tumor_purity_demixt | integer | non-unique | optional | [0-100] | Estimate of the tumor purity in the sample using the DeMixT method. |
tumor_purity_absolute | integer | non-unique | optional | [0-100] | Estimate of the tumor purity in the sample using the Absolute method. |
tumor_purity_ascat | numeric | non-unique | optional | [0-100] | Estimate of the tumor purity in the sample using ASCAT (Allele-Specific Copy number Analysis of Tumours). |
zone_of_origin | character | non-unique | optional | transitional | peripheral | mixed | central | Zone of origin assessed through tissue pathology. |
zone_of_origin_estimated | character | non-unique | optional | transitional | peripheral | Estimate of zone of origin using the method from Sinnott et al. |
mutational_signatures | character | non-unique | optional | [] | Estimate of mutational signatures using the deconstructSigs method. |
neoantigen_load | character | non-unique | optional | [] | Estimate of mutational load using the NetMHCPan method. |
AR_activity | integer | non-unique | optional | [0-100] | AR 20-gene signature as provided by original authors. |
prolaris | numeric | non-unique | optional | * | Prolaris risk score as provided by original authors. |
decipher | numeric | non-unique | optional | * | Decipher risk score as provided by original authors. |
oncotypedx | numeric | non-unique | optional | * | Oncotype DX risk score as provided by original authors. |
N_stage | character | non-unique | optional | X | 0 | 1 | 2 | 3 | Regional lymph node status at the time of surgery. X: cannot be measured, 0: no cancer in nearby lymph nodes, 1,2,3: the number and location of lymph nodes that contain cancer. |
N_substage | character | non-unique | optional | [abc] | 1a: the cancer has spread to lymph nodes beyond the regional ones, 1b: the cancer has spread to_bone, M1c: the cancer has spread to other sites (regardless of bone involvement). |
therapy_radiation_initial | integer | non-unique | optional | 1 | 0 | If radiation given as a primary therapy. |
therapy_radiation_salvage | integer | non-unique | optional | 1 | 0 | If radiation given after relapse from surgery. |
therapy_surgery_initial | integer | non-unique | optional | 1 | 0 | If surgery was performed as a primary therapy. |
therapy_hormonal_initial | integer | non-unique | optional | 1 | 0 | If hormonal therapy given as a primary therapy. |
other_treatment | character | non-unique | optional | fish_oil | no_neoadjuvant | prednisone | selenium | vitaminE | taxane | other | Any other treatments |
psa_category | character | non-unique | optional | Normal | Elevated | If PSA was normal or elevated in the patient at baseline. |
genome_altered | numeric | non-unique | optional | [0-x] | Numeric value depicting fraction of genome altered or absolute number mutations called preferring prior. |
Three primary clinical end-points were utilized and are offered in the clinical metadata in colData for the MAE-objects, if available:
Below are summaries for each of these endpoints for each study. Of note, OS had very few events, thus survival modelling for this end-point may be considered unreliable.
Gleason grades:
# Create a summary table of Gleason grades
gleasons <- curatedPCaData::getPCaSummaryTable(maes, var.name = "gleason_grade",
vals = 5:10)
5 | 6 | 7 | 8 | 9 | 10 | Other | N/A | |
---|---|---|---|---|---|---|---|---|
abida | - | 29 (7%) | 107 (24%) | 69 (16%) | 128 (29%) | 24 (5%) | NA | NA |
baca | - | 8 (14%) | 35 (61%) | 8 (14%) | 4 (7%) | - | NA | NA |
barbieri | - | 13 (11%) | 87 (71%) | 8 (7%) | 4 (3%) | - | NA | NA |
barwick | 2 (1%) | 39 (27%) | 93 (64%) | 5 (3%) | 7 (5%) | - | NA | NA |
chandran | 2 (1%) | 16 (9%) | 27 (16%) | 7 (4%) | 12 (7%) | - | NA | NA |
friedrich | 2 (1%) | 47 (18%) | 54 (21%) | 68 (27%) | 43 (17%) | 2 (1%) | NA | NA |
hieronymus | - | 16 (15%) | 78 (75%) | 4 (4%) | 6 (6%) | - | NA | NA |
icgcca | - | 12 (6%) | 58 (27%) | 5 (2%) | - | - | NA | NA |
igc | - | - | - | - | - | - | NA | NA |
kim | 1 (0%) | 198 (74%) | 65 (24%) | - | - | - | NA | NA |
kunderfranco | 1 (1%) | 9 (13%) | 32 (48%) | 6 (9%) | 5 (7%) | - | NA | NA |
ren | - | - | - | - | - | - | NA | NA |
sun | - | - | - | - | - | - | NA | NA |
taylor | - | 53 (21%) | 105 (43%) | 18 (7%) | 19 (8%) | - | NA | NA |
tcga | - | 50 (9%) | 288 (52%) | 67 (12%) | 142 (26%) | 4 (1%) | NA | NA |
true | - | 4 (12%) | 22 (69%) | 1 (3%) | 5 (16%) | - | NA | NA |
wallace | 2 (2%) | 22 (25%) | 59 (66%) | 1 (1%) | 2 (2%) | - | NA | NA |
wang | - | - | - | - | - | - | NA | NA |
weiner | - | - | - | - | - | - | 0 (0%) | 838 (100%) |
Grade groups:
# Create a summary table of grade groups
gradegroups <- curatedPCaData::getPCaSummaryTable(maes, var.name = "grade_group",
vals = c("<=6", "3+4", "4+3", "7", ">=8"))
<=6 | 3+4 | 4+3 | 7 | >=8 | Other | N/A | |
---|---|---|---|---|---|---|---|
abida | - | - | - | - | - | NA | NA |
baca | 8 (14%) | 23 (40%) | 12 (21%) | - | 12 (21%) | NA | NA |
barbieri | 13 (11%) | 58 (47%) | 29 (24%) | - | 12 (10%) | NA | NA |
barwick | - | - | - | - | - | NA | NA |
chandran | 19 (11%) | - | - | 27 (16%) | 19 (11%) | NA | NA |
friedrich | 49 (19%) | - | - | 54 (21%) | 113 (44%) | NA | NA |
hieronymus | 16 (15%) | 56 (54%) | 22 (21%) | - | 10 (10%) | NA | NA |
icgcca | 12 (6%) | 37 (17%) | 21 (10%) | - | 5 (2%) | NA | NA |
igc | 27 (33%) | - | - | 40 (48%) | 14 (17%) | NA | NA |
kim | 199 (75%) | 65 (24%) | - | - | - | NA | NA |
kunderfranco | 10 (15%) | 29 (43%) | 3 (4%) | - | 11 (16%) | NA | NA |
ren | 5 (8%) | 23 (35%) | 13 (20%) | - | 14 (22%) | NA | NA |
sun | - | - | - | - | - | NA | NA |
taylor | 53 (21%) | 72 (29%) | 33 (13%) | - | 37 (15%) | NA | NA |
tcga | 50 (9%) | 172 (31%) | 116 (21%) | - | 213 (39%) | NA | NA |
true | 4 (12%) | 12 (38%) | 10 (31%) | - | 6 (19%) | NA | NA |
wallace | 24 (27%) | - | - | 59 (66%) | 3 (3%) | NA | NA |
wang | - | - | - | - | - | NA | NA |
weiner | 65 (8%) | 419 (50%) | 183 (22%) | - | 171 (20%) | 0 (0%) | 0 (0%) |
Biochemical recurrences:
# Create a summary table of biochemical recurrences
recurrences <- curatedPCaData::getPCaSummarySurv(maes, event.name = "disease_specific_recurrence_status",
time.name = "days_to_disease_specific_recurrence")
0 (no event) | 1 (event) | N/A (event) | Time (days, quantiles) | N/A (time) | |
---|---|---|---|---|---|
abida | - | - | 444 (100%) | - | 444 (100%) |
baca | - | - | 57 (100%) | - | 57 (100%) |
barbieri | - | - | 123 (100%) | - | 123 (100%) |
barwick | 113 (77%) | 33 (23%) | 0 (0%) | [92,276,702,1700,2928] | 0 (0%) |
chandran | - | - | 171 (100%) | - | 171 (100%) |
friedrich | - | - | 255 (100%) | - | 255 (100%) |
hieronymus | - | - | 104 (100%) | - | 104 (100%) |
icgcca | - | - | 213 (100%) | - | 213 (100%) |
igc | - | - | 83 (100%) | - | 83 (100%) |
kim | - | - | 266 (100%) | - | 266 (100%) |
kunderfranco | - | - | 67 (100%) | - | 67 (100%) |
ren | - | - | 65 (100%) | - | 65 (100%) |
sun | 40 (51%) | 39 (49%) | 0 (0%) | - | 79 (100%) |
taylor | 136 (55%) | 60 (24%) | 51 (21%) | [3,710,1360,1955,4909] | 51 (21%) |
tcga | 448 (81%) | 103 (19%) | 0 (0%) | [0,398,782,1363,5024] | 4 (1%) |
true | - | - | 32 (100%) | - | 32 (100%) |
wallace | - | - | 89 (100%) | - | 89 (100%) |
wang | - | - | 148 (100%) | - | 148 (100%) |
weiner | - | - | 838 (100%) | - | 838 (100%) |
Overall survival:
# Create a summary table of overall survival
survivals <- curatedPCaData::getPCaSummarySurv(maes, event.name = "overall_survival_status",
time.name = "days_to_overall_survival")
0 (no event) | 1 (event) | N/A (event) | Time (days, quantiles) | N/A (time) | |
---|---|---|---|---|---|
abida | 52 (12%) | 84 (19%) | 308 (69%) | [51,326,605,898,2104] | 308 (69%) |
baca | - | - | 57 (100%) | - | 57 (100%) |
barbieri | - | - | 123 (100%) | - | 123 (100%) |
barwick | - | - | 146 (100%) | - | 146 (100%) |
chandran | - | - | 171 (100%) | - | 171 (100%) |
friedrich | 230 (90%) | 25 (10%) | 0 (0%) | [641,3005,3614,4301,6771] | 91 (36%) |
hieronymus | 96 (92%) | 8 (8%) | 0 (0%) | [295,1576,2139,2895,3758] | 0 (0%) |
icgcca | 198 (93%) | 8 (4%) | 7 (3%) | [1460,2190,2920,3650,4745] | 1 (0%) |
igc | - | - | 83 (100%) | - | 83 (100%) |
kim | - | - | 266 (100%) | - | 266 (100%) |
kunderfranco | - | - | 67 (100%) | - | 67 (100%) |
ren | - | - | 65 (100%) | - | 65 (100%) |
sun | - | - | 79 (100%) | - | 79 (100%) |
taylor | - | - | 247 (100%) | - | 247 (100%) |
tcga | 541 (98%) | 10 (2%) | 0 (0%) | [23,543,930,1446,5024] | 0 (0%) |
true | - | - | 32 (100%) | - | 32 (100%) |
wallace | - | - | 89 (100%) | - | 89 (100%) |
wang | - | - | 148 (100%) | - | 148 (100%) |
weiner | - | - | 838 (100%) | - | 838 (100%) |
The function getPCa
functions as the primary interface with building
MAE-objects from either live download from ExperimentHub
or by loading them
from local cache, if the datasets have been downloaded previously.
The syntax for the function getPCa(dataset, assays, timestamp, verbose, ...)
consists of the following parameters:
dataset
: Primary indicator for which study to query from ExperimentHub
;
notice that this may only be one of the allowed values.assays
: This indicates which MAE-assays are fetched from the candidate
ExperimentList. Two names are always required (and are filled if missing):
colData
which contains information on the clinical metadata, and sampleMap
which maps the rownames of the metadata to columns in the fetched assay data.timestamp
: When data is deposited in the ExperimentHub
resources, they
are time stamped to avoid ambiguity. The timestamps provided in this parameter
are resolved from left to right, and the first deposit stamp is "20230215"
.verbose
: Logical indicator whether additional information should be printed
by getPCa
....
: Further custom parameters passed on to getPCa
.As an example, let us consider querying the TCGA dataset, but suppose only wish to extract the gene expression data, and the immune deconvolution results derived by the method xCell. Further, we’ll request risk and AR scores slot. This subset could be retrieved with:
tcga_subset <- getPCa(dataset = "tcga", assays = c("gex.rsem.log", "xcell", "scores"),
timestamp = "20230215")
tcga_subset
#> A MultiAssayExperiment object of 3 listed
#> experiments with user-defined names and respective classes.
#> Containing an ExperimentList class object of length 3:
#> [1] gex.rsem.log: matrix with 19658 rows and 461 columns
#> [2] xcell: matrix with 39 rows and 461 columns
#> [3] scores: matrix with 4 rows and 461 columns
#> Functionality:
#> experiments() - obtain the ExperimentList instance
#> colData() - the primary/phenotype DataFrame
#> sampleMap() - the sample coordination DataFrame
#> `$`, `[`, `[[` - extract colData columns, subset, or experiment
#> *Format() - convert into a long or wide DataFrame
#> assays() - convert ExperimentList to a SimpleList of matrices
#> exportClass() - save data to flat files
The standard way of extracting the latest MAE-object with all available assays is done via querying with just the dataset name:
mae_tcga <- getPCa("tcga")
mae_taylor <- getPCa("taylor")
The primary assay names in the MAE objects for gene expression and copy number
alteration will consist of two parts. Mutation data is provided as a
RaggedExperiment
object.
RaggedExperiment
objects as “mut”.The standard way for accessing a data slot in MAE could be done for example via:
mae_taylor[["gex.rma"]][1:5, 1:5]
#> PCA0001 PCA0002 PCA0003 PCA0005 PCA0007
#> A1BG 7.957155 7.966502 8.237386 7.863266 7.799571
#> A1CF 4.479802 4.565785 4.719560 4.453506 4.521248
#> A2M 11.603692 11.145376 10.560886 10.587447 10.069504
#> A2ML1 4.670252 5.001697 4.970436 4.737025 4.756805
#> A4GALT 7.945086 8.228138 8.377694 8.163593 8.071018
The corresponding clinical variables have an accessor function colData
provided by the MultiAssayExperiment
-package:
MultiAssayExperiment::colData(mae_tcga)[1:2, ]
#> DataFrame with 2 rows and 68 columns
#> study_name patient_id sample_name alt_sample_name
#> <character> <character> <character> <character>
#> TCGA.2A.A8VL.01 TCGA TCGA.2A.A8VL TCGA.2A.A8VL.01 F9F392D3-E3C0-4CF2-A..
#> TCGA.2A.A8VO.01 TCGA TCGA.2A.A8VO TCGA.2A.A8VO.01 0BD35529-3416-42DD-A..
#> overall_survival_status days_to_overall_survival
#> <integer> <numeric>
#> TCGA.2A.A8VL.01 0 621
#> TCGA.2A.A8VO.01 0 1701
#> age_at_initial_diagnosis year_diagnosis gleason_grade
#> <integer> <integer> <integer>
#> TCGA.2A.A8VL.01 51 2010 6
#> TCGA.2A.A8VO.01 57 2010 6
#> gleason_major gleason_minor source_of_gleason grade_group
#> <integer> <integer> <character> <character>
#> TCGA.2A.A8VL.01 3 3 NA <=6
#> TCGA.2A.A8VO.01 3 3 NA <=6
#> T_pathological T_substage_pathological T_clinical
#> <integer> <character> <integer>
#> TCGA.2A.A8VL.01 2 b NA
#> TCGA.2A.A8VO.01 3 a 1
#> T_substage_clinical ERG_fusion_CNA ERG_fusion_IHC
#> <character> <integer> <integer>
#> TCGA.2A.A8VL.01 NA NA NA
#> TCGA.2A.A8VO.01 c NA NA
#> ERG_fusion_GEX disease_specific_recurrence_status
#> <numeric> <integer>
#> TCGA.2A.A8VL.01 1 0
#> TCGA.2A.A8VO.01 0 0
#> days_to_disease_specific_recurrence
#> <integer>
#> TCGA.2A.A8VL.01 621
#> TCGA.2A.A8VO.01 1701
#> metastasis_occurrence_status days_to_metastatic_occurrence
#> <integer> <numeric>
#> TCGA.2A.A8VL.01 NA NA
#> TCGA.2A.A8VO.01 NA NA
#> psa race smoking_status extraprostatic_extension
#> <numeric> <character> <integer> <integer>
#> TCGA.2A.A8VL.01 0.05 caucasian NA NA
#> TCGA.2A.A8VO.01 0.05 caucasian NA NA
#> perineural_invasion seminal_vesicle_invasion
#> <integer> <integer>
#> TCGA.2A.A8VL.01 NA 0
#> TCGA.2A.A8VO.01 NA 1
#> angiolymphatic_invasion androgen_ablation capsule M_stage
#> <integer> <integer> <character> <numeric>
#> TCGA.2A.A8VL.01 0 NA NA 0
#> TCGA.2A.A8VO.01 0 NA NA 0
#> M_substage other_patient sample_type sample_paired
#> <character> <logical> <character> <integer>
#> TCGA.2A.A8VL.01 NA primary NA
#> TCGA.2A.A8VO.01 NA primary NA
#> genomic_alterations tumor_margins_positive tissue_source
#> <logical> <integer> <character>
#> TCGA.2A.A8VL.01 NA NA biopsy
#> TCGA.2A.A8VO.01 NA NA biopsy
#> metastatic_site microdissected frozen_ffpe other_feature
#> <character> <integer> <character> <character>
#> TCGA.2A.A8VL.01 NA NA NA NA
#> TCGA.2A.A8VO.01 NA NA NA NA
#> batch other_sample tumor_purity_pathology
#> <character> <logical> <character>
#> TCGA.2A.A8VL.01 NA NA 31-40%
#> TCGA.2A.A8VO.01 NA NA 66-75%
#> tumor_purity_demixt tumor_purity_absolute tumor_purity_ascat
#> <numeric> <numeric> <numeric>
#> TCGA.2A.A8VL.01 0.49 0.50 NA
#> TCGA.2A.A8VO.01 0.55 0.55 NA
#> zone_of_origin zone_of_origin_estimated mutational_signatures
#> <character> <character> <logical>
#> TCGA.2A.A8VL.01 peripheral NA NA
#> TCGA.2A.A8VO.01 mixed NA NA
#> neoantigen_load AR_activity prolaris decipher oncotypedx
#> <logical> <numeric> <numeric> <numeric> <numeric>
#> TCGA.2A.A8VL.01 NA 9.17 NA NA NA
#> TCGA.2A.A8VO.01 NA 0.69 NA NA NA
#> N_stage N_substage therapy_radiation_initial
#> <numeric> <character> <numeric>
#> TCGA.2A.A8VL.01 0 NA 0
#> TCGA.2A.A8VO.01 NA NA 0
#> therapy_radiation_salvage therapy_surgery_initial
#> <integer> <integer>
#> TCGA.2A.A8VL.01 NA NA
#> TCGA.2A.A8VO.01 NA NA
#> therapy_hormonal_initial other_treatment psa_category
#> <integer> <character> <logical>
#> TCGA.2A.A8VL.01 NA NA
#> TCGA.2A.A8VO.01 NA NA
#> genome_altered
#> <numeric>
#> TCGA.2A.A8VL.01 0.0300
#> TCGA.2A.A8VO.01 0.0211
While it is ideal to make sure user is using the correct namespaces, the
pckgName::
can be omitted as curatedPCaData
imports necessary packages such
as MultiAssayExperiment
and their functions should be available in the
workspace.
In order to access the latest listing of curatedPCaData
related resources
available in ExperimentHub
, consult the metadata.csv
file delivered with
the package:
metadata <- read.csv(system.file("extdata", "metadata.csv", package = "curatedPCaData"))
head(metadata)
#> Title
#> 1 abida_cna.gistic_20230215
#> 2 abida_gex.relz_20230215
#> 3 abida_mut_20230215
#> 4 abida_cibersort_20230215
#> 5 abida_xcell_20230215
#> 6 abida_epic_20230215
#> Description
#> 1 abida_cna.gistic_20230215 Copy number alteration GISTIC data of abida cohort in curatedPCaData package
#> 2 abida_gex.relz_20230215 Gene expression (Relative z-score) data of abida cohort in curatedPCaData package
#> 3 abida_mut_20230215 Mutation data of abida cohort in curatedPCaData package
#> 4 abida_cibersort_20230215 Deconvolution using CIBERSORTx data of abida cohort in curatedPCaData package
#> 5 abida_xcell_20230215 Deconvolution using xCell data of abida cohort in curatedPCaData package
#> 6 abida_epic_20230215 Deconvolution using EPIC data of abida cohort in curatedPCaData package
#> BiocVersion Genome SourceType
#> 1 3.17 NA TXT
#> 2 3.17 NA TXT
#> 3 3.17 NA TXT
#> 4 3.17 NA TXT
#> 5 3.17 NA TXT
#> 6 3.17 NA TXT
#> SourceUrl SourceVersion
#> 1 https://www.cbioportal.org/study/summary?id=prad_su2c_2019 <NA>
#> 2 https://www.cbioportal.org/study/summary?id=prad_su2c_2019 <NA>
#> 3 https://www.cbioportal.org/study/summary?id=prad_su2c_2019 <NA>
#> 4 https://www.cbioportal.org/study/summary?id=prad_su2c_2019 <NA>
#> 5 https://www.cbioportal.org/study/summary?id=prad_su2c_2019 <NA>
#> 6 https://www.cbioportal.org/study/summary?id=prad_su2c_2019 <NA>
#> Species TaxonomyId Coordinate_1_based DataProvider
#> 1 Homo sapiens 9606 NA MSKCC
#> 2 Homo sapiens 9606 NA MSKCC
#> 3 Homo sapiens 9606 NA MSKCC
#> 4 Homo sapiens 9606 NA MSKCC
#> 5 Homo sapiens 9606 NA MSKCC
#> 6 Homo sapiens 9606 NA MSKCC
#> Maintainer RDataClass DispatchClass
#> 1 Teemu Daniel Laajala <teelaa@utu.fi> matrix Rds
#> 2 Teemu Daniel Laajala <teelaa@utu.fi> matrix Rds
#> 3 Teemu Daniel Laajala <teelaa@utu.fi> RaggedExperiment Rds
#> 4 Teemu Daniel Laajala <teelaa@utu.fi> matrix Rds
#> 5 Teemu Daniel Laajala <teelaa@utu.fi> matrix Rds
#> 6 Teemu Daniel Laajala <teelaa@utu.fi> matrix Rds
#> ResourceName RDataPath
#> 1 abida_cna.gistic_20230215.Rds curatedPCaData/abida_cna.gistic_20230215.Rds
#> 2 abida_gex.relz_20230215.Rds curatedPCaData/abida_gex.relz_20230215.Rds
#> 3 abida_mut_20230215.Rds curatedPCaData/abida_mut_20230215.Rds
#> 4 abida_cibersort_20230215.Rds curatedPCaData/abida_cibersort_20230215.Rds
#> 5 abida_xcell_20230215.Rds curatedPCaData/abida_xcell_20230215.Rds
#> 6 abida_epic_20230215.Rds curatedPCaData/abida_epic_20230215.Rds
#> Tags
#> 1 cna.gistic
#> 2 gex.relz
#> 3 mut
#> 4 cibersort
#> 5 xcell
#> 6 epic
# Retrieve samples counts across different unique assay names as well as omics
# overlap sample counts
samplecounts <- curatedPCaData::getPCaSummarySamples(maes)
The sample counts in each ’omics separately is listed below:
cibersort | cna.gistic | cna.logr | epic | estimate | gex.logq | gex.logr | gex.relz | gex.rma | gex.rsem.log | mcp | mut | quantiseq | scores | xcell | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
abida | 266 | 444 | 266 | 266 | 266 | 266 | 444 | 266 | 266 | 266 | |||||
baca | 56 | 57 | |||||||||||||
barbieri | 31 | 109 | 31 | 31 | 31 | 31 | 112 | 31 | 31 | 31 | |||||
barwick | 146 | 146 | 146 | 146 | 146 | 146 | |||||||||
chandran | 171 | 171 | 171 | 171 | 171 | 171 | 171 | 171 | |||||||
friedrich | 255 | 255 | 255 | 255 | 255 | 255 | 255 | 255 | |||||||
hieronymus | 104 | ||||||||||||||
icgcca | 213 | 213 | 213 | 213 | 213 | 213 | 213 | 213 | |||||||
igc | 83 | 83 | 83 | 83 | 83 | 83 | 83 | 83 | |||||||
kim | 266 | 266 | 266 | 266 | 266 | 266 | 266 | 266 | |||||||
kunderfranco | 67 | 67 | 67 | 67 | 67 | 67 | 67 | 67 | |||||||
ren | 65 | 65 | 65 | 65 | 65 | 65 | 65 | 65 | 65 | ||||||
sun | 79 | 79 | 79 | 79 | 79 | 79 | 79 | 79 | |||||||
taylor | 179 | 194 | 218 | 179 | 179 | 179 | 179 | 43 | 179 | 179 | 179 | ||||
tcga | 461 | 492 | 461 | 461 | 461 | 461 | 495 | 461 | 461 | 461 | |||||
true | 32 | 32 | 32 | 32 | 18 | 32 | 32 | ||||||||
wallace | 89 | 89 | 89 | 89 | 89 | 89 | 89 | 89 | |||||||
wang | 148 | 148 | 148 | 148 | 148 | 148 | 148 | 148 | |||||||
weiner | 838 | 838 | 838 | 838 | 838 | 838 | 838 | 838 |
However, taking intersections between different omics shows that different samples were analyzed on different platforms - therefore the effective N counts for analyzing multiple ’omics platforms simultaneously is smaller. The overlaps between gene expression (GEX), copy number alteration (CNA), and mutations (MUT) are shown below:
GEX | CNA | MUT | GEX & CNA | GEX & MUT | CNA & MUT | GEX & CNA & MUT | |
---|---|---|---|---|---|---|---|
abida | 266 | 444 | 444 | 266 | 266 | 444 | 266 |
baca | 0 | 56 | 57 | 0 | 0 | 56 | 0 |
barbieri | 31 | 109 | 112 | 20 | 20 | 109 | 20 |
barwick | 146 | 0 | 0 | 0 | 0 | 0 | 0 |
chandran | 171 | 0 | 0 | 0 | 0 | 0 | 0 |
friedrich | 255 | 0 | 0 | 0 | 0 | 0 | 0 |
icgcca | 213 | 0 | 0 | 0 | 0 | 0 | 0 |
igc | 83 | 0 | 0 | 0 | 0 | 0 | 0 |
kim | 266 | 0 | 0 | 0 | 0 | 0 | 0 |
kunderfranco | 67 | 0 | 0 | 0 | 0 | 0 | 0 |
ren | 65 | 0 | 65 | 0 | 65 | 0 | 0 |
sun | 79 | 0 | 0 | 0 | 0 | 0 | 0 |
taylor | 179 | 194 | 43 | 128 | 37 | 41 | 35 |
tcga | 461 | 492 | 495 | 403 | 405 | 489 | 400 |
true | 32 | 0 | 0 | 0 | 0 | 0 | 0 |
wallace | 89 | 0 | 0 | 0 | 0 | 0 | 0 |
wang | 148 | 0 | 0 | 0 | 0 | 0 | 0 |
weiner | 838 | 0 | 0 | 0 | 0 | 0 | 0 |
In curatedPCaData
we refer to derived variables as further downstream
variables, which have been computed based on primarily data. For most cases,
this was done by extracting key gene information from the gex.*
assays and
pre-computing informative downstream markers as described in their primary
publications.
Tumor progression depends on the immune cell composition in the tumor
microenvironment. The ‘immunedeconv’
package consists of different computational methods to computationally estimate
immune cell content using gene expression data. In addition, CIBERTSORTx is
provided externally, as this method required registered access. For user
convenience, it has been run separately and provided as a slot in the MAE
objects. The other methods have been run using the immunedeconv
package
(Sturm et al. 2019) and code for reproducing these derived variables are provided
alongside the package.
In this package, we provide estimates of immune cell content from the following deconvolution methods:
The estimates from each of these methods are stored in the MAE object as a seperate assay as shown for example in the Taylor dataset
mae_taylor
#> A MultiAssayExperiment object of 11 listed
#> experiments with user-defined names and respective classes.
#> Containing an ExperimentList class object of length 11:
#> [1] cna.gistic: matrix with 17832 rows and 194 columns
#> [2] cna.logr: matrix with 18062 rows and 218 columns
#> [3] gex.rma: matrix with 17410 rows and 179 columns
#> [4] mut: RaggedExperiment with 90 rows and 43 columns
#> [5] cibersort: matrix with 22 rows and 179 columns
#> [6] xcell: matrix with 39 rows and 179 columns
#> [7] epic: matrix with 8 rows and 179 columns
#> [8] quantiseq: matrix with 11 rows and 179 columns
#> [9] mcp: matrix with 11 rows and 179 columns
#> [10] estimate: matrix with 4 rows and 179 columns
#> [11] scores: matrix with 4 rows and 179 columns
#> Functionality:
#> experiments() - obtain the ExperimentList instance
#> colData() - the primary/phenotype DataFrame
#> sampleMap() - the sample coordination DataFrame
#> `$`, `[`, `[[` - extract colData columns, subset, or experiment
#> *Format() - convert into a long or wide DataFrame
#> assays() - convert ExperimentList to a SimpleList of matrices
#> exportClass() - save data to flat files
To access the quantiseq results for the Taylor et. al dataset, these pre-computed values can be obtained from the corresponding slot in the MAE-object:
head(mae_taylor[["cibersort"]])[1:5, 1:3]
#> PCA0001 PCA0002 PCA0003
#> B cells naive 0.08544376 0.13683292 0.03620644
#> B cells memory 0.03357079 0.00000000 0.03631384
#> Plasma cells 0.07151722 0.03991641 0.00000000
#> T cells CD8 0.20657390 0.20360110 0.23907130
#> T cells CD4 naive 0.00000000 0.00000000 0.00000000
Similarly to access results from the other immune deconvolution methods, the following assays/experiments are also available:
head(mae_taylor[["quantiseq"]])[1:5, 1:3]
#> PCA0001 PCA0002 PCA0003
#> B cell 0.100063011 0.08171362 0.09675483
#> Macrophage M1 0.006654406 0.01532479 0.01988157
#> Macrophage M2 0.085216324 0.08214651 0.07174060
#> Monocyte 0.000000000 0.00000000 0.00000000
#> Neutrophil 0.135286167 0.12045115 0.10142068
head(mae_taylor[["xcell"]])[1:5, 1:3]
#> PCA0001 PCA0002 PCA0003
#> Myeloid dendritic cell activated 0.002601576 0.06149682 2.298156e-02
#> B cell 0.013211541 0.01934287 0.000000e+00
#> T cell CD4+ memory 0.029688627 0.03778152 6.288573e-03
#> T cell CD4+ naive 0.002133965 0.00685892 3.883571e-18
#> T cell CD4+ (non-regulatory) 0.000000000 0.00000000 0.000000e+00
head(mae_taylor[["epic"]])[1:5, 1:3]
#> PCA0001 PCA0002 PCA0003
#> B cell 0.02249750 0.01935547 0.02441322
#> Cancer associated fibroblast 0.01962203 0.01828512 0.02019139
#> T cell CD4+ 0.18739469 0.20292446 0.18976862
#> T cell CD8+ 0.06283695 0.04923331 0.04992732
#> Endothelial cell 0.10510564 0.09707150 0.08088879
head(mae_taylor[["mcp"]])[1:5, 1:3]
#> PCA0001 PCA0002 PCA0003
#> T cell 6.518296 6.873941 6.771791
#> T cell CD8+ 4.090739 4.168020 4.355332
#> cytotoxicity score 5.974354 6.218115 6.462306
#> NK cell 5.768176 5.857110 6.348053
#> B cell 6.655998 6.431666 6.711109
Each row of the deconvolution matrix represents the content of a certain immune cell type and the columns represent the patient sample IDs. The variables on the rows are specific for each method. Further, it should be noted that not all methods could be run on all datasets due to lack of overlap in genes of interest.
The slot scores
is used to provide key risk scores or other informative
metrics based on the primary data. These scores can be accessed as a matrix as
if they were variables on an assay with this name:
mae_tcga[["scores"]][, 1:4]
#> TCGA.G9.6348.01 TCGA.CH.5766.01 TCGA.EJ.A65G.01 TCGA.EJ.5527.01
#> decipher -0.08265918 0.01072473 -0.2997221 -0.086624
#> oncotype -3.47973684 -3.54594586 -3.9224176 -3.461314
#> prolaris -4.95408262 -5.76978328 -4.0708355 -6.194230
#> ar_score -0.08262097 0.65489227 12.4016220 5.029849
The following PCa risk scores are offered:
(rowname: decipher)
(Herlemann et al. 2019)(rowname: oncotype)
(Knezevic et al. 2013)(rowname: prolaris)
(NICE Advice 2018)Further, the 20-gene Androgen Receptor (AR) score is calculated as described in the TCGA’s Cell 2015 paper:
(rowname: ar_score)
(Abeshouse et al. 2015)Here, a brief example on how to download and process a single study is provided. The example data is of Taylor et al. (Taylor et al. 2010), also known as the MSKCC dataset.
A character vector with the short study ID is used to download the MAE object; we will focus only on the primary prostate cancer samples and CNA (GISTIC) and GEX:
taylor <- getPCa("taylor", assays = c("gex.rma", "cna.gistic"), sampletypes = "primary")
class(taylor)
#> [1] "MultiAssayExperiment"
#> attr(,"package")
#> [1] "MultiAssayExperiment"
taylor
#> A MultiAssayExperiment object of 2 listed
#> experiments with user-defined names and respective classes.
#> Containing an ExperimentList class object of length 2:
#> [1] cna.gistic: matrix with 17832 rows and 157 columns
#> [2] gex.rma: matrix with 17410 rows and 131 columns
#> Functionality:
#> experiments() - obtain the ExperimentList instance
#> colData() - the primary/phenotype DataFrame
#> sampleMap() - the sample coordination DataFrame
#> `$`, `[`, `[[` - extract colData columns, subset, or experiment
#> *Format() - convert into a long or wide DataFrame
#> assays() - convert ExperimentList to a SimpleList of matrices
#> exportClass() - save data to flat files
One typical end-point is an object of type Surv
, exported from the
survival
-package. We will create this end-point for biochemical
recurrence:
library(survival)
# BCR events
taylor_bcr <- colData(taylor)$disease_specific_recurrence_status
# BCR events / censoring follow-up time
taylor_fu <- colData(taylor)$days_to_disease_specific_recurrence
taylor_surv <- Surv(event = taylor_bcr, time = taylor_fu)
class(taylor_surv)
#> [1] "Surv"
head(taylor_surv)
#> [1] 564 1770+ 2841+ 4653+ 3846+ 4909+
With the response vector of type Surv
, one can plot and analyze multiple
survival modelling related tasks.
One of the most common ways to depict survival curves (here BCR events), is a Kaplan-Meier (KM) curve. Gleason grade is known to be a good prognostic factor for BCR, thus a KM curve in respect to biopsy Gleason grade shows differences in prognosis.
For this visualization, package survminer
offers a variety of functions
building on top of ggplot
:
library(survminer)
taylor_bcr_gleason <- data.frame(bcr = taylor_surv, gleason = colData(taylor)$gleason_grade)
fit <- survfit(bcr ~ gleason, data = taylor_bcr_gleason)
ggsurvplot(fit, data = taylor_bcr_gleason, ylab = "Biochemical recurrence free proportion",
risk.table = TRUE, size = 1, pval = TRUE, ggtheme = theme_bw())
For more settings for the KM plots, see documentation for
survminer::ggsurvplot
.
Functions longFormat
and wideFormat
from MultiAssayExperiment
are
essential for extracting multi-omics data and metadata in the right format.
For the purposes of Cox regression, we will utilize wideFormat
:
taylor_coxdat <- MultiAssayExperiment::wideFormat(taylor["PTEN", , ], colDataCols = c("age_at_initial_diagnosis",
"gleason_grade", "disease_specific_recurrence_status", "days_to_disease_specific_recurrence"))
taylor_coxdat <- as.data.frame(taylor_coxdat)
taylor_coxdat$y <- Surv(time = taylor_coxdat$days_to_disease_specific_recurrence,
event = taylor_coxdat$disease_specific_recurrence_status)
head(taylor_coxdat)
#> primary age_at_initial_diagnosis gleason_grade
#> 1 PCA0001 NA 7
#> 2 PCA0002 NA 8
#> 3 PCA0003 NA 7
#> 4 PCA0004 NA 7
#> 5 PCA0005 NA 7
#> 6 PCA0006 NA 6
#> disease_specific_recurrence_status days_to_disease_specific_recurrence
#> 1 1 564
#> 2 0 1770
#> 3 0 2841
#> 4 0 4653
#> 5 0 3846
#> 6 0 4909
#> cna.gistic_PTEN gex.rma_PTEN y
#> 1 0 7.311643 564
#> 2 0 7.304157 1770+
#> 3 0 7.205469 2841+
#> 4 0 NA 4653+
#> 5 0 7.059756 3846+
#> 6 -1 NA 4909+
We’ll construct a simple Cox proportional hazards model with few variables; PTEN is a known tumor suppressor gene, so changes in its copy number or gene expression levels could also play a role in biochemical recurrence.
coxmodel <- coxph(y ~ cna.gistic_PTEN + gex.rma_PTEN + gleason_grade, data = taylor_coxdat)
coxmodel
#> Call:
#> coxph(formula = y ~ cna.gistic_PTEN + gex.rma_PTEN + gleason_grade,
#> data = taylor_coxdat)
#>
#> coef exp(coef) se(coef) z p
#> cna.gistic_PTEN -0.8227 0.4392 0.3613 -2.277 0.0228
#> gex.rma_PTEN 1.6762 5.3450 0.8432 1.988 0.0468
#> gleason_grade 1.0904 2.9755 0.2307 4.727 2.28e-06
#>
#> Likelihood ratio test=27.76 on 3 df, p=4.086e-06
#> n= 108, number of events= 24
#> (71 observations deleted due to missingness)
In this case we took the GISTIC normalized PTEN amplification as well as its RMA-normalized gene expression. We notice that both are statistically significant Cox regression coefficients together with Gleason grade.
sessionInfo()
#> R Under development (unstable) (2024-10-21 r87258)
#> Platform: x86_64-pc-linux-gnu
#> Running under: Ubuntu 24.04.1 LTS
#>
#> Matrix products: default
#> BLAS: /home/biocbuild/bbs-3.21-bioc/R/lib/libRblas.so
#> LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.0
#>
#> locale:
#> [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
#> [3] LC_TIME=en_GB 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_TELEPHONE=C
#> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
#>
#> time zone: America/New_York
#> tzcode source: system (glibc)
#>
#> attached base packages:
#> [1] stats4 stats graphics grDevices utils datasets methods
#> [8] base
#>
#> other attached packages:
#> [1] survminer_0.5.0 ggpubr_0.6.0
#> [3] ggplot2_3.5.1 survival_3.7-0
#> [5] curatedPCaData_1.3.0 RaggedExperiment_1.31.0
#> [7] MultiAssayExperiment_1.33.0 SummarizedExperiment_1.37.0
#> [9] Biobase_2.67.0 GenomicRanges_1.59.0
#> [11] GenomeInfoDb_1.43.0 IRanges_2.41.0
#> [13] MatrixGenerics_1.19.0 matrixStats_1.4.1
#> [15] S4Vectors_0.45.0 BiocGenerics_0.53.1
#> [17] generics_0.1.3 BiocStyle_2.35.0
#>
#> loaded via a namespace (and not attached):
#> [1] DBI_1.2.3 gridExtra_2.3 formatR_1.14
#> [4] rlang_1.1.4 magrittr_2.0.3 compiler_4.5.0
#> [7] RSQLite_2.3.7 png_0.1-8 vctrs_0.6.5
#> [10] reshape2_1.4.4 stringr_1.5.1 pkgconfig_2.0.3
#> [13] crayon_1.5.3 fastmap_1.2.0 magick_2.8.5
#> [16] backports_1.5.0 dbplyr_2.5.0 XVector_0.47.0
#> [19] labeling_0.4.3 KMsurv_0.1-5 utf8_1.2.4
#> [22] rmarkdown_2.29 markdown_1.13 UCSC.utils_1.3.0
#> [25] tinytex_0.54 purrr_1.0.2 bit_4.5.0
#> [28] xfun_0.49 zlibbioc_1.53.0 cachem_1.1.0
#> [31] jsonlite_1.8.9 blob_1.2.4 highr_0.11
#> [34] DelayedArray_0.33.1 broom_1.0.7 R6_2.5.1
#> [37] bslib_0.8.0 stringi_1.8.4 car_3.1-3
#> [40] jquerylib_0.1.4 Rcpp_1.0.13-1 bookdown_0.41
#> [43] knitr_1.48 zoo_1.8-12 BiocBaseUtils_1.9.0
#> [46] Matrix_1.7-1 splines_4.5.0 tidyselect_1.2.1
#> [49] abind_1.4-8 yaml_2.3.10 ggtext_0.1.2
#> [52] codetools_0.2-20 curl_5.2.3 lattice_0.22-6
#> [55] tibble_3.2.1 plyr_1.8.9 withr_3.0.2
#> [58] KEGGREST_1.47.0 evaluate_1.0.1 BiocFileCache_2.15.0
#> [61] xml2_1.3.6 survMisc_0.5.6 ExperimentHub_2.15.0
#> [64] Biostrings_2.75.0 pillar_1.9.0 BiocManager_1.30.25
#> [67] filelock_1.0.3 carData_3.0-5 BiocVersion_3.21.1
#> [70] commonmark_1.9.2 munsell_0.5.1 scales_1.3.0
#> [73] xtable_1.8-4 glue_1.8.0 tools_4.5.0
#> [76] AnnotationHub_3.15.0 data.table_1.16.2 ggsignif_0.6.4
#> [79] grid_4.5.0 tidyr_1.3.1 AnnotationDbi_1.69.0
#> [82] colorspace_2.1-1 GenomeInfoDbData_1.2.13 Formula_1.2-5
#> [85] cli_3.6.3 km.ci_0.5-6 rappdirs_0.3.3
#> [88] fansi_1.0.6 S4Arrays_1.7.1 dplyr_1.1.4
#> [91] gtable_0.3.6 rstatix_0.7.2 sass_0.4.9
#> [94] digest_0.6.37 SparseArray_1.7.0 farver_2.1.2
#> [97] memoise_2.0.1 htmltools_0.5.8.1 lifecycle_1.0.4
#> [100] httr_1.4.7 mime_0.12 gridtext_0.1.5
#> [103] bit64_4.5.2