## ---- include = FALSE---------------------------------------------------------
knitr::opts_chunk$set(
    collapse = TRUE,
    comment = "#>"
)

## ----setup--------------------------------------------------------------------
library(TreeAndLeaf)
library(RedeR)
library(RColorBrewer)
library(igraph)
library(ape)

## ----echo=TRUE----------------------------------------------------------------
dim(USArrests)
head(USArrests)

## ----echo=TRUE----------------------------------------------------------------
hc <- hclust(dist(USArrests), "ave")
plot(hc)

## -----------------------------------------------------------------------------
gg <- hclust2igraph(hc)

## -----------------------------------------------------------------------------
gg <- formatTree(gg = gg, theme = 5)

## -----------------------------------------------------------------------------
gg <- att.mapv(g = gg, dat = USArrests, refcol = 0)

## -----------------------------------------------------------------------------
pal <- brewer.pal(9, "Reds")
gg <- att.setv(g = gg, from = "Murder", to = "nodeColor",
                        cols = pal, nquant = 5)
gg <- att.setv(g = gg, from = "UrbanPop", to = "nodeSize",
                        xlim = c(50, 150, 1), nquant = 5)

## ---- eval = FALSE------------------------------------------------------------
#  rdp <- RedPort()
#  calld(rdp)
#  resetd(rdp)

## ---- eval = FALSE------------------------------------------------------------
#  treeAndLeaf(obj = rdp,
#              gg = gg)
#  

## ---- eval = FALSE------------------------------------------------------------
#  addLegend.color(obj = rdp,
#                          gg,
#                          title = "Murder Rate",
#                          position = "right")
#  
#  addLegend.size(obj = rdp,
#                          gg,
#                          title = "Urban Population Size",
#                          position = "bottomright")

## ----echo=TRUE----------------------------------------------------------------
dim(quakes)
head(quakes)

## ----echo=TRUE----------------------------------------------------------------
hc <- hclust(dist(quakes))
plot(hc)

## -----------------------------------------------------------------------------
gg <- hclust2igraph(hc)
gg <- formatTree(gg, theme = 1, cleanalias = TRUE)
gg <- att.mapv(gg, quakes, refcol = 0)

pal <- brewer.pal(9, "Greens")
gg <- att.setv(gg, from = "mag", to = "nodeColor",
                        cols = pal, nquant = 10)

gg <- att.setv(gg, from = "depth", to = "nodeSize",
                        xlim = c(240, 880, 1), nquant = 5)


## ---- eval = FALSE------------------------------------------------------------
#  rdp <- RedPort()
#  calld(rdp)
#  resetd(rdp)

## ---- eval = FALSE------------------------------------------------------------
#  treeAndLeaf(rdp, gg)
#  addLegend.color(obj = rdp,
#                          gg,
#                          title = "Richter Magnitude")
#  addLegend.size(obj = rdp,
#                          gg,
#                          title = "Depth (km)")

## -----------------------------------------------------------------------------
library(geneplast)
data("gpdata.gs")
plot(phyloTree)

## -----------------------------------------------------------------------------
data("spdata")

## -----------------------------------------------------------------------------
#Accessory indexing
idx <- match(as.numeric(spdata$tax_id), as.numeric(phyloTree$tip.label))
idx <- idx[!is.na(idx)]
tokeep <- phyloTree$tip.label[idx]
phyloTree$tip.label <- as.character(phyloTree$tip.label)

#Remaking the tree
pruned.tree <- 
    drop.tip(phyloTree,phyloTree$tip.label[-match(tokeep,
                                                        phyloTree$tip.label)])

## -----------------------------------------------------------------------------
tal.phylo <- phylo2igraph(pruned.tree)

## -----------------------------------------------------------------------------
#Formatting of the graph
tal.phylo <- formatTree(tal.phylo, theme = 4)

tal.phylo <- att.mapv(g = tal.phylo, dat = spdata, refcol = 1)

tal.phylo <- att.setv(g = tal.phylo, from = "genome_size_Mb",
                                to = "nodeSize", 
                                xlim = c(120, 250, 1), nquant = 5)

pal <- brewer.pal(9, "Purples")
tal.phylo <- att.setv (g = tal.phylo, from = "proteins",
                                to = "nodeColor",
                                nquant = 5, cols = pal, na.col = "black")

## -----------------------------------------------------------------------------
#Changing the alias to show the names and making them invisible
idx <- match(V(tal.phylo)$nodeAlias, spdata$tax_id)
V(tal.phylo)$nodeAlias <- spdata$sp_name[idx]
V(tal.phylo)$nodeAlias[is.na(V(tal.phylo)$nodeAlias)] <- ""
V(tal.phylo)$nodeFontSize <- 1

#Randomly selecting some names to be shown
set.seed(9)
V(tal.phylo)$nodeFontSize[sample(
    1:length(V(tal.phylo)$nodeFontSize), 50)] <- 100
V(tal.phylo)$nodeFontSize[V(
    tal.phylo)$name == "9606"] <- 100 #Homo sapiens

## ----eval = FALSE-------------------------------------------------------------
#  #Calling RedeR and plotting
#  rdp <- RedPort()
#  calld(rdp)
#  resetd(rdp)
#  
#  treeAndLeaf(rdp, tal.phylo)
#  addLegend.size(rdp, tal.phylo, title = "Genome Size (Mb)")
#  addLegend.color(rdp, tal.phylo, title = "Protein Count")

## -----------------------------------------------------------------------------
#Loading data
data("spdata") #NCBI Genomes scraped info
data("phylo_species") #STRING-db tree metadata
data("phylo_tree") #STRING-db phylo object

#Remaking the tree with species inside spdata
idx <- match(as.numeric(spdata$tax_id), as.numeric(phylo_species$X...taxon_id))
idx <- idx[!is.na(idx)]
tokeep <- phylo_species$X...taxon_id[idx]
pruned.tree <- 
    drop.tip(phylo_tree,phylo_tree$tip.label[-match(tokeep,
                                                        phylo_tree$tip.label)])

#Converting phylo to igraph
tal.phy <- phylo2igraph(pruned.tree)

#Formatting the tree
tal.phy <- formatTree(gg = tal.phy, theme = 3)

tal.phy <- att.mapv(g = tal.phy, dat = spdata, refcol = 1)

tal.phy <- att.setv(g = tal.phy, from = "genome_size_Mb",
                            to = "nodeSize",
                            nquant = 5, xlim = c(200, 600, 1))

pal <- brewer.pal(9, "Blues")
tal.phy <- att.setv(g = tal.phy, from = "proteins", to = "nodeColor", 
                            nquant = 5, cols = pal, na.col = "black")

#Randomly selecting names to be shown
set.seed(9)
V(tal.phy)$nodeFontSize <- 1
V(tal.phy)$nodeFontSize[sample(
    1:length(V(tal.phy)$nodeFontSize), 80)] <- 300
V(tal.phy)$nodeFontSize[V(tal.phy)$name == 9606] <- 300

idx <- match(V(tal.phy)$nodeAlias, spdata$tax_id)
V(tal.phy)$nodeAlias <- spdata$sp_name[idx]
V(tal.phy)$nodeAlias[is.na(V(tal.phy)$nodeAlias)] <- ""


## ----eval = FALSE-------------------------------------------------------------
#  #Calling RedeR and plotting
#  rdp <- RedPort()
#  calld(rdp)
#  resetd(rdp)
#  
#  treeAndLeaf(rdp, tal.phy)
#  addLegend.color(rdp, tal.phy)
#  addLegend.size(rdp, tal.phy)

## ----label='Session information', eval=TRUE, echo=FALSE-----------------------
sessionInfo()

