87
|
1
|
|
2 ########################################################
|
|
3 #
|
|
4 # creation date : 05/01/16
|
|
5 # last modification : 25/10/16
|
|
6 # author : Dr Nicolas Beaume
|
|
7 #
|
|
8 ########################################################
|
|
9
|
|
10
|
|
11 library(rrBLUP)
|
|
12 ############################ helper functions #######################
|
|
13
|
|
14
|
|
15 ################################## main function ###########################
|
|
16 # do rrBLUP evaluation of classification.
|
|
17 # optimization of paramaters is included in rrBLUP package
|
|
18 rrBLUP <- function(genotype, phenotype, outFile, evaluation=F, folds) {
|
|
19 # Evaluation mode
|
|
20 if(evaluation) {
|
|
21 prediction <- NULL
|
|
22 # run over folds
|
|
23 for(i in 1:length(folds)) {
|
|
24 # create training and test set for this fold
|
|
25 train <- genotype[-folds[[i]],]
|
|
26 test <- genotype[folds[[i]],]
|
|
27 phenoTrain <- phenotype[-folds[[i]]]
|
|
28 phenoTest <- phenotype[folds[[i]]]
|
|
29 # create model
|
|
30 model <-mixed.solve(phenoTrain, Z=train,K=NULL, SE=F,return.Hinv = F)
|
|
31 # predict current test set
|
|
32 pred <- as.matrix(test) %*% as.matrix(model$u)
|
|
33 pred <- pred[,1]+model$beta
|
|
34 prediction <- c(prediction, list(pred))
|
|
35 }
|
|
36 # save results
|
|
37 saveRDS(prediction, file=paste(outFile,".rds", sep=""))
|
|
38 # just create a model
|
|
39 } else {
|
|
40 # create and save modle
|
|
41 model <-mixed.solve(phenotype, Z=genotype,K=NULL, SE=F,return.Hinv = F)
|
|
42 saveRDS(model, file = paste(outFile, ".rds", sep = ""))
|
|
43 }
|
|
44 }
|
|
45
|
|
46
|
|
47 ############################ main #############################
|
|
48 # get argument from xml file
|
|
49 cmd <- commandArgs(T)
|
|
50 source(cmd[1])
|
|
51 # for evaluation mode : set evaluation as True and load fold file
|
|
52 if(as.integer(evaluation) == 1) {
|
|
53 evaluation <- T
|
|
54 con = file(folds)
|
|
55 folds <- readLines(con = con, n = 1, ok=T)
|
|
56 close(con)
|
|
57 folds <- readRDS(folds)
|
|
58 } else{
|
|
59 evaluation <- F
|
|
60 }
|
|
61 # load genotype and phenotype
|
|
62 con = file(genotype)
|
|
63 genotype <- readLines(con = con, n = 1, ok=T)
|
|
64 close(con)
|
|
65 genotype <- read.table(genotype, sep="\t", h=T)
|
|
66 phenotype <- read.table(phenotype, sep="\t", h=T)[,1]
|
|
67 # run !
|
|
68 rrBLUP(genotype = genotype, phenotype = phenotype, outFile = out,
|
|
69 evaluation = evaluation, folds = folds)
|
|
70 # return path of the result to galaxy
|
|
71 cat(paste(paste(out, ".rds", sep = ""), "\n", sep="")) |