awips2/cave/com.raytheon.viz.gfe/python/autotest/RoutineLevel5_4_TestScript.py
2022-05-05 12:34:50 -05:00

1109 lines
40 KiB
Python

##
# This software was developed and / or modified by Raytheon Company,
# pursuant to Contract DG133W-05-CQ-1067 with the US Government.
#
# U.S. EXPORT CONTROLLED TECHNICAL DATA
# This software product contains export-restricted data whose
# export/transfer/disclosure is restricted by U.S. law. Dissemination
# to non-U.S. persons whether in the United States or abroad requires
# an export license or other authorization.
#
# Contractor Name: Raytheon Company
# Contractor Address: 6825 Pine Street, Suite 340
# Mail Stop B8
# Omaha, NE 68106
# 402.291.0100
#
# See the AWIPS II Master Rights File ("Master Rights File.pdf") for
# further licensing information.
##
# This software is in the public domain, furnished "as is", without technical
# support, and with no warranty, express or implied, as to its usefulness for
# any purpose.
#
# RoutineLevel5_4_TestScript
# Author:
# ----------------------------------------------------------------------------
# Temp phrase
# Sky trends with new Sky categories
addPeriods = """
def _10_503_issuance_list(self, argDict):
seriesDefAM = [
("Period_1", "period1"), #("Phantom", 12),
("Period_2_3", 12), ("Period_2_3", 12),
("Period_4_5", 12), ("Period_4_5", 12),
("Period_6_14", 12), #("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12),
## ("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12),
]
seriesDefPM = [
("Period_1", "period1"),
("Period_2_3", 12), ("Period_2_3", 12),
("Period_4_5", 12), ("Period_4_5", 12),
("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12),
("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12),
("Period_6_14", 12),
]
return [
("Morning", self.DAY(), self.NIGHT(), self.NIGHT(),
".TODAY...", "early in the morning", "late in the afternoon",
1, seriesDefAM),
("Morning with Pre-1st Period", self.DAY()-2, self.NIGHT(), self.NIGHT(),
".TODAY...", "early in the morning", "late in the afternoon",
1, seriesDefAM),
("Morning Update", "issuanceHour", self.NIGHT(), self.NIGHT(),
".REST OF TODAY...", "early in the morning", "late in the afternoon",
1, seriesDefAM),
("Afternoon Update", "issuanceHour", self.NIGHT(), self.NIGHT(),
".REST OF TODAY...", "early in the morning","late in the afternoon",
1, seriesDefAM),
# End times are tomorrow:
("Afternoon", self.NIGHT(), 24 + self.DAY(), 24 + self.DAY(),
".TONIGHT...", "late in the night", "early in the evening",
1, seriesDefPM),
("Afternoon with Pre-1st Period", self.NIGHT()-2, 24 + self.DAY(), 24 + self.DAY(),
".TONIGHT...", "late in the night", "early in the evening",
1, seriesDefPM),
("Evening Update", "issuanceHour", 24 + self.DAY(), 24 + self.DAY(),
".REST OF TONIGHT...", "early in the morning","early in the evening",
1, seriesDefPM),
# For the early morning update, this produces:
# Rest of Tonight:
# Monday
# Monday Night
("Early Morning Update", "issuanceHour", self.DAY(), self.DAY(),
".REST OF TONIGHT...", "early in the morning","late in the afternoon",
0, seriesDefPM),
# Alternative
# For the early morning update, this produces:
# Early This Morning:
# Today
# Tonight
#("Evening Update", "issuanceHour", 24 + self.DAY(), 24 + self.DAY(),
# ".REST OF TONIGHT...", "late in the night", "early in the evening",
# 1, seriesDefPM),
#("Early Morning Update", "issuanceHour", self.DAY(), self.DAY(),
# ".EARLY THIS MORNING...", "early in the morning", "late in the afternoon",
# 1, seriesDefPM),
]
"""
addTonight = """
def _10_503_issuance_list(self, argDict):
seriesDefAM = [
("Period_1", "period1"), #("Phantom", 12),
("Period_2_3", 12), #("Period_2_3", 12),
## ("Period_4_5", 12), ("Period_4_5", 12),
## ("Period_6_14", 12), #("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12),
## ("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12),
]
seriesDefPM = [
("Period_1", "period1"),
("Period_2_3", 12), ("Period_2_3", 12),
("Period_4_5", 12), ("Period_4_5", 12),
("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12),
("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12),
("Period_6_14", 12),
]
return [
("Morning", self.DAY(), self.NIGHT(), self.NIGHT(),
".TODAY...", "early in the morning", "late in the afternoon",
1, seriesDefAM),
("Morning with Pre-1st Period", self.DAY()-2, self.NIGHT(), self.NIGHT(),
".TODAY...", "early in the morning", "late in the afternoon",
1, seriesDefAM),
("Morning Update", "issuanceHour", self.NIGHT(), self.NIGHT(),
".REST OF TODAY...", "early in the morning", "late in the afternoon",
1, seriesDefAM),
("Afternoon Update", "issuanceHour", self.NIGHT(), self.NIGHT(),
".REST OF TODAY...", "early in the morning","late in the afternoon",
1, seriesDefAM),
# End times are tomorrow:
("Afternoon", self.NIGHT(), 24 + self.DAY(), 24 + self.DAY(),
".TONIGHT...", "late in the night", "early in the evening",
1, seriesDefPM),
("Afternoon with Pre-1st Period", self.NIGHT()-2, 24 + self.DAY(), 24 + self.DAY(),
".TONIGHT...", "late in the night", "early in the evening",
1, seriesDefPM),
("Evening Update", "issuanceHour", 24 + self.DAY(), 24 + self.DAY(),
".REST OF TONIGHT...", "early in the morning","early in the evening",
1, seriesDefPM),
# For the early morning update, this produces:
# Rest of Tonight:
# Monday
# Monday Night
("Early Morning Update", "issuanceHour", self.DAY(), self.DAY(),
".REST OF TONIGHT...", "early in the morning","late in the afternoon",
0, seriesDefPM),
# Alternative
# For the early morning update, this produces:
# Early This Morning:
# Today
# Tonight
#("Evening Update", "issuanceHour", 24 + self.DAY(), 24 + self.DAY(),
# ".REST OF TONIGHT...", "late in the night", "early in the evening",
# 1, seriesDefPM),
#("Early Morning Update", "issuanceHour", self.DAY(), self.DAY(),
# ".EARLY THIS MORNING...", "early in the morning", "late in the afternoon",
# 1, seriesDefPM),
]
def Period_2_3(self):
# No Lake Wind phrase
component = {
"type": "component",
"methodList": [
self.orderPhrases,
self.consolidateSubPhrases,
self.assemblePhrases,
self.wordWrap,
],
"analysisList": [
#("MinT", self.avg),
#("MaxT", self.avg),
("MinT", self.stdDevMinMax),
("MaxT", self.stdDevMinMax),
("T", self.hourlyTemp),
("T", self.minMax),
("Sky", self.median, [3]),
("PoP", self._PoP_analysisMethod("Period_2_3"), [6]),
("PoP", self.binnedPercent, [6]),
("SnowAmt", self.accumMinMax),
("StormTotalSnow", self.accumMinMax),
("IceAccum", self.accumMinMax),
("SnowLevel", self.avg),
("Wind", self.vectorMedianRange, [6]),
("Wind", self.vectorMinMax, [6]),
("WindGust", self.maximum, [6]),
("Wx", self.rankedWx, [6]),
("WindChill", self.minMax, [6]),
("HeatIndex", self.minMax, [6]),
],
"phraseList":[
self.wind_summary,
self.reportTrends,
self.sky_phrase,
self.skyPopWx_phrase,
self.weather_phrase,
self.severeWeather_phrase,
self.heavyPrecip_phrase,
self.visibility_phrase,
self.snow_phrase,
self.total_snow_phrase,
self.snowLevel_phrase,
self.iceAccumulation_phrase,
self.highs_phrase,
self.lows_phrase,
#self.highs_range_phrase,
#self.lows_range_phrase,
self.steady_temp_trends,
self.temp_trends,
self.wind_withGusts_phrase,
# self.lake_wind_phrase,
self.popMax_phrase,
self.windChill_phrase,
self.heatIndex_phrase,
],
}
if self._arealSkyAnalysis:
component["analysisList"].append(("Sky", self.binnedPercent, [6]))
if self._useStormTotalSnow:
phraseList = component["phraseList"]
index = phraseList.index(self.total_snow_phrase)
phraseList[index] = self.stormTotalSnow_phrase
component["phraseList"] = phraseList
return component
"""
import TestScript
scripts = [
### Temp phrases
{
"name": "Temp_50",
"commentary": """
MaxT -- 50
Steady temperatures.
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 50, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 50, "all"),
("Fcst", "T", "SCALAR", 9, 12, 50, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 50, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 50, ["BelowElev"]),
],
"checkStrings": ["Near steady temperature around 50"],
},
{
"name": "Temp_38-42",
"commentary": """
MaxT -- 38-42
Implied range terminology. NEAR and AROUND are defined as plus or
minus two degrees about a certain number.
For example, Lows AROUND 40 means 38 to 42 inclusive.
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 38, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 42, ["BelowElev"]),
],
"checkStrings": ["Highs around 40"],
},
{
"name": "Temp_50-53",
"commentary": """
MaxT -- 50-53
LOWER 50S (50, 51, 52, 53)
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 50, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 53, ["BelowElev"]),
],
"checkStrings": ["Highs in the lower 50s"],
},
{
"name": "Temp_54-56",
"commentary": """
MaxT -- 54-56
MID 50S (54, 55, 56)
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 54, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 56, ["BelowElev"]),
],
"checkStrings": ["Highs in the mid 50s"],
},
{
"name": "Temp_57-59",
"commentary": """
MaxT -- 57-59
UPPER 50S (57, 58, 59)
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 57, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 59, ["BelowElev"]),
],
"checkStrings": ["Highs in the upper 50s"],
},
{
"name": "Temp_47-52",
"commentary": """
MaxT -- 47-52
A specific range of five degrees (5 to 10 degrees in mountainous areas)
Lows 20 to 25
Highs 47 to 52
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 47, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 52, ["BelowElev"]),
],
"checkStrings": ["Highs 47 to 52"],
},
{
"name": "Temp_25-30",
"commentary": """
MaxT -- 25-30
A specific range of five degrees (5 to 10 degrees in mountainous areas)
Lows 20 to 25
Highs 47 to 52
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 25, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 30, ["BelowElev"]),
],
"checkStrings": ["Highs 25 to 30"],
},
{
"name": "Temp_103-108",
"commentary": """
MaxT -- 103 - 108
A specific range of five degrees (5 to 10 degrees in mountainous areas)
Lows 20 to 25
Highs 47 to 52
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 103, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 108, ["BelowElev"]),
],
"checkStrings": ["Highs 103 to 108"],
},
{
"name": "Temp_100-105",
"commentary": """
MaxT -- 100 - 105
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 100, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 105, ["BelowElev"]),
],
"checkStrings": ["Highs 100 to 105"],
},
{
"name": "Temp_98-102",
"commentary": """
MaxT -- 98 - 102
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 98, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 102, ["BelowElev"]),
],
"checkStrings": ["Highs around 100"],
},
{
"name": "Temp_98-103",
"commentary": """
MaxT -- 98 - 103
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 98, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 103, ["BelowElev"]),
],
"checkStrings": ["Highs 98 to 103"],
},
# Crossing LOWER, MID, UPPER boundaries
{
"name": "Temp_50-54",
"commentary": """
MaxT -- 50-54
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 50, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 54, ["BelowElev"]),
],
"checkStrings": ["Highs in the lower 50s"],
},
{
"name": "Temp_53-54",
"commentary": """
MaxT -- 53-54
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 53, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 54, ["BelowElev"]),
],
"checkStrings": ["Highs in the mid 50s"],
},
{
"name": "Temp_54-57",
"commentary": """
MaxT -- 54-57
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 54, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 57, ["BelowElev"]),
],
"checkStrings": ["Highs in the mid 50s"],
},
{
"name": "Temp_56-58",
"commentary": """
MaxT -- 56-58
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 56, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 58, ["BelowElev"]),
],
"checkStrings": ["Highs in the upper 50s"],
},
{
"name": "Temp_-2-2",
"commentary": """
MaxT -- -2 - 2
Implied range terminology. NEAR zero is also permitted.
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", -2, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 2, ["BelowElev"]),
],
"checkStrings": ["Highs near zero"],
},
{
"name": "Temp_2-3",
"commentary": """
MaxT -- 2-3
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 2, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 3, ["BelowElev"]),
],
"checkStrings": ["Highs around 3"],
},
{
"name": "Temp_4-6",
"commentary": """
MaxT -- 4-6
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 4, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 6, ["BelowElev"]),
],
"checkStrings": ["Highs around 5"],
},
{
"name": "Temp_6-9",
"commentary": """
MaxT -- 6-9
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 6, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 9, ["BelowElev"]),
],
"checkStrings": ["Highs around 8"],
},
{
"name": "Temp_12-14",
"commentary": """
MaxT -- 12-14
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 12, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 14, ["BelowElev"]),
],
"checkStrings": ["Highs around 13"],
},
{
"name": "Temp_10-14",
"commentary": """
MaxT -- 10-14
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 10, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 14, ["BelowElev"]),
],
"checkStrings": ["Highs around 12"],
},
{
"name": "Temp_11-14",
"commentary": """
MaxT -- 11-14
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 11, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 14, ["BelowElev"]),
],
"checkStrings": ["Highs around 13"],
},
{
"name": "Temp_11-16",
"commentary": """
MaxT -- 11-16
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 11, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 16, ["BelowElev"]),
],
"checkStrings": ["Highs 11 to 16"],
},
{
"name": "Temp_-5-5",
"commentary": """
MaxT -- -5 - 5
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", -5, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 5, ["BelowElev"]),
],
"checkStrings": ["Highs 5 below to 5 above zero"],
},
{
"name": "Temp_-5--10",
"commentary": """
MaxT -- -5 - -10
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", -5, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", -10, ["BelowElev"]),
],
"checkStrings": ["Highs 5 below to 10 below zero"],
},
{
"name": "Temp_0-5",
"commentary": """
MaxT -- 0 - 5
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 5, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 0, ["BelowElev"]),
],
"checkStrings": ["Highs zero to 5 above"],
},
{
"name": "Temp_0--5",
"commentary": """
MaxT -- 0 - -5
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 50, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", -5, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 0, ["BelowElev"]),
],
"checkStrings": ["Highs 5 below to zero"],
},
{
"name": "Temp_Trends1",
"commentary": """
Trends
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 70, "all"),
("Fcst", "T", "SCALAR", 6, 9, 60, "all"),
("Fcst", "T", "SCALAR", 9, 12, 48, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 70, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 70, ["BelowElev"]),
],
"checkStrings": ["Highs around 70", "Temperatures falling into the upper 40s in the afternoon"],
},
{
"name": "Temp_Trends2",
"commentary": """
Trends
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "T", "SCALAR", 0, 3, 70, "all"),
("Fcst", "T", "SCALAR", 3, 6, 70, "all"),
("Fcst", "T", "SCALAR", 6, 9, 70, "all"),
("Fcst", "T", "SCALAR", 9, 12, 70, "all"),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 70, ["AboveElev"]),
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 70, ["BelowElev"]),
],
"checkStrings": ["Near steady temperature around 70"],
"notCheckString": ["Highs"],
},
# Sky trend tests
{
"name": "SkyTrends1",
"commentary": """
Trends sunny --> sunny (5)
clear --> clear
sunny --> sunny (25)
clear --> mostly clear
sunny --> mostly sunny (50)
clear --> partly cloudy
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "Sky", "SCALAR", 0, 3, 5, "all"),
("Fcst", "Sky", "SCALAR", 3, 6, 5, "all"),
("Fcst", "Sky", "SCALAR", 6, 9, 5, "all"),
("Fcst", "Sky", "SCALAR", 9, 12, 5, "all"),
("Fcst", "Sky", "SCALAR", 12, 15, 5, "all"),
("Fcst", "Sky", "SCALAR", 15, 18, 5, "all"),
("Fcst", "Sky", "SCALAR", 18, 21, 5, "all"),
("Fcst", "Sky", "SCALAR", 21, 24, 5, "all"),
("Fcst", "Sky", "SCALAR", 24, 27, 5, "all"),
("Fcst", "Sky", "SCALAR", 27, 30, 5, "all"),
("Fcst", "Sky", "SCALAR", 30, 33, 25, "all"),
("Fcst", "Sky", "SCALAR", 33, 36, 25, "all"),
("Fcst", "Sky", "SCALAR", 36, 39, 5, "all"),
("Fcst", "Sky", "SCALAR", 39, 42, 5, "all"),
("Fcst", "Sky", "SCALAR", 42, 45, 25, "all"),
("Fcst", "Sky", "SCALAR", 45, 48, 25, "all"),
("Fcst", "Sky", "SCALAR", 48, 51, 5, "all"),
("Fcst", "Sky", "SCALAR", 51, 54, 5, "all"),
("Fcst", "Sky", "SCALAR", 54, 57, 50, "all"),
("Fcst", "Sky", "SCALAR", 57, 60, 50, "all"),
("Fcst", "Sky", "SCALAR", 60, 63, 5, "all"),
("Fcst", "Sky", "SCALAR", 63, 66, 5, "all"),
("Fcst", "Sky", "SCALAR", 66, 69, 50, "all"),
("Fcst", "Sky", "SCALAR", 69, 72, 50, "all"),
("Fcst", "PoP", "SCALAR", 0, 72, 0, "all"),
],
"checkStrings": [
".TODAY...", "Sunny.",
".TONIGHT...", "Clear.",
"...", "Sunny.",
"...", "Mostly clear.",
"...", "Mostly sunny.",
"...", "Clear in the evening then becoming partly cloudy.",
],
"fileChanges": [
("Phrase_Test_Local", "TextUtility", "add", addPeriods, "undo"),
],
},
{
"name": "SkyTrends2",
"commentary": """
Trends
sunny --> party sunny (69)
clear --> mostly cloudy
sunny --> mostly cloudy (87)
clear --> mostly cloudy
sunny --> cloudy (100)
clear --> cloudy
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "Sky", "SCALAR", 0, 3, 5, "all"),
("Fcst", "Sky", "SCALAR", 3, 6, 5, "all"),
("Fcst", "Sky", "SCALAR", 6, 9, 69, "all"),
("Fcst", "Sky", "SCALAR", 9, 12, 69, "all"),
("Fcst", "Sky", "SCALAR", 12, 15, 5, "all"),
("Fcst", "Sky", "SCALAR", 15, 18, 5, "all"),
("Fcst", "Sky", "SCALAR", 18, 21, 69, "all"),
("Fcst", "Sky", "SCALAR", 21, 24, 69, "all"),
("Fcst", "Sky", "SCALAR", 24, 27, 5, "all"),
("Fcst", "Sky", "SCALAR", 27, 30, 5, "all"),
("Fcst", "Sky", "SCALAR", 30, 33, 87, "all"),
("Fcst", "Sky", "SCALAR", 33, 36, 87, "all"),
("Fcst", "Sky", "SCALAR", 36, 39, 5, "all"),
("Fcst", "Sky", "SCALAR", 39, 42, 5, "all"),
("Fcst", "Sky", "SCALAR", 42, 45, 87, "all"),
("Fcst", "Sky", "SCALAR", 45, 48, 87, "all"),
("Fcst", "Sky", "SCALAR", 48, 51, 5, "all"),
("Fcst", "Sky", "SCALAR", 51, 54, 5, "all"),
("Fcst", "Sky", "SCALAR", 54, 57, 100, "all"),
("Fcst", "Sky", "SCALAR", 57, 60, 100, "all"),
("Fcst", "Sky", "SCALAR", 60, 63, 5, "all"),
("Fcst", "Sky", "SCALAR", 63, 66, 5, "all"),
("Fcst", "Sky", "SCALAR", 66, 69, 100, "all"),
("Fcst", "Sky", "SCALAR", 69, 72, 100, "all"),
("Fcst", "PoP", "SCALAR", 0, 72, 0, "all"),
],
"checkStrings": [
".TODAY...", "Sunny in the morning then becoming partly sunny",
".TONIGHT...", "Clear in the evening then becoming mostly cloudy",
"...", "Sunny in the morning then becoming mostly cloudy",
"...", "Clear in the evening then becoming mostly cloudy",
"...", "Sunny in the morning then becoming cloudy",
"...", "Clear in the evening then becoming cloudy",
],
"fileChanges": [
("Phrase_Test_Local", "TextUtility", "add", addPeriods, "undo"),
],
},
{
"name": "SkyTrends3",
"commentary": """
Trends day/night periods:
sunny (25) --> mostly sunny (50)
mostly clear --> partly cloudy
sunny (25) --> partly sunny (69)
mostly clear --> mostly cloudy
sunny (25) --> mostly cloudy (87)
mostly clear --> mostly cloudy
sunny (25) --> cloudy (100)
mostly clear --> cloudy
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "Sky", "SCALAR", 0, 3, 25, "all"),
("Fcst", "Sky", "SCALAR", 3, 6, 25, "all"),
("Fcst", "Sky", "SCALAR", 6, 9, 50, "all"),
("Fcst", "Sky", "SCALAR", 9, 12, 50, "all"),
("Fcst", "Sky", "SCALAR", 12, 15, 25, "all"),
("Fcst", "Sky", "SCALAR", 15, 18, 25, "all"),
("Fcst", "Sky", "SCALAR", 18, 21, 50, "all"),
("Fcst", "Sky", "SCALAR", 21, 24, 50, "all"),
("Fcst", "Sky", "SCALAR", 24, 27, 25, "all"),
("Fcst", "Sky", "SCALAR", 27, 30, 25, "all"),
("Fcst", "Sky", "SCALAR", 30, 33, 69, "all"),
("Fcst", "Sky", "SCALAR", 33, 36, 69, "all"),
("Fcst", "Sky", "SCALAR", 36, 39, 25, "all"),
("Fcst", "Sky", "SCALAR", 39, 42, 25, "all"),
("Fcst", "Sky", "SCALAR", 42, 45, 69, "all"),
("Fcst", "Sky", "SCALAR", 45, 48, 69, "all"),
("Fcst", "Sky", "SCALAR", 48, 51, 25, "all"),
("Fcst", "Sky", "SCALAR", 51, 54, 25, "all"),
("Fcst", "Sky", "SCALAR", 54, 57, 87, "all"),
("Fcst", "Sky", "SCALAR", 57, 60, 87, "all"),
("Fcst", "Sky", "SCALAR", 60, 63, 5, "all"),
("Fcst", "Sky", "SCALAR", 63, 66, 5, "all"),
("Fcst", "Sky", "SCALAR", 66, 69, 87, "all"),
("Fcst", "Sky", "SCALAR", 69, 72, 87, "all"),
("Fcst", "Sky", "SCALAR", 72, 75, 5, "all"),
("Fcst", "Sky", "SCALAR", 75, 78, 5, "all"),
("Fcst", "Sky", "SCALAR", 78, 81, 100, "all"),
("Fcst", "Sky", "SCALAR", 81, 84, 100, "all"),
("Fcst", "Sky", "SCALAR", 84, 87, 5, "all"),
("Fcst", "Sky", "SCALAR", 87, 90, 5, "all"),
("Fcst", "Sky", "SCALAR", 90, 93, 100, "all"),
("Fcst", "Sky", "SCALAR", 93, 96, 100, "all"),
("Fcst", "PoP", "SCALAR", 0, 96, 0, "all"),
],
"checkStrings": [
".TODAY...", "Mostly sunny",
".TONIGHT...", "Partly cloudy",
"...", "Sunny in the morning then becoming partly sunny",
"...", "Mostly clear in the evening then becoming mostly cloudy",
"...", "Sunny in the morning then becoming mostly cloudy",
"...", "Clear in the evening then becoming mostly cloudy",
],
"fileChanges": [
("Phrase_Test_Local", "TextUtility", "add", addPeriods, "undo"),
],
},
{
"name": "SkyTrends4",
"commentary": """
Trends
mostly sunny (50) --> partly sunny (69)
partly cloudy --> mostly cloudy
mostly sunny (50) --> mostly cloudy (87)
partly cloudy --> mostly cloudy
mostly sunny (50) --> cloudy (100)
partly cloudy --> cloudy
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "Sky", "SCALAR", 0, 3, 50, "all"),
("Fcst", "Sky", "SCALAR", 3, 6, 50, "all"),
("Fcst", "Sky", "SCALAR", 6, 9, 69, "all"),
("Fcst", "Sky", "SCALAR", 9, 12, 69, "all"),
("Fcst", "Sky", "SCALAR", 12, 15, 50, "all"),
("Fcst", "Sky", "SCALAR", 15, 18, 50, "all"),
("Fcst", "Sky", "SCALAR", 18, 21, 69, "all"),
("Fcst", "Sky", "SCALAR", 21, 24, 69, "all"),
("Fcst", "Sky", "SCALAR", 24, 27, 50, "all"),
("Fcst", "Sky", "SCALAR", 27, 30, 50, "all"),
("Fcst", "Sky", "SCALAR", 30, 33, 87, "all"),
("Fcst", "Sky", "SCALAR", 33, 36, 87, "all"),
("Fcst", "Sky", "SCALAR", 36, 39, 50, "all"),
("Fcst", "Sky", "SCALAR", 39, 42, 50, "all"),
("Fcst", "Sky", "SCALAR", 42, 45, 87, "all"),
("Fcst", "Sky", "SCALAR", 45, 48, 87, "all"),
("Fcst", "Sky", "SCALAR", 48, 51, 50, "all"),
("Fcst", "Sky", "SCALAR", 51, 54, 50, "all"),
("Fcst", "Sky", "SCALAR", 54, 57, 100, "all"),
("Fcst", "Sky", "SCALAR", 57, 60, 100, "all"),
("Fcst", "Sky", "SCALAR", 60, 63, 50, "all"),
("Fcst", "Sky", "SCALAR", 63, 66, 50, "all"),
("Fcst", "Sky", "SCALAR", 66, 69, 100, "all"),
("Fcst", "Sky", "SCALAR", 69, 72, 100, "all"),
("Fcst", "PoP", "SCALAR", 0, 72, 0, "all"),
],
"checkStrings": [
".TODAY...", "Partly sunny.",
".TONIGHT...", "Partly cloudy in the evening then becoming mostly cloudy",
"...", "Mostly sunny in the morning then becoming mostly cloudy",
"...", "Partly cloudy in the evening then becoming mostly cloudy",
"...", "Mostly sunny in the morning then becoming cloudy",
"...", "Partly cloudy in the evening then becoming cloudy",
],
"fileChanges": [
("Phrase_Test_Local", "TextUtility", "add", addPeriods, "undo"),
],
},
{
"name": "SkyTrends5",
"commentary": """
Trends
partly sunny (69) --> mostly cloudy (87)
mostly cloudy --> cloudy
partly sunny (69)--> cloudy (100)
mostly cloudy --> cloudy
mostly cloudy (87) --> cloudy (100)
mostly cloudy --> cloudy
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "Sky", "SCALAR", 0, 3, 69, "all"),
("Fcst", "Sky", "SCALAR", 3, 6, 69, "all"),
("Fcst", "Sky", "SCALAR", 6, 9, 87, "all"),
("Fcst", "Sky", "SCALAR", 9, 12, 87, "all"),
("Fcst", "Sky", "SCALAR", 12, 15, 69, "all"),
("Fcst", "Sky", "SCALAR", 15, 18, 69, "all"),
("Fcst", "Sky", "SCALAR", 18, 21, 87, "all"),
("Fcst", "Sky", "SCALAR", 21, 24, 87, "all"),
("Fcst", "Sky", "SCALAR", 24, 27, 69, "all"),
("Fcst", "Sky", "SCALAR", 27, 30, 69, "all"),
("Fcst", "Sky", "SCALAR", 30, 33, 100, "all"),
("Fcst", "Sky", "SCALAR", 33, 36, 100, "all"),
("Fcst", "Sky", "SCALAR", 36, 39, 69, "all"),
("Fcst", "Sky", "SCALAR", 39, 42, 69, "all"),
("Fcst", "Sky", "SCALAR", 42, 45, 100, "all"),
("Fcst", "Sky", "SCALAR", 45, 48, 100, "all"),
("Fcst", "Sky", "SCALAR", 48, 51, 87, "all"),
("Fcst", "Sky", "SCALAR", 51, 54, 87, "all"),
("Fcst", "Sky", "SCALAR", 54, 57, 100, "all"),
("Fcst", "Sky", "SCALAR", 57, 60, 100, "all"),
("Fcst", "Sky", "SCALAR", 60, 63, 87, "all"),
("Fcst", "Sky", "SCALAR", 63, 66, 87, "all"),
("Fcst", "Sky", "SCALAR", 66, 69, 100, "all"),
("Fcst", "Sky", "SCALAR", 69, 72, 100, "all"),
("Fcst", "PoP", "SCALAR", 0, 72, 0, "all"),
],
"checkStrings": [
".TODAY...", "Mostly cloudy",
".TONIGHT...", "Mostly cloudy.",
"...", "Partly sunny in the morning then becoming cloudy",
"...", "Mostly cloudy",
"...", "Cloudy.",
"...", "Cloudy.",
],
"fileChanges": [
("Phrase_Test_Local", "TextUtility", "add", addPeriods, "undo"),
],
},
{
"name": "SkyTrends6",
"commentary": """
Trends
Day: sunny --> mostly sunny --> partly sunny --> mostly cloudy
Night: mostly clear --> partly cloudy --> mostly cloudy --> mostly cloudy
""",
"productType": "Phrase_Test_Local",
"createGrids": [
("Fcst", "Sky", "SCALAR", 0, 3, 25, "all"),
("Fcst", "Sky", "SCALAR", 3, 6, 50, "all"),
("Fcst", "Sky", "SCALAR", 6, 9, 69, "all"),
("Fcst", "Sky", "SCALAR", 9, 12, 87, "all"),
("Fcst", "Sky", "SCALAR", 12, 15, 25, "all"),
("Fcst", "Sky", "SCALAR", 15, 18, 50, "all"),
("Fcst", "Sky", "SCALAR", 18, 21, 69, "all"),
("Fcst", "Sky", "SCALAR", 21, 24, 87, "all"),
("Fcst", "PoP", "SCALAR", 0, 72, 0, "all"),
],
"checkStrings": [
".TODAY...", "Mostly sunny until late afternoon then becoming mostly cloudy",
".TONIGHT...", "Partly cloudy in the evening then becoming mostly cloudy",
],
"fileChanges": [
("Phrase_Test_Local", "TextUtility", "add", addTonight, "undo"),
],
},
]
maxT1 = """("MaxT", self.stdDevMinMax)"""
maxT2 = """("MaxT", self.minMax)"""
def testScript(self, dataMgr, level="Site"):
defaults = {
"database": "<site>_GRID__Fcst_00000000_0000",
"combinations": "ZONE",
"fileChanges": [
("Phrase_Test_Local", "TextUtility", "replace", (maxT1, maxT2), "undo"),
],
}
# Necessary to do drt for scripts
# that start the product with current time
time_4am = self.getAbsFromLocal(2010, 1, 1, 4, 0)
time_6am = self.getAbsFromLocal(2010, 1, 1, 6, 0)
for script in scripts:
if script.get("gridsStartTime", None) == "6am Local":
script["gridsStartTime"] = time_6am
if script.get("drtTime", None) == "4am Local":
script["drtTime"] = time_6am
elif script.get("drtTime", None) == "6am Local":
script["drtTime"] = time_6am
return TestScript.generalTestScript(self, dataMgr, scripts, defaults)