Skip to content

Commit

Permalink
Merge branch 'main' of github.com:uclahs-cds/package-CancerEvolutionV…
Browse files Browse the repository at this point in the history
…isualization into danknight-news-md
  • Loading branch information
dan-knight committed Jul 31, 2024
2 parents c1dcb67 + 2424b79 commit 5dd6a7c
Show file tree
Hide file tree
Showing 7 changed files with 108 additions and 292 deletions.
6 changes: 2 additions & 4 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Package: CancerEvolutionVisualization
Title: Publication Quality Phylogenetic Tree Plots
Version: 2.1.1
Date: 2024-07-30
Version: 2.1.0
Date: 2024-07-31
Authors@R: c(
person("Paul Boutros", role = "cre", email = "[email protected]"),
person("Adriana Salcedo", role = "aut"),
Expand All @@ -19,10 +19,8 @@ Depends:
gridExtra,
gtable,
Imports:
plyr,
grDevices,
utils,
stringr,
BoutrosLab.plotting.general
Suggests:
testthat,
Expand Down
2 changes: 0 additions & 2 deletions NAMESPACE
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
import(grid)
import(gridExtra)
import(gtable)
import(plyr)
import(BoutrosLab.plotting.general)

importFrom("graphics", "par", "strheight", "strwidth")
importFrom("grDevices", "dev.list", "rainbow")
importFrom("utils", "read.table", "vi", "head")
importFrom("stringr", "str_replace_all")
importFrom("stats", "setNames", "aggregate", "reshape")
importFrom("grDevices", "col2rgb")

Expand Down
8 changes: 7 additions & 1 deletion NEWS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# CancerEvolutionVisualization 2.1.0 (2024-07-30)
# CancerEvolutionVisualization 2.1.0 (2024-07-31)

## Added
* Optional "spread" column to control node/branch spacing
Expand All @@ -9,8 +9,14 @@
* Fixed angle calculation bug where child angles do not follow
their parent angle, instead moving "downward" at 0 degrees.
* Updated package metadata and README
<<<<<<< HEAD:NEWS.md
* Set default parameters for heatmaps, defaulting too BPG defaults unless necessary
* Updated changelog format to NEWS.md Markdown format
=======
* Refactored use of plyr/dplyr and stringr functions to remove dependencies
* Set default parameters for heatmaps, defaulting to BPG defaults unless necessary

>>>>>>> 2424b7934e815dcc02cce5482c1b1c16bf319a09:NEWS

# CancerEvolutionVisualization 2.0.1 (2023-11-17)
Expand Down
190 changes: 39 additions & 151 deletions R/add.segs.R
Original file line number Diff line number Diff line change
@@ -1,99 +1,3 @@
add.segs3 <- function(
tree,
v,
offset = 0,
node.radius = 0,
scale.x.real = NULL
) {

# Calculate offset based on line width
offset <- offset / scale.x.real / 2;

tree.segs.adjusted <- tree.segs <- adply(
tree,
.margins = 1,
.fun = function(x) {
if (x$parent == -1) {
basey <- 0;
basex <- 0;
} else {
basey <- v$y[v$id == x$parent];
basex <- v$x[v$id == x$parent];
}

tipy <- basey + x$length1 * cos(x$angle);
tipx <- basex + x$length1 * sin(x$angle);

return(data.frame(basex, basey, tipx, tipy));
}
);

tree.out <- list();

second.tree.segs.adjusted <- NULL;

if (length(grep('length', colnames(tree))) == 4) {
tree.segs.adjusted <- adply(
tree.segs,
.margins = 1,
.fun = function(r) {
offset.x <- offset * cos(r$angle);
offset.y <- offset * sin(r$angle);

if (r$angle > 0) {
basey <- r$basey + offset.y;
tipy <- r$tipy + offset.y;
} else {
basey <- r$basey + offset.y;
tipy <- r$tipy + offset.y;
}

basex <- r$basex - offset.x;
tipx <- r$tipx - offset.x;

return(data.frame(basex, basey, tipx, tipy));
}
);

tree.segs.adjusted <- tree.segs.adjusted[which(!(tree.segs.adjusted$basey == tree.segs.adjusted$tipy & tree.segs.adjusted$basex == tree.segs.adjusted$tipx)), ]

second.tree.segs <- tree.segs;
second.tree.segs$tipy <- second.tree.segs$basey + second.tree.segs$length2.c * cos(second.tree.segs$angle);
second.tree.segs$tipx <- second.tree.segs$basex + second.tree.segs$length2.c * sin(second.tree.segs$angle);

second.tree.segs.adjusted <- adply(
second.tree.segs,
.margins = 1,
.fun = function(r) {
offset.x <- offset * cos(r$angle);
offset.y <- offset * sin(r$angle);

if (r$angle > 0) {
basey <- r$basey - offset.y;
tipy <- r$tipy - offset.y;
} else {
basey <- r$basey - offset.y;
tipy <- r$tipy - offset.y;
}

basex <- r$basex + offset.x;
tipx <- r$tipx + offset.x;

return(data.frame(basex, basey, tipx, tipy));
}
);

second.tree.segs.adjusted <- second.tree.segs.adjusted[which(!(second.tree.segs.adjusted$basey == second.tree.segs.adjusted$tipy & second.tree.segs.adjusted$basex == second.tree.segs.adjusted$tipx)),]
}

tree.out <- list(
tree.segs = tree.segs.adjusted,
tree.segs2 = second.tree.segs.adjusted
);

return(tree.out);
}

get.seg.coords <- function(
tree,
v,
Expand All @@ -105,78 +9,62 @@ get.seg.coords <- function(
# Calculate offset based on the line width
offset <- offset / scale1 / 2;

tree.segs <- adply(
tree.segs <- apply(
tree,
.margins = 1,
.fun = function(x) {
if (x$parent == -1) {
MARGIN = 1,
FUN = function(x) {
if (x['parent'] == -1) {
basey <- 0;
basex <- 0;
} else {
basey <- v$y[v$id == x$parent];
basex <- v$x[v$id == x$parent];
basey <- v$y[v$id == x['parent']];
basex <- v$x[v$id == x['parent']];
}

tipy <- basey + x$length1 * cos(x$angle);
tipx <- basex + x$length1 * sin(x$angle);
tipy <- basey + x['length1'] * cos(x['angle']);
tipx <- basex + x['length1'] * sin(x['angle']);

return(data.frame(basex, basey, tipx, tipy));
data.frame(
basex = basex,
basey = basey,
tipx = tipx,
tipy = tipy
);
}
);
tree.segs <- as.data.frame(do.call('rbind', tree.segs));
rownames(tree.segs) <- rownames(tree);
tree.segs <- cbind(tree, tree.segs);

tree.out <- list();
second.tree.segs.adjusted <- NULL;

tree.segs.adjusted <- adply(
tree.segs,
.margins = 1,
.fun = function(r) {
offset.x <- offset * cos(r$angle);
offset.y <- offset * sin(r$angle);

if (r$angle > 0) {
basey <- r$basey + offset.y;
tipy <- r$tipy + offset.y;
} else {
basey <- r$basey + offset.y;
tipy <- r$tipy + offset.y;
}

basex <- r$basex - offset.x;
tipx <- r$tipx - offset.x;
tree.segs.adjusted <- tree.segs;
offset.x <- offset * cos(tree.segs.adjusted$angle);
offset.y <- offset * sin(tree.segs.adjusted$angle);

return(data.frame(basex, basey, tipx, tipy));
}
);
tree.segs.adjusted$basey <- tree.segs.adjusted$basey + offset.y;
tree.segs.adjusted$tipy <- tree.segs.adjusted$tipy + offset.y;
tree.segs.adjusted$basex <- tree.segs.adjusted$basex - offset.x;
tree.segs.adjusted$tipx <- tree.segs.adjusted$tipx - offset.x;

if (length(grep('length',colnames(tree))) == 4) {
second.tree.segs <- tree.segs;
second.tree.segs$tipy <- second.tree.segs$basey + second.tree.segs$length2.c * cos(second.tree.segs$angle);
second.tree.segs$tipx <- second.tree.segs$basex + second.tree.segs$length2.c * sin(second.tree.segs$angle);


second.tree.segs.adjusted <- adply(
second.tree.segs,
.margins = 1,
.fun = function(r) {
offset.x <- offset * cos(r$angle);
offset.y <- offset * sin(r$angle);

if (r$angle > 0) {
basey <- r$basey - offset.y;
tipy <- r$tipy - offset.y;
} else {
basey <- r$basey - offset.y;
tipy <- r$tipy - offset.y;
}

basex <- r$basex + offset.x;
tipx <- r$tipx + offset.x;

return(data.frame(basex, basey, tipx, tipy));
}
second.tree.segs.adjusted <- tree.segs;
second.tree.segs.adjusted$tipy <- (
second.tree.segs.adjusted$basey
+ second.tree.segs.adjusted$length2.c
* cos(second.tree.segs.adjusted$angle)
);
second.tree.segs.adjusted$tipx <- (
second.tree.segs.adjusted$basex
+ second.tree.segs.adjusted$length2.c
* sin(second.tree.segs.adjusted$angle)
);

second.tree.segs.adjusted$basey <- second.tree.segs.adjusted$basey - offset.y;
second.tree.segs.adjusted$tipy <- second.tree.segs.adjusted$tipy - offset.y;
second.tree.segs.adjusted$basex <- second.tree.segs.adjusted$basex + offset.x;
second.tree.segs.adjusted$tipx <- second.tree.segs.adjusted$tipx + offset.x;

second.tree.segs.adjusted <- second.tree.segs.adjusted[
which(second.tree.segs.adjusted$basey != second.tree.segs.adjusted$tipy), ];
}
Expand Down
Loading

0 comments on commit 5dd6a7c

Please sign in to comment.