## ----style-knitr, eval=TRUE, echo=FALSE, results="asis"---------------------------------
BiocStyle::latex()

## ----include=FALSE----------------------------------------------------------------------
library(knitr)
opts_chunk$set(
concordance = TRUE,
background = "#f3f3ff"
)

## ----req--------------------------------------------------------------------------------
library(TRONCO)
data(aCML)
data(crc_maf)
data(crc_gistic)
data(crc_plain)

## ---------------------------------------------------------------------------------------
head(crc_maf[, 1:10])

## ----import.MAF-------------------------------------------------------------------------
dataset_maf = import.MAF(crc_maf)

## ----import.MAF.real--------------------------------------------------------------------
dataset_maf = import.MAF(crc_maf, merge.mutation.types = FALSE)

## ----import.MAF.box---------------------------------------------------------------------
dataset_maf = import.MAF(crc_maf, filter.fun = function(x){ x['Hugo_Symbol'] == 'APC'} )

## ----import.MAF.crc_maf-----------------------------------------------------------------
dataset_maf = import.MAF(crc_maf, 
    merge.mutation.types = FALSE, 
    paste.to.Hugo_Symbol = c('MA.protein.change'))

## ---------------------------------------------------------------------------------------
crc_gistic

## ----import.GISTIC----------------------------------------------------------------------
dataset_gistic = import.GISTIC(crc_gistic)

## ---------------------------------------------------------------------------------------
crc_plain

## ----import.genotypes-------------------------------------------------------------------
dataset_plain = import.genotypes(crc_plain, event.type='myVariant')

## ----results='hide', eval=FALSE---------------------------------------------------------
#  data = cbio.query(
#      genes=c('TP53', 'KRAS', 'PIK3CA'),
#      cbio.study = 'luad_tcga_pub',
#      cbio.dataset = 'luad_tcga_pub_cnaseq',
#      cbio.profile = 'luad_tcga_pub_mutations')

## ----view-------------------------------------------------------------------------------
view(aCML)

## ----asgenotypes------------------------------------------------------------------------
as.genotypes(aCML)[1:10,5:10]

## ----asevents---------------------------------------------------------------------------
as.events(aCML)[1:5, ]
as.events.in.sample(aCML, sample = 'patient 2')

## ----asgenes----------------------------------------------------------------------------
as.genes(aCML)[1:8]

## ----astypes----------------------------------------------------------------------------
as.types(aCML)
as.colors(aCML)

## ----asgene-----------------------------------------------------------------------------
head(as.gene(aCML, genes='SETBP1'))

## ----assamples-acml---------------------------------------------------------------------
as.samples(aCML)[1:10]

## ----assamples-acml-tet-----------------------------------------------------------------
which.samples(aCML, gene='TET2', type='Nonsense point')

## ----asalterations----------------------------------------------------------------------
dataset = as.alterations(aCML)

## ----asalterations.view-----------------------------------------------------------------
view(dataset)

## ----number-----------------------------------------------------------------------------
ngenes(aCML)
nevents(aCML)
nsamples(aCML)
ntypes(aCML)
npatterns(aCML)

## ----onco, fig.show='hide', fig.width=6, fig.height=5-----------------------------------
oncoprint(aCML)

## ----oncocl, fig.show='hide', fig.width=5, fig.height=5,results='hide'------------------
oncoprint(aCML, 
    legend = FALSE, 
    samples.cluster = TRUE, 
    gene.annot = list(one = list('NRAS', 'SETBP1'), two = list('EZH2', 'TET2')),
    gene.annot.color = 'Set2',
    genes.cluster = TRUE)

## ----stages-----------------------------------------------------------------------------
stages = c(rep('stage 1', 32), rep('stage 2', 32))
stages = as.matrix(stages)
rownames(stages) = as.samples(aCML)
dataset = annotate.stages(aCML, stages = stages)
has.stages(aCML)
head(as.stages(dataset))

## ---------------------------------------------------------------------------------------
head(as.stages(dataset))

## ----onco-stages, fig.show='hide', fig.width=6, fig.height=5, results='hide'------------
oncoprint(dataset, legend = FALSE)

## ----onco-clus2, fig.show='hide', fig.width=6, fig.height=5, results='hide'-------------
oncoprint(dataset, group.samples = as.stages(dataset))

## ----pathway----------------------------------------------------------------------------
pathway = as.pathway(aCML,
    pathway.genes = c('SETBP1', 'EZH2', 'WT1'), 
    pathway.name = 'MyPATHWAY',
    pathway.color = 'red',
    aggregate.pathway = FALSE)

## ----onco-pathway, fig.show='hide', fig.width=6.5, fig.height=2, results='hide'---------
oncoprint(pathway, title = 'Custom pathway',  font.row = 8, cellheight = 15, cellwidth = 4)

## ----onco-pathway-viz, fig.show='hide', fig.width=6.5, fig.height=1.8-------------------
pathway.visualization(aCML, 
    pathways=list(P1 = c('TET2', 'IRAK4'),  P2=c('SETBP1', 'KIT')),        
    aggregate.pathways=FALSE,
    font.row = 8)

## ----onco-pathway-viz2, fig.show='hide', fig.width=6.5, fig.height=1, results='hide'----
pathway.visualization(aCML, 
    pathways=list(P1 = c('TET2', 'IRAK4'),  P2=c('SETBP1', 'KIT')),
    aggregate.pathways = TRUE,
    font.row = 8)

## ----rename-----------------------------------------------------------------------------
dataset = rename.gene(aCML, 'TET2', 'new name')
dataset = rename.type(dataset, 'Ins/Del', 'new type')
as.events(dataset, type = 'new type')

## ----join1------------------------------------------------------------------------------
dataset = join.events(aCML, 
    'gene 4',
    'gene 88',
    new.event='test',
    new.type='banana',
    event.color='yellow')

## ----join2------------------------------------------------------------------------------
dataset = join.types(dataset, 'Nonsense point', 'Nonsense Ins/Del')
as.types(dataset)

## ----delete-----------------------------------------------------------------------------
dataset = delete.gene(aCML, gene = 'TET2')
dataset = delete.event(dataset, gene = 'ASXL1', type = 'Ins/Del')
dataset = delete.samples(dataset, samples = c('patient 5', 'patient 6'))
dataset = delete.type(dataset, type = 'Missense point')
view(dataset)

## ----assamples-assamples----------------------------------------------------------------
dataset = samples.selection(aCML, samples = as.samples(aCML)[1:3])
view(dataset)

## ----eventsselection--------------------------------------------------------------------
dataset = events.selection(aCML,  filter.freq = .05, 
    filter.in.names = c('EZH1','EZH2'), 
    filter.out.names = 'SETBP1')

## ----eventsselection2-------------------------------------------------------------------
as.events(dataset)

## ----onco-ex-sel, fig.show='hide', fig.width=7, fig.height=5.5, results='hide'----------
library(gridExtra)
grid.arrange(
    oncoprint(as.alterations(aCML, new.color = 'brown3'), 
        cellheight = 6, cellwidth = 4, gtable = TRUE,
        silent = TRUE, font.row = 6)$gtable,
    oncoprint(dataset, cellheight = 6, cellwidth = 4,
        gtable = TRUE, silent = TRUE, font.row = 6)$gtable, 
    ncol = 1)

## ---------------------------------------------------------------------------------------
dataset = change.color(aCML, 'Ins/Del', 'dodgerblue4')
dataset = change.color(dataset, 'Missense point', '#7FC97F')
as.colors(dataset)

## ---------------------------------------------------------------------------------------
consolidate.data(dataset)

## ----other-alterations------------------------------------------------------------------
alterations = events.selection(as.alterations(aCML), filter.freq = .05)

## ---------------------------------------------------------------------------------------
gene.hypotheses = c('KRAS', 'NRAS', 'IDH1', 'IDH2', 'TET2', 'SF3B1', 'ASXL1')
aCML.clean = events.selection(aCML,
    filter.in.names=c(as.genes(alterations), gene.hypotheses))
aCML.clean = annotate.description(aCML.clean, 
    'CAPRI - Bionformatics aCML data (selected events)')

## ----onco-edited, fig.show='hide', fig.width=8, fig.height=5.5, results='hide'----------
oncoprint(aCML.clean, gene.annot = list(priors = gene.hypotheses), sample.id = TRUE)

## ---------------------------------------------------------------------------------------
aCML.hypo = hypothesis.add(aCML.clean, 'NRAS xor KRAS', XOR('NRAS', 'KRAS'))

## ----eval=FALSE-------------------------------------------------------------------------
#  aCML.hypo = hypothesis.add(aCML.hypo, 'NRAS or KRAS',  OR('NRAS', 'KRAS'))

## ----onco-kras-nras, fig.show='hide', fig.width=6, fig.height=1, results='hide'---------
oncoprint(events.selection(aCML.hypo,
    filter.in.names = c('KRAS', 'NRAS')),
    font.row = 8,
    ann.hits = FALSE)

## ---------------------------------------------------------------------------------------
aCML.hypo = hypothesis.add(aCML.hypo, 'SF3B1 xor ASXL1', XOR('SF3B1', XOR('ASXL1')),
    '*')

## ---------------------------------------------------------------------------------------
as.events(aCML.hypo, genes = 'TET2') 
aCML.hypo = hypothesis.add(aCML.hypo,
    'TET2 xor IDH2',
    XOR('TET2', 'IDH2'),
    '*')
aCML.hypo = hypothesis.add(aCML.hypo,
    'TET2 or IDH2',
    OR('TET2', 'IDH2'),
    '*')

## ----onco-tet2-idh2, fig.show='hide', fig.width=7, fig.height=2, results='hide'---------
oncoprint(events.selection(aCML.hypo,
    filter.in.names = c('TET2', 'IDH2')),
    font.row = 8,
    ann.hits = FALSE)

## ---------------------------------------------------------------------------------------
aCML.hypo = hypothesis.add.homologous(aCML.hypo)

## ----hypo-add-hom-----------------------------------------------------------------------
dataset = hypothesis.add.group(aCML.clean, OR, group = c('SETBP1', 'ASXL1', 'CBL'))

## ----onco-priors, fig.show='hide', fig.width=8, fig.height=6.5,results='hide'-----------
oncoprint(aCML.hypo, gene.annot = list(priors = gene.hypotheses), sample.id = TRUE, 
    font.row=10, font.column=5, cellheight=15, cellwidth=4)

## ----n-hypo-pat-------------------------------------------------------------------------
npatterns(dataset)
nhypotheses(dataset)

## ----as-patterns------------------------------------------------------------------------
as.patterns(dataset)
as.events.in.patterns(dataset)
as.genes.in.patterns(dataset)
as.types.in.patterns(dataset)

## ----as-hypotheses----------------------------------------------------------------------
head(as.hypotheses(dataset))
dataset = delete.hypothesis(dataset, event = 'TET2')
dataset = delete.pattern(dataset, pattern = 'OR_ASXL1_CBL')

## ----pattern-plot,fig.show='hide', fig.width=4, fig.height=2.2--------------------------
tronco.pattern.plot(aCML,
    group = as.events(aCML, genes=c('SETBP1', 'ASXL1')),
    to = c('CSF3R', 'Missense point'),
    legend.cex=0.8,
    label.cex=1.0)

## ----pattern-plot-circos,fig.show='hide',results='hide',  fig.width=6, fig.height=6-----
tronco.pattern.plot(aCML,
    group = as.events(aCML, genes=c('TET2', 'ASXL1')),
    to = c('CSF3R', 'Missense point'),
    legend = 1.0,
    label.cex = 0.8,
    mode='circos')

## ----delete-description, results='hide', include=FALSE----------------------------------
aCML.hypo = annotate.description(aCML.hypo, '')
aCML.clean = annotate.description(aCML.clean, '')

## ----model-capri------------------------------------------------------------------------
model.capri = tronco.capri(aCML.hypo, boot.seed = 12345, nboot = 5)
model.capri = annotate.description(model.capri, 'CAPRI - aCML')

## ----caprese-plot-----------------------------------------------------------------------
model.caprese = tronco.caprese(aCML.clean)
model.caprese = annotate.description(model.caprese, 'CAPRESE - aCML')

## ----edmonds-plot-----------------------------------------------------------------------
model.edmonds = tronco.edmonds(aCML.clean, nboot = 5, boot.seed = 12345)
model.edmonds = annotate.description(model.edmonds, 'MST Edmonds - aCML')

## ----gabow-plot-------------------------------------------------------------------------
model.gabow = tronco.gabow(aCML.clean, nboot = 5, boot.seed = 12345)
model.gabow = annotate.description(model.gabow, 'MST Gabow - aCML')

## ----chow-liu-plot----------------------------------------------------------------------
model.chowliu = tronco.chowliu(aCML.clean, nboot = 5, boot.seed = 12345)
model.chowliu = annotate.description(model.chowliu, 'MST Chow Liu - aCML')

## ----prim-plot--------------------------------------------------------------------------
model.prim = tronco.prim(aCML.clean, nboot = 5, boot.seed = 12345)
model.prim = annotate.description(model.prim, 'MST Prim - aCML data')

## ---------------------------------------------------------------------------------------
view(model.capri)

## ----capri-plot,fig.show='hide',fig.width=4,fig.height=4,warning=FALSE------------------
tronco.plot(model.capri, 
    fontsize = 12, 
    scale.nodes = 0.6, 
    confidence = c('tp', 'pr', 'hg'), 
    height.logic = 0.25, 
    legend.cex = 0.35, 
    pathways = list(priors = gene.hypotheses), 
    label.edge.size = 10)

## ----mst-plot,fig.show='hide',results='hide',fig.width=7,fig.height=7,warning=FALSE-----
par(mfrow = c(2,2))
tronco.plot(model.caprese, fontsize = 22, scale.nodes = 0.6, legend = FALSE)
tronco.plot(model.edmonds, fontsize = 22, scale.nodes = 0.6, legend = FALSE)
tronco.plot(model.chowliu, fontsize = 22, scale.nodes = 0.6, legend.cex = .7)
tronco.plot(model.prim, fontsize = 22, scale.nodes = 0.6, legend = FALSE)

## ---------------------------------------------------------------------------------------
 as.data.frame(as.parameters(model.capri))
has.model(model.capri)
dataset = delete.model(model.capri)

## ---------------------------------------------------------------------------------------
str(as.adj.matrix(model.capri))

## ---------------------------------------------------------------------------------------
marginal.prob = as.marginal.probs(model.capri)
head(marginal.prob$capri_bic)

## ---------------------------------------------------------------------------------------
joint.prob = as.joint.probs(model.capri, models='capri_bic')
joint.prob$capri_bic[1:3, 1:3]

## ---------------------------------------------------------------------------------------
conditional.prob = as.conditional.probs(model.capri, models='capri_bic')
head(conditional.prob$capri_bic)

## ---------------------------------------------------------------------------------------
str(as.confidence(model.capri, conf = c('tp', 'pr', 'hg')))

## ----selective-advantage----------------------------------------------------------------
as.selective.advantage.relations(model.capri)

## ---------------------------------------------------------------------------------------
model.boot = tronco.bootstrap(model.capri, nboot = 3)
model.boot = tronco.bootstrap(model.boot, nboot = 3, type = 'statistical')

## ----figplotboot,fig.show='hide',fig.width=4,fig.height=4,warning=FALSE-----------------
tronco.plot(model.boot, 
    fontsize = 12, 
    scale.nodes = .6,   
    confidence=c('sb', 'npb'), 
    height.logic = 0.25, 
    legend.cex = .35, 
    pathways = list(priors= gene.hypotheses), 
    label.edge.size=10)

## ----bootstrap-table--------------------------------------------------------------------
as.bootstrap.scores(model.boot)
view(model.boot)

## ----hboot,fig.show='hide',fig.width=7,fig.height=7-------------------------------------
pheatmap(keysToNames(model.boot, as.confidence(model.boot, conf = 'sb')$sb$capri_aic) * 100, 
           main =  'Statistical bootstrap scores for AIC model',
           fontsize_row = 6,
           fontsize_col = 6,
           display_numbers = TRUE,
           number_format = "%d"
           )

## ----kfold------------------------------------------------------------------------------
model.boot = tronco.kfold.eloss(model.boot)
model.boot = tronco.kfold.prederr(model.boot, runs = 2)
model.boot = tronco.kfold.posterr(model.boot, runs = 2)

## ----as-kfold-ex------------------------------------------------------------------------
as.kfold.eloss(model.boot)
as.kfold.prederr(model.boot)
as.kfold.posterr(model.boot)

## ----as-kfold-tab-----------------------------------------------------------------------
tabular = function(obj, M){
    tab = Reduce(
        function(...) merge(..., all = TRUE), 
            list(as.selective.advantage.relations(obj, models = M),
                as.bootstrap.scores(obj, models = M),
                as.kfold.prederr(obj, models = M),
                as.kfold.posterr(obj,models = M)))
  
    # merge reverses first with second column
    tab = tab[, c(2,1,3:ncol(tab))]
    tab = tab[order(tab[, paste(M, '.NONPAR.BOOT', sep='')], na.last = TRUE, decreasing = TRUE), ]
    return(tab)
}

head(tabular(model.boot, 'capri_bic'))

## ----plot-conf,fig.show='hide',fig.width=4,fig.height=4,warning=FALSE-------------------
tronco.plot(model.boot, 
    fontsize = 12, 
    scale.nodes = .6, 
    confidence=c('npb', 'eloss', 'prederr', 'posterr'), 
    height.logic = 0.25, 
    legend.cex = .35, 
    pathways = list(priors= gene.hypotheses), 
    label.edge.size=10)

## ----graphml, fig.show='hide',warning=FALSE---------------------------------------------
export.graphml(model.boot,
    file = 'graph.gml',
    fontsize = 12, 
    scale.nodes = .6, 
    height.logic = 0.25)

## ----sessioninfo, results='asis', eval=TRUE, echo=FALSE---------------------------------
toLatex(sessionInfo())

