# read data
iron <- read_cross2(system.file("extdata", "iron.zip", package="qtl2"))
iron <- iron[,c(10,18,"X")]
# insert pseudomarkers into map
map <- insert_pseudomarkers(iron$gmap, step=1)
# calculate genotype probabilities
probs <- calc_genoprob(iron, map, error_prob=0.002)
# grab phenotypes and covariates; ensure that covariates have names attribute
pheno <- iron$pheno
covar <- match(iron$covar$sex, c("f", "m")) # make numeric
names(covar) <- rownames(iron$covar)
Xcovar <- get_x_covar(iron)
# strata for permutations
perm_strata <- mat2strata(Xcovar)
# permutations with genome scan (just 3 replicates, for illustration)
operm <- scan1perm(probs, pheno, addcovar=covar, Xcovar=Xcovar,
n_perm=3, perm_strata=perm_strata)
summary(operm)
# leave-one-chromosome-out kinship matrices
kinship <- calc_kinship(probs, "loco")
# permutations of genome scan with a linear mixed model
operm_lmm <- scan1perm(probs, pheno, kinship, covar, Xcovar, n_perm=3,
perm_Xsp=TRUE, perm_strata=perm_strata,
chr_lengths=chr_lengths(map))
summary(operm_lmm)
# permutations of scan1gen, fitting glm with probit link
# fitting function
ll_glm <-
function(pr, pheno, addcovar=NULL, ...)
{
formula <- ifelse(is.null(pr), "pheno ~ 1", "pheno ~ pr")
if(!is.null(addcovar)) formula <- paste(formula, "+ addcovar")
glm_out <- glm(as.formula(formula), family=binomial(link=probit))
-glm_out$deviance/(2*log(10)) # log10 likelihood
}
# create binary trait
bin_pheno <- setNames(as.numeric(iron$pheno[,1] > median(iron$pheno[,1])),
rownames(iron$pheno))
# permutations with glm
operm_glm <- scan1perm(probs, bin_pheno, kinship, covar, Xcovar, n_perm=3,
perm_Xsp=TRUE, perm_strata=perm_strata,
chr_lengths=chr_lengths(map),
scan_func=scan1gen, func=ll_glm)
summary(operm_glm)
if (FALSE) {
# example of scan1perm with scan1snps
file <- paste0("https://raw.githubusercontent.com/rqtl/",
"qtl2data/main/DOex/DOex.zip")
DOex <- read_cross2(file)
DOex <- DOex[,c("2", "3")] # subset to chr 2 and 3
probs <- calc_genoprob(DOex, error_prob=0.002)
snpdb_file <- system.file("extdata", "cc_variants_small.sqlite", package="qtl2")
queryf <- create_variant_query_func(snpdb_file)
operm <- scan1perm(genoprobs=probs, map=DOex$pmap, pheno=DOex$pheno,
scan_func=scan1snps, query_func=queryf, n_perm=3)
}
Run the code above in your browser using DataLab