Skip to content

Commit 17a39cb

Browse files
committed
auto-commit
1 parent 686715b commit 17a39cb

File tree

10 files changed

+458
-0
lines changed

10 files changed

+458
-0
lines changed

parallelisation/check-screens.r

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
rm(list=ls())
2+
source('parallel-pars.r')
3+
4+
load('cores_alloc.rdata')
5+
comps <- unique(cores_alloc$comp)
6+
7+
cp <- comps[1]
8+
9+
for (cp in comps)
10+
{
11+
cat('*****', cp,'\n')
12+
cmd <- sprintf('ssh -A %s@%s "cd dragonfly/%s/%s; tail screenlog.0"', user, cp, projectname, runfold)
13+
cat(cmd,'\n')
14+
system(cmd, wait=T)
15+
cat('\n\n')
16+
}
17+
18+
cat('Done.\n\n')
19+

parallelisation/compile-functions.r

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
rm(list=ls())
2+
3+
library(compiler)
4+
enableJIT(3)
5+
6+
library(popbio)
7+
library(stats)
8+
9+
setwd('~/dragonfly/sra-foundations/modelling/bh-dd-k50')
10+
11+
is.compile <- function(func)
12+
{
13+
## this function lets us know if a function has been byte-coded or not
14+
##If you have a better idea for how to do this - please let me know...
15+
if(class(func) != "function") stop("You need to enter a function")
16+
last_2_lines <- tail(capture.output(func),2)
17+
any(grepl("bytecode:", last_2_lines)) # returns TRUE if it finds the text "bytecode:" in any of the last two lines of the function's print
18+
}
19+
20+
## source('functions.r')
21+
cmpfile('functions.r', 'functions_cmp.r')
22+
cmpfile('functions-model.r', 'functions-model_cmp.r')
23+
24+
25+
## rm(list=ls())
26+
## source('functions.r')
27+
## funs1 <- ls()
28+
## save(funs1, file='funs1.rdata')
29+
30+
## rm(list=ls())
31+
## source('functions-model.r')
32+
## funs2 <- ls()
33+
## save(funs2, file='funs2.rdata')
34+
35+
## rm(list=ls())
36+
## load('funs1.rdata')
37+
## load('funs2.rdata')
38+
39+
## funs1[funs1 %in% funs2]
40+
## funs2[funs2 %in% funs1]

parallelisation/gather-results.r

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
### Fetch results from all computers ###
2+
##########################################
3+
4+
rm(list=ls())
5+
library(compiler)
6+
7+
basefold <- '~/dragonfly/sra-foundations/modelling/bh-dd-k50/'
8+
setwd(basefold)
9+
10+
source('parallel-pars.r')
11+
## source('functions.r')
12+
loadcmp('functions_cmp.r')
13+
14+
load(datafile)
15+
16+
load('cores_alloc.rdata')
17+
othercomps <- unique(cores_alloc$comp[!(cores_alloc$comp %in% thiscomp)])
18+
19+
c=othercomps[1]
20+
for (c in othercomps)
21+
{
22+
fold <- sprintf('%s-%s', outputfold, c)
23+
dir.create(fold, showWarnings=F)
24+
## Mount results from other computers
25+
if (!length(dir(fold)))
26+
system(sprintf('sshfs %s:/home/%s/dragonfly/%s/%s/%s %s',
27+
c, user, projectname, runfold, outputfold, fold))
28+
}
29+
30+
31+
resi <- NULL
32+
resf <- NULL
33+
34+
folds <- c(outputfold, sprintf('%s-%s', outputfold, othercomps))
35+
for (d in folds) # d='results-taiko' # d='results'
36+
{
37+
cat('\nMerging files in', d, '...\n')
38+
setwd(sprintf('%s%s', basefold, d))
39+
40+
inter <- dir(pattern='.*pars1-steps.*..rdata')
41+
fin <- dir(patter='.*pars-steps.*..rdata')
42+
43+
for (f in inter) # f=inter[1]
44+
{
45+
load(f)
46+
resi <- rbind2(resi, pars1)
47+
}
48+
49+
for (f in fin) # f=fin[2]
50+
{
51+
load(f)
52+
resf <- rbind2(resf, pars)
53+
}
54+
}
55+
56+
57+
setwd(basefold)
58+
59+
## Unmount other computers
60+
for (c in othercomps) # c='frank'
61+
{
62+
fold <- sprintf('%s-%s', outputfold, c)
63+
system(sprintf('fusermount -u %s', fold))
64+
unlink(fold, recursive=T)
65+
}
66+
67+
allresdir <- sprintf('%sall-results', basefold)
68+
dir.create(allresdir, showWarnings=F)
69+
setwd(allresdir)
70+
71+
72+
## Merge intermediate and final results
73+
resi2 <- resi[!(resi$row %in% resf$row),] # remove finished rows from intermediate results
74+
res <- rbind(resi2, resf)
75+
76+
res <- res[order(res$row),]
77+
78+
79+
80+
## Check missing rows and summarise
81+
missingrows <- dem$row[!(dem$row %in% res$row)]
82+
if (length(missingrows))
83+
{
84+
mr <- as.numeric(missingrows)
85+
mseq <- collapseseq(mr)
86+
cat(sprintf('\n%i missing sequences (%i rows):\n', length(mseq$n), length(mr)))
87+
df <- data.frame(seq=mseq$seq, n=mseq$n, row.names=1:length(mseq$n))
88+
print(df)
89+
save(df, file='missing-rows_df.rdata')
90+
}
91+
92+
cat(sprintf('\n%i rows done (%i duplicates) after merging intermediates and final results.
93+
Details:', nrow(res), sum(duplicated(res$row))),'\n')
94+
print(table(res$species))
95+
96+
if ('pbr0' %in% names(res))
97+
cat(sprintf('\n%i PBR values (%0.1f%%) already calculated.\n', sum(!is.na(res$pbr0)),
98+
100*sum(!is.na(res$pbr0))/nrow(res))) else
99+
cat('\nNo PBR values already calculated.\n')
100+
101+
102+
### Save appended results
103+
res <- res[order(res$row),]
104+
105+
setwd(allresdir)
106+
save(res, file='results_res.rdata')
107+
108+
109+
110+
111+
112+

parallelisation/gitsync.r

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
rm(list=ls())
2+
source('../pars_parallel.r')
3+
4+
load('cores_alloc.rdata')
5+
comps <- unique(cores_alloc$comp)
6+
comps <- comps[!(comps %in% thiscomp)]
7+
8+
cp <- comps[1]
9+
10+
for (cp in comps)
11+
{
12+
cat('*****', cp,'\n')
13+
cmd <- sprintf('ssh -A %s@%s "cd %s/%s; git pull"', user, cp, basefold, projectname)
14+
cat(cmd,'\n')
15+
system(cmd, wait=T)
16+
cat('\n\n')
17+
}
18+
19+
cat('Done.\n\n')

parallelisation/kill-all-r.r

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
rm(list=ls())
2+
source('parallel-pars.r')
3+
4+
load('cores_alloc.rdata')
5+
comps <- unique(cores_alloc$comp)
6+
7+
cp <- comps[1]
8+
9+
for (cp in comps)
10+
{
11+
cat('*****', cp,'\n')
12+
cmd <- sprintf('ssh -A %s@%s "killall R -u %s"', user, cp, user)
13+
cat(cmd,'\n')
14+
system(cmd, wait=T)
15+
cat('\n\n')
16+
}
17+
18+
cat('Done.\n\n')
19+

parallelisation/kill-all-screens.r

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
rm(list=ls())
2+
source('parallel-pars.r')
3+
4+
load('cores_alloc.rdata')
5+
comps <- unique(cores_alloc$comp)
6+
7+
cp <- comps[1]
8+
9+
for (cp in comps)
10+
{
11+
cat('*****', cp,'\n')
12+
cmd <- sprintf('ssh -A %s@%s "killall -u %s screen"', user, cp, user)
13+
cat(cmd,'\n')
14+
system(cmd, wait=T)
15+
cat('\n\n')
16+
}
17+
18+
cat('Done.\n\n')
19+

parallelisation/parallel-pars.r

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
2+
user <- 'yvan'
3+
thiscomp <- 'robin'
4+
5+
ca <- data.frame(comp = c('robin', 'tieke', 'leon', 'frank', 'taiko'),
6+
cores = c( 5 , 5 , 5 , 4 , 5 ),
7+
weight= c( 1 , 1.1 , 1 , 1 , 1.2 ),
8+
stringsAsFactors=F
9+
)
10+
11+
12+
datafile <- '../init-samples/all-results/all-good-samples-bh_dem.rdata'
13+
dataname <- 'dat' # name of data frame
14+
rowidcol <- 'row'
15+
16+
## For makefiles
17+
projectname <- 'projectx'
18+
runfold <- 'modelling/calc' # where the run file is, relatively to project base folder
19+
runfile <- 'run1.r' # file to run job on each slice, needs to take sequence of ids as txt in arguments
20+
outputfold <- 'results' # relatively to runfold
21+
outputbasename <- 'slice' # slice seq and .rdata will be appended to it
22+
allresfold <- 'all-results'
23+
24+
sources <- NULL
25+
libs <- NULL
26+
deps <- NULL
27+
## sources <- 'functions.r'
28+
## libs <-
29+
## deps <- c('functions-model.r', 'functions.r') # dependencies in runfold

parallelisation/park-prev.r

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
rm(list=ls())
2+
source('../pars_parallel.r')
3+
4+
fls <- dir(sprintf('%s/%s', basefold, projectname))
5+
6+
comps <- ca$comp
7+
8+
timeflag <- format(Sys.time(), '%y%m%d-%H%M')
9+
10+
cp <- comps[1]
11+
for (cp in comps)
12+
{
13+
cat('\n*** Parking ', cp, '... \n', sep='')
14+
15+
## results
16+
f <- sprintf('%s/%s/%s/%s', basefold, projectname, runfold, outputfold)
17+
a <- suppressWarnings(system(sprintf('ssh -A %s@%s "ls -d %s" 2>&1', user, cp, f), intern=T))
18+
if (!grepl('^ls:',a))
19+
{
20+
cmd <- sprintf('ssh -A %s@%s "cd %s/%s/%s; mv %s %s_%s"', user, cp,
21+
basefold, projectname, runfold, outputfold, outputfold, timeflag); cat(cmd,'\n')
22+
system(cmd, wait=T)
23+
} else cat(sprintf('!!! Folder %s does not exist on %s. Skip...\n', f, cp))
24+
25+
26+
## all-results
27+
f <- sprintf('%s/%s/%s/%s', basefold, projectname, runfold, allresfold)
28+
a <- suppressWarnings(system(sprintf('ssh -A %s@%s "ls -d %s" 2>&1', user, cp, f), intern=T))
29+
if (!grepl('^ls:',a))
30+
{
31+
cmd <- sprintf('ssh -A %s@%s "cd %s/%s/%s; mv %s %s_%s"', user, cp,
32+
basefold, projectname, runfold, allresfold, allresfold, timeflag); cat(cmd,'\n')
33+
system(cmd, wait=T)
34+
} else cat(sprintf('!!! Folder %s does not exist on %s. Skip...\n', f, cp))
35+
36+
cat('Done.\n\n')
37+
}
38+
39+
if (length(warnings()))
40+
print(warnings())
41+

0 commit comments

Comments
 (0)