Author: jcouteau Date: 2009-04-21 12:27:21 +0000 (Tue, 21 Apr 2009) New Revision: 117 Modified: trunk/sensitivity/SensitivityCalculatorRMorris.java Log: Fixed attributes bug in R Modified: trunk/sensitivity/SensitivityCalculatorRMorris.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorRMorris.java 2009-04-20 16:25:44 UTC (rev 116) +++ trunk/sensitivity/SensitivityCalculatorRMorris.java 2009-04-21 12:27:21 UTC (rev 117) @@ -209,9 +209,29 @@ nbExperiments = dataframe.length / factorNumber; + String isisFactorDistribution = "isis.factor.distribution<-data.frame(NomFacteur=c(%s),NomDistribution=c(%s),ParametreDistribution=c(%s))"; + + String distribution = ""; + String parameters = ""; + + for (int i = 0; i < factorNumber; i++) { + Domain domain = factors.get(i).getDomain(); + if (i != 0) { + distribution += ","; + parameters += ","; + } + + distribution += "\"qunif\""; + parameters += "\"[" + ((ContinuousDomain) domain).getMinBound() + + ";" + ((ContinuousDomain) domain).getMaxBound() + + "]\""; + } + log.info("Message sent to R : " - + "isis.factor.distribution<-c(0.0)"); - engine.voidEval("isis.factor.distribution<-c(0.0)"); + + String.format(isisFactorDistribution, factorNames, + distribution, parameters)); + engine.voidEval(String.format(isisFactorDistribution, factorNames, + distribution, parameters)); log.info("Message sent to R : " + "call<-a$call"); engine.voidEval("call<-a$call"); @@ -224,18 +244,18 @@ log .info("Message sent to R : " - + "attributes(isis.MethodExp)<-list(nomModel=\"isis-fish-externe-R\")"); + + "attr(isis.MethodExp,\"nomModel\")<-\"isis-fish-externe-R\""); engine - .voidEval("attributes(isis.MethodExp)<-list(nomModel=\"isis-fish-externe-R\")"); + .voidEval("attr(isis.MethodExp,\"nomModel\")<-\"isis-fish-externe-R\""); log.info("Message sent to R : " + "isis.simule<-data.frame(a$X)"); engine.voidEval("isis.simule<-data.frame(a$X)"); log .info("Message sent to R : " - + "attributes(isis.simule)<-list(nomModel=\"isis-fish-externe-R\")"); + + "attr(isis.simule,\"nomModel\")<-\"isis-fish-externe-R\""); engine - .voidEval("attributes(isis.simule)<-list(nomModel=\"isis-fish-externe-R\")"); + .voidEval("attr(isis.simule,\"nomModel\")<-\"isis-fish-externe-R\""); log.info("Message sent to R : " + "names(isis.simule)<-isis.factors[[1]]"); @@ -318,7 +338,7 @@ engine.voidEval("factornames<-dget(\".factornames\")"); log.info("Message sent to R : " + "factornames<-dget(\".factornames\")"); - + int scenariosNumber = ((Double) engine .eval("length(a$X)/length(a$factors)")).intValue(); log.info("Message sent to R : " + "length(a$X)/length(a$factors)"); @@ -368,9 +388,15 @@ //adding attribute to isis.Simule log .info("Message sent to R : " - + "attributes(isis.simule)<-list(nomModel=\"isis-fish-externe-R\")"); + + "attr(isis.simule,\"nomModel\")<-\"isis-fish-externe-R\""); engine - .voidEval("attributes(isis.simule)<-list(nomModel=\"isis-fish-externe-R\")"); + .voidEval("attr(isis.simule,\"nomModel\")<-\"isis-fish-externe-R\""); + + log + .info("Message sent to R : " + + "attr(isis.simule,\"call\")<-isis.MethodExp$call"); + engine + .voidEval("attr(isis.simule,\"call\")<-isis.MethodExp$call"); for (int k = 0; k < sensitivityNumber; k++) { @@ -386,11 +412,17 @@ log .info("Message sent to R : " + "isis.methodAnalyse<-list(\"isis.factors\"=isis.factors,\"isis.factor.distribution\"=isis.factor.distribution,\"isis.simule\"=isis.simule,call_method=\"tell(a,y=" - + name + ")" + "\",a)"); + + name + ")" + "\",\"analysis_result\"=a)"); 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 + ")" + "\",a)"); + + name + ")" + "\",\"analysis_result\"=a)"); + //setting isis.methodAnalyse attributes + log + .info("attr(isis.methodAnalyse,\"nomModel\")<-\"isis-fish-externe-R\")"); + engine + .voidEval("attr(isis.methodAnalyse,\"nomModel\")<-\"isis-fish-externe-R\")"); + // Get back the sensitivity results, mu, mu star and sigma. engine.voidEval("mu<-apply(a$ee, 2, mean)"); log.info("Message sent to R : " + "mu<-apply(a$ee, 2, mean)");