diff --git a/src/main/java/no/nibio/vips/model/yellowstemborertempmodel/YellowStemborerTempModel.java b/src/main/java/no/nibio/vips/model/yellowstemborertempmodel/YellowStemborerTempModel.java index 4ca7b021430d41c0b77a3a6f2bffdbdfe1c0a480..4abf3f257a914bd22d46fe94cdaf805ce0fa54be 100644 --- a/src/main/java/no/nibio/vips/model/yellowstemborertempmodel/YellowStemborerTempModel.java +++ b/src/main/java/no/nibio/vips/model/yellowstemborertempmodel/YellowStemborerTempModel.java @@ -65,8 +65,8 @@ public class YellowStemborerTempModel extends I18nImpl implements Model { }; // DD aggregation cutoff values for each phase - private Double[] dd_lower = {13.0,12.0,15.0,13.0}; - private Double[] dd_upper = {36.0, 34.0,36.0,36.0}; + private Double[] ddLower = {13.0,12.0,15.0,13.0}; + private Double[] ddUpper = {36.0, 34.0,36.0,36.0}; // Heat sum thresholds for each phase private Double[] heatRequirements = {113.0, 370.0, 188.0, 25.0}; @@ -104,9 +104,9 @@ public class YellowStemborerTempModel extends I18nImpl implements Model { result.setValue(YellowStemborerTempModel.MODEL_ID.toString(), DataMatrix.DAILY_CONTRIB, dFormat.format(DAILY_CONTRIB)); result.setValue(YellowStemborerTempModel.MODEL_ID.toString(), DataMatrix.HEAT_SUM, dFormat.format(HEAT_SUM)); result.setValue(YellowStemborerTempModel.MODEL_ID.toString(), DataMatrix.PHASE, PHASE); - result.setValue(YellowStemborerTempModel.MODEL_ID.toString(), "thresholdLarvae", dFormat.format(this.heatRequirements[0])); - result.setValue(YellowStemborerTempModel.MODEL_ID.toString(), "thresholdPupa", dFormat.format(this.heatRequirements[0] + this.heatRequirements[1])); - result.setValue(YellowStemborerTempModel.MODEL_ID.toString(), "thresholdAdult", dFormat.format(this.heatRequirements[0] + this.heatRequirements[1] + this.heatRequirements[2])); + result.setValue(YellowStemborerTempModel.MODEL_ID.toString(), "THRESHOLD_LARVAE", dFormat.format(this.heatRequirements[0])); + result.setValue(YellowStemborerTempModel.MODEL_ID.toString(), "THRESHOLD_PUPA", dFormat.format(this.heatRequirements[0] + this.heatRequirements[1])); + result.setValue(YellowStemborerTempModel.MODEL_ID.toString(), "THRESHOLD_ADULT", dFormat.format(this.heatRequirements[0] + this.heatRequirements[1] + this.heatRequirements[2])); result.setValue(YellowStemborerTempModel.MODEL_ID.toString(), DataMatrix.PHASE, PHASE); Integer warningStatus = Result.WARNING_STATUS_NO_WARNING; @@ -230,23 +230,23 @@ public class YellowStemborerTempModel extends I18nImpl implements Model { this.heatRequirements = this.modelUtil.getDoubleArray(config.getConfigParameter("heatRequirements")); if(this.heatRequirements.length != 4) { - throw new ConfigValidationException("ERROR: Array of heat requirements has " + this.dd_lower.length + " elements, should be 4"); + throw new ConfigValidationException("ERROR: Array of heat requirements has " + this.heatRequirements.length + " elements, should be 4"); } } - if(config.getConfigParameter("dd_lower") != null) + if(config.getConfigParameter("ddLower") != null) { - this.dd_lower = this.modelUtil.getDoubleArray(config.getConfigParameter("dd_lower")); - if(this.dd_lower.length != 4) + this.ddLower = this.modelUtil.getDoubleArray(config.getConfigParameter("ddLower")); + if(this.ddLower.length != 4) { - throw new ConfigValidationException("ERROR: Array of lower cutoffs has " + this.dd_lower.length + " elements, should be 4"); + throw new ConfigValidationException("ERROR: Array of lower cutoffs has " + this.ddLower.length + " elements, should be 4"); } } - if(config.getConfigParameter("dd_upper") != null) + if(config.getConfigParameter("ddUpper") != null) { - this.dd_upper = this.modelUtil.getDoubleArray(config.getConfigParameter("dd_upper")); - if(this.dd_upper.length != 4) + this.ddUpper = this.modelUtil.getDoubleArray(config.getConfigParameter("ddUpper")); + if(this.ddUpper.length != 4) { - throw new ConfigValidationException("ERROR: Array of upper cutoffs has " + this.dd_upper.length + " elements, should be 4"); + throw new ConfigValidationException("ERROR: Array of upper cutoffs has " + this.ddUpper.length + " elements, should be 4"); } } if(config.getConfigParameter("observedPhase") != null) @@ -314,6 +314,7 @@ public class YellowStemborerTempModel extends I18nImpl implements Model { break; } } + // TODO: Check validity of weather data //System.out.println("DataMatrix"); //System.out.println(this.dataMatrix.toCSV()); @@ -359,9 +360,9 @@ public class YellowStemborerTempModel extends I18nImpl implements Model { throw new ModelExcecutionException("Missing weather data at " + today + ": " + (todayMinTemp == null ? "TND ": "") + (todayMaxTemp == null ? "TXD ": "")); } //System.out.println("today=" + today + ",todayTemp=" + todayTemp); - Double current_dd_lower = this.dd_lower[phasesList.indexOf(currentPhase)]; - Double current_dd_upper = this.dd_upper[phasesList.indexOf(currentPhase)]; - Double dailyContribution = nlc.calculateSingleSineWaveWithCutoff(todayMinTemp.getValue(), todayMaxTemp.getValue(), current_dd_lower, current_dd_upper); + Double current_ddLower = this.ddLower[phasesList.indexOf(currentPhase)]; + Double current_ddUpper = this.ddUpper[phasesList.indexOf(currentPhase)]; + Double dailyContribution = nlc.calculateSingleSineWaveWithCutoff(todayMinTemp.getValue(), todayMaxTemp.getValue(), current_ddLower, current_ddUpper); this.dataMatrix.setParamDoubleValueForDate(today, DataMatrix.DAILY_CONTRIB, dailyContribution); sum += dailyContribution; this.dataMatrix.setParamDoubleValueForDate(today, DataMatrix.HEAT_SUM, sum); diff --git a/src/test/java/no/nibio/vips/model/yellowstemborertempmodel/YellowStemborerTempModelTest.java b/src/test/java/no/nibio/vips/model/yellowstemborertempmodel/YellowStemborerTempModelTest.java index b9fce1ff4364579108004af0844001a8f758ff89..9290114c7afa26eaeea120a1e9114c5776f0db1f 100644 --- a/src/test/java/no/nibio/vips/model/yellowstemborertempmodel/YellowStemborerTempModelTest.java +++ b/src/test/java/no/nibio/vips/model/yellowstemborertempmodel/YellowStemborerTempModelTest.java @@ -5,12 +5,9 @@ */ package no.nibio.vips.model.yellowstemborertempmodel; -import com.fasterxml.jackson.databind.ObjectMapper; import java.util.List; import no.nibio.vips.entity.ModelConfiguration; import no.nibio.vips.entity.Result; -import no.nibio.vips.model.ModelId; -import no.nibio.vips.util.ModelUtil; import no.nibio.vips.util.test.WeatherDataFileReader; import org.junit.After; import org.junit.AfterClass; @@ -67,11 +64,11 @@ public class YellowStemborerTempModelTest { // Heat requirement for transitioning out of [EGG,LARVAE,PUPA,ADULT] phases Double[] heatRequirements = {113.0, 370.0, 188.0, 25.0}; // Lower and upper cutoffs for [EGG,LARVAE,PUPA,ADULT] phases - Double[] dd_lower = {13.0,12.0,15.0,13.0}; - Double[] dd_upper = {36.0, 34.0,36.0,36.0}; + Double[] ddLower = {13.0,12.0,15.0,13.0}; + Double[] ddUpper = {36.0, 34.0,36.0,36.0}; config.setConfigParameter("heatRequirements", heatRequirements); - config.setConfigParameter("dd_lower", dd_lower); - config.setConfigParameter("dd_upper", dd_upper); + config.setConfigParameter("ddLower", ddLower); + config.setConfigParameter("ddUpper", ddUpper);