Author: jcouteau Date: 2009-05-07 17:07:20 +0000 (Thu, 07 May 2009) New Revision: 137 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 trunk/sensitivity/SensitivityCalculatorRSobol.java trunk/sensitivity/SensitivityCalculatorRegularFractions.java Log: Sensitivity analysis (second pass) use less memory. Modified: trunk/sensitivity/SensitivityCalculatorJavaExpandGrid.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorJavaExpandGrid.java 2009-05-07 16:40:51 UTC (rev 136) +++ trunk/sensitivity/SensitivityCalculatorJavaExpandGrid.java 2009-05-07 17:07:20 UTC (rev 137) @@ -28,6 +28,7 @@ import org.codelutin.util.FileUtil; import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityCalculator; import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan; import fr.ifremer.isisfish.simulator.sensitivity.Factor; @@ -114,7 +115,7 @@ Double value = min + ((max - min) / (card - 1) * rest); if ((factor.getDomain() instanceof MatrixContinuousDomain) || (factor.getDomain() instanceof EquationContinuousDomain)) { - factor.setValueForIdentifier(value.toString()); + factor.setValueForIdentifier(value); } else { factor.setValueForIdentifier(value); } @@ -354,39 +355,39 @@ int factorNumber = ((Double) engine.eval("length(factors)-1")) .intValue(); - int sensitivityNumber = simulationStorages.get(0).getParameter() - .getSensitivityExport().size(); + SimulationParameter param = simulationStorages.get(0) + .getParameter(); + int sensitivityNumber = param.getSensitivityExport().size(); for (int k = 0; k < sensitivityNumber; k++) { - String name = simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k).getExportFilename(); - - //Create the results vectors - String result = name + "<-c("; + // Creates the R expression to import results in R + String name = param.getSensitivityExport().get(k) + .getExportFilename(); + String rInstruction = name + "<-c("; for (int l = 0; l < simulationStorages.size(); l++) { File importFile = new File(simulationStorages.get(l) .getDirectory().toString() + File.separator - + SimulationStorage.RESULT_EXPORT_DIRECTORY, - simulationStorages.get(l).getParameter() - .getSensitivityExport().get(k) - .getExportFilename() - + simulationStorages.get(l).getParameter() - .getSensitivityExport().get(k) - .getExtensionFilename()); + + SimulationStorage.RESULT_EXPORT_DIRECTORY, param + .getSensitivityExport().get(k).getExportFilename() + + param.getSensitivityExport().get(k) + .getExtensionFilename()); String simulResult = FileUtil.readAsString(importFile); double simulationResult = Double.valueOf(simulResult); if (l < simulationStorages.size() - 1) { - result = result + simulationResult + ","; + rInstruction = rInstruction + simulationResult + ","; } else { - result = result + simulationResult; + rInstruction = rInstruction + simulationResult; } } - result = result + ")"; - engine.voidEval(result); - log.info("Message sent to R : " + result); + rInstruction = rInstruction + ")"; + log.info("Message sent to R : " + rInstruction); + + // Send the simulation results + engine.voidEval(rInstruction); + //Put results in isis.simule engine.voidEval("isis.simule<-data.frame(isis.simule," + name + ")"); @@ -477,23 +478,19 @@ //Save the results with the scenarios. engine.voidEval("write.csv(dataforaov,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Results.csv\")"); log.info("Message sent to R : write.csv(dataforaov,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Results.csv\")"); //Save the sensitivity indices engine.voidEval("write.csv(exportsensitivity,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_SensitivityIndices.csv\")"); log.info("Message sent to R : write.csv(exportsensitivity,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_SensitivityIndices.csv\")"); //FIXME export through java to enable export when using Rserve (when distant Rserve). Modified: trunk/sensitivity/SensitivityCalculatorRFast.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorRFast.java 2009-05-07 16:40:51 UTC (rev 136) +++ trunk/sensitivity/SensitivityCalculatorRFast.java 2009-05-07 17:07:20 UTC (rev 137) @@ -39,6 +39,7 @@ import org.rosuda.JRI.REXP; import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityCalculator; import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan; import fr.ifremer.isisfish.simulator.sensitivity.Domain; @@ -197,7 +198,7 @@ + j] = dataframeVector.get(i).asDoubleArray()[j]; } } - + log.info("Message sent to R" + "a$X"); if (log.isDebugEnabled()) { @@ -287,8 +288,8 @@ Factor factor = plan.getFactors().get(i); if ((factor.getDomain() instanceof MatrixContinuousDomain) || (factor.getDomain() instanceof EquationContinuousDomain)) { - factor.setValueForIdentifier(Double.valueOf( - fast.getValue(new int[] { i, j })).toString()); + factor.setValueForIdentifier(fast + .getValue(new int[] { i, j })); } else { Double value = (Double) ((ContinuousDomain) factor .getDomain()).getMinBound() @@ -346,26 +347,24 @@ 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() - .getSensitivityExport().size(); + SimulationParameter param = simulationStorages.get(0) + .getParameter(); + int sensitivityNumber = param.getSensitivityExport().size(); for (int k = 0; k < sensitivityNumber; k++) { // Creates the R expression to import results in R - String name = simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k).getExportFilename(); + String name = param.getSensitivityExport().get(k) + .getExportFilename(); String rInstruction = name + "<-c("; for (int l = 0; l < scenariosNumber; l++) { File importFile = new File(simulationStorages.get(l) .getDirectory().toString() + File.separator - + SimulationStorage.RESULT_EXPORT_DIRECTORY, - simulationStorages.get(l).getParameter() - .getSensitivityExport().get(k) - .getExportFilename() - + simulationStorages.get(l).getParameter() - .getSensitivityExport().get(k) - .getExtensionFilename()); + + SimulationStorage.RESULT_EXPORT_DIRECTORY, param + .getSensitivityExport().get(k).getExportFilename() + + param.getSensitivityExport().get(k) + .getExtensionFilename()); String simulResult = FileUtil.readAsString(importFile); double simulationResult = Double.valueOf(simulResult); if (l < simulationStorages.size() - 1) { @@ -381,6 +380,9 @@ // Send the simulation results engine.voidEval(rInstruction); + // Send the simulation results + engine.voidEval(rInstruction); + //Put results in isis.simule engine.voidEval("isis.simule<-data.frame(isis.simule," + name + ")"); @@ -403,8 +405,8 @@ for (int k = 0; k < sensitivityNumber; k++) { // Creates the R expression to import results in R - String name = simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k).getExportFilename(); + String name = param.getSensitivityExport().get(k) + .getExportFilename(); //Compute results engine.voidEval("tell(a,y=" + name + ")"); @@ -447,13 +449,11 @@ //Export V engine.voidEval("write.csv(a$V,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_V.csv\")"); log.info("Message sent to R : " + "write.csv(a$V,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_V.csv\")"); //Set D1 names @@ -462,13 +462,11 @@ //Export D1 engine.voidEval("write.csv(a$D1,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_D1.csv\")"); log.info("Message sent to R : " + "write.csv(a$D1,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_D1.csv\")"); //Set Dt names @@ -477,13 +475,11 @@ //Export Dt engine.voidEval("write.csv(a$Dt,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Dt.csv\")"); log.info("Message sent to R : " + "write.csv(a$Dt,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Dt.csv\")"); //Set dfresults names engine.voidEval("resultsnames<-c(factornames,\"Result\")"); @@ -495,13 +491,11 @@ //Export results engine.voidEval("write.csv(dfresults,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Results.csv\")"); log.info("Message sent to R : " + "write.csv(results,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Results.csv\")"); //FIXME export through java to enable export when using Rserve Modified: trunk/sensitivity/SensitivityCalculatorRFrF2.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorRFrF2.java 2009-05-07 16:40:51 UTC (rev 136) +++ trunk/sensitivity/SensitivityCalculatorRFrF2.java 2009-05-07 17:07:20 UTC (rev 137) @@ -31,6 +31,7 @@ import org.codelutin.util.FileUtil; import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityCalculator; import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan; import fr.ifremer.isisfish.simulator.sensitivity.Factor; @@ -162,13 +163,11 @@ if ((factor.getDomain() instanceof MatrixContinuousDomain) || (factor.getDomain() instanceof EquationContinuousDomain)) { if (frf2.getValue(new int[] { i, j }) == -1) { - factor.setValueForIdentifier(Double.valueOf(0) - .toString()); + factor.setValueForIdentifier(0); } if (frf2.getValue(new int[] { i, j }) == 1) { - factor.setValueForIdentifier(Double.valueOf(1) - .toString()); + factor.setValueForIdentifier(1); } } else { if (frf2.getValue(new int[] { i, j }) == -1) { @@ -290,8 +289,9 @@ REngine engine = new RProxy(); try { - int sensitivityNumber = simulationStorages.get(0).getParameter() - .getSensitivityExport().size(); + SimulationParameter param = simulationStorages.get(0) + .getParameter(); + int sensitivityNumber = param.getSensitivityExport().size(); for (int k = 0; k < sensitivityNumber; k++) { @@ -322,31 +322,33 @@ int factorNumber = ((Double) engine.eval("length(factors)-1")) .intValue(); - //Create the results vectors - String result = "result<-c("; + // Creates the R expression to import results in R + String name = param.getSensitivityExport().get(k) + .getExportFilename(); + String rInstruction = name + "<-c("; for (int l = 0; l < simulationStorages.size(); l++) { File importFile = new File(simulationStorages.get(l) .getDirectory().toString() + File.separator - + SimulationStorage.RESULT_EXPORT_DIRECTORY, - simulationStorages.get(l).getParameter() - .getSensitivityExport().get(k) - .getExportFilename() - + simulationStorages.get(l).getParameter() - .getSensitivityExport().get(k) - .getExtensionFilename()); + + SimulationStorage.RESULT_EXPORT_DIRECTORY, param + .getSensitivityExport().get(k).getExportFilename() + + param.getSensitivityExport().get(k) + .getExtensionFilename()); String simulResult = FileUtil.readAsString(importFile); double simulationResult = Double.valueOf(simulResult); if (l < simulationStorages.size() - 1) { - result = result + simulationResult + ","; + rInstruction = rInstruction + simulationResult + ","; } else { - result = result + simulationResult; + rInstruction = rInstruction + simulationResult; } } - result = result + ")"; - engine.voidEval(result); - log.info("Message sent to R : " + result); + rInstruction = rInstruction + ")"; + log.info("Message sent to R : " + rInstruction); + + // Send the simulation results + engine.voidEval(rInstruction); + //Create the dataforaov data.frame String dataframe = "dataforaov<-data.frame(factors,result=result)"; engine.voidEval(dataframe); @@ -472,23 +474,19 @@ //Save the results with the scenarios. engine.voidEval("write.csv(dataforaov,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Results.csv\")"); log.info("Message sent to R : write.csv(dataforaov,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Results.csv\")"); //Save the sensitivity indices engine.voidEval("write.csv(exportsensitivity,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_SensitivityIndices.csv\")"); log.info("Message sent to R : write.csv(exportsensitivity,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_SensitivityIndices.csv\")"); //FIXME export through java to enable export when using Rserve (when distant Rserve). Modified: trunk/sensitivity/SensitivityCalculatorRMorris.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorRMorris.java 2009-05-07 16:40:51 UTC (rev 136) +++ trunk/sensitivity/SensitivityCalculatorRMorris.java 2009-05-07 17:07:20 UTC (rev 137) @@ -37,6 +37,7 @@ import org.codelutin.util.FileUtil; import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityCalculator; import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan; import fr.ifremer.isisfish.simulator.sensitivity.Domain; @@ -343,25 +344,22 @@ .eval("length(a$X)/length(a$factors)")).intValue(); log.info("Message sent to R : " + "length(a$X)/length(a$factors)"); - int sensitivityNumber = simulationStorages.get(0).getParameter() - .getSensitivityExport().size(); + SimulationParameter param = simulationStorages.get(0).getParameter(); + int sensitivityNumber = param.getSensitivityExport().size(); for (int k = 0; k < sensitivityNumber; k++) { // Creates the R expression to import results in R - String name = simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k).getExportFilename(); + String name = param.getSensitivityExport().get(k).getExportFilename(); String rInstruction = name + "<-c("; for (int l = 0; l < scenariosNumber; l++) { File importFile = new File(simulationStorages.get(l) .getDirectory().toString() + File.separator + SimulationStorage.RESULT_EXPORT_DIRECTORY, - simulationStorages.get(l).getParameter() - .getSensitivityExport().get(k) + param.getSensitivityExport().get(k) .getExportFilename() - + simulationStorages.get(l).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExtensionFilename()); String simulResult = FileUtil.readAsString(importFile); double simulationResult = Double.valueOf(simulResult); @@ -391,18 +389,15 @@ + "attr(isis.simule,\"nomModel\")<-\"isis-fish-externe-R\""); engine .voidEval("attr(isis.simule,\"nomModel\")<-\"isis-fish-externe-R\""); - - log - .info("Message sent to R : " + + log.info("Message sent to R : " + "attr(isis.simule,\"call\")<-isis.MethodExp$call"); - engine - .voidEval("attr(isis.simule,\"call\")<-isis.MethodExp$call"); + engine.voidEval("attr(isis.simule,\"call\")<-isis.MethodExp$call"); for (int k = 0; k < sensitivityNumber; k++) { // Creates the R expression to import results in R - String name = simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k).getExportFilename(); + String name = param.getSensitivityExport().get(k).getExportFilename(); //Compute results engine.voidEval("tell(a,y=" + name + ")"); @@ -466,26 +461,22 @@ //Export sensitivity indices engine.voidEval("write.csv(df,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_SensitivityIndices.csv\")"); log.info("Message sent to R : " + "write.csv(df,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_SensitivityIndices.csv\")"); //Export results engine.voidEval("write.csv(dfresults,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Results.csv\")"); log.info("Message sent to R : " + "write.csv(results,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Results.csv\")"); //FIXME export through java to enable export when using Rserve Modified: trunk/sensitivity/SensitivityCalculatorROptimumLHS.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorROptimumLHS.java 2009-05-07 16:40:51 UTC (rev 136) +++ trunk/sensitivity/SensitivityCalculatorROptimumLHS.java 2009-05-07 17:07:20 UTC (rev 137) @@ -36,6 +36,7 @@ import org.codelutin.util.FileUtil; import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityCalculator; import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan; import fr.ifremer.isisfish.simulator.sensitivity.Domain; @@ -182,10 +183,8 @@ Factor factor = plan.getFactors().get(i); if ((factor.getDomain() instanceof MatrixContinuousDomain) || (factor.getDomain() instanceof EquationContinuousDomain)) { - factor - .setValueForIdentifier(Double.valueOf( - morris.getValue(new int[] { i, j })) - .toString()); + factor.setValueForIdentifier(morris.getValue(new int[] { + i, j })); } else { Double value = (Double) ((ContinuousDomain) factor .getDomain()).getMinBound() @@ -445,29 +444,27 @@ param_simulationNumber = (Integer) (engine .eval("length(factors[,1])")); - int sensitivityNumber = simulationStorages.get(0).getParameter() - .getSensitivityExport().size(); + SimulationParameter param = simulationStorages.get(0) + .getParameter(); + int sensitivityNumber = param.getSensitivityExport().size(); for (int k = 0; k < sensitivityNumber; k++) { // Creates the R expression to import results in R - String name = simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k).getExportFilename(); + String name = param.getSensitivityExport().get(k) + .getExportFilename(); String rInstruction = name + "<-c("; for (int l = 0; l < param_simulationNumber; l++) { File importFile = new File(simulationStorages.get(l) .getDirectory().toString() + File.separator - + SimulationStorage.RESULT_EXPORT_DIRECTORY, - simulationStorages.get(l).getParameter() - .getSensitivityExport().get(k) - .getExportFilename() - + simulationStorages.get(l).getParameter() - .getSensitivityExport().get(k) - .getExtensionFilename()); + + SimulationStorage.RESULT_EXPORT_DIRECTORY, param + .getSensitivityExport().get(k).getExportFilename() + + param.getSensitivityExport().get(k) + .getExtensionFilename()); String simulResult = FileUtil.readAsString(importFile); double simulationResult = Double.valueOf(simulResult); - if (l < param_simulationNumber - 1) { + if (l < simulationStorages.size() - 1) { rInstruction = rInstruction + simulationResult + ","; } else { rInstruction = rInstruction + simulationResult; @@ -480,6 +477,9 @@ // Send the simulation results engine.voidEval(rInstruction); + // Send the simulation results + engine.voidEval(rInstruction); + //Put results in isis.simule engine.voidEval("isis.simule<-data.frame(isis.simule," + name + ")"); @@ -501,8 +501,8 @@ for (int k = 0; k < sensitivityNumber; k++) { // Creates the R expression to import results in R - String name = simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k).getExportFilename(); + String name = param.getSensitivityExport().get(k) + .getExportFilename(); //Create the dataforaov data.frame String dataframe = "dataforaov<-data.frame(factors," + name @@ -588,23 +588,19 @@ //Save the results with the scenarios. engine.voidEval("write.csv(dataforaov,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Results.csv\")"); log.info("Message sent to R : write.csv(dataforaov,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Results.csv\")"); //Save the sensitivity indices engine.voidEval("write.csv(exportsensitivity,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_SensitivityIndices.csv\")"); log.info("Message sent to R : write.csv(exportsensitivity,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_SensitivityIndices.csv\")"); //FIXME export through java to enable export when using Rserve (when distant Rserve). Modified: trunk/sensitivity/SensitivityCalculatorRRandomLHS.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorRRandomLHS.java 2009-05-07 16:40:51 UTC (rev 136) +++ trunk/sensitivity/SensitivityCalculatorRRandomLHS.java 2009-05-07 17:07:20 UTC (rev 137) @@ -36,6 +36,7 @@ import org.codelutin.util.FileUtil; import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityCalculator; import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan; import fr.ifremer.isisfish.simulator.sensitivity.Domain; @@ -118,8 +119,8 @@ //Get Isis R session log.info("load(\".RData\")"); engine.voidEval("load(\".RData\")"); - - //Set working directory for other results + + //Set working directory for other results log.info("setwd(\"" + outputdirectory + "\")"); engine.voidEval("setwd(\"" + outputdirectory + "\")"); @@ -129,8 +130,9 @@ //Create the scenarios String rInstruction = "x<-randomLHS(%s,%s)"; - String rCall = String.format(rInstruction,param_simulationNumber,factornumber); - + String rCall = String.format(rInstruction, param_simulationNumber, + factornumber); + if (param_modifR) { JLabel label = new JLabel( "Modifier le code R envoyé si vous le souhaitez"); @@ -147,7 +149,7 @@ JOptionPane.QUESTION_MESSAGE); rCall = text.getText(); } - + engine.voidEval(rCall); log.info("Message sent to R : " + rCall); @@ -166,8 +168,8 @@ Factor factor = plan.getFactors().get(i); if ((factor.getDomain() instanceof MatrixContinuousDomain) || (factor.getDomain() instanceof EquationContinuousDomain)) { - factor - .setValueForIdentifier(morris.getValue(new int[] { i, j })); + factor.setValueForIdentifier(morris.getValue(new int[] { + i, j })); } else { Double value = (Double) ((ContinuousDomain) factor .getDomain()).getMinBound() @@ -411,33 +413,32 @@ //Get back the factors number int factorNumber = ((Double) engine.eval("length(factors)-1")) .intValue(); - - //Get back the simulation number - param_simulationNumber = (Integer)(engine.eval("length(factors[,1])")); - int sensitivityNumber = simulationStorages.get(0).getParameter() - .getSensitivityExport().size(); + //Get back the simulation number + param_simulationNumber = (Integer) (engine + .eval("length(factors[,1])")); + SimulationParameter param = simulationStorages.get(0) + .getParameter(); + int sensitivityNumber = param.getSensitivityExport().size(); + for (int k = 0; k < sensitivityNumber; k++) { - // Creates the R expression to import results in R - String name = simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k).getExportFilename(); + // Creates the R expression to import results in R + String name = param.getSensitivityExport().get(k) + .getExportFilename(); String rInstruction = name + "<-c("; - for (int l = 0; l < param_simulationNumber; l++) { + for (int l = 0; l < simulationStorages.size(); l++) { File importFile = new File(simulationStorages.get(l) .getDirectory().toString() + File.separator - + SimulationStorage.RESULT_EXPORT_DIRECTORY, - simulationStorages.get(l).getParameter() - .getSensitivityExport().get(k) - .getExportFilename() - + simulationStorages.get(l).getParameter() - .getSensitivityExport().get(k) - .getExtensionFilename()); + + SimulationStorage.RESULT_EXPORT_DIRECTORY, param + .getSensitivityExport().get(k).getExportFilename() + + param.getSensitivityExport().get(k) + .getExtensionFilename()); String simulResult = FileUtil.readAsString(importFile); double simulationResult = Double.valueOf(simulResult); - if (l < param_simulationNumber - 1) { + if (l < simulationStorages.size() - 1) { rInstruction = rInstruction + simulationResult + ","; } else { rInstruction = rInstruction + simulationResult; @@ -471,8 +472,8 @@ for (int k = 0; k < sensitivityNumber; k++) { // Creates the R expression to import results in R - String name = simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k).getExportFilename(); + String name = param.getSensitivityExport().get(k) + .getExportFilename(); //Create the dataforaov data.frame String dataframe = "dataforaov<-data.frame(factors," + name @@ -558,23 +559,19 @@ //Save the results with the scenarios. engine.voidEval("write.csv(dataforaov,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Results.csv\")"); log.info("Message sent to R : write.csv(dataforaov,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Results.csv\")"); //Save the sensitivity indices engine.voidEval("write.csv(exportsensitivity,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_SensitivityIndices.csv\")"); log.info("Message sent to R : write.csv(exportsensitivity,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_SensitivityIndices.csv\")"); //FIXME export through java to enable export when using Rserve (when distant Rserve). Modified: trunk/sensitivity/SensitivityCalculatorRSobol.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorRSobol.java 2009-05-07 16:40:51 UTC (rev 136) +++ trunk/sensitivity/SensitivityCalculatorRSobol.java 2009-05-07 17:07:20 UTC (rev 137) @@ -38,6 +38,7 @@ import org.rosuda.JRI.REXP; import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityCalculator; import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan; import fr.ifremer.isisfish.simulator.sensitivity.Domain; @@ -295,8 +296,8 @@ Factor factor = plan.getFactors().get(i); if ((factor.getDomain() instanceof MatrixContinuousDomain) || (factor.getDomain() instanceof EquationContinuousDomain)) { - factor.setValueForIdentifier(Double.valueOf( - fast.getValue(new int[] { i, j })).toString()); + factor.setValueForIdentifier(fast + .getValue(new int[] { i, j })); } else { Double value = (Double) ((ContinuousDomain) factor .getDomain()).getMinBound() @@ -370,26 +371,24 @@ 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() - .getSensitivityExport().size(); + SimulationParameter param = simulationStorages.get(0) + .getParameter(); + int sensitivityNumber = param.getSensitivityExport().size(); for (int k = 0; k < sensitivityNumber; k++) { // Creates the R expression to import results in R - String name = simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k).getExportFilename(); + String name = param.getSensitivityExport().get(k) + .getExportFilename(); String rInstruction = name + "<-c("; for (int l = 0; l < scenariosNumber; l++) { File importFile = new File(simulationStorages.get(l) .getDirectory().toString() + File.separator - + SimulationStorage.RESULT_EXPORT_DIRECTORY, - simulationStorages.get(l).getParameter() - .getSensitivityExport().get(k) - .getExportFilename() - + simulationStorages.get(l).getParameter() - .getSensitivityExport().get(k) - .getExtensionFilename()); + + SimulationStorage.RESULT_EXPORT_DIRECTORY, param + .getSensitivityExport().get(k).getExportFilename() + + param.getSensitivityExport().get(k) + .getExtensionFilename()); String simulResult = FileUtil.readAsString(importFile); double simulationResult = Double.valueOf(simulResult); if (l < simulationStorages.size() - 1) { @@ -405,6 +404,9 @@ // Send the simulation results engine.voidEval(rInstruction); + // Send the simulation results + engine.voidEval(rInstruction); + //Put results in isis.simule engine.voidEval("isis.simule<-data.frame(isis.simule," + name + ")"); @@ -426,8 +428,8 @@ for (int k = 0; k < sensitivityNumber; k++) { // Creates the R expression to import results in R - String name = simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k).getExportFilename(); + String name = param.getSensitivityExport().get(k) + .getExportFilename(); //Compute results engine.voidEval("tell(a,y=" + name + ")"); @@ -461,47 +463,39 @@ //Export V engine.voidEval("write.csv(a$V,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_SensitivityIndices.csv\")"); log.info("Message sent to R : " + "write.csv(a$V,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_V.csv\")"); //Export DD engine.voidEval("write.csv(a$D,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_D.csv\")"); log.info("Message sent to R : " + "write.csv(a$D,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_D.csv\")"); //Export S engine.voidEval("write.csv(a$S,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_S.csv\")"); log.info("Message sent to R : " + "write.csv(a$S,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_S.csv\")"); //Export results engine.voidEval("write.csv(dfresults,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Results.csv\")"); log.info("Message sent to R : " + "write.csv(results,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Results.csv\")"); //FIXME export through java to enable export when using Rserve Modified: trunk/sensitivity/SensitivityCalculatorRegularFractions.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorRegularFractions.java 2009-05-07 16:40:51 UTC (rev 136) +++ trunk/sensitivity/SensitivityCalculatorRegularFractions.java 2009-05-07 17:07:20 UTC (rev 137) @@ -19,6 +19,7 @@ import org.codelutin.util.FileUtil; import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityCalculator; import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan; import fr.ifremer.isisfish.simulator.sensitivity.Domain; @@ -381,39 +382,39 @@ int factorNumber = ((Double) engine.eval("length(factors)-1")) .intValue(); - int sensitivityNumber = simulationStorages.get(0).getParameter() - .getSensitivityExport().size(); + SimulationParameter param = simulationStorages.get(0) + .getParameter(); + int sensitivityNumber = param.getSensitivityExport().size(); for (int k = 0; k < sensitivityNumber; k++) { - String name = simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k).getExportFilename(); - - //Create the results vectors - String result = name + "<-c("; + // Creates the R expression to import results in R + String name = param.getSensitivityExport().get(k) + .getExportFilename(); + String rInstruction = name + "<-c("; for (int l = 0; l < simulationStorages.size(); l++) { File importFile = new File(simulationStorages.get(l) .getDirectory().toString() + File.separator - + SimulationStorage.RESULT_EXPORT_DIRECTORY, - simulationStorages.get(l).getParameter() - .getSensitivityExport().get(k) - .getExportFilename() - + simulationStorages.get(l).getParameter() - .getSensitivityExport().get(k) - .getExtensionFilename()); + + SimulationStorage.RESULT_EXPORT_DIRECTORY, param + .getSensitivityExport().get(k).getExportFilename() + + param.getSensitivityExport().get(k) + .getExtensionFilename()); String simulResult = FileUtil.readAsString(importFile); double simulationResult = Double.valueOf(simulResult); if (l < simulationStorages.size() - 1) { - result = result + simulationResult + ","; + rInstruction = rInstruction + simulationResult + ","; } else { - result = result + simulationResult; + rInstruction = rInstruction + simulationResult; } } - result = result + ")"; - engine.voidEval(result); - log.info("Message sent to R : " + result); + rInstruction = rInstruction + ")"; + log.info("Message sent to R : " + rInstruction); + + // Send the simulation results + engine.voidEval(rInstruction); + //Put results in isis.simule engine.voidEval("isis.simule<-data.frame(isis.simule," + name + ")"); @@ -431,8 +432,7 @@ for (int k = 0; k < sensitivityNumber; k++) { // Creates the R expression to import results in R - String name = simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k).getExportFilename(); + String name = param.getSensitivityExport().get(k).getExportFilename(); //Create the dataforaov data.frame String dataframe = "dataforaov<-data.frame(factors," + name @@ -518,23 +518,19 @@ //Save the results with the scenarios. engine.voidEval("write.csv(dataforaov,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Results.csv\")"); log.info("Message sent to R : write.csv(dataforaov,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_Results.csv\")"); //Save the sensitivity indices engine.voidEval("write.csv(exportsensitivity,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_SensitivityIndices.csv\")"); log.info("Message sent to R : write.csv(exportsensitivity,\"" - + simulationStorages.get(0).getParameter() - .getSensitivityExport().get(k) + + param.getSensitivityExport().get(k) .getExportFilename() + "_SensitivityIndices.csv\")"); //FIXME export through java to enable export when using Rserve (when distant Rserve).
participants (1)
-
jcouteau@users.labs.libre-entreprise.org