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

1054 lines
36 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.
#
# Miscellaneous Tests for various products
# Can have "definitions" and "overrides"
#
# Author: Dave Metze, hansen
# ----------------------------------------------------------------------------
###########
## FWF LAL
## "editAreaSuffix" Test
## Humidity Recovery Local Effects
import TestScript, CreateGrids
# Overrides to FWF for Humidity Recovery Local Effects
humRec = """
def getFirePeriod_phraseList(self):
if self._useRH:
dayRH = "RH"
nightRH = "RH"
else:
dayRH = "MinRH"
nightRH = "MaxRH"
phraseList = [
self.skyWeather_byTimeRange_compoundPhrase,
self.lal_phrase,
(self.dayOrNight_phrase, ["MaxT", "MinT", 1, 1],
self._tempLocalEffects_list()),
(self.trend_DayOrNight_phrase, ["MaxT", "MinT", "Ttrend", 1, 1],
self._tempTrendLocalEffects_list()),
(self.dayOrNight_phrase, [dayRH, nightRH, 1, 1], self._rhLocalEffects_list()),
(self.trend_DayOrNight_phrase, [dayRH, nightRH, "RHtrend", 1, 1],
self._rhTrendLocalEffects_list()),
(self.humidityRecovery_phrase, self._humRecLocalEffects_list()),
#self.humidityRecovery_phrase,
self.fireWind_compoundPhrase,
self.fireWind_label_phrase,
self.fireValleyWind_compoundPhrase,
self.fireRidgeWind_compoundPhrase,
self.haines_phrase,
self.smokeDispersal_phrase,
self.mixingHgt_phrase,
self.transportWind_phrase,
#self.freeWind_phrase,
self.cwr_phrase,
#self.marineLayer_phrase,
]
# Remove trend methods
if self._includeTrends != 1:
newList = []
for phrase in phraseList:
if type(phrase) is types.TupleType:
phraseMethod = phrase[0]
if phraseMethod == self.trend_DayOrNight_phrase:
continue
newList.append(phrase)
phraseList = newList
# Add multipleElementTable
if self._includeMultipleElementTable_perPeriod:
phraseList.append(self.multipleElementTable_perPeriod_phrase)
return phraseList
def _humRecLocalEffects_list(self):
leArea1 = self.LocalEffectArea("Valleys", "")
leArea2 = self.LocalEffectArea("Ridges", " on the ridges")
return [self.LocalEffect([leArea1, leArea2], self._humRecTrigger, ", except ")]
def _humRecTrigger(self, tree, node, localEffect, leArea1Label, leArea2Label):
leNode = self._makeLEnode(tree, node, leArea1Label)
self.humidityRecovery_words(tree, leNode)
words1 = leNode.get("words")
leNode = self._makeLEnode(tree, node, leArea2Label)
self.humidityRecovery_words(tree, leNode)
words2 = leNode.get("words")
if words1 == words2:
return 0
else:
return 1
def _makeLEnode(self, tree, node, leArea):
leNode = tree.makeNode([],[],node.parent)
timeRange = node.getTimeRange()
if self._useRH:
elementName = "RH"
else:
elementName = "MaxRH"
stats = tree.stats.get(
elementName, timeRange, leArea, mergeMethod="Average")
statDict = {}
statDict[elementName] = stats
leNode.set("statDict", statDict)
leNode.set("timeRange", timeRange)
return leNode
# Need to add humidity recovery local effect areas
def getFirePeriod_intersectAreas(self):
tempList = []
windList = []
if self._tempLocalEffects:
tempList = [
("MinT", ["BelowElev", "AboveElev"]),
("MaxT", ["BelowElev", "AboveElev"]),
("MinRH", ["BelowElev", "AboveElev"]),
("MaxRH", ["BelowElev", "AboveElev"]),
("RH", ["BelowElev", "AboveElev"]),
("Ttrend", ["BelowElev", "AboveElev"]),
("RHtrend", ["BelowElev", "AboveElev"]),
]
if self._windLocalEffects:
windList = [
("Wind", ["Valleys", "Ridges"]),
("Wind20ft", ["Valleys", "Ridges"]),
("WindGust", ["Valleys", "Ridges"]),
]
humRecList = [
("RH", ["Valleys", "Ridges"]),
("MaxRH", ["Valleys", "Ridges"]),
]
return tempList + windList + humRecList
"""
localHazard = """
def allowedHazards(self):
allActions = ["NEW", "EXA", "EXB", "EXT", "CAN", "CON", "EXP"]
tropicalActions = ["NEW", "EXA", "EXB", "EXT", "UPG", "CAN", "CON",
"EXP"]
return [
('LocalHazard1', allActions, 'Convective'), # SEVERE THUNDERSTORM WATCH
]
"""
hazardHook = """
def hazard_hook(self, tree, node, hazardPhen, hazardSig, hazardAct,
hazardStart, hazardEnd):
hazTR = self.makeTimeRange(hazardStart, hazardEnd)
phenSig = hazardPhen + "." + hazardSig
print("hazTr, phenSig", hazTR, phenSig)
return "in the mountains"
"""
localHeadlinesTiming1 = """
def headlinesTiming(self, tree, node, key, timeRange, areaLabel, issuanceTime):
return "NONE", "FUZZY4"
"""
localHeadlinesTiming2 = """
def startPhraseMethod(self, issueTime, eventTime, timeZone, timeType):
return "NONE", None
def endPhraseMethod(self, issueTime, eventTime, timeZone, timeType):
return "FUZZY4", self.timingWordTableFUZZY4(issueTime, eventTime, timeZone, timeType)
def headlinesTiming(self, tree, node, key, timeRange, areaLabel, issuanceTime):
return (self.startPhraseMethod, self.endPhraseMethod)
"""
scripts = [
### FWF LAL
##########
#LAL of 1#
##########
{
"name":"FWF_LAL1",
"commentary": "LAL 1 from LAL1, PoP 0, NoWx",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "LAL.................1",".TONIGHT..."],
"createGrids": [
("Fcst", "LAL", "SCALAR", 0, 12, 1, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 12, 0, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12, "NoWx", "all"),
],
},
{
"name":"FWF_LAL2",
"commentary": "LAL 1 from LAL1, PoP 10, SChc RW-",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "LAL.................1",".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 1, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 12, 10, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12, "SChc:RW:-:<NoVis>:", "all"),
],
},
{
"name":"FWF_LAL3",
"commentary": "LAL 1 from LAL1, PoP 20, Iso RW-",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...",
"Isolated showers",
"LAL.................1",".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 1, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 12, 20, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12, "Iso:RW:-:<NoVis>:", "all"),
],
},
{
"name":"FWF_LAL4",
"commentary": "LAL 1 from LAL1, PoP 30, Chc RW-",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...",
("Chance of rain showers", "Chance of showers"),
"LAL.................1",".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 1, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 12, 30, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12, "Chc:RW:-:<NoVis>:", "all"),
],
},
##########
#LAL of 2#
##########
{
"name":"FWF_LAL5",
"commentary": "LAL 2 from LAL 2, PoP 20, SChc T SChc RW-",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Slight chance of showers and thunderstorms",
"LAL.................2",".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 2, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 12, 20, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12,
"SChc:T:<NoInten>:<NoVis>:^SChc:RW:-:<NoVis>:", "all"),
],
},
{
"name":"FWF_LAL6",
"commentary": "LAL 2 from LAL 2, PoP 20, Iso TRW-",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "LAL.................2",".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 2, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 12, 20, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12, "Iso:T:<NoInten>:<NoVis>:^Iso:RW:-:<NoVis>:", "all"),
],
},
##########
#LAL of 3#
##########
{
"name":"FWF_LAL7",
"commentary": "LAL 3 from LAL 3, PoP 20, SChc TRW-",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Slight chance of showers and thunderstorms",
"LAL.................3",".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 3, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 12, 20, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12,
"SChc:T:<NoInten>:<NoVis>:^SChc:RW:-:<NoVis>:", "all"),
],
},
{
"name":"FWF_LAL8",
"commentary": "LAL 3 from LAL 3, PoP 20, Iso TRW-",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Isolated showers and thunderstorms",
"LAL.................3", ".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 3, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 12, 20, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12, "Iso:T:<NoInten>:<NoVis>:^Iso:RW:-:<NoVis>:", "all"),
],
},
##########
#LAL of 4#
##########
{
"name":"FWF_LAL9",
"commentary": "LAL 4 from LAL 4, PoP 40, Chc TRW-",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Chance of showers and thunderstorms",
"LAL.................4",".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 4, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 12, 40, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12, "Chc:T:<NoInten>:<NoVis>:^Chc:RW:-:<NoVis>:", "all"),
],
},
{
"name":"FWF_LAL10",
"commentary": "LAL 4 from LAL 4, PoP 40, Sct TRW-",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Scattered showers and thunderstorms",
"LAL.................4",".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 4, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 12, 40, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12, "Sct:T:<NoInten>:<NoVis>:^Sct:RW:-:<NoVis>:", "all"),
],
},
##########
#LAL of 5#
##########
{
"name":"FWF_LAL11",
"commentary": "LAL 5 from LAL 5, PoP 60, Lkly TRW-",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Showers and thunderstorms likely",
"LAL.................5",".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 5, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 12, 60, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12,
"Lkly:T:<NoInten>:<NoVis>:^Lkly:RW:-:<NoVis>:", "all"),
],
},
{
"name":"FWF_LAL12",
"commentary": "LAL 5 from LAL 5, PoP 60, Num TRW-",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Numerous showers and thunderstorms",
"LAL.................5",".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 5, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 12, 60, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12, "Num:T:<NoInten>:<NoVis>:^Num:RW:-:<NoVis>:", "all"),
],
},
##########
#LAL of 6#
##########
{
"name":"FWF_LAL13",
"commentary": "LAL 6 from LAL 6, PoP 20, SChc T (Dry)",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Slight chance of dry thunderstorms",
"LAL.................6",".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 6, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 12, 20, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12, "SChc:T:<NoInten>:<NoVis>:Dry", "all"),
],
},
{
"name":"FWF_LAL14",
"commentary": "LAL 6 from LAL 6, PoP 20, Iso T (Dry)",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Isolated dry thunderstorms",
"LAL.................6",".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 6, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 12, 20, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12, "Iso:T:<NoInten>:<NoVis>:Dry", "all"),
],
},
#########################################################
# More Complex Cases - temporally, spatially and weather#
#########################################################
#----------------------
# changing through time
#----------------------
{
"name":"FWF_LAL15",
"commentary": "Changing LAL 1->2, PoP 0->20, NoWx->IsoTRW-",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Isolated showers and thunderstorms after 0900",
"LAL.................1 until 0900, then 2",".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 3, 1, "all", 1),
("Fcst", "LAL", "SCALAR", 3, 12, 2, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 3, 0, "all", 1),
("Fcst", "PoP", "SCALAR", 3, 12, 20, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 3, "NoWx", "all"),
("Fcst", "Wx", "WEATHER", 3, 12, "Iso:T:<NoInten>:<NoVis>:^Iso:RW:-:<NoVis>:", "all"),
],
},
{
"name":"FWF_LAL16",
"commentary": "Changing LAL 1->2, PoP 0->20, NoWx->SChcTRW-",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Slight chance of showers and thunderstorms after 0900",
"LAL.................1 until 0900, then 2",".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 3, 1, "all", 1),
("Fcst", "LAL", "SCALAR", 3, 12, 2, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 3, 0, "all", 1),
("Fcst", "PoP", "SCALAR", 3, 12, 20, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 3, "NoWx", "all"),
("Fcst", "Wx", "WEATHER", 3, 12,
"SChc:T:<NoInten>:<NoVis>:^SChc:RW:-:<NoVis>:", "all"),
],
},
{
"name":"FWF_LAL17",
"commentary": "Changing LAL 3->4, PoP 20->40, Iso TRW- -> Sct RW-",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Isolated showers and thunderstorms until 1100, then scattered showers and thunderstorms",
"LAL.................3 until 1100, then 4",".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 5, 3, "all", 1),
("Fcst", "LAL", "SCALAR", 5, 12, 4, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 5, 20, "all", 1),
("Fcst", "PoP", "SCALAR", 5, 12, 40, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 5,
"Iso:T:<NoInten>:<NoVis>:^Iso:RW:-:<NoVis>:", "all"),
("Fcst", "Wx", "WEATHER", 5, 12,
"Sct:T:<NoInten>:<NoVis>:^Sct:RW:-:<NoVis>:", "all"),
],
},
{
"name":"FWF_LAL18",
"commentary": "Changing LAL 5->3, PoP 70->20, Lkly TRW- -> SChc RW-",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...",
"Showers and thunderstorms likely until 1500, then slight chance of showers and thunderstorms",
"LAL.................5 until 1500, then 3",
".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 9, 5, "all", 1),
("Fcst", "LAL", "SCALAR", 9, 12, 3, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 9, 70, "all", 1),
("Fcst", "PoP", "SCALAR", 9, 12, 20, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 9, "Lkly:T:<NoInten>:<NoVis>:^Lkly:RW:-:<NoVis>:", "all"),
("Fcst", "Wx", "WEATHER", 9, 12,
"SChc:T:<NoInten>:<NoVis>:^SChc:RW:-:<NoVis>:", "all"),
],
},
{
"name":"FWF_LAL19",
"commentary": "Changing LAL 1->2->4, PoP 5->20->50, NoWx -> Iso TRW- -> Sct TRW-",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...",
"Isolated showers and thunderstorms after 0900 until 1300, then scattered showers and thunderstorms",
"LAL.................1 until 0900, then 2 until 1300, then 4",
".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 3, 1, "all", 1),
("Fcst", "LAL", "SCALAR", 3, 7, 2, "all", 1),
("Fcst", "LAL", "SCALAR", 7, 12, 4, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 3, 5, "all", 1),
("Fcst", "PoP", "SCALAR", 3, 7, 20, "all", 1),
("Fcst", "PoP", "SCALAR", 7, 12, 50, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 3, "NoWx", "all"),
("Fcst", "Wx", "WEATHER", 3, 7, "Iso:T:<NoInten>:<NoVis>:^Iso:RW:-:<NoVis>:", "all"),
("Fcst", "Wx", "WEATHER", 7, 12, "Sct:T:<NoInten>:<NoVis>:^Sct:RW:-:<NoVis>:", "all"),
],
},
#-------------------------
# Varous weather occurring
#-------------------------
{
"name":"FWF_LAL20",
"commentary": "LAL4, PoP 60, Num RW- Sct T",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Numerous showers and scattered thunderstorms",
"LAL.................4",".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 4, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 12, 60, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12, "Num:RW:-:<NoVis>:^Sct:T:<NoInten>:<NoVis>:", "all"),
],
},
{
"name":"FWF_LAL21",
"commentary": "LAL3, PoP 30, Sct RW- Iso T",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Scattered showers and isolated thunderstorms",
"LAL.................3", ".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 3, "all", 1),
("Fcst", "PoP", "SCALAR", 0, 12, 30, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12, "Sct:RW:-:<NoVis>:^Iso:T:<NoInten>:<NoVis>:", "all"),
],
},
{
"name":"FWF_LAL22",
"commentary": "LAL with local effects (2,4)",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Chance of showers and thunderstorms",
"LAL.................4", ".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 2, ["BelowElev"], 1),
("Fcst", "LAL", "SCALAR", 0, 12, 4, ["AboveElev"], 1),
("Fcst", "Wx", "WEATHER", 0, 12, "Chc:RW:-:<NoVis>:^Chc:T:<NoInten>:<NoVis>:", "all"),
],
},
{
"name":"FWF_LAL23",
"commentary": "LAL with local effects (2,2)",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Chance of showers and thunderstorms",
"LAL.................2", ".TONIGHT..."],
"createGrids": [
("Fcst", "LAL", "SCALAR", 0, 12, 2, ["BelowElev"], 1),
("Fcst", "LAL", "SCALAR", 0, 12, 2, ["AboveElev"], 1),
("Fcst", "Wx", "WEATHER", 0, 12, "Chc:RW:-:<NoVis>:^Chc:T:<NoInten>:<NoVis>:", "all"),
],
},
{
"name":"FWF_LAL24",
"commentary": "LAL with local effects (2,2), NoWx, results LAL1",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "LAL.................1", ".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 2, ["BelowElev"], 1),
("Fcst", "LAL", "SCALAR", 0, 12, 2, ["AboveElev"], 1),
("Fcst", "Wx", "WEATHER", 0, 12, "NoWx", "all"),
],
},
{
"name":"FWF_LAL25",
"commentary": "LAL 1->4, NoWx -> Chc T",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...","Chance of thunderstorms after 0900",
"LAL.................1 until 0900, then 4", ".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 3, 1, "all", 1),
("Fcst", "LAL", "SCALAR", 3, 12, 4, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 3, "NoWx", "all"),
("Fcst", "Wx", "WEATHER", 3, 12, "Chc:T:<NoInten>:<NoVis>:", "all"),
],
},
{
"name":"FWF_LAL26",
"productType":"FWF",
"commentary": "Iso T does not get into wording",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Scattered showers",
"LAL.................1", ".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 1, ["area3"], 1),
("Fcst", "LAL", "SCALAR", 0, 12, 2, ["area3_pt"], 1),
("Fcst", "PoP", "SCALAR", 0, 12, 30, ["area3"], 1),
("Fcst", "PoP", "SCALAR", 0, 12, 30, ["area3_pt"], 1),
("Fcst", "Wx", "WEATHER", 0, 12, "Sct:RW:-:<NoVis>:", ["area3"]),
("Fcst", "Wx", "WEATHER", 0, 12, "Iso:T:<NoInten>:<NoVis>:", ["area3_pt"]),
],
},
{
"name":"FWF_LAL27",
"productType":"FWF",
"commentary": "Matching Iso T, Takes Max LAL = 2 even tho for small area",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Scattered showers and isolated thunderstorms",
"LAL.................2", ".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 1, ["area3"], 1),
("Fcst", "LAL", "SCALAR", 0, 12, 2, ["area3_pt"], 1),
("Fcst", "PoP", "SCALAR", 0, 12, 30, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12,
"Sct:RW:-:<NoVis>:^Iso:T:<NoInten>:<NoVis>:", ["area3"]),
],
},
# Matching Iso T, can't find 3.
# If the resultValue value (4) is greater than the binHighVal (3), use binHighVal
{
"name":"FWF_LAL28",
"productType":"FWF",
"commentary": "Matching Iso T, can't find 3. If the resultValue value (4) is greater than the binHighVal (3), use binHighVal",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Scattered showers and isolated thunderstorms",
"LAL.................3", ".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 1, ["area3"], 1),
("Fcst", "LAL", "SCALAR", 0, 12, 4, ["area3_pt"], 1),
("Fcst", "PoP", "SCALAR", 0, 12, 30, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12,
"Sct:RW:-:<NoVis>:^Iso:T:<NoInten>:<NoVis>:", ["area3"]),
],
},
{
"name":"FWF_LAL29",
"productType":"FWF",
"commentary": "Matching Iso T, LAL = 2",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Scattered showers and isolated thunderstorms",
"LAL.................3", ".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 3, ["area3"], 1),
("Fcst", "LAL", "SCALAR", 0, 12, 4, ["area3_pt"], 1),
("Fcst", "PoP", "SCALAR", 0, 12, 30, "all", 1),
("Fcst", "Wx", "WEATHER", 0, 12,
"Sct:RW:-:<NoVis>:^Iso:T:<NoInten>:<NoVis>:", ["area3"]),
],
},
{
"name":"FWF_LAL30",
"productType":"FWF",
"commentary": "LAL (4,5), PoP (50,30), (Sct TRW-,Num TRW-)",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Scattered showers and thunderstorms",
"LAL.................4", ".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 4, ["area3"], 1),
("Fcst", "LAL", "SCALAR", 0, 12, 5, ["area3_pt"], 1),
("Fcst", "PoP", "SCALAR", 0, 12, 50, ["area3"], 1),
("Fcst", "PoP", "SCALAR", 0, 12, 30, ["area3_pt"], 1),
("Fcst", "Wx", "WEATHER", 0, 12,
"Sct:T:<NoInten>:<NoVis>:^Sct:RW:-:<NoVis>:", ["area3"]),
("Fcst", "Wx", "WEATHER", 0, 12,
"Num:T:<NoInten>:<NoVis>:^Num:RW:-:<NoVis>:", ["area3_pt"]),
],
},
{
"name":"FWF_LAL31",
"productType":"FWF",
"commentary": "LAL (4,6), PoP (50,20), (Chc TRW-,Chc TRW- Dry)",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": [".TODAY...", "Chance of thunderstorms",
"LAL.................4", ".TONIGHT..."],
"createGrids" : [
("Fcst", "LAL", "SCALAR", 0, 12, 4, ["area3"], 1),
("Fcst", "LAL", "SCALAR", 0, 12, 6, ["area3_pt"], 1),
("Fcst", "PoP", "SCALAR", 0, 12, 50, ["area3"], 1),
("Fcst", "PoP", "SCALAR", 0, 12, 20, ["area3_pt"], 1),
("Fcst", "Wx", "WEATHER", 0, 12,"Chc:T:<NoInten>:<NoVis>:", ["area3"]),
("Fcst", "Wx", "WEATHER", 0, 12,"Chc:T:<NoInten>:<NoVis>:Dry", ["area3_pt"]),
],
},
#### editAreaSuffix
{
"name":"EditAreaSuffix1",
"productType":"ZFP",
"commentary": "PoP 0%, Sky (0,75), (WS.W,None)",
"comboFlag": 1,
# checkStrings
"checkStrings": [
"WINTER STORM WARNING",
".TODAY...", "Mostly cloudy",
".TONIGHT...",
],
"orderStrings": 1,
# createGrids
"createGrids" : [
("Fcst", "PoP", "SCALAR", 0, 12, 0, "all"),
("Fcst", "Sky", "SCALAR", 0, 12, 0, ["area3"]),
("Fcst", "Sky", "SCALAR", 0, 12, 75, ["area3_pt"]),
("Fcst", "Hazards", "DISCRETE", 0, 12, "WS.W", ["area3"]),
("Fcst", "Hazards", "DISCRETE", 0, 12, "<None>", ["area3_pt"]),
],
"fileChanges": [("ZFP_<site>_Definition", "TextUtility", "add",
"\nDefinition['editAreaSuffix'] = '_pt'\n", "delete")],
"gridsStartTime": "6am Local",
"drtTime": "4am Local",
},
{ # Tests for TK4577
"name":"EditAreaSuffix2",
"productType":"ZFP",
"commentary": "Set up editAreaSuffix via commandline (tk4577)",
"cmdLineVars" :"{('Product Issuance', 'productIssuance'): 'Morning', ('Issued By', 'issuedBy'): None, 'editAreaSuffix':'_pt'}",
"comboFlag": 1,
# checkStrings
"checkStrings": [
"WINTER STORM WARNING",
".TODAY...", "Mostly cloudy",
".TONIGHT...",
],
"orderStrings": 1,
# createGrids
"createGrids" : [
("Fcst", "PoP", "SCALAR", 0, 12, 0, "all"),
("Fcst", "Sky", "SCALAR", 0, 12, 0, ["area3"]),
("Fcst", "Sky", "SCALAR", 0, 12, 75, ["area3_pt"]),
("Fcst", "Hazards", "DISCRETE", 0, 12, "WS.W", ["area3"]),
("Fcst", "Hazards", "DISCRETE", 0, 12, "<None>", ["area3_pt"]),
],
"gridsStartTime": "6am Local",
"drtTime": "4am Local",
},
{ # Tests for TK4577
"name":"EditAreaSuffix3",
"productType":"ZFP",
"commentary": "Set up editAreaSuffix via commandline (tk4577)",
"cmdLineVars" :"{('Product Issuance', 'productIssuance'): 'Morning', ('Issued By', 'issuedBy'): None, ('Enter Edit Area Suffix if desired:', 'editAreaSuffix'):'_pt'}",
"comboFlag": 1,
# checkStrings
"checkStrings": [
"WINTER STORM WARNING",
".TODAY...", "Mostly cloudy",
".TONIGHT...",
],
"orderStrings": 1,
# createGrids
"createGrids" : [
("Fcst", "PoP", "SCALAR", 0, 12, 0, "all"),
("Fcst", "Sky", "SCALAR", 0, 12, 0, ["area3"]),
("Fcst", "Sky", "SCALAR", 0, 12, 75, ["area3_pt"]),
("Fcst", "Hazards", "DISCRETE", 0, 12, "WS.W", ["area3"]),
("Fcst", "Hazards", "DISCRETE", 0, 12, "<None>", ["area3_pt"]),
],
"gridsStartTime": "6am Local",
"drtTime": "4am Local",
},
# TK 4674
{
"name":"EditAreaSuffix4",
"productType":"ZFP",
"commentary": """
Edit Areas Suffix with Local Hazard using hazard_hook (tk4674)
""",
"comboFlag": 1,
"checkStrings": [
"...LOCAL HAZARD IN EFFECT THROUGH THIS AFTERNOON IN THE MOUNTAINS...",
".TODAY...", "Mostly cloudy",
".TONIGHT...",
],
"orderStrings": 1,
"createGrids" : [
("Fcst", "PoP", "SCALAR", 0, 12, 0, "all"),
("Fcst", "Sky", "SCALAR", 0, 12, 0, ["area3"]),
("Fcst", "Sky", "SCALAR", 0, 12, 75, ["area3_pt"]),
("Fcst", "Hazards", "DISCRETE", 0, 12, "LocalHazard1", ["area3"]),
("Fcst", "Hazards", "DISCRETE", 0, 12, "<None>", ["area3_pt"]),
],
"fileChanges": [
("ZFP_<site>_Definition", "TextUtility", "add",
"\nDefinition['editAreaSuffix'] = '_pt'\n", "delete"),
("ZFP_<site>_Overrides", "TextUtility", "add", localHazard, "undo"),
("ZFP_<site>_Overrides", "TextUtility", "add", hazardHook, "undo"),
],
"gridsStartTime": "6am Local",
"drtTime": "4am Local",
},
{
"name":"EditAreaSuffix5",
"productType":"ZFP",
"commentary": """
Edit Areas Suffix with Local Hazard calling "getLocalHeadlinesTiming"
instead of using hard-coded phrasing for local headlines
""",
"comboFlag": 1,
"checkStrings": [
"...LOCAL HAZARD IN EFFECT THROUGH THIS AFTERNOON...",
".TODAY...", "Mostly cloudy",
".TONIGHT...",
],
"orderStrings": 1,
"createGrids" : [
("Fcst", "PoP", "SCALAR", 0, 12, 0, "all"),
("Fcst", "Sky", "SCALAR", 0, 12, 0, ["area3"]),
("Fcst", "Sky", "SCALAR", 0, 12, 75, ["area3_pt"]),
("Fcst", "Hazards", "DISCRETE", 0, 12, "LocalHazard1", ["area3"]),
("Fcst", "Hazards", "DISCRETE", 0, 12, "<None>", ["area3_pt"]),
],
"fileChanges": [
("ZFP_<site>_Definition", "TextUtility", "add",
"\nDefinition['editAreaSuffix'] = '_pt'\n", "delete"),
("ZFP_<site>_Overrides", "TextUtility", "add", localHazard, "undo"),
("ZFP_<site>_Overrides", "TextUtility", "add", localHeadlinesTiming1, "undo"),
],
"gridsStartTime": "6am Local",
"drtTime": "4am Local",
},
{
"name":"EditAreaSuffix6",
"productType":"ZFP",
"commentary": """
Edit Areas Suffix with Local Hazard using methods for headinesTiming
""",
"comboFlag": 1,
"checkStrings": [
"...LOCAL HAZARD IN EFFECT THROUGH THIS AFTERNOON...",
".TODAY...", "Mostly cloudy",
".TONIGHT...",
],
"orderStrings": 1,
"createGrids" : [
("Fcst", "PoP", "SCALAR", 0, 12, 0, "all"),
("Fcst", "Sky", "SCALAR", 0, 12, 0, ["area3"]),
("Fcst", "Sky", "SCALAR", 0, 12, 75, ["area3_pt"]),
("Fcst", "Hazards", "DISCRETE", 0, 12, "<None>", ["area3_pt"]),
("Fcst", "Hazards", "DISCRETE", 0, 12, "LocalHazard1", ["area3"]),
],
"fileChanges": [
("ZFP_<site>_Definition", "TextUtility", "add",
"\nDefinition['editAreaSuffix'] = '_pt'\n", "delete"),
("ZFP_<site>_Overrides", "TextUtility", "add", localHazard, "undo"),
("ZFP_<site>_Overrides", "TextUtility", "add", localHeadlinesTiming2, "undo"),
],
"gridsStartTime": "6am Local",
"drtTime": "4am Local",
},
# Allow lower case TK 4669
{
"name":"LowerCaseHeadlines",
"productType":"ZFP",
"commentary": """
Lower case with Local Hazard
""",
"comboFlag": 1,
# checkStrings
"checkStrings": [
"...LOCAL HAZARD IN EFFECT THROUGH THIS AFTERNOON...",
".TODAY...", "Mostly cloudy. Patchy dense fog.",
"Ice accumulation around 2 inches.",
# DR_18363 "Highs in the upper 70s.",
"Near steady temperature in the mid 50s.",
".TONIGHT...", "Very windy.", "Widespread thunderstorms.",
# DR_18363 "Lows around 60.",
"Near steady temperature in the mid 40s.",
],
"orderStrings": 1,
"createGrids" : CreateGrids.Public_createGrids + [
("Fcst", "PoP", "SCALAR", 0, 12, 0, "all"),
("Fcst", "Sky", "SCALAR", 0, 12, 0, ["area3"]),
("Fcst", "Sky", "SCALAR", 0, 12, 75, ["area3_pt"]),
("Fcst", "Hazards", "DISCRETE", 0, 12, "LocalHazard1", ["area3"]),
("Fcst", "Hazards", "DISCRETE", 0, 12, "<None>", ["area3_pt"]),
],
"fileChanges": [
("ZFP_<site>_Definition", "TextUtility", "add",
"\nDefinition['editAreaSuffix'] = '_pt'\n", "delete"),
("ZFP_<site>_Definition", "TextUtility", "add",
"\nDefinition['lowerCase'] = 1\n", "undo"),
("ZFP_<site>_Overrides", "TextUtility", "add", localHazard, "undo"),
("ZFP_<site>_Overrides", "TextUtility", "add", localHeadlinesTiming1, "undo"),
],
"gridsStartTime": "6am Local",
"drtTime": "4am Local",
},
{
"name":"LowerCaseHazards",
"productType":"ZFP",
"commentary": """
Lower Case with a Hazard
""",
"comboFlag": 1,
# checkStrings
"checkStrings": [
"...WINTER STORM WARNING IN EFFECT UNTIL 6 PM EST THIS EVENING...",
".TODAY...", "Mostly cloudy. Patchy dense fog.",
"Ice accumulation around 2 inches.",
# "Highs in the upper 70s.",
"Near steady temperature in the mid 50s.",
".TONIGHT...", "Very windy.", "Widespread thunderstorms.",
#"Lows around 60.",
"Near steady temperature in the mid 40s.",
],
"orderStrings": 1,
# createGrids
"createGrids" : CreateGrids.Public_createGrids + [
("Fcst", "PoP", "SCALAR", 0, 12, 0, "all"),
("Fcst", "Sky", "SCALAR", 0, 12, 0, "all"),
("Fcst", "Sky", "SCALAR", 0, 12, 75, "all"),
("Fcst", "Hazards", "DISCRETE", 0, 12, "WS.W", "all"),
],
"fileChanges": [
("ZFP_<site>_Definition", "TextUtility", "add",
"\nDefinition['lowerCase'] = 1\n", "delete"),
],
"gridsStartTime": "6am Local",
"drtTime": "4am Local",
},
## Humidity Recovery Local Effect
{
"name":"FWF_HumRecLE1",
"commentary": "Testing Humidity Recovery Local Effect: No Local Effect",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": ["Humidity recovery...Poor"],
"createGrids": [
("Fcst", "MaxRH", "SCALAR", "MaxRHBegin-24", "MaxRHEnd-24", 10, ["Valleys"], 1),
("Fcst", "MaxRH", "SCALAR", "MaxRHBegin-24", "MaxRHEnd-24", 10, ["Ridges"], 1),
("Fcst", "MaxRH", "SCA16LAR", "MaxRHBegin", "MaxRHEnd", 20, ["Valleys"], 1),
("Fcst", "MaxRH", "SCALAR", "MaxRHBegin", "MaxRHEnd", 20, ["Ridges"], 1),
],
"fileChanges": [("FWF_<site>_Overrides", "TextUtility", "add", humRec, "delete")],
},
## Humidity Recovery Local Effect
{
"name":"FWF_HumRecLE2",
"commentary": "Testing Humidity Recovery Local Effect: Local Effect",
"productType":"FWF",
"comboFlag": 1,
"orderStrings": 1,
"checkStrings": ["Humidity recovery...Poor, except Excellent on the ridges."],
"createGrids": [
("Fcst", "MaxRH", "SCALAR", "MaxRHBegin-24", "MaxRHEnd-24", 10, ["Valleys"], 1),
("Fcst", "MaxRH", "SCALAR", "MaxRHBegin-24", "MaxRHEnd-24", 10, ["Ridges"], 1),
("Fcst", "MaxRH", "SCALAR", "MaxRHBegin", "MaxRHEnd", 10, ["Valleys"], 1),
("Fcst", "MaxRH", "SCALAR", "MaxRHBegin", "MaxRHEnd", 75, ["Ridges"], 1),
],
"fileChanges": [("FWF_<site>_Overrides", "TextUtility", "add", humRec, "delete")],
},
{
"name":"General_CleanUp",
"commentary": "Clean out grids",
"productType": None,
"deleteGrids": TestScript.general_deleteGrids,
"gridsStartTime": "6am Local",
},
]
def testScript(self, dataMgr):
defaults = {
"cmdLineVars" :"{('Product Issuance', 'productIssuance'): 'Morning', ('Issued By', 'issuedBy'): None}",
}
# 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 # Should this be time_4am?
return TestScript.generalTestScript(self, dataMgr, scripts, defaults)