#!/usr/bin/Rscript # Usage: std_small.R prefix params # params may include R,rSites,fStart,nGenerations,nSims library(parallel); RunStdSmall = function(prefix, params, nGenerations=20000, nSims=20, R=0, rSites=1, fStart=0.2) { if (is.null(params$R)) params$R = R; if (is.null(params$rSites)) params$rSites = rSites; if (is.null(params$nGenerations)) params$nGenerations = nGenerations; if (is.null(params$fStart)) params$fStart = fStart; if (!is.null(params$nSims)) { nSims = params$nSims; params$nSims = NULL; } params$N = 5e3; params$nsites = 1e3; params$u = 4e-4; params$s = 0.02; sims = mclapply(1:nSims, function(i) { d = params; d$seed.offset=i; do.call(backselAll2, d); }); imagefile = paste(prefix,".image",sep=""); save(sims, file=imagefile); cat("Wrote ",imagefile,"\n"); means = sapply(sims, with, mean(mean[time > max(time)/2])); means = data.frame(time=sims[[1]]$time, mean=rowMeans(sapply(sims,with,mean)), se_mean = sd(means)/sqrt(length(means)), # constant divNeutral=rowMeans(sapply(sims,with,divNeutral)), div=rowMeans(sapply(sims,with,div)), sd=rowMeans(sapply(sims,with,sd))); tabfile = paste(prefix,".tab",sep=""); write.table(means, tabfile, quote=F, sep="\t", row.names=F); cat("Wrote ",tabfile,"\n"); } if (!interactive()) { source("sweeps.R"); args = commandArgs(trailingOnly=TRUE); if (length(args) != 2) stop("Usage: std_small.R prefix parameterlist\n", " parameters may include R,rSites,fStart,nGenerations,nSims\n"); options(mc.cores=20,width=120); params = eval(parse(text=paste("list(",args[2],")"))); sink(paste(args[1],".log",sep="")); print(unlist(params)); RunStdSmall(args[1], params); sink(); }