annotate rrBLUP.R @ 56:374c9a2bc1c2 draft

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