From 7fd220800f55e094fa8be67bb8102fb557a1cb08 Mon Sep 17 00:00:00 2001 From: "patrick.lambert" <patrick.mh.lambert@inrae.fr> Date: Wed, 24 Mar 2021 17:17:35 +0100 Subject: [PATCH] first step to an export into string matrix --- .../java/analysis/AnalyseSpawnerFeatures.java | 51 +++++++++++-------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/src/main/java/analysis/AnalyseSpawnerFeatures.java b/src/main/java/analysis/AnalyseSpawnerFeatures.java index 4eae1a8..ba8f69b 100644 --- a/src/main/java/analysis/AnalyseSpawnerFeatures.java +++ b/src/main/java/analysis/AnalyseSpawnerFeatures.java @@ -32,8 +32,8 @@ import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess; import fr.cemagref.simaqualife.pilot.Pilot; import miscellaneous.QueueMemory; import species.DiadromousFish; -import species.DiadromousFishGroup; import species.DiadromousFish.Gender; +import species.DiadromousFishGroup; /** * @@ -43,9 +43,9 @@ public class AnalyseSpawnerFeatures extends AquaNismsGroupProcess<DiadromousFish private int memorySize = 30; private Season analysisSeason = Season.SPRING; - private transient Map<Integer, QueueMemory<Double>> femaleAgeMemories; - private transient Map<Integer, QueueMemory<Double>> maleAgeMemories; - private transient Map<Integer, QueueMemory<Double>> primiparousMemories; + private transient Map<RiverBasin, QueueMemory<Double>> femaleAgeMemories; + private transient Map<RiverBasin, QueueMemory<Double>> maleAgeMemories; + private transient Map<RiverBasin, QueueMemory<Double>> primiparousMemories; @Override public void initTransientParameters(Pilot pilot) { @@ -59,14 +59,14 @@ public class AnalyseSpawnerFeatures extends AquaNismsGroupProcess<DiadromousFish // first passage if (femaleAgeMemories == null) { - femaleAgeMemories = new HashMap<Integer, QueueMemory<Double>>(); - maleAgeMemories = new HashMap<Integer, QueueMemory<Double>>(); - primiparousMemories = new HashMap<Integer, QueueMemory<Double>>(); + femaleAgeMemories = new HashMap<RiverBasin, QueueMemory<Double>>(); + maleAgeMemories = new HashMap<RiverBasin, QueueMemory<Double>>(); + primiparousMemories = new HashMap<RiverBasin, QueueMemory<Double>>(); for (RiverBasin riverBasin : group.getEnvironment().getRiverBasins()) { - femaleAgeMemories.put(riverBasin.getBasin_id(), new QueueMemory<>(memorySize)); - maleAgeMemories.put(riverBasin.getBasin_id(), new QueueMemory<>(memorySize)); - primiparousMemories.put(riverBasin.getBasin_id(), new QueueMemory<>(memorySize)); + femaleAgeMemories.put(riverBasin, new QueueMemory<>(memorySize)); + maleAgeMemories.put(riverBasin, new QueueMemory<>(memorySize)); + primiparousMemories.put(riverBasin, new QueueMemory<>(memorySize)); } } @@ -104,11 +104,11 @@ public class AnalyseSpawnerFeatures extends AquaNismsGroupProcess<DiadromousFish } // add value in the queues if (nbAgeForFemale > 0.) - femaleAgeMemories.get(riverBasin.getBasin_id()).push(meanAgeForFemale / nbAgeForFemale); + femaleAgeMemories.get(riverBasin).push(meanAgeForFemale / nbAgeForFemale); else - femaleAgeMemories.get(riverBasin.getBasin_id()).push(Double.NaN); + femaleAgeMemories.get(riverBasin).push(Double.NaN); if (nbAgeForMale > 0.) - maleAgeMemories.get(riverBasin.getBasin_id()).push(meanAgeForMale / nbAgeForMale); + maleAgeMemories.get(riverBasin).push(meanAgeForMale / nbAgeForMale); else maleAgeMemories.get(riverBasin.getBasin_id()).push(Double.NaN); if (nbOfSpawners > 0.) @@ -121,17 +121,24 @@ public class AnalyseSpawnerFeatures extends AquaNismsGroupProcess<DiadromousFish } - public double[][] exportToR() { + public String[][] exportToR() { int nbBasin = femaleAgeMemories.size(); - double[][] result = new double[nbBasin][4]; - int i = 0; - - for (Entry<Integer, QueueMemory<Double>> entry : femaleAgeMemories.entrySet()) { - result[i][0] = entry.getKey(); - result[i][1] = entry.getValue().getMean(); - result[i][2] = maleAgeMemories.get(entry.getKey()).getMean(); - result[i][3] = primiparousMemories.get(entry.getKey()).getMean(); + String[][] result = new String[nbBasin + 1][4]; + // headers + result[0][0] = "basin_id"; + result[0][1] = "basin_name"; + result[0][2] = "mean_age_female"; + result[0][3] = "mean_age _male"; + result[0][4] = "pct_primiparous"; + + int i = 1; + for (Entry<RiverBasin, QueueMemory<Double>> entry : femaleAgeMemories.entrySet()) { + result[i][0] = String.valueOf(entry.getKey().getBasin_id()); + result[i][1] = entry.getKey().getName(); + result[i][2] = String.valueOf(entry.getValue().getMean()); + result[i][3] = String.valueOf(maleAgeMemories.get(entry.getKey()).getMean()); + result[i][4] = String.valueOf(primiparousMemories.get(entry.getKey()).getMean()); i++; } -- GitLab