setMethod( "nrow", signature(x = "branchmodel"), function(x) {return(nrow(x@raw_data))} ) setMethod( "ncol", signature(x = "branchmodel"), function(x) {return(ncol(x@raw_data))} )
show
ing, and manipulation# # Show only the dimensions of the data and the centers/tips setMethod("show", signature = signature(object = "branchmodel"), definition = function( object ) { cat("An object of class ", class(object), "\n", sep = "") cat(" ", ncol(object), " variables and ", nrow(object), " samples.\n", sep = "") cat("Centered at: \n", paste( object@center, collapse = ", "), "\n", sep = "") cat("Branch tips: \n"); print( object@tips ) invisible(NULL) }) #' Plot the data and the branchmodel object on a scatterplot (returned ggplot2 plot). #' #' Currently just plots the first two variables. #' Eventually might switch to plotting a projection onto a cleverly chosen plane. #' @export plot_branchmodel = function( branchmodel, main = "" ){ # Plot the points par = as.data.frame( rbind( branchmodel@center, branchmodel@tips) ) embedding = branchmodel@raw_data[, 1:2] names( par ) = names(embedding) = colnames(branchmodel@raw_data) p = ggplot2::ggplot( ) + ggplot2::ggtitle( main ) + ggplot2::geom_point(data = cbind( embedding, branch = branchmodel@assignments ), aes_string( x = colnames(branchmodel@raw_data)[1], y = colnames(branchmodel@raw_data)[2], colour = "factor( branch )" ) ) + ggplot2::geom_point( aes_string( x = colnames(branchmodel@raw_data)[1], y = colnames(branchmodel@raw_data)[2]), colour = "black", data = par) p = p + scale_color_manual( values = c("grey", scales::hue_pal()(3))) # Early in the iteration, this function might get called on a branchmodel with the @models slot not filled yet. if(length(branchmodel@models) != 3){ return(p) } # Add the branch models as lines. pc_to_plot = c() for( i in 1:3){ pc = branchmodel@models[[i]] data_i = data.frame( pc$s[pc$tag, 1:2] ) data_i = cbind(data_i, branch = i) pc_to_plot = rbind( pc_to_plot, data_i) } p = p + ggplot2::geom_line ( aes_string( x = colnames(branchmodel@raw_data)[1], y = colnames(branchmodel@raw_data)[2], colour = "factor( branch )", group = "factor( branch )" ), data = pc_to_plot ) return(p) } # # Subset the data. setGeneric( "subset", function( branchmodel, index_keep ) standardGeneric( "subset" ) ) setMethod( "subset", valueClass = "branchmodel", signature = signature( branchmodel = "branchmodel", index_keep = "integer"), function ( branchmodel, index_keep ){ branchmodel@raw_data = branchmodel@raw_data [ index_keep, ] branchmodel@dist_df = branchmodel@dist_df [ index_keep, ] branchmodel@assignments = branchmodel@assignments[ index_keep ] assertthat::assert_that( get_issues( branchmodel ) == "") return(branchmodel) })
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.