Skip to content

Commit 5bce63f

Browse files
committed
add R to truvari interactive docker
1 parent d0f7ead commit 5bce63f

2 files changed

Lines changed: 137 additions & 0 deletions

File tree

truvari/5.4.0/Dockerfile

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,29 @@ RUN apt-get update && \
3333
apt-get -y autoremove && \
3434
rm -rf /var/lib/apt/lists/*
3535

36+
ARG R_VERSION=4.5.1
37+
ARG OS_IDENTIFIER=deb-12
38+
39+
RUN wget https://cdn.posit.co/r/${OS_IDENTIFIER}/pkgs/r-${R_VERSION}_1_amd64.deb && \
40+
apt-get update -qq && \
41+
DEBIAN_FRONTEND=noninteractive apt-get install -f -y ./r-${R_VERSION}_1_amd64.deb && \
42+
ln -s /opt/R/${R_VERSION}/bin/R /usr/bin/R && \
43+
ln -s /opt/R/${R_VERSION}/bin/Rscript /usr/bin/Rscript && \
44+
ln -s /opt/R/${R_VERSION}/lib/R /usr/lib/R && \
45+
rm r-${R_VERSION}_1_amd64.deb && \
46+
rm -rf /var/lib/apt/lists/*
47+
48+
RUN R -e "install.packages('data.table',dependencies=TRUE, repos='http://cran.rstudio.com/')"
49+
RUN R -e "install.packages('stringr',dependencies=TRUE, repos='http://cran.rstudio.com/')"
50+
RUN R -e "install.packages('ggplot2',dependencies=TRUE, repos='http://cran.rstudio.com/')"
51+
RUN R -e "install.packages('tidyverse',dependencies=TRUE, repos='http://cran.rstudio.com/')"
52+
3653
RUN conda env create -f /environment.yml && conda clean -a
3754

3855
ENV LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/opt/conda/envs/truvari/lib/
3956

4057
ENV PATH=/opt/conda/envs/truvari/bin/:${PATH}
4158

59+
COPY my_libraries.R /
60+
4261
RUN echo "source activate truvari" > ~/.bashrc

truvari/5.4.0/my_libraries.R

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
library("stringr")
2+
library("ggplot2")
3+
suppressPackageStartupMessages(library("data.table"))
4+
suppressPackageStartupMessages(library("tidyverse"))
5+
6+
srt <- function(x){sort(table(x), decreasing = TRUE)}
7+
8+
u <- function(x) {unique(x)}
9+
lu <- function(x) {length(unique(x))}
10+
11+
read <- function(x){fread(x) %>% as.data.frame()}
12+
write <- function(data, file) {write.table(x = data, file = file, quote=FALSE, row.names = FALSE, col.names = TRUE, sep="\t")}
13+
14+
seq_down <- function(x){ 1:nrow(x)}
15+
lo <- function(x){sapply(x, length)==1}
16+
ld <- function(x){sapply(x, length) %>% table}
17+
18+
adf <- function(path, header=TRUE){
19+
return(as.data.frame(fread(path, header=header)))
20+
}
21+
22+
wrapper <- function(x, ...) {
23+
paste(strwrap(x, ...), collapse = "\n")
24+
}
25+
26+
# initialize with
27+
# myMap <- HashMap$new()
28+
HashMap <- setRefClass("HashMap",
29+
fields = list(hash = "environment"),
30+
methods = list(
31+
initialize = function(...) {
32+
hash <<- new.env(hash = TRUE, parent = emptyenv(), size = 1000L)
33+
callSuper(...)
34+
},
35+
# get = function(key) { unname(base::get(key, hash)) },
36+
get = function(key) { base::get(key, hash) },
37+
put = function(key, value) { base::assign(key, value, hash) },
38+
append = function(key, appendant){
39+
if(base::exists(key, hash)){
40+
base::assign(key, base::append(unname(base::get(key, hash)) ,appendant), hash)
41+
} else {
42+
base::assign(key, appendant, hash)
43+
}
44+
},
45+
containsKey = function(key) { base::exists(key, hash) },
46+
keySet = function() { base::ls(hash) },
47+
toString = function() {
48+
keys <- ls(hash)
49+
rval <- vector("list", length(keys))
50+
names(rval) <- keys
51+
for(k in keys){
52+
# rval[[k]] <- unname(base::get(k, hash))
53+
rval[[k]] <- base::get(k, hash)
54+
}
55+
return(rval)
56+
},
57+
populate = function(dataframe, keyCol, valCol){
58+
if(is.character(keyCol) | is.character(valCol)){
59+
keyCol = colnames(dataframe)[which(colnames(dataframe) == keyCol) ]
60+
valCol = colnames(dataframe)[which(colnames(dataframe) == valCol) ]
61+
}
62+
for(i in 1:nrow(dataframe)){
63+
base::assign(dataframe[i, keyCol], dataframe[i, valCol], hash)
64+
}
65+
},
66+
populate_append = function(dataframe, keyCol, valCol){
67+
if(is.character(keyCol) | is.character(valCol)){
68+
keyCol = colnames(dataframe)[which(colnames(dataframe) == keyCol) ]
69+
valCol = colnames(dataframe)[which(colnames(dataframe) == valCol) ]
70+
}
71+
for(i in 1:nrow(dataframe)){
72+
key <- dataframe[i, keyCol]
73+
appendant <- dataframe[i, valCol]
74+
if(base::exists(key, hash)){
75+
base::assign(key, base::append(unname(base::get(key, hash)) ,appendant), hash)
76+
} else {
77+
base::assign(key, appendant, hash)
78+
}
79+
}
80+
},
81+
head = function(){
82+
keys <- utils::head(ls(hash))
83+
rval <- vector("list", length(keys))
84+
names(rval) <- keys
85+
for(k in keys){
86+
rval[[k]] <- unname(base::get(k, hash))
87+
}
88+
return(rval)
89+
},
90+
random = function(n=10){
91+
keys <- sample(ls(hash), n)
92+
rval <- vector("list", length(keys))
93+
names(rval) <- keys
94+
for(k in keys){
95+
rval[[k]] <- unname(base::get(k, hash))
96+
}
97+
return(rval)
98+
},
99+
size = function() { length(hash) },
100+
isEmpty = function() { length(hash)==0 },
101+
remove = function(key) {
102+
.self$hash[[key]] <- NULL
103+
rm(key, envir = .self$hash)},
104+
clear = function() { hash <<- new.env(hash = TRUE, parent = emptyenv(), size = 1000L) }
105+
)
106+
)
107+
108+
109+
# get
110+
"%G%" <- function(hashMap, key) {hashMap$get(key)}
111+
112+
bname <- function(file_path){
113+
lapply(file_path, function(x){
114+
temp1 <- str_split(x, "/") %>% unlist
115+
temp1[length(temp1)] %>% return
116+
}) %>% unlist %>% return
117+
}
118+

0 commit comments

Comments
 (0)