Author: jcouteau Date: 2012-02-28 17:26:12 +0100 (Tue, 28 Feb 2012) New Revision: 273 Url: http://forge.codelutin.com/repositories/revision/isis-fish-data/273 Log: Clean AS Modified: trunk/sensitivityanalysis/SensitivityCalculatorJavaExpandGrid.java trunk/sensitivityanalysis/SensitivityCalculatorRDOptimal.java trunk/sensitivityanalysis/SensitivityCalculatorRExpandGrid.java trunk/sensitivityanalysis/SensitivityCalculatorRFast.java trunk/sensitivityanalysis/SensitivityCalculatorRMorris.java trunk/sensitivityanalysis/SensitivityCalculatorROptimumLHS.java trunk/sensitivityanalysis/SensitivityCalculatorRRandomLHS.java trunk/sensitivityanalysis/SensitivityCalculatorRSobol.java trunk/sensitivityanalysis/SensitivityCalculatorRegularFractions.java Modified: trunk/sensitivityanalysis/SensitivityCalculatorJavaExpandGrid.java =================================================================== --- trunk/sensitivityanalysis/SensitivityCalculatorJavaExpandGrid.java 2012-02-28 16:05:51 UTC (rev 272) +++ trunk/sensitivityanalysis/SensitivityCalculatorJavaExpandGrid.java 2012-02-28 16:26:12 UTC (rev 273) @@ -364,8 +364,15 @@ } //Rename R objects for saving purpose - renameObjects(engine, simulationName); + renameObjects(engine,simulationName); + //Clean temporary R objects + for (String object:engine.ls()) { + if (!object.startsWith(simulationName)){ + engine.remove(object); + } + } + // Save Isis R session engine.saveRData(outputdirectory.getParentFile(), outputdirectory.getName()); Modified: trunk/sensitivityanalysis/SensitivityCalculatorRDOptimal.java =================================================================== --- trunk/sensitivityanalysis/SensitivityCalculatorRDOptimal.java 2012-02-28 16:05:51 UTC (rev 272) +++ trunk/sensitivityanalysis/SensitivityCalculatorRDOptimal.java 2012-02-28 16:26:12 UTC (rev 273) @@ -238,6 +238,16 @@ "\"nomModel\")<-\"isis-fish-externe-R\""); engine.voidEval("names(isis.simule)<-isis.factors[[1]]"); + //Rename R objects for saving purpose + renameObjects(engine,simulationName); + + //Clean temporary R objects + for (String object:engine.ls()) { + if (!object.startsWith(simulationName)){ + engine.remove(object); + } + } + // Save Isis R session engine.saveRData(outputDirectory.getParentFile(), outputDirectory.getName()); Modified: trunk/sensitivityanalysis/SensitivityCalculatorRExpandGrid.java =================================================================== --- trunk/sensitivityanalysis/SensitivityCalculatorRExpandGrid.java 2012-02-28 16:05:51 UTC (rev 272) +++ trunk/sensitivityanalysis/SensitivityCalculatorRExpandGrid.java 2012-02-28 16:26:12 UTC (rev 273) @@ -347,9 +347,15 @@ } //Rename R objects for saving purpose - renameObjects(engine, firstStorageName); + //Clean temporary R objects + for (String object:engine.ls()) { + if (!object.startsWith(firstStorageName)){ + engine.remove(object); + } + } + //Save Isis R session engine.saveRData(outputDirectory.getParentFile(), outputDirectory.getName()); Modified: trunk/sensitivityanalysis/SensitivityCalculatorRFast.java =================================================================== --- trunk/sensitivityanalysis/SensitivityCalculatorRFast.java 2012-02-28 16:05:51 UTC (rev 272) +++ trunk/sensitivityanalysis/SensitivityCalculatorRFast.java 2012-02-28 16:26:12 UTC (rev 273) @@ -333,6 +333,13 @@ //Rename R objects for saving purpose renameObjects(engine, simulationName); + //Clean temporary R objects + for (String object:engine.ls()) { + if (!object.startsWith(simulationName)){ + engine.remove(object); + } + } + // Save Isis R session engine.saveRData(outputDirectory.getParentFile(), outputDirectory.getName()); Modified: trunk/sensitivityanalysis/SensitivityCalculatorRMorris.java =================================================================== --- trunk/sensitivityanalysis/SensitivityCalculatorRMorris.java 2012-02-28 16:05:51 UTC (rev 272) +++ trunk/sensitivityanalysis/SensitivityCalculatorRMorris.java 2012-02-28 16:26:12 UTC (rev 273) @@ -6,15 +6,15 @@ * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 2 of the + * published by the Free Software Foundation, either version 2 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public + * + * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-2.0.html>. * #L% @@ -22,16 +22,8 @@ package sensitivityanalysis; -import java.io.File; -import java.util.List; - +import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.export.SensitivityExport; -import org.nuiton.j2r.REngine; -import org.nuiton.j2r.RException; -import org.nuiton.j2r.RProxy; -import org.nuiton.j2r.types.RDataFrame; - -import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityAnalysis; import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan; @@ -41,17 +33,25 @@ import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios; import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain; import fr.ifremer.isisfish.util.Doc; +import org.nuiton.j2r.REngine; +import org.nuiton.j2r.RException; +import org.nuiton.j2r.RProxy; +import org.nuiton.j2r.types.RDataFrame; +import java.io.File; +import java.util.List; + /** * Implementation of Morris method using R. - * + * * @author jcouteau * @version $Revision$ - * + * * Last update : $Date$ By : * $Author$ */ -public class SensitivityCalculatorRMorris extends AbstractSensitivityAnalysis { +public class SensitivityCalculatorRMorris + extends AbstractSensitivityAnalysis { @Doc("Integer giving the number of repetitions of the design, i.e. the number of elementary effect computed per factor. (Default value : 4)") public int param_r = 4; @@ -62,7 +62,7 @@ /** * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs * continus. - * + * * @return <tt>true</tt> s'il sait la gerer */ @Override @@ -72,14 +72,14 @@ @Override public SensitivityScenarios compute(DesignPlan plan, File outputDirectory) - throws SensitivityException { + throws SensitivityException { setIsisFactorsR(plan, outputDirectory); RDataFrame dataFrame; int nbExperiments; int factorNumber = plan.getFactors().size(); - + SensitivityScenarios thisExperiment = new SensitivityScenarios(); List<Factor> factors = plan.getFactors(); @@ -119,8 +119,8 @@ } String rInstruction = "a<-morris(model=NULL,factors=c(%s),r=%s," + - "design=list(type=\"oat\",levels=c(%s),grid.jump=c(%s))," + - "binf=c(%s),bsup=c(%s))"; + "design=list(type=\"oat\",levels=c(%s),grid.jump=c(%s))," + + "binf=c(%s),bsup=c(%s))"; String rCall = String.format(rInstruction, factorNames, param_r, levels, gridJump, binf, bsup); @@ -129,12 +129,16 @@ rCall = editRInstruction(rCall); } + REngine engine = null; + try { - REngine engine = new RProxy(); + engine = new RProxy(); + engine.clearSession(); + //Get Isis R session engine.loadRData(outputDirectory.getParentFile(), - outputDirectory.getName()); + outputDirectory.getName()); // Load sensitivity package into R (if package already loaded, // nothing happens. @@ -157,12 +161,12 @@ dataFrame = (RDataFrame) engine.eval("expPlan"); dataFrame.setVariable("expPlan"); - nbExperiments = (Integer)engine.eval("dim(a$X)[1]"); + nbExperiments = (Integer)engine.eval("dim(expPlan)[1]"); String factorDistribution = "isis.factor.distribution<-data.frame(" + - "NomFacteur=c(%s)," + - "NomDistribution=c(%s)," + - "ParametreDistribution=c(%s))"; + "NomFacteur=c(%s)," + + "NomDistribution=c(%s)," + + "ParametreDistribution=c(%s))"; String distribution = ""; String parameters = ""; @@ -189,7 +193,7 @@ "\"call\"=call)"); engine.voidEval("attr(isis.MethodExp,\"nomModel\")<-" + "\"isis-fish-externe-R\""); - engine.voidEval("isis.simule<-data.frame(a$X)"); + engine.voidEval("isis.simule<-data.frame(expPlan)"); engine.voidEval("attr(isis.simule,\"nomModel\")<-" + "\"isis-fish-externe-R\""); engine.voidEval("names(isis.simule)<-isis.factors[[1]]"); @@ -213,6 +217,10 @@ } catch (RException eee) { throw new SensitivityException("Can't generate scenarios", eee); + } finally { + if (engine != null) { + engine.terminate(); + } } return thisExperiment; @@ -221,17 +229,21 @@ @Override public void analyzeResult(List<SimulationStorage> simulationStorages, - File outputDirectory) throws SensitivityException { + File outputDirectory) throws SensitivityException { SimulationStorage storage = simulationStorages.get(0); String simulationName = storage.getName().replaceAll("-", ""); + REngine engine = null; + try { - REngine engine = new RProxy(); - + engine = new RProxy(); + + engine.clearSession(); + //Get Isis R session engine.loadRData(outputDirectory.getParentFile(), - outputDirectory.getName()); + outputDirectory.getName()); // Call R // Load sensitivity package into R (if package already loaded, @@ -278,11 +290,11 @@ //creating isis.methodAnalyse engine.voidEval("isis.methodAnalyse<-list(" + - "\"isis.factors\"=isis.factors," + - "\"isis.factor.distribution\"=isis.factor.distribution," + - "\"isis.simule\"=isis.simule," + - "\"call_method\"=\"tell(a,y=" + name + ")" + "\"," + - "\"analysis_result\"=a)"); + //"\"isis.factors\"=isis.factors," + + //"\"isis.factor.distribution\"=isis.factor.distribution," + + "\"isis.simule\"=isis.simule," + + "\"call_method\"=\"tell(a,y=" + name + ")" + "\"," + + "\"analysis_result\"=a)"); //setting isis.methodAnalyse attributes engine.voidEval("attr(isis.methodAnalyse,\"nomModel\")<-" + @@ -324,12 +336,23 @@ //Rename R objects for saving purpose renameObjects(engine,simulationName); + //Clean temporary R objects + for (String object:engine.ls()) { + if (!object.startsWith(simulationName)){ + engine.remove(object); + } + } + // Save Isis R session engine.saveRData(outputDirectory.getParentFile(), - outputDirectory.getName()); + outputDirectory.getName()); } catch (Exception e) { throw new SensitivityException("Can't evaluate results", e); + } finally { + if (engine != null) { + engine.terminate(); + } } } @@ -337,7 +360,7 @@ @Override public String getDescription() { return "Implementation of Morris method using R (needs the sensitivity" + - " package to work)"; + " package to work)"; } } Modified: trunk/sensitivityanalysis/SensitivityCalculatorROptimumLHS.java =================================================================== --- trunk/sensitivityanalysis/SensitivityCalculatorROptimumLHS.java 2012-02-28 16:05:51 UTC (rev 272) +++ trunk/sensitivityanalysis/SensitivityCalculatorROptimumLHS.java 2012-02-28 16:26:12 UTC (rev 273) @@ -381,6 +381,13 @@ //Rename R objects for saving purpose renameObjects(engine, simulationName); + //Clean temporary R objects + for (String object:engine.ls()) { + if (!object.startsWith(simulationName)){ + engine.remove(object); + } + } + engine.terminate(); } catch (Exception e) { Modified: trunk/sensitivityanalysis/SensitivityCalculatorRRandomLHS.java =================================================================== --- trunk/sensitivityanalysis/SensitivityCalculatorRRandomLHS.java 2012-02-28 16:05:51 UTC (rev 272) +++ trunk/sensitivityanalysis/SensitivityCalculatorRRandomLHS.java 2012-02-28 16:26:12 UTC (rev 273) @@ -23,6 +23,7 @@ package sensitivityanalysis; import java.io.File; +import java.lang.String; import java.util.List; import fr.ifremer.isisfish.export.SensitivityExport; @@ -216,6 +217,11 @@ } rInstruction += ")"; engine.voidEval(rInstruction); + + // Clean RData + for (Factor factor:factors) { + engine.remove(factor.getName().replaceAll(" ", "")); + } // Save Isis R session engine.saveRData(outputDirectory.getParentFile(), @@ -368,6 +374,14 @@ //Rename R objects for saving purpose renameObjects(engine, simulationName); + //Clean temporary R objects + for (String object:engine.ls()) { + if (!object.startsWith(simulationName)){ + engine.remove(object); + } + } + + // Save Isis R session engine.saveRData(outputDirectory.getParentFile(), outputDirectory.getName()); Modified: trunk/sensitivityanalysis/SensitivityCalculatorRSobol.java =================================================================== --- trunk/sensitivityanalysis/SensitivityCalculatorRSobol.java 2012-02-28 16:05:51 UTC (rev 272) +++ trunk/sensitivityanalysis/SensitivityCalculatorRSobol.java 2012-02-28 16:26:12 UTC (rev 273) @@ -318,8 +318,15 @@ } //Rename R objects for saving purpose - renameObjects(engine, simulationName); + renameObjects(engine, simulationName); + //Clean temporary R objects + for (String object:engine.ls()) { + if (!object.startsWith(simulationName)){ + engine.remove(object); + } + } + // Save Isis R session engine.saveRData(outputDirectory.getParentFile(), outputDirectory.getName()); Modified: trunk/sensitivityanalysis/SensitivityCalculatorRegularFractions.java =================================================================== --- trunk/sensitivityanalysis/SensitivityCalculatorRegularFractions.java 2012-02-28 16:05:51 UTC (rev 272) +++ trunk/sensitivityanalysis/SensitivityCalculatorRegularFractions.java 2012-02-28 16:26:12 UTC (rev 273) @@ -372,6 +372,13 @@ //Rename R objects for saving purpose renameObjects(engine,simulationName); + //Clean temporary R objects + for (String object:engine.ls()) { + if (!object.startsWith(simulationName)){ + engine.remove(object); + } + } + // Save Isis R session engine.saveRData(outputDirectory.getParentFile(), outputDirectory.getName());
participants (1)
-
jcouteau@users.forge.codelutin.com