r3966 - branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity
Author: echatellier Date: 2014-04-17 16:57:34 +0200 (Thu, 17 Apr 2014) New Revision: 3966 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3966 Log: fixes #725: Prise en compte de la distribution dans les AS Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysis.java Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java 2014-04-17 09:04:43 UTC (rev 3965) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java 2014-04-17 14:57:34 UTC (rev 3966) @@ -211,6 +211,79 @@ } /** + * Open R engine and load RData file. + * + * @param outputDirectory save directory + * @return rengine + * @throws RException + */ + protected REngine openEngine(File outputDirectory) throws RException { + REngine engine = new RProxy(); + + // Clear session + engine.clearSession(); + + String sensitivityAnalysisName = outputDirectory.getName(); + // Get Isis R session + engine.loadRData(outputDirectory.getParentFile(), sensitivityAnalysisName); + + // - is a non allowed character name in R + String prefixName = sensitivityAnalysisName.replaceAll("-", ""); + + // Rename R objects for manipulation purpose (if exists) + String renameIsisSimule = "if (exists(\"%1$s.isis.simule\")) isis.simule<-%1$s.isis.simule"; + String renameIsisFactorDistribution = "if (exists(\"%1$s.isis.factor.distribution\")) isis.factor.distribution<-%1$s.isis.factor.distribution"; + String renameIsisFactor = "if (exists(\"%1$s.isis.factors\")) isis.factors<-%1$s.isis.factors"; + String renameIsisMethodExp = "if (exists(\"%1$s.isis.methodExp\")) isis.methodExp<-%1$s.isis.methodExp"; + String renameIsisMethodAnalyse = "if (exists(\"%1$s.isis.methodAnalyse\")) isis.methodAnalyse<-%1$s.isis.methodAnalyse"; + engine.voidEval(String.format(renameIsisSimule, prefixName)); + engine.voidEval(String.format(renameIsisFactorDistribution, prefixName)); + engine.voidEval(String.format(renameIsisFactor, prefixName)); + engine.voidEval(String.format(renameIsisMethodExp, prefixName)); + engine.voidEval(String.format(renameIsisMethodAnalyse, prefixName)); + + return engine; + } + + /** + * Save RData file and close Rengine. + * + * @param engine r engine + * @param outputDirectory save directory + * @throws RException + */ + protected void closeEngine(REngine engine, File outputDirectory) throws RException { + + String sensitivityAnalysisName = outputDirectory.getName(); + // - is a non allowed character name in R + String prefixName = sensitivityAnalysisName.replaceAll("-", ""); + + // Rename R objects for saving purpose + String renameIsisSimule = "%s.isis.simule<-isis.simule"; + String renameIsisFactorDistribution = "%s.isis.factor.distribution<-isis.factor.distribution"; + String renameIsisFactor = "%s.isis.factors<-isis.factors"; + String renameIsisMethodExp = "%s.isis.methodExp<-isis.methodExp"; + String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-isis.methodAnalyse"; + engine.voidEval(String.format(renameIsisSimule, prefixName)); + engine.voidEval(String.format(renameIsisFactorDistribution, prefixName)); + engine.voidEval(String.format(renameIsisFactor, prefixName)); + engine.voidEval(String.format(renameIsisMethodExp, prefixName)); + engine.voidEval(String.format(renameIsisMethodAnalyse, prefixName)); + + // Clean temporary R objects + for (String object : engine.ls()) { + if (!object.startsWith(prefixName)) { + engine.remove(object); + } + } + + // Save Isis R session + engine.saveRData(outputDirectory.getParentFile(), sensitivityAnalysisName); + + engine.terminate(); + } + + /** * Affiche une boite de dialogue modale permettant de modifier l'expression * R. * @@ -320,31 +393,6 @@ } /** - * Renome les objets R en les prefixant par l'identifiant de la simulation. - * - * @param engine r engine - * @param simulationName simulation name - * @throws RException - */ - protected void renameObjects(REngine engine, String simulationName) - throws RException { - - String renameIsisSimule = "%s.isis.simule<-isis.simule"; - String renameIsisFactorDistribution = "%s.isis.factor.distribution<-isis.factor.distribution"; - String renameIsisFactor = "%s.isis.factor<-isis.factors"; - String renameIsisMethodExp = "%s.isis.methodExp<-isis.MethodExp"; - - engine.voidEval(String.format(renameIsisSimule, simulationName)); - - engine.voidEval(String.format(renameIsisFactorDistribution, - simulationName)); - - engine.voidEval(String.format(renameIsisFactor, simulationName)); - - engine.voidEval(String.format(renameIsisMethodExp, simulationName)); - } - - /** * Get factor domain min bound depending on distribution. */ protected double getMinBound(Factor factor) { @@ -435,12 +483,4 @@ return String.format(isisFactorDistribution, factorNames, distribution, parameters); } - - /** - * - * @param value - */ - protected void setFactorValue(double value) { - - } } Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysis.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysis.java 2014-04-17 09:04:43 UTC (rev 3965) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysis.java 2014-04-17 14:57:34 UTC (rev 3966) @@ -65,7 +65,7 @@ * scenarios à prendre en compte pour les simulations. * * @param plan plan a analyser - * @param outputdirectory master sensitivity export directory + * @param outputDirectory master sensitivity export directory * * @return un {@link SensitivityScenarios} * @throws SensitivityException if calculator impl fail to execute @@ -74,7 +74,7 @@ * @see Scenario * @see SensitivityScenarios */ - SensitivityScenarios compute(DesignPlan plan, File outputdirectory) + SensitivityScenarios compute(DesignPlan plan, File outputDirectory) throws SensitivityException; /**
participants (1)
-
echatellier@users.forge.codelutin.com