|
#!/usr/bin/env Rscript --vanilla
|
|
USAGE ="Usage: similarity2MDS CSVFILE OUTFILE
|
|
Take a tab delimited csv file with similarity matrix data and output a pdf with
|
|
2D MDS. The similarity matrix may be square or lower triangular
|
|
"
|
|
library(ggplot2)
|
|
library(ggrepel)
|
|
|
|
args <- commandArgs(TRUE)
|
|
if (any(grep("^(--help|-h)$", args), is.na(args[1]))){
|
|
cat(USAGE)
|
|
quit("no", 1)
|
|
}
|
|
stopifnot(length(args) == 2)
|
|
|
|
data.sim <- as.dist(read.delim(args[[1]], row.names=1, header=TRUE))
|
|
data.dist <- 1 - (data.sim/max(data.sim))
|
|
fit <- as.data.frame(cmdscale(data.dist, k=2))
|
|
names(fit) <- c("x", "y")
|
|
pdf(args[[2]], width=7, height=7)
|
|
ggplot(data=fit) + geom_point(aes(x, y, size=3)
|
|
) + geom_text_repel(
|
|
aes(x, y, label=rownames(fit)),
|
|
segment.color="blue",
|
|
arrow = arrow(length = unit(0.01, 'npc'),
|
|
angle=15,
|
|
type='closed'),
|
|
box.padding = unit(0.3, "lines"),
|
|
point.padding = unit(1.0, "lines")
|
|
) + theme(legend.position = "none",
|
|
axis.title.x = element_blank(),
|
|
axis.title.y = element_blank(),
|
|
panel.grid.minor=element_blank(),
|
|
panel.grid.major=element_blank()
|
|
)
|
|
dev.off()
|
|
|
|
# If you're using MacOSX, the following line will automatically open the plot once it's made
|
|
# system(paste("open", args[[2]]))
|