View source: R/Elston-parallel.r
| Likelihood | R Documentation |
Compute the log-likelihood of a parameter theta, given a list of pedigrees and a modele, using multiple cores and memoization
Likelihood(ped.set, modele, theta,
n.cores = getOption("mc.cores", 2L),
optim.alloc = TRUE, sum.likelihoods = TRUE,
PSOCK = Sys.info()["sysname"] != "Linux")
ped.set |
a list of pedigrees, each created with |
modele |
a modele |
theta |
a parameter for the modele |
n.cores |
number of cores on which to run the computation |
optim.alloc |
cf Details |
sum.likelihoods |
cf Value |
PSOCK |
Use PSOCK cluster instead of fork cluster (defaults to |
The parameter theta will be given to the functions in modele to compute the likelihoods.
If n.cores > 1 a cluster is created and left open for futur use with
the same parameters ped.set and modele. Open clusters can be closed
with es.stopCluster().
If optim.alloc = TRUE, the function tries to optimize the distribution of
the computation (if n.cores > 1) between the cluster nodes. This has no effect on the first run
for given parameters ped.set and modele, but will reduce running time if the algorithm is ran several times
with different values of theta and same parameters ped.set and modele.
This is typically usefull for likelihood maximization.
If sum.likelihoods = TRUE, the function returns a single value, the sum of the
log-likelihoods computed for each pedigree of ped.set. Else, the function
returns a vector containing these log-likelihoods.
Elston, es.pedigree, es.stopCluster
data(fams)
# this data frame contains various families
# getting their famid
fam.ids <- unique(fams$fam);
# creating a list of genotypes corresponding to all individuals in fams
# NA -> 0, 1 or 2
genotypes <- lapply( fams$genotype, function(x) if(is.na(x)) 0:2 else x )
# creating a list of es.pedigree objects
X <- vector("list", length(fam.ids))
for(i in seq_along(fam.ids))
{
w <- which(fams$fam == fam.ids[i])
X[[i]] <- es.pedigree( id = fams$id[w], father = fams$father[w],
mother = fams$mother[w], sex = fams$sex[w], pheno = rep(0, length(w)),
geno = genotypes[w], famid = fam.ids[i] )
}
## Not run: # computing the likelihood for a single value p
Likelihood(X, modele.di, theta = list( p=0.5), n.cores=1 )
# computing the likelihood for a vector p (Elston-Stewart is ran only once!)
p <- seq(0,1,length=501)
L <- Likelihood(X, modele.di, theta = list( p=p ), n.cores=1 )
plot( p, exp(L), type="l")
# running an optimization algorithm
# Elston-Stewart is ran several times
# here we run the algorithm with 2 cores
L <- function(p) -Likelihood(X, modele.di, theta = list( p=p ), n.cores=2 )
optimize(L , c(0.35,0.45) )
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.