r317 - branches/4.2.2/sensitivityanalysis
Author: echatellier Date: 2014-04-17 16:57:23 +0200 (Thu, 17 Apr 2014) New Revision: 317 Url: http://forge.codelutin.com/projects/isis-fish-data/repository/revisions/317 Log: fixes #725: Prise en compte de la distribution dans les AS Modified: branches/4.2.2/sensitivityanalysis/DOptimal.java branches/4.2.2/sensitivityanalysis/Fast.java branches/4.2.2/sensitivityanalysis/Morris.java branches/4.2.2/sensitivityanalysis/OptimumLHS.java branches/4.2.2/sensitivityanalysis/RandomLHS.java branches/4.2.2/sensitivityanalysis/RegularExpandGrid.java branches/4.2.2/sensitivityanalysis/RegularFractions.java branches/4.2.2/sensitivityanalysis/Sobol.java Modified: branches/4.2.2/sensitivityanalysis/DOptimal.java =================================================================== --- branches/4.2.2/sensitivityanalysis/DOptimal.java 2014-04-10 17:01:50 UTC (rev 316) +++ branches/4.2.2/sensitivityanalysis/DOptimal.java 2014-04-17 14:57:23 UTC (rev 317) @@ -102,15 +102,15 @@ Domain domain = factor.getDomain(); if (domain instanceof ContinuousDomain) { - ContinuousDomain contDomain = (ContinuousDomain) domain; + //ContinuousDomain contDomain = (ContinuousDomain) domain; int card = factor.getCardinality(); -// Double min = contDomain.getCalculatorMinBound(); -// Double max = contDomain.getCalculatorMaxBound(); -// -// for (int i = 0; i < card; i++) { -// //add the ith value -// vector += (min + (i * (max - min) / (card - 1))) + ","; -// } + Double min = 0.0; + Double max = 1.0; + + for (int i = 0; i < card; i++) { + //add the ith value + vector += (min + (i * (max - min) / (card - 1))) + ","; + } } else { int nbValues = ((DiscreteDomain) domain).getValuesCount(); for (int i = 0; i < nbValues; i++) { @@ -142,11 +142,11 @@ engine.voidEval(rCall); if (param_order ==1 ){ - rCall = "x<-optFederov(~(%s),data=expandgrid, " + + rCall = "isis.methodAnalyse<-optFederov(~(%s),data=expandgrid, " + "approximate =FALSE, center=F, criterion = \"D\"," + "nRepeats=10)"; } else { - rCall = "x<-optFederov(~(%s)^"+param_order+",data=expandgrid, " + + rCall = "isis.methodAnalyse<-optFederov(~(%s)^"+param_order+",data=expandgrid, " + "approximate =FALSE, center=F, criterion = \"D\"," + "nRepeats=10)"; } @@ -161,10 +161,10 @@ engine.voidEval(rCall); - engine.eval("expPlan<-as.data.frame(x$design)"); + engine.eval("expPlan<-as.data.frame(isis.methodAnalyse$design)"); RDataFrame dataFrame = (RDataFrame)engine.eval("expPlan"); dataFrame.setVariable("expPlan"); - int nbExperiments = (Integer)engine.eval("dim(x$design)[1]"); + int nbExperiments = (Integer)engine.eval("dim(isis.methodAnalyse$design)[1]"); List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios(); for (int j = 0; j < nbExperiments; j++) { @@ -194,11 +194,9 @@ parameters += ","; } if (domain instanceof ContinuousDomain){ - ContinuousDomain contDomain = (ContinuousDomain)domain; + //ContinuousDomain contDomain = (ContinuousDomain)domain; distribution += "\"qunif\""; -// parameters += "\"[" + contDomain.getMinBound() -// + ";" + contDomain.getMaxBound() -// + "]\""; + parameters += "\"[0.0;1.0]\""; } else { DiscreteDomain discDomain = (DiscreteDomain)domain; distribution += "\"discrete\""; @@ -220,18 +218,18 @@ distribution, parameters)); engine.voidEval("call<-\"" + rCall + "\""); - engine.voidEval("isis.MethodExp<-list(" + + engine.voidEval("isis.methodExp<-list(" + "\"isis.factors\"=isis.factors," + "\"isis.factor.distribution\"=isis.factor.distribution," + "\"call\"=call)"); - engine.voidEval("attr(isis.MethodExp," + + engine.voidEval("attr(isis.methodExp," + "\"nomModel\")<-\"isis-fish-externe-R\""); - engine.voidEval("isis.simule<-x$design"); + engine.voidEval("isis.simule<-isis.methodAnalyse$design"); engine.voidEval("attr(isis.simule," + "\"nomModel\")<-\"isis-fish-externe-R\""); engine.voidEval("names(isis.simule)<-isis.factors[[1]]"); - closeEngine(engine, outputDirectory, false); + closeEngine(engine, outputDirectory); } catch (RException eee) { throw new SensitivityException("Can't generate scenarios", eee); @@ -249,7 +247,7 @@ REngine engine = openEngine(outputDirectory); //Get back the factors number - int factorNumber = (Integer)engine.eval("dim(x$design)[2]"); + int factorNumber = (Integer)engine.eval("dim(isis.methodAnalyse$design)[2]"); SimulationParameter param = simulationStorages.get(0).getParameter(); int sensitivityNumber = param.getSensitivityExport().size(); @@ -274,7 +272,7 @@ + name + ")"); //Create the dataforaov data.frame - String dataFrame = "dataforaov<-data.frame(x$design," + String dataFrame = "dataforaov<-data.frame(isis.methodAnalyse$design," + name + "=" + name + ")"; engine.voidEval(dataFrame); @@ -283,11 +281,11 @@ for (int j = 0; j < factorNumber; j++) { if (j < (factorNumber - 1)) { aovCall = aovCall - + engine.eval("names(x$design)[" + (j + 1) + "]") + + engine.eval("names(isis.methodAnalyse$design)[" + (j + 1) + "]") + "+"; } else { aovCall = aovCall - + engine.eval("names(x$design)[" + (j + 1) + "]") + + engine.eval("names(isis.methodAnalyse$design)[" + (j + 1) + "]") + ")"; if(param_order>1){ aovCall+="^" + param_order + ",data=dataforaov)"; @@ -343,20 +341,16 @@ //FIXME export through java to enable export when using Rserve (when distant Rserve). //creating isis.methodAnalyse - engine.voidEval("isis.methodAnalyse<-list(" + + String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", firstStorageName + "." + name); + engine.voidEval(exportMethodAnalyse + "<-list(" + "\"isis.factors\"=isis.factors," + "\"isis.factor.distribution\"=isis.factor.distribution," + "\"isis.simule\"=isis.simule," + "\"call_method\"=\"" + aovCall + "\"," + "\"analysis_result\"=list(aovresult,IndSensibilite))"); - engine.voidEval("attr(isis.methodAnalyse," + + engine.voidEval("attr(" + exportMethodAnalyse + "," + "\"nomModel\")<-\"isis-fish-externe-R\""); - - String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-isis.methodAnalyse"; - engine.voidEval(String.format(renameIsisMethodAnalyse, - firstStorageName + "." + name)); - } closeEngine(engine, outputDirectory); Modified: branches/4.2.2/sensitivityanalysis/Fast.java =================================================================== --- branches/4.2.2/sensitivityanalysis/Fast.java 2014-04-10 17:01:50 UTC (rev 316) +++ branches/4.2.2/sensitivityanalysis/Fast.java 2014-04-17 14:57:23 UTC (rev 317) @@ -26,6 +26,7 @@ import java.util.List; import fr.ifremer.isisfish.simulator.sensitivity.*; + import org.nuiton.j2r.REngine; import org.nuiton.j2r.RException; @@ -33,6 +34,7 @@ import fr.ifremer.isisfish.export.SensitivityExport; import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.util.Doc; + import org.nuiton.j2r.types.RDataFrame; /** @@ -85,7 +87,7 @@ // only run with continuous checkAllFactorContinuous(factors); - String rInstruction = "a<-fast99(" + + String rInstruction = "isis.methodAnalyse<-fast99(" + "model=NULL," + "factors=%s, " + "n=%s, " + @@ -126,25 +128,25 @@ engine.voidEval(rInstruction); // Get back experiment plan - dataFrame = (RDataFrame) engine.eval("a$X"); - dataFrame.setVariable("a$X"); + dataFrame = (RDataFrame) engine.eval("isis.methodAnalyse$X"); + dataFrame.setVariable("isis.methodAnalyse$X"); - nbExperiments = (Integer)engine.eval("dim(a$X)[1]"); + nbExperiments = (Integer)engine.eval("dim(isis.methodAnalyse$X)[1]"); engine.voidEval(getIsisFactorDistribution(factors)); - engine.voidEval("call<-a$call"); + engine.voidEval("call<-isis.methodAnalyse$call"); - engine.voidEval("isis.MethodExp<-list(" + + engine.voidEval("isis.methodExp<-list(" + "\"isis.factors\"=isis.factors," + "\"isis.factor.distribution\"=isis.factor.distribution," + "\"call\"=call)"); - engine.voidEval("attr(isis.MethodExp,\"nomModel\")<-" + + engine.voidEval("attr(isis.methodExp,\"nomModel\")<-" + "\"isis-fish-externe-R\""); - engine.voidEval("isis.simule<-data.frame(a$X)"); + engine.voidEval("isis.simule<-data.frame(isis.methodAnalyse$X)"); engine.voidEval("attr(isis.simule,\"nomModel\")<-" + "\"isis-fish-externe-R\""); @@ -163,7 +165,7 @@ thisExperiment.setScenarios(thisExperimentScenarios); } - closeEngine(engine, outputDirectory, false); + closeEngine(engine, outputDirectory); } catch (RException eee) { throw new SensitivityException("Can't generate scenarios", eee); } @@ -212,7 +214,7 @@ //adding attribute to isis.Simule engine.voidEval("attr(isis.simule,\"nomModel\")<-" + "\"isis-fish-externe-R\""); - 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++) { @@ -221,54 +223,48 @@ .getExportFilename(); //Compute results - engine.voidEval("tell(a,y=" + name + ")"); + engine.voidEval("tell(isis.methodAnalyse,y=" + name + ")"); - engine.voidEval("names(a$V)<-factornames"); - engine.voidEval("names(a$X)<-factornames"); - engine.voidEval("names(a$D1)<-factornames"); - engine.voidEval("names(a$Dt)<-factornames"); + engine.voidEval("names(isis.methodAnalyse$V)<-isis.factor.distribution$NomFacteur"); + engine.voidEval("names(isis.methodAnalyse$X)<-isis.factor.distribution$NomFacteur"); + engine.voidEval("names(isis.methodAnalyse$D1)<-isis.factor.distribution$NomFacteur"); + engine.voidEval("names(isis.methodAnalyse$Dt)<-isis.factor.distribution$NomFacteur"); //creating isis.methodAnalyse - engine.voidEval("isis.methodAnalyse<-list(" + + String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name); + engine.voidEval(exportMethodAnalyse + "<-list(" + "\"isis.factors\"=isis.factors," + "\"isis.factor.distribution\"=isis.factor.distribution," + "\"isis.simule\"=isis.simule," + - "call_method=\"tell(a,y=" + name + ")" + "\"," + - "\"analysis_result\"=a)"); + "call_method=\"tell(isis.methodAnalyse,y=" + name + ")" + "\"," + + "\"analysis_result\"=isis.methodAnalyse)"); //setting isis.methodAnalyse attributes - engine.voidEval("attr(isis.methodAnalyse,\"nomModel\")<-" + + engine.voidEval("attr(" + exportMethodAnalyse + ",\"nomModel\")<-" + "\"isis-fish-externe-R\")"); //Create the data.frame of scenarios and results for export purpose - engine.voidEval("dfresults<-data.frame(a$X,a$y)"); + engine.voidEval("dfresults<-data.frame(isis.methodAnalyse$X,isis.methodAnalyse$y)"); //Set working directory engine.setwd(outputDirectory); //Export V - engine.voidEval("write.csv(a$V,\"" + name + "_V.csv\")"); + engine.voidEval("write.csv(isis.methodAnalyse$V,\"" + name + "_V.csv\")"); //Export D1 - engine.voidEval("write.csv(a$D1,\"" + name + "_D1.csv\")"); + engine.voidEval("write.csv(isis.methodAnalyse$D1,\"" + name + "_D1.csv\")"); //Export Dt - engine.voidEval("write.csv(a$Dt,\"" + name + "_Dt.csv\")"); + engine.voidEval("write.csv(isis.methodAnalyse$Dt,\"" + name + "_Dt.csv\")"); //Set dfresults names - engine.voidEval("resultsnames<-c(factornames,\"Result\")"); - engine.voidEval("names(dfresults)<-resultsnames"); + engine.voidEval("resultsnames<-c(isis.factor.distribution$NomFacteur,\"Result\")"); + engine.voidEval("names(dfresults)<-isis.factor.distribution$NomFacteur"); //Export results engine.voidEval("write.csv(dfresults,\"" + name + "_Results.csv\")"); //FIXME export through java to enable export when using Rserve - - String renameIsisMethodAnalyse = "%s.isis.methodAnalyse" + - "<-isis.methodAnalyse"; - - engine.voidEval(String.format(renameIsisMethodAnalyse, - simulationName + "." + name)); - } closeEngine(engine, outputDirectory); Modified: branches/4.2.2/sensitivityanalysis/Morris.java =================================================================== --- branches/4.2.2/sensitivityanalysis/Morris.java 2014-04-10 17:01:50 UTC (rev 316) +++ branches/4.2.2/sensitivityanalysis/Morris.java 2014-04-17 14:57:23 UTC (rev 317) @@ -28,6 +28,7 @@ import fr.ifremer.isisfish.simulator.sensitivity.*; import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain; import fr.ifremer.isisfish.util.Doc; + import org.apache.commons.lang3.StringUtils; import org.nuiton.j2r.REngine; import org.nuiton.j2r.RException; @@ -111,7 +112,7 @@ bsup += 1; } - String rInstruction = "a<-morris(model=NULL,factors=c(%s),r=%s," + + String rInstruction = "isis.methodAnalyse<-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))"; @@ -142,7 +143,7 @@ engine.setwd(outputDirectory); // Get back experiment plan - engine.eval("expPlan<-as.data.frame(a$X)"); + engine.eval("expPlan<-as.data.frame(isis.methodAnalyse$X)"); dataFrame = (RDataFrame) engine.eval("expPlan"); dataFrame.setVariable("expPlan"); @@ -179,12 +180,12 @@ engine.voidEval(String.format(factorDistribution, factorNames, distribution, parameters)); - engine.voidEval("call<-a$call"); - engine.voidEval("isis.MethodExp<-list(" + + engine.voidEval("call<-isis.methodAnalyse$call"); + engine.voidEval("isis.methodExp<-list(" + "\"isis.factors\"=isis.factors," + "\"isis.factor.distribution\"=isis.factor.distribution," + "\"call\"=call)"); - engine.voidEval("attr(isis.MethodExp,\"nomModel\")<-" + + engine.voidEval("attr(isis.methodExp,\"nomModel\")<-" + "\"isis-fish-externe-R\""); engine.voidEval("isis.simule<-data.frame(expPlan)"); engine.voidEval("attr(isis.simule,\"nomModel\")<-" + @@ -204,7 +205,7 @@ thisExperiment.setScenarios(thisExperimentScenarios); } - closeEngine(engine, outputDirectory, false); + closeEngine(engine, outputDirectory); } catch (RException eee) { throw new SensitivityException("Can't generate scenarios", eee); @@ -255,7 +256,7 @@ engine.voidEval("attr(isis.simule,\"nomModel\")<-" + "\"isis-fish-externe-R\""); - 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++) { @@ -264,34 +265,35 @@ .getExportFilename(); //Compute results - engine.voidEval("tell(a,y=" + name + ")"); + engine.voidEval("tell(isis.methodAnalyse,y=" + name + ")"); //creating isis.methodAnalyse - engine.voidEval("isis.methodAnalyse<-list(" + + String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name); + engine.voidEval(exportMethodAnalyse + "<-list(" + //"\"isis.factors\"=isis.factors," + //"\"isis.factor.distribution\"=isis.factor.distribution," + "\"isis.simule\"=isis.simule," + - "\"call_method\"=\"tell(a,y=" + name + ")" + "\"," + - "\"analysis_result\"=a)"); + "\"call_method\"=\"tell(isis.methodAnalyse,y=" + name + ")" + "\"," + + "\"analysis_result\"=isis.methodAnalyse)"); //setting isis.methodAnalyse attributes - engine.voidEval("attr(isis.methodAnalyse,\"nomModel\")<-" + + engine.voidEval("attr(" + exportMethodAnalyse + ",\"nomModel\")<-" + "\"isis-fish-externe-R\""); // Get back the sensitivity results, mu, mu star and sigma. - engine.voidEval("mu<-apply(a$ee, 2, mean)"); - engine.voidEval("mu.star <- apply(a$ee, 2, function(a) mean(abs(a)))"); - engine.voidEval("sigma <- apply(a$ee, 2, sd)"); + engine.voidEval("mu<-apply(isis.methodAnalyse$ee, 2, mean)"); + engine.voidEval("mu.star <- apply(isis.methodAnalyse$ee, 2, function(a) mean(abs(a)))"); + engine.voidEval("sigma <- apply(isis.methodAnalyse$ee, 2, sd)"); //Create the data.frame of sensitivity indices for export purpose engine.voidEval("df<-data.frame(mu,mu.star,sigma)"); - engine.voidEval("row.names(df)<-factornames"); + engine.voidEval("row.names(df)<-isis.factor.distribution$NomFacteur"); //Create the data.frame of scenarios and results for export purpose - engine.voidEval("dfresults<-data.frame(a$X," + name + ")"); + engine.voidEval("dfresults<-data.frame(isis.methodAnalyse$X," + name + ")"); //Set dfresults names - engine.voidEval("resultsnames<-c(factornames,\"Result\")"); + engine.voidEval("resultsnames<-c(isis.factor.distribution$NomFacteur,\"Result\")"); engine.voidEval("names(dfresults)<-resultsnames"); //Export sensitivity indices @@ -303,12 +305,6 @@ "\"" + name + "_Results.csv\")"); //FIXME export through java to enable export when using Rserve - String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-" + - "isis.methodAnalyse"; - - engine.voidEval(String.format(renameIsisMethodAnalyse, - simulationName + "." + name)); - } closeEngine(engine, outputDirectory); Modified: branches/4.2.2/sensitivityanalysis/OptimumLHS.java =================================================================== --- branches/4.2.2/sensitivityanalysis/OptimumLHS.java 2014-04-10 17:01:50 UTC (rev 316) +++ branches/4.2.2/sensitivityanalysis/OptimumLHS.java 2014-04-17 14:57:23 UTC (rev 317) @@ -32,6 +32,7 @@ import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.simulator.sensitivity.*; import fr.ifremer.isisfish.util.Doc; + import org.nuiton.j2r.types.RDataFrame; /** @@ -83,7 +84,7 @@ //Load the lhs library engine.voidEval("library(lhs)"); - String rInstruction = "x<-optimumLHS(n=%s,k=%s,maxSweeps=%s,eps=%s)"; + String rInstruction = "isis.methodAnalyse<-optimumLHS(n=%s,k=%s,maxSweeps=%s,eps=%s)"; String rCall = String.format(rInstruction, param_simulationNumber, factorNumber, param_MaxSweeps, param_eps); @@ -96,7 +97,7 @@ engine.voidEval(rCall); // Get back experiment plan - engine.eval("expPlan<-as.data.frame(x)"); + engine.eval("expPlan<-as.data.frame(isis.methodAnalyse)"); dataFrame = (RDataFrame)engine.eval("expPlan"); dataFrame.setVariable("expPlan"); @@ -114,21 +115,21 @@ engine.voidEval(getIsisFactorDistribution(factors)); - engine.voidEval("call<-" + "\"x<-optimumLHS(" + engine.voidEval("call<-" + "\"isis.methodAnalyse<-optimumLHS(" + "n=" + param_simulationNumber + ",k=" + factorNumber + ",maxSweeps=" + param_MaxSweeps + ",eps=" + param_eps + ")\""); - engine.voidEval("isis.MethodExp<-list(" + + engine.voidEval("isis.methodExp<-list(" + "\"isis.factors\"=isis.factors," + "\"isis.factor.distribution\"=isis.factor.distribution," + "\"call\"=call)"); - engine.voidEval("attr(isis.MethodExp," + + engine.voidEval("attr(isis.methodExp," + "\"nomModel\")<-\"isis-fish-externe-R\""); - engine.voidEval("isis.simule<-data.frame(x)"); + engine.voidEval("isis.simule<-data.frame(isis.methodAnalyse)"); engine.voidEval("attr(isis.simule," + "\"nomModel\")<-\"isis-fish-externe-R\""); @@ -187,7 +188,7 @@ engine.voidEval(rInstruction); - closeEngine(engine, outputDirectory, false); + closeEngine(engine, outputDirectory); } catch (Exception e) { throw new SensitivityException("Can't generate scenarios", e); @@ -208,8 +209,8 @@ REngine engine = openEngine(outputDirectory); - engine.voidEval("factors<-data.frame(x)"); - engine.voidEval("names(factors)<-factornames"); + engine.voidEval("factors<-data.frame(isis.methodAnalyse)"); + engine.voidEval("names(factors)<-isis.factor.distribution$NomFacteur"); //Get back the factors number int factorNumber = (Integer) engine.eval("length(factors[1,])"); @@ -238,7 +239,7 @@ //adding attribute to isis.Simule engine.voidEval("attr(isis.simule," + "\"nomModel\")<-\"isis-fish-externe-R\""); - 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++) { @@ -289,7 +290,7 @@ //Set dataforaov names - engine.voidEval("names(dataforaov)<-c(factornames,\"Result\")"); + engine.voidEval("names(dataforaov)<-c(isis.factor.distribution$NomFacteur,\"Result\")"); /*Set the export directory *Export directory is the first simulation export directory. @@ -306,22 +307,17 @@ //FIXME export through java to enable export when using Rserve (when distant Rserve). //creating isis.methodAnalyse - engine.voidEval("isis.methodAnalyse<-list(" + + String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name); + engine.voidEval(exportMethodAnalyse + "<-list(" + "\"isis.factors\"=isis.factors," + "\"isis.factor.distribution\"=isis.factor.distribution," + "\"isis.simule\"=isis.simule," + "call_method=\"" + aovCall + "\""+ ",\"analysis_result\"=list(aovresult,IndSensibilite))"); - engine.voidEval("attr(isis.methodAnalyse," + + engine.voidEval("attr(" + exportMethodAnalyse + "," + "\"nomModel\")<-\"isis-fish-externe-R\""); - String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-" + - "isis.methodAnalyse"; - - engine.voidEval(String.format(renameIsisMethodAnalyse, - simulationName + "." + name)); - } closeEngine(engine, outputDirectory); Modified: branches/4.2.2/sensitivityanalysis/RandomLHS.java =================================================================== --- branches/4.2.2/sensitivityanalysis/RandomLHS.java 2014-04-10 17:01:50 UTC (rev 316) +++ branches/4.2.2/sensitivityanalysis/RandomLHS.java 2014-04-17 14:57:23 UTC (rev 317) @@ -81,7 +81,7 @@ engine.voidEval("library(lhs)"); //Create the scenarios - String rInstruction = "x<-randomLHS(%s,%s)"; + String rInstruction = "isis.methodAnalyse<-randomLHS(%s,%s)"; String rCall = String.format(rInstruction, param_simulationNumber, factorNumber); @@ -92,7 +92,7 @@ engine.voidEval(rCall); // Get back experiment plan - engine.eval("expPlan<-as.data.frame(x)"); + engine.eval("expPlan<-as.data.frame(isis.methodAnalyse)"); dataFrame = (RDataFrame)engine.eval("expPlan"); dataFrame.setVariable("expPlan"); @@ -110,18 +110,18 @@ engine.voidEval(getIsisFactorDistribution(factors)); - engine.voidEval("call<-" + "\"x<-randomLHS(" + engine.voidEval("call<-" + "\"isis.methodAnalyse<-randomLHS(" + param_simulationNumber + "," + factorNumber + ")\""); - engine.voidEval("isis.MethodExp<-list(" + + engine.voidEval("isis.methodExp<-list(" + "\"isis.factors\"=isis.factors," + "\"isis.factor.distribution\"=isis.factor.distribution," + "\"call\"=call)"); - engine.voidEval("attr(isis.MethodExp," + + engine.voidEval("attr(isis.methodExp," + "\"nomModel\")<-\"isis-fish-externe-R\""); - engine.voidEval("isis.simule<-data.frame(x)"); + engine.voidEval("isis.simule<-data.frame(isis.methodAnalyse)"); engine.voidEval("attr(isis.simule," + "\"nomModel\")<-\"isis-fish-externe-R\""); engine.voidEval("names(isis.simule)<-isis.factors[[1]]"); @@ -182,7 +182,7 @@ engine.remove(factorName); } - closeEngine(engine, outputDirectory, false); + closeEngine(engine, outputDirectory); } catch (Exception e) { throw new SensitivityException("Can't generate scenarios", e); @@ -204,7 +204,7 @@ try { REngine engine = openEngine(outputDirectory); - engine.voidEval("factors<-data.frame(x)"); + engine.voidEval("factors<-data.frame(isis.methodAnalyse)"); //Get back the factors number int factorNumber = (Integer) engine.eval("length(factors)"); @@ -232,7 +232,7 @@ engine.voidEval("attr(isis.simule," + "\"nomModel\")<-\"isis-fish-externe-R\""); - 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++) { @@ -281,7 +281,7 @@ //Set dataforaov names - engine.voidEval("resultsnames<-c(factornames,\"Result\")"); + engine.voidEval("resultsnames<-c(isis.factor.distribution$NomFacteur,\"Result\")"); engine.voidEval("names(dataforaov)<-resultsnames"); /*Set the export directory @@ -301,20 +301,16 @@ //FIXME export through java to enable export when using Rserve (when distant Rserve). //creating isis.methodAnalyse - engine.voidEval("isis.methodAnalyse<-list(" + + String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name); + engine.voidEval(exportMethodAnalyse + "<-list(" + "\"isis.factors\"=isis.factors," + "\"isis.factor.distribution\"=isis.factor.distribution," + "\"isis.simule\"=isis.simule," + "call_method=\"" + aovCall + "\"," + "\"analysis_result\"=list(aovresult,IndSensibilite))"); - engine.voidEval("attr(isis.methodAnalyse," + + engine.voidEval("attr(" + exportMethodAnalyse + "," + "\"nomModel\")<-\"isis-fish-externe-R\""); - - String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-" + - "isis.methodAnalyse"; - engine.voidEval(String.format(renameIsisMethodAnalyse, - simulationName + "." + name)); } closeEngine(engine, outputDirectory); Modified: branches/4.2.2/sensitivityanalysis/RegularExpandGrid.java =================================================================== --- branches/4.2.2/sensitivityanalysis/RegularExpandGrid.java 2014-04-10 17:01:50 UTC (rev 316) +++ branches/4.2.2/sensitivityanalysis/RegularExpandGrid.java 2014-04-17 14:57:23 UTC (rev 317) @@ -29,6 +29,7 @@ import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain; import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain; import fr.ifremer.isisfish.util.Doc; + import org.apache.commons.lang.StringUtils; import org.nuiton.j2r.REngine; import org.nuiton.j2r.RException; @@ -99,15 +100,15 @@ Domain domain = factor.getDomain(); if (domain instanceof ContinuousDomain) { -// ContinuousDomain contDomain = (ContinuousDomain) domain; -// int card = factor.getCardinality(); -// Double min = contDomain.getCalculatorMinBound(); -// Double max = contDomain.getCalculatorMaxBound(); -// -// for (int i = 0; i < card; i++) { -// //add the ith value -// vector += (min + (i * (max - min) / (card - 1))) + ","; -// } + //ContinuousDomain contDomain = (ContinuousDomain) domain; + int card = factor.getCardinality(); + Double min = 0.0; + Double max = 1.0; + + for (int i = 0; i < card; i++) { + //add the ith value + vector += (min + (i * (max - min) / (card - 1))) + ","; + } } if (domain instanceof DiscreteDomain) { @@ -131,7 +132,7 @@ //X<-expand.grid(vector=???,weight=???) - String expandGrid = "x<-expand.grid(%s)"; + String expandGrid = "isis.methodAnalyse<-expand.grid(%s)"; String rCall = String.format(expandGrid,factorsNames); @@ -141,10 +142,10 @@ engine.voidEval(rCall); - engine.eval("expPlan<-as.data.frame(x)"); + engine.eval("expPlan<-as.data.frame(isis.methodAnalyse)"); RDataFrame dataFrame = (RDataFrame)engine.eval("expPlan"); dataFrame.setVariable("expPlan"); - int nbExperiments = (Integer)engine.eval("dim(x)[1]"); + int nbExperiments = (Integer)engine.eval("dim(isis.methodAnalyse)[1]"); List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios(); for (int j = 0; j < nbExperiments; j++) { @@ -174,11 +175,9 @@ parameters += ","; } if (domain instanceof ContinuousDomain){ - ContinuousDomain contDomain = (ContinuousDomain)domain; + //ContinuousDomain contDomain = (ContinuousDomain)domain; distribution += "\"qunif\""; -// parameters += "\"[" + contDomain.getMinBound() -// + ";" + contDomain.getMaxBound() -// + "]\""; + parameters += "\"[0.0;1.0]\""; } else { DiscreteDomain discDomain = (DiscreteDomain)domain; distribution += "\"discrete\""; @@ -201,18 +200,18 @@ engine.voidEval("call<-\"" + String.format(expandGrid,factorsNames) + "\""); - engine.voidEval("isis.MethodExp<-list(" + + engine.voidEval("isis.methodExp<-list(" + "\"isis.factors\"=isis.factors," + "\"isis.factor.distribution\"=isis.factor.distribution," + "\"call\"=call)"); - engine.voidEval("attr(isis.MethodExp," + + engine.voidEval("attr(isis.methodExp," + "\"nomModel\")<-\"isis-fish-externe-R\""); - engine.voidEval("isis.simule<-x"); + engine.voidEval("isis.simule<-isis.methodAnalyse"); engine.voidEval("attr(isis.simule," + "\"nomModel\")<-\"isis-fish-externe-R\""); engine.voidEval("names(isis.simule)<-isis.factors[[1]]"); - closeEngine(engine, outputDirectory, false); + closeEngine(engine, outputDirectory); } catch (RException eee) { throw new SensitivityException("Can't generate scenarios", eee); @@ -230,7 +229,7 @@ REngine engine = openEngine(outputDirectory); //Get back the factors number - int factorNumber = (Integer)engine.eval("dim(x)[2]"); + int factorNumber = (Integer)engine.eval("dim(isis.methodAnalyse)[2]"); SimulationParameter param = simulationStorages.get(0).getParameter(); int sensitivityNumber = param.getSensitivityExport().size(); @@ -255,7 +254,7 @@ + name + ")"); //Create the dataforaov data.frame - String dataFrame = "dataforaov<-data.frame(x," + String dataFrame = "dataforaov<-data.frame(isis.methodAnalyse," + name + "=" + name + ")"; engine.voidEval(dataFrame); @@ -264,11 +263,11 @@ for (int j = 0; j < factorNumber; j++) { if (j < (factorNumber - 1)) { aovCall = aovCall - + engine.eval("names(x)[" + (j + 1) + "]") + + engine.eval("names(isis.methodAnalyse)[" + (j + 1) + "]") + "+"; } else { aovCall = aovCall - + engine.eval("names(x)[" + (j + 1) + "]") + + engine.eval("names(isis.methodAnalyse)[" + (j + 1) + "]") + ")"; if(param_order>1){ aovCall+="^" + param_order + ",data=dataforaov)"; @@ -318,20 +317,16 @@ //FIXME export through java to enable export when using Rserve (when distant Rserve). //creating isis.methodAnalyse - engine.voidEval("isis.methodAnalyse<-list(" + + String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", firstStorageName + "." + name); + engine.voidEval(exportMethodAnalyse + "<-list(" + "\"isis.factors\"=isis.factors," + "\"isis.factor.distribution\"=isis.factor.distribution," + "\"isis.simule\"=isis.simule," + "\"call_method\"=\"" + aovCall + "\"," + "\"analysis_result\"=list(aovresult,IndSensibilite))"); - engine.voidEval("attr(isis.methodAnalyse," + + engine.voidEval("attr(" + exportMethodAnalyse + "," + "\"nomModel\")<-\"isis-fish-externe-R\""); - - String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-isis.methodAnalyse"; - engine.voidEval(String.format(renameIsisMethodAnalyse, - firstStorageName + "." + name)); - } closeEngine(engine, outputDirectory); Modified: branches/4.2.2/sensitivityanalysis/RegularFractions.java =================================================================== --- branches/4.2.2/sensitivityanalysis/RegularFractions.java 2014-04-10 17:01:50 UTC (rev 316) +++ branches/4.2.2/sensitivityanalysis/RegularFractions.java 2014-04-17 14:57:23 UTC (rev 317) @@ -26,6 +26,7 @@ import java.util.List; import fr.ifremer.isisfish.export.SensitivityExport; + import org.nuiton.j2r.REngine; import org.nuiton.j2r.RException; import org.nuiton.j2r.types.RDataFrame; @@ -107,7 +108,7 @@ engine.voidEval("source(\"regularfractions.R\")"); //Create the instruction - String rInstruction = "x<-regular.fraction(%s,%s,%s,%s)"; + String rInstruction = "isis.methodAnalyse<-regular.fraction(%s,%s,%s,%s)"; String rCall = String.format(rInstruction, factors.size(), param_p, param_r, param_resolution); @@ -129,12 +130,12 @@ // Get back experiment plan - engine.eval("expPlan<-as.data.frame(x[[1]])"); + engine.eval("expPlan<-as.data.frame(isis.methodAnalyse[[1]])"); dataFrame = (RDataFrame)engine.eval("expPlan"); dataFrame.setVariable("expPlan"); //Get back the simulation number - int simulationNumber = (Integer) engine.eval("length(x[[1]][,1])"); + int simulationNumber = (Integer) engine.eval("length(isis.methodAnalyse[[1]][,1])"); // Setting up the scenarios. for (int j = 0; j < simulationNumber; j++) { @@ -182,12 +183,12 @@ engine.voidEval(getIsisFactorDistribution(factors)); - engine.voidEval("isis.MethodExp<-list(" + + engine.voidEval("isis.methodExp<-list(" + "\"isis.factors\"=isis.factors," + "\"isis.factor.distribution\"=isis.factor.distribution," + "\"call\"=call)"); - engine.voidEval("attr(isis.MethodExp," + + engine.voidEval("attr(isis.methodExp," + "\"nomModel\")<-\"isis-fish-externe-R\""); //Create isis.Simule @@ -198,7 +199,7 @@ engine.voidEval("names(isis.simule)<-isis.factors[[1]]"); - closeEngine(engine, outputDirectory, false); + closeEngine(engine, outputDirectory); } catch (RException eee) { throw new SensitivityException("Can't generate scenarios", eee); @@ -223,7 +224,7 @@ REngine engine = openEngine(outputDirectory); //Get back the factors number - int factorNumber = (Integer) engine.eval("dim(data)[2]"); + int factorNumber = (Integer) engine.eval("dim(isis.simule)[2]"); for (int k = 0; k < sensitivityNumber; k++) { @@ -250,7 +251,7 @@ String name = export.getExportFilename(); //Create the dataforaov data.frame - String dataFrame = "dataforaov<-data.frame(data," + + String dataFrame = "dataforaov<-data.frame(isis.simule," + name + "=" + name + ")"; engine.voidEval(dataFrame); @@ -260,11 +261,11 @@ if (j < (factorNumber - 1)) { aovCall = aovCall - + engine.eval("names(data)[" + (j + 1) + "]") + + engine.eval("names(isis.simule)[" + (j + 1) + "]") + "+"; } else { aovCall = aovCall - + engine.eval("names(data)[" + (j + 1) + "]") + + engine.eval("names(isis.simule)[" + (j + 1) + "]") + ")"; if (param_resolution <= 4) { aovCall += ",data=dataforaov)"; @@ -296,8 +297,8 @@ engine.voidEval("row.names(exportsensitivity)<-dimnames(summary(aovresult)[[1]])[1][[1]][1:dim(summary(aovresult)[[1]])[1]]"); //Set dataforaov names - engine.voidEval("resultsnames<-c(factornames,\"Result\")"); - engine.voidEval("names(dataforaov)<-resultsnames"); + engine.voidEval("resultsnames<-c(isis.factor.distribution$NomFacteur,\"Result\")"); + engine.voidEval("names(dataforaov)<-isis.factor.distribution$NomFacteur"); /*Set the export directory *Export directory is the first simulation export directory. @@ -314,20 +315,16 @@ //FIXME export through java to enable export when using Rserve (when distant Rserve). //creating isis.methodAnalyse - engine.voidEval("isis.methodAnalyse<-list(" + + String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name); + engine.voidEval(exportMethodAnalyse + "<-list(" + "\"isis.factors\"=isis.factors," + "\"isis.factor.distribution\"=isis.factor.distribution," + "\"isis.simule\"=isis.simule," + "\"call_method\"=\"" + aovCall + "\"," + "\"analysis_result\"=list(aovresult,IndSensibilite))"); - engine.voidEval("attr(isis.methodAnalyse," + + engine.voidEval("attr(" + exportMethodAnalyse + "," + "\"nomModel\")<-\"isis-fish-externe-R\""); - - String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-isis.methodAnalyse"; - engine.voidEval(String.format(renameIsisMethodAnalyse, - simulationName + "." + name)); - } closeEngine(engine, outputDirectory); Modified: branches/4.2.2/sensitivityanalysis/Sobol.java =================================================================== --- branches/4.2.2/sensitivityanalysis/Sobol.java 2014-04-10 17:01:50 UTC (rev 316) +++ branches/4.2.2/sensitivityanalysis/Sobol.java 2014-04-17 14:57:23 UTC (rev 317) @@ -27,12 +27,14 @@ import fr.ifremer.isisfish.export.SensitivityExport; import fr.ifremer.isisfish.simulator.sensitivity.*; + import org.apache.commons.lang3.StringUtils; import org.nuiton.j2r.REngine; import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.util.Doc; + import org.nuiton.j2r.types.RDataFrame; /** @@ -81,7 +83,7 @@ checkAllFactorContinuous(factors); - String rInstruction = "a<-sobol2002(model=NULL,X1=X1,X2=X2,nboot=%s)"; + String rInstruction = "isis.methodAnalyse<-sobol2002(model=NULL,X1=X1,X2=X2,nboot=%s)"; String rCall = String.format(rInstruction, param_nboot); if (param_modifR) { @@ -124,24 +126,24 @@ engine.voidEval(rInstruction); // Get back experiment plan - dataFrame = (RDataFrame) engine.eval("a$X"); - dataFrame.setVariable("a$X"); + dataFrame = (RDataFrame) engine.eval("isis.methodAnalyse$X"); + dataFrame.setVariable("isis.methodAnalyse$X"); nbExperiments = dataFrame.dim()[0]; engine.voidEval(getIsisFactorDistribution(factors)); - engine.voidEval("call<-a$call"); + engine.voidEval("call<-isis.methodAnalyse$call"); - engine.voidEval("isis.MethodExp<-list(" + + engine.voidEval("isis.methodExp<-list(" + "\"isis.factors\"=isis.factors," + "\"isis.factor.distribution\"=isis.factor.distribution," + "\"call\"=call)"); - engine.voidEval("attr(isis.MethodExp," + + engine.voidEval("attr(isis.methodExp," + "\"nomModel\")<-\"isis-fish-externe-R\""); - engine.voidEval("isis.simule<-data.frame(a$X)"); + engine.voidEval("isis.simule<-data.frame(isis.methodAnalyse$X)"); engine.voidEval("attr(isis.simule," + "\"nomModel\")<-\"isis-fish-externe-R\""); @@ -160,7 +162,7 @@ thisExperimentScenarios.add(experimentScenario); } - closeEngine(engine, outputDirectory, false); + closeEngine(engine, outputDirectory); } catch (Exception e) { throw new SensitivityException("Can't generate scenarios", e); @@ -217,7 +219,7 @@ engine.voidEval("attr(isis.simule," + "\"nomModel\")<-\"isis-fish-externe-R\""); - 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++) { @@ -227,13 +229,14 @@ //Compute results engine.voidEval("tell(a,y=" + name + ")"); - engine.voidEval("row.names(a$S)<-names(a$X)"); - engine.voidEval("row.names(a$T)<-names(a$X)"); - engine.voidEval("row.names(a$V)<-c(\"global\"," + - "names(a$X),paste(\"-\",names(a$X),sep=\"\"))"); + engine.voidEval("row.names(isis.methodAnalyse$S)<-names(isis.methodAnalyse$X)"); + engine.voidEval("row.names(isis.methodAnalyse$T)<-names(isis.methodAnalyse$X)"); + engine.voidEval("row.names(isis.methodAnalyse$V)<-c(\"global\"," + + "names(isis.methodAnalyse$X),paste(\"-\",names(isis.methodAnalyse$X),sep=\"\"))"); //creating isis.methodAnalyse - engine.voidEval("isis.methodAnalyse<-list(" + + String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name); + engine.voidEval(exportMethodAnalyse + "<-list(" + "\"isis.factors\"=isis.factors," + "\"isis.factor.distribution\"=isis.factor.distribution," + "\"isis.simule\"=isis.simule," + @@ -241,25 +244,25 @@ "\"analysis_result\"=a)"); //setting isis.methodAnalyse attributes - engine.voidEval("attr(isis.methodAnalyse," + + engine.voidEval("attr(" + exportMethodAnalyse + "," + "\"nomModel\")<-\"isis-fish-externe-R\")"); //Create the data.frame of scenarios and results for export purpose - engine.voidEval("dfresults<-data.frame(a$X,a$y)"); + engine.voidEval("dfresults<-data.frame(isis.methodAnalyse$X,isis.methodAnalyse$y)"); //Set working directory engine.setwd(outputDirectory); //Export V - engine.voidEval("write.csv(a$V,\"" + engine.voidEval("write.csv(isis.methodAnalyse$V,\"" + name + "_SensitivityIndices.csv\")"); //Export DD - engine.voidEval("write.csv(a$D,\"" + engine.voidEval("write.csv(isis.methodAnalyse$D,\"" + name + "_D.csv\")"); //Export S - engine.voidEval("write.csv(a$S,\"" + engine.voidEval("write.csv(isis.methodAnalyse$S,\"" + name + "_S.csv\")"); //Export results @@ -267,11 +270,6 @@ + name + "_Results.csv\")"); //FIXME export through java to enable export when using Rserve - String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-" + - "isis.methodAnalyse"; - engine.voidEval(String.format(renameIsisMethodAnalyse, - simulationName + "." + name)); - } closeEngine(engine, outputDirectory);
participants (1)
-
echatellier@users.forge.codelutin.com