## ---- eval=TRUE, warning=FALSE, message=FALSE---------------------------------
# Load required packages
library(alakazam)
library(igraph)
library(dplyr)

# Select a clone from the example database
data(ExampleDb)
sub_db <- subset(ExampleDb, clone_id == 3138)

## ---- eval=TRUE---------------------------------------------------------------
# This example data set does not have ragged ends
# Preprocess clone without ragged end masking (default)
clone <- makeChangeoClone(sub_db, text_fields=c("sample_id", "c_call"), 
                          num_fields="duplicate_count")

# Show combined annotations
clone@data[, c("sample_id", "c_call", "duplicate_count")]

## ---- eval=FALSE--------------------------------------------------------------
#  # Run PHYLIP and parse output
#  phylip_exec <- "~/apps/phylip-3.69/dnapars"
#  graph <- buildPhylipLineage(clone, phylip_exec, rm_temp=TRUE)

## ---- echo=FALSE, warning=FALSE, message=FALSE--------------------------------
# Load data instead of running phylip
# Clone 3138 is at index 23
graph <- ExampleTrees[[23]]

## ---- eval=TRUE, warning=FALSE, message=FALSE---------------------------------
# The graph has shared annotations for the clone
data.frame(clone_id=graph$clone,
           junction_length=graph$junc_len,
           v_gene=graph$v_gene,
           j_gene=graph$j_gene)

# The vertices have sequence specific annotations
data.frame(sequence_id=V(graph)$name, 
           c_call=V(graph)$c_call,
           duplicate_count=V(graph)$duplicate_count)

## ---- eval=TRUE---------------------------------------------------------------
# Plot graph with defaults
plot(graph)

## ---- eval=TRUE---------------------------------------------------------------
# Modify graph and plot attributes
V(graph)$color <- "steelblue"
V(graph)$color[V(graph)$name == "Germline"] <- "black"
V(graph)$color[grepl("Inferred", V(graph)$name)] <- "white"
V(graph)$label <- V(graph)$c_call
E(graph)$label <- ""

# Remove large default margins
par(mar=c(0, 0, 0, 0) + 0.1)
# Plot graph
plot(graph, layout=layout_as_tree, edge.arrow.mode=0, vertex.frame.color="black",
     vertex.label.color="black", vertex.size=40)
# Add legend
legend("topleft", c("Germline", "Inferred", "Sample"), 
       fill=c("black", "white", "steelblue"), cex=0.75)

## ---- eval=TRUE, warning=FALSE, results="hide"--------------------------------
# Preprocess clones
clones <- ExampleDb %>%
    group_by(clone_id) %>%
    do(CHANGEO=makeChangeoClone(., text_fields=c("sample_id", "c_call"), 
                                num_fields="duplicate_count"))

## ---- eval=FALSE--------------------------------------------------------------
#  # Build lineages
#  phylip_exec <- "~/apps/phylip-3.69/dnapars"
#  graphs <- lapply(clones$CHANGEO, buildPhylipLineage,
#                   phylip_exec=phylip_exec, rm_temp=TRUE)

## ---- echo=FALSE, warning=FALSE, message=FALSE--------------------------------
# Load data instead of running phylip
graphs <- ExampleTrees

## ---- eval=TRUE---------------------------------------------------------------
# Note, clones with only a single sequence will not be processed.
# A warning will be generated and NULL will be returned by buildPhylipLineage
# These entries may be removed for clarity
graphs[sapply(graphs, is.null)] <- NULL

# The set of tree may then be subset by node count for further 
# analysis, if desired.
graphs <- graphs[sapply(graphs, vcount) >= 5]

## ---- eval=TRUE, show=FALSE---------------------------------------------------
# Modify graph and plot attributes
V(graph)$color <- categorical_pal(8)[1]
V(graph)$label <- V(graph)$name
E(graph)$label <- E(graph)$weight

## ---- eval=TRUE, warning=FALSE, message=FALSE---------------------------------
# Convert to phylo
phylo <- graphToPhylo(graph)

# Plot using ape
plot(phylo, show.node.label=TRUE)

## ---- eval=FALSE--------------------------------------------------------------
#  # Read in Newick tree as phylo object
#  phylo <- ape::read.tree("example.tree")
#  
#  # Write tree file in Newick format
#  ape::write.tree(phylo, file="example.tree")

## ---- eval=TRUE---------------------------------------------------------------
# Convert to graph object
graph <- phyloToGraph(phylo, germline="Germline")

