Isis-fish-data-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
April 2009
- 2 participants
- 39 discussions
Author: jcouteau
Date: 2009-04-17 13:51:32 +0000 (Fri, 17 Apr 2009)
New Revision: 112
Modified:
trunk/sensitivity/SensitivityCalculatorRMorris.java
Log:
Adapt Morris method to the new R CDC
Modified: trunk/sensitivity/SensitivityCalculatorRMorris.java
===================================================================
--- trunk/sensitivity/SensitivityCalculatorRMorris.java 2009-04-17 12:27:11 UTC (rev 111)
+++ trunk/sensitivity/SensitivityCalculatorRMorris.java 2009-04-17 13:51:32 UTC (rev 112)
@@ -19,7 +19,6 @@
package sensitivity;
import java.io.File;
-import java.io.Serializable;
import java.util.List;
import javax.swing.Box;
@@ -38,13 +37,11 @@
import org.codelutin.util.FileUtil;
import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityCalculator;
import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
-
import fr.ifremer.isisfish.simulator.sensitivity.Domain;
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator;
-import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityCalculator;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
@@ -62,7 +59,7 @@
* $Author$
*/
@Doc("Morris method")
-public class SensitivityCalculatorRMorris extends AbstractSensitivityCalculator {
+public class SensitivityCalculatorRMorris extends AbstractSensitivityCalculator {
@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;
@@ -85,9 +82,9 @@
}
public SensitivityScenarios compute(DesignPlan plan, File outputdirectory) {
-
- setIsisFactorsR(plan,outputdirectory);
+ setIsisFactorsR(plan, outputdirectory);
+
double[] dataframe = new double[0];
int nbExperiments = 0;
int factorNumber = plan.getFactors().size();
@@ -129,17 +126,13 @@
factorNames += "\"" + factors.get(i).getName() + "\"";
- levels += ((ContinuousDomain) domain)
- .getCardinality();
+ levels += ((ContinuousDomain) domain).getCardinality();
- gridJump += (Integer) (((ContinuousDomain) domain)
- .getCardinality() / 2);
+ gridJump += (Integer) (((ContinuousDomain) domain).getCardinality() / 2);
- binf += ((ContinuousDomain) domain)
- .getMinBound();
+ binf += ((ContinuousDomain) domain).getMinBound();
- bsup += ((ContinuousDomain) domain)
- .getMaxBound();
+ bsup += ((ContinuousDomain) domain).getMaxBound();
}
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))";
@@ -166,13 +159,21 @@
REngine engine = new RProxy();
try {
+ //Set working directory to get Isis R session
+ log.info("setwd(\"" + outputdirectory.getParent() + "\")");
+ engine.voidEval("setwd(\"" + outputdirectory.getParent() + "\")");
+
+ //Get Isis R session
+ log.info("load(\".RData\")");
+ engine.voidEval("load(\".RData\")");
+
// Load sensitivity package into R (if package already loaded,
// nothing happens.
engine.voidEval("library(sensitivity)");
log.info("Message sent to R : " + "library(sensitivity)");
// Run sensitivity analysis
- engine.voidEval(rInstruction);
+ engine.voidEval(rCall);
log.info("Message sent to R : " + rCall);
// Creating the factors vector.
@@ -180,26 +181,26 @@
rCall = String.format(rInstruction, factorNames);
engine.voidEval(rCall);
- log.info("Message sent to R" + rCall);
+ log.info("Message sent to R : " + rCall);
// Set output directory
engine.voidEval("setwd(\"" + outputdirectory.getAbsolutePath()
+ "\")");
- log.info("Message sent to R" + "setwd(\""
+ log.info("Message sent to R : " + "setwd(\""
+ outputdirectory.getAbsolutePath() + "\")");
// Export the morris object for the second run in a .morris file
engine.voidEval("dput(a,file=\".morris\")");
- log.info("Message sent to R" + "dput(a,file=\".morris\")");
+ log.info("Message sent to R : " + "dput(a,file=\".morris\")");
// Export the factornames object for the second run in a .factornames file
engine.voidEval("dput(factornames,file=\".factornames\")");
- log.info("Message sent to R"
+ log.info("Message sent to R : "
+ "dput(factornames,file=\".factornames\")");
// Get back experiment plan
dataframe = (double[]) engine.eval("a$X");
- log.info("Message sent to R" + "a$X");
+ log.info("Message sent to R : " + "a$X");
if (log.isDebugEnabled()) {
log.debug("rInstruction = " + rInstruction);
@@ -207,6 +208,46 @@
nbExperiments = dataframe.length / factorNumber;
+ log.info("Message sent to R : "
+ + "isis.factor.distribution<-c(0.0)");
+ engine.voidEval("isis.factor.distribution<-c(0.0)");
+
+ log.info("Message sent to R : " + "call<-a$call");
+ engine.voidEval("call<-a$call");
+
+ log
+ .info("Message sent to R : "
+ + "isis.MethodExp<-list(isis.factors,isis.factor.distribution,call)");
+ engine
+ .voidEval("isis.MethodExp<-list(isis.factors,isis.factor.distribution,call)");
+
+ log
+ .info("Message sent to R : "
+ + "attributes(isis.MethodExp)<-list(nomModel=\"isis-fish-externe-R\")");
+ engine
+ .voidEval("attributes(isis.MethodExp)<-list(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\")");
+ engine
+ .voidEval("attributes(isis.simule)<-list(nomModel=\"isis-fish-externe-R\")");
+
+ log.info("Message sent to R : "
+ + "names(isis.simule)<-isis.factors[[1]]");
+ engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
+
+ //Set working directory to save Isis R session
+ log.info("setwd(\"" + outputdirectory.getParent() + "\")");
+ engine.voidEval("setwd(\"" + outputdirectory.getParent() + "\")");
+
+ // Save Isis R session
+ log.info("save.image()");
+ engine.voidEval("save.image()");
+
} catch (RException eee) {
eee.printStackTrace();
throw new RuntimeException("R evaluation failed", eee);
@@ -226,7 +267,9 @@
Factor factor = factors.get(i);
if ((factor.getDomain() instanceof MatrixContinuousDomain)
|| (factor.getDomain() instanceof EquationContinuousDomain)) {
- factor.setValueForIdentifier((Double)morris.getValue(i, j));
+ factor
+ .setValueForIdentifier((Double) morris.getValue(i,
+ j));
} else {
factor.setValueForIdentifier(morris.getValue(new int[] { i,
j }));
@@ -246,6 +289,14 @@
REngine engine = new RProxy();
try {
+ //Set working directory to get Isis R session
+ log.info("setwd(\"" + outputdirectory.getParent() + "\")");
+ engine.voidEval("setwd(\"" + outputdirectory.getParent() + "\")");
+
+ //Get Isis R session
+ log.info("load(\".RData\")");
+ engine.voidEval("load(\".RData\")");
+
// Call R
// Load sensitivity package into R (if package already loaded,
// nothing happens.
@@ -278,7 +329,9 @@
for (int k = 0; k < sensitivityNumber; k++) {
// Creates the R expression to import results in R
- String rInstruction = "results<-c(";
+ String name = simulationStorages.get(0).getParameter()
+ .getSensitivityExport().get(k).getExportFilename();
+ String rInstruction = name + "<-c(";
for (int l = 0; l < scenariosNumber; l++) {
File importFile = new File(simulationStorages.get(l)
.getDirectory().toString()
@@ -306,8 +359,8 @@
engine.voidEval(rInstruction);
//Compute results
- engine.voidEval("tell(a,y=results)");
- log.info("Message sent to R : " + "tell(a,y=results)");
+ engine.voidEval("tell(a,y=name)");
+ log.info("Message sent to R : " + "tell(a,y=name)");
// Get back the sensitivity results, mu, mu star and sigma.
engine.voidEval("mu<-apply(a$ee, 2, mean)");
@@ -330,9 +383,9 @@
log.info("Message sent to R : " + "row.names(df)<-factornames");
//Create the data.frame of scenarios and results for export purpose
- engine.voidEval("dfresults=data.frame(a$X,results)");
+ engine.voidEval("dfresults=data.frame(a$X,name)");
log.info("Message sent to R : "
- + "dfresults=data.frame(a$X,results)");
+ + "dfresults=data.frame(a$X,name)");
//Set dfresults names
engine
@@ -375,7 +428,70 @@
.getExportFilename() + "_Results.csv\")");
//FIXME export through java to enable export when using Rserve
+ //Put results in isis.simule
+ engine.voidEval("isis.simule<-data.frame(isis.simule," + name
+ + ")");
+ log.info("Message sent to R : "
+ + "isis.simule<-data.frame(isis.simule," + name + ")");
+
}
+
+ //adding attribute to isis.Simule
+ log
+ .info("Message sent to R : "
+ + "attributes(isis.simule)<-list(nomModel=\"isis-fish-externe-R\")");
+ engine
+ .voidEval("attributes(isis.simule)<-list(nomModel=\"isis-fish-externe-R\")");
+
+ //creating isis.methodAnalyse
+ log
+ .info("Message sent to R : "
+ + "isis.methodAnalyse<-list(isis.factor,isis.factor.distribution,isis.simule,call_method=\"tell(a,results)\",a)");
+ engine
+ .voidEval("isis.methodAnalyse<-list(isis.factor,isis.factor.distribution,isis.simule,call_method=\"tell(a,results)\",a)");
+
+ //Rename R objects for saving purpose
+
+ String renameIsisSimule = "%s.isis.simule<-isis.simule";
+ String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-isis.methodAnalyse";
+ String renameIsisFactorDistribution = "%s.isis.factor.distribution<-isis.factor.distribution";
+ String renameIsisFactor = "%s.isis.factor<-isis.factor";
+ String renameIsisMethodExp = "%s.isis.methodExp<-isis.methodExp";
+
+ String simulationName = simulationStorages.get(0).getName()
+ .replaceAll("-", "");
+
+ log.info("Message sent to R : "
+ + String.format(renameIsisSimule, simulationName));
+ engine.voidEval(String.format(renameIsisSimule, simulationName));
+
+ log.info("Message sent to R : "
+ + String.format(renameIsisMethodAnalyse, simulationName));
+ engine.voidEval(String.format(renameIsisMethodAnalyse,
+ simulationName));
+
+ log.info("Message sent to R : "
+ + String.format(renameIsisFactorDistribution,
+ simulationName));
+ engine.voidEval(String.format(renameIsisFactorDistribution,
+ simulationName));
+
+ log.info("Message sent to R : "
+ + String.format(renameIsisFactor, simulationName));
+ engine.voidEval(String.format(renameIsisFactor, simulationName));
+
+ log.info("Message sent to R : "
+ + String.format(renameIsisMethodExp, simulationName));
+ engine.voidEval(String.format(renameIsisMethodExp, simulationName));
+
+ //Set working directory to save Isis R session
+ log.info("setwd(\"" + outputdirectory.getParent() + "\")");
+ engine.voidEval("setwd(\"" + outputdirectory.getParent() + "\")");
+
+ // Save Isis R session
+ log.info("save.image()");
+ engine.voidEval("save.image()");
+
} catch (Exception e) {
e.printStackTrace();
}
1
0
Author: chatellier
Date: 2009-04-17 12:27:11 +0000 (Fri, 17 Apr 2009)
New Revision: 111
Modified:
trunk/pom.xml
Log:
Update dependency
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2009-04-17 10:03:06 UTC (rev 110)
+++ trunk/pom.xml 2009-04-17 12:27:11 UTC (rev 111)
@@ -54,7 +54,7 @@
<dependency>
<groupId>ifremer</groupId>
<artifactId>isis-fish</artifactId>
- <version>3.2.0.4-rc3-SNAPSHOT</version>
+ <version>3.2.0.4-rc4-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
1
0
Author: jcouteau
Date: 2009-04-17 10:03:06 +0000 (Fri, 17 Apr 2009)
New Revision: 110
Modified:
trunk/pom.xml
Log:
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2009-04-17 09:51:03 UTC (rev 109)
+++ trunk/pom.xml 2009-04-17 10:03:06 UTC (rev 110)
@@ -54,7 +54,7 @@
<dependency>
<groupId>ifremer</groupId>
<artifactId>isis-fish</artifactId>
- <version>3.2.0.4-rc2-SNAPSHOT</version>
+ <version>3.2.0.4-rc3-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
1
0
Author: jcouteau
Date: 2009-04-17 09:51:03 +0000 (Fri, 17 Apr 2009)
New Revision: 109
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
Log:
Adapt to isis-fish sensitivity refactoring
Modified: trunk/sensitivity/SensitivityCalculatorJavaExpandGrid.java
===================================================================
--- trunk/sensitivity/SensitivityCalculatorJavaExpandGrid.java 2009-04-16 13:25:07 UTC (rev 108)
+++ trunk/sensitivity/SensitivityCalculatorJavaExpandGrid.java 2009-04-17 09:51:03 UTC (rev 109)
@@ -19,7 +19,6 @@
package sensitivity;
import java.io.File;
-import java.io.Serializable;
import java.util.List;
import org.apache.commons.logging.Log;
@@ -32,7 +31,7 @@
import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator;
+import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityCalculator;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
@@ -49,8 +48,8 @@
*
*/
@Doc("ExpandGrid")
-public class SensitivityCalculatorJavaExpandGrid implements
- SensitivityCalculator {
+public class SensitivityCalculatorJavaExpandGrid extends
+ AbstractSensitivityCalculator {
/** to use log facility, just put in your code: log.info("..."); */
static private Log log = LogFactory
@@ -71,21 +70,21 @@
int k = 1; //number of sensitivity scenarios (initialization)
int factorNumber = plan.getFactors().size(); //number of factors
- List<Factor<? extends Serializable>> factors = plan.getFactors(); //list of factors
+ List<Factor> factors = plan.getFactors(); //list of factors
for (int i = 0; i < factorNumber; i++) {
if (factors.get(i).getDomain() instanceof ContinuousDomain) {
- if (((ContinuousDomain<? extends Serializable>) factors.get(i)
+ if (((ContinuousDomain) factors.get(i)
.getDomain()).getCardinality() != 0) {
k = k
- * ((ContinuousDomain<? extends Serializable>) factors
+ * ((ContinuousDomain) factors
.get(i).getDomain()).getCardinality();
}
} else if (factors.get(i).getDomain() instanceof DiscreteDomain) {
- if (((DiscreteDomain<? extends Serializable>) factors.get(i)
+ if (((DiscreteDomain) factors.get(i)
.getDomain()).getValues().size() != 0) {
k = k
- * ((DiscreteDomain<? extends Serializable>) factors
+ * ((DiscreteDomain) factors
.get(i).getDomain()).getValues().size();
}
}
@@ -99,13 +98,13 @@
int rest = i; //used for the euclidian division
Scenario experimentScenario = new Scenario();
for (int j = 0; j < factorNumber; j++) {
- Factor<? extends Serializable> factor = factors.get(j);
+ Factor factor = factors.get(j);
if (factor.getDomain() instanceof ContinuousDomain) {
- Double max = ((ContinuousDomain<Double>) factor.getDomain())
+ Double max = ((ContinuousDomain) factor.getDomain())
.getMaxBound();
- Double min = ((ContinuousDomain<Double>) factor.getDomain())
+ Double min = ((ContinuousDomain) factor.getDomain())
.getMinBound();
- int card = ((ContinuousDomain<? extends Serializable>) factor
+ int card = ((ContinuousDomain) factor
.getDomain()).getCardinality();
result = (int) Math.floor(rest / card);
rest = rest - (card * result);
@@ -119,7 +118,7 @@
}
}
if (factor.getDomain() instanceof DiscreteDomain) {
- int card = ((DiscreteDomain<? extends Serializable>) factor
+ int card = ((DiscreteDomain) factor
.getDomain()).getValues().size();
result = (int) Math.floor(rest / card);
rest = rest - (card * result);
@@ -144,7 +143,7 @@
try {
//Create the factors vectors
for (int j = 0; j < factorNumber; j++) {
- Factor<? extends Serializable> factor = thisExperimentScenarios
+ Factor factor = thisExperimentScenarios
.get(0).getFactors().get(j);
if (factor.getDomain() instanceof EquationContinuousDomain) {
@@ -152,12 +151,12 @@
for (int i = 0; i < scenariosNumber; i++) {
if (i < (scenariosNumber - 1)) {
vector = vector
- + ((EquationContinuousDomain<?>) thisExperimentScenarios
+ + ((EquationContinuousDomain) thisExperimentScenarios
.get(i).getFactors().get(j)
.getDomain()).getValue() + ",";
} else {
vector = vector
- + ((EquationContinuousDomain<?>) thisExperimentScenarios
+ + ((EquationContinuousDomain) thisExperimentScenarios
.get(i).getFactors().get(j)
.getDomain()).getValue();
}
@@ -171,12 +170,12 @@
for (int i = 0; i < scenariosNumber; i++) {
if (i < (scenariosNumber - 1)) {
vector = vector
- + ((MatrixContinuousDomain<?>) thisExperimentScenarios
+ + ((MatrixContinuousDomain) thisExperimentScenarios
.get(i).getFactors().get(j)
.getDomain()).getValue() + ",";
} else {
vector = vector
- + ((MatrixContinuousDomain<?>) thisExperimentScenarios
+ + ((MatrixContinuousDomain) thisExperimentScenarios
.get(i).getFactors().get(j)
.getDomain()).getValue();
}
Modified: trunk/sensitivity/SensitivityCalculatorRFast.java
===================================================================
--- trunk/sensitivity/SensitivityCalculatorRFast.java 2009-04-16 13:25:07 UTC (rev 108)
+++ trunk/sensitivity/SensitivityCalculatorRFast.java 2009-04-17 09:51:03 UTC (rev 109)
@@ -38,6 +38,8 @@
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator;
+
+import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityCalculator;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
@@ -55,7 +57,7 @@
* $Author: jcouteau $
*/
-public class SensitivityCalculatorRFast implements SensitivityCalculator {
+public class SensitivityCalculatorRFast extends AbstractSensitivityCalculator {
/** to use log facility, just put in your code: log.info("..."); */
private static Log log = LogFactory
@@ -92,7 +94,7 @@
double[] dataframe = new double[0];
int nbExperiments = 0;
int factorNumber = plan.getFactors().size();
- List<Factor<? extends Serializable>> factors = plan.getFactors();
+ List<Factor> factors = plan.getFactors();
SensitivityScenarios thisExperiment = new SensitivityScenarios();
List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
@@ -186,17 +188,17 @@
for (int j = 0; j < nbExperiments; j++) {
Scenario experimentScenario = new Scenario();
for (int i = 0; i < factorNumber; i++) {
- Factor<? extends Serializable> factor = plan.getFactors()
+ 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());
} else {
- Double value = (Double) ((ContinuousDomain<?>) factor
+ Double value = (Double) ((ContinuousDomain) factor
.getDomain()).getMinBound()
- + ((Double) ((ContinuousDomain<?>) factor
- .getDomain()).getMaxBound() - (Double) ((ContinuousDomain<?>) factor
+ + ((Double) ((ContinuousDomain) factor
+ .getDomain()).getMaxBound() - (Double) ((ContinuousDomain) factor
.getDomain()).getMinBound())
* fast.getValue(new int[] { i, j });
factor.setValueForIdentifier(value);
Modified: trunk/sensitivity/SensitivityCalculatorRFrF2.java
===================================================================
--- trunk/sensitivity/SensitivityCalculatorRFrF2.java 2009-04-16 13:25:07 UTC (rev 108)
+++ trunk/sensitivity/SensitivityCalculatorRFrF2.java 2009-04-17 09:51:03 UTC (rev 109)
@@ -38,6 +38,8 @@
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator;
+
+import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityCalculator;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
@@ -55,7 +57,7 @@
* $Author: chatellier $
*/
@Doc("FrF2 method, at least 4 factors need to be declared")
-public class SensitivityCalculatorRFrF2 implements SensitivityCalculator {
+public class SensitivityCalculatorRFrF2 extends AbstractSensitivityCalculator {
/** to use log facility, just put in your code: log.info("..."); */
private static Log log = LogFactory
@@ -79,7 +81,7 @@
double[] dataframe = new double[0];
int nbExperiments = 0;
int factorNumber = plan.getFactors().size();
- List<Factor<? extends Serializable>> factors = plan.getFactors();
+ List<Factor> factors = plan.getFactors();
SensitivityScenarios thisExperiment = new SensitivityScenarios();
List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
@@ -161,7 +163,7 @@
for (int j = 0; j < nbExperiments; j++) {
Scenario experimentScenario = new Scenario();
for (int i = 0; i < factorNumber; i++) {
- Factor<? extends Serializable> factor = plan.getFactors()
+ Factor factor = plan.getFactors()
.get(i);
if ((factor.getDomain() instanceof MatrixContinuousDomain)
|| (factor.getDomain() instanceof EquationContinuousDomain)) {
@@ -177,13 +179,13 @@
} else {
if (frf2.getValue(new int[] { i, j }) == -1) {
factor
- .setValueForIdentifier(((ContinuousDomain<?>) factor
+ .setValueForIdentifier(((ContinuousDomain) factor
.getDomain()).getMinBound());
}
if (frf2.getValue(new int[] { i, j }) == 1) {
factor
- .setValueForIdentifier(((ContinuousDomain<?>) factor
+ .setValueForIdentifier(((ContinuousDomain) factor
.getDomain()).getMaxBound());
}
}
@@ -195,7 +197,7 @@
try {
//Create the factors vectors
for (int j = 0; j < factorNumber; j++) {
- Factor<? extends Serializable> factor = thisExperimentScenarios
+ Factor factor = thisExperimentScenarios
.get(0).getFactors().get(j);
if (factor.getDomain() instanceof EquationContinuousDomain) {
@@ -203,12 +205,12 @@
for (int i = 0; i < nbExperiments; i++) {
if (i < (nbExperiments - 1)) {
vector = vector
- + ((EquationContinuousDomain<?>) thisExperimentScenarios
+ + ((EquationContinuousDomain) thisExperimentScenarios
.get(i).getFactors().get(j)
.getDomain()).getValue() + ",";
} else {
vector = vector
- + ((EquationContinuousDomain<?>) thisExperimentScenarios
+ + ((EquationContinuousDomain) thisExperimentScenarios
.get(i).getFactors().get(j)
.getDomain()).getValue();
}
@@ -222,12 +224,12 @@
for (int i = 0; i < nbExperiments; i++) {
if (i < (nbExperiments - 1)) {
vector = vector
- + ((MatrixContinuousDomain<?>) thisExperimentScenarios
+ + ((MatrixContinuousDomain) thisExperimentScenarios
.get(i).getFactors().get(j)
.getDomain()).getValue() + ",";
} else {
vector = vector
- + ((MatrixContinuousDomain<?>) thisExperimentScenarios
+ + ((MatrixContinuousDomain) thisExperimentScenarios
.get(i).getFactors().get(j)
.getDomain()).getValue();
}
Modified: trunk/sensitivity/SensitivityCalculatorRMorris.java
===================================================================
--- trunk/sensitivity/SensitivityCalculatorRMorris.java 2009-04-16 13:25:07 UTC (rev 108)
+++ trunk/sensitivity/SensitivityCalculatorRMorris.java 2009-04-17 09:51:03 UTC (rev 109)
@@ -22,6 +22,12 @@
import java.io.Serializable;
import java.util.List;
+import javax.swing.Box;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JScrollPane;
+import javax.swing.JTextPane;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelutin.j2r.REngine;
@@ -33,10 +39,12 @@
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
+
import fr.ifremer.isisfish.simulator.sensitivity.Domain;
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator;
+import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityCalculator;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
@@ -54,11 +62,14 @@
* $Author$
*/
@Doc("Morris method")
-public class SensitivityCalculatorRMorris implements SensitivityCalculator {
+public class SensitivityCalculatorRMorris extends AbstractSensitivityCalculator {
@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;
+ public int param_r = 4;
+ @Doc("True to be able to modify the code sent to R")
+ public boolean param_modifR = false;
+
/** to use log facility, just put in your code: log.info("..."); */
private static Log log = LogFactory
.getLog(SensitivityCalculatorRMorris.class);
@@ -74,174 +85,102 @@
}
public SensitivityScenarios compute(DesignPlan plan, File outputdirectory) {
+
+ setIsisFactorsR(plan,outputdirectory);
double[] dataframe = new double[0];
int nbExperiments = 0;
int factorNumber = plan.getFactors().size();
- List<Factor<? extends Serializable>> factors = plan.getFactors();
+ List<Factor> factors = plan.getFactors();
- if (((Integer) param_r == null) || ((Integer) param_r == 0)) {
+ if (param_r == 0) {
param_r = 4;
}
//Test all factors, if one is discrete, return null
for (int i = 0; i < factorNumber; i++) {
if (factors.get(i).getDomain() instanceof DiscreteDomain) {
+ JOptionPane
+ .showMessageDialog(
+ null,
+ "Error",
+ factors.get(i).getName()
+ + " has a discrete domain, this is not acceptable for this method.",
+ JOptionPane.ERROR_MESSAGE);
return null;
}
}
- String rInstruction = "a<-morris(model=NULL,factors=c(";
-
- // Creating the factors vector.
+ // Creating the vectors.
+ String factorNames = "";
+ String levels = "";
+ String gridJump = "";
+ String binf = "";
+ String bsup = "";
for (int i = 0; i < factorNumber; i++) {
- if (i != (factorNumber - 1)) {
- rInstruction = rInstruction + "\"" + factors.get(i).getName()
- + "\",";
- } else {
- rInstruction = rInstruction + "\"" + factors.get(i).getName()
- + "\"";
+ Domain domain = factors.get(i).getDomain();
+ if (i != 0) {
+ factorNames += ",";
+ levels += ",";
+ gridJump += ",";
+ binf += ",";
+ bsup += ",";
}
- }
- // Adding the number of repetition parameter (r), the morris type
- // (type="oat") and the level vector
- rInstruction = rInstruction + "),r=" + param_r
- + ",design=list(type=\"oat\",levels=c(";
+ factorNames += "\"" + factors.get(i).getName() + "\"";
- // Creating the levels vector.
- for (int i = 0; i < factorNumber; i++) {
- Domain<? extends Serializable> domain = factors.get(i).getDomain();
- if (i != (factorNumber - 1)) {
- if (domain instanceof DiscreteDomain) {
- rInstruction = rInstruction
- + ((DiscreteDomain<? extends Serializable>) domain)
- .getValues().size() + ",";
- } else if (domain instanceof ContinuousDomain) {
- rInstruction = rInstruction
- + ((ContinuousDomain<? extends Serializable>) domain)
- .getCardinality() + ",";
- }
- } else {
- if (domain instanceof DiscreteDomain) {
- rInstruction = rInstruction
- + ((DiscreteDomain<? extends Serializable>) domain)
- .getValues().size();
- } else if (domain instanceof ContinuousDomain) {
- rInstruction = rInstruction
- + ((ContinuousDomain<? extends Serializable>) domain)
- .getCardinality();
- }
- }
- }
+ levels += ((ContinuousDomain) domain)
+ .getCardinality();
- // Adding the grid.jump parameter
- rInstruction = rInstruction + "),grid.jump=c(";
+ gridJump += (Integer) (((ContinuousDomain) domain)
+ .getCardinality() / 2);
- // Creating the grid.jump vector.
- for (int i = 0; i < factorNumber; i++) {
- Domain<? extends Serializable> domain = factors.get(i).getDomain();
- if (i != (factorNumber - 1)) {
- if (domain instanceof DiscreteDomain) {
- rInstruction = rInstruction
- + (Integer) (((DiscreteDomain<? extends Serializable>) domain)
- .getValues().size() / 2) + ",";
- } else if (domain instanceof ContinuousDomain) {
- rInstruction = rInstruction
- + (Integer) (((ContinuousDomain<? extends Serializable>) domain)
- .getCardinality() / 2) + ",";
- }
- } else {
- if (domain instanceof DiscreteDomain) {
- rInstruction = rInstruction
- + (Integer) (((DiscreteDomain<? extends Serializable>) domain)
- .getValues().size() / 2);
- } else if (domain instanceof ContinuousDomain) {
- rInstruction = rInstruction
- + (Integer) (((ContinuousDomain<? extends Serializable>) domain)
- .getCardinality() / 2);
- }
- }
+ binf += ((ContinuousDomain) domain)
+ .getMinBound();
+
+ bsup += ((ContinuousDomain) domain)
+ .getMaxBound();
}
- rInstruction += ")),binf=c(";
+ 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))";
- // Adding the binf parameter
- for (int i = 0; i < factorNumber; i++) {
- Domain<? extends Serializable> domain = factors.get(i).getDomain();
- if (i != (factorNumber - 1)) {
- if (domain instanceof DiscreteDomain) {
- rInstruction = rInstruction + "0,";
- } else if (domain instanceof ContinuousDomain) {
- rInstruction = rInstruction
- + ((ContinuousDomain<? extends Serializable>) domain)
- .getMinBound() + ",";
- }
- } else {
- if (domain instanceof DiscreteDomain) {
- rInstruction = rInstruction + "0";
- } else if (domain instanceof ContinuousDomain) {
- rInstruction = rInstruction
- + ((ContinuousDomain<? extends Serializable>) domain)
- .getMinBound();
- }
- }
- }
+ String rCall = String.format(rInstruction, factorNames, param_r,
+ levels, gridJump, binf, bsup);
- // Adding the bsup parameter
- rInstruction = rInstruction + "),bsup=c(";
- for (int i = 0; i < factorNumber; i++) {
- Domain<? extends Serializable> domain = factors.get(i).getDomain();
- if (i != (factorNumber - 1)) {
- if (domain instanceof DiscreteDomain) {
- rInstruction = rInstruction
- + ((((DiscreteDomain<? extends Serializable>) domain)
- .getValues().size()) - 1) + ",";
- } else if (domain instanceof ContinuousDomain) {
- rInstruction = rInstruction
- + ((ContinuousDomain<? extends Serializable>) domain)
- .getMaxBound() + ",";
- }
- } else {
- if (domain instanceof DiscreteDomain) {
- rInstruction = rInstruction
- + ((((DiscreteDomain<? extends Serializable>) domain)
- .getValues().size()) - 1);
- } else if (domain instanceof ContinuousDomain) {
- rInstruction = rInstruction
- + ((ContinuousDomain<? extends Serializable>) domain)
- .getMaxBound();
- }
- }
+ if (param_modifR) {
+ JLabel label = new JLabel(
+ "Modifier le code R envoyé si vous le souhaitez");
+ JTextPane text = new JTextPane();
+ text.setText(rCall);
+ text.setSize(400, 400);
+ text.setPreferredSize(text.getSize());
+
+ Box box = Box.createVerticalBox();
+ box.add(label);
+ box.add(new JScrollPane(text));
+
+ JOptionPane.showMessageDialog(null, box, "R modif",
+ JOptionPane.QUESTION_MESSAGE);
+ rCall = text.getText();
}
- rInstruction = rInstruction + "))";
REngine engine = new RProxy();
try {
// Load sensitivity package into R (if package already loaded,
// nothing happens.
engine.voidEval("library(sensitivity)");
- log.info("Message sent to R" + "library(sensitivity)");
+ log.info("Message sent to R : " + "library(sensitivity)");
// Run sensitivity analysis
engine.voidEval(rInstruction);
- log.info("Message sent to R" + rInstruction);
+ log.info("Message sent to R : " + rCall);
// Creating the factors vector.
- rInstruction = "factornames<-c(";
- for (int i = 0; i < factorNumber; i++) {
- if (i != (factorNumber - 1)) {
- rInstruction = rInstruction + "\""
- + factors.get(i).getName() + "\",";
- } else {
- rInstruction = rInstruction + "\""
- + factors.get(i).getName() + "\"";
- }
- }
+ rInstruction = "factornames<-c(%s)";
+ rCall = String.format(rInstruction, factorNames);
- rInstruction += ")";
- engine.voidEval(rInstruction);
- log.info("Message sent to R" + rInstruction);
+ engine.voidEval(rCall);
+ log.info("Message sent to R" + rCall);
// Set output directory
engine.voidEval("setwd(\"" + outputdirectory.getAbsolutePath()
@@ -268,8 +207,9 @@
nbExperiments = dataframe.length / factorNumber;
- } catch (RException e) {
- e.printStackTrace();
+ } catch (RException eee) {
+ eee.printStackTrace();
+ throw new RuntimeException("R evaluation failed", eee);
// Error while retrieving scenario
}
@@ -283,11 +223,10 @@
for (int j = 0; j < nbExperiments; j++) {
Scenario experimentScenario = new Scenario();
for (int i = 0; i < factorNumber; i++) {
- Factor<? extends Serializable> factor = factors.get(i);
+ Factor factor = factors.get(i);
if ((factor.getDomain() instanceof MatrixContinuousDomain)
|| (factor.getDomain() instanceof EquationContinuousDomain)) {
- factor.setValueForIdentifier(Double.valueOf(
- morris.getValue(new int[] { i, j })).toString());
+ factor.setValueForIdentifier((Double)morris.getValue(i, j));
} else {
factor.setValueForIdentifier(morris.getValue(new int[] { i,
j }));
Modified: trunk/sensitivity/SensitivityCalculatorROptimumLHS.java
===================================================================
--- trunk/sensitivity/SensitivityCalculatorROptimumLHS.java 2009-04-16 13:25:07 UTC (rev 108)
+++ trunk/sensitivity/SensitivityCalculatorROptimumLHS.java 2009-04-17 09:51:03 UTC (rev 109)
@@ -35,6 +35,7 @@
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator;
+import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityCalculator;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
@@ -42,7 +43,7 @@
import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain;
import fr.ifremer.isisfish.util.Doc;
-/**
+/**save.image()
* Implementation of Optimum Latin Hypercube method using R.
*
* @author jcouteau
@@ -50,7 +51,7 @@
*
*/
@Doc("Optimum Latin Hypercube")
-public class SensitivityCalculatorROptimumLHS implements SensitivityCalculator {
+public class SensitivityCalculatorROptimumLHS extends AbstractSensitivityCalculator {
/** to use log facility, just put in your code: log.info("..."); */
static private Log log = LogFactory
@@ -77,7 +78,7 @@
throws SensitivityException {
int factornumber = plan.getFactors().size();
- List<Factor<? extends Serializable>> factors = plan.getFactors();
+ List<Factor> factors = plan.getFactors();
double[] dataframe = new double[0];
SensitivityScenarios thisExperiment = new SensitivityScenarios();
List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
@@ -121,7 +122,7 @@
for (int j = 0; j < param_simulationNumber; j++) {
Scenario experimentScenario = new Scenario();
for (int i = 0; i < factornumber; i++) {
- Factor<? extends Serializable> factor = plan.getFactors()
+ Factor factor = plan.getFactors()
.get(i);
if ((factor.getDomain() instanceof MatrixContinuousDomain)
|| (factor.getDomain() instanceof EquationContinuousDomain)) {
@@ -130,10 +131,10 @@
morris.getValue(new int[] { i, j }))
.toString());
} else {
- Double value = (Double) ((ContinuousDomain<?>) factor
+ Double value = (Double) ((ContinuousDomain) factor
.getDomain()).getMinBound()
- + ((Double) ((ContinuousDomain<?>) factor
- .getDomain()).getMaxBound() - (Double) ((ContinuousDomain<?>) factor
+ + ((Double) ((ContinuousDomain) factor
+ .getDomain()).getMaxBound() - (Double) ((ContinuousDomain) factor
.getDomain()).getMinBound())
* morris.getValue(new int[] { i, j });
factor.setValueForIdentifier(value);
@@ -146,7 +147,7 @@
//Create the factors vectors
for (int j = 0; j < factornumber; j++) {
- Factor<? extends Serializable> factor = thisExperimentScenarios
+ Factor factor = thisExperimentScenarios
.get(0).getFactors().get(j);
if (factor.getDomain() instanceof EquationContinuousDomain) {
@@ -154,12 +155,12 @@
for (int i = 0; i < param_simulationNumber; i++) {
if (i < (param_simulationNumber - 1)) {
vector = vector
- + ((EquationContinuousDomain<?>) thisExperimentScenarios
+ + ((EquationContinuousDomain) thisExperimentScenarios
.get(i).getFactors().get(j)
.getDomain()).getValue() + ",";
} else {
vector = vector
- + ((EquationContinuousDomain<?>) thisExperimentScenarios
+ + ((EquationContinuousDomain) thisExperimentScenarios
.get(i).getFactors().get(j)
.getDomain()).getValue();
}
@@ -173,12 +174,12 @@
for (int i = 0; i < param_simulationNumber; i++) {
if (i < (param_simulationNumber - 1)) {
vector = vector
- + ((MatrixContinuousDomain<?>) thisExperimentScenarios
+ + ((MatrixContinuousDomain) thisExperimentScenarios
.get(i).getFactors().get(j)
.getDomain()).getValue() + ",";
} else {
vector = vector
- + ((MatrixContinuousDomain<?>) thisExperimentScenarios
+ + ((MatrixContinuousDomain) thisExperimentScenarios
.get(i).getFactors().get(j)
.getDomain()).getValue();
}
Modified: trunk/sensitivity/SensitivityCalculatorRRandomLHS.java
===================================================================
--- trunk/sensitivity/SensitivityCalculatorRRandomLHS.java 2009-04-16 13:25:07 UTC (rev 108)
+++ trunk/sensitivity/SensitivityCalculatorRRandomLHS.java 2009-04-17 09:51:03 UTC (rev 109)
@@ -35,6 +35,7 @@
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator;
+import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityCalculator;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
@@ -50,7 +51,7 @@
*
*/
@Doc("Random Latin Hypercube")
-public class SensitivityCalculatorRRandomLHS implements SensitivityCalculator {
+public class SensitivityCalculatorRRandomLHS extends AbstractSensitivityCalculator {
/** to use log facility, just put in your code: log.info("..."); */
static private Log log = LogFactory
@@ -76,7 +77,7 @@
double[] dataframe = new double[0];
SensitivityScenarios thisExperiment = new SensitivityScenarios();
List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
- List<Factor<? extends Serializable>> factors = plan.getFactors();
+ List<Factor> factors = plan.getFactors();
if ((Integer) param_simulationNumber == 0) {
param_simulationNumber = 10;
@@ -107,7 +108,7 @@
for (int j = 0; j < param_simulationNumber; j++) {
Scenario experimentScenario = new Scenario();
for (int i = 0; i < factornumber; i++) {
- Factor<? extends Serializable> factor = plan.getFactors()
+ Factor factor = plan.getFactors()
.get(i);
if ((factor.getDomain() instanceof MatrixContinuousDomain)
|| (factor.getDomain() instanceof EquationContinuousDomain)) {
@@ -116,10 +117,10 @@
morris.getValue(new int[] { i, j }))
.toString());
} else {
- Double value = (Double) ((ContinuousDomain<?>) factor
+ Double value = (Double) ((ContinuousDomain) factor
.getDomain()).getMinBound()
- + ((Double) ((ContinuousDomain<?>) factor
- .getDomain()).getMaxBound() - (Double) ((ContinuousDomain<?>) factor
+ + ((Double) ((ContinuousDomain) factor
+ .getDomain()).getMaxBound() - (Double) ((ContinuousDomain) factor
.getDomain()).getMinBound())
* morris.getValue(new int[] { i, j });
factor.setValueForIdentifier(value);
@@ -132,7 +133,7 @@
//Create the factors vectors
for (int j = 0; j < factornumber; j++) {
- Factor<? extends Serializable> factor = thisExperimentScenarios
+ Factor factor = thisExperimentScenarios
.get(0).getFactors().get(j);
if (factor.getDomain() instanceof EquationContinuousDomain) {
@@ -140,12 +141,12 @@
for (int i = 0; i < param_simulationNumber; i++) {
if (i < (param_simulationNumber - 1)) {
vector = vector
- + ((EquationContinuousDomain<?>) thisExperimentScenarios
+ + ((EquationContinuousDomain) thisExperimentScenarios
.get(i).getFactors().get(j)
.getDomain()).getValue() + ",";
} else {
vector = vector
- + ((EquationContinuousDomain<?>) thisExperimentScenarios
+ + ((EquationContinuousDomain) thisExperimentScenarios
.get(i).getFactors().get(j)
.getDomain()).getValue();
}
@@ -159,12 +160,12 @@
for (int i = 0; i < param_simulationNumber; i++) {
if (i < (param_simulationNumber - 1)) {
vector = vector
- + ((MatrixContinuousDomain<?>) thisExperimentScenarios
+ + ((MatrixContinuousDomain) thisExperimentScenarios
.get(i).getFactors().get(j)
.getDomain()).getValue() + ",";
} else {
vector = vector
- + ((MatrixContinuousDomain<?>) thisExperimentScenarios
+ + ((MatrixContinuousDomain) thisExperimentScenarios
.get(i).getFactors().get(j)
.getDomain()).getValue();
}
Modified: trunk/sensitivity/SensitivityCalculatorRSobol.java
===================================================================
--- trunk/sensitivity/SensitivityCalculatorRSobol.java 2009-04-16 13:25:07 UTC (rev 108)
+++ trunk/sensitivity/SensitivityCalculatorRSobol.java 2009-04-17 09:51:03 UTC (rev 109)
@@ -37,6 +37,7 @@
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator;
+import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityCalculator;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
@@ -54,7 +55,7 @@
* $Author: jcouteau $
*/
-public class SensitivityCalculatorRSobol implements SensitivityCalculator {
+public class SensitivityCalculatorRSobol extends AbstractSensitivityCalculator {
/** to use log facility, just put in your code: log.info("..."); */
private static Log log = LogFactory
@@ -84,7 +85,7 @@
double[] dataframe = new double[0];
int nbExperiments = 0;
int factorNumber = plan.getFactors().size();
- List<Factor<? extends Serializable>> factors = plan.getFactors();
+ List<Factor> factors = plan.getFactors();
SensitivityScenarios thisExperiment = new SensitivityScenarios();
List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
@@ -188,17 +189,17 @@
for (int j = 0; j < nbExperiments; j++) {
Scenario experimentScenario = new Scenario();
for (int i = 0; i < factorNumber; i++) {
- Factor<? extends Serializable> factor = plan.getFactors()
+ 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());
} else {
- Double value = (Double) ((ContinuousDomain<?>) factor
+ Double value = (Double) ((ContinuousDomain) factor
.getDomain()).getMinBound()
- + ((Double) ((ContinuousDomain<?>) factor
- .getDomain()).getMaxBound() - (Double) ((ContinuousDomain<?>) factor
+ + ((Double) ((ContinuousDomain) factor
+ .getDomain()).getMaxBound() - (Double) ((ContinuousDomain) factor
.getDomain()).getMinBound())
* fast.getValue(new int[] { i, j });
factor.setValueForIdentifier(value);
@@ -360,7 +361,7 @@
}
public String getDescription() {
- return "Implementation of FAST method using R";
+ return "Implementation of Sobol method using R";
}
}
1
0
Author: jcouteau
Date: 2009-04-16 13:25:07 +0000 (Thu, 16 Apr 2009)
New Revision: 108
Added:
trunk/exports/SensitivityBiomassRelativeReferenceY12.java
trunk/exports/SensitivityCapturesWeightReferenceY7.java
trunk/exports/SensitivityCapturesWeightRelativeReferenceY10.java
trunk/exports/SensitivityGenitorBiomassReferenceY8.java
trunk/exports/SensitivityGenitorBiomassRelativeReferenceY11.java
Modified:
trunk/exports/SensitivityBiomassReferenceY9.java
trunk/exports/SensitivityBiomassRelativeY6.java
trunk/exports/SensitivityGenitorBiomassRelativeY5.java
Log:
Implementation of reference exports.
Modified: trunk/exports/SensitivityBiomassReferenceY9.java
===================================================================
--- trunk/exports/SensitivityBiomassReferenceY9.java 2009-04-16 12:00:03 UTC (rev 107)
+++ trunk/exports/SensitivityBiomassReferenceY9.java 2009-04-16 13:25:07 UTC (rev 108)
@@ -2,12 +2,10 @@
import static org.codelutin.i18n.I18n._;
-import java.io.File;
import java.io.Writer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codelutin.math.matrix.MatrixIterator;
import org.codelutin.math.matrix.MatrixND;
import scripts.ResultName;
@@ -22,39 +20,47 @@
public class SensitivityBiomassReferenceY9 implements SensitivityExport {
/** to use log facility, just put in your code: log.info("..."); */
- static private Log log = LogFactory.getLog(SensitivityBiomassReferenceY9.class);
+ static private Log log = LogFactory
+ .getLog(SensitivityBiomassReferenceY9.class);
protected String[] necessaryResult = { ResultName.MATRIX_BIOMASS };
@Doc("Population")
public Population param_pop;
-
- @Doc("Path to the reference simulation exports")
- public String param_referenceExports;
+ @Doc("Name of the reference simulation")
+ public String param_referenceSimulation = "";
+
@Override
public void export(SimulationStorage simulation, Writer out)
throws Exception {
- File referenceExports=new File (param_referenceExports);
- Date lastDate = simulation.getResultStorage().getLastDate();
- double biomass = 0.0;
+ SimulationStorage referenceSimulation = SimulationStorage
+ .getSimulation(param_referenceSimulation);
+ ResultStorage referenceResultStorage = referenceSimulation
+ .getResultStorage();
+ ResultStorage resultStorage = simulation.getResultStorage();
+ Date lastDate = resultStorage.getLastDate();
+ Double biomass = 0.0;
+ Double referenceBiomass = 0.0;
+
for (Population pop : simulation.getParameter().getPopulations()) {
if (pop.getName().equals(param_pop.getName())) {
- MatrixND mat = simulation.getResultStorage().getMatrix(pop,
+
+ //Get the biomass of the last time step
+ MatrixND matlastdate = resultStorage.getMatrix(lastDate, pop,
ResultName.MATRIX_BIOMASS);
- for (MatrixIterator i = mat.iterator(); i.hasNext();) {
- i.next();
- Object[] sems = i.getSemanticsCoordinates();
- Date date = (Date) sems[0];
+ biomass = matlastdate.sumAll();
- if (date.afterOrEquals(lastDate)) {
- biomass = biomass + i.getValue();
- }
- }
+ //Get the reference biomass of the last time step
+ MatrixND matreferencelastdate = referenceResultStorage
+ .getMatrix(lastDate, pop, ResultName.MATRIX_BIOMASS);
+ referenceBiomass = matreferencelastdate.sumAll();
+
}
}
- out.write(Double.toString(biomass));
+ out.write(Double.toString(biomass / referenceBiomass));
+
}
@Override
@@ -64,7 +70,7 @@
@Override
public String getExportFilename() {
- return "SensitivityBiomass";
+ return "SensitivityBiomassReferenceY9";
}
@Override
Added: trunk/exports/SensitivityBiomassRelativeReferenceY12.java
===================================================================
--- trunk/exports/SensitivityBiomassRelativeReferenceY12.java (rev 0)
+++ trunk/exports/SensitivityBiomassRelativeReferenceY12.java 2009-04-16 13:25:07 UTC (rev 108)
@@ -0,0 +1,101 @@
+package exports;
+
+import static org.codelutin.i18n.I18n._;
+
+import java.io.Writer;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.math.matrix.MatrixND;
+
+import scripts.ResultName;
+import fr.ifremer.isisfish.datastore.ResultStorage;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.entities.Population;
+import fr.ifremer.isisfish.export.SensitivityExport;
+import fr.ifremer.isisfish.types.Date;
+import fr.ifremer.isisfish.util.Doc;
+
+@Doc("Doc for SensitivityBiomass")
+public class SensitivityBiomassRelativeReferenceY12 implements
+ SensitivityExport {
+
+ /** to use log facility, just put in your code: log.info("..."); */
+ static private Log log = LogFactory
+ .getLog(SensitivityBiomassRelativeReferenceY12.class);
+
+ protected String[] necessaryResult = { ResultName.MATRIX_BIOMASS };
+
+ @Doc("Population")
+ public Population param_pop;
+
+ @Doc("Name of the reference simulation")
+ public String param_referenceSimulation="";
+
+ @Override
+ public void export(SimulationStorage simulation, Writer out)
+ throws Exception {
+ SimulationStorage referenceSimulation = SimulationStorage
+ .getSimulation(param_referenceSimulation);
+ ResultStorage resultStorage = simulation.getResultStorage();
+ ResultStorage referenceResultStorage = referenceSimulation
+ .getResultStorage();
+ Date lastDate = resultStorage.getLastDate();
+ Date firstDate = new Date(11);
+ double biomass = 0.0;
+ double firstbiomass = 0.0;
+ double biomassReference = 0.0;
+ double firstbiomassReference = 0.0;
+
+ for (Population pop : simulation.getParameter().getPopulations()) {
+ if (pop.getName().equals(param_pop.getName())) {
+
+ //Get the biomass on december of the first year
+ MatrixND matfirstdate = resultStorage.getMatrix(firstDate, pop,
+ ResultName.MATRIX_BIOMASS);
+ firstbiomass = matfirstdate.sumAll();
+
+ //Get the biomass of the last time step
+ MatrixND matlastdate = resultStorage.getMatrix(lastDate, pop,
+ ResultName.MATRIX_BIOMASS);
+ biomass = matlastdate.sumAll();
+
+ //Get the biomass on december of the first year
+ MatrixND matfirstdatereference = referenceResultStorage
+ .getMatrix(firstDate, pop, ResultName.MATRIX_BIOMASS);
+ firstbiomassReference = matfirstdatereference.sumAll();
+
+ //Get the biomass of the last time step
+ MatrixND matlastdatereference = referenceResultStorage
+ .getMatrix(lastDate, pop, ResultName.MATRIX_BIOMASS);
+ biomassReference = matlastdatereference.sumAll();
+
+ }
+ }
+
+ out.write(Double.toString((biomass / firstbiomass)
+ / (biomassReference / firstbiomassReference)));
+
+ }
+
+ @Override
+ public String getDescription() {
+ return _("Biomass for the last time step. Biomass is the sum on the groups and zones");
+ }
+
+ @Override
+ public String getExportFilename() {
+ return "SensitivityBiomassRelativeReferenceY12";
+ }
+
+ @Override
+ public String getExtensionFilename() {
+ return ".csv";
+ }
+
+ @Override
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
+}
\ No newline at end of file
Modified: trunk/exports/SensitivityBiomassRelativeY6.java
===================================================================
--- trunk/exports/SensitivityBiomassRelativeY6.java 2009-04-16 12:00:03 UTC (rev 107)
+++ trunk/exports/SensitivityBiomassRelativeY6.java 2009-04-16 13:25:07 UTC (rev 108)
@@ -31,14 +31,14 @@
@Override
public void export(SimulationStorage simulation, Writer out)
throws Exception {
- Date lastDate = simulation.getResultStorage().getLastDate();
+ ResultStorage resultStorage = simulation.getResultStorage();
+ Date lastDate = resultStorage.getLastDate();
Date firstDate = new Date(11);
double biomass = 0.0;
double firstbiomass = 0.0;
for (Population pop : simulation.getParameter().getPopulations()) {
- if (pop.getName().equals(param_pop.getName())) {
- ResultStorage resultStorage = simulation.getResultStorage();
+ if (pop.getName().equals(param_pop.getName())) {
//Get the biomass on december of the first year
MatrixND matfirstdate = resultStorage.getMatrix(firstDate, pop,
Added: trunk/exports/SensitivityCapturesWeightReferenceY7.java
===================================================================
--- trunk/exports/SensitivityCapturesWeightReferenceY7.java (rev 0)
+++ trunk/exports/SensitivityCapturesWeightReferenceY7.java 2009-04-16 13:25:07 UTC (rev 108)
@@ -0,0 +1,94 @@
+package exports;
+
+import static org.codelutin.i18n.I18n._;
+
+import java.io.Writer;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.math.matrix.MatrixND;
+
+import scripts.ResultName;
+import fr.ifremer.isisfish.datastore.ResultStorage;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.entities.Population;
+import fr.ifremer.isisfish.export.SensitivityExport;
+import fr.ifremer.isisfish.types.Date;
+import fr.ifremer.isisfish.util.Doc;
+
+@Doc("Doc for SensitivityCapturesPoids")
+public class SensitivityCapturesWeightReferenceY7 implements SensitivityExport {
+
+ /** to use log facility, just put in your code: log.info("..."); */
+ static private Log log = LogFactory
+ .getLog(SensitivityCapturesWeightReferenceY7.class);
+
+ protected String[] necessaryResult = { ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP };
+
+ @Doc("Population")
+ public Population param_pop;
+
+ @Doc("Name of the reference simulation")
+ public String param_referenceSimulation="";
+
+ @Override
+ public void export(SimulationStorage simulation, Writer out)
+ throws Exception {
+ SimulationStorage referenceSimulation = SimulationStorage
+ .getSimulation(param_referenceSimulation);
+ ResultStorage referenceResultStorage = referenceSimulation
+ .getResultStorage();
+ ResultStorage resultStorage = simulation.getResultStorage();
+ Date lastDate = resultStorage.getLastDate();
+ Double capturesWeight = 0.0;
+ Double capturesWeightReference = 0.0;
+
+ for (Population pop : simulation.getParameter().getPopulations()) {
+ if (pop.getName().equals(param_pop.getName())) {
+ for (int i = 0; i < 12; i++) {
+
+ //Get the captures Weight of each month of the last year
+ MatrixND matlastdate = resultStorage
+ .getMatrix(
+ new Date(lastDate.getDate() - i),
+ pop,
+ ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP);
+ capturesWeight += matlastdate.sumAll();
+
+ //Get the reference captures Weight of each month of the last year
+ MatrixND matlastdatereference = referenceResultStorage
+ .getMatrix(
+ new Date(lastDate.getDate() - i),
+ pop,
+ ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP);
+ capturesWeightReference += matlastdatereference.sumAll();
+
+ }
+
+ }
+ }
+
+ out.write(Double.toString(capturesWeight / capturesWeightReference));
+ }
+
+ @Override
+ public String getDescription() {
+ return _("Captures in weight for the last year for the popage population. Captures is the sum of zones, groups, metiers and strategies");
+ }
+
+ @Override
+ public String getExportFilename() {
+ return "SensitivityCapturesWeightReferenceY7";
+ }
+
+ @Override
+ public String getExtensionFilename() {
+ return ".csv";
+ }
+
+ @Override
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
+}
\ No newline at end of file
Added: trunk/exports/SensitivityCapturesWeightRelativeReferenceY10.java
===================================================================
--- trunk/exports/SensitivityCapturesWeightRelativeReferenceY10.java (rev 0)
+++ trunk/exports/SensitivityCapturesWeightRelativeReferenceY10.java 2009-04-16 13:25:07 UTC (rev 108)
@@ -0,0 +1,112 @@
+package exports;
+
+import static org.codelutin.i18n.I18n._;
+
+import java.io.Writer;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.math.matrix.MatrixND;
+
+import scripts.ResultName;
+import fr.ifremer.isisfish.datastore.ResultStorage;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.entities.Population;
+import fr.ifremer.isisfish.export.SensitivityExport;
+import fr.ifremer.isisfish.types.Date;
+import fr.ifremer.isisfish.util.Doc;
+
+@Doc("Doc for SensitivityCapturesPoids")
+public class SensitivityCapturesWeightRelativeReferenceY10 implements
+ SensitivityExport {
+
+ /** to use log facility, just put in your code: log.info("..."); */
+ static private Log log = LogFactory
+ .getLog(SensitivityCapturesWeightRelativeReferenceY10.class);
+
+ protected String[] necessaryResult = { ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP };
+
+ @Doc("Population")
+ public Population param_pop;
+
+ @Doc("Name of the reference simulation")
+ public String param_referenceSimulation = "";
+
+ @Override
+ public void export(SimulationStorage simulation, Writer out)
+ throws Exception {
+ SimulationStorage referenceSimulation = SimulationStorage
+ .getSimulation(param_referenceSimulation);
+ ResultStorage referenceResultStorage = referenceSimulation
+ .getResultStorage();
+ ResultStorage resultStorage = simulation.getResultStorage();
+ Date lastDate = resultStorage.getLastDate();
+ Double capturesWeight = 0.0;
+ Double capturesWeightfirst = 0.0;
+ Double capturesWeightreference = 0.0;
+ Double capturesWeightfirstreference = 0.0;
+
+ for (Population pop : simulation.getParameter().getPopulations()) {
+ if (pop.getName().equals(param_pop.getName())) {
+ for (int i = 0; i < 12; i++) {
+
+ //Get the captures Weight of each month of the last year
+ MatrixND matlastdate = resultStorage
+ .getMatrix(
+ new Date(lastDate.getDate() - i),
+ pop,
+ ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP);
+ capturesWeight += matlastdate.sumAll();
+
+ //Get the captures Weight of each month of the first year
+ MatrixND matfirstdate = resultStorage
+ .getMatrix(
+ new Date(i),
+ pop,
+ ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP);
+ capturesWeightfirst += matfirstdate.sumAll();
+
+ //Get the reference captures Weight of each month of the last year
+ MatrixND matlastdatereference = referenceResultStorage
+ .getMatrix(
+ new Date(lastDate.getDate() - i),
+ pop,
+ ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP);
+ capturesWeightreference += matlastdatereference.sumAll();
+
+ //Get the reference captures Weight of each month of the first year
+ MatrixND matfirstdatereference = referenceResultStorage
+ .getMatrix(
+ new Date(i),
+ pop,
+ ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP);
+ capturesWeightfirstreference += matfirstdatereference
+ .sumAll();
+ }
+ }
+ }
+ out.write(Double.toString((capturesWeight / capturesWeightfirst)
+ / (capturesWeightreference / capturesWeightfirstreference)));
+ }
+
+ @Override
+ public String getDescription() {
+ return _("Captures in weight for the last year for the popage population. Captures is the sum of zones, groups, metiers and strategies");
+ }
+
+ @Override
+ public String getExportFilename() {
+ return "SensitivityCapturesWeightRelativeReferenceY10";
+ }
+
+ @Override
+ public String getExtensionFilename() {
+ return ".csv";
+ }
+
+ @Override
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
+}
Added: trunk/exports/SensitivityGenitorBiomassReferenceY8.java
===================================================================
--- trunk/exports/SensitivityGenitorBiomassReferenceY8.java (rev 0)
+++ trunk/exports/SensitivityGenitorBiomassReferenceY8.java 2009-04-16 13:25:07 UTC (rev 108)
@@ -0,0 +1,103 @@
+package exports;
+
+import static org.codelutin.i18n.I18n._;
+
+import java.io.Writer;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.math.matrix.MatrixIterator;
+import org.codelutin.math.matrix.MatrixND;
+
+import scripts.ResultName;
+import fr.ifremer.isisfish.datastore.ResultStorage;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.entities.Population;
+import fr.ifremer.isisfish.entities.PopulationGroup;
+import fr.ifremer.isisfish.export.SensitivityExport;
+import fr.ifremer.isisfish.types.Date;
+import fr.ifremer.isisfish.util.Doc;
+
+@Doc("Doc for SensitivityBiomass")
+public class SensitivityGenitorBiomassReferenceY8 implements SensitivityExport {
+
+ /** to use log facility, just put in your code: log.info("..."); */
+ static private Log log = LogFactory
+ .getLog(SensitivityGenitorBiomassReferenceY8.class);
+
+ protected String[] necessaryResult = { ResultName.MATRIX_BIOMASS };
+
+ @Doc("Population")
+ public Population param_pop;
+
+ @Doc("Name of the reference simulation")
+ public String param_referenceSimulation = "";
+
+ @Override
+ public void export(SimulationStorage simulation, Writer out)
+ throws Exception {
+ SimulationStorage referenceSimulation = SimulationStorage
+ .getSimulation(param_referenceSimulation);
+ ResultStorage referenceResultStorage = referenceSimulation
+ .getResultStorage();
+ ResultStorage resultStorage = simulation.getResultStorage();
+ Date lastDate = resultStorage.getLastDate();
+ Double biomass = 0.0;
+ Double referenceBiomass = 0.0;
+
+ for (Population pop : simulation.getParameter().getPopulations()) {
+ if (pop.getName().equals(param_pop.getName())) {
+
+ //Get the biomass of the last time step
+ MatrixND matlastdate = resultStorage.getMatrix(pop,
+ ResultName.MATRIX_BIOMASS);
+ for (MatrixIterator i = matlastdate.iterator(); i.hasNext();) {
+ i.next();
+ Object[] sems = i.getSemanticsCoordinates();
+ PopulationGroup group = (PopulationGroup) sems[1];
+ Date date = (Date) sems[0];
+ if (date.equals(lastDate)) {
+ biomass += i.getValue() * group.getReproductionRate();
+ }
+ }
+
+ //Get the reference biomass of the last time step
+ MatrixND matlastdatereference = referenceResultStorage
+ .getMatrix(pop, ResultName.MATRIX_BIOMASS);
+ for (MatrixIterator i = matlastdatereference.iterator(); i
+ .hasNext();) {
+ i.next();
+ Object[] sems = i.getSemanticsCoordinates();
+ PopulationGroup group = (PopulationGroup) sems[1];
+ Date date = (Date) sems[0];
+ if (date.equals(lastDate)) {
+ referenceBiomass += i.getValue()
+ * group.getReproductionRate();
+ }
+ }
+ }
+ }
+ out.write(Double.toString(biomass / referenceBiomass));
+ }
+
+ @Override
+ public String getDescription() {
+ return _("Biomass of the genitors for the last time step. Biomass is the sum on the groups and zones");
+ }
+
+ @Override
+ public String getExportFilename() {
+ return "SensitivityGenitorBiomassReferenceY8";
+ }
+
+ @Override
+ public String getExtensionFilename() {
+ return ".csv";
+ }
+
+ @Override
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
+}
Added: trunk/exports/SensitivityGenitorBiomassRelativeReferenceY11.java
===================================================================
--- trunk/exports/SensitivityGenitorBiomassRelativeReferenceY11.java (rev 0)
+++ trunk/exports/SensitivityGenitorBiomassRelativeReferenceY11.java 2009-04-16 13:25:07 UTC (rev 108)
@@ -0,0 +1,138 @@
+package exports;
+
+import static org.codelutin.i18n.I18n._;
+
+import java.io.Writer;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.math.matrix.MatrixIterator;
+import org.codelutin.math.matrix.MatrixND;
+
+import scripts.ResultName;
+import fr.ifremer.isisfish.datastore.ResultStorage;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.entities.Population;
+import fr.ifremer.isisfish.entities.PopulationGroup;
+import fr.ifremer.isisfish.export.SensitivityExport;
+import fr.ifremer.isisfish.types.Date;
+import fr.ifremer.isisfish.util.Doc;
+
+@Doc("Doc for SensitivityBiomass")
+public class SensitivityGenitorBiomassRelativeReferenceY11 implements
+ SensitivityExport {
+
+ /** to use log facility, just put in your code: log.info("..."); */
+ static private Log log = LogFactory
+ .getLog(SensitivityGenitorBiomassRelativeReferenceY11.class);
+
+ protected String[] necessaryResult = { ResultName.MATRIX_BIOMASS };
+
+ @Doc("Population")
+ public Population param_pop;
+
+ @Doc("Name of the reference simulation")
+ public String param_referenceSimulation = "";
+
+ @Override
+ public void export(SimulationStorage simulation, Writer out)
+ throws Exception {
+ SimulationStorage referenceSimulation = SimulationStorage
+ .getSimulation(param_referenceSimulation);
+ ResultStorage resultStorage = simulation.getResultStorage();
+ ResultStorage referenceResultStorage = referenceSimulation
+ .getResultStorage();
+ Date lastDate = resultStorage.getLastDate();
+ Date firstDate = new Date(11);
+ double biomass = 0.0;
+ double firstbiomass = 0.0;
+ double biomassReference = 0.0;
+ double firstbiomassReference = 0.0;
+
+ for (Population pop : simulation.getParameter().getPopulations()) {
+ if (pop.getName().equals(param_pop.getName())) {
+
+ //Get the biomass of the first time step
+ MatrixND matfirstdate = resultStorage.getMatrix(pop,
+ ResultName.MATRIX_BIOMASS);
+ for (MatrixIterator i = matfirstdate.iterator(); i.hasNext();) {
+ i.next();
+ Object[] sems = i.getSemanticsCoordinates();
+ PopulationGroup group = (PopulationGroup) sems[1];
+ Date date = (Date) sems[0];
+ if (date.equals(firstDate)) {
+ firstbiomass += i.getValue()
+ * group.getReproductionRate();
+ }
+ }
+
+ //Get the biomass of the last time step
+ MatrixND matlastdate = resultStorage.getMatrix(pop,
+ ResultName.MATRIX_BIOMASS);
+ for (MatrixIterator i = matlastdate.iterator(); i.hasNext();) {
+ i.next();
+ Object[] sems = i.getSemanticsCoordinates();
+ PopulationGroup group = (PopulationGroup) sems[1];
+ Date date = (Date) sems[0];
+ if (date.equals(lastDate)) {
+ biomass = biomass + i.getValue()
+ * group.getReproductionRate();
+ }
+ }
+
+ //Get the reference biomass of the first time step
+ MatrixND matfirstdatereference = referenceResultStorage
+ .getMatrix(pop, ResultName.MATRIX_BIOMASS);
+ for (MatrixIterator i = matfirstdatereference.iterator(); i
+ .hasNext();) {
+ i.next();
+ Object[] sems = i.getSemanticsCoordinates();
+ PopulationGroup group = (PopulationGroup) sems[1];
+ Date date = (Date) sems[0];
+ if (date.equals(firstDate)) {
+ firstbiomassReference += i.getValue()
+ * group.getReproductionRate();
+ }
+ }
+
+ //Get the reference biomass of the last time step
+ MatrixND matlastdatereference = referenceResultStorage
+ .getMatrix(pop, ResultName.MATRIX_BIOMASS);
+ for (MatrixIterator i = matlastdatereference.iterator(); i
+ .hasNext();) {
+ i.next();
+ Object[] sems = i.getSemanticsCoordinates();
+ PopulationGroup group = (PopulationGroup) sems[1];
+ Date date = (Date) sems[0];
+ if (date.equals(lastDate)) {
+ biomassReference += i.getValue()
+ * group.getReproductionRate();
+ }
+ }
+ }
+ }
+ out.write(Double.toString((biomass / firstbiomass)
+ / (biomassReference / firstbiomassReference)));
+ }
+
+ @Override
+ public String getDescription() {
+ return _("Biomass of the genitors for the last time step. Biomass is the sum on the groups and zones");
+ }
+
+ @Override
+ public String getExportFilename() {
+ return "SensitivityGenitorBiomassRelativeReferenceY11";
+ }
+
+ @Override
+ public String getExtensionFilename() {
+ return ".csv";
+ }
+
+ @Override
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
+}
\ No newline at end of file
Modified: trunk/exports/SensitivityGenitorBiomassRelativeY5.java
===================================================================
--- trunk/exports/SensitivityGenitorBiomassRelativeY5.java 2009-04-16 12:00:03 UTC (rev 107)
+++ trunk/exports/SensitivityGenitorBiomassRelativeY5.java 2009-04-16 13:25:07 UTC (rev 108)
@@ -42,7 +42,7 @@
if (pop.getName().equals(param_pop.getName())) {
ResultStorage resultStorage = simulation.getResultStorage();
- //Get the biomass of the last time step
+ //Get the biomass of the first time step
MatrixND matfirstdate = resultStorage.getMatrix(pop,
ResultName.MATRIX_BIOMASS);
for (MatrixIterator i = matfirstdate.iterator(); i.hasNext();) {
1
0
Author: jcouteau
Date: 2009-04-16 12:00:03 +0000 (Thu, 16 Apr 2009)
New Revision: 107
Modified:
trunk/exports/SensitivityBiomassRelativeY6.java
trunk/exports/SensitivityBiomassY3.java
trunk/exports/SensitivityCapturesWeightRelativeY4.java
trunk/exports/SensitivityCapturesWeightY1.java
trunk/exports/SensitivityGenitorBiomassRelativeY5.java
trunk/exports/SensitivityGenitorBiomassY2.java
Log:
Refactoring of sensitivity standards exports
Modified: trunk/exports/SensitivityBiomassRelativeY6.java
===================================================================
--- trunk/exports/SensitivityBiomassRelativeY6.java 2009-04-14 17:45:33 UTC (rev 106)
+++ trunk/exports/SensitivityBiomassRelativeY6.java 2009-04-16 12:00:03 UTC (rev 107)
@@ -6,10 +6,10 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codelutin.math.matrix.MatrixIterator;
import org.codelutin.math.matrix.MatrixND;
import scripts.ResultName;
+import fr.ifremer.isisfish.datastore.ResultStorage;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.export.SensitivityExport;
@@ -20,7 +20,8 @@
public class SensitivityBiomassRelativeY6 implements SensitivityExport {
/** to use log facility, just put in your code: log.info("..."); */
- static private Log log = LogFactory.getLog(SensitivityBiomassRelativeY6.class);
+ static private Log log = LogFactory
+ .getLog(SensitivityBiomassRelativeY6.class);
protected String[] necessaryResult = { ResultName.MATRIX_BIOMASS };
@@ -31,48 +32,27 @@
public void export(SimulationStorage simulation, Writer out)
throws Exception {
Date lastDate = simulation.getResultStorage().getLastDate();
- Date firstDate = new Date (11);
+ Date firstDate = new Date(11);
double biomass = 0.0;
double firstbiomass = 0.0;
-
- //Calculate the biomass on last time step
-
+
for (Population pop : simulation.getParameter().getPopulations()) {
if (pop.getName().equals(param_pop.getName())) {
- MatrixND mat = simulation.getResultStorage().getMatrix(pop,
+ ResultStorage resultStorage = simulation.getResultStorage();
+
+ //Get the biomass on december of the first year
+ MatrixND matfirstdate = resultStorage.getMatrix(firstDate, pop,
ResultName.MATRIX_BIOMASS);
- for (MatrixIterator i = mat.iterator(); i.hasNext();) {
- i.next();
- Object[] sems = i.getSemanticsCoordinates();
- Date date = (Date) sems[0];
+ firstbiomass = matfirstdate.sumAll();
- if (date.afterOrEquals(lastDate)) {
- biomass = biomass + i.getValue();
- }
- }
- }
- }
-
- //Calculate the biomass on december of first year
-
- for (Population pop : simulation.getParameter().getPopulations()) {
- if (pop.getName().equals(param_pop.getName())) {
- MatrixND mat = simulation.getResultStorage().getMatrix(pop,
+ //Get the biomass of the last time step
+ MatrixND matlastdate = resultStorage.getMatrix(lastDate, pop,
ResultName.MATRIX_BIOMASS);
- for (MatrixIterator i = mat.iterator(); i.hasNext();) {
- i.next();
- Object[] sems = i.getSemanticsCoordinates();
- Date date = (Date) sems[0];
+ biomass = matlastdate.sumAll();
- if (date.equals(firstDate)) {
- firstbiomass = firstbiomass + i.getValue();
- }
- }
}
}
-
- out.write(Double.toString(biomass/firstbiomass));
-
+ out.write(Double.toString(biomass / firstbiomass));
}
@Override
@@ -82,7 +62,7 @@
@Override
public String getExportFilename() {
- return "SensitivityBiomassRelative";
+ return "SensitivityBiomassRelativeY6";
}
@Override
Modified: trunk/exports/SensitivityBiomassY3.java
===================================================================
--- trunk/exports/SensitivityBiomassY3.java 2009-04-14 17:45:33 UTC (rev 106)
+++ trunk/exports/SensitivityBiomassY3.java 2009-04-16 12:00:03 UTC (rev 107)
@@ -6,10 +6,10 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codelutin.math.matrix.MatrixIterator;
import org.codelutin.math.matrix.MatrixND;
import scripts.ResultName;
+import fr.ifremer.isisfish.datastore.ResultStorage;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.export.SensitivityExport;
@@ -30,25 +30,19 @@
@Override
public void export(SimulationStorage simulation, Writer out)
throws Exception {
- Date lastDate = simulation.getResultStorage().getLastDate();
+ ResultStorage resultStorage = simulation.getResultStorage();
+ Date lastDate = resultStorage.getLastDate();
double biomass = 0.0;
for (Population pop : simulation.getParameter().getPopulations()) {
if (pop.getName().equals(param_pop.getName())) {
- MatrixND mat = simulation.getResultStorage().getMatrix(pop,
- ResultName.MATRIX_BIOMASS);
- for (MatrixIterator i = mat.iterator(); i.hasNext();) {
- i.next();
- Object[] sems = i.getSemanticsCoordinates();
- Date date = (Date) sems[0];
- if (date.afterOrEquals(lastDate)) {
- biomass = biomass + i.getValue();
- }
- }
+ //Get the biomass of the last time step
+ MatrixND matlastdate = resultStorage.getMatrix(lastDate, pop,
+ ResultName.MATRIX_BIOMASS);
+ biomass = matlastdate.sumAll();
}
}
out.write(Double.toString(biomass));
-
}
@Override
@@ -58,7 +52,7 @@
@Override
public String getExportFilename() {
- return "SensitivityBiomass";
+ return "SensitivityBiomassY3";
}
@Override
Modified: trunk/exports/SensitivityCapturesWeightRelativeY4.java
===================================================================
--- trunk/exports/SensitivityCapturesWeightRelativeY4.java 2009-04-14 17:45:33 UTC (rev 106)
+++ trunk/exports/SensitivityCapturesWeightRelativeY4.java 2009-04-16 12:00:03 UTC (rev 107)
@@ -6,10 +6,10 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codelutin.math.matrix.MatrixIterator;
import org.codelutin.math.matrix.MatrixND;
import scripts.ResultName;
+import fr.ifremer.isisfish.datastore.ResultStorage;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.export.SensitivityExport;
@@ -20,7 +20,8 @@
public class SensitivityCapturesWeightRelativeY4 implements SensitivityExport {
/** to use log facility, just put in your code: log.info("..."); */
- static private Log log = LogFactory.getLog(SensitivityCapturesWeightRelativeY4.class);
+ static private Log log = LogFactory
+ .getLog(SensitivityCapturesWeightRelativeY4.class);
protected String[] necessaryResult = { ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP };
@@ -30,55 +31,36 @@
@Override
public void export(SimulationStorage simulation, Writer out)
throws Exception {
- Date lastDate = simulation.getResultStorage().getLastDate();
+ ResultStorage resultStorage = simulation.getResultStorage();
+ Date lastDate = resultStorage.getLastDate();
Double capturesWeight = 0.0;
Double capturesWeightfirst = 0.0;
for (Population pop : simulation.getParameter().getPopulations()) {
if (pop.getName().equals(param_pop.getName())) {
- for (Date date = new Date(0); !date.after(lastDate); date = date
- .next()) {
- MatrixND mat = simulation
- .getResultStorage()
+ for (int i = 0; i < 12; i++) {
+
+ //Get the captures Weight of each month of the last year
+ MatrixND matlastdate = resultStorage
.getMatrix(
- date,
+ new Date(lastDate.getDate() - i),
pop,
ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP);
- if (mat != null) { // can be null if simulation is stopped before last year simulation
- mat = mat.sumOverDim(0); //sum on strategy
- for (MatrixIterator i = mat.iterator(); i.hasNext();) {
- i.next();
- double val = i.getValue();
- capturesWeight = capturesWeight + val;
- }
- }
- }
- }
- }
-
- for (Population pop : simulation.getParameter().getPopulations()) {
- if (pop.getName().equals(param_pop.getName())) {
- for (Date date = new Date(0); date.beforeOrEquals(new Date(11)); date = date
- .next()) {
- MatrixND mat = simulation
- .getResultStorage()
+ capturesWeight += matlastdate.sumAll();
+
+ //Get the captures Weight of each month of the first year
+ MatrixND matfirstdate = resultStorage
.getMatrix(
- date,
+ new Date(i),
pop,
ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP);
- if (mat != null) { // can be null if simulation is stopped before last year simulation
- mat = mat.sumOverDim(0); //sum on strategy
- for (MatrixIterator i = mat.iterator(); i.hasNext();) {
- i.next();
- double val = i.getValue();
- capturesWeightfirst = capturesWeightfirst + val;
- }
- }
+ capturesWeightfirst += matfirstdate.sumAll();
}
+
}
}
-
- out.write(Double.toString(capturesWeight/capturesWeightfirst));
+
+ out.write(Double.toString(capturesWeight / capturesWeightfirst));
}
@Override
@@ -88,7 +70,7 @@
@Override
public String getExportFilename() {
- return "SensitivityCapturesWeightRelative";
+ return "SensitivityCapturesWeightRelativeY4";
}
@Override
Modified: trunk/exports/SensitivityCapturesWeightY1.java
===================================================================
--- trunk/exports/SensitivityCapturesWeightY1.java 2009-04-14 17:45:33 UTC (rev 106)
+++ trunk/exports/SensitivityCapturesWeightY1.java 2009-04-16 12:00:03 UTC (rev 107)
@@ -6,10 +6,10 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codelutin.math.matrix.MatrixIterator;
import org.codelutin.math.matrix.MatrixND;
import scripts.ResultName;
+import fr.ifremer.isisfish.datastore.ResultStorage;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.export.SensitivityExport;
@@ -20,7 +20,8 @@
public class SensitivityCapturesWeightY1 implements SensitivityExport {
/** to use log facility, just put in your code: log.info("..."); */
- static private Log log = LogFactory.getLog(SensitivityCapturesWeightY1.class);
+ static private Log log = LogFactory
+ .getLog(SensitivityCapturesWeightY1.class);
protected String[] necessaryResult = { ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP };
@@ -30,30 +31,26 @@
@Override
public void export(SimulationStorage simulation, Writer out)
throws Exception {
- Date lastDate = simulation.getResultStorage().getLastDate();
+ ResultStorage resultStorage = simulation.getResultStorage();
+ Date lastDate = resultStorage.getLastDate();
Double capturesWeight = 0.0;
for (Population pop : simulation.getParameter().getPopulations()) {
if (pop.getName().equals(param_pop.getName())) {
- for (Date date = new Date(0); !date.after(lastDate); date = date
- .next()) {
- MatrixND mat = simulation
- .getResultStorage()
+ for (int i = 0; i < 12; i++) {
+
+ //Get the captures Weight of each month of the last year
+ MatrixND matlastdate = resultStorage
.getMatrix(
- date,
+ new Date(lastDate.getDate() - i),
pop,
ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP);
- if (mat != null) { // can be null if simulation is stopped before last year simulation
- mat = mat.sumOverDim(0); //sum on strategy
- for (MatrixIterator i = mat.iterator(); i.hasNext();) {
- i.next();
- double val = i.getValue();
- capturesWeight = capturesWeight + val;
- }
- }
+ capturesWeight += matlastdate.sumAll();
}
+
}
}
+
out.write(Double.toString(capturesWeight));
}
@@ -64,7 +61,7 @@
@Override
public String getExportFilename() {
- return "SensitivityCapturesWeight";
+ return "SensitivityCapturesWeightY1";
}
@Override
Modified: trunk/exports/SensitivityGenitorBiomassRelativeY5.java
===================================================================
--- trunk/exports/SensitivityGenitorBiomassRelativeY5.java 2009-04-14 17:45:33 UTC (rev 106)
+++ trunk/exports/SensitivityGenitorBiomassRelativeY5.java 2009-04-16 12:00:03 UTC (rev 107)
@@ -10,6 +10,7 @@
import org.codelutin.math.matrix.MatrixND;
import scripts.ResultName;
+import fr.ifremer.isisfish.datastore.ResultStorage;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.entities.PopulationGroup;
@@ -33,46 +34,41 @@
public void export(SimulationStorage simulation, Writer out)
throws Exception {
Date lastDate = simulation.getResultStorage().getLastDate();
- Date firstDate = new Date (11);
+ Date firstDate = new Date(11);
double biomass = 0.0;
double firstbiomass = 0.0;
-
+
for (Population pop : simulation.getParameter().getPopulations()) {
if (pop.getName().equals(param_pop.getName())) {
- MatrixND mat = simulation.getResultStorage().getMatrix(pop,
+ ResultStorage resultStorage = simulation.getResultStorage();
+
+ //Get the biomass of the last time step
+ MatrixND matfirstdate = resultStorage.getMatrix(pop,
ResultName.MATRIX_BIOMASS);
- for (MatrixIterator i = mat.iterator(); i.hasNext();) {
+ for (MatrixIterator i = matfirstdate.iterator(); i.hasNext();) {
i.next();
Object[] sems = i.getSemanticsCoordinates();
- Date date = (Date) sems[0];
PopulationGroup group = (PopulationGroup) sems[1];
-
- if (date.afterOrEquals(lastDate)) {
- biomass = biomass + i.getValue()
+ Date date = (Date) sems[0];
+ if (date.equals(firstDate)) {
+ firstbiomass += i.getValue()
* group.getReproductionRate();
}
}
- }
- }
- //Calculate the biomass on december of first year
-
- for (Population pop : simulation.getParameter().getPopulations()) {
- if (pop.getName().equals(param_pop.getName())) {
- MatrixND mat = simulation.getResultStorage().getMatrix(pop,
+ //Get the biomass of the last time step
+ MatrixND matlastdate = resultStorage.getMatrix(pop,
ResultName.MATRIX_BIOMASS);
- for (MatrixIterator i = mat.iterator(); i.hasNext();) {
+ for (MatrixIterator i = matlastdate.iterator(); i.hasNext();) {
i.next();
Object[] sems = i.getSemanticsCoordinates();
+ PopulationGroup group = (PopulationGroup) sems[1];
Date date = (Date) sems[0];
-
- if (date.equals(firstDate)) {
- firstbiomass = firstbiomass + i.getValue();
- }
+ if (date.equals(lastDate))
+ biomass += i.getValue() * group.getReproductionRate();
}
}
}
-
out.write(Double.toString(biomass / firstbiomass));
}
@@ -83,7 +79,7 @@
@Override
public String getExportFilename() {
- return "SensitivityGenitorBiomassRelative";
+ return "SensitivityGenitorBiomassRelativeY5";
}
@Override
Modified: trunk/exports/SensitivityGenitorBiomassY2.java
===================================================================
--- trunk/exports/SensitivityGenitorBiomassY2.java 2009-04-14 17:45:33 UTC (rev 106)
+++ trunk/exports/SensitivityGenitorBiomassY2.java 2009-04-16 12:00:03 UTC (rev 107)
@@ -10,6 +10,7 @@
import org.codelutin.math.matrix.MatrixND;
import scripts.ResultName;
+import fr.ifremer.isisfish.datastore.ResultStorage;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.entities.PopulationGroup;
@@ -21,7 +22,8 @@
public class SensitivityGenitorBiomassY2 implements SensitivityExport {
/** to use log facility, just put in your code: log.info("..."); */
- static private Log log = LogFactory.getLog(SensitivityGenitorBiomassY2.class);
+ static private Log log = LogFactory
+ .getLog(SensitivityGenitorBiomassY2.class);
protected String[] necessaryResult = { ResultName.MATRIX_BIOMASS };
@@ -33,18 +35,21 @@
throws Exception {
Date lastDate = simulation.getResultStorage().getLastDate();
double biomass = 0.0;
+
for (Population pop : simulation.getParameter().getPopulations()) {
if (pop.getName().equals(param_pop.getName())) {
- MatrixND mat = simulation.getResultStorage().getMatrix(pop,
+ ResultStorage resultStorage = simulation.getResultStorage();
+
+ //Get the biomass of the last time step
+ MatrixND matlastdate = resultStorage.getMatrix(pop,
ResultName.MATRIX_BIOMASS);
- for (MatrixIterator i = mat.iterator(); i.hasNext();) {
+ for (MatrixIterator i = matlastdate.iterator(); i.hasNext();) {
i.next();
Object[] sems = i.getSemanticsCoordinates();
Date date = (Date) sems[0];
PopulationGroup group = (PopulationGroup) sems[1];
-
- if (date.afterOrEquals(lastDate)) {
- biomass = biomass + i.getValue()*group.getReproductionRate();
+ if (date.equals(lastDate)) {
+ biomass += i.getValue() * group.getReproductionRate();
}
}
}
@@ -59,7 +64,7 @@
@Override
public String getExportFilename() {
- return "SensitivityGenitorBiomass";
+ return "SensitivityGenitorBiomassY2";
}
@Override
1
0
Author: jcouteau
Date: 2009-04-14 17:45:33 +0000 (Tue, 14 Apr 2009)
New Revision: 106
Modified:
trunk/exports/SensitivityCapturesWeightRelativeY4.java
Log:
Modified: trunk/exports/SensitivityCapturesWeightRelativeY4.java
===================================================================
--- trunk/exports/SensitivityCapturesWeightRelativeY4.java 2009-04-14 17:41:56 UTC (rev 105)
+++ trunk/exports/SensitivityCapturesWeightRelativeY4.java 2009-04-14 17:45:33 UTC (rev 106)
@@ -1,4 +1,4 @@
-ppackage exports;
+package exports;
import static org.codelutin.i18n.I18n._;
1
0
Author: jcouteau
Date: 2009-04-14 17:41:56 +0000 (Tue, 14 Apr 2009)
New Revision: 105
Added:
trunk/exports/SensitivityBiomassReferenceY9.java
trunk/exports/SensitivityCapturesWeightRelativeY4.java
trunk/exports/SensitivityCapturesWeightY1.java
trunk/exports/SensitivityGenitorBiomassRelativeY5.java
Removed:
trunk/exports/SensitivityCapturesPoids.java
Modified:
trunk/exports/SensitivityGenitorBiomassY2.java
Log:
Adding exports. Fixing bugs on exports.
Added: trunk/exports/SensitivityBiomassReferenceY9.java
===================================================================
--- trunk/exports/SensitivityBiomassReferenceY9.java (rev 0)
+++ trunk/exports/SensitivityBiomassReferenceY9.java 2009-04-14 17:41:56 UTC (rev 105)
@@ -0,0 +1,80 @@
+package exports;
+
+import static org.codelutin.i18n.I18n._;
+
+import java.io.File;
+import java.io.Writer;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.math.matrix.MatrixIterator;
+import org.codelutin.math.matrix.MatrixND;
+
+import scripts.ResultName;
+import fr.ifremer.isisfish.datastore.ResultStorage;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.entities.Population;
+import fr.ifremer.isisfish.export.SensitivityExport;
+import fr.ifremer.isisfish.types.Date;
+import fr.ifremer.isisfish.util.Doc;
+
+@Doc("Doc for SensitivityBiomass")
+public class SensitivityBiomassReferenceY9 implements SensitivityExport {
+
+ /** to use log facility, just put in your code: log.info("..."); */
+ static private Log log = LogFactory.getLog(SensitivityBiomassReferenceY9.class);
+
+ protected String[] necessaryResult = { ResultName.MATRIX_BIOMASS };
+
+ @Doc("Population")
+ public Population param_pop;
+
+ @Doc("Path to the reference simulation exports")
+ public String param_referenceExports;
+
+ @Override
+ public void export(SimulationStorage simulation, Writer out)
+ throws Exception {
+ File referenceExports=new File (param_referenceExports);
+ Date lastDate = simulation.getResultStorage().getLastDate();
+ double biomass = 0.0;
+ for (Population pop : simulation.getParameter().getPopulations()) {
+ if (pop.getName().equals(param_pop.getName())) {
+ MatrixND mat = simulation.getResultStorage().getMatrix(pop,
+ ResultName.MATRIX_BIOMASS);
+ for (MatrixIterator i = mat.iterator(); i.hasNext();) {
+ i.next();
+ Object[] sems = i.getSemanticsCoordinates();
+ Date date = (Date) sems[0];
+
+ if (date.afterOrEquals(lastDate)) {
+ biomass = biomass + i.getValue();
+ }
+ }
+ }
+ }
+ out.write(Double.toString(biomass));
+
+ }
+
+ @Override
+ public String getDescription() {
+ return _("Biomass for the last time step. Biomass is the sum on the groups and zones");
+ }
+
+ @Override
+ public String getExportFilename() {
+ return "SensitivityBiomass";
+ }
+
+ @Override
+ public String getExtensionFilename() {
+ return ".csv";
+ }
+
+ @Override
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
+}
Deleted: trunk/exports/SensitivityCapturesPoids.java
===================================================================
--- trunk/exports/SensitivityCapturesPoids.java 2009-04-13 11:42:54 UTC (rev 104)
+++ trunk/exports/SensitivityCapturesPoids.java 2009-04-14 17:41:56 UTC (rev 105)
@@ -1,78 +0,0 @@
-package exports;
-
-import static org.codelutin.i18n.I18n._;
-
-import java.io.Writer;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codelutin.math.matrix.MatrixIterator;
-import org.codelutin.math.matrix.MatrixND;
-
-import scripts.ResultName;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.entities.Population;
-import fr.ifremer.isisfish.export.SensitivityExport;
-import fr.ifremer.isisfish.types.Date;
-import fr.ifremer.isisfish.util.Doc;
-
-@Doc("Doc for SensitivityCapturesPoids")
-public class SensitivityCapturesPoids implements SensitivityExport {
-
- /** to use log facility, just put in your code: log.info("..."); */
- static private Log log = LogFactory.getLog(SensitivityCapturesPoids.class);
-
- protected String[] necessaryResult = { ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP };
-
- @Doc("Population")
- public Population param_pop;
-
- @Override
- public void export(SimulationStorage simulation, Writer out)
- throws Exception {
- Date lastDate = simulation.getResultStorage().getLastDate();
- Double capturesWeight = 0.0;
-
- for (Population pop : simulation.getParameter().getPopulations()) {
- if (pop.getName().equals(param_pop.getName())) {
- for (Date date = new Date(0); !date.after(lastDate); date = date
- .next()) {
- MatrixND mat = simulation
- .getResultStorage()
- .getMatrix(
- date,
- pop,
- ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP);
- if (mat != null) { // can be null if simulation is stopped before last year simulation
- mat = mat.sumOverDim(0); //sum on strategy
- for (MatrixIterator i = mat.iterator(); i.hasNext();) {
- i.next();
- capturesWeight = capturesWeight + i.getValue();
- }
- }
- }
- }
- }
- }
-
- @Override
- public String getDescription() {
- return _("Captures in weight for the last year for the popage population. Captures is the sum of zones, groups, metiers and strategies");
- }
-
- @Override
- public String getExportFilename() {
- return "SensitivityCapturesPoids";
- }
-
- @Override
- public String getExtensionFilename() {
- return ".csv";
- }
-
- @Override
- public String[] getNecessaryResult() {
- return this.necessaryResult;
- }
-
-}
Added: trunk/exports/SensitivityCapturesWeightRelativeY4.java
===================================================================
--- trunk/exports/SensitivityCapturesWeightRelativeY4.java (rev 0)
+++ trunk/exports/SensitivityCapturesWeightRelativeY4.java 2009-04-14 17:41:56 UTC (rev 105)
@@ -0,0 +1,104 @@
+ppackage exports;
+
+import static org.codelutin.i18n.I18n._;
+
+import java.io.Writer;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.math.matrix.MatrixIterator;
+import org.codelutin.math.matrix.MatrixND;
+
+import scripts.ResultName;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.entities.Population;
+import fr.ifremer.isisfish.export.SensitivityExport;
+import fr.ifremer.isisfish.types.Date;
+import fr.ifremer.isisfish.util.Doc;
+
+@Doc("Doc for SensitivityCapturesPoids")
+public class SensitivityCapturesWeightRelativeY4 implements SensitivityExport {
+
+ /** to use log facility, just put in your code: log.info("..."); */
+ static private Log log = LogFactory.getLog(SensitivityCapturesWeightRelativeY4.class);
+
+ protected String[] necessaryResult = { ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP };
+
+ @Doc("Population")
+ public Population param_pop;
+
+ @Override
+ public void export(SimulationStorage simulation, Writer out)
+ throws Exception {
+ Date lastDate = simulation.getResultStorage().getLastDate();
+ Double capturesWeight = 0.0;
+ Double capturesWeightfirst = 0.0;
+
+ for (Population pop : simulation.getParameter().getPopulations()) {
+ if (pop.getName().equals(param_pop.getName())) {
+ for (Date date = new Date(0); !date.after(lastDate); date = date
+ .next()) {
+ MatrixND mat = simulation
+ .getResultStorage()
+ .getMatrix(
+ date,
+ pop,
+ ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP);
+ if (mat != null) { // can be null if simulation is stopped before last year simulation
+ mat = mat.sumOverDim(0); //sum on strategy
+ for (MatrixIterator i = mat.iterator(); i.hasNext();) {
+ i.next();
+ double val = i.getValue();
+ capturesWeight = capturesWeight + val;
+ }
+ }
+ }
+ }
+ }
+
+ for (Population pop : simulation.getParameter().getPopulations()) {
+ if (pop.getName().equals(param_pop.getName())) {
+ for (Date date = new Date(0); date.beforeOrEquals(new Date(11)); date = date
+ .next()) {
+ MatrixND mat = simulation
+ .getResultStorage()
+ .getMatrix(
+ date,
+ pop,
+ ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP);
+ if (mat != null) { // can be null if simulation is stopped before last year simulation
+ mat = mat.sumOverDim(0); //sum on strategy
+ for (MatrixIterator i = mat.iterator(); i.hasNext();) {
+ i.next();
+ double val = i.getValue();
+ capturesWeightfirst = capturesWeightfirst + val;
+ }
+ }
+ }
+ }
+ }
+
+ out.write(Double.toString(capturesWeight/capturesWeightfirst));
+ }
+
+ @Override
+ public String getDescription() {
+ return _("Captures in weight for the last year for the popage population. Captures is the sum of zones, groups, metiers and strategies");
+ }
+
+ @Override
+ public String getExportFilename() {
+ return "SensitivityCapturesWeightRelative";
+ }
+
+ @Override
+ public String getExtensionFilename() {
+ return ".csv";
+ }
+
+ @Override
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
+}
Copied: trunk/exports/SensitivityCapturesWeightY1.java (from rev 102, trunk/exports/SensitivityCapturesPoids.java)
===================================================================
--- trunk/exports/SensitivityCapturesWeightY1.java (rev 0)
+++ trunk/exports/SensitivityCapturesWeightY1.java 2009-04-14 17:41:56 UTC (rev 105)
@@ -0,0 +1,80 @@
+package exports;
+
+import static org.codelutin.i18n.I18n._;
+
+import java.io.Writer;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.math.matrix.MatrixIterator;
+import org.codelutin.math.matrix.MatrixND;
+
+import scripts.ResultName;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.entities.Population;
+import fr.ifremer.isisfish.export.SensitivityExport;
+import fr.ifremer.isisfish.types.Date;
+import fr.ifremer.isisfish.util.Doc;
+
+@Doc("Doc for SensitivityCapturesPoids")
+public class SensitivityCapturesWeightY1 implements SensitivityExport {
+
+ /** to use log facility, just put in your code: log.info("..."); */
+ static private Log log = LogFactory.getLog(SensitivityCapturesWeightY1.class);
+
+ protected String[] necessaryResult = { ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP };
+
+ @Doc("Population")
+ public Population param_pop;
+
+ @Override
+ public void export(SimulationStorage simulation, Writer out)
+ throws Exception {
+ Date lastDate = simulation.getResultStorage().getLastDate();
+ Double capturesWeight = 0.0;
+
+ for (Population pop : simulation.getParameter().getPopulations()) {
+ if (pop.getName().equals(param_pop.getName())) {
+ for (Date date = new Date(0); !date.after(lastDate); date = date
+ .next()) {
+ MatrixND mat = simulation
+ .getResultStorage()
+ .getMatrix(
+ date,
+ pop,
+ ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP);
+ if (mat != null) { // can be null if simulation is stopped before last year simulation
+ mat = mat.sumOverDim(0); //sum on strategy
+ for (MatrixIterator i = mat.iterator(); i.hasNext();) {
+ i.next();
+ double val = i.getValue();
+ capturesWeight = capturesWeight + val;
+ }
+ }
+ }
+ }
+ }
+ out.write(Double.toString(capturesWeight));
+ }
+
+ @Override
+ public String getDescription() {
+ return _("Captures in weight for the last year for the popage population. Captures is the sum of zones, groups, metiers and strategies");
+ }
+
+ @Override
+ public String getExportFilename() {
+ return "SensitivityCapturesWeight";
+ }
+
+ @Override
+ public String getExtensionFilename() {
+ return ".csv";
+ }
+
+ @Override
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
+}
Property changes on: trunk/exports/SensitivityCapturesWeightY1.java
___________________________________________________________________
Name: svn:mergeinfo
+
Added: trunk/exports/SensitivityGenitorBiomassRelativeY5.java
===================================================================
--- trunk/exports/SensitivityGenitorBiomassRelativeY5.java (rev 0)
+++ trunk/exports/SensitivityGenitorBiomassRelativeY5.java 2009-04-14 17:41:56 UTC (rev 105)
@@ -0,0 +1,99 @@
+package exports;
+
+import static org.codelutin.i18n.I18n._;
+
+import java.io.Writer;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.math.matrix.MatrixIterator;
+import org.codelutin.math.matrix.MatrixND;
+
+import scripts.ResultName;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.entities.Population;
+import fr.ifremer.isisfish.entities.PopulationGroup;
+import fr.ifremer.isisfish.export.SensitivityExport;
+import fr.ifremer.isisfish.types.Date;
+import fr.ifremer.isisfish.util.Doc;
+
+@Doc("Doc for SensitivityBiomass")
+public class SensitivityGenitorBiomassRelativeY5 implements SensitivityExport {
+
+ /** to use log facility, just put in your code: log.info("..."); */
+ static private Log log = LogFactory
+ .getLog(SensitivityGenitorBiomassRelativeY5.class);
+
+ protected String[] necessaryResult = { ResultName.MATRIX_BIOMASS };
+
+ @Doc("Population")
+ public Population param_pop;
+
+ @Override
+ public void export(SimulationStorage simulation, Writer out)
+ throws Exception {
+ Date lastDate = simulation.getResultStorage().getLastDate();
+ Date firstDate = new Date (11);
+ double biomass = 0.0;
+ double firstbiomass = 0.0;
+
+ for (Population pop : simulation.getParameter().getPopulations()) {
+ if (pop.getName().equals(param_pop.getName())) {
+ MatrixND mat = simulation.getResultStorage().getMatrix(pop,
+ ResultName.MATRIX_BIOMASS);
+ for (MatrixIterator i = mat.iterator(); i.hasNext();) {
+ i.next();
+ Object[] sems = i.getSemanticsCoordinates();
+ Date date = (Date) sems[0];
+ PopulationGroup group = (PopulationGroup) sems[1];
+
+ if (date.afterOrEquals(lastDate)) {
+ biomass = biomass + i.getValue()
+ * group.getReproductionRate();
+ }
+ }
+ }
+ }
+
+ //Calculate the biomass on december of first year
+
+ for (Population pop : simulation.getParameter().getPopulations()) {
+ if (pop.getName().equals(param_pop.getName())) {
+ MatrixND mat = simulation.getResultStorage().getMatrix(pop,
+ ResultName.MATRIX_BIOMASS);
+ for (MatrixIterator i = mat.iterator(); i.hasNext();) {
+ i.next();
+ Object[] sems = i.getSemanticsCoordinates();
+ Date date = (Date) sems[0];
+
+ if (date.equals(firstDate)) {
+ firstbiomass = firstbiomass + i.getValue();
+ }
+ }
+ }
+ }
+
+ out.write(Double.toString(biomass / firstbiomass));
+ }
+
+ @Override
+ public String getDescription() {
+ return _("Biomass of the genitors for the last time step. Biomass is the sum on the groups and zones");
+ }
+
+ @Override
+ public String getExportFilename() {
+ return "SensitivityGenitorBiomassRelative";
+ }
+
+ @Override
+ public String getExtensionFilename() {
+ return ".csv";
+ }
+
+ @Override
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
+}
\ No newline at end of file
Modified: trunk/exports/SensitivityGenitorBiomassY2.java
===================================================================
--- trunk/exports/SensitivityGenitorBiomassY2.java 2009-04-13 11:42:54 UTC (rev 104)
+++ trunk/exports/SensitivityGenitorBiomassY2.java 2009-04-14 17:41:56 UTC (rev 105)
@@ -50,7 +50,6 @@
}
}
out.write(Double.toString(biomass));
-
}
@Override
1
0
Author: jcouteau
Date: 2009-04-13 11:42:54 +0000 (Mon, 13 Apr 2009)
New Revision: 104
Removed:
trunk/exports/SensitivityBiomass.java
Modified:
trunk/exports/SensitivityBiomassRelativeY6.java
Log:
Fixed Y6 export
Deleted: trunk/exports/SensitivityBiomass.java
===================================================================
--- trunk/exports/SensitivityBiomass.java 2009-04-13 08:49:24 UTC (rev 103)
+++ trunk/exports/SensitivityBiomass.java 2009-04-13 11:42:54 UTC (rev 104)
@@ -1,74 +0,0 @@
-package exports;
-
-import static org.codelutin.i18n.I18n._;
-
-import java.io.Writer;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codelutin.math.matrix.MatrixIterator;
-import org.codelutin.math.matrix.MatrixND;
-
-import scripts.ResultName;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.entities.Population;
-import fr.ifremer.isisfish.export.SensitivityExport;
-import fr.ifremer.isisfish.types.Date;
-import fr.ifremer.isisfish.util.Doc;
-
-@Doc("Doc for SensitivityBiomass")
-public class SensitivityBiomass implements SensitivityExport {
-
- /** to use log facility, just put in your code: log.info("..."); */
- static private Log log = LogFactory.getLog(SensitivityBiomass.class);
-
- protected String[] necessaryResult = { ResultName.MATRIX_BIOMASS };
-
- @Doc("Population")
- public Population param_pop;
-
- @Override
- public void export(SimulationStorage simulation, Writer out)
- throws Exception {
- Date lastDate = simulation.getResultStorage().getLastDate();
- double biomass = 0.0;
- for (Population pop : simulation.getParameter().getPopulations()) {
- if (pop.getName().equals(param_pop.getName())) {
- MatrixND mat = simulation.getResultStorage().getMatrix(pop,
- ResultName.MATRIX_BIOMASS);
- for (MatrixIterator i = mat.iterator(); i.hasNext();) {
- i.next();
- Object[] sems = i.getSemanticsCoordinates();
- Date date = (Date) sems[0];
-
- if (date.afterOrEquals(lastDate)) {
- biomass = biomass + i.getValue();
- }
- }
- }
- }
- out.write(Double.toString(biomass));
-
- }
-
- @Override
- public String getDescription() {
- return _("Biomass for the last time step. Biomass is the sum on the groups and zones");
- }
-
- @Override
- public String getExportFilename() {
- return "SensitivityBiomass";
- }
-
- @Override
- public String getExtensionFilename() {
- return ".csv";
- }
-
- @Override
- public String[] getNecessaryResult() {
- return this.necessaryResult;
- }
-
-}
Modified: trunk/exports/SensitivityBiomassRelativeY6.java
===================================================================
--- trunk/exports/SensitivityBiomassRelativeY6.java 2009-04-13 08:49:24 UTC (rev 103)
+++ trunk/exports/SensitivityBiomassRelativeY6.java 2009-04-13 11:42:54 UTC (rev 104)
@@ -82,7 +82,7 @@
@Override
public String getExportFilename() {
- return "SensitivityBiomass";
+ return "SensitivityBiomassRelative";
}
@Override
1
0
Author: jcouteau
Date: 2009-04-13 08:49:24 +0000 (Mon, 13 Apr 2009)
New Revision: 103
Modified:
trunk/exports/SensitivityBiomassRelativeY6.java
Log:
Fix bad copy/paste
Modified: trunk/exports/SensitivityBiomassRelativeY6.java
===================================================================
--- trunk/exports/SensitivityBiomassRelativeY6.java 2009-04-13 08:30:32 UTC (rev 102)
+++ trunk/exports/SensitivityBiomassRelativeY6.java 2009-04-13 08:49:24 UTC (rev 103)
@@ -17,10 +17,10 @@
import fr.ifremer.isisfish.util.Doc;
@Doc("Doc for SensitivityBiomass")
-public class SensitivityBiomassY3 implements SensitivityExport {
+public class SensitivityBiomassRelativeY6 implements SensitivityExport {
/** to use log facility, just put in your code: log.info("..."); */
- static private Log log = LogFactory.getLog(SensitivityBiomassY3.class);
+ static private Log log = LogFactory.getLog(SensitivityBiomassRelativeY6.class);
protected String[] necessaryResult = { ResultName.MATRIX_BIOMASS };
1
0