From ad365ec9f0f0e8d2af5a9fe93719259d46cfa7c7 Mon Sep 17 00:00:00 2001 From: Dumoulin Nicolas <nicolas.dumoulin@irstea.fr> Date: Fri, 19 May 2017 15:43:46 +0200 Subject: [PATCH] cleanup --- .classpath | 20 -- .gitignore | 4 + .project | 23 -- .settings/org.eclipse.core.resources.prefs | 3 - .settings/org.eclipse.jdt.core.prefs | 12 - .settings/org.eclipse.m2e.core.prefs | 4 - .svn/entries | 1 - .svn/format | 1 - ...94c1ec2a3f8e6e40f608f76cc2f526e6d.svn-base | 23 -- ...290f30b92993711930f524170969c88c5.svn-base | 3 - ...73b6dfe70254123aa3ffeca6975f6207e.svn-base | 205 ------------- ...ccd1a8bd8ba27aafa0bc880517de4bdac.svn-base | 140 --------- ...6af4cd4e5d2a986c7688a6eeefa80191b.svn-base | 23 -- ...3bad9b10658390d20fdac65c5e656b1c2.svn-base | 126 -------- ...f6b4154efd48681b889b1f6c996506960.svn-base | 118 -------- ...0b994318fc090429771a6dc7470cba503.svn-base | 87 ------ ...8ef110c51c396b85a6352a4fbcd7fe475.svn-base | 85 ------ ...b69b47a6e335d0724cc20ee1263fb9c07.svn-base | 12 - ...29a2404bf1299b4ffdaaa53bbeaaf1591.svn-base | 29 -- ...ec18773650423aab6f3c0ede28f5c6a02.svn-base | 72 ----- ...19a22963124aef81d1ab465f8512aca66.svn-base | 279 ------------------ ...a45e00f89e1d164f1b101181624fed021.svn-base | 43 --- ...c847f6c3cf61cb64ffad3d915ee1a67e2.svn-base | 22 -- ...76936d0f6f255b7510fbe974add550c00.svn-base | 142 --------- ...199c4d28b30319d02f8fcffbc62beb770.svn-base | 12 - ...05b3ef9fe5bbc8f128e4ce7e50d26e601.svn-base | 66 ----- ...9a82458ac8c31e81ade3dec2acef32c2f.svn-base | 23 -- ...d2816e4a86c9e30d6bae6c34bec25bcaf.svn-base | 118 -------- ...40b92b7ffb0b4e12474e6e08d0a9871a3.svn-base | 80 ----- ...89898442d011ad0dad23fc8a4dec8d7b7.svn-base | 58 ---- ...c20f0afbc186e26cb897f085366a789e9.svn-base | 69 ----- ...1c325d37ebc17baafd40c0386b5d09df1.svn-base | 4 - ...e6c80c4ba1df383b332984d83c507d474.svn-base | 80 ----- ...38346e9008f73c721f76668cee1c0f01e.svn-base | 95 ------ ...70bb5c18ee3c407f189a2451ff6e0e186.svn-base | 3 - ...2023625e3c8ba6ccdbd4a5982933751d8.svn-base | 23 -- ...ebd097b94487ff2b13441cbe94a9509f6.svn-base | 76 ----- ...457800c0961dac1151087ae25753ac0ab.svn-base | 20 -- ...dacf2a350183ab3df355b7f4bb5163568.svn-base | 45 --- ...91319c64e6bb16de9ec68d1f39bd923a3.svn-base | 45 --- ...ac6f2338d6acaf267057c979e724ebe64.svn-base | 138 --------- ...d7e12cadaf53b18520d4255b15150f25e.svn-base | 72 ----- ...96e179b6763c9a7ef5402ccfe04a5f1f0.svn-base | 38 --- ...ff87cde0595b5024f67733ea8122261cc.svn-base | 25 -- ...90ac859b9e02cbe2e020a68f4d40e9a3a.svn-base | 81 ----- ...f18ff816ab9386ae70b586063bbee403f.svn-base | 76 ----- ...a424c79ff067bd6ecf4e09a73442bb497.svn-base | 76 ----- ...16469a5b5605c3038ce6a7f0d1175b55c.svn-base | 54 ---- .svn/wc.db | Bin 66560 -> 0 bytes 49 files changed, 4 insertions(+), 2850 deletions(-) delete mode 100644 .classpath delete mode 100644 .project delete mode 100644 .settings/org.eclipse.core.resources.prefs delete mode 100644 .settings/org.eclipse.jdt.core.prefs delete mode 100644 .settings/org.eclipse.m2e.core.prefs delete mode 100644 .svn/entries delete mode 100644 .svn/format delete mode 100644 .svn/pristine/02/02ba1c394c1ec2a3f8e6e40f608f76cc2f526e6d.svn-base delete mode 100644 .svn/pristine/03/0364424290f30b92993711930f524170969c88c5.svn-base delete mode 100644 .svn/pristine/09/09a593e73b6dfe70254123aa3ffeca6975f6207e.svn-base delete mode 100644 .svn/pristine/0f/0fb6877ccd1a8bd8ba27aafa0bc880517de4bdac.svn-base delete mode 100644 .svn/pristine/16/165a0396af4cd4e5d2a986c7688a6eeefa80191b.svn-base delete mode 100644 .svn/pristine/1b/1b6713d3bad9b10658390d20fdac65c5e656b1c2.svn-base delete mode 100644 .svn/pristine/27/2708e0bf6b4154efd48681b889b1f6c996506960.svn-base delete mode 100644 .svn/pristine/29/29012f70b994318fc090429771a6dc7470cba503.svn-base delete mode 100644 .svn/pristine/2c/2c1d6d58ef110c51c396b85a6352a4fbcd7fe475.svn-base delete mode 100644 .svn/pristine/34/347ffdcb69b47a6e335d0724cc20ee1263fb9c07.svn-base delete mode 100644 .svn/pristine/36/361c5a629a2404bf1299b4ffdaaa53bbeaaf1591.svn-base delete mode 100644 .svn/pristine/43/432db9fec18773650423aab6f3c0ede28f5c6a02.svn-base delete mode 100644 .svn/pristine/46/46e8ddb19a22963124aef81d1ab465f8512aca66.svn-base delete mode 100644 .svn/pristine/5c/5c0fa9fa45e00f89e1d164f1b101181624fed021.svn-base delete mode 100644 .svn/pristine/5d/5d8750dc847f6c3cf61cb64ffad3d915ee1a67e2.svn-base delete mode 100644 .svn/pristine/69/69ae76376936d0f6f255b7510fbe974add550c00.svn-base delete mode 100644 .svn/pristine/6a/6ab0a26199c4d28b30319d02f8fcffbc62beb770.svn-base delete mode 100644 .svn/pristine/83/839d12205b3ef9fe5bbc8f128e4ce7e50d26e601.svn-base delete mode 100644 .svn/pristine/88/88234ca9a82458ac8c31e81ade3dec2acef32c2f.svn-base delete mode 100644 .svn/pristine/89/890cd70d2816e4a86c9e30d6bae6c34bec25bcaf.svn-base delete mode 100644 .svn/pristine/96/960e25840b92b7ffb0b4e12474e6e08d0a9871a3.svn-base delete mode 100644 .svn/pristine/97/9712c4489898442d011ad0dad23fc8a4dec8d7b7.svn-base delete mode 100644 .svn/pristine/9c/9c52379c20f0afbc186e26cb897f085366a789e9.svn-base delete mode 100644 .svn/pristine/a1/a112be21c325d37ebc17baafd40c0386b5d09df1.svn-base delete mode 100644 .svn/pristine/a1/a1445bee6c80c4ba1df383b332984d83c507d474.svn-base delete mode 100644 .svn/pristine/a1/a1c6e6d38346e9008f73c721f76668cee1c0f01e.svn-base delete mode 100644 .svn/pristine/a4/a480ba770bb5c18ee3c407f189a2451ff6e0e186.svn-base delete mode 100644 .svn/pristine/ad/adfb7cb2023625e3c8ba6ccdbd4a5982933751d8.svn-base delete mode 100644 .svn/pristine/c0/c0cd8a1ebd097b94487ff2b13441cbe94a9509f6.svn-base delete mode 100644 .svn/pristine/ce/ce816ea457800c0961dac1151087ae25753ac0ab.svn-base delete mode 100644 .svn/pristine/d1/d10271adacf2a350183ab3df355b7f4bb5163568.svn-base delete mode 100644 .svn/pristine/d4/d4a815491319c64e6bb16de9ec68d1f39bd923a3.svn-base delete mode 100644 .svn/pristine/d6/d6dad07ac6f2338d6acaf267057c979e724ebe64.svn-base delete mode 100644 .svn/pristine/e1/e1d718cd7e12cadaf53b18520d4255b15150f25e.svn-base delete mode 100644 .svn/pristine/e3/e3327ad96e179b6763c9a7ef5402ccfe04a5f1f0.svn-base delete mode 100644 .svn/pristine/e5/e506a5bff87cde0595b5024f67733ea8122261cc.svn-base delete mode 100644 .svn/pristine/ea/eaba64b90ac859b9e02cbe2e020a68f4d40e9a3a.svn-base delete mode 100644 .svn/pristine/f0/f0ab6cdf18ff816ab9386ae70b586063bbee403f.svn-base delete mode 100644 .svn/pristine/f3/f3b8f77a424c79ff067bd6ecf4e09a73442bb497.svn-base delete mode 100644 .svn/pristine/f5/f55c8c416469a5b5605c3038ce6a7f0d1175b55c.svn-base delete mode 100644 .svn/wc.db diff --git a/.classpath b/.classpath deleted file mode 100644 index dbf82ad..0000000 --- a/.classpath +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" output="target/classes" path="src"> - <attributes> - <attribute name="optional" value="true"/> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="output" path="target/classes"/> -</classpath> diff --git a/.gitignore b/.gitignore index e69de29..beef00d 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,4 @@ +.classpath +.project +.settings +target diff --git a/.project b/.project deleted file mode 100644 index a8f3d17..0000000 --- a/.project +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>SturioSaintSeurin</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.m2e.core.maven2Builder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.m2e.core.maven2Nature</nature> - <nature>org.eclipse.jdt.core.javanature</nature> - </natures> -</projectDescription> diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index b083d7b..0000000 --- a/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -encoding/<project>=ISO-8859-15 -encoding/src=ISO-8859-15 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 6428c68..0000000 --- a/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,12 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.6 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs deleted file mode 100644 index 14b697b..0000000 --- a/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/.svn/entries b/.svn/entries deleted file mode 100644 index 48082f7..0000000 --- a/.svn/entries +++ /dev/null @@ -1 +0,0 @@ -12 diff --git a/.svn/format b/.svn/format deleted file mode 100644 index 48082f7..0000000 --- a/.svn/format +++ /dev/null @@ -1 +0,0 @@ -12 diff --git a/.svn/pristine/02/02ba1c394c1ec2a3f8e6e40f608f76cc2f526e6d.svn-base b/.svn/pristine/02/02ba1c394c1ec2a3f8e6e40f608f76cc2f526e6d.svn-base deleted file mode 100644 index a8f3d17..0000000 --- a/.svn/pristine/02/02ba1c394c1ec2a3f8e6e40f608f76cc2f526e6d.svn-base +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>SturioSaintSeurin</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.m2e.core.maven2Builder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.m2e.core.maven2Nature</nature> - <nature>org.eclipse.jdt.core.javanature</nature> - </natures> -</projectDescription> diff --git a/.svn/pristine/03/0364424290f30b92993711930f524170969c88c5.svn-base b/.svn/pristine/03/0364424290f30b92993711930f524170969c88c5.svn-base deleted file mode 100644 index b083d7b..0000000 --- a/.svn/pristine/03/0364424290f30b92993711930f524170969c88c5.svn-base +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -encoding/<project>=ISO-8859-15 -encoding/src=ISO-8859-15 diff --git a/.svn/pristine/09/09a593e73b6dfe70254123aa3ffeca6975f6207e.svn-base b/.svn/pristine/09/09a593e73b6dfe70254123aa3ffeca6975f6207e.svn-base deleted file mode 100644 index 6defe9b..0000000 --- a/.svn/pristine/09/09a593e73b6dfe70254123aa3ffeca6975f6207e.svn-base +++ /dev/null @@ -1,205 +0,0 @@ -/** - * Patrick.Lambert - * @author Patrick Lambert - * @copyright Copyright (c) 2014, Irstea - * - * 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 3 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, see <http://www.gnu.org/licenses/>. - - */ -package species; - -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.TreeMap; - - - -import species.Sturgeon.Gender; -import species.Sturgeon.Status; -import environment.Station; -import fr.cemagref.observation.kernel.Observable; -import fr.cemagref.simaqualife.kernel.AquaNismsGroup; -import fr.cemagref.simaqualife.pilot.Pilot; - -/** - * - */ -public class SturgeonGroup extends AquaNismsGroup<Sturgeon, Station> { - - private transient Map<String, List<Sturgeon>> batches; - private transient List<Integer> femaleSpawnerNbHistory; - private transient List<Double> larvaeProductionHistory; - private transient double annualLarvaeProduction; - - @Override - public void initTransientParameters(Pilot pilot) throws IllegalArgumentException, - IllegalAccessException, InvocationTargetException { - // TODO Auto-generated method stub - super.initTransientParameters(pilot); - batches = new TreeMap<String, List<Sturgeon>>(); - - femaleSpawnerNbHistory = new LinkedList<Integer>(); - larvaeProductionHistory = new LinkedList<Double>(); - - } - - @Override - public void addAquaNism(Sturgeon fish) { - super.addAquaNism(fish); - - if(batches.containsKey(fish.getBatchName())){ - batches.get(fish.getBatchName()).add(fish); - } - else { - List<Sturgeon> batch = new ArrayList<Sturgeon>(); - batch.add(fish); - batches.put(fish.getBatchName(), batch); - } - - } - - @Override - public void removeAquaNism(Sturgeon fish) { - // TODO Auto-generated method stub - super.removeAquaNism(fish); - - batches.get(fish.getBatchName()).remove(fish); - } - - - public void printNumberInBatches(){ - int total=0; - for (Entry<String, List<Sturgeon>> entry : batches.entrySet()){ - System.out.println(" "+ entry.getKey()+ ":\t"+entry.getValue().size()); - total += entry.getValue().size(); - } - System.out.println("-->"+total+"vs"+this.getAquaNismsList().size()); - } - - @Observable(description = "Fish number") - public int getFishNumber() { - if ( this.getAquaNismsList() != null) - return this.getAquaNismsList().size(); - else - return 0; - } - - public Integer[] getFemaleHistory() { - return (Integer[]) femaleSpawnerNbHistory.toArray(); - } - - @Observable(description = "nb of female ready to spawn") - public int getNumberOfFemaleInMaturation() { - int nb=0; - for (Sturgeon fish : this.getAquaNismsList()){ - if (fish.getGender() == Gender.FEMALE & fish.isReadyToSpawn()){ - nb++; - } - } - return nb; - } - - @Observable(description = "nb of male ready to spawn") - public int getNumberOfMaleInMaturation() { - int nb=0; - for (Sturgeon fish : this.getAquaNismsList()){ - if (fish.getGender() == Gender.MALE & fish.isReadyToSpawn()){ - nb++; - } - } - return nb; - } - - @Observable(description = "nb of normal fish") - public int getNormalFishNumber() { - int nb=0; - for (Sturgeon fish : this.getAquaNismsList()){ - if (fish.getStatus() == Status.NORMAL){ - nb++; - } - } - return nb; - } - - @Observable(description = "nb of deformed fish") - public int getDeformedFishNumber() { - int nb=0; - for (Sturgeon fish : this.getAquaNismsList()){ - if (fish.getStatus() == Status.DEFORMED){ - nb++; - } - } - return nb; - } - - @Observable(description = "annual larvae production") - public double getAnnualLarvaeProduction() { - return Math.round(annualLarvaeProduction * 1000.)/1000.; - } - - public void setAnnualLarvaeProduction(double annualLarvaeProduction) { - this.annualLarvaeProduction = annualLarvaeProduction; - } - - public void setLarvaeProductionHistory(List<Double> larvaeProductionHistory) { - this.larvaeProductionHistory = larvaeProductionHistory; - } - - public Map<String, List<Sturgeon>> getBatches() { - return batches; - } - - public List<Integer> getFemaleSpawnerNbHistory() { - return femaleSpawnerNbHistory; - } - - public List<Double> getLarvaeProductionHistory() { - return larvaeProductionHistory; - } - - @Observable(description = "female spawner history") - public Integer[] getFemaleSpawnersArray() { - Integer[] output= new Integer[femaleSpawnerNbHistory.size()]; - for(int i=0; i < femaleSpawnerNbHistory.size(); i++){ - output[i] =femaleSpawnerNbHistory.get(i); - } - return output; - } - - @Observable(description = "female spawner history") - public String getFemaleSpawnersString() { - String output=""; - String sep=""; - for (int i=0; i< femaleSpawnerNbHistory.size(); i++){ - output=output.concat(sep).concat(femaleSpawnerNbHistory.get(i).toString()); - sep=", "; - } - return output; - } - - @Observable(description = "larvae hsitory history") - public String getLarvaeProductionString() { - String output=""; - String sep=""; - for (int i=0; i< larvaeProductionHistory.size(); i++){ - output=output.concat(sep).concat(larvaeProductionHistory.get(i).toString()); - sep=", "; - } - return output; - } -} diff --git a/.svn/pristine/0f/0fb6877ccd1a8bd8ba27aafa0bc880517de4bdac.svn-base b/.svn/pristine/0f/0fb6877ccd1a8bd8ba27aafa0bc880517de4bdac.svn-base deleted file mode 100644 index b8a62ef..0000000 --- a/.svn/pristine/0f/0fb6877ccd1a8bd8ba27aafa0bc880517de4bdac.svn-base +++ /dev/null @@ -1,140 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <!-- ************************************************************* --> - <!-- *** POM Relationships *************************************** --> - <!-- ************************************************************* --> - <groupId>SturioSaintSeurin</groupId> - <artifactId>SturioSaintSeurin</artifactId> - <version>0.0.1-SNAPSHOT</version> - - <dependencies> - <dependency> - <groupId>fr.cemagref</groupId> - <artifactId>simaqualife</artifactId> - <version>2.0</version> - </dependency> - - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - <version>2.6</version> - <type>jar</type> - </dependency> - </dependencies> - - <!-- ************************************************************* --> - <!-- *** Project Information ************************************* --> - <!-- ************************************************************* --> - - <name>${project.artifactId} ${project.version}</name> - <description></description> - <url></url> - - <licenses> - <license> - <name>GPL</name> - <url>http://www.gnu.org/copyleft/gpl.html</url> - <distribution>repo</distribution> - </license> - </licenses> - - <!-- ************************************************************* --> - <!-- *** Build Settings ****************************************** --> - <!-- ************************************************************* --> - <packaging>jar</packaging> - - <build> - <sourceDirectory>src</sourceDirectory> - - <plugins> - - <plugin> - <artifactId>maven-compiler-plugin</artifactId> - <version>2.3.2</version> - <configuration> - <source>1.6</source> - <target>1.6</target> - </configuration> - </plugin> - - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>assembly</goal> - </goals> - <configuration> - <appendAssemblyId>false</appendAssemblyId> - <descriptorRefs> - <descriptorRef>jar-with-dependencies</descriptorRef> - </descriptorRefs> - </configuration> - </execution> - </executions> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-resources-plugin</artifactId> - <configuration> - <encoding>${project.build.sourceEncoding}</encoding> - </configuration> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>resources</goal> - </goals> - </execution> - </executions> - </plugin> - - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - <extensions>true</extensions> - <configuration> - <manifestLocation>target/META-INF</manifestLocation> - <finalName>${symbolic.name}_${project.version}</finalName> - <instructions> - <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name> - <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName> - <Import-Package>*;resolution:=optional</Import-Package> - <Export-Package>fr.cemagref.simaqualife.extensions.pilot.BatchRunner;fr.cemagref.simaqualife.*;miscellaneous.*</Export-Package> - <Embed-Dependency>*;scope=!provided;inline=true</Embed-Dependency> - <Embed-Transitive>true</Embed-Transitive> - <eclipse.buddypolicy>global</eclipse.buddypolicy> - </instructions> - </configuration> - </plugin> - </plugins> - - </build> - - - <repositories> - <repository> - <id>trac.clermont.cemagref.fr.nexus.public</id> - <url>http://trac.clermont.cemagref.fr/nexus/content/groups/public</url> - </repository> - <repository> - <id>trac.clermont.cemagref.fr.nexus.snapshots</id> - <url>http://trac.clermont.cemagref.fr/nexus/content/repositories/snapshots</url> - </repository> - <repository> - <id>maven2-repository.dev.java.net</id> - <name>Java.net repository</name> - <url>http://download.java.net/maven/2</url> - </repository> - </repositories> - - <properties> - <project.build.sourceEncoding>ISO-8859-15</project.build.sourceEncoding> - <build.timestamp>${maven.build.timestamp}</build.timestamp> - <netbeans.hint.license>gpl30</netbeans.hint.license> - </properties> -</project> \ No newline at end of file diff --git a/.svn/pristine/16/165a0396af4cd4e5d2a986c7688a6eeefa80191b.svn-base b/.svn/pristine/16/165a0396af4cd4e5d2a986c7688a6eeefa80191b.svn-base deleted file mode 100644 index 89135df..0000000 --- a/.svn/pristine/16/165a0396af4cd4e5d2a986c7688a6eeefa80191b.svn-base +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Patrick.Lambert - * @author Patrick Lambert - * @copyright Copyright (c) 2014, Irstea - * - * 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 3 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, see <http://www.gnu.org/licenses/>. - - */ -/** - * - */ -package environment; \ No newline at end of file diff --git a/.svn/pristine/1b/1b6713d3bad9b10658390d20fdac65c5e656b1c2.svn-base b/.svn/pristine/1b/1b6713d3bad9b10658390d20fdac65c5e656b1c2.svn-base deleted file mode 100644 index 6e8fab9..0000000 --- a/.svn/pristine/1b/1b6713d3bad9b10658390d20fdac65c5e656b1c2.svn-base +++ /dev/null @@ -1,126 +0,0 @@ -package observer; - -import java.lang.reflect.InvocationTargetException; - -import fr.cemagref.observation.kernel.ObservablesHandler; -import fr.cemagref.observation.observers.ConsoleObserver; -import fr.cemagref.ohoui.annotations.Description; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; - -public class MyCSVObserver extends ConsoleObserver { - - @Description(name = "Field separator", tooltip = "") - protected char separator = ';'; - private List<String> observables; - protected transient List<ObservablesHandler.ObservableFetcher> fetchers; - /** - * <code>classObservable</code> is used to display name of attributes as - * header - */ - private transient ObservablesHandler classObservable; - - public MyCSVObserver() { - } - - public MyCSVObserver(boolean sysout, String outputFile) { - super(sysout, outputFile); - } - - public MyCSVObserver(boolean sysout, String outputFile, String... obsvervables) { - super(sysout, outputFile); - this.observables = Arrays.asList(obsvervables); - } - - public List<String> getObservables() { - return observables; - } - - @Override - public void addObservable(ObservablesHandler classObservable) { - ObservablesHandler bak = this.classObservable; - this.classObservable = classObservable; - if (bak != null) // The observable has been changed - { - this.init(); - } - } - - @Override - public void valueChanged(ObservablesHandler clObservable, Object instance, long t) { - if (isInDates(t)) { - StringBuffer buf = new StringBuffer(); - StringBuffer sbSeparator = new StringBuffer(" " + this.separator + " "); - // print current Time - buf.append(t); - - // print value of each field - for (ObservablesHandler.ObservableFetcher fetcher : fetchers) { - buf.append(sbSeparator); - Object value = getValue(fetcher, instance); - buf.append(value == null ? "N/A" : value); - } - outputStream.println(buf); - } - } - - /** - * - * @param fetcher - * @param instance - * @return the value returned by the fetcher or null if a problem has - * occured due to the introspection. - */ - protected Object getValue(ObservablesHandler.ObservableFetcher fetcher, Object instance) { - try { - return fetcher.fetchValue(instance); - } catch (IllegalArgumentException ex) { - Logger.getLogger(MyCSVObserver.class.getName()).log(Level.SEVERE, null, ex); - return null; - } catch (IllegalAccessException ex) { - Logger.getLogger(MyCSVObserver.class.getName()).log(Level.SEVERE, null, ex); - return null; - } catch (InvocationTargetException ex) { - Logger.getLogger(MyCSVObserver.class.getName()).log(Level.SEVERE, null, ex); - return null; - } - } - - @Override - public void init() { - super.init(); - if (classObservable != null) { - fetchers = new ArrayList<ObservablesHandler.ObservableFetcher>(); - if (observables != null) { - for (String name : observables) { - fetchers.add(classObservable.getObservableFetcherByName(name)); - } - } else { - fetchers.addAll(Arrays.asList(classObservable.getObservableFetchers())); - } - // Headers printing - StringBuffer buf = new StringBuffer(); - StringBuffer sbSeparator = new StringBuffer(" " + this.separator + " "); - buf.append("Year"); - buf.append(sbSeparator); - buf.append("Season"); - for (ObservablesHandler.ObservableFetcher fetcher : fetchers) { - buf.append(sbSeparator); - buf.append(fetcher.getDescription()); - } - outputStream.println(buf); - } - } - - @Override - public String toString() { - if (observables != null) { - return observables.toString() + " " + super.toString(); - } else { - return super.toString(); - } - } -} diff --git a/.svn/pristine/27/2708e0bf6b4154efd48681b889b1f6c996506960.svn-base b/.svn/pristine/27/2708e0bf6b4154efd48681b889b1f6c996506960.svn-base deleted file mode 100644 index 081fc9c..0000000 --- a/.svn/pristine/27/2708e0bf6b4154efd48681b889b1f6c996506960.svn-base +++ /dev/null @@ -1,118 +0,0 @@ -/** - * Patrick.Lambert - * @author Patrick Lambert - * @copyright Copyright (c) 2014, Irstea - * - * 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 3 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, see <http://www.gnu.org/licenses/>. - - */ -package species; - -import java.io.FileReader; -import java.util.Locale; -import java.util.Scanner; -import java.util.regex.Pattern; - -import species.Sturgeon.Diet; -import species.Sturgeon.Gender; -import species.Sturgeon.Stage; -import species.Sturgeon.Status; - -import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; - -import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess; - -/** - * - */ -public class PopulateWithActualCaptiveStock extends AquaNismsGroupProcess<Sturgeon, SturgeonGroup> { - - private String sturgeonStockName ="data/input/maturation geniteurs juin2014.csv"; - private Boolean fishWithPb = true; - private int presentYear = 2014; - - public static void main(String[] args) { System.out.println((new - XStream(new DomDriver())) .toXML(new PopulateWithActualCaptiveStock())); } - - - /* (non-Javadoc) - * @see fr.cemagref.simaqualife.kernel.processes.Process#doProcess(java.lang.Object) - */ - @Override - public void doProcess(SturgeonGroup group) { - - int cohort, birthYear, YearlastMaturation,pb; - String alim, stage, sex, name, status; - - try { - // open the file - FileReader reader = new FileReader(sturgeonStockName); - - // Parsing the file - Scanner scanner = new Scanner(reader); - scanner.useLocale(Locale.ENGLISH); // to have a comma as decimal separator !!! - scanner.useDelimiter(Pattern.compile("(;|\r\n|\n)")); - - // skip the first line - scanner.nextLine(); - //System.out.println(scanner.nextLine()); - while (scanner.hasNext()) { - cohort = scanner.nextInt(); - birthYear = scanner.nextInt(); - name= scanner.next(); - //System.out.print(name+ " "); - scanner.next(); // skip colum - scanner.next(); // skip colum - sex = scanner.next(); - alim= scanner.next(); - status = scanner.next(); - stage = scanner.next(); - YearlastMaturation = scanner.nextInt(); - pb = scanner.nextInt(); - scanner.next(); // skip colum - scanner.next(); // skip colum - scanner.next(); // skip colum - - //public Sturgeon(Tanks position, int cohort, int age, Stage stage, Gender gender, Diet diet, - // Status status, String name, double ageAtLastReproduction); - - if (fishWithPb | (!fishWithPb & pb == 0 )){ - Sturgeon sturgeon = new Sturgeon(group.getPilot(), group.getEnvironment().getTanks(), cohort, (presentYear-birthYear), - (stage.equalsIgnoreCase("mature") ? Stage.MATURE : Stage.IMMATURE), - (sex.equalsIgnoreCase("femelle") ? Gender.FEMALE : Gender.MALE), - (alim.equalsIgnoreCase("alim naturelle") ? Diet.NATURAL : Diet.MIXED), - (status.equalsIgnoreCase("tordu") ? Status.DEFORMED : Status.NORMAL), - name, - (YearlastMaturation==-1 ? Double.NaN :(presentYear-birthYear-YearlastMaturation))); - group.addAquaNism(sturgeon); - } - } - //System.out.println(); - //System.out.println(group.getFishNumber()+" fish in the captive stock"); - scanner.close(); - reader.close(); - } - catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - //System.out.println(group.getFishNumber()); - //group.printNumberInBatches(); - - } - - -} diff --git a/.svn/pristine/29/29012f70b994318fc090429771a6dc7470cba503.svn-base b/.svn/pristine/29/29012f70b994318fc090429771a6dc7470cba503.svn-base deleted file mode 100644 index 7fad85a..0000000 --- a/.svn/pristine/29/29012f70b994318fc090429771a6dc7470cba503.svn-base +++ /dev/null @@ -1,87 +0,0 @@ -/** - * Patrick.Lambert - * @author Patrick Lambert - * @copyright Copyright (c) 2014, Irstea - * - * 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 3 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, see <http://www.gnu.org/licenses/>. - - */ -package species; - -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.util.Locale; -import java.util.Scanner; -import java.util.regex.Pattern; - -import species.Sturgeon.Diet; -import species.Sturgeon.Gender; -import species.Sturgeon.Stage; -import species.Sturgeon.Status; -import umontreal.iro.lecuyer.randvar.UniformGen; - -import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; - -import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess; -import fr.cemagref.simaqualife.kernel.util.TransientParameters.InitTransientParameters; -import fr.cemagref.simaqualife.pilot.Pilot; - -/** - * - */ -public class Enter extends AquaNismsGroupProcess<Sturgeon, SturgeonGroup> { - - private int nbWithNaturalDiet=25; - private int nbWithMixedDiet=25; - - private transient UniformGen genUniform; - - public static void main(String[] args) { System.out.println((new - XStream(new DomDriver())) .toXML(new Enter())); } - - @Override - @InitTransientParameters - public void initTransientParameters(Pilot pilot) { - genUniform = new UniformGen(pilot.getRandomStream(),0.,1.); - } - - /* (non-Javadoc) - * @see fr.cemagref.simaqualife.kernel.processes.Process#doProcess(java.lang.Object) - */ - @Override - public void doProcess(SturgeonGroup group) { - - int cohort = (int) group.getPilot().getCurrentTime(); - int age = 0; - - // fish with natural diet ( not deformed) - for (int i=0; i < nbWithNaturalDiet; i++){ - Sturgeon sturgeon = new Sturgeon(group.getPilot(), group.getEnvironment().getTanks(), cohort, age, Stage.IMMATURE, - (genUniform.nextDouble() <0.5) ? Gender.FEMALE : Gender.MALE, - Diet.NATURAL, Status.NORMAL); - group.addAquaNism(sturgeon); - } - // fish with mixed diet (not Deformed) - for (int i=0; i < nbWithMixedDiet; i++){ - Sturgeon sturgeon = new Sturgeon(group.getPilot(), group.getEnvironment().getTanks(), cohort, age, Stage.IMMATURE, - (genUniform.nextDouble() <0.5) ? Gender.FEMALE : Gender.MALE, - Diet.MIXED, Status.NORMAL); - group.addAquaNism(sturgeon); - } - - //System.out.println(group.getFishNumber()); - //group.printNumberInBatches(); - } -} diff --git a/.svn/pristine/2c/2c1d6d58ef110c51c396b85a6352a4fbcd7fe475.svn-base b/.svn/pristine/2c/2c1d6d58ef110c51c396b85a6352a4fbcd7fe475.svn-base deleted file mode 100644 index 0322ae0..0000000 --- a/.svn/pristine/2c/2c1d6d58ef110c51c396b85a6352a4fbcd7fe475.svn-base +++ /dev/null @@ -1,85 +0,0 @@ -/** - * Patrick.Lambert - * @author Patrick Lambert - * @copyright Copyright (c) 2014, Irstea - * - * 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 3 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, see <http://www.gnu.org/licenses/>. - - */ -package species; - -import java.util.ArrayList; -import java.util.List; - -import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; - -import umontreal.iro.lecuyer.randvar.ExponentialGen; -import umontreal.iro.lecuyer.randvar.UniformGen; -import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess; -import fr.cemagref.simaqualife.kernel.util.TransientParameters.InitTransientParameters; -import fr.cemagref.simaqualife.pilot.Pilot; - -/** - * - */ -public class DieByAccident extends AquaNismsGroupProcess<Sturgeon, SturgeonGroup> { - - private double probaAccident= 0.65; - private double dieScaleAccident = 11.85746 ; - - private transient UniformGen genUniform; - private transient ExponentialGen exponentialGen; - - - public static void main(String[] args) { System.out.println((new - XStream(new DomDriver())) .toXML(new DieByAccident())); } - - @Override - @InitTransientParameters - public void initTransientParameters(Pilot pilot) { - genUniform = new UniformGen( pilot.getRandomStream(),0.,1.); - exponentialGen = new ExponentialGen(pilot.getRandomStream(), dieScaleAccident); - } - - /* (non-Javadoc) - * @see fr.cemagref.simaqualife.kernel.processes.Process#doProcess(java.lang.Object) - */ - @Override - public void doProcess(SturgeonGroup stock) { - List<Sturgeon> deadFish = new ArrayList<Sturgeon>(); - double probaToDie =0; - - for (List<Sturgeon> batch : stock.getBatches().values()){ - if (! batch.isEmpty()){ - if (genUniform.nextDouble() < probaAccident){ - probaToDie =exponentialGen.nextDouble(); - //System.out.println(" proba to die:" + probaToDie ); - for (Sturgeon fish : batch){ - if (genUniform.nextDouble() < probaToDie){ - deadFish.add(fish); - } - } - } - } - } - - // remove fish from the list - for (Sturgeon fish : deadFish){ - stock.removeAquaNism(fish); - } - - //stock.printNumberInBatches(); - } -} diff --git a/.svn/pristine/34/347ffdcb69b47a6e335d0724cc20ee1263fb9c07.svn-base b/.svn/pristine/34/347ffdcb69b47a6e335d0724cc20ee1263fb9c07.svn-base deleted file mode 100644 index 6428c68..0000000 --- a/.svn/pristine/34/347ffdcb69b47a6e335d0724cc20ee1263fb9c07.svn-base +++ /dev/null @@ -1,12 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.6 diff --git a/.svn/pristine/36/361c5a629a2404bf1299b4ffdaaa53bbeaaf1591.svn-base b/.svn/pristine/36/361c5a629a2404bf1299b4ffdaaa53bbeaaf1591.svn-base deleted file mode 100644 index f298254..0000000 --- a/.svn/pristine/36/361c5a629a2404bf1299b4ffdaaa53bbeaaf1591.svn-base +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Patrick.Lambert - * @author Patrick Lambert - * @copyright Copyright (c) 2014, Irstea - * - * 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 3 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, see <http://www.gnu.org/licenses/>. - - */ -package environment; - -import fr.cemagref.simaqualife.kernel.spatial.Position; - -/** - * - */ -public class Tanks implements Position { - -} diff --git a/.svn/pristine/43/432db9fec18773650423aab6f3c0ede28f5c6a02.svn-base b/.svn/pristine/43/432db9fec18773650423aab6f3c0ede28f5c6a02.svn-base deleted file mode 100644 index 3978042..0000000 --- a/.svn/pristine/43/432db9fec18773650423aab6f3c0ede28f5c6a02.svn-base +++ /dev/null @@ -1,72 +0,0 @@ -<list> - <species.SturgeonGroup> - <processes> - <processesAtBegin> - <species.PopulateWithActualCaptiveStock> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <sturgeonStockName>data/input/MaturationGeniteursJuin14.csv</sturgeonStockName> - <fishWithPb>true</fishWithPb> - <presentYear>2014</presentYear> - </species.PopulateWithActualCaptiveStock> - </processesAtBegin> - - <processesEachStep> - - <species.Deform> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <scaleDeform>0.3203588</scaleDeform> - <shapeDeform>6.55763282</shapeDeform> - <piDeformForNaturalDiet>0.05565945</piDeformForNaturalDiet> - <piDeformForMixedDiet>0.5463054</piDeformForMixedDiet> - </species.Deform> - - <species.DieByAccident> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <probaAccident>0.65</probaAccident> - <dieScaleAccident>11.85746</dieScaleAccident> - </species.DieByAccident> - - <species.Die> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <dieScaleForNormal>0.01877447</dieScaleForNormal> - <dieScaleForDeformed>0.40354444</dieScaleForDeformed> - <dieShape>1.0</dieShape> - </species.Die> - - <species.MatureWithTruncatedDistribution> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <probTruncature>0.01</probTruncature> - <femaleMeanAgeAtMaturation>16.4</femaleMeanAgeAtMaturation> - <femaleSdAgeAtMaturation>2.7</femaleSdAgeAtMaturation> - <femaleMeanInterSpawningInterval>4.0 - </femaleMeanInterSpawningInterval> - <maleMeanAgeAtMaturation>8.0</maleMeanAgeAtMaturation> - <maleSdAgeAtMaturation>1.4</maleSdAgeAtMaturation> - <maleMeanInterSpawningInterval>1.5</maleMeanInterSpawningInterval> - </species.MatureWithTruncatedDistribution> - - <species.ProduceLarvae> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <pi>0.75</pi> - <mu>4.347</mu> - <sigma>0.7806</sigma> - <maxProd>250.0</maxProd> - </species.ProduceLarvae> - - - <species.Age> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - </species.Age> - - </processesEachStep> - - <processesAtEnd> - <species.Analyse> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - </species.Analyse> - </processesAtEnd> - </processes> - - <useCemetery>false</useCemetery> - </species.SturgeonGroup> -</list> \ No newline at end of file diff --git a/.svn/pristine/46/46e8ddb19a22963124aef81d1ab465f8512aca66.svn-base b/.svn/pristine/46/46e8ddb19a22963124aef81d1ab465f8512aca66.svn-base deleted file mode 100644 index fd4a4e0..0000000 --- a/.svn/pristine/46/46e8ddb19a22963124aef81d1ab465f8512aca66.svn-base +++ /dev/null @@ -1,279 +0,0 @@ -/* - * Copyright (C) 2012 dumoulin - * - * 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 3 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, see <http://www.gnu.org/licenses/>. - */ -package miscellaneous; - -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; -import org.apache.commons.lang.ArrayUtils; - -/** - * - * @author dumoulin - */ -public class ReflectUtils { - - private static final Logger LOGGER = Logger.getLogger(ReflectUtils.class.getName()); - - /** - * - * @param type - * @param name - * @return null if the field wasn't found - */ - public static Field getField(Class type, String name) throws NoSuchFieldException { - Class current = type; - while (current != null) { - for (Field f : current.getDeclaredFields()) { - if (f.getName().equals(name)) { - return f; - } - } - current = current.getSuperclass(); - } - throw new NoSuchFieldException("The field " + name + " hasn't been found in the class " + type.getName()); - } - - public static Fetcher getFetcher(Class type, String name) throws NoSuchFieldException { - Class current = type; - while (current != null) { - for (Field f : current.getDeclaredFields()) { - if (f.getName().equals(name)) { - return new FieldFetcher(f); - } - } - for (Method m : current.getDeclaredMethods()) { - if (m.getName().equals(name)) { - return new MethodFetcher(m); - } - } - current = current.getSuperclass(); - } - throw new NoSuchFieldException("The field or method " + name + " hasn't been found in the class " + type.getName()); - } - - /** - * - * @param field - * @param instance - * @return null if a problem has occured during the introspection. - */ - public static Object getFieldValue(Field field, Object instance) { - boolean old = field.isAccessible(); - field.setAccessible(true); - Object value = null; - try { - value = field.get(instance); - } catch (Exception ex) { - LOGGER.log(Level.SEVERE, "Error during field value retrieving", ex); - } - field.setAccessible(old); - return value; - } - - /** - * - * @param fieldname - * @param instance - * @return null if a problem has occured during the introspection. - */ - public static Object getFieldValue(String fieldname, Object instance) throws NoSuchFieldException { - Object value = null; - Field field = getField(instance.getClass(), fieldname); - if (field != null) { - value = getFieldValue(field, instance); - } - return value; - } - - /** - * - * @param methodName - * @param instance - * @param parameters - * @return null if a problem has occured during the introspection. - */ - public static Object invokeMethod(String methodName, Object instance, Object... parameters) { - Object result = null; - Class[] parametersType = new Class[parameters.length]; - for (int i = 0; i < parameters.length; i++) { - parametersType[i] = parameters[i].getClass(); - } - try { - Method method = instance.getClass().getDeclaredMethod(methodName, parametersType); - boolean accessible = method.isAccessible(); - method.setAccessible(true); - result = method.invoke(instance, parameters); - method.setAccessible(accessible); - } catch (Exception ex) { - LOGGER.log(Level.SEVERE, "Error during method invocation " + instance.getClass() + "." + methodName + "(" + ArrayUtils.toString(parameters) + ")", ex); - } - return result; - } - - public static void setField(Field field, Object instance, Object value) throws IllegalAccessException, IllegalArgumentException { - boolean old = field.isAccessible(); - field.setAccessible(true); - field.set(instance, value); - field.setAccessible(old); - - } - - public static void setField(String fieldname, Object instance, Object value) throws IllegalAccessException, IllegalArgumentException, NoSuchFieldException { - Field field = getField(instance.getClass(), fieldname); - if (field != null) { - setField(field, instance, value); - } - } - - /** - * - * @param instance - * @param path The path of the field to retrieve from the class of the - * instance given. The path must contain a dot "." for accessing nested - * fields. The element of a list can be accessed by its index. For example : - * <tt>elements.2.aField</tt> - * @return - * @throws NoSuchFieldException - */ - public static FieldOnInstance getFieldOnInstance(Object instance, String path) throws NoSuchFieldException { - if (path.contains(".")) { - String[] nodes = path.split("\\."); - for (int i = 0; i < nodes.length - 1; i++) { - if (nodes[i].matches("[0-9]*")) { - instance = ((List) instance).get(Integer.parseInt(nodes[i])); - } else { - instance = ReflectUtils.getFieldValue(nodes[i], instance); - } - } - path = nodes[nodes.length - 1]; - } - return new FieldOnInstance(instance, getField(instance.getClass(), path)); - } - - public static FetcherOnInstance getFetcherOnInstance(Object instance, String path) throws NoSuchFieldException { - if (path.contains(".")) { - String[] nodes = path.split("\\."); - for (int i = 0; i < nodes.length - 1; i++) { - if (nodes[i].matches("[0-9]*")) { - instance = ((List) instance).get(Integer.parseInt(nodes[i])); - } else { - instance = ReflectUtils.getFieldValue(nodes[i], instance); - } - } - path = nodes[nodes.length - 1]; - } - return new FetcherOnInstance(instance, getFetcher(instance.getClass(), path)); - } - - public static void setFieldValueFromPath(Object instance, String path, Object value) throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException { - getFieldOnInstance(instance, path).setValue(value); - } - - public static Object getValueFromPath(Object instance, String path) throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException, InvocationTargetException { - return getFetcherOnInstance(instance, path).getValue(); - } - - public static abstract class Fetcher { - - public abstract Object getValue(Object instance) throws IllegalArgumentException, IllegalAccessException, - InvocationTargetException; - } - - public static class MethodFetcher extends Fetcher { - - private Method method; - - public MethodFetcher(Method method) { - this.method = method; - } - - @Override - public Object getValue(Object instance) throws IllegalArgumentException, IllegalAccessException, - InvocationTargetException { - return method.invoke(instance, new Object[]{}); - } - } - - public static class FieldFetcher extends Fetcher { - - private Field field; - - public FieldFetcher(Field field) { - this.field = field; - } - - @Override - public Object getValue(Object instance) throws IllegalArgumentException, IllegalAccessException, - InvocationTargetException { - return field.get(instance); - } - } - - public static class FetcherOnInstance { - - private final Object instance; - private final Fetcher fetcher; - - public FetcherOnInstance(Object instance, Fetcher fetcher) { - this.instance = instance; - this.fetcher = fetcher; - } - - public Object getInstance() { - return instance; - } - - public Object getValue() throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { - return fetcher.getValue(instance); - } - } - - /** - * Class that wraps a field with an instance on which will be - * retrieved/update a field. - */ - public static class FieldOnInstance { - - private final Object instance; - private final Field field; - - public FieldOnInstance(Object instance, Field field) { - this.instance = instance; - this.field = field; - } - - public Field getField() { - return field; - } - - public Object getInstance() { - return instance; - } - - public void setValue(Object value) throws IllegalAccessException { - setField(field, instance, value); - } - - public Object getValue() throws IllegalAccessException { - return getFieldValue(field, instance); - } - } -} diff --git a/.svn/pristine/5c/5c0fa9fa45e00f89e1d164f1b101181624fed021.svn-base b/.svn/pristine/5c/5c0fa9fa45e00f89e1d164f1b101181624fed021.svn-base deleted file mode 100644 index 8270ff6..0000000 --- a/.svn/pristine/5c/5c0fa9fa45e00f89e1d164f1b101181624fed021.svn-base +++ /dev/null @@ -1,43 +0,0 @@ -package miscellaneous; - -import fr.cemagref.simaqualife.pilot.Pilot; -import umontreal.iro.lecuyer.randvar.NormalGen; -import umontreal.iro.lecuyer.randvar.UniformGen; - -public class Miscellaneous { - - static public long binomialForSuperIndividual(Pilot pilot, long amount, double succesProba, long threshold) { - long amountWithSuccess; - if (amount > threshold) { // use a normal approximation for huge amount - amountWithSuccess= -1; - while (amountWithSuccess <0 | amountWithSuccess>amount){ - amountWithSuccess = Math.round(NormalGen.nextDouble(pilot.getRandomStream(),0.,1.) * Math.sqrt(succesProba * (1 - succesProba) * amount) - + succesProba * amount); - } - } - else { - amountWithSuccess= 0; - for (long i=0; i < amount; i++){ - if (UniformGen.nextDouble(pilot.getRandomStream(), 0.,1.) < succesProba) - amountWithSuccess++; - } - } - return amountWithSuccess; - } - - static public long binomialForSuperIndividual(Pilot pilot, long amount, double succesProba) { - return binomialForSuperIndividual(pilot, amount, succesProba, 50); - } - - static public double logNormalAlea(Pilot pilot, double mean, double cv){ - if (cv > 0.){ - double mu=Math.log(mean)- (cv *cv)/2.; - double sigma = Math.sqrt(Math.log(cv*cv +1)); - return Math.exp((UniformGen.nextDouble(pilot.getRandomStream(),0.,1. ) * sigma + mu)); - } - else - return mean; - } - - -} diff --git a/.svn/pristine/5d/5d8750dc847f6c3cf61cb64ffad3d915ee1a67e2.svn-base b/.svn/pristine/5d/5d8750dc847f6c3cf61cb64ffad3d915ee1a67e2.svn-base deleted file mode 100644 index 985de6a..0000000 --- a/.svn/pristine/5d/5d8750dc847f6c3cf61cb64ffad3d915ee1a67e2.svn-base +++ /dev/null @@ -1,22 +0,0 @@ - -obsFile = newFile(); -obsFile << "<hashtable></hashtable>"; - -arguments = ['-simDuration','44','-simBegin','2007','-timeStepDuration','1', - '-groups', groupFile.getAbsolutePath(),'-env',envFile.getAbsolutePath(),'-observers',obsFile.getAbsolutePath(), - '-RNGStatusIndex', replicat - ] as String[] - -path = "aquaticWorld.aquaNismsGroupsList.0.processes.processesEachStep." - -Pilot.init() - -BatchRunner.parseArgs(arguments,false,true,false); - -BatchRunner.load(); -ReflectUtils.setFieldValueFromPath(Pilot.getInstance(), path+"0.nbWithNaturalDiet", nbIn); - -Pilot.run() -femaleInLastReproduction = ReflectUtils.getValueFromPath(Pilot.getInstance(),"aquaticWorld.aquaNismsGroupsList.0.getNumberOfFemaleInMaturation"); -femaleInReproductions = ReflectUtils.getValueFromPath(Pilot.getInstance(),"aquaticWorld.aquaNismsGroupsList.0.getFemaleSpawnersString"); -larvaeProductions = ReflectUtils.getValueFromPath(Pilot.getInstance(),"aquaticWorld.aquaNismsGroupsList.0.getLarvaeProductionString"); \ No newline at end of file diff --git a/.svn/pristine/69/69ae76376936d0f6f255b7510fbe974add550c00.svn-base b/.svn/pristine/69/69ae76376936d0f6f255b7510fbe974add550c00.svn-base deleted file mode 100644 index 0762ff0..0000000 --- a/.svn/pristine/69/69ae76376936d0f6f255b7510fbe974add550c00.svn-base +++ /dev/null @@ -1,142 +0,0 @@ -/** - * @author Patrick Lambert - * @copyright Copyright (c) 2014, Irstea - * - * 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 3 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, see <http://www.gnu.org/licenses/>. - - */ -package species; - -import environment.Tanks; -import environment.Station; -import fr.cemagref.simaqualife.kernel.AquaNism; -import fr.cemagref.simaqualife.pilot.Pilot; - -/** - * - */ -public class Sturgeon extends AquaNism<Tanks, Station>{ - - public static enum Stage {IMMATURE, MATURE}; - public static enum Gender {FEMALE, MALE}; - public static enum Diet {NATURAL, MIXED}; - public static enum Status {NORMAL, DEFORMED}; - - private final int cohort; - private final Gender gender; - private final Diet diet; - private Stage stage; - private Status status; - private int age; - private String name; - - private int numberOfReproduction; - private double ageAtLastReproduction; - private boolean readyToSpawn; - - /** - * - * @param position - * @param stage - * @param gender - * @param diet - * @param isDeformed - */ - - public Sturgeon(Pilot pilot, Tanks position, int cohort, int age, Stage stage, Gender gender, Diet diet, - Status status, String name, double ageAtLastReproduction) { - super(pilot, position); - this.cohort = cohort; - this.age = age; - this.stage = stage; - this.gender = gender; - this.diet = diet; - this.status = status; - this.ageAtLastReproduction = ageAtLastReproduction; - this.name = name; - - this.numberOfReproduction = 0; - this.readyToSpawn = false; - } - - public Sturgeon(Pilot pilot, Tanks position, int cohort, int age, Stage stage, Gender gender, Diet diet, - Status status) { - this(pilot, position, cohort, age, stage, gender, diet, status, "", Double.NaN ); - } - - public Status getStatus() { - return status; - } - - public void setStatus(Status status) { - this.status = status; - } - - public Gender getGender() { - return gender; - } - - public Diet getDiet() { - return diet; - } - - public Stage getStage() { - return stage; - } - - public void setStage(Stage stage) { - this.stage = stage; - } - - public int getAge() { - return age; - } - - public void incrementAge(){ - this.age++; - } - - public int getCohort() { - return cohort; - } - - public String getBatchName(){ - return String.valueOf(this.getCohort()).concat("-").concat(this.getDiet().toString()); - } - - public int getNumberOfReproduction() { - return numberOfReproduction; - } - - public void incrementNumberOfReproduction() { - this.numberOfReproduction += 1; - } - - public double getAgeAtLastReproduction() { - return ageAtLastReproduction; - } - - public void setAgeAtLastReproduction() { - this.ageAtLastReproduction = this.age; - } - - public boolean isReadyToSpawn() { - return readyToSpawn; - } - - public void setReadyToSpawn(boolean readyToSpawn) { - this.readyToSpawn = readyToSpawn; - } - -} diff --git a/.svn/pristine/6a/6ab0a26199c4d28b30319d02f8fcffbc62beb770.svn-base b/.svn/pristine/6a/6ab0a26199c4d28b30319d02f8fcffbc62beb770.svn-base deleted file mode 100644 index 044f966..0000000 --- a/.svn/pristine/6a/6ab0a26199c4d28b30319d02f8fcffbc62beb770.svn-base +++ /dev/null @@ -1,12 +0,0 @@ -Cohorte;Aliment Nat Exclusif;Age;survivant;normal;deform -2007;oui;6;73;72;1 -2007;non;6;76;57;19 -2008;oui;5;87;85;2 -2008;non;5;179;127;52 -2009;oui;4;36;35;1 -2009;non;4;88;62;26 -2011;oui;2;50;50;0 -2011;non;2;83;79;4 -2012;oui;1;27;27;0 -2012;non;1;25;25;0 -2013;oui;0;80;80;0 diff --git a/.svn/pristine/83/839d12205b3ef9fe5bbc8f128e4ce7e50d26e601.svn-base b/.svn/pristine/83/839d12205b3ef9fe5bbc8f128e4ce7e50d26e601.svn-base deleted file mode 100644 index 33abdc5..0000000 --- a/.svn/pristine/83/839d12205b3ef9fe5bbc8f128e4ce7e50d26e601.svn-base +++ /dev/null @@ -1,66 +0,0 @@ -<list> - <species.SturgeonGroup> - <processes> - <processesAtBegin> - <species.PopulateWithActualCaptiveStock> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <sturgeonStockName>D:/workspace/SturioSaintSeurin/data/input/MaturationGeniteursJuin14.csv</sturgeonStockName> - <fishWithPb>true</fishWithPb> - <presentYear>2014</presentYear> - </species.PopulateWithActualCaptiveStock> - </processesAtBegin> - - <processesEachStep> - - <species.Deform> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <scaleDeform>0.3203588</scaleDeform> - <shapeDeform>6.55763282</shapeDeform> - <piDeformForNaturalDiet>0.05565945</piDeformForNaturalDiet> - <piDeformForMixedDiet>0.5463054</piDeformForMixedDiet> - </species.Deform> - - <species.Die> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <dieScaleForNormal>0.01877447</dieScaleForNormal> - <dieScaleForDeformed>0.40354444</dieScaleForDeformed> - <dieShape>1.0</dieShape> - </species.Die> - - <species.MatureWithTruncatedDistribution> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <probTruncature>0.01</probTruncature> - <femaleMeanAgeAtMaturation>16.4</femaleMeanAgeAtMaturation> - <femaleSdAgeAtMaturation>2.7</femaleSdAgeAtMaturation> - <femaleMeanInterSpawningInterval>4.0 - </femaleMeanInterSpawningInterval> - <maleMeanAgeAtMaturation>8.0</maleMeanAgeAtMaturation> - <maleSdAgeAtMaturation>1.4</maleSdAgeAtMaturation> - <maleMeanInterSpawningInterval>1.5</maleMeanInterSpawningInterval> - </species.MatureWithTruncatedDistribution> - - <species.ProduceLarvae> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <pi>0.75</pi> - <mu>4.347</mu> - <sigma>0.7806</sigma> - <maxProd>250.0</maxProd> - </species.ProduceLarvae> - - - <species.Age> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - </species.Age> - - </processesEachStep> - - <processesAtEnd> - <species.Analyse> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - </species.Analyse> - </processesAtEnd> - </processes> - - <useCemetery>false</useCemetery> - </species.SturgeonGroup> -</list> \ No newline at end of file diff --git a/.svn/pristine/88/88234ca9a82458ac8c31e81ade3dec2acef32c2f.svn-base b/.svn/pristine/88/88234ca9a82458ac8c31e81ade3dec2acef32c2f.svn-base deleted file mode 100644 index 29ab8ae..0000000 --- a/.svn/pristine/88/88234ca9a82458ac8c31e81ade3dec2acef32c2f.svn-base +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Patrick.Lambert - * @author Patrick Lambert - * @copyright Copyright (c) 2014, Irstea - * - * 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 3 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, see <http://www.gnu.org/licenses/>. - - */ -/** - * - */ -package species; \ No newline at end of file diff --git a/.svn/pristine/89/890cd70d2816e4a86c9e30d6bae6c34bec25bcaf.svn-base b/.svn/pristine/89/890cd70d2816e4a86c9e30d6bae6c34bec25bcaf.svn-base deleted file mode 100644 index 8c2ea43..0000000 --- a/.svn/pristine/89/890cd70d2816e4a86c9e30d6bae6c34bec25bcaf.svn-base +++ /dev/null @@ -1,118 +0,0 @@ -/** - * Patrick.Lambert - * @author Patrick Lambert - * @copyright Copyright (c) 2014, Irstea - * - * 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 3 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, see <http://www.gnu.org/licenses/>. - - */ -package species; - -import java.io.FileReader; -import java.util.Locale; -import java.util.Scanner; -import java.util.regex.Pattern; - -import species.Sturgeon.Diet; -import species.Sturgeon.Gender; -import species.Sturgeon.Stage; -import species.Sturgeon.Status; -import umontreal.iro.lecuyer.randvar.UniformGen; - -import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; - -import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess; -import fr.cemagref.simaqualife.kernel.util.TransientParameters.InitTransientParameters; -import fr.cemagref.simaqualife.pilot.Pilot; - -/** - * - */ -public class Populate extends AquaNismsGroupProcess<Sturgeon, SturgeonGroup> { - - private String sturgeonStockName ="data/input/stockSaintSeurin.csv"; - - private transient UniformGen genUniform; - - public static void main(String[] args) { System.out.println((new - XStream(new DomDriver())) .toXML(new Populate())); } - - @Override - @InitTransientParameters - public void initTransientParameters(Pilot pilot) { - genUniform = new UniformGen(pilot.getRandomStream(),0.,1.); - } - - /* (non-Javadoc) - * @see fr.cemagref.simaqualife.kernel.processes.Process#doProcess(java.lang.Object) - */ - @Override - public void doProcess(SturgeonGroup group) { - - int cohort, age, nbNormal, nbDeformed; - String alim; - - try { - // open the file - FileReader reader = new FileReader(sturgeonStockName); - - // Parsing the file - Scanner scanner = new Scanner(reader); - scanner.useLocale(Locale.ENGLISH); // to have a comma as decimal separator !!! - scanner.useDelimiter(Pattern.compile("(;|\r\n|\n)")); - - // skip the first line - scanner.nextLine(); - //System.out.println(scanner.nextLine()); - while (scanner.hasNext()) { - cohort = scanner.nextInt(); - alim= scanner.next(); - age = scanner.nextInt(); - scanner.next(); // skip nb survival - nbNormal = scanner.nextInt(); - nbDeformed = scanner.nextInt(); - - // normal fish - for (int i=0; i < nbNormal; i++){ - Sturgeon sturgeon = new Sturgeon(group.getPilot(), group.getEnvironment().getTanks(), cohort, age, Stage.IMMATURE, - (genUniform.nextDouble() <0.5) ? Gender.FEMALE : Gender.MALE, - (alim.equalsIgnoreCase("oui")) ? Diet.NATURAL : Diet.MIXED, - Status.NORMAL); - group.addAquaNism(sturgeon); - } - // deformed fish - for (int i=0; i < nbDeformed; i++){ - Sturgeon sturgeon = new Sturgeon(group.getPilot(), group.getEnvironment().getTanks(), cohort, age, Stage.IMMATURE, - (genUniform.nextDouble() <0.5) ? Gender.FEMALE : Gender.MALE, - (alim.equalsIgnoreCase("oui")) ? Diet.NATURAL : Diet.MIXED, - Status.DEFORMED); - group.addAquaNism(sturgeon); - } - } - scanner.close(); - reader.close(); - } - catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - //System.out.println(group.getFishNumber()); - //group.printNumberInBatches(); - - } - - -} diff --git a/.svn/pristine/96/960e25840b92b7ffb0b4e12474e6e08d0a9871a3.svn-base b/.svn/pristine/96/960e25840b92b7ffb0b4e12474e6e08d0a9871a3.svn-base deleted file mode 100644 index 2a990e6..0000000 --- a/.svn/pristine/96/960e25840b92b7ffb0b4e12474e6e08d0a9871a3.svn-base +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Patrick.Lambert - * @author Patrick Lambert - * @copyright Copyright (c) 2014, Irstea - * - * 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 3 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, see <http://www.gnu.org/licenses/>. - - */ -package species; - -import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; - -import species.Sturgeon.Diet; -import species.Sturgeon.Status; -import umontreal.iro.lecuyer.probdist.GammaDist; -import umontreal.iro.lecuyer.randvar.UniformGen; -import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess; -import fr.cemagref.simaqualife.kernel.util.TransientParameters.InitTransientParameters; -import fr.cemagref.simaqualife.pilot.Pilot; - -/** - * - */ -public class Deform extends AquaNismsGroupProcess<Sturgeon, SturgeonGroup> { - - private double scaleDeform = 0.3203588; // as in R: (inverse in in Lecuyer) - private double shapeDeform = 6.55763282; - private double piDeformForNaturalDiet = 0.05565945; - private double piDeformForMixedDiet = 0.5463054; - - private transient UniformGen genUniform; - private transient GammaDist gammaDist; - - public static void main(String[] args) { System.out.println((new - XStream(new DomDriver())) .toXML(new Deform())); } - - @Override - @InitTransientParameters - public void initTransientParameters(Pilot pilot) { - genUniform = new UniformGen( pilot.getRandomStream(),0.,1.); - gammaDist = new GammaDist(shapeDeform, 1/scaleDeform); - } - - /* (non-Javadoc) - * @see fr.cemagref.simaqualife.kernel.processes.Process#doProcess(java.lang.Object) - */ - @Override - public void doProcess(SturgeonGroup stock) { - for (Sturgeon fish : stock.getAquaNismsList()){ - if (fish.getStatus() == Status.NORMAL){ - //System.out.println(" "+fish.getAge()+" : " + getProbaToDeform(fish)); - if (genUniform.nextDouble() < getProbaToDeform(stock.getPilot(), fish)){ - fish.setStatus(Status.DEFORMED); - } - } - } - } - - public double getProbaToDeform(Pilot pilot, Sturgeon fish){ - double proba=0.; - double pi = (fish.getDiet() == Diet.NATURAL) ? piDeformForNaturalDiet : piDeformForMixedDiet; - double probaT = gammaDist.cdf(fish.getAge()); - double probaTplus = gammaDist.cdf(fish.getAge() + pilot.getTimeStepDuration()); - proba = pi * (probaTplus - probaT) / (1 - pi * probaT); - return proba; - } - -} diff --git a/.svn/pristine/97/9712c4489898442d011ad0dad23fc8a4dec8d7b7.svn-base b/.svn/pristine/97/9712c4489898442d011ad0dad23fc8a4dec8d7b7.svn-base deleted file mode 100644 index 6f74d81..0000000 --- a/.svn/pristine/97/9712c4489898442d011ad0dad23fc8a4dec8d7b7.svn-base +++ /dev/null @@ -1,58 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>SturioSaintSeurin</groupId> - <artifactId>SturioSaintSeurin</artifactId> - <version>0.0.1-SNAPSHOT</version> - <build> - <sourceDirectory>src</sourceDirectory> - <plugins> - <plugin> - <artifactId>maven-compiler-plugin</artifactId> - <version>3.1</version> - <configuration> - <source>1.7</source> - <target>1.7</target> - </configuration> - </plugin> - - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - <extensions>true</extensions> - <configuration> - <manifestLocation>target/META-INF</manifestLocation> - <finalName>${symbolic.name}_${project.version}</finalName> - <instructions> - <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name> - <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName> - <Import-Package>*;resolution:=optional</Import-Package> - <Export-Package>fr.cemagref.simaqualife.extensions.pilot.BatchRunner;fr.cemagref.simaqualife.*;miscellaneous.*</Export-Package> - <Embed-Dependency>*;scope=!provided;inline=true</Embed-Dependency> - <Embed-Transitive>true</Embed-Transitive> - <eclipse.buddypolicy>global</eclipse.buddypolicy> - </instructions> - </configuration> - </plugin> - </plugins> - </build> - <dependencies> - <dependency> - <groupId>fr.cemagref</groupId> - <artifactId>simaqualife</artifactId> - <version>1.4</version> - </dependency> - </dependencies> - - <repositories> - <repository> - <id>trac.clermont.cemagref.fr.nexus.public</id> - <url>http://trac.clermont.cemagref.fr/nexus/content/groups/public</url> - </repository> - <repository> - <id>trac.clermont.cemagref.fr.nexus.snapshots</id> - <url>http://trac.clermont.cemagref.fr/nexus/content/repositories/snapshots</url> - </repository> - </repositories> - -</project> \ No newline at end of file diff --git a/.svn/pristine/9c/9c52379c20f0afbc186e26cb897f085366a789e9.svn-base b/.svn/pristine/9c/9c52379c20f0afbc186e26cb897f085366a789e9.svn-base deleted file mode 100644 index 0f0d0c5..0000000 --- a/.svn/pristine/9c/9c52379c20f0afbc186e26cb897f085366a789e9.svn-base +++ /dev/null @@ -1,69 +0,0 @@ -<list> - <species.SturgeonGroup> - <processes> - <processesAtBegin> - - </processesAtBegin> - - <processesEachStep> - <species.Enter> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <nbWithNaturalDiet>40</nbWithNaturalDiet> - <nbWithMixedDiet>0</nbWithMixedDiet> - </species.Enter> - - <species.Deform> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <scaleDeform>0.3203588</scaleDeform> - <shapeDeform>6.55763282</shapeDeform> - <piDeformForNaturalDiet>0.05565945</piDeformForNaturalDiet> - <piDeformForMixedDiet>0.5463054</piDeformForMixedDiet> - </species.Deform> - - <species.DieByAccident> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <probaAccident>0.65</probaAccident> - <dieScaleAccident>11.85746</dieScaleAccident> - </species.DieByAccident> - - <species.Die> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <dieScaleForNormal>0.01877447</dieScaleForNormal> - <dieScaleForDeformed>0.40354444</dieScaleForDeformed> - <dieShape>1.0</dieShape> - </species.Die> - - <species.MatureWithTruncatedDistribution> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <probTruncature>0.01</probTruncature> - <femaleMeanAgeAtMaturation>16.4</femaleMeanAgeAtMaturation> - <femaleSdAgeAtMaturation>2.7</femaleSdAgeAtMaturation> - <femaleMeanInterSpawningInterval>4.0 - </femaleMeanInterSpawningInterval> - <maleMeanAgeAtMaturation>8.0</maleMeanAgeAtMaturation> - <maleSdAgeAtMaturation>1.4</maleSdAgeAtMaturation> - <maleMeanInterSpawningInterval>1.5</maleMeanInterSpawningInterval> - </species.MatureWithTruncatedDistribution> - - <species.ProduceLarvae> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <pi>0.75</pi> - <mu>4.347</mu> - <sigma>0.7806</sigma> - <maxProd>250.0</maxProd> - </species.ProduceLarvae> - - - <species.Age> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - </species.Age> - - </processesEachStep> - - <processesAtEnd> - </processesAtEnd> - </processes> - - <useCemetery>false</useCemetery> - </species.SturgeonGroup> -</list> \ No newline at end of file diff --git a/.svn/pristine/a1/a112be21c325d37ebc17baafd40c0386b5d09df1.svn-base b/.svn/pristine/a1/a112be21c325d37ebc17baafd40c0386b5d09df1.svn-base deleted file mode 100644 index 14b697b..0000000 --- a/.svn/pristine/a1/a112be21c325d37ebc17baafd40c0386b5d09df1.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/.svn/pristine/a1/a1445bee6c80c4ba1df383b332984d83c507d474.svn-base b/.svn/pristine/a1/a1445bee6c80c4ba1df383b332984d83c507d474.svn-base deleted file mode 100644 index 171c83a..0000000 --- a/.svn/pristine/a1/a1445bee6c80c4ba1df383b332984d83c507d474.svn-base +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Patrick.Lambert - * @author Patrick Lambert - * @copyright Copyright (c) 2014, Irstea - * - * 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 3 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, see <http://www.gnu.org/licenses/>. - - */ -package species; - -import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; - -import species.Sturgeon.Gender; -import umontreal.iro.lecuyer.probdist.LognormalDist; -import umontreal.iro.lecuyer.probdist.NormalDist; -import umontreal.iro.lecuyer.randvar.LognormalGen; -import umontreal.iro.lecuyer.randvar.NormalGen; -import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess; -import fr.cemagref.simaqualife.pilot.Pilot; - -/** - * - */ -public class ProduceLarvae extends AquaNismsGroupProcess<Sturgeon, SturgeonGroup> { - - private double pi=.75; - private double mu=4.3470; - private double sigma=0.7806; - private double maxProd=250.; - transient NormalGen genAleaNormal; - transient LognormalGen genAleaLognormal; - - @Override - public void initTransientParameters(Pilot pilot) { - super.initTransientParameters(pilot); - - genAleaNormal = new NormalGen(pilot.getRandomStream(), new NormalDist(0.,1.)); - genAleaLognormal = new LognormalGen(pilot.getRandomStream(), new LognormalDist(mu, sigma)); - } - - public static void main(String[] args) { System.out.println((new - XStream(new DomDriver())) .toXML(new ProduceLarvae())); } - - - /* (non-Javadoc) - * @see fr.cemagref.simaqualife.kernel.processes.Process#doProcess(java.lang.Object) - */ - @Override - public void doProcess(SturgeonGroup group) { - int nbFemale=0; - double nbLarvae=0.; // in thousound of fish - for (Sturgeon fish : group.getAquaNismsList()){ - if (fish.getGender() == Gender.FEMALE & fish.isReadyToSpawn()){ - nbFemale++; - - if (genAleaNormal.nextDouble()<pi){ - double nlarvae=Math.min(maxProd,genAleaLognormal.nextDouble()); - nbLarvae +=nlarvae; - //System.out.println(nlarvae); - } - } - } - group.getFemaleSpawnerNbHistory().add(nbFemale); - group.getLarvaeProductionHistory().add(nbLarvae); - group.setAnnualLarvaeProduction(nbLarvae); - } - -} diff --git a/.svn/pristine/a1/a1c6e6d38346e9008f73c721f76668cee1c0f01e.svn-base b/.svn/pristine/a1/a1c6e6d38346e9008f73c721f76668cee1c0f01e.svn-base deleted file mode 100644 index d99be84..0000000 --- a/.svn/pristine/a1/a1c6e6d38346e9008f73c721f76668cee1c0f01e.svn-base +++ /dev/null @@ -1,95 +0,0 @@ -/** - * Patrick.Lambert - * @author Patrick Lambert - * @copyright Copyright (c) 2014, Irstea - * - * 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 3 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, see <http://www.gnu.org/licenses/>. - - */ -package species; - -import java.util.ArrayList; -import java.util.List; - -import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; - - -import species.Sturgeon.Status; -import umontreal.iro.lecuyer.probdist.WeibullDist; -import umontreal.iro.lecuyer.randvar.UniformGen; -import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess; -import fr.cemagref.simaqualife.kernel.util.TransientParameters.InitTransientParameters; -import fr.cemagref.simaqualife.pilot.Pilot; - -/** - * - */ -public class Die extends AquaNismsGroupProcess<Sturgeon, SturgeonGroup> { - - private double dieScaleForNormal = 0.01877447; - private double dieScaleForDeformed = 0.40354444; - private double dieShape = 1.; - - private transient UniformGen genUniform; - private transient WeibullDist weibullDistForNormal; - private transient WeibullDist weibullDistForDeformed; - - public static void main(String[] args) { System.out.println((new - XStream(new DomDriver())) .toXML(new Die())); } - - @Override - @InitTransientParameters - public void initTransientParameters(Pilot pilot) { - genUniform = new UniformGen( pilot.getRandomStream(),0.,1.); - weibullDistForNormal = new WeibullDist(dieShape, dieScaleForNormal, 0.); - weibullDistForDeformed = new WeibullDist(dieShape, dieScaleForDeformed, 0.); - } - - /* (non-Javadoc) - * @see fr.cemagref.simaqualife.kernel.processes.Process#doProcess(java.lang.Object) - */ - @Override - public void doProcess(SturgeonGroup stock) { - List<Sturgeon> deadFish = new ArrayList<Sturgeon>(); - for (Sturgeon fish : stock.getAquaNismsList()){ - //System.out.println(fish.getAge()+":"+getProbaToDie(fish)); - if (genUniform.nextDouble() < getProbaToDie(stock.getPilot(), fish)){ - deadFish.add(fish); - } - } - // remove fish from the list - for (Sturgeon fish : deadFish){ - stock.removeAquaNism(fish); - } - - //stock.printNumberInBatches(); - } - - public double getProbaToDie(Pilot pilot, Sturgeon fish){ - double probaT, probaTplus; - if (fish.getStatus() == Status.DEFORMED){ - probaT = weibullDistForDeformed.cdf(fish.getAge()); - probaTplus = weibullDistForDeformed.cdf(fish.getAge() + pilot.getTimeStepDuration()); - } - else { - probaT = weibullDistForNormal.cdf(fish.getAge()); - probaTplus = weibullDistForNormal.cdf(fish.getAge() + pilot.getTimeStepDuration()); - } - - return ((probaTplus - probaT) / (1 - probaT)); - - } - -} diff --git a/.svn/pristine/a4/a480ba770bb5c18ee3c407f189a2451ff6e0e186.svn-base b/.svn/pristine/a4/a480ba770bb5c18ee3c407f189a2451ff6e0e186.svn-base deleted file mode 100644 index 99465e1..0000000 --- a/.svn/pristine/a4/a480ba770bb5c18ee3c407f189a2451ff6e0e186.svn-base +++ /dev/null @@ -1,3 +0,0 @@ -<environment.Station> - -</environment.Station> \ No newline at end of file diff --git a/.svn/pristine/ad/adfb7cb2023625e3c8ba6ccdbd4a5982933751d8.svn-base b/.svn/pristine/ad/adfb7cb2023625e3c8ba6ccdbd4a5982933751d8.svn-base deleted file mode 100644 index 4014af0..0000000 --- a/.svn/pristine/ad/adfb7cb2023625e3c8ba6ccdbd4a5982933751d8.svn-base +++ /dev/null @@ -1,23 +0,0 @@ -package miscellaneous; - -import umontreal.iro.lecuyer.probdist.GammaDist; - -public class TruncatedGammaDist { - - private final double probTroncature; - private GammaDist gammaDist; - - public TruncatedGammaDist(double alpha, double lambda, double probTroncature) { - gammaDist = new GammaDist(alpha, lambda); - this.probTroncature = probTroncature; - } - - public double cdf(double x) { - return Math.max(0, (gammaDist.cdf(x)- probTroncature) / (1-probTroncature)); - } - - public double getXTrucature(){ - return gammaDist.inverseF(probTroncature); - } - -} diff --git a/.svn/pristine/c0/c0cd8a1ebd097b94487ff2b13441cbe94a9509f6.svn-base b/.svn/pristine/c0/c0cd8a1ebd097b94487ff2b13441cbe94a9509f6.svn-base deleted file mode 100644 index d5a8271..0000000 --- a/.svn/pristine/c0/c0cd8a1ebd097b94487ff2b13441cbe94a9509f6.svn-base +++ /dev/null @@ -1,76 +0,0 @@ -package miscellaneous; - -import java.util.concurrent.ArrayBlockingQueue; - -public class QueueMemory<E> extends ArrayBlockingQueue<E> { - - private int memorySize; - - public QueueMemory(int memorySize) { - super(memorySize); - this.memorySize = memorySize; - } - - public void push(E item){ - try { - if (this.size() == this.memorySize){ - this.poll(); - } - this.put(item); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - public E getLastItem(){ - E[] items= (E[]) this.toArray(); - if (items.length > 0) - return items[items.length-1]; - else - return null; - } - - public double getMean(){ - double sum= 0; - for (E item : this){ - sum += this.doubleValue(item); - } - sum = sum / memorySize ; - return (sum); - } - - public double getGeometricMean(){ - double sum= 0; - for (E item : this){ - sum += Math.log(this.doubleValue(item)); - } - return (Math.exp(sum / memorySize)); - } - - public double getStandartDeviation(){ - double mean= this.getMean(); - double sse= 0; - for (E item : this){ - sse += Math.pow(this.doubleValue(item) - mean, 2.); - } - return (Math.sqrt(sse /(memorySize -1.))); - } - - public double getCoefficientVariation(){ - return (this.getStandartDeviation() / this.getMean()); - } - - private double doubleValue(E item){ - if (item instanceof Double) - return ((Double) item); - else if (item instanceof Float) - return ((Float) item).doubleValue(); - else if (item instanceof Long) - return ((Long) item).doubleValue(); - else if (item instanceof Integer) - return ((Integer) item).doubleValue(); - else - return Double.NaN; - } -} diff --git a/.svn/pristine/ce/ce816ea457800c0961dac1151087ae25753ac0ab.svn-base b/.svn/pristine/ce/ce816ea457800c0961dac1151087ae25753ac0ab.svn-base deleted file mode 100644 index dbf82ad..0000000 --- a/.svn/pristine/ce/ce816ea457800c0961dac1151087ae25753ac0ab.svn-base +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" output="target/classes" path="src"> - <attributes> - <attribute name="optional" value="true"/> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="output" path="target/classes"/> -</classpath> diff --git a/.svn/pristine/d1/d10271adacf2a350183ab3df355b7f4bb5163568.svn-base b/.svn/pristine/d1/d10271adacf2a350183ab3df355b7f4bb5163568.svn-base deleted file mode 100644 index 0242966..0000000 --- a/.svn/pristine/d1/d10271adacf2a350183ab3df355b7f4bb5163568.svn-base +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Patrick.Lambert - * @author Patrick Lambert - * @copyright Copyright (c) 2014, Irstea - * - * 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 3 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, see <http://www.gnu.org/licenses/>. - - */ -package species; - -import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; - -import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess; - -/** - * - */ -public class Age extends AquaNismsGroupProcess<Sturgeon, SturgeonGroup> { - - public static void main(String[] args) { System.out.println((new - XStream(new DomDriver())) .toXML(new Age())); } - - /* (non-Javadoc) - * @see fr.cemagref.simaqualife.kernel.processes.Process#doProcess(java.lang.Object) - */ - @Override - public void doProcess(SturgeonGroup stock) { - for (Sturgeon fish : stock.getAquaNismsList()){ - fish.incrementAge(); - } - } - -} diff --git a/.svn/pristine/d4/d4a815491319c64e6bb16de9ec68d1f39bd923a3.svn-base b/.svn/pristine/d4/d4a815491319c64e6bb16de9ec68d1f39bd923a3.svn-base deleted file mode 100644 index 06afb52..0000000 --- a/.svn/pristine/d4/d4a815491319c64e6bb16de9ec68d1f39bd923a3.svn-base +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Patrick.Lambert - * @author Patrick Lambert - * @copyright Copyright (c) 2014, Irstea - * - * 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 3 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, see <http://www.gnu.org/licenses/>. - - */ -package species; - -import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; - -import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess; - -/** - * - */ -public class Analyse extends AquaNismsGroupProcess<Sturgeon, SturgeonGroup> { - - /* (non-Javadoc) - * @see fr.cemagref.simaqualife.kernel.processes.Process#doProcess(java.lang.Object) - */ - @Override - public void doProcess(SturgeonGroup group) { - // TODO Auto-generated method stub - System.out.println(group.getLarvaeProductionString()); - System.out.println(group.getFemaleSpawnersString()); - } - - public static void main(String[] args) { System.out.println((new - XStream(new DomDriver())) .toXML(new Analyse())); } - -} diff --git a/.svn/pristine/d6/d6dad07ac6f2338d6acaf267057c979e724ebe64.svn-base b/.svn/pristine/d6/d6dad07ac6f2338d6acaf267057c979e724ebe64.svn-base deleted file mode 100644 index 96dfd26..0000000 --- a/.svn/pristine/d6/d6dad07ac6f2338d6acaf267057c979e724ebe64.svn-base +++ /dev/null @@ -1,138 +0,0 @@ -/** - * - */ -package species; - -import miscellaneous.TruncatedGammaDist; - -import org.openide.util.lookup.ServiceProvider; - -import species.Sturgeon.Gender; -import species.Sturgeon.Stage; -import umontreal.iro.lecuyer.probdist.PoissonDist; -import umontreal.iro.lecuyer.randvar.UniformGen; - -import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; - -import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess; -import fr.cemagref.simaqualife.kernel.util.TransientParameters.InitTransientParameters; -import fr.cemagref.simaqualife.pilot.Pilot; - -/** - * @author Patrick.Lambert - * - */ - -@ServiceProvider(service = AquaNismsGroupProcess.class) -public class MatureWithTruncatedDistribution extends -AquaNismsGroupProcess<Sturgeon, SturgeonGroup> { - - - private double probTruncature = 0.01; - - private double femaleMeanAgeAtMaturation = 16.4; // in year - private double femaleSdAgeAtMaturation = 2.7; - private double femaleMeanInterSpawningInterval = 4.; - - private double maleMeanAgeAtMaturation = 8; // in year - private double maleSdAgeAtMaturation = 1.4; - private double maleMeanInterSpawningInterval = 1.5; - - private transient double lag; - private transient TruncatedGammaDist femaleMaturationDist; - private transient TruncatedGammaDist maleMaturationDist; - private transient PoissonDist femaleInterSpawningIntervalDist; - private transient PoissonDist maleInterSpawningIntervalDist; - private transient UniformGen genUniform; - - public static void main(String[] args) { System.out.println((new - XStream(new DomDriver())) .toXML(new MatureWithTruncatedDistribution())); } - - @Override - @InitTransientParameters - public void initTransientParameters(Pilot pilot) { - genUniform = new UniformGen(pilot.getRandomStream(),0.,1.); - - // for female first maturation - double alpha, lambda; - alpha = Math.pow( femaleMeanAgeAtMaturation / femaleSdAgeAtMaturation, 2); - lambda = femaleMeanAgeAtMaturation /Math.pow(femaleSdAgeAtMaturation, 2); - femaleMaturationDist = new TruncatedGammaDist(alpha, lambda, probTruncature); - - // for male first maturation - alpha = Math.pow(maleMeanAgeAtMaturation / maleSdAgeAtMaturation, 2); - lambda = maleMeanAgeAtMaturation / Math.pow(maleSdAgeAtMaturation, 2); - maleMaturationDist = new TruncatedGammaDist(alpha, lambda, probTruncature); - - // interval between maturation - lag =1.; // to avoid forgetting the proba for interval =0 - femaleInterSpawningIntervalDist = new PoissonDist(femaleMeanInterSpawningInterval-lag); - maleInterSpawningIntervalDist = new PoissonDist(maleMeanInterSpawningInterval-lag); - - } - - @Override - public void doProcess(SturgeonGroup group) { - - double age, laggedTimeFromLastReproduction, probaToMature; - - for (Sturgeon fish : group.getAquaNismsList()) { - age = fish.getAge(); - - // new maturation - if (fish.getStage() == Stage.MATURE){ - laggedTimeFromLastReproduction = age - fish.getAgeAtLastReproduction() - lag; - if (fish.getGender() == Gender.FEMALE){ - probaToMature = (femaleInterSpawningIntervalDist.cdf(laggedTimeFromLastReproduction) - - femaleInterSpawningIntervalDist.cdf(laggedTimeFromLastReproduction -1.)) - / (1 - femaleInterSpawningIntervalDist.cdf(laggedTimeFromLastReproduction - 1.)); - } - else { - probaToMature = (maleInterSpawningIntervalDist.cdf(laggedTimeFromLastReproduction) - - maleInterSpawningIntervalDist.cdf(laggedTimeFromLastReproduction -1.)) - / (1 - maleInterSpawningIntervalDist.cdf(laggedTimeFromLastReproduction - 1.)); - } - - // - if (genUniform.nextDouble() < probaToMature){ - fish.setReadyToSpawn(true); - fish.setAgeAtLastReproduction(); - } - else { - fish.setReadyToSpawn(false); - } - } - // first maturation - else { - if (fish.getGender() == Gender.FEMALE){ - // compute the prob to mature between age and age-1 - // knowing that it was not mature before - probaToMature = (femaleMaturationDist.cdf(age) - femaleMaturationDist.cdf(age -1.)) - / (1 - femaleMaturationDist.cdf(age - 1.)); - } - else { - probaToMature = (maleMaturationDist.cdf(age) - maleMaturationDist.cdf(age -1.)) - / (1 - maleMaturationDist.cdf(age - 1.)); - } - //System.out.println(fish.getGender() +": "+fish.getAge() + "-->"+ probaToMature); - - if (genUniform.nextDouble() < probaToMature){ - fish.setStage(Stage.MATURE); - fish.setReadyToSpawn(true); - fish.setAgeAtLastReproduction(); - } - } - } - -/* int nb=0; - for (Sturgeon fish : group.getAquaNismsList()){ - if (fish.getGender() == Gender.FEMALE & fish.isReadyToSpawn()){ - nb++; - } - } - group.getFemaleSpawnerNbHistory().add(nb);*/ - } - //System.out.println(this.getClass()+ " is finished"); -} - diff --git a/.svn/pristine/e1/e1d718cd7e12cadaf53b18520d4255b15150f25e.svn-base b/.svn/pristine/e1/e1d718cd7e12cadaf53b18520d4255b15150f25e.svn-base deleted file mode 100644 index ebc65b1..0000000 --- a/.svn/pristine/e1/e1d718cd7e12cadaf53b18520d4255b15150f25e.svn-base +++ /dev/null @@ -1,72 +0,0 @@ -<list> - <species.SturgeonGroup> - <processes> - <processesAtBegin> - <species.PopulateWithActualCaptiveStock> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <sturgeonStockName>D:/workspace/SturioSaintSeurin/data/input/MaturationGeniteursJuin14.csv</sturgeonStockName> - <fishWithPb>true</fishWithPb> - <presentYear>2014</presentYear> - </species.PopulateWithActualCaptiveStock> - </processesAtBegin> - - <processesEachStep> - - <species.Deform> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <scaleDeform>0.3203588</scaleDeform> - <shapeDeform>6.55763282</shapeDeform> - <piDeformForNaturalDiet>0.05565945</piDeformForNaturalDiet> - <piDeformForMixedDiet>0.5463054</piDeformForMixedDiet> - </species.Deform> - - <species.DieByAccident> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <probaAccident>0.65</probaAccident> - <dieScaleAccident>11.85746</dieScaleAccident> - </species.DieByAccident> - - <species.Die> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <dieScaleForNormal>0.01877447</dieScaleForNormal> - <dieScaleForDeformed>0.40354444</dieScaleForDeformed> - <dieShape>1.0</dieShape> - </species.Die> - - <species.MatureWithTruncatedDistribution> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <probTruncature>0.01</probTruncature> - <femaleMeanAgeAtMaturation>16.4</femaleMeanAgeAtMaturation> - <femaleSdAgeAtMaturation>2.7</femaleSdAgeAtMaturation> - <femaleMeanInterSpawningInterval>4.0 - </femaleMeanInterSpawningInterval> - <maleMeanAgeAtMaturation>8.0</maleMeanAgeAtMaturation> - <maleSdAgeAtMaturation>1.4</maleSdAgeAtMaturation> - <maleMeanInterSpawningInterval>1.5</maleMeanInterSpawningInterval> - </species.MatureWithTruncatedDistribution> - - <species.ProduceLarvae> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - <pi>0.75</pi> - <mu>4.347</mu> - <sigma>0.7806</sigma> - <maxProd>250.0</maxProd> - </species.ProduceLarvae> - - - <species.Age> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - </species.Age> - - </processesEachStep> - - <processesAtEnd> - <species.Analyse> - <synchronisationMode>ASYNCHRONOUS</synchronisationMode> - </species.Analyse> - </processesAtEnd> - </processes> - - <useCemetery>false</useCemetery> - </species.SturgeonGroup> -</list> \ No newline at end of file diff --git a/.svn/pristine/e3/e3327ad96e179b6763c9a7ef5402ccfe04a5f1f0.svn-base b/.svn/pristine/e3/e3327ad96e179b6763c9a7ef5402ccfe04a5f1f0.svn-base deleted file mode 100644 index 8a3975a..0000000 --- a/.svn/pristine/e3/e3327ad96e179b6763c9a7ef5402ccfe04a5f1f0.svn-base +++ /dev/null @@ -1,38 +0,0 @@ -<hashtable> - <entry> - <java-class>species.SturgeonGroup</java-class> - <fr.cemagref.observation.kernel.ObservablesHandler> - <observers> - <fr.cemagref.observation.observers.jfreechart.TemporalSerieChart> - <graphType>LINE</graphType> - <title>Total Abundance</title> - <xAxisLabel>Time (year)</xAxisLabel> - <yAxisLabel>number of fish</yAxisLabel> - <variableName>getFishNumber</variableName> - </fr.cemagref.observation.observers.jfreechart.TemporalSerieChart> - - <fr.cemagref.observation.observers.jfreechart.TemporalSerieChart> - <graphType>LINE</graphType> - <title>Total Larvae production</title> - <xAxisLabel>Time (year)</xAxisLabel> - <yAxisLabel>annual number of larvae</yAxisLabel> - <variableName>getAnnualLarvaeProduction</variableName> - </fr.cemagref.observation.observers.jfreechart.TemporalSerieChart> - - <observer.MyCSVObserver> - <separator>;</separator> - <sysout>true</sysout> - <outputFile>data/output/totalAbundance.csv</outputFile> - <observables> - <string>getNormalFishNumber</string> - <string>getDeformedFishNumber</string> - <string>getNumberOfMaleInMaturation</string> - <string>getNumberOfFemaleInMaturation</string> - <string>getAnnualLarvaeProduction</string> - </observables> - </observer.MyCSVObserver> - - </observers> - </fr.cemagref.observation.kernel.ObservablesHandler> - </entry> -</hashtable> \ No newline at end of file diff --git a/.svn/pristine/e5/e506a5bff87cde0595b5024f67733ea8122261cc.svn-base b/.svn/pristine/e5/e506a5bff87cde0595b5024f67733ea8122261cc.svn-base deleted file mode 100644 index 323365d..0000000 --- a/.svn/pristine/e5/e506a5bff87cde0595b5024f67733ea8122261cc.svn-base +++ /dev/null @@ -1,25 +0,0 @@ - -obsFile = newFile(); -obsFile << "<hashtable></hashtable>"; - -arguments = ['-simDuration','36','-simBegin','2015','-timeStepDuration','1', - '-groups', groupFile.getAbsolutePath(),'-env',envFile.getAbsolutePath(),'-observers',obsFile.getAbsolutePath(), - '-RNGStatusIndex', replicat - ] as String[] - -path = "aquaticWorld.aquaNismsGroupsList.0.processes.processesEachStep." - -Pilot.init() - -BatchRunner.parseArgs(arguments,false,true,false); - -BatchRunner.load(); -//ReflectUtils.setFieldValueFromPath(Pilot.getInstance(), path+"0.nbWithNaturalDiet", nbIn); - -Pilot.run() -femaleInLastReproduction = -ReflectUtils.getValueFromPath(Pilot.getInstance(),"aquaticWorld.aquaNismsGroupsList.0.getNumberOfFemaleInMaturation"); -femaleInReproductions = -ReflectUtils.getValueFromPath(Pilot.getInstance(),"aquaticWorld.aquaNismsGroupsList.0.getFemaleSpawnersString"); -larvaeProductions = -ReflectUtils.getValueFromPath(Pilot.getInstance(),"aquaticWorld.aquaNismsGroupsList.0.getLarvaeProductionString"); \ No newline at end of file diff --git a/.svn/pristine/ea/eaba64b90ac859b9e02cbe2e020a68f4d40e9a3a.svn-base b/.svn/pristine/ea/eaba64b90ac859b9e02cbe2e020a68f4d40e9a3a.svn-base deleted file mode 100644 index 1d44b6b..0000000 --- a/.svn/pristine/ea/eaba64b90ac859b9e02cbe2e020a68f4d40e9a3a.svn-base +++ /dev/null @@ -1,81 +0,0 @@ -/** - * Patrick.Lambert - * @author Patrick Lambert - * @copyright Copyright (c) 2014, Irstea - * - * 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 3 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, see <http://www.gnu.org/licenses/>. - - */ -package environment; - -import java.util.List; - -import species.Sturgeon; -import fr.cemagref.simaqualife.kernel.AquaNismsGroup; -import fr.cemagref.simaqualife.kernel.spatial.Environment; - -/** - * - */ -public class Station extends Environment<Tanks, Sturgeon> { - - Tanks tanks; - - public Station() { - super(); - tanks = new Tanks(); - } - - /* (non-Javadoc) - * @see fr.cemagref.simaqualife.kernel.spatial.Environment#addAquaNism(fr.cemagref.simaqualife.kernel.AquaNism, fr.cemagref.simaqualife.kernel.AquaNismsGroup) - */ - @Override - public void addAquaNism(Sturgeon aquaNism, AquaNismsGroup group) { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see fr.cemagref.simaqualife.kernel.spatial.Environment#removeAquaNism(fr.cemagref.simaqualife.kernel.AquaNism, fr.cemagref.simaqualife.kernel.AquaNismsGroup) - */ - @Override - public void removeAquaNism(Sturgeon aquaNism, AquaNismsGroup group) { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see fr.cemagref.simaqualife.kernel.spatial.Environment#moveAquaNism(fr.cemagref.simaqualife.kernel.AquaNism, fr.cemagref.simaqualife.kernel.AquaNismsGroup, fr.cemagref.simaqualife.kernel.spatial.Position) - */ - @Override - public void moveAquaNism(Sturgeon aquaNism, AquaNismsGroup group, - Tanks destination) { - // nothing to do - - } - - /* (non-Javadoc) - * @see fr.cemagref.simaqualife.kernel.spatial.Environment#getNeighbours(fr.cemagref.simaqualife.kernel.spatial.Position) - */ - @Override - public List<Tanks> getNeighbours(Tanks position) { - // TODO Auto-generated method stub - return null; - } - - public Tanks getTanks(){ - return tanks; - } - -} diff --git a/.svn/pristine/f0/f0ab6cdf18ff816ab9386ae70b586063bbee403f.svn-base b/.svn/pristine/f0/f0ab6cdf18ff816ab9386ae70b586063bbee403f.svn-base deleted file mode 100644 index f3813f5..0000000 --- a/.svn/pristine/f0/f0ab6cdf18ff816ab9386ae70b586063bbee403f.svn-base +++ /dev/null @@ -1,76 +0,0 @@ -// pour une execution sur ma machine -// cd C:\Program Files\OpenMOLE -// openmole.bat -c -p D:\workspace\SturioSaintSeurin\target\${symbolic.name}_0.0.1-SNAPSHOT.jar -s D:\workspace\SturioSaintSeurin\openMole\ddpSaintSeurin.scala 2>D:\workspace\SturioSaintSeurin\openMole\erreur.txt - -//1>&2 - -// pour un lancement sur le serveur de calcul -// /usr/local/openmole/openmole -c -configuration /home/win/BORDEAUX/patrick.lambert/SturioSaintSeurin/ -p /home/win/BORDEAUX/patrick.lambert/SturioSaintSeurin/target/SturioSaintSeurin-0.0.1-SNAPSHOT.jar -s /home/win/BORDEAUX/patrick.lambert/SturioSaintSeurin/openMole/SD4ref.scala 2>/home/win/BORDEAUX/patrick.lambert/SturioSaintSeurin/openMole/erreur.txt - -import org.openmole.plugin.task.groovy._ -import org.openmole.plugin.domain.range._ -import org.openmole.plugin.hook.display._ -import org.openmole.core.model.execution.Environment -import org.openmole.plugin.domain.collection._ -import org.openmole.plugin.sampling.combine._ -import org.openmole.plugin.domain.distribution._ -import org.openmole.plugin.hook.display._ -import org.openmole.plugin.hook.file._ -import org.openmole.plugin.environment.pbs._ - -// pour une execution sur ma machine -val wd = "D:/workspace/SturioSaintSeurin/" - -// pour une execution sur le serveur -//val wd ="/home/win/BORDEAUX/patrick.lambert/SturioSaintSeurin/" - -// lancement sur la ferme de calcul de Clermont -//logger.level("FINE") -//val env = PBSEnvironment("rougier", "calcul64.clermont.cemagref.fr") - -// ================================= prototype -// ----------- input -val replicat = Prototype[Int]("replicat") - -val nbIn = Prototype[Int]("nbIn") - -val groupFile = Prototype[File]("groupFile") -val envFile = Prototype[File]("envFile") - -// ---------------- output -val femaleInLastReproduction = Prototype[Int]("femaleInLastReproduction") -val femaleInReproductions = Prototype[String]("femaleInReproductions") -val larvaeProductions = Prototype[String]("larvaeProductions") - -// ======================================== exploration -val explo = ExplorationTask("explo", - Factor(nbIn, 25 to 50 by 5 toDomain) x - Factor(replicat, 1 to 10000 by 1 toDomain) - ) - -// tache Groovy -val model = GroovyTask("model", scala.io.Source.fromFile(wd + "openMole/ddpSaintSeurin.groovy").mkString) -model addImport "fr.cemagref.simaqualife.extensions.pilot.BatchRunner" -model addImport "fr.cemagref.simaqualife.pilot.Pilot" -model addImport "miscellaneous.ReflectUtils" -model addInput replicat -model addInput nbIn -model addParameter (groupFile -> new File(wd+"data/input/juvenileStock.xml")) -model addParameter (envFile -> new File(wd+"data/input/SaintSeurin.xml")) - -model addOutput replicat -model addOutput nbIn -model addOutput femaleInLastReproduction -model addOutput femaleInReproductions -model addOutput larvaeProductions - - // sur l'ordi - val h = AppendToCSVFileHook(wd + "data/output/ddpSaintSeurin.txt") - - //sur le serveur de calcul (pas la même version d'openMole que sur ma machine) - //val h = new AppendToCSVFileHook(wd + "data/output/ddpSaintSeurin.txt") - - -val ex = explo -< (model hook h) toExecution -ex.start -ex.waitUntilEnded \ No newline at end of file diff --git a/.svn/pristine/f3/f3b8f77a424c79ff067bd6ecf4e09a73442bb497.svn-base b/.svn/pristine/f3/f3b8f77a424c79ff067bd6ecf4e09a73442bb497.svn-base deleted file mode 100644 index 3aba822..0000000 --- a/.svn/pristine/f3/f3b8f77a424c79ff067bd6ecf4e09a73442bb497.svn-base +++ /dev/null @@ -1,76 +0,0 @@ -// pour une execution sur ma machine -// cd C:\Program Files\OpenMOLE -// openmole.bat -c -p D:\workspace\SturioSaintSeurin\target\${symbolic.name}_0.0.1-SNAPSHOT.jar -s D:\workspace\SturioSaintSeurin\openMole\GENddpSaintSeurin.scala 2>D:\workspace\SturioSaintSeurin\openMole\erreur.txt - -//1>&2 - -// pour un lancement sur le serveur de calcul -// /usr/local/openmole/openmole -c -configuration /home/win/BORDEAUX/patrick.lambert/SturioSaintSeurin/ -p /home/win/BORDEAUX/patrick.lambert/SturioSaintSeurin/target/SturioSaintSeurin-0.0.1-SNAPSHOT.jar -s /home/win/BORDEAUX/patrick.lambert/SturioSaintSeurin/openMole/SD4ref.scala 2>/home/win/BORDEAUX/patrick.lambert/SturioSaintSeurin/openMole/erreur.txt - -import org.openmole.plugin.task.groovy._ -import org.openmole.plugin.domain.range._ -import org.openmole.plugin.hook.display._ -import org.openmole.core.model.execution.Environment -import org.openmole.plugin.domain.collection._ -import org.openmole.plugin.sampling.combine._ -import org.openmole.plugin.domain.distribution._ -import org.openmole.plugin.hook.display._ -import org.openmole.plugin.hook.file._ -import org.openmole.plugin.environment.pbs._ - -// pour une execution sur ma machine -val wd = "D:/workspace/SturioSaintSeurin/" - -// pour une execution sur le serveur -//val wd ="/home/win/BORDEAUX/patrick.lambert/SturioSaintSeurin/" - -// lancement sur la ferme de calcul de Clermont -//logger.level("FINE") -//val env = PBSEnvironment("rougier", "calcul64.clermont.cemagref.fr") - -// ================================= prototype -// ----------- input -val replicat = Prototype[Int]("replicat") - -//val nbIn = Prototype[Int]("nbIn") - -val groupFile = Prototype[File]("groupFile") -val envFile = Prototype[File]("envFile") - -// ---------------- output -val femaleInLastReproduction = Prototype[Int]("femaleInLastReproduction") -val femaleInReproductions = Prototype[String]("femaleInReproductions") -val larvaeProductions = Prototype[String]("larvaeProductions") - -// ======================================== exploration -val explo = ExplorationTask("explo", - //Factor(nbIn, 25 to 50 by 5 toDomain) x - Factor(replicat, 1 to 10000 by 1 toDomain) - ) - -// tache Groovy -val model = GroovyTask("model", scala.io.Source.fromFile(wd + "openMole/GENddpSaintSeurin.groovy").mkString) -model addImport "fr.cemagref.simaqualife.extensions.pilot.BatchRunner" -model addImport "fr.cemagref.simaqualife.pilot.Pilot" -model addImport "miscellaneous.ReflectUtils" -model addInput replicat -//model addInput nbIn -model addParameter (groupFile -> new File(wd+"data/input/geniteurStockSansAccidentOM.xml")) -model addParameter (envFile -> new File(wd+"data/input/SaintSeurin.xml")) - -model addOutput replicat -//model addOutput nbIn -model addOutput femaleInLastReproduction -model addOutput femaleInReproductions -model addOutput larvaeProductions - - // sur l'ordi - val h = AppendToCSVFileHook(wd + "data/output/GENddpSaintSeurinSansAccident.txt") - - //sur le serveur de calcul (pas la même version d'openMole que sur ma machine) - //val h = new AppendToCSVFileHook(wd + "data/output/GENddpSaintSeurin.txt") - - -val ex = explo -< (model hook h) toExecution -ex.start -ex.waitUntilEnded \ No newline at end of file diff --git a/.svn/pristine/f5/f55c8c416469a5b5605c3038ce6a7f0d1175b55c.svn-base b/.svn/pristine/f5/f55c8c416469a5b5605c3038ce6a7f0d1175b55c.svn-base deleted file mode 100644 index 188c02e..0000000 --- a/.svn/pristine/f5/f55c8c416469a5b5605c3038ce6a7f0d1175b55c.svn-base +++ /dev/null @@ -1,54 +0,0 @@ -Cohorte;année Naissance;Appellation;Matricule;Pit-tag;Sexe;alim;tordus;stade;dernière maturation;bête à pb;expulsion gamètes;pré-sélection échec repro;Particip_repro -9495;1994;LEONCE;30401;3D49;femelle;alim naturelle;;mature;2014;0;2014;;2012 /2014 -9495;1994;ALEXIS;70101;21D5 ou 41BC;femelle;alim naturelle;;mature;2011;0;2011;;2011 -1988;1988;D.N.;930102;OD01;femelle;alim naturelle;;mature;2013;0;2013;;2013 -1994;1994;JEANNETTE / Jeanne;951401;041121EAOC;femelle;alim naturelle;;mature;2012;0;2012;;2008 / 2012 -1994;1994;ODILE;951504;4.11E+165;femelle;alim naturelle;;mature;2012;0;2012;;2008 / 2012 -1994;1994;KARINE;951402;041121EFF7;femelle;alim naturelle;;mature;2012;0;;2008 / 2012; -1994;1994;950212;950212;041121E4A5;femelle;alim naturelle;;mature;2011;0;2011;;2011 -1994;1994;HENRIETTE;951202;041121CACF;femelle;alim naturelle;;mature;2011;0;2011;2013;2 011 -1994;1994;SEVERINE;10202;3B2B;femelle;alim naturelle;;mature;2012;0;2012;;2012 -1994;1994;MARTINE;951502;041121FO7D;femelle;alim naturelle;;mature;2012;0;2012;;2012 -1994;1994;951201;951201;041121F065;femelle;alim naturelle;;mature;2012;0;;2012;2012 -1994;1994;JULES;30102;279C;femelle;alim naturelle;;mature;2013;0;2013;2011;2013 -1994;1994;FIACRE;10102;3480;femelle;alim naturelle;;mature;2013;0;2013;;2011 / 2013 -1994;1994;LUCETTE;951501;041121E82D;femelle;alim naturelle;;mature;2013;0;2013;;2011 / 2013 -1994;1994;FRANCINE;951001;041121E7E8;femelle;alim naturelle;;mature;2013;0;2013;;2007 / 2009 / 2011 / 2013 -1995;1995;THIERRY;20201;41BO;femelle;alim naturelle;;mature;2013;0;2013;;2012 / 2013 -1995;1995;JULIE;30101;3CBE;femelle;alim naturelle;;mature;2014;0;2014;;2008 / 2012 / 2014 -1995;1995;ARISTIDE;10103;31AB;femelle;alim naturelle;;mature;2013;0;2013;2009;2011 / 2013 -1995;1995;EDITH;20301;2F5D;femelle;alim naturelle;;mature;2013;0;2013;;2011 / 2013 -1995;1995;FULBERT;30202;4278;femelle;alim naturelle;;mature;2013;0;2013;;2013 -1995;1995;309;95309;04108E12A8;femelle;alim naturelle;;immature;-1;1;;; -1995;1995;349;95349;O4108E2670;femelle;alim naturelle;;immature;-1;1;;; -1995;1995;316;95316;041121D0D6;femelle;alim naturelle;;mature;2012;0;;2012; -1995;1995;355;95355;04108E136D;femelle;alim naturelle;;immature;-1;0;;; -1995;1995;360;95360;04108E0E9C;femelle;alim naturelle;;mature;2014;0;2012 / 2014 ?;2010;2008 / 2012 / 2014 ? -1995;1995;313;95313;04108E1A85;femelle;alim naturelle;;mature;2012;0;;2012; -1995;1995;337;95337;04108E1E16;femelle;alim naturelle;;mature;2012;0;;2010 / 2012 ?; -1995;1995;361;95361;04108E15A2;femelle;alim naturelle;;immature;-1;1;;; -8485;8485;JUSTIN;950901;OD61;mâle;alim naturelle;;mature;2014;0;2012 / 2014 ?;;1995 / 2007 / 2011 / 2012 / 2014 ? -8788;8788;MARIETTE;951103;OD48;mâle;alim naturelle;;mature;2014;0;2013 / 2014 ? ;;2011 / 2012 / 2013 / 2014 ? -8889;8889;EMELINE;940301;1439;mâle;alim naturelle;;mature;2013;0;2013;;2008 / 2010 / 2011 / 2013 -0;1994;GAUTIER;30201;1F1A;mâle;alim naturelle;;mature;2013;0;2013;;2013 -0;1994;PACO;70201;0411285OE5;mâle;alim naturelle;;mature;2013;0;2013;;2012 / 2013 -1984;1984;PHILIPPE;970101;OD20;mâle;alim naturelle;;mature;2011;0;2008;2011;2008 -1988;1988;ASCENSION;950801;111A;mâle;alim naturelle;;mature;2012;0;;2010 / 2011 / 2012; -1988;1988;BLEU;930201;1A29;mâle;alim naturelle;;mature;2013;0;2013;;2008 / 2010 / 2011 / 2012 / 2013 -1992;1992;DELPHINE;10201;3EF1;mâle;alim naturelle;;mature;2014;0;2014 ? ;2010 / 2012;2014 ? -1994;1994;PASCAL;951601;041121FO8A;mâle;alim naturelle;;mature;2014;0;2014;2010 / 2011 / 2012;2013 / 2014 -1994;1994;NORMAN;951503;041121CADA;mâle;alim naturelle;;mature;2013;0;2013;2010 / 2012;2011 / 2013 -1994;1994;CAROL;950210;O41121E3C4;mâle;alim naturelle;;mature;2014;0;2014;2010 / 2011 / 2012;2012 / 2014 -1994;1994;ISABEAU;951301;041121E82C;mâle;alim naturelle;;mature;2014;0;2008 / 2014 ? ;2010 / 2011 / 2012;2008 / 2014 ? -1994;1994;NATHALIE;101;4.11E+98;mâle;alim naturelle;;mature;2013;0;2013;2014;2010 / 2012 / 2013 -1995;1995;GILLES;10104;479C;mâle;alim naturelle;;immature;-1;1;;; -1995;1995;HERVE;20101;5AA5;mâle;alim naturelle;;mature;2014;0;2014;;2009 / 2014 -1995;1995;MARTINIEN;20202;3FC6;mâle;alim naturelle;;mature;2013;0;2013;2008 / 2011;2009 / 2013 -1995;1995;137;95137;041121CDEC;mâle;alim artificielle;;mature;2012;0;2012;2010 / 2011 ;2012 / 2013 -1995;1995;365;95365;1159;mâle;alim naturelle;;mature;2012;0;;2010 / 2011 / 2012; -1995;1995;4;95004;04108E1EEF;mâle;alim artificielle;tordu;immature;-1;1;;; -1995;1995;353;95353;04108E10AC;mâle;alim naturelle;tordu;mature;2010;1;;2010; -1995;1995;328;95328;041121DFB4;mâle;alim naturelle;;mature;2013;0;2013;2010 / 2011 / 2012;2013 -1995;1995;364;95364;04108E233D;mâle;alim naturelle;;mature;2013;0;2013;;2013 -1995;1995;338;95338;04108E16B9;mâle;alim naturelle;;mature;2013;0;2013;2010 / 2011 / 2012;2009 / 2013 -1995;1995;163;95163;04108E1CDC;mâle;alim artificielle;;mature;2012;0;;2012; diff --git a/.svn/wc.db b/.svn/wc.db deleted file mode 100644 index 4581684883b3980c5fced8e0d8cf2575c8a4fbff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66560 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 AiU0rr -- GitLab