r1903 - in isis-fish/trunk/src: main/java/fr/ifremer/isisfish/simulator/sensitivity main/resources/templates/script test/java/fr/ifremer/isisfish/datastore test/java/fr/ifremer/isisfish/simulator/launcher test/java/fr/ifremer/isisfish/simulator/sensitivity
Author: chatellier Date: 2009-03-02 17:22:39 +0000 (Mon, 02 Mar 2009) New Revision: 1903 Removed: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorsAnalysePlan.java Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityCalculator.java isis-fish/trunk/src/main/resources/templates/script/sensitivity.ftl isis-fish/trunk/src/test/java/fr/ifremer/isisfish/datastore/SensitivityStorageTest.java isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityCalculatorRandomMock.java Log: Add SimulationStorage list on SensivityCalculator interfaces Fix tests. Deleted: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorsAnalysePlan.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorsAnalysePlan.java 2009-03-02 16:58:18 UTC (rev 1902) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorsAnalysePlan.java 2009-03-02 17:22:39 UTC (rev 1903) @@ -1,182 +0,0 @@ -/* *##% - * Copyright (C) 2009 Code Lutin - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - *##%*/ - -package fr.ifremer.isisfish.simulator.sensitivity; - -import static org.codelutin.i18n.I18n._; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.commons.beanutils.BeanUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.codelutin.topia.TopiaContext; -import org.codelutin.topia.TopiaException; -import org.codelutin.topia.persistence.TopiaEntity; - -import fr.ifremer.isisfish.datastore.SimulationStorage; -import fr.ifremer.isisfish.simulator.AnalysePlanContext; -import fr.ifremer.isisfish.simulator.AnalysePlanIndependent; -import fr.ifremer.isisfish.util.Doc; - -/** - * Analyze plan to manage factors. - * - * This plan is independent, because factors do not depend - * each others. - * - * @author chatellier - * @version $Revision: 1.0 $ - * - * Last update : $Date: 23 févr. 2009 $ - * By : $Author: chatellier $ - */ -public class FactorsAnalysePlan implements AnalysePlanIndependent { - - /** to use log facility, just put in your code: log.info("..."); */ - private static Log log = LogFactory.getLog(FactorsAnalysePlan.class); - - /** - * Domaine à utiliser pour le plan d'analyse. - */ - @Doc(value = "Factors design plan") - public DesignPlan designPlan; - - /** - * Map entre les numeros de simulation et les facteurs - * a appliquer à cette simulation. - * - * Start at 0. - */ - protected Map<Integer, List<Factor<? extends Serializable>>> simulationsFactors; - - /* - * @see fr.ifremer.isisfish.simulator.AnalysePlan#getDescription() - */ - @Override - public String getDescription() throws Exception { - return _("Factors analyse plan"); - } - - /* - * @see fr.ifremer.isisfish.simulator.AnalysePlan#getNecessaryResult() - */ - @Override - public String[] getNecessaryResult() { - // return value could not be null - return new String[0]; - } - - /* - * @see fr.ifremer.isisfish.simulator.AnalysePlan#init(fr.ifremer.isisfish.simulator.AnalysePlanContext) - */ - @Override - public void init(AnalysePlanContext context) throws Exception { - - // here to call R ? - SensitivityCalculator sensitivityCalculator = null; - - /*Scenario scenario = sensitivityCalculator.getScenario(designPlan); - scenarioToMap(scenario);*/ - } - - /** - * Convertit un scenario en une map indexée. - * - * Methode a part pour être stéreotypée. - */ - protected void scenarioToMap(Scenario scenario) - throws Exception { - int simulationIndex = 0; - simulationsFactors = new HashMap<Integer, List<Factor<? extends Serializable>>>(); - /*for (List<Factor<? extends Serializable>> scenarioValue : scenario.getFactors()) { - simulationsFactors.put(simulationIndex, scenarioValue); - simulationIndex++; - }*/ - } - - /* - * @see fr.ifremer.isisfish.simulator.AnalysePlan#beforeSimulation(fr.ifremer.isisfish.simulator.AnalysePlanContext, fr.ifremer.isisfish.datastore.SimulationStorage) - */ - @Override - public boolean beforeSimulation(AnalysePlanContext context, - SimulationStorage nextSimulation) throws Exception { - - int simulationNumber = context.getNumber(); - - if (log.isInfoEnabled()) { - log.info("Before simulation number " + simulationNumber); - } - - List<Factor<? extends Serializable>> factors = simulationsFactors.get(simulationNumber); - - if (log.isDebugEnabled()) { - // get specified line in domain array - // to inject into simulation storage - log.debug("Factor used for this simulation" + factors); - } - - putFactorIntoSimulation(factors, nextSimulation); - - // true to do next simulation - return true; - } - - /** - * Put factors value into simulation. - * - * @param factors to put - * @param simulation to put factors into - * @throws TopiaException if db errors - * @throws InvocationTargetException - * @throws IllegalAccessException - */ - protected void putFactorIntoSimulation(List<Factor<? extends Serializable>> factors, SimulationStorage simulation) throws TopiaException, IllegalAccessException, InvocationTargetException { - // inject factors into simulation - TopiaContext rootContext = simulation.getStorage(); - TopiaContext childContext = rootContext.beginTransaction(); - - for (Factor<? extends Serializable> factor : factors) { - Serializable value = factor.getValue(); - String path = factor.getPath(); - - // path is like "org.codelutin.factor#1234567890#0.12242345354#name" - String topiaId = path.substring(0, path.lastIndexOf("#")); - String propertyName = path.substring(0, path.lastIndexOf("#")); - - TopiaEntity entity = childContext.findByTopiaId(topiaId); - BeanUtils.setProperty(entity, propertyName, value); - } - } - - /* - * @see fr.ifremer.isisfish.simulator.AnalysePlan#afterSimulation(fr.ifremer.isisfish.simulator.AnalysePlanContext, fr.ifremer.isisfish.datastore.SimulationStorage) - */ - @Override - public boolean afterSimulation(AnalysePlanContext context, - SimulationStorage lastSimulation) throws Exception { - - // true to do next simulation - return true; - } -} Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityCalculator.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityCalculator.java 2009-03-02 16:58:18 UTC (rev 1902) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityCalculator.java 2009-03-02 17:22:39 UTC (rev 1903) @@ -18,6 +18,10 @@ package fr.ifremer.isisfish.simulator.sensitivity; +import java.util.List; + +import fr.ifremer.isisfish.datastore.SimulationStorage; + /** * Interface commune à toutes implémentation * de calcul de sensibilité. @@ -65,10 +69,13 @@ * à l'outils de d'analyse de sensibilité. * * @param sensitivityScenarios résultats de scenarios + * @param simulationStorages ensemble des {@link SimulationStorage} + * qui ont résultés des simulations * @throws SensitivityException if calculator impl fail to execute * * @see SensitivityScenarios */ - void analyzeResult(SensitivityScenarios sensitivityScenarios) + void analyzeResult(SensitivityScenarios sensitivityScenarios, + List<SimulationStorage> simulationStorages) throws SensitivityException; } Modified: isis-fish/trunk/src/main/resources/templates/script/sensitivity.ftl =================================================================== --- isis-fish/trunk/src/main/resources/templates/script/sensitivity.ftl 2009-03-02 16:58:18 UTC (rev 1902) +++ isis-fish/trunk/src/main/resources/templates/script/sensitivity.ftl 2009-03-02 17:22:39 UTC (rev 1903) @@ -2,14 +2,17 @@ import static org.codelutin.i18n.I18n._; +import java.util.List; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codelutin.math.matrix.*; -import fr.ifremer.isisfish.util.Doc; +import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.entities.*; import fr.ifremer.isisfish.simulator.sensitivity.*; +import fr.ifremer.isisfish.util.Doc; /** * ${name}.java @@ -69,11 +72,14 @@ * à l'outils de d'analyse de sensibilité. * * @param sensitivityScenarios résultats de scenarios + * @param simulationStorages ensemble des {@link SimulationStorage} + * qui ont résultés des simulations * @throws SensitivityException if calculator impl fail to execute * * @see SensitivityScenarios */ - public void analyzeResult(SensitivityScenarios sensitivityScenarios) + public void analyzeResult(SensitivityScenarios sensitivityScenarios, + List<SimulationStorage> simulationStorages) throws SensitivityException { } Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/datastore/SensitivityStorageTest.java =================================================================== --- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/datastore/SensitivityStorageTest.java 2009-03-02 16:58:18 UTC (rev 1902) +++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/datastore/SensitivityStorageTest.java 2009-03-02 17:22:39 UTC (rev 1903) @@ -31,8 +31,6 @@ import fr.ifremer.TestUtils; import fr.ifremer.isisfish.IsisFish; -import fr.ifremer.isisfish.util.ClasspathTemplateLoader; -import freemarker.cache.TemplateLoader; import freemarker.template.Configuration; import freemarker.template.Template; Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java =================================================================== --- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2009-03-02 16:58:18 UTC (rev 1902) +++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2009-03-02 17:22:39 UTC (rev 1903) @@ -23,6 +23,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.codelutin.math.matrix.MatrixFactory; +import org.codelutin.math.matrix.MatrixND; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; @@ -65,13 +67,12 @@ @Before public void setUp() { - //System.setProperty("hibernate.hbm2ddl.auto", "create"); - System.setProperty("java.library.path", "/usr/local/lib"); + } @After public void tearDown() { - //System.setProperty("hibernate.hbm2ddl.auto", ""); + } /** @@ -117,6 +118,59 @@ } /** + * Build a test {@link DesignPlan} filled with matrix. + * + * @return a test {@link DesignPlan} + */ + protected DesignPlan getTestMatrixDesignPlan() { + DesignPlan designPlan = new DesignPlan(); + + // matrix 1 + MatrixND matrix1 = MatrixFactory.getInstance().create("test1", + new int[] { 3, 2 }, new String[] { "col1", "col2" }); + matrix1.setValue(new int[] { 0, 0 }, 13); + matrix1.setValue(new int[] { 0, 1 }, -14); + matrix1.setValue(new int[] { 1, 0 }, 21); + matrix1.setValue(new int[] { 1, 1 }, 2); + matrix1.setValue(new int[] { 2, 0 }, 12); + matrix1.setValue(new int[] { 2, 1 }, -1); + + // factor 1 + Factor<Double> factor1 = new Factor<Double>("test double 1"); + ContinuousDomain<Double> domain1 = new ContinuousDomain<Double>(); + domain1.setMinBound(0.0); + domain1.setMaxBound(50.0); + factor1.setDomain(domain1); + factor1.setPath("fr.ifremer.isisfish.entities.Population#1156462366818#0.5536481119187864#maxLength"); + + // matrix 2 + MatrixND matrix2 = MatrixFactory.getInstance().create("test1", + new int[] { 3, 2 }, new String[] { "col1", "col2" }); + matrix2.setValue(new int[] { 0, 0 }, 13); + matrix2.setValue(new int[] { 0, 1 }, -14); + matrix2.setValue(new int[] { 1, 0 }, 21); + matrix2.setValue(new int[] { 1, 1 }, 2); + matrix2.setValue(new int[] { 2, 0 }, 12); + matrix2.setValue(new int[] { 2, 1 }, -1); + + // factor 2 + Factor<Double> factor2 = new Factor<Double>("test double 2"); + DiscreteDomain<Double> domain2 = new DiscreteDomain<Double>(); + domain2.getValues().put(0.0, 12.3); + domain2.getValues().put(1.0, 70.9); + domain2.getValues().put(2.0, 21.0); + domain2.getValues().put(3.0, -12.1); + domain2.getValues().put(4.0, -8.45); + factor2.setDomain(domain2); + factor2.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521064#0.022976136053553198#minLength"); + + designPlan.getFactors().add(factor1); + designPlan.getFactors().add(factor2); + + return designPlan; + } + + /** * Lance une simulation avec des facteurs de sensibilité. */ @Ignore Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityCalculatorRandomMock.java =================================================================== --- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityCalculatorRandomMock.java 2009-03-02 16:58:18 UTC (rev 1902) +++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityCalculatorRandomMock.java 2009-03-02 17:22:39 UTC (rev 1903) @@ -24,6 +24,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.simulator.launcher.SimulationServiceTest; import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator; import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan; @@ -48,6 +49,10 @@ private static final Log log = LogFactory.getLog(SimulationServiceTest.class); + public String getDescription(){ + return "Implementation of random sensibility calculator"; + } + public SensitivityScenarios compute(DesignPlan plan) { if (log.isDebugEnabled()) { @@ -91,12 +96,9 @@ } - public void analyzeResult(SensitivityScenarios sensitivityScenarios) { + public void analyzeResult(SensitivityScenarios sensitivityScenarios, + List<SimulationStorage> simulationStorages) { } - - public String getDescription(){ - return "Implementation of Morris method using R"; - } }
participants (1)
-
chatellier@users.labs.libre-entreprise.org