Author: jcouteau Date: 2009-04-08 10:19:07 +0000 (Wed, 08 Apr 2009) New Revision: 99 Modified: trunk/sensitivity/SensitivityCalculatorJavaExpandGrid.java trunk/sensitivity/SensitivityCalculatorRFast.java trunk/sensitivity/SensitivityCalculatorRFrF2.java trunk/sensitivity/SensitivityCalculatorRMorris.java trunk/sensitivity/SensitivityCalculatorROptimumLHS.java trunk/sensitivity/SensitivityCalculatorRRandomLHS.java Log: Set factor names in sensitivity exports Modified: trunk/sensitivity/SensitivityCalculatorJavaExpandGrid.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorJavaExpandGrid.java 2009-04-07 15:25:54 UTC (rev 98) +++ trunk/sensitivity/SensitivityCalculatorJavaExpandGrid.java 2009-04-08 10:19:07 UTC (rev 99) @@ -105,11 +105,12 @@ .getMaxBound(); Double min = ((ContinuousDomain<Double>) factor.getDomain()) .getMinBound(); - int card = ((ContinuousDomain<? extends Serializable>) factor.getDomain()).getCardinality(); + int card = ((ContinuousDomain<? extends Serializable>) factor + .getDomain()).getCardinality(); result = (int) Math.floor(rest / card); rest = rest - (card * result); - Double value = min + ((max - min) / (card-1) * rest); + Double value = min + ((max - min) / (card - 1) * rest); if ((factor.getDomain() instanceof MatrixContinuousDomain) || (factor.getDomain() instanceof EquationContinuousDomain)) { factor.setValueForIdentifier(value.toString()); @@ -118,7 +119,8 @@ } } if (factor.getDomain() instanceof DiscreteDomain) { - int card = ((DiscreteDomain<? extends Serializable>) factor.getDomain()).getValues().size(); + int card = ((DiscreteDomain<? extends Serializable>) factor + .getDomain()).getValues().size(); result = (int) Math.floor(rest / card); rest = rest - (card * result); factor.setValueForIdentifier(rest); @@ -130,9 +132,9 @@ } thisExperiment.setScenarios(thisExperimentScenarios); - - thisExperimentScenarios=thisExperiment.getScenarios(); + thisExperimentScenarios = thisExperiment.getScenarios(); + /* * Call R to save the data for result analysis */ @@ -143,21 +145,21 @@ //Create the factors vectors for (int j = 0; j < factorNumber; j++) { Factor<? extends Serializable> factor = thisExperimentScenarios - .get(0).getFactors().get(j); - if (factor - .getDomain() instanceof EquationContinuousDomain) { + .get(0).getFactors().get(j); + if (factor.getDomain() instanceof EquationContinuousDomain) { String vector = "factor" + j + "<-c("; for (int i = 0; i < scenariosNumber; i++) { if (i < (scenariosNumber - 1)) { vector = vector - + ((EquationContinuousDomain<?>)thisExperimentScenarios - .get(i).getFactors().get(j).getDomain()).getValue() - + ","; + + ((EquationContinuousDomain<?>) thisExperimentScenarios + .get(i).getFactors().get(j) + .getDomain()).getValue() + ","; } else { vector = vector - + ((EquationContinuousDomain<?>)thisExperimentScenarios - .get(i).getFactors().get(j).getDomain()).getValue(); + + ((EquationContinuousDomain<?>) thisExperimentScenarios + .get(i).getFactors().get(j) + .getDomain()).getValue(); } } @@ -220,6 +222,23 @@ engine.voidEval(dataframe); log.info("Message sent to R : " + dataframe); + // 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); + // Set output directory engine.voidEval("setwd(\"" + outputdirectory.getAbsolutePath() + "\")"); @@ -231,6 +250,11 @@ log .info("Message sent to R : write.csv(data,file=\".expandgrid\")"); + // 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\")"); + engine.terminate(); } catch (Exception e) { @@ -268,6 +292,11 @@ log .info("Message sent to R : factors<-read.csv(\".expandgrid.csv\")"); + // Get the factornames object in the .factornames file + engine.voidEval("factornames<-dget(\".factornames\")"); + log.info("Message sent to R : " + + "factornames<-dget(\".factornames\")"); + //Get back the factors number int factorNumber = ((Double) engine.eval("length(factors)-1")) .intValue(); @@ -348,7 +377,20 @@ .voidEval("names(exportsensitivity)<-c(\"Sum Of Squares\",\"Sensitivity indices\")"); log .info("Message sent to R : names(exportsensitivity)<-c(\"Sum Of Squares\",\"Sensitivity indices\")"); + engine.voidEval("row.names(exportsensitivity)<-factornames"); + log.info("Message sent to R : " + + "row.names(exportsensitivity)<-factornames"); + //Set dataforaov names + engine + .voidEval("resultsnames<-c(\"Simulation\",factornames,\"Result\")"); + log + .info("Message sent to R : " + + "resultsnames<-c(\"Simulation\",factornames,\"Result\")"); + engine.voidEval("names(dataforaov)<-resultsnames"); + log.info("Message sent to R : " + + "names(dataforaov)<-resultsnames"); + /*Set the export directory *Export directory is the first simulation export directory. */ Modified: trunk/sensitivity/SensitivityCalculatorRFast.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorRFast.java 2009-04-07 15:25:54 UTC (rev 98) +++ trunk/sensitivity/SensitivityCalculatorRFast.java 2009-04-08 10:19:07 UTC (rev 99) @@ -80,13 +80,13 @@ } public SensitivityScenarios compute(DesignPlan plan, File outputdirectory) { - - if(param_n==0){ - param_n=17; + + if (param_n == 0) { + param_n = 17; } - - if(param_M==0){ - param_M=1; + + if (param_M == 0) { + param_M = 1; } double[] dataframe = new double[0]; @@ -106,17 +106,6 @@ String rInstruction = "a<-fast99(model=NULL,factors=c(" + factors.size(); - /* // Creating the factors vector. - 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 = rInstruction + "), n=" + param_n + ",M=" + param_M; rInstruction = rInstruction @@ -133,6 +122,23 @@ engine.voidEval(rInstruction); log.info("Message sent to R" + rInstruction); + // Creating the factors vector. + 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); + // Set output directory engine.voidEval("setwd(\"" + outputdirectory.getAbsolutePath() + "\")"); @@ -143,6 +149,11 @@ engine.voidEval("dput(a,file=\".fast99\")"); log.info("Message sent to R" + "dput(a,file=\".fast99\")"); + // 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 Vector<REXP> dataframeVector = (Vector<REXP>) engine.eval("a$X"); @@ -201,13 +212,13 @@ public void analyzeResult(List<SimulationStorage> simulationStorages, File outputdirectory) { - - if(param_n==0){ - param_n=17; + + if (param_n == 0) { + param_n = 17; } - - if(param_M==0){ - param_M=1; + + if (param_M == 0) { + param_M = 1; } REngine engine = new RProxy(); @@ -229,9 +240,13 @@ engine.voidEval("a<-dget(\".fast99\")"); log.info("Message sent to R : " + "a<-dget(\".fast99\")"); + // Get the factornames object in the .factornames file + engine.voidEval("factornames<-dget(\".factornames\")"); + log.info("Message sent to R : " + + "factornames<-dget(\".factornames\")"); + /*int scenariosNumber = sensitivityScenarios.getScenarios().size();*/ - int scenariosNumber = (Integer)engine - .eval("length(a$X[,1])"); + int scenariosNumber = (Integer) engine.eval("length(a$X[,1])"); log.info("Message sent to R : " + "length(a$X[,1])"); int sensitivityNumber = simulationStorages.get(0).getParameter() @@ -275,6 +290,7 @@ engine.voidEval("dfresults=data.frame(a$X,results)"); log.info("Message sent to R : " + "dfresults=data.frame(a$X,results)"); + //Set working directory engine.voidEval("setwd(\"" + outputdirectory.getAbsolutePath() @@ -282,18 +298,30 @@ log.info("Message sent to R : setwd(\"" + outputdirectory.getAbsolutePath() + "\")"); + // Get the factornames object in the .factornames file + engine.voidEval("factornames<-dget(\".factornames\")"); + log.info("Message sent to R : " + + "factornames<-dget(\".factornames\")"); + + //Set V names + engine.voidEval("names(a$V)<-factornames"); + log.info("Message sent to R : " + "names(a$V)<-factornames"); + //Export V engine.voidEval("write.csv(a$V,\"" + simulationStorages.get(0).getParameter() .getSensitivityExport().get(k) - .getExportFilename() - + "_V.csv\")"); + .getExportFilename() + "_V.csv\")"); log.info("Message sent to R : " + "write.csv(a$V,\"" + simulationStorages.get(0).getParameter() .getSensitivityExport().get(k) .getExportFilename() + "_V.csv\")"); + //Set D1 names + engine.voidEval("names(a$D1)<-factornames"); + log.info("Message sent to R : " + "names(a$D1)<-factornames"); + //Export D1 engine.voidEval("write.csv(a$D1,\"" + simulationStorages.get(0).getParameter() @@ -305,6 +333,10 @@ .getSensitivityExport().get(k) .getExportFilename() + "_D1.csv\")"); + //Set Dt names + engine.voidEval("names(a$Dt)<-factornames"); + log.info("Message sent to R : " + "names(a$Dt)<-factornames"); + //Export Dt engine.voidEval("write.csv(a$Dt,\"" + simulationStorages.get(0).getParameter() @@ -315,6 +347,15 @@ + simulationStorages.get(0).getParameter() .getSensitivityExport().get(k) .getExportFilename() + "_Dt.csv\")"); + //Set dfresults names + engine + .voidEval("resultsnames<-c(factornames,\"Result\")"); + log + .info("Message sent to R : " + + "resultsnames<-c(factornames,\"Result\")"); + engine.voidEval("names(dfresults)<-resultsnames"); + log.info("Message sent to R : " + + "names(dfresults)<-resultsnames"); //Export results engine.voidEval("write.csv(dfresults,\"" Modified: trunk/sensitivity/SensitivityCalculatorRFrF2.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorRFrF2.java 2009-04-07 15:25:54 UTC (rev 98) +++ trunk/sensitivity/SensitivityCalculatorRFrF2.java 2009-04-08 10:19:07 UTC (rev 99) @@ -21,6 +21,7 @@ import java.io.File; import java.io.Serializable; import java.util.List; +import java.util.Vector; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -30,6 +31,7 @@ import org.codelutin.math.matrix.MatrixFactory; import org.codelutin.math.matrix.MatrixND; import org.codelutin.util.FileUtil; +import org.rosuda.JRI.REXP; import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan; @@ -52,7 +54,7 @@ * Last update : $Date: 2009-04-03 13:13:35 +0200 (ven., 03 avr. 2009) $ By : * $Author: chatellier $ */ -@Doc("FrF2 method") +@Doc("FrF2 method, at least 4 factors need to be declared") public class SensitivityCalculatorRFrF2 implements SensitivityCalculator { /** to use log facility, just put in your code: log.info("..."); */ @@ -112,8 +114,39 @@ // Get back experiment plan dataframe = (double[]) engine.eval("a$desnum"); + /*Vector<REXP> dataframeVector = (Vector<REXP>) engine.eval("a$X"); + dataframe = new double[dataframeVector.size() + * dataframeVector.get(0).asDoubleArray().length]; + for (int i = 0; i < dataframeVector.size(); i++) { + for (int j = 0; j < dataframeVector.get(0).asDoubleArray().length; j++) { + dataframe[i * dataframeVector.get(0).asDoubleArray().length + + j] = dataframeVector.get(i).asDoubleArray()[j]; + } + }*/ log.info("Message sent to R : " + "a$desnum"); + // Creating the factors vector. + 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 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\")"); + } catch (RException e) { e.printStackTrace(); } @@ -286,6 +319,11 @@ log .info("Message sent to R : factors<-read.csv(\".FrF2.csv\")"); + // Get the factornames object in the .factornames file + engine.voidEval("factornames<-dget(\".factornames\")"); + log.info("Message sent to R : " + + "factornames<-dget(\".factornames\")"); + //Get back the factors number int factorNumber = ((Double) engine.eval("length(factors)-1")) .intValue(); @@ -323,7 +361,6 @@ //get back the resolution int resolution = (Integer) engine.eval("res.catlg(a$catentry)"); log.info("Message sent to R : " + "res.catlg(a$catentry)"); - log.info(resolution); String aovCall; @@ -355,13 +392,31 @@ } } } - aovCall = aovCall.substring(0, aovCall.length()-1); + aovCall = aovCall.substring(0, aovCall.length() - 1); aovCall = aovCall + ",data=dataforaov)"; engine.voidEval(aovCall); log.info("Message sent to R : " + aovCall); break; + case 5: + aovCall = "aovresult<-aov(result~"; + for (int j = 0; j < factorNumber; j++) { + aovCall = aovCall + "factor" + j + "+"; + } + for (int i = 0; i < factorNumber; i++) { + for (int j = 0; j < factorNumber; j++) { + if (i < j) { + aovCall = aovCall + "factor" + i + "*factor" + + j + "+"; + } + } + } + aovCall = aovCall.substring(0, aovCall.length() - 1); + aovCall = aovCall + ",data=dataforaov)"; + engine.voidEval(aovCall); + log.info("Message sent to R : " + aovCall); + break; default: - log.info("pas bien"); + log.info("This resolution is not managed"); break; } @@ -398,9 +453,11 @@ .voidEval("names(exportsensitivity)<-c(\"Sum Of Squares\",\"Sensitivity indices\")"); log .info("Message sent to R : names(exportsensitivity)<-c(\"Sum Of Squares\",\"Sensitivity indices\")"); - - - + + engine.voidEval("row.names(exportsensitivity)<-factornames"); + log.info("Message sent to R : " + + "row.names(exportsensitivity)<-factornames"); + /*Set the export directory *Export directory is the first simulation export directory. */ @@ -409,6 +466,17 @@ log.info("Message sent to R : setwd(\"" + outputdirectory.getAbsolutePath() + "\")"); + //Set dataforaov names + engine + .voidEval("resultsnames<-c(\"Simulation\",factornames,\"Result\")"); + log + .info("Message sent to R : " + + "resultsnames<-c(\"Simulation\",factornames,\"Result\")"); + engine.voidEval("names(dataforaov)<-resultsnames"); + log.info("Message sent to R : " + + "names(dataforaov)<-resultsnames"); + + //Save the results with the scenarios. engine.voidEval("write.csv(dataforaov,\"" + simulationStorages.get(0).getParameter() @@ -442,6 +510,6 @@ } public String getDescription() { - return "Implementation of FrF2 method method using R"; + return "Implementation of FrF2 method method using R, at least 4 factors need to be declared"; } } Modified: trunk/sensitivity/SensitivityCalculatorRMorris.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorRMorris.java 2009-04-07 15:25:54 UTC (rev 98) +++ trunk/sensitivity/SensitivityCalculatorRMorris.java 2009-04-08 10:19:07 UTC (rev 99) @@ -227,6 +227,22 @@ engine.voidEval(rInstruction); log.info("Message sent to R" + rInstruction); + // Creating the factors vector. + 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); + // Set output directory engine.voidEval("setwd(\"" + outputdirectory.getAbsolutePath() + "\")"); @@ -237,6 +253,11 @@ engine.voidEval("dput(a,file=\".morris\")"); log.info("Message sent to R" + "dput(a,file=\".morris\")"); + // 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"); log.info("Message sent to R" + "a$X"); @@ -302,6 +323,11 @@ engine.voidEval("a<-dget(\".morris\")"); log.info("Message sent to R : " + "a<-dget(\".morris\")"); + // Get the factornames object in the .factornames file + engine.voidEval("factornames<-dget(\".factornames\")"); + log.info("Message sent to R : " + + "factornames<-dget(\".factornames\")"); + /*int scenariosNumber = sensitivityScenarios.getScenarios().size();*/ int scenariosNumber = ((Double) engine .eval("length(a$X)/length(a$factors)")).intValue(); @@ -361,12 +387,24 @@ engine.voidEval("df=data.frame(mu,mu.star,sigma)"); log.info("Message sent to R : " + "df=data.frame(mu,mu.star,sigma)"); + engine.voidEval("row.names(df)<-factornames"); + log.info("Message sent to R : " + "row.names(df)<-factornames"); //Create the data.frame of scenarios and results for export purpose engine.voidEval("dfresults=data.frame(a$X,results)"); log.info("Message sent to R : " - + "df=data.frame(mu,mu.star,sigma)"); + + "dfresults=data.frame(a$X,results)"); + //Set dfresults names + engine + .voidEval("resultsnames<-c(\"Simulation\",factornames,\"Result\")"); + log + .info("Message sent to R : " + + "resultsnames<-c(\"Simulation\",factornames,\"Result\")"); + engine.voidEval("names(dfresults)<-resultsnames"); + log.info("Message sent to R : " + + "names(dfresults)<-resultsnames"); + //Set working directory engine.voidEval("setwd(\"" + outputdirectory.getAbsolutePath() + "\")"); Modified: trunk/sensitivity/SensitivityCalculatorROptimumLHS.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorROptimumLHS.java 2009-04-07 15:25:54 UTC (rev 98) +++ trunk/sensitivity/SensitivityCalculatorROptimumLHS.java 2009-04-08 10:19:07 UTC (rev 99) @@ -77,6 +77,7 @@ throws SensitivityException { int factornumber = plan.getFactors().size(); + List<Factor<? extends Serializable>> factors = plan.getFactors(); double[] dataframe = new double[0]; SensitivityScenarios thisExperiment = new SensitivityScenarios(); List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios(); @@ -111,12 +112,10 @@ // Get back experiment plan dataframe = (double[]) engine.eval("x"); log.info("Message sent to R : " + "x"); - log.info(dataframe); // Transform the result from R in a matrix MatrixND morris = MatrixFactory.getInstance().create(dataframe, new int[] { factornumber, param_simulationNumber }); - log.info(morris); // Setting up the scenarios. for (int j = 0; j < param_simulationNumber; j++) { @@ -222,6 +221,23 @@ engine.voidEval(data); log.info("Message sent to R : " + data); + // Creating the factors vector. + 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); + // Set output directory engine.voidEval("setwd(\"" + outputdirectory.getAbsolutePath() + "\")"); @@ -233,6 +249,11 @@ log.info("Message sent to R : " + "write.csv(data,file=\".optimumlhs.csv\")"); + // 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\")"); + engine.terminate(); } catch (Exception e) { @@ -277,6 +298,11 @@ log .info("Message sent to R : factors<-read.csv(\".optimumlhs.csv\")"); + // Get the factornames object in the .factornames file + engine.voidEval("factornames<-dget(\".factornames\")"); + log.info("Message sent to R : " + + "factornames<-dget(\".factornames\")"); + //Get back the factors number int factorNumber = ((Double) engine.eval("length(factors)-1")) .intValue(); @@ -357,6 +383,9 @@ .voidEval("names(exportsensitivity)<-c(\"Sum Of Squares\",\"Sensitivity indices\")"); log .info("Message sent to R : names(exportsensitivity)<-c(\"Sum Of Squares\",\"Sensitivity indices\")"); + engine.voidEval("row.names(exportsensitivity)<-factornames"); + log.info("Message sent to R : " + + "row.names(exportsensitivity)<-factornames"); /*Set the export directory *Export directory is the first simulation export directory. @@ -366,6 +395,16 @@ log.info("Message sent to R : setwd(\"" + outputdirectory.getAbsolutePath() + "\")"); + //Set dataforaov names + engine + .voidEval("resultsnames<-c(\"Simulation\",factornames,\"Result\")"); + log + .info("Message sent to R : " + + "resultsnames<-c(\"Simulation\",factornames,\"Result\")"); + engine.voidEval("names(dataforaov)<-resultsnames"); + log.info("Message sent to R : " + + "names(dataforaov)<-resultsnames"); + //Save the results with the scenarios. engine.voidEval("write.csv(dataforaov,\"" + simulationStorages.get(0).getParameter() Modified: trunk/sensitivity/SensitivityCalculatorRRandomLHS.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorRRandomLHS.java 2009-04-07 15:25:54 UTC (rev 98) +++ trunk/sensitivity/SensitivityCalculatorRRandomLHS.java 2009-04-08 10:19:07 UTC (rev 99) @@ -76,6 +76,7 @@ double[] dataframe = new double[0]; SensitivityScenarios thisExperiment = new SensitivityScenarios(); List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios(); + List<Factor<? extends Serializable>> factors = plan.getFactors(); if ((Integer) param_simulationNumber == 0) { param_simulationNumber = 10; @@ -206,6 +207,23 @@ engine.voidEval(data); log.info("Message sent to R : " + data); + // 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); + // Set output directory engine.voidEval("setwd(\"" + outputdirectory.getAbsolutePath() + "\")"); @@ -217,6 +235,11 @@ log.info("Message sent to R : " + "write.csv(data,file=\".randomlhs.csv\")"); + // 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\")"); + engine.terminate(); } catch (Exception e) { @@ -254,6 +277,11 @@ log .info("Message sent to R : factors<-read.csv(\".randomlhs.csv\")"); + // Get the factornames object in the .factornames file + engine.voidEval("factornames<-dget(\".factornames\")"); + log.info("Message sent to R : " + + "factornames<-dget(\".factornames\")"); + //Get back the factors number int factorNumber = ((Double) engine.eval("length(factors)-1")) .intValue(); @@ -334,6 +362,9 @@ .voidEval("names(exportsensitivity)<-c(\"Sum Of Squares\",\"Sensitivity indices\")"); log .info("Message sent to R : names(exportsensitivity)<-c(\"Sum Of Squares\",\"Sensitivity indices\")"); + engine.voidEval("row.names(exportsensitivity)<-factornames"); + log.info("Message sent to R : " + + "row.names(exportsensitivity)<-factornames"); /*Set the export directory *Export directory is the first simulation export directory. @@ -343,6 +374,16 @@ log.info("Message sent to R : setwd(\"" + outputdirectory.getAbsolutePath() + "\")"); + //Set dataforaov names + engine + .voidEval("resultsnames<-c(\"Simulation\",factornames,\"Result\")"); + log + .info("Message sent to R : " + + "resultsnames<-c(\"Simulation\",factornames,\"Result\")"); + engine.voidEval("names(dataforaov)<-resultsnames"); + log.info("Message sent to R : " + + "names(dataforaov)<-resultsnames"); + //Save the results with the scenarios. engine.voidEval("write.csv(dataforaov,\"" + simulationStorages.get(0).getParameter()