-
Notifications
You must be signed in to change notification settings - Fork 0
/
plot_IBD_boxplot.R
102 lines (87 loc) · 1.97 KB
/
plot_IBD_boxplot.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/usr/bin/env Rscript
.add.label.to.IBD <-
function(IBD, metadata, label.col, by.col = "Sample") {
metadata <- metadata[, c(by.col, label.col)]
IBD <- merge(
IBD,
metadata,
by.x = paste0(by.col, 1),
by.y = by.col,
all.x = TRUE,
sort = FALSE
)
colnames(IBD)[length(IBD)] <- paste0(label.col, 1)
IBD <- merge(
IBD,
metadata,
by.x = paste0(by.col, 2),
by.y = by.col,
all.x = TRUE,
sort = FALSE
)
colnames(IBD)[length(IBD)] <- paste0(label.col, 2)
IBD
}
plot.IBD.distribution <-
function(y,
x,
data,
filename,
col = NULL,
width = 2160,
height = 2160,
res = 300) {
formula <- as.formula(paste(y, "~", x))
if (is.null(col))
col <- "lightgray"
png(
filename = boxplot.file,
width = width,
height = height,
res = res,
type = "cairo"
)
# initialise plot
boxplot(
formula,
data = data,
xlab = x,
ylab = y,
col = NA
)
# plot jitters
stripchart(
formula,
data = data,
method = "jitter",
jitter = 0.4,
vertical = TRUE,
pch = 16,
col = col,
add = TRUE,
axes = FALSE
)
# add box on top
boxplot(formula,
data = data,
col = NA,
add = TRUE)
dev.off()
}
synchronise.data <-
function(IBD,
metadata,
pair1.col = "sample1",
pair2.col = "sample2",
sample.col = "Sample") {
IBD[IBD[, pair1.col] %in% metadata[, sample.col] &
IBD[, pair2.col] %in% metadata[, sample.col], ]
}
synchronise.metadata <-
function(metadata,
IBD,
pair1.col = "sample1",
pair2.col = "sample2",
sample.col = "Sample") {
metadata[metadata[, sample.col] %in% c(IBD[, pair1.col], IBD[, pair2.col]), ]
}