0
|
1 ##########
|
|
2 args <- commandArgs(T)
|
|
3 arg1 <- args[1]
|
|
4 arg2 <- args[2]
|
|
5 arg3 <- args[3]
|
|
6 #source("~/galaxy-dist/tools/mpdstoolsV2/tool3/Preold.R")
|
|
7 #pre(arg1,arg2,arg3)
|
|
8 set.seed(1)
|
|
9 pre <- function(args1,args2,args3){
|
|
10 #args <- commandArgs(TRUE)
|
|
11 nTrain <- read.csv(args1,row.names= 1, header = T) # example nTrain.csv file of unknown activity
|
|
12 #save(nTrain,file = "nTrain.RData")
|
|
13 #load("nTrain.RData")
|
|
14 load(args2) # model generated from previous programn
|
|
15 newdata <- nTrain
|
|
16 modelFit <- Fit
|
|
17 ###########
|
|
18 # input csv file must contaion the exact same column as used in model building #
|
|
19 # Also do pre-proccessing by means of centering and scaling
|
|
20 ## problem in s4 object so first check that the given model has s4 object in
|
|
21 ## >isS4(Fit$finalmodel) if it is s4 than add in with elseif loop
|
|
22 ## eg . isS4(plsFit$finalModel) == TRUE
|
|
23 f=function(x){
|
|
24 x<-as.numeric(as.character(x)) #first convert each column into numeric if it is from factor
|
|
25 x[is.na(x)] =median(x, na.rm=TRUE) #convert the item with NA to median value from the column
|
|
26 x #display the column
|
|
27 }
|
|
28
|
|
29 f2=function(x){
|
|
30 all(is.na(x))
|
|
31 }
|
|
32
|
|
33 fop <- apply(newdata,2,f2)
|
|
34 allcolumnmissing <- which(fop)
|
|
35 if (length(allcolumnmissing) > 0){
|
|
36 newdata[,allcolumnmissing] <- 0
|
|
37 newdata[,allcolumnmissing] <- newdata[,allcolumnmissing] + runif(3,0,0.000000000000000001) ### add noise}
|
|
38 }
|
|
39
|
|
40 library(caret)
|
|
41
|
|
42 #if(as.character(!isS4(Fit$finalModel == "TRUE")))
|
|
43 if((Fit$method != "svmRadial") && (Fit$method != "svmLinear") )
|
|
44 {
|
|
45 reqcol <- Fit$finalModel$xNames
|
|
46 newdata <- newdata[,reqcol]
|
|
47 newdata <- apply(newdata,2,f)
|
|
48 newdata <- newdata + runif(3,0,0.01) ### add noise to overcome from NZV error
|
|
49 newdata1 <- preProcess(newdata, method = c("center", "scale"))
|
|
50 newdata11 <- predict(newdata1,newdata)
|
|
51 ###########
|
|
52 library(stats)
|
|
53 testpredict <- predict(modelFit,newdata11)
|
|
54 names <- as.data.frame(rownames(nTrain))
|
|
55 colnames(names) <- "COMPOUND"
|
|
56 activity <- as.data.frame(testpredict)
|
|
57 colnames(activity) <- "PREDICTED VALUE"
|
|
58 dw <- format(cbind(names,activity),justify="centre")
|
|
59 write.table(dw,file=args3,row.names=FALSE,sep="\t")
|
|
60 }
|
|
61 #else if(Fit$method == "svmRadial")
|
|
62 else if((Fit$method == "svmLinear") | (Fit$method == "svmRadial"))
|
|
63 {
|
|
64 reqcol <- colnames(Fit$trainingData)
|
|
65 reqcol <- reqcol[1:length(reqcol)-1]
|
|
66 newdata <- newdata[,reqcol]
|
|
67 newdata <- apply(newdata,2,f)
|
|
68 newdata <- newdata + runif(3,0,0.01) ### add little noise to overcome from NZV problem
|
|
69 newdata1 <- preProcess(newdata, method = c("center", "scale"))
|
|
70 newdata11 <- predict(newdata1,newdata)
|
|
71 testpredict <- predict(modelFit,newdata11)
|
|
72 names <- as.data.frame(rownames(nTrain))
|
|
73 colnames(names) <- "COMPOUND"
|
|
74 activity <- as.data.frame(testpredict)
|
|
75 colnames(activity) <- "PREDICTED VALUE"
|
|
76 dw <- format(cbind(names,activity),justify="centre")
|
|
77 write.table(dw,file=args3,row.names=FALSE,sep="\t")
|
|
78
|
|
79 }
|
|
80 else {
|
|
81 dw <- "There is something wrong in data or model"
|
|
82 write.csv(dw,file=args3,row.names=FALSE)
|
|
83
|
|
84 }
|
|
85
|
|
86 }
|
|
87 pre(arg1,arg2,arg3)
|