aboutsummaryrefslogtreecommitdiff
path: root/scripts/rqtl_wrapper.R
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rqtl_wrapper.R')
-rw-r--r--scripts/rqtl_wrapper.R51
1 files changed, 38 insertions, 13 deletions
diff --git a/scripts/rqtl_wrapper.R b/scripts/rqtl_wrapper.R
index 7518175..ffff5b9 100644
--- a/scripts/rqtl_wrapper.R
+++ b/scripts/rqtl_wrapper.R
@@ -11,6 +11,7 @@ option_list = list(
make_option(c("-c", "--addcovar"), action="store_true", default=NULL, help="Use covariates (included as extra columns in the phenotype input file)"),
make_option(c("--model"), type="character", default="normal", help="Mapping Model - Normal or Non-Parametric"),
make_option(c("--method"), type="character", default="hk", help="Mapping Method - hk (Haley Knott), ehk (Extended Haley Knott), mr (Marker Regression), em (Expectation-Maximization), imp (Imputation)"),
+ make_option(c("--pairscan"), action="store_true", default=NULL, help="Run Pair Scan - the R/qtl function scantwo"),
make_option(c("-i", "--interval"), action="store_true", default=NULL, help="Use interval mapping"),
make_option(c("--nperm"), type="integer", default=0, help="Number of permutations"),
make_option(c("--pstrata"), action="store_true", default=NULL, help="Use permutation strata (stored as final column/vector in phenotype input file)"),
@@ -155,6 +156,9 @@ cross_object = geno_to_csvr(geno_file, trait_names, trait_vals, cross_file)
if (!is.null(opt$interval)) {
verbose_print('Calculating genotype probabilities with interval mapping\n')
cross_object <- calc.genoprob(cross_object, step=5, stepwidth="max")
+} else if (!is.null(opt$pairscan)) {
+ verbose_print('Calculating genotype probabilities for pair-scan\n')
+ cross_object <- calc.genoprob(cross_object, step=10)
} else {
verbose_print('Calculating genotype probabilities\n')
cross_object <- calc.genoprob(cross_object)
@@ -163,6 +167,7 @@ if (!is.null(opt$interval)) {
# Pull covariates out of cross object, if they exist
covars = vector(mode = "list", length = length(trait_names) - 1)
if (!is.null(opt$addcovar)) {
+ verbose_print('Pulling covariates out of cross object\n')
#If perm strata are being used, it'll be included as the final column in the phenotype file
if (!is.null(opt$pstrata)) {
covar_names = trait_names[3:length(trait_names) - 1]
@@ -175,16 +180,28 @@ if (!is.null(opt$addcovar)) {
# Pull permutation strata out of cross object, if it is being used
perm_strata = vector()
if (!is.null(opt$pstrata)) {
+ verbose_print('Pulling permutation strata out of cross object\n')
strata_col = trait_names[length(trait_names)]
perm_strata <- pull.pheno(cross_object, strata_col)
}
# If a marker name is supplied as covariate, get its vector of values and add them as a covariate
if (!is.null(opt$control)) {
+ verbose_print('Creating marker covariates and binding them to covariates vector\n')
marker_covars = create_marker_covars(cross_object, opt$control)
covars <- cbind(covars, marker_covars)
}
+if (!is.null(opt$pairscan)) {
+ scan_func <- function(...){
+ scantwo(...)
+ }
+} else {
+ scan_func <- function(...){
+ scanone(...)
+ }
+}
+
# Calculate permutations
if (opt$nperm > 0) {
if (!is.null(opt$filename)){
@@ -195,19 +212,19 @@ if (opt$nperm > 0) {
if (!is.null(opt$addcovar) || !is.null(opt$control)){
if (!is.null(opt$pstrata)) {
- verbose_print('Running ', opt$nperm, ' permutations with cofactors and strata\n')
- perm_results = scanone(cross_object, pheno.col=1, addcovar=covars, n.perm=opt$nperm, perm.strata=perm_strata, model=opt$model, method=opt$method)
+ verbose_print('Running permutations with cofactors and strata\n')
+ perm_results = scan_func(cross_object, pheno.col=1, addcovar=covars, n.perm=opt$nperm, perm.strata=perm_strata, model=opt$model, method=opt$method)
} else {
- verbose_print('Running ', opt$nperm, ' permutations with cofactors\n')
- perm_results = scanone(cross_object, pheno.col=1, addcovar=covars, n.perm=opt$nperm, model=opt$model, method=opt$method)
+ verbose_print('Running permutations with cofactors\n')
+ perm_results = scan_func(cross_object, pheno.col=1, addcovar=covars, n.perm=opt$nperm, model=opt$model, method=opt$method)
}
} else {
if (!is.null(opt$pstrata)) {
- verbose_print('Running ', opt$nperm, ' permutations with strata\n')
- perm_results = scanone(cross_object, pheno.col=1, n.perm=opt$nperm, perm.strata=perm_strata, model=opt$model, method=opt$method)
+ verbose_print('Running permutations with strata\n')
+ perm_results = scan_func(cross_object, pheno.col=1, n.perm=opt$nperm, perm.strata=perm_strata, model=opt$model, method=opt$method)
} else {
- verbose_print('Running ', opt$nperm, ' permutations\n')
- perm_results = scanone(cross_object, pheno.col=1, n.perm=opt$nperm, model=opt$model, method=opt$method)
+ verbose_print('Running permutations\n')
+ perm_results = scan_func(cross_object, pheno.col=1, n.perm=opt$nperm, model=opt$model, method=opt$method)
}
}
write.csv(perm_results, perm_out_file)
@@ -220,10 +237,18 @@ if (!is.null(opt$filename)){
}
if (!is.null(opt$addcovar) || !is.null(opt$control)){
- verbose_print('Running scanone with cofactors\n')
- qtl_results = scanone(cross_object, pheno.col=1, addcovar=covars, model=opt$model, method=opt$method)
+ verbose_print('Running scan with cofactors\n')
+ qtl_results = scan_func(cross_object, pheno.col=1, addcovar=covars, model=opt$model, method=opt$method)
+} else {
+ verbose_print('Running scan\n')
+ qtl_results = scan_func(cross_object, pheno.col=1, model=opt$model, method=opt$method)
+}
+
+verbose_print('Writing results to CSV file\n')
+if (!is.null(opt$pairscan)) {
+ map_out_file = file.path(opt$outdir, paste("MAP_", opt$filename, sep = "" ))
+ write.csv(qtl_results[1], out_file)
+ write.csv(qtl_results[2], map_out_file)
} else {
- verbose_print('Running scanone\n')
- qtl_results = scanone(cross_object, pheno.col=1, model=opt$model, method=opt$method)
+ write.csv(qtl_results, out_file)
}
-write.csv(qtl_results, out_file)