Author: jcouteau Date: 2009-04-08 12:44:22 +0000 (Wed, 08 Apr 2009) New Revision: 100 Modified: trunk/sensitivity/SensitivityCalculatorRSobol.java Log: adding factors name support on sobol sensitivity analysis Modified: trunk/sensitivity/SensitivityCalculatorRSobol.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorRSobol.java 2009-04-08 10:19:07 UTC (rev 99) +++ trunk/sensitivity/SensitivityCalculatorRSobol.java 2009-04-08 12:44:22 UTC (rev 100) @@ -127,6 +127,23 @@ + "a<-sobol(model=NULL,X1=X1,X2=X2,order=" + param_order + ",nboot=" + param_nboot + ")"); + // Creating the factors vector. + String rInstruction = "factornames<-c("; + for (int i = 0; i < factorNumber; i++) { + if (i != (factorNumber - 1)) { + rInstruction = rInstruction + "\"" + + factors.get(i).getName() + "\","; + } else { + rInstruction = rInstruction + "\"" + + factors.get(i).getName() + "\""; + } + } + + rInstruction += ")"; + + engine.voidEval(rInstruction); + log.info("Message sent to R" + rInstruction); + // Export the sobol object for the second run in a .sobol file engine.voidEval("dput(a,file=\".sobol\")"); log.info("Message sent to R" + "dput(a,file=\".sobol\")"); @@ -137,6 +154,11 @@ engine.voidEval("dput(X2,file=\".X2\")"); log.info("Message sent to R" + "dput(a,file=\".sobol\")"); + // Export the factornames object for the second run in a .factornames file + engine.voidEval("dput(factornames,file=\".factornames\")"); + log.info("Message sent to R" + + "dput(factornames,file=\".factornames\")"); + // Get back experiment plan /*dataframe = (double[]) engine.eval("a$X");*/ @@ -214,10 +236,26 @@ // Get the .X2 file engine.voidEval("X2<-dget(\".X2\")"); log.info("Message sent to R : " + "X2<-dget(\".X2\")"); + // Get the factornames object in the .factornames file + engine.voidEval("factornames<-dget(\".factornames\")"); + log.info("Message sent to R : " + + "factornames<-dget(\".factornames\")"); + + //Set X1 names + engine.voidEval("names(X1)<-factornames"); + log.info("Message sent to R : " + "names(X1)<-factornames"); + //Set X2 names + engine.voidEval("names(X2)<-factornames"); + log.info("Message sent to R : " + "names(X2)<-factornames"); + // Get the .sobol file engine.voidEval("a<-dget(\".sobol\")"); log.info("Message sent to R : " + "a<-dget(\".sobol\")"); + //Set a$X names + engine.voidEval("names(a$X)<-factornames"); + log.info("Message sent to R : " + "names(a$X)<-factornames"); + int scenariosNumber = (Integer) engine.eval("length(a$X[,1])"); log.info("Message sent to R : " + "length(a$X[,1])");