annotate prediction.R @ 56:374c9a2bc1c2 draft

Uploaded
author nicolas
date Wed, 26 Oct 2016 18:08:42 -0400
parents 8112bc642858
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
1 ########################################################
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
2 #
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
3 # creation date : 26/01/16
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
4 # last modification : 02/06/16
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
5 # author : Dr Nicolas Beaume
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
6 # owner : IRRI
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
7 #
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
8 ########################################################
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
9
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
10 library(rrBLUP)
38
8112bc642858 Uploaded
nicolas
parents: 22
diff changeset
11 suppressWarnings(suppressMessages(library(randomForest)))
22
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
12 library(e1071)
38
8112bc642858 Uploaded
nicolas
parents: 22
diff changeset
13 suppressWarnings(suppressMessages(library(glmnet)))
22
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
14 library(methods)
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
15
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
16
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
17 ############################ main #############################
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
18 classifierNames <- c("list", "randomForest", "svm", "glmnet")
38
8112bc642858 Uploaded
nicolas
parents: 22
diff changeset
19 # load argument
22
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
20 cmd <- commandArgs(trailingOnly = T)
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
21 source(cmd[1])
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
22 # load data
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
23 con = file(genotype)
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
24 genotype <- readLines(con = con, n = 1, ok=T)
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
25 close(con)
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
26 genotype <- read.table(genotype, sep="\t", h=T)
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
27 con = file(model)
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
28 model <- readLines(con = con, n = 1, ok=T)
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
29 close(con)
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
30 model <- readRDS(model)
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
31 # check if the classifier name is valid
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
32 if(all(is.na(match(class(model), classifierNames)))) {
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
33 stop(paste(class(model), "is not recognized as a valid model. Valid models are : ", classifierNames))
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
34 }
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
35 # run prediction according to the classifier
38
8112bc642858 Uploaded
nicolas
parents: 22
diff changeset
36 # rrBLUP prediction
22
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
37 if(any(class(model) == "list")) {
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
38 predictions <- as.matrix(genotype) %*% as.matrix(model$u)
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
39 predictions <- predictions[,1]+model$beta
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
40 predictions <- data.frame(lines=rownames(genotype), predictions=predictions)
38
8112bc642858 Uploaded
nicolas
parents: 22
diff changeset
41 # LASSO prediction
22
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
42 } else if(any(class(model) == "glmnet")) {
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
43 predictions <- predict(model, as.matrix(genotype), type = "response")
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
44 predictions <- data.frame(lines=rownames(genotype), predictions=predictions)
38
8112bc642858 Uploaded
nicolas
parents: 22
diff changeset
45 # SVM or RandomForest prediction (predict is a wrapper for many machine learning function)
22
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
46 } else {
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
47 predictions <- predict(model, genotype)
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
48 predictions <- data.frame(lines=names(predictions), predictions=predictions)
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
49 }
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
50 # save results
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
51 write.table(predictions, file=out, sep="\t", row.names = F)
f0d89ff35ad2 Uploaded
nicolas
parents:
diff changeset
52