0 |
# ---------------------------------------------------------------------------- |
1 |
# This software is in the public domain, furnished "as is", without technical |
2 |
# support, and with no warranty, express or implied, as to its usefulness for |
3 |
# any purpose. |
4 |
# |
5 |
# RoutineLevel5_3_TestScript |
6 |
# Author: |
7 |
# ---------------------------------------------------------------------------- |
8 |
|
9 |
# First run setupTextEA |
10 |
|
11 |
import TestScript |
12 |
|
13 |
# For FWF_InfiniteLoops |
14 |
checkResolution = """ |
15 |
|
16 |
def checkResolution(self, tree, node): |
17 |
# Check to see if there are too many sub-phrases and we need to re-do the |
18 |
# phrase in lower resolution. The limit is determined by "subPhrase_limit". |
19 |
# This currently assumes we have a 3 or greater resolution and want to go to |
20 |
# a 6-hour resolution. |
21 |
|
22 |
# See if ready to process |
23 |
if not self.phrase_trigger(tree, node): |
24 |
return |
25 |
|
26 |
# Count the number of non-empty phrases |
27 |
#print "In check resolution", node |
28 |
count = 0 |
29 |
for subPhrase in node.get("childList"): |
30 |
words = subPhrase.get("words") |
31 |
if words == "": |
32 |
continue |
33 |
#print "words", subPhrase, words |
34 |
count += 1 |
35 |
if count > self.subPhrase_limit(tree, node): |
36 |
#print "count", count |
37 |
# Create a new node in it's place with a new |
38 |
# resolution set |
39 |
newPhrase = tree.addPhraseDef(node, self.weather_phrase) |
40 |
## newPhrase.set("disabledSubkeys", node.get("disabledSubkeys")) |
41 |
curResolution = node.get("resolution") |
42 |
## if curResolution is not None: |
43 |
## # If we have already re-set the resolution and we are still over the |
44 |
## # sub-phrase limit, we'll have to decrease the resolution some more |
45 |
## # to try and reduce the number of sub-phrases. |
46 |
## # This is necessary because of the way preProcessWx works: |
47 |
## # For example, even if we have only 2 time periods sampled, |
48 |
## # they can result in 3 or more sub-phrases depending on the |
49 |
## # complexity of weather. |
50 |
## # Example: Hours 1-6 Chc RW Chc L |
51 |
## # Hours 7-12 Chc SW Chc L |
52 |
## # Results in 3 sub-phrases |
53 |
## # Hours 1-12 Chc L |
54 |
## # Hours 1-6 Chc RW |
55 |
## # Hours 7-12 Chc SW |
56 |
## newResolution = curResolution * 2 |
57 |
## else: |
58 |
## newResolution = 6 |
59 |
newResolution = 6 |
60 |
newPhrase.set("resolution", newResolution) |
61 |
#print "making newPhrase", newPhrase |
62 |
#print "parent should be", node.parent |
63 |
#tree.printNode(newPhrase) |
64 |
# Remove this node |
65 |
node.remove() |
66 |
return self.DONE() |
67 |
|
68 |
|
69 |
""" |
70 |
|
71 |
subPhrase_limit = """ |
72 |
|
73 |
def subPhrase_limit(self, tree, node): |
74 |
return 2 |
75 |
|
76 |
""" |
77 |
|
78 |
checkResolution2 = """ |
79 |
|
80 |
def checkResolution(self, tree, node): |
81 |
# Check to see if there are too many sub-phrases and we need to re-do the |
82 |
# phrase in lower resolution. The limit is determined by "subPhrase_limit". |
83 |
# This currently assumes we have a 3 or greater resolution and want to go to |
84 |
# a 6-hour resolution. |
85 |
|
86 |
# See if ready to process |
87 |
if not self.phrase_trigger(tree, node): |
88 |
return |
89 |
|
90 |
# Count the number of non-empty phrases |
91 |
#print "In check resolution", node |
92 |
count = 0 |
93 |
for subPhrase in node.get("childList"): |
94 |
words = subPhrase.get("words") |
95 |
if words == "": |
96 |
continue |
97 |
#print "words", subPhrase, words |
98 |
count += 1 |
99 |
if count > self.subPhrase_limit(tree, node): |
100 |
#print "count", count |
101 |
# Create a new node in it's place with a new |
102 |
# resolution set |
103 |
exec "newPhraseDef = self." + node.getAncestor('name') |
104 |
newPhrase = tree.addPhraseDef(node, self.skyPopWx_phrase) |
105 |
newPhrase.set("disabledSubkeys", node.get("disabledSubkeys")) |
106 |
curResolution = node.get("resolution") |
107 |
if curResolution is not None: |
108 |
# If we have already re-set the resolution and we are still over the |
109 |
# sub-phrase limit, we'll have to decrease the resolution some more |
110 |
# to try and reduce the number of sub-phrases. |
111 |
# This is necessary because of the way preProcessWx works: |
112 |
# For example, even if we have only 2 time periods sampled, |
113 |
# they can result in 3 or more sub-phrases depending on the |
114 |
# complexity of weather. |
115 |
# Example: Hours 1-6 Chc RW Chc L |
116 |
# Hours 7-12 Chc SW Chc L |
117 |
# Results in 3 sub-phrases |
118 |
# Hours 1-12 Chc L |
119 |
# Hours 1-6 Chc RW |
120 |
# Hours 7-12 Chc SW |
121 |
newResolution = curResolution * 2 |
122 |
else: |
123 |
newResolution = 6 |
124 |
newPhrase.set("resolution", newResolution) |
125 |
#print "making newPhrase", newPhrase |
126 |
#print "parent should be", node.parent |
127 |
#tree.printNode(newPhrase) |
128 |
# Remove this node |
129 |
node.remove() |
130 |
return self.DONE() |
131 |
|
132 |
""" |
133 |
|
134 |
period1 = """ |
135 |
|
136 |
|
137 |
def Period_1(self): |
138 |
component = { |
139 |
"type": "component", |
140 |
"methodList": [ |
141 |
self.orderPhrases, |
142 |
self.assemblePhrases, |
143 |
self.wordWrap, |
144 |
], |
145 |
"analysisList": [ |
146 |
#("MinT", self.avg), |
147 |
#("MaxT", self.avg), |
148 |
("MinT", self.stdDevMinMax), |
149 |
("MaxT", self.stdDevMinMax), |
150 |
("T", self.hourlyTemp), |
151 |
("T", self.minMax), |
152 |
("Sky", self.median, [3]), |
153 |
("PoP", self._PoP_analysisMethod("Period_1"), [3]), |
154 |
("PoP", self.binnedPercent, [3]), |
155 |
("SnowAmt", self.accumMinMax), |
156 |
("StormTotalSnow", self.accumMinMax), |
157 |
("IceAccum", self.accumMinMax), |
158 |
("SnowLevel", self.avg), |
159 |
("Wind", self.vectorMedianRange, [6]), |
160 |
("Wind", self.vectorMinMax, [6]), |
161 |
("WindGust", self.maximum, [6]), |
162 |
("Wx", self.rankedWx, [0]), |
163 |
("WindChill", self.minMax, [6]), |
164 |
("HeatIndex", self.minMax, [6]), |
165 |
], |
166 |
"phraseList":[ |
167 |
self.sky_phrase, |
168 |
self.skyPopWx_phrase, |
169 |
self.wind_summary, |
170 |
self.reportTrends, |
171 |
self.weather_phrase, |
172 |
self.severeWeather_phrase, |
173 |
self.heavyPrecip_phrase, |
174 |
self.visibility_phrase, |
175 |
self.snow_phrase, |
176 |
self.total_snow_phrase, |
177 |
self.snowLevel_phrase, |
178 |
self.iceAccumulation_phrase, |
179 |
self.highs_phrase, |
180 |
self.lows_phrase, |
181 |
#self.highs_range_phrase, |
182 |
#self.lows_range_phrase, |
183 |
#self.steady_temp_trends, |
184 |
self.temp_trends, |
185 |
self.wind_withGusts_phrase, |
186 |
self.lake_wind_phrase, |
187 |
self.popMax_phrase, |
188 |
self.windChill_phrase, |
189 |
# Alternative |
190 |
#self.windBased_windChill_phrase, |
191 |
self.heatIndex_phrase, |
192 |
], |
193 |
## "additionalAreas": [ |
194 |
## # Areas listed by weather element that will be |
195 |
## # sampled and analysed. |
196 |
## # E.g. used for reporting population centers for temperatures. |
197 |
## ("MaxT", ["City1", "City2"]), |
198 |
## ("MinT", ["City1", "City2"]), |
199 |
## ], |
200 |
## "intersectAreas": [ |
201 |
## # Areas listed by weather element that will be |
202 |
## # intersected with the current area then |
203 |
## # sampled and analysed. |
204 |
## # E.g. used in local effects methods. |
205 |
## ("MaxT", ["Mountains"]), |
206 |
## ("MinT", ["Valleys"]), |
207 |
## ], |
208 |
} |
209 |
if self._arealSkyAnalysis: |
210 |
component["analysisList"].append(("Sky", self.binnedPercent, [3])) |
211 |
if self._useStormTotalSnow: |
212 |
phraseList = component["phraseList"] |
213 |
index = phraseList.index(self.total_snow_phrase) |
214 |
phraseList[index] = self.stormTotalSnow_phrase |
215 |
component["phraseList"] = phraseList |
216 |
return component |
217 |
|
218 |
""" |
219 |
|
220 |
|
221 |
### For areal sky |
222 |
|
223 |
arealSkyDef1 = """#Definition["arealSkyAnalysis"] = 1""" |
224 |
arealSkyDef2 = """Definition["arealSkyAnalysis"] = 1""" |
225 |
|
226 |
arealSky = """ |
227 |
|
228 |
def areal_sky_flag(self, tree, node): |
229 |
return 1 |
230 |
""" |
231 |
|
232 |
### For diurnal sky |
233 |
|
234 |
periodCombine1 = """#Definition["periodCombining"] = 1""" |
235 |
periodCombine2 = """Definition["periodCombining"] = 1""" |
236 |
|
237 |
diurnalSky = """ |
238 |
|
239 |
def periodCombining_elementList(self, tree, node): |
240 |
# Weather Elements to determine whether to combine periods |
241 |
#return ["Sky", "Wind", "Wx", "PoP", "MaxT", "MinT"] |
242 |
# Marine |
243 |
#return ["WaveHeight", "Wind", "Wx"] |
244 |
# Diurnal Sky Wx pattern |
245 |
return ["DiurnalSkyWx"] |
246 |
|
247 |
|
248 |
""" |
249 |
|
250 |
pcElementList = """ |
251 |
|
252 |
def periodCombining_elementList(self, tree, node): |
253 |
# Weather Elements to determine whether to combine periods |
254 |
#return ["Sky", "Wind", "Wx", "PoP", "MaxT", "MinT"] |
255 |
# Marine |
256 |
#return ["WaveHeight", "Wind", "Wx"] |
257 |
# Diurnal Sky Wx pattern |
258 |
#return ["DiurnalSkyWx"] |
259 |
return ["Wx", "PoP"] |
260 |
|
261 |
""" |
262 |
|
263 |
increaseSky1 = """ |
264 |
|
265 |
def reportIncreasingDecreasingSky_flag(self, tree, node): |
266 |
# If 1, AND the difference is greater than the increasingDecreasing_threshold |
267 |
# will use "increasing clouds", "decreasing clouds" |
268 |
# wording instead of "mostly cloudy becoming sunny" |
269 |
return 1 |
270 |
|
271 |
""" |
272 |
|
273 |
increaseSky2 = """ |
274 |
|
275 |
def reportIncreasingDecreasingSky_flag(self, tree, node): |
276 |
# If 1, will use "increasing clouds", "decreasing clouds" |
277 |
# wording instead of "mostly cloudy becoming sunny" |
278 |
#return 0 |
279 |
#return 1 |
280 |
|
281 |
# Use the following code to avoid redundancy e.g. |
282 |
# SUNDAY...Increasing clouds. |
283 |
# SUNDAY NIGHT...Increasing clouds. |
284 |
# |
285 |
#If the previous period had increasing or decreasing wording, return 0 |
286 |
# Otherwise, return 1 |
287 |
|
288 |
# Check to see if previous period had increasing or decreasing wording |
289 |
component = node.getComponent() |
290 |
prevComp = component.getPrev() |
291 |
if prevComp is not None: |
292 |
# Look at the sky_phrase |
293 |
skyWords = self.findWords( |
294 |
tree, prevComp, "Sky", node.getAreaLabel(), |
295 |
phraseList=[node.getAncestor('name')], phraseLevel=1) |
296 |
if skyWords is not None: |
297 |
if skyWords.find("increasing") >= 0 or \ |
298 |
skyWords.find("decreasing") >= 0: |
299 |
return 0 |
300 |
return 1 |
301 |
return 1 |
302 |
""" |
303 |
|
304 |
### For headlinesTiming |
305 |
|
306 |
headlinesTiming = """ |
307 |
|
308 |
def allowedHeadlines(self): |
309 |
allActions = [] |
310 |
return [ |
311 |
('LocalHazard1', allActions, 'Tropical'), |
312 |
] |
313 |
|
314 |
def _preProcessArea(self, fcst, editArea, areaLabel, argDict): |
315 |
# This is the header for an edit area combination |
316 |
areaHeader = self.makeAreaHeader( |
317 |
argDict, areaLabel, self._issueTime, self._expireTime, |
318 |
self._areaDictionary, self._defaultEditAreas) |
319 |
fcst = fcst + areaHeader |
320 |
|
321 |
# get the hazards text |
322 |
self._hazards = argDict['hazards'] |
323 |
self._combinations = argDict["combinations"] |
324 |
|
325 |
headlines = self.generateProduct("Hazards", argDict, area = editArea, |
326 |
areaLabel=areaLabel, |
327 |
timeRange = self._timeRange) |
328 |
|
329 |
headlines_local = self.generateProduct("Headlines", argDict, area = editArea, |
330 |
areaLabel=areaLabel, |
331 |
timeRange = self._timeRange) |
332 |
|
333 |
fcst = fcst + headlines + headlines_local |
334 |
|
335 |
return fcst |
336 |
|
337 |
""" |
338 |
|
339 |
headlinesTiming1 = """ |
340 |
|
341 |
def headlinesTiming(self, tree, node, key, timeRange, areaLabel, issuanceTime): |
342 |
return "DAY_NIGHT_ONLY", "DAY_NIGHT_ONLY", 0 |
343 |
|
344 |
""" |
345 |
|
346 |
headlinesTiming2 = """ |
347 |
|
348 |
def headlinesTiming(self, tree, node, key, timeRange, areaLabel, issuanceTime): |
349 |
return "FUZZY", "FUZZY", 3 |
350 |
|
351 |
""" |
352 |
headlinesTiming3 = """ |
353 |
|
354 |
def headlinesTiming(self, tree, node, key, timeRange, areaLabel, issuanceTime): |
355 |
return "EXPLICIT", "FUZZY", 3 |
356 |
|
357 |
""" |
358 |
|
359 |
headlinesTiming4 = """ |
360 |
|
361 |
def headlinesTiming(self, tree, node, key, timeRange, areaLabel, issuanceTime): |
362 |
return "EXPLICIT", "EXPLICIT", 3 |
363 |
|
364 |
""" |
365 |
localHeadlines1 = """ |
366 |
|
367 |
def allowedHazards(self): |
368 |
allActions = ["NEW", "EXA", "EXB", "EXT", "UPG", "CAN", "CON", "EXP"] |
369 |
return [ |
370 |
('WS.W', allActions, 'WinterWx'), # WINTER STORM WARNING |
371 |
('LocalHazard1', allActions, 'Misc'), |
372 |
] |
373 |
|
374 |
""" |
375 |
|
376 |
hoursSChc1 = """#Definition["hoursSChcEnds"] = 24""" |
377 |
hoursSChc2 = """Definition["hoursSChcEnds"] = 84""" |
378 |
|
379 |
null_distinct = """ |
380 |
|
381 |
def null_alwaysDistinct_flag_dict(self, tree, node): |
382 |
# If 1, null values will always be considered distinct from non-null values |
383 |
# when combining subphrases. Thus, with a null value of 5, |
384 |
# you may end up with phrases such as: |
385 |
# Winds less than 5 mph becoming east 5 mph. |
386 |
# If set to 0, the determination will be made based on the scalar or |
387 |
# vector difference as with non-null values. |
388 |
# (See scalar_difference_nlValue_dict and vector_mag_difference_nlValue_dict) |
389 |
return { |
390 |
"otherwise": 1, |
391 |
"Wind": 0, |
392 |
} |
393 |
""" |
394 |
|
395 |
tempCov = """ |
396 |
|
397 |
def temporalCoverage_dict(self, parmHisto, timeRange, componentName): |
398 |
# This is temporalCoverage percentage by weather element |
399 |
# Used by temporalCoverage_flag |
400 |
return { |
401 |
"LAL": 0, |
402 |
"MinRH": 0, |
403 |
"MaxRH": 0, |
404 |
"MinT": 1, |
405 |
"MaxT": 1, |
406 |
"Haines": 0, |
407 |
"PoP" : 20, |
408 |
"Hazards" : 0, |
409 |
} |
410 |
|
411 |
|
412 |
""" |
413 |
|
414 |
CWFPeriod = """ |
415 |
def _issuance_list(self, argDict): |
416 |
# This method sets up configurable issuance times with associated |
417 |
# narrative definitions. See the Text Product User Guide for documentation. |
418 |
if self._definition["includeEveningPeriod"] == 1: |
419 |
narrativeDefAM = [ |
420 |
("CWFPeriod", "period1"), |
421 |
## ("", 12),# ("", 12), ("", 12), ("", 12), |
422 |
## ("", 12), |
423 |
## ("CWFExtended", 24), ("CWFExtended", 24) |
424 |
] |
425 |
narrativeDefPM = [ |
426 |
("", "period1"), |
427 |
("", 12), ("", 12), ("", 12), ("", 12), |
428 |
("", 12), ("", 12), |
429 |
("CWFExtended", 24), ("CWFExtended", 24) |
430 |
] |
431 |
else: |
432 |
narrativeDefAM = [ |
433 |
("", "period1"), |
434 |
("", 12), ("", 12), ("", 12), ("", 24), |
435 |
("CWFExtended", 24), ("CWFExtended", 24) |
436 |
] |
437 |
narrativeDefPM = [ |
438 |
("", "period1"), |
439 |
("", 12), ("", 12), ("", 12), ("", 12), |
440 |
("CWFExtended", 24), |
441 |
("CWFExtended", 24), ("CWFExtended", 24) |
442 |
] |
443 |
|
444 |
return [ |
445 |
("430 AM", self.DAY(), self.NIGHT(), self.NIGHT(), |
446 |
".TODAY...", "early in the morning", "late in the afternoon", |
447 |
1, narrativeDefAM), |
448 |
("1030 AM", "issuanceHour", self.NIGHT(), self.NIGHT(), |
449 |
".TODAY...", "early in the morning", "late in the afternoon", |
450 |
1, narrativeDefAM), |
451 |
# End times are tomorrow: |
452 |
("430 PM", self.NIGHT(), 24 + self.DAY(), 24 + self.DAY(), |
453 |
".TONIGHT...", "late in the night", "early in the evening", |
454 |
1, narrativeDefPM), |
455 |
("1030 PM", "issuanceHour", 24 + self.DAY(), 24 + self.DAY(), |
456 |
".TONIGHT...", "late in the night", "early in the evening", |
457 |
1, narrativeDefPM), |
458 |
] |
459 |
|
460 |
|
461 |
def CWFPeriod(self): |
462 |
return { |
463 |
"type": "component", |
464 |
"methodList": [ |
465 |
self.assemblePhrases, |
466 |
self.wordWrap, |
467 |
], |
468 |
|
469 |
"analysisList": [ |
470 |
# NOTE: Choose from the following analysis options. |
471 |
# Do not remove the "vectorMinMax" analysis for |
472 |
# "Wind". This is necessary to get an absolute max if |
473 |
# the useWindsForGusts flag is on. |
474 |
|
475 |
# Use the following if you want moderated ranges |
476 |
# (e.g. N WIND 10 to 20 KT) |
477 |
# Set the moderating percentage in the "moderated_dict" |
478 |
# dictionary module. |
479 |
# Set the maximum range values in the "maximum_range_nlValue_dict" |
480 |
# dictionary module. |
481 |
("Wind", self.vectorModeratedMinMax, [3]), |
482 |
("Wind", self.vectorMinMax, [12]), |
483 |
("WindGust", self.moderatedMax, [3]), |
484 |
("WaveHeight", self.moderatedMinMax, [6]), |
485 |
("WindWaveHgt", self.moderatedMinMax, [6]), |
486 |
("Swell", self.vectorModeratedMinMax, [6]), |
487 |
("Swell2", self.vectorModeratedMinMax, [6]), |
488 |
("Period", self.moderatedMinMax, [6]), |
489 |
("Period2", self.moderatedMinMax, [6]), |
490 |
("Wx", self.rankedWx, [6]), |
491 |
("T", self.minMax), |
492 |
("PoP", self._PoP_analysisMethod("CWFPeriod"), [6]), |
493 |
("PoP", self.binnedPercent, [6]), |
494 |
], |
495 |
|
496 |
"phraseList":[ |
497 |
# WINDS |
498 |
self.marine_wind_withGusts_phrase, |
499 |
# Alternative: |
500 |
#self.marine_wind_phrase, |
501 |
#self.gust_phrase, |
502 |
# WAVES |
503 |
self.wave_withPeriods_phrase, |
504 |
# Alternative: |
505 |
#self.wave_phrase, |
506 |
# Optional: |
507 |
self.chop_phrase, |
508 |
# SWELLS AND PERIODS |
509 |
self.swell_phrase, |
510 |
# Alternative: |
511 |
#self.swell_phrase, |
512 |
#self.period_phrase, |
513 |
# WEATHER |
514 |
self.weather_phrase, |
515 |
], |
516 |
} |
517 |
|
518 |
def seasFlag(self, tree, node): |
519 |
return 0 |
520 |
|
521 |
""" |
522 |
|
523 |
nullSwell = """ |
524 |
|
525 |
def first_null_phrase_dict(self, tree, node): |
526 |
dict = TextRules.TextRules.first_null_phrase_dict(self, tree, node) |
527 |
dict["Swell"] = "light swells" |
528 |
return dict |
529 |
|
530 |
def null_phrase_dict(self, tree, node): |
531 |
dict = TextRules.TextRules.null_phrase_dict(self, tree, node) |
532 |
dict["Swell"] = "light" |
533 |
return dict |
534 |
|
535 |
|
536 |
""" |
537 |
|
538 |
marine_wx = """ |
539 |
|
540 |
def pop_wx_lower_threshold(self, tree, node): |
541 |
# Always report weather |
542 |
return 20 |
543 |
|
544 |
""" |
545 |
|
546 |
scripts = [ |
547 |
|
548 |
|
549 |
### FWF Infinite Loop TK 4244 |
550 |
{ |
551 |
"name": "FWF_InfiniteLoop1", |
552 |
"commentary": "Wx Infinite Loop: Formatter fails since we need to change 'on-the-fly' \nresolution multiple times.", |
553 |
"productType": "FWF", |
554 |
"createGrids": [ |
555 |
("Fcst", "PoP", "SCALAR", 0, 12, 60, "all", 1), |
556 |
("Fcst", "Wx", "WEATHER", 0, 3, "Chc:RW:-:<NoVis>:", "all"), |
557 |
("Fcst", "Wx", "WEATHER", 3, 6, "Chc:T:<NoInten>:<NoVis>:^Chc:RW:-:<NoVis>:", "all"), |
558 |
("Fcst", "Wx", "WEATHER", 6, 12,"Chc:RW:-:<NoVis>:^Chc:SW:-:<NoVis>:", "all"), |
559 |
], |
560 |
"checkStrings": [ |
561 |
"|* PLEASE ENTER WEATHER_PHRASE AND REFER TO LOG FILES FOR MORE EXPLANATION *|", |
562 |
], |
563 |
"fileChanges": [ |
564 |
("FWF_<site>_Overrides", "TextUtility", "add", checkResolution, "undo"), |
565 |
("FWF_<site>_Overrides", "TextUtility", "add", subPhrase_limit, "undo"), |
566 |
], |
567 |
"comboFlag": 1, |
568 |
|
569 |
}, |
570 |
{ |
571 |
"name": "FWF_InfiniteLoop2", |
572 |
"commentary": "Wx Infinite Loop: Formatter will succeed since we change 'on-the-fly' \nresolution multiple times.", |
573 |
"productType": "FWF", |
574 |
"createGrids": [ |
575 |
("Fcst", "PoP", "SCALAR", 0, 12, 60, "all", 1), |
576 |
("Fcst", "Wx", "WEATHER", 0, 3, "Chc:RW:-:<NoVis>:", "all"), |
577 |
("Fcst", "Wx", "WEATHER", 3, 6, "Chc:T:<NoInten>:<NoVis>:^Chc:RW:-:<NoVis>:", "all"), |
578 |
("Fcst", "Wx", "WEATHER", 6, 12,"Chc:RW:-:<NoVis>:^Chc:SW:-:<NoVis>:", "all"), |
579 |
], |
580 |
"checkStrings": [ |
581 |
"TODAY", |
582 |
("CHANCE OF SHOWERS...THUNDERSTORMS AND SNOW SHOWERS", |
583 |
"CHANCE OF RAIN SHOWERS...THUNDERSTORMS AND SNOW SHOWERS"), |
584 |
"TONIGHT", |
585 |
], |
586 |
"fileChanges": [ |
587 |
("FWF_<site>_Overrides", "TextUtility", "add", subPhrase_limit, "undo"), |
588 |
], |
589 |
"comboFlag": 1, |
590 |
}, |
591 |
|
592 |
{ |
593 |
"name": "FWF_InfiniteLoop3", |
594 |
"commentary": "Wx Infinite Loop: Formatter fails since we need to carry over disabledSubkeys.", |
595 |
"productType": "FWF", |
596 |
"createGrids": [ |
597 |
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 21, "all"), |
598 |
("Fcst", "PoP", "SCALAR", 0, 12, 60, "all", 1), |
599 |
("Fcst", "Wx", "WEATHER", 0, 2, "Sct:SW:-:<NoVis>:^Areas:BS:<NoInten>:<NoVis>:", "all"), |
600 |
("Fcst", "Wx", "WEATHER", 2, 4, "Iso:T:<NoInten>:<NoVis>:^Sct:RW:-:<NoVis>:", "all"), |
601 |
("Fcst", "Wx", "WEATHER", 4, 6, "Sct:SW:-:<NoVis>:", "all"), |
602 |
("Fcst", "Wx", "WEATHER", 6, 12, "Sct:RW:-:<NoVis>:", "all"), |
603 |
], |
604 |
"checkStrings": [ |
605 |
"|* PLEASE ENTER WEATHER_PHRASE AND REFER TO LOG FILES FOR MORE EXPLANATION *|", |
606 |
], |
607 |
"fileChanges": [ |
608 |
("FWF_<site>_Overrides", "TextUtility", "add", checkResolution, "undo"), |
609 |
], |
610 |
"comboFlag": 1, |
611 |
|
612 |
}, |
613 |
{ |
614 |
"name": "FWF_InfiniteLoop4", |
615 |
"commentary": "Wx Infinite Loop: Formatter will succeed since carry over disabledSubkeys.", |
616 |
"productType": "FWF", |
617 |
"createGrids": [ |
618 |
("Fcst", "MaxT", "SCALAR", "MaxTBegin", "MaxTEnd", 21, "all"), |
619 |
("Fcst", "PoP", "SCALAR", 0, 12, 60, "all", 1), |
620 |
("Fcst", "Wx", "WEATHER", 0, 2, "Sct:SW:-:<NoVis>:^Areas:BS:<NoInten>:<NoVis>:", "all"), |
621 |
("Fcst", "Wx", "WEATHER", 2, 4, "Iso:T:<NoInten>:<NoVis>:^Sct:RW:-:<NoVis>:", "all"), |
622 |
("Fcst", "Wx", "WEATHER", 4, 6, "Sct:SW:-:<NoVis>:", "all"), |
623 |
("Fcst", "Wx", "WEATHER", 6, 12, "Sct:RW:-:<NoVis>:", "all"), |
624 |
], |
625 |
"checkStrings": [ |
626 |
"TODAY", "AREAS OF BLOWING SNOW UNTIL 0800", |
627 |
"SCATTERED SNOW SHOWERS AND ISOLATED THUNDERSTORMS UNTIL 1200", |
628 |
"SCATTERED SHOWERS","TONIGHT", |
629 |
], |
630 |
"fileChanges": [], |
631 |
"comboFlag": 1, |
632 |
}, |
633 |
|
634 |
{ |
635 |
"name": "ZFP_InfiniteLoop1", # TK 4603 |
636 |
"commentary": "Infinite loop", |
637 |
"productType": "ZFP", |
638 |
"createGrids": [ |
639 |
("Fcst", "Wx", "WEATHER", 0, 1, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
640 |
("Fcst", "Wx", "WEATHER", 1, 2, "NoWx", "all"), |
641 |
("Fcst", "Wx", "WEATHER", 2, 3, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
642 |
("Fcst", "Wx", "WEATHER", 3, 4, "NoWx", "all"), |
643 |
("Fcst", "Wx", "WEATHER", 4, 5, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
644 |
("Fcst", "Wx", "WEATHER", 5, 6, "NoWx", "all"), |
645 |
("Fcst", "Wx", "WEATHER", 6, 7, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
646 |
("Fcst", "Wx", "WEATHER", 7, 12, "NoWx", "all"), |
647 |
], |
648 |
"notCheckStrings": [ |
649 |
"PATCHY FOG", # no longer fails in infinite loop, |
650 |
# but does not produce PATCHY FOG as it should. |
651 |
], |
652 |
"fileChanges": [ |
653 |
("ZFP_<site>_Overrides", "TextUtility", "add", checkResolution2, "undo"), |
654 |
("ZFP_<site>_Overrides", "TextUtility", "add", period1, "undo"), |
655 |
], |
656 |
|
657 |
}, |
658 |
|
659 |
{ |
660 |
"name": "ZFP_InfiniteLoop2", |
661 |
"commentary": "Infinite loop fix", |
662 |
"productType": "ZFP", |
663 |
"createGrids": [ |
664 |
("Fcst", "Wx", "WEATHER", 0, 1, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
665 |
("Fcst", "Wx", "WEATHER", 1, 2, "NoWx", "all"), |
666 |
("Fcst", "Wx", "WEATHER", 2, 3, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
667 |
("Fcst", "Wx", "WEATHER", 3, 4, "NoWx", "all"), |
668 |
("Fcst", "Wx", "WEATHER", 4, 5, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
669 |
("Fcst", "Wx", "WEATHER", 5, 6, "NoWx", "all"), |
670 |
("Fcst", "Wx", "WEATHER", 6, 7, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
671 |
("Fcst", "Wx", "WEATHER", 7, 12, "NoWx", "all"), |
672 |
], |
673 |
"checkStrings": [ |
674 |
"PATCHY FOG", |
675 |
], |
676 |
"fileChanges": [ |
677 |
("ZFP_<site>_Overrides", "TextUtility", "add", period1, "undo"), |
678 |
], |
679 |
|
680 |
}, |
681 |
### Areal Sky |
682 |
{ |
683 |
"name": "arealSky1", |
684 |
"commentary": "Areal sky wording with transition", |
685 |
"productType": "ZFP", |
686 |
"createGrids": [ |
687 |
("Fcst", "PoP", "SCALAR", 0, 12, 0, "all", 1), |
688 |
("Fcst", "Wx", "WEATHER", 0, 6, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
689 |
("Fcst", "Wx", "WEATHER", 6, 12, "NoWx", "all"), |
690 |
("Fcst", "Sky", "SCALAR", 0, 6, 95, "all"), |
691 |
("Fcst", "Sky", "SCALAR", 6, 12, 0, "all"), |
692 |
], |
693 |
"checkStrings": [ |
694 |
"TODAY", |
695 |
"LOW CLOUDS AND FOG IN THE MORNING THEN CLEARING", |
696 |
"TONIGHT", |
697 |
], |
698 |
"fileChanges": [ |
699 |
("ZFP_<site>_Definition", "TextUtility", "replace", (arealSkyDef1, arealSkyDef2), "undo"), |
700 |
("ZFP_<site>_Overrides", "TextUtility", "add", arealSky, "undo"), |
701 |
], |
702 |
"comboFlag": 1, |
703 |
|
704 |
}, |
705 |
|
706 |
# We disableSkyRelatedWx when the areal_sky_flag is 1, even IF the |
707 |
# areal sky wording does not kick in. Thus, arealSky2 test fails. |
708 |
# Is this ok or not? |
709 |
{ |
710 |
"name": "arealSky2", |
711 |
"commentary": "No Areal sky wording (sky not high enough) so normal wording", |
712 |
"productType": "ZFP", |
713 |
"createGrids": [ |
714 |
("Fcst", "PoP", "SCALAR", 0, 12, 0, "all", 1), |
715 |
("Fcst", "Wx", "WEATHER", 0, 6, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
716 |
("Fcst", "Wx", "WEATHER", 6, 12, "NoWx", "all"), |
717 |
("Fcst", "Sky", "SCALAR", 0, 6, 60, "all"), |
718 |
("Fcst", "Sky", "SCALAR", 6, 12, 0, "all"), |
719 |
], |
720 |
"checkStrings": [ |
721 |
"TODAY", |
722 |
#"PARTLY CLOUDY IN THE MORNING THEN CLEARING", |
723 |
#"PATCHY FOG IN THE MORNING", |
724 |
"TONIGHT", |
725 |
], |
726 |
"fileChanges": [ |
727 |
("ZFP_<site>_Definition", "TextUtility", "replace", (arealSkyDef1, arealSkyDef2), "undo"), |
728 |
("ZFP_<site>_Overrides", "TextUtility", "add", arealSky, "undo"), |
729 |
], |
730 |
"comboFlag": 1, |
731 |
|
732 |
}, |
733 |
|
734 |
### Diurnal Sky Period Combining |
735 |
{ |
736 |
"name": "diurnalSky1", |
737 |
"commentary": "Diurnal sky wording when period combining -- starting with Day period", |
738 |
"productType": "ZFP", |
739 |
"createGrids": [#TestScript.general_createGrids + [ |
740 |
("Fcst", "Sky", "SCALAR", 48, 72, 0, "all"), |
741 |
("Fcst", "Sky", "SCALAR", 72, 78, 100, "all"), |
742 |
("Fcst", "Sky", "SCALAR", 78, 84, 0, "all"), |
743 |
("Fcst", "Sky", "SCALAR", 84, 90, 0, "all"), |
744 |
("Fcst", "Sky", "SCALAR", 90, 96, 100, "all"), |
745 |
("Fcst", "Sky", "SCALAR", 96, 102, 100, "all"), |
746 |
("Fcst", "Sky", "SCALAR", 102, 108, 0, "all"), |
747 |
("Fcst", "Sky", "SCALAR", 108, 114, 0, "all"), |
748 |
("Fcst", "Sky", "SCALAR", 114, 120, 100, "all"), |
749 |
("Fcst", "Wx", "WEATHER", 72, 78, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
750 |
("Fcst", "Wx", "WEATHER", 78, 84, "NoWx", "all"), |
751 |
("Fcst", "Wx", "WEATHER", 84, 90, "NoWx", "all"), |
752 |
("Fcst", "Wx", "WEATHER", 90, 96, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
753 |
("Fcst", "Wx", "WEATHER", 96, 102, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
754 |
("Fcst", "Wx", "WEATHER", 102, 108, "NoWx", "all"), |
755 |
("Fcst", "Wx", "WEATHER", 108, 114, "NoWx", "all"), |
756 |
("Fcst", "Wx", "WEATHER", 114, 120, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
757 |
("Fcst", "PoP", "SCALAR", 48, 120, 0, "all"), |
758 |
## ("Fcst", "MaxT", "SCALAR", "MaxTBegin+24", "MaxTEnd+24", 70, "all"), |
759 |
## ("Fcst", "MinT", "SCALAR", "MinTBegin+24", "MinTEnd+24", 43, "all"), |
760 |
## ("Fcst", "MaxT", "SCALAR", "MaxTBegin+48", "MaxTEnd+48", 70, "all"), |
761 |
## ("Fcst", "MinT", "SCALAR", "MinTBegin+48", "MinTEnd+48", 43, "all"), |
762 |
## ("Fcst", "MaxT", "SCALAR", "MaxTBegin+60", "MaxTEnd+60", 70, "all"), |
763 |
## ("Fcst", "MinT", "SCALAR", "MinTBegin+60", "MinTEnd+60", 43, "all"), |
764 |
## ("Fcst", "MaxT", "SCALAR", "MaxTBegin+72", "MaxTEnd+72", 70, "all"), |
765 |
## ("Fcst", "MinT", "SCALAR", "MinTBegin+72", "MinTEnd+72", 43, "all"), |
766 |
## ("Fcst", "Wind", "VECTOR", 36, 72, (10, "SW"), "all"), |
767 |
], |
768 |
"checkStrings": [ |
769 |
"MONDAY THROUGH TUESDAY NIGHT...", |
770 |
"LOW CLOUDS AND FOG IN THE MORNING AND NIGHT...OTHERWISE CLEAR", |
771 |
], |
772 |
"fileChanges": [ |
773 |
("ZFP_<site>_Definition", "TextUtility", "replace", (arealSkyDef1, arealSkyDef2), "undo"), |
774 |
("ZFP_<site>_Definition", "TextUtility", "replace", |
775 |
(periodCombine1, periodCombine2), "undo"), |
776 |
("ZFP_<site>_Overrides", "TextUtility", "add", arealSky, "undo"), |
777 |
("ZFP_<site>_Overrides", "TextUtility", "add", diurnalSky, "undo"), |
778 |
], |
779 |
"comboFlag": 1, |
780 |
"gridsStartTime": "6am Local", |
781 |
"drtTime": "6am Local", |
782 |
}, |
783 |
|
784 |
{ |
785 |
"name": "diurnalSky2", |
786 |
"commentary": "Diurnal sky wording when period combining -- starting with Night period", |
787 |
"productType": "ZFP", |
788 |
"createGrids": [#TestScript.general_createGrids + [ |
789 |
("Fcst", "Sky", "SCALAR", 72, 78, 0, "all"), |
790 |
("Fcst", "Sky", "SCALAR", 78, 84, 0, "all"), |
791 |
("Fcst", "Sky", "SCALAR", 84, 90, 0, "all"), |
792 |
("Fcst", "Sky", "SCALAR", 90, 96, 100, "all"), |
793 |
("Fcst", "Sky", "SCALAR", 96, 102, 100, "all"), |
794 |
("Fcst", "Sky", "SCALAR", 102, 108, 0, "all"), |
795 |
("Fcst", "Sky", "SCALAR", 108, 114, 0, "all"), |
796 |
("Fcst", "Sky", "SCALAR", 114, 120, 100, "all"), |
797 |
("Fcst", "Wx", "WEATHER", 72, 78, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
798 |
("Fcst", "Wx", "WEATHER", 78, 84, "NoWx", "all"), |
799 |
("Fcst", "Wx", "WEATHER", 84, 90, "NoWx", "all"), |
800 |
("Fcst", "Wx", "WEATHER", 90, 96, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
801 |
("Fcst", "Wx", "WEATHER", 96, 102, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
802 |
("Fcst", "Wx", "WEATHER", 102, 108, "NoWx", "all"), |
803 |
("Fcst", "Wx", "WEATHER", 108, 114, "NoWx", "all"), |
804 |
("Fcst", "Wx", "WEATHER", 114, 120, "Patchy:F:<NoInten>:<NoVis>:", "all"), |
805 |
("Fcst", "PoP", "SCALAR", 48, 120, 0, "all"), |
806 |
## ("Fcst", "MaxT", "SCALAR", "MaxTBegin+24", "MaxTEnd+24", 70, "all"), |
807 |
## ("Fcst", "MinT", "SCALAR", "MinTBegin+24", "MinTEnd+24", 43, "all"), |
808 |
## ("Fcst", "MaxT", "SCALAR", "MaxTBegin+48", "MaxTEnd+48", 70, "all"), |
809 |
## ("Fcst", "MinT", "SCALAR", "MinTBegin+48", "MinTEnd+48", 43, "all"), |
810 |
## ("Fcst", "MaxT", "SCALAR", "MaxTBegin+60", "MaxTEnd+60", 70, "all"), |
811 |
## ("Fcst", "MinT", "SCALAR", "MinTBegin+60", "MinTEnd+60", 43, "all"), |
812 |
## ("Fcst", "MaxT", "SCALAR", "MaxTBegin+72", "MaxTEnd+72", 70, "all"), |
813 |
## ("Fcst", "MinT", "SCALAR", "MinTBegin+72", "MinTEnd+72", 43, "all"), |
814 |
## ("Fcst", "Wind", "VECTOR", 36, 72, (10, "SW"), "all"), |
815 |
], |
816 |
"checkStrings": [ |
817 |
"MONDAY NIGHT THROUGH TUESDAY NIGHT...", |
818 |
"LOW CLOUDS AND FOG IN THE NIGHT AND MORNING...OTHERWISE CLEAR", |
819 |
], |
820 |
"fileChanges": [ |
821 |
("ZFP_<site>_Definition", "TextUtility", "replace", (arealSkyDef1, arealSkyDef2), "undo"), |
822 |
("ZFP_<site>_Definition", "TextUtility", "replace", |
823 |
(periodCombine1, periodCombine2), "undo"), |
824 |
("ZFP_<site>_Overrides", "TextUtility", "add", arealSky, "undo"), |
825 |
("ZFP_<site>_Overrides", "TextUtility", "add", diurnalSky, "undo"), |
826 |
], |
827 |
"comboFlag": 1, |
828 |
"gridsStartTime": "6am Local", |
829 |
"drtTime": "6am Local", |
830 |
}, |
831 |
|
832 |
### Increasing/decreasing threshold TK 4112 |
833 |
{ |
834 |
"name": "IncreasingSky1", |
835 |
"commentary": "Increasing sky wording", |
836 |
"productType": "ZFP", |
837 |
"createGrids": [#TestScript.general_createGrids + [ |
838 |
("Fcst", "Sky", "SCALAR", 48, 54, 5, "all"), |
839 |
("Fcst", "Sky", "SCALAR", 54, 60, 55, "all"), |
840 |
("Fcst", "Sky", "SCALAR", 60, 66, 5, "all"), |
841 |
("Fcst", "Sky", "SCALAR", 66, 72, 55, "all"), |
842 |
], |
843 |
"checkStrings": [ |
844 |
".SUNDAY...", "INCREASING CLOUDS", |
845 |
".SUNDAY NIGHT...", "INCREASING CLOUDS", |
846 |
], |
847 |
"fileChanges": [ |
848 |
("ZFP_<site>_Overrides", "TextUtility", "add", increaseSky1, "undo"), |
849 |
], |
850 |
"comboFlag": 1, |
851 |
"gridsStartTime": "6am Local", |
852 |
"drtTime": "6am Local", |
853 |
}, |
854 |
|
855 |
{ |
856 |
"name": "IncreasingSky2", |
857 |
"commentary": "Increasing sky wording", |
858 |
"productType": "ZFP", |
859 |
"createGrids": [#TestScript.general_createGrids + [ |
860 |
("Fcst", "Sky", "SCALAR", 48, 54, 5, "all"), |
861 |
("Fcst", "Sky", "SCALAR", 54, 60, 55, "all"), |
862 |
("Fcst", "Sky", "SCALAR", 60, 66, 5, "all"), |
863 |
("Fcst", "Sky", "SCALAR", 66, 72, 55, "all"), |
864 |
], |
865 |
"checkStrings": [ |
866 |
".SUNDAY...", "INCREASING CLOUDS", |
867 |
".SUNDAY NIGHT...","CLEAR IN THE EVENING THEN BECOMING MOSTLY CLOUDY", |
868 |
], |
869 |
"fileChanges": [ |
870 |
("ZFP_<site>_Overrides", "TextUtility", "add", increaseSky2, "undo"), |
871 |
], |
872 |
"comboFlag": 1, |
873 |
"gridsStartTime": "6am Local", |
874 |
"drtTime": "6am Local", |
875 |
}, |
876 |
|
877 |
|
878 |
### Local Headline Timing : Tests DiscretePhrases headlinesTiming and |
879 |
### headlinesTimeRange_descriptor |
880 |
### TK 4259 |
881 |
{ |
882 |
"name": "HeadlineTiming1", |
883 |
"commentary": "startPhraseType=DAY_NIGHT_ONLY, endPhraseType=DAY_NIGHT_ONLY", |
884 |
"productType": "ZFP", |
885 |
"createGrids": [ |
886 |
("Fcst", "Hazards", "DISCRETE", 0, 60, "<None>", "all"), |
887 |
("Fcst", "Hazards", "DISCRETE", 2, 11, "LocalHazard1", "all"), |
888 |
("Fcst", "Hazards", "DISCRETE", 15, 20, "LocalHazard1", "all"), |
889 |
("Fcst", "Hazards", "DISCRETE", 28, 29, "LocalHazard1", "all"), |
890 |
("Fcst", "Hazards", "DISCRETE", 40, 41, "LocalHazard1", "all"), |
891 |
("Fcst", "Hazards", "DISCRETE", 59, 60, "LocalHazard1", "all"), |
892 |
("Fcst", "Hazards", "DISCRETE", 79, 71, "LocalHazard1", "all"), |
893 |
], |
894 |
"checkStrings": [ |
895 |
"...LOCAL HAZARD TODAY...", |
896 |
"...LOCAL HAZARD TONIGHT...", |
897 |
"...LOCAL HAZARD SATURDAY...", |
898 |
"...LOCAL HAZARD SATURDAY NIGHT...", |
899 |
"...LOCAL HAZARD SUNDAY...", |
900 |
"...LOCAL HAZARD FROM SUNDAY NIGHT THROUGH MONDAY...", |
901 |
], |
902 |
"fileChanges": [ |
903 |
("ZFP_<site>_Overrides", "TextUtility", "add", headlinesTiming, "undo"), |
904 |
("ZFP_<site>_Overrides", "TextUtility", "add", headlinesTiming1, "undo"), |
905 |
], |
906 |
"comboFlag": 1, |
907 |
"gridsStartTime": "6am Local", |
908 |
"drtTime": "4am Local", |
909 |
}, |
910 |
{ |
911 |
"name": "HeadlineTiming2", |
912 |
"commentary": "startPhraseType=FUZZY, endPhraseType=FUZZY, startBoundary=3", |
913 |
"productType": "ZFP", |
914 |
"createGrids": [ |
915 |
("Fcst", "Hazards", "DISCRETE", 0, 60, "<None>", "all"), |
916 |
("Fcst", "Hazards", "DISCRETE", 2, 11, "LocalHazard1", "all"), |
917 |
("Fcst", "Hazards", "DISCRETE", 15, 20, "LocalHazard1", "all"), |
918 |
("Fcst", "Hazards", "DISCRETE", 28, 29, "LocalHazard1", "all"), |
919 |
("Fcst", "Hazards", "DISCRETE", 40, 41, "LocalHazard1", "all"), |
920 |
("Fcst", "Hazards", "DISCRETE", 59, 60, "LocalHazard1", "all"), |
921 |
("Fcst", "Hazards", "DISCRETE", 79, 71, "LocalHazard1", "all"), |
922 |
], |
923 |
"checkStrings": [ |
924 |
"...LOCAL HAZARD FROM THIS MORNING THROUGH THIS AFTERNOON...", |
925 |
"...LOCAL HAZARD FROM THIS EVENING THROUGH LATE TONIGHT...", |
926 |
"...LOCAL HAZARD SATURDAY MORNING...", |
927 |
"...LOCAL HAZARD SATURDAY EVENING...", |
928 |
"...LOCAL HAZARD SUNDAY AFTERNOON...", |
929 |
"...LOCAL HAZARD FROM LATE SUNDAY NIGHT THROUGH MONDAY AFTERNOON...", |
930 |
], |
931 |
"fileChanges": [ |
932 |
("ZFP_<site>_Overrides", "TextUtility", "add", headlinesTiming, "undo"), |
933 |
("ZFP_<site>_Overrides", "TextUtility", "add", headlinesTiming2, "undo"), |
934 |
], |
935 |
"comboFlag": 1, |
936 |
"gridsStartTime": "6am Local", |
937 |
"drtTime": "4am Local", |
938 |
}, |
939 |
{ |
940 |
"name": "HeadlineTiming3", |
941 |
"commentary": "startPhraseType=EXPLICIT, endPhraseType=FUZZY, startBoundary=3", |
942 |
"productType": "ZFP", |
943 |
"createGrids": [ |
944 |
("Fcst", "Hazards", "DISCRETE", 0, 60, "<None>", "all"), |
945 |
("Fcst", "Hazards", "DISCRETE", 2, 11, "LocalHazard1", "all"), |
946 |
("Fcst", "Hazards", "DISCRETE", 15, 20, "LocalHazard1", "all"), |
947 |
("Fcst", "Hazards", "DISCRETE", 28, 29, "LocalHazard1", "all"), |
948 |
("Fcst", "Hazards", "DISCRETE", 40, 41, "LocalHazard1", "all"), |
949 |
("Fcst", "Hazards", "DISCRETE", 59, 60, "LocalHazard1", "all"), |
950 |
("Fcst", "Hazards", "DISCRETE", 79, 71, "LocalHazard1", "all"), |
951 |
], |
952 |
"checkStrings": [ |
953 |
"...LOCAL HAZARD FROM 8 AM EST THIS MORNING THROUGH THIS AFTERNOON...", |
954 |
"...LOCAL HAZARD FROM 9 PM EST THIS EVENING THROUGH LATE TONIGHT..", |
955 |
"...LOCAL HAZARD FROM 10 AM EST SATURDAY THROUGH SATURDAY MORNING...", |
956 |
"...LOCAL HAZARD FROM 10 PM EST SATURDAY THROUGH SATURDAY EVENING...", |
957 |
"...LOCAL HAZARD FROM 5 PM EST SUNDAY THROUGH SUNDAY AFTERNOON...", |
958 |
"...LOCAL HAZARD FROM 5 AM EST MONDAY THROUGH MONDAY AFTERNOON...", |
959 |
], |
960 |
"fileChanges": [ |
961 |
("ZFP_<site>_Overrides", "TextUtility", "add", headlinesTiming, "undo"), |
962 |
("ZFP_<site>_Overrides", "TextUtility", "add", headlinesTiming3, "undo"), |
963 |
], |
964 |
"comboFlag": 1, |
965 |
"gridsStartTime": "6am Local", |
966 |
"drtTime": "4am Local", |
967 |
}, |
968 |
{ |
969 |
"name": "HeadlineTiming4", |
970 |
"commentary": "startPhraseType=EXPLICIT, endPhraseType=EXPLICIT, startBoundary=3", |
971 |
"productType": "ZFP", |
972 |
"createGrids": [ |
973 |
("Fcst", "Hazards", "DISCRETE", 0, 60, "<None>", "all"), |
974 |
("Fcst", "Hazards", "DISCRETE", 2, 11, "LocalHazard1", "all"), |
975 |
("Fcst", "Hazards", "DISCRETE", 15, 20, "LocalHazard1", "all"), |
976 |
("Fcst", "Hazards", "DISCRETE", 28, 29, "LocalHazard1", "all"), |
977 |
("Fcst", "Hazards", "DISCRETE", 40, 41, "LocalHazard1", "all"), |
978 |
("Fcst", "Hazards", "DISCRETE", 59, 60, "LocalHazard1", "all"), |
979 |
("Fcst", "Hazards", "DISCRETE", 79, 71, "LocalHazard1", "all"), |
980 |
], |
981 |
"checkStrings": [ |
982 |
"...LOCAL HAZARD FROM 8 AM THIS MORNING TO 5 PM EST THIS AFTERNOON...", |
983 |
"...LOCAL HAZARD FROM 9 PM THIS EVENING TO 2 AM EST SATURDAY...", |
984 |
"...LOCAL HAZARD FROM 10 AM TO 11 AM EST SATURDAY...", |
985 |
"...LOCAL HAZARD FROM 10 PM TO 11 PM EST SATURDAY...", |
986 |
"...LOCAL HAZARD FROM 5 PM TO 6 PM EST SUNDAY...", |
987 |
"...LOCAL HAZARD FROM 5 AM TO 1 PM EST MONDAY...", |
988 |
], |
989 |
"fileChanges": [ |
990 |
("ZFP_<site>_Overrides", "TextUtility", "add", headlinesTiming, "undo"), |
991 |
("ZFP_<site>_Overrides", "TextUtility", "add", headlinesTiming4, "undo"), |
992 |
], |
993 |
"comboFlag": 1, |
994 |
"gridsStartTime": "6am Local", |
995 |
"drtTime": "4am Local", |
996 |
}, |
997 |
### Local Headlines mixed with VTEC |
998 |
{ |
999 |
"name": "LocalHeadlines1", |
1000 |
"commentary": "Local Headlines mixed with VTEC", |
1001 |
"productType": "ZFP", |
1002 |
"createGrids": [ |
1003 |
("Fcst", "Hazards", "DISCRETE", 0, 60, "<None>", "all"), |
1004 |
("Fcst", "Hazards", "DISCRETE", 2, 11, "LocalHazard1", "all"), |
1005 |
("Fcst", "Hazards", "DISCRETE", 7, 9, "LocalHazard1^WS.W", "all"), |
1006 |
], |
1007 |
"orderStrings": 1, |
1008 |
"checkStrings": [ |
1009 |
"LOCAL HAZARD IN EFFECT UNTIL 5 PM EST THIS AFTERNOON", |
1010 |
"WINTER STORM WARNING IN EFFECT FROM 1 PM TO 3 PM EST THIS AFTERNOON", |
1011 |
], |
1012 |
"fileChanges": [ |
1013 |
("ZFP_<site>_Overrides", "TextUtility", "add", localHeadlines1, "undo"), |
1014 |
], |
1015 |
"comboFlag": 1, |
1016 |
"gridsStartTime": "6am Local", |
1017 |
"drtTime": "4am Local", |
1018 |
}, |
1019 |
|
1020 |
{ |
1021 |
"commentary": "Clear out all Hazards Grids.", |
1022 |
"name": "Headlines_Cleanup", |
1023 |
"productType": None, |
1024 |
"deleteGrids": [ |
1025 |
("Fcst", "Hazards", "SFC", "all", "all"), |
1026 |
], |
1027 |
}, |
1028 |
|
1029 |
### Null always distinct TK 4264 |
1030 |
{ |
1031 |
"name": "NullDistinct1", |
1032 |
"commentary": "Null Distinct from Non-Null", |
1033 |
"productType": "Phrase_Test_Local", |
1034 |
"createGrids": [ |
1035 |
("Fcst", "Wind", "VECTOR", 0, 6, (2,"N"), "all"), |
1036 |
("Fcst", "WindGust", "SCALAR", 0, 6, 0, "all"), |
1037 |
("Fcst", "Wind", "VECTOR", 6, 12, (5,"N"), "all"), |
1038 |
("Fcst", "WindGust", "SCALAR", 6, 12, 0, "all"), |
1039 |
], |
1040 |
"checkStrings": [ |
1041 |
"LIGHT WINDS BECOMING NORTH AROUND 5 MPH IN THE AFTERNOON", |
1042 |
], |
1043 |
}, |
1044 |
{ |
1045 |
"name": "NullDistinct2", |
1046 |
"commentary": "Null Not Distinct from Non-Null", |
1047 |
"productType": "Phrase_Test_Local", |
1048 |
"createGrids": [ |
1049 |
("Fcst", "Wind", "VECTOR", 0, 6, (2,"N"), "all"), |
1050 |
("Fcst", "WindGust", "SCALAR", 0, 6, 0, "all"), |
1051 |
("Fcst", "Wind", "VECTOR", 6, 12, (5,"N"), "all"), |
1052 |
("Fcst", "WindGust", "SCALAR", 6, 12, 0, "all"), |
1053 |
], |
1054 |
"checkStrings": [ |
1055 |
"NORTH WINDS UP TO 5 MPH", |
1056 |
], |
1057 |
"fileChanges": [ |
1058 |
("Phrase_Test_Local", "TextProduct", "add", null_distinct, "undo"), |
1059 |
], |
1060 |
}, |
1061 |
|
1062 |
### Null always distinct TK 4264 |
1063 |
{ |
1064 |
"name": "NullDistinct1", |
1065 |
"commentary": "Null Distinct from Non-Null", |
1066 |
"productType": "Phrase_Test_Local", |
1067 |
"createGrids": [ |
1068 |
("Fcst", "Wind", "VECTOR", 0, 6, (2,"N"), "all"), |
1069 |
("Fcst", "WindGust", "SCALAR", 0, 6, 0, "all"), |
1070 |
("Fcst", "Wind", "VECTOR", 6, 12, (5,"N"), "all"), |
1071 |
("Fcst", "WindGust", "SCALAR", 6, 12, 0, "all"), |
1072 |
], |
1073 |
"checkStrings": [ |
1074 |
"LIGHT WINDS BECOMING NORTH AROUND 5 MPH IN THE AFTERNOON", |
1075 |
], |
1076 |
}, |
1077 |
{ |
1078 |
"name": "NullDistinct2", |
1079 |
"commentary": "Null Not Distinct from Non-Null", |
1080 |
"productType": "Phrase_Test_Local", |
1081 |
"createGrids": [ |
1082 |
("Fcst", "Wind", "VECTOR", 0, 6, (2,"N"), "all"), |
1083 |
("Fcst", "WindGust", "SCALAR", 0, 6, 0, "all"), |
1084 |
("Fcst", "Wind", "VECTOR", 6, 12, (5,"N"), "all"), |
1085 |
("Fcst", "WindGust", "SCALAR", 6, 12, 0, "all"), |
1086 |
], |
1087 |
"checkStrings": [ |
1088 |
"NORTH WINDS UP TO 5 MPH", |
1089 |
], |
1090 |
"fileChanges": [ |
1091 |
("Phrase_Test_Local", "TextProduct", "add", null_distinct, "undo"), |
1092 |
], |
1093 |
}, |
1094 |
### Null always distinct TK 4264 |
1095 |
{ |
1096 |
"name": "NullDistinct1", |
1097 |
"commentary": "Null Distinct from Non-Null", |
1098 |
"productType": "Phrase_Test_Local", |
1099 |
"createGrids": [ |
1100 |
("Fcst", "Wind", "VECTOR", 0, 6, (2,"N"), "all"), |
1101 |
("Fcst", "WindGust", "SCALAR", 0, 6, 0, "all"), |
1102 |
("Fcst", "Wind", "VECTOR", 6, 12, (5,"N"), "all"), |
1103 |
("Fcst", "WindGust", "SCALAR", 6, 12, 0, "all"), |
1104 |
], |
1105 |
"checkStrings": [ |
1106 |
"LIGHT WINDS BECOMING NORTH AROUND 5 MPH IN THE AFTERNOON", |
1107 |
], |
1108 |
}, |
1109 |
|
1110 |
##### MaxMode and Mixed Wx (Dave Metze) Tk 4450 |
1111 |
{ |
1112 |
"name": "MaxMode_and_MixedWx", |
1113 |
"commentary": "Using MaxMode for PoP with T plus K", |
1114 |
"productType": "Phrase_Test_Local", |
1115 |
"createGrids": [ |
1116 |
("Fcst", "Sky", "SCALAR", 0, 6, 20, "all", 1), |
1117 |
("Fcst", "Sky", "SCALAR", 6, 12, 87, "all", 1), |
1118 |
("Fcst", "PoP", "SCALAR", 0, 6, 0, "all", 1), |
1119 |
("Fcst", "PoP", "SCALAR", 6, 9, 5, "all", 1), |
1120 |
("Fcst", "PoP", "SCALAR", 9, 12, 20, "all", 1), |
1121 |
("Fcst", "Wx", "WEATHER", 0, 6, "Areas:K:<NoInten>:<NoVis>:", "all"), |
1122 |
("Fcst", "Wx", "WEATHER", 6, 12, |
1123 |
"SChc:T:<NoInten>:<NoVis>:^Areas:K:<NoInten>:<NoVis>:", "all"), |
1124 |
], |
1125 |
"checkStrings": [ |
1126 |
"MOSTLY SUNNY UNTIL LATE AFTERNOON...THEN MOSTLY CLOUDY WITH A 20 PERCENT CHANCE OF THUNDERSTORMS LATE IN THE AFTERNOON", |
1127 |
"AREAS OF SMOKE THROUGH THE DAY", |
1128 |
], |
1129 |
"fileChanges": [ |
1130 |
("Phrase_Test_Local", "TextProduct", "replace", |
1131 |
('"PoP": (5, "Max", None),', '"PoP": (5, "MaxMode", None),'), "undo"), |
1132 |
], |
1133 |
}, |
1134 |
|
1135 |
{ |
1136 |
"name": "MaxMode_Only", |
1137 |
"commentary": "Using MaxMode for PoP with T", |
1138 |
"productType": "Phrase_Test_Local", |
1139 |
"createGrids": [ |
1140 |
("Fcst", "Sky", "SCALAR", 0, 6, 20, "all", 1), |
1141 |
("Fcst", "Sky", "SCALAR", 6, 12, 60, "all", 1), |
1142 |
("Fcst", "PoP", "SCALAR", 0, 6, 0, "all", 1), |
1143 |
("Fcst", "PoP", "SCALAR", 6, 9, 5, "all", 1), |
1144 |
("Fcst", "PoP", "SCALAR", 9, 12, 20, "all", 1), |
1145 |
("Fcst", "Wx", "WEATHER", 0, 6, "NoWx", "all"), |
1146 |
("Fcst", "Wx", "WEATHER", 6, 12, "SChc:T:<NoInten>:<NoVis>:", "all"), |
1147 |
], |
1148 |
"checkStrings": [ |
1149 |
"MOSTLY SUNNY UNTIL LATE AFTERNOON...THEN A 20 PERCENT CHANCE OF THUNDERSTORMS LATE IN THE AFTERNOON", |
1150 |
], |
1151 |
"fileChanges": [ |
1152 |
("Phrase_Test_Local", "TextProduct", "replace", |
1153 |
('"PoP": (5, "Max", None),', '"PoP": (5, "MaxMode", None),'), "undo"), |
1154 |
], |
1155 |
}, |
1156 |
|
1157 |
# TK 4676 PoP temporal coverage changed to zero |
1158 |
{ |
1159 |
"name": "PoP_TemporalCoverage1", |
1160 |
"commentary": "tk4676 PoP temporal coverage changed to zero", |
1161 |
"productType": "Phrase_Test_Local", |
1162 |
"createGrids": [ |
1163 |
("Fcst", "PoP", "SCALAR", -3, 1, 70, "all", 1), |
1164 |
("Fcst", "PoP", "SCALAR", 1, 12, 60, "all", 1), |
1165 |
("Fcst", "Sky", "SCALAR", 0, 12, 50, "all", 1), |
1166 |
("Fcst", "Wx", "WEATHER", 0, 12, "Lkly:T:<NoInten>:<NoVis>:", "all"), |
1167 |
], |
1168 |
"checkStrings": [ |
1169 |
"THUNDERSTORMS LIKELY", |
1170 |
"CHANCE OF THUNDERSTORMS 60 PERCENT", |
1171 |
], |
1172 |
"fileChanges": [ |
1173 |
("Phrase_Test_Local", "TextProduct", "replace", |
1174 |
('("PoP", self.binnedPercent, [3])', '("PoP", self.binnedPercent, [12])'), |
1175 |
"undo"), |
1176 |
("Phrase_Test_Local", "TextProduct", "add", tempCov, "undo"), |
1177 |
], |
1178 |
}, |
1179 |
# TK 4676 PoP temporal coverage changed to zero |
1180 |
{ |
1181 |
"name": "PoP_TemporalCoverage2", |
1182 |
"commentary": "tk4676 PoP temporal coverage changed to zero", |
1183 |
"productType": "Phrase_Test_Local", |
1184 |
"createGrids": [ |
1185 |
("Fcst", "PoP", "SCALAR", -3, 1, 70, "all", 1), |
1186 |
("Fcst", "PoP", "SCALAR", 1, 12, 60, "all", 1), |
1187 |
("Fcst", "Sky", "SCALAR", 0, 12, 50, "all", 1), |
1188 |
("Fcst", "Wx", "WEATHER", 0, 12, "Lkly:T:<NoInten>:<NoVis>:", "all"), |
1189 |
], |
1190 |
"checkStrings": [ |
1191 |
"THUNDERSTORMS LIKELY", |
1192 |
"CHANCE OF THUNDERSTORMS 70 PERCENT", |
1193 |
], |
1194 |
"fileChanges": [ |
1195 |
("Phrase_Test_Local", "TextProduct", "replace", |
1196 |
('("PoP", self.binnedPercent, [3])', '("PoP", self.binnedPercent, [12])'), |
1197 |
"undo"), |
1198 |
], |
1199 |
}, |
1200 |
|
1201 |
|
1202 |
### CWF Swell Phrase -- no secondary elements TK 4277 |
1203 |
{ |
1204 |
"name": "CWF_Swell1", |
1205 |
"commentary": "CWF Swell phrase: Neither null", |
1206 |
"productType": "CWF", |
1207 |
"createGrids": [ |
1208 |
("Fcst", "Swell", "VECTOR", 0, 12, (7,"N"), "all"), |
1209 |
("Fcst", "Swell2", "VECTOR", 0, 12, (14,"E"), "all"), |
1210 |
], |
1211 |
"checkStrings": [ |
1212 |
"MIXED SWELL NORTH AROUND 7 FEET AND EAST AROUND 14 FEET", |
1213 |
], |
1214 |
"comboFlag": 1, |
1215 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1216 |
"gridsStartTime": "6am Local", |
1217 |
"drtTime": "4am Local", |
1218 |
"fileChanges":[ |
1219 |
("CWF_<site>_Overrides", "TextUtility", "add", CWFPeriod, "undo"), |
1220 |
], |
1221 |
}, |
1222 |
{ |
1223 |
"name": "CWF_Swell2", |
1224 |
"commentary": "CWF Swell phrase: Swell2 Null", |
1225 |
"productType": "CWF", |
1226 |
"createGrids": [ |
1227 |
("Fcst", "Swell", "VECTOR", 0, 12, (7,"N"), "all"), |
1228 |
("Fcst", "Swell2", "VECTOR", 0, 12, (0,"E"), "all"), |
1229 |
], |
1230 |
"checkStrings": [ |
1231 |
"NORTH SWELL AROUND 7 FEET", |
1232 |
], |
1233 |
"comboFlag": 1, |
1234 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1235 |
"gridsStartTime": "6am Local", |
1236 |
"drtTime": "4am Local", |
1237 |
"fileChanges":[ |
1238 |
("CWF_<site>_Overrides", "TextUtility", "add", CWFPeriod, "undo"), |
1239 |
], |
1240 |
}, |
1241 |
{ |
1242 |
"name": "CWF_Swell3", |
1243 |
"commentary": "CWF Swell phrase: Swell Null", |
1244 |
"productType": "CWF", |
1245 |
"createGrids": [ |
1246 |
("Fcst", "Swell", "VECTOR", 0, 12, (0,"N"), "all"), |
1247 |
("Fcst", "Swell2", "VECTOR", 0, 12, (14,"E"), "all"), |
1248 |
], |
1249 |
"checkStrings": [ |
1250 |
"SWELL EAST AROUND 14 FEET", |
1251 |
], |
1252 |
"comboFlag": 1, |
1253 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1254 |
"gridsStartTime": "6am Local", |
1255 |
"drtTime": "4am Local", |
1256 |
"fileChanges":[ |
1257 |
("CWF_<site>_Overrides", "TextUtility", "add", CWFPeriod, "undo"), |
1258 |
], |
1259 |
}, |
1260 |
{ |
1261 |
"name": "CWF_Swell4", |
1262 |
"commentary": "CWF Swell phrase: 2 sub-phrases, neither null", |
1263 |
"productType": "CWF", |
1264 |
"createGrids": [ |
1265 |
("Fcst", "Swell", "VECTOR", 0, 6, (7,"N"), "all"), |
1266 |
("Fcst", "Swell2", "VECTOR", 0, 6, (12,"E"), "all"), |
1267 |
("Fcst", "Swell", "VECTOR", 6, 14, (14,"NW"), "all"), |
1268 |
("Fcst", "Swell2", "VECTOR", 6, 14, (7,"SE"), "all"), |
1269 |
], |
1270 |
"checkStrings": [ |
1271 |
"MIXED SWELL NORTH AROUND 7 FEET AND EAST AROUND 12 FEET INCREASING TO NORTHWEST AROUND 14 FEET AND SOUTHEAST AROUND 7 FEET IN THE AFTERNOON", |
1272 |
], |
1273 |
"comboFlag": 1, |
1274 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1275 |
"gridsStartTime": "6am Local", |
1276 |
"drtTime": "4am Local", |
1277 |
"fileChanges":[ |
1278 |
("CWF_<site>_Overrides", "TextUtility", "add", CWFPeriod, "undo"), |
1279 |
], |
1280 |
}, |
1281 |
|
1282 |
{ |
1283 |
"name": "CWF_Swell5", |
1284 |
"commentary": "CWF Swell phrase: 2 sub-phrases, Swell2 null in both", |
1285 |
"productType": "CWF", |
1286 |
"createGrids": [ |
1287 |
("Fcst", "Swell", "VECTOR", 0, 6, (7,"N"), "all"), |
1288 |
("Fcst", "Swell2", "VECTOR", 0, 6, (0,"E"), "all"), |
1289 |
("Fcst", "Swell", "VECTOR", 6, 12, (14,"NW"), "all"), |
1290 |
("Fcst", "Swell2", "VECTOR", 6, 12, (0,"SE"), "all"), |
1291 |
], |
1292 |
"checkStrings": [ |
1293 |
"NORTH SWELL AROUND 7 FEET INCREASING TO NORTHWEST AROUND 14 FEET IN THE AFTERNOON", |
1294 |
], |
1295 |
"comboFlag": 1, |
1296 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1297 |
"gridsStartTime": "6am Local", |
1298 |
"drtTime": "4am Local", |
1299 |
"fileChanges":[ |
1300 |
("CWF_<site>_Overrides", "TextUtility", "add", CWFPeriod, "undo"), |
1301 |
], |
1302 |
}, |
1303 |
{ |
1304 |
"name": "CWF_Swell6", |
1305 |
"commentary": "CWF Swell phrase: 2 sub-phrases, Swell and Swell2 null in both", |
1306 |
"productType": "CWF", |
1307 |
"createGrids": [ |
1308 |
("Fcst", "Swell", "VECTOR", 0, 6, (0,"N"), "all"), |
1309 |
("Fcst", "Swell2", "VECTOR", 0, 6, (0,"E"), "all"), |
1310 |
("Fcst", "Swell", "VECTOR", 6, 12, (0,"NW"), "all"), |
1311 |
("Fcst", "Swell2", "VECTOR", 6, 12, (0,"SE"), "all"), |
1312 |
], |
1313 |
"checkStrings": [ |
1314 |
"", |
1315 |
], |
1316 |
"comboFlag": 1, |
1317 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1318 |
"gridsStartTime": "6am Local", |
1319 |
"drtTime": "4am Local", |
1320 |
"fileChanges":[ |
1321 |
("CWF_<site>_Overrides", "TextUtility", "add", CWFPeriod, "undo"), |
1322 |
], |
1323 |
}, |
1324 |
{ |
1325 |
"name": "CWF_Swell7", |
1326 |
"commentary": "CWF Swell phrase: 2 sub-phrases, Swell null in both -- Combines", |
1327 |
"productType": "CWF", |
1328 |
"createGrids": [ |
1329 |
("Fcst", "Swell", "VECTOR", 0, 6, (0,"N"), "all"), |
1330 |
("Fcst", "Swell2", "VECTOR", 0, 6, (14,"N"), "all"), |
1331 |
("Fcst", "Swell", "VECTOR", 6, 12, (0,"NW"), "all"), |
1332 |
("Fcst", "Swell2", "VECTOR", 6, 12, (7,"SE"), "all"), |
1333 |
], |
1334 |
"checkStrings": [ |
1335 |
"SWELL SOUTHEAST 8 TO 13 FEET", |
1336 |
], |
1337 |
"comboFlag": 1, |
1338 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1339 |
"gridsStartTime": "6am Local", |
1340 |
"drtTime": "4am Local", |
1341 |
"fileChanges":[ |
1342 |
("CWF_<site>_Overrides", "TextUtility", "add", CWFPeriod, "undo"), |
1343 |
], |
1344 |
}, |
1345 |
{ |
1346 |
"name": "CWF_Swell8", |
1347 |
"commentary": "CWF Swell phrase: 2 sub-phrases, Swell2 null in first", |
1348 |
"productType": "CWF", |
1349 |
"createGrids": [ |
1350 |
("Fcst", "Swell", "VECTOR", 0, 6, (7,"N"), "all"), |
1351 |
("Fcst", "Swell2", "VECTOR", 0, 6, (0,"E"), "all"), |
1352 |
("Fcst", "Swell", "VECTOR", 6, 12, (14,"NW"), "all"), |
1353 |
("Fcst", "Swell2", "VECTOR", 6, 12, (7,"SE"), "all"), |
1354 |
], |
1355 |
"checkStrings": [ |
1356 |
"NORTH SWELL AROUND 7 FEET INCREASING TO NORTHWEST AROUND 14 FEET AND SOUTHEAST AROUND 7 FEET IN THE AFTERNOON", |
1357 |
], |
1358 |
"comboFlag": 1, |
1359 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1360 |
"gridsStartTime": "6am Local", |
1361 |
"drtTime": "4am Local", |
1362 |
"fileChanges":[ |
1363 |
("CWF_<site>_Overrides", "TextUtility", "add", CWFPeriod, "undo"), |
1364 |
], |
1365 |
}, |
1366 |
{ |
1367 |
"name": "CWF_Swell9", |
1368 |
"commentary": "CWF Swell phrase: 2 sub-phrases, Swell null in first", |
1369 |
"productType": "CWF", |
1370 |
"createGrids": [ |
1371 |
("Fcst", "Swell", "VECTOR", 0, 6, (0,"N"), "all"), |
1372 |
("Fcst", "Swell2", "VECTOR", 0, 6, (14,"E"), "all"), |
1373 |
("Fcst", "Swell", "VECTOR", 6, 12, (14,"NW"), "all"), |
1374 |
("Fcst", "Swell2", "VECTOR", 6, 12, (7,"SE"), "all"), |
1375 |
], |
1376 |
"checkStrings": [ |
1377 |
"SWELL EAST AROUND 14 FEET INCREASING TO NORTHWEST AROUND 14 FEET AND SOUTHEAST AROUND 7 FEET IN THE AFTERNOON", |
1378 |
], |
1379 |
"comboFlag": 1, |
1380 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1381 |
"gridsStartTime": "6am Local", |
1382 |
"drtTime": "4am Local", |
1383 |
"fileChanges":[ |
1384 |
("CWF_<site>_Overrides", "TextUtility", "add", CWFPeriod, "undo"), |
1385 |
], |
1386 |
}, |
1387 |
{ |
1388 |
"name": "CWF_Swell10", |
1389 |
"commentary": "CWF Swell phrase: 2 sub-phrases, Swell same mag, Swell2 null in both", |
1390 |
"productType": "CWF", |
1391 |
"createGrids": [ |
1392 |
("Fcst", "Swell", "VECTOR", 0, 6, (7,"N"), "all"), |
1393 |
("Fcst", "Swell2", "VECTOR", 0, 6, (0,"E"), "all"), |
1394 |
("Fcst", "Swell", "VECTOR", 6, 12, (10,"NW"), "all"), |
1395 |
("Fcst", "Swell2", "VECTOR", 6, 12, (0,"SE"), "all"), |
1396 |
], |
1397 |
"checkStrings": [ |
1398 |
"NORTHWEST SWELL 7 TO 10 FEET", |
1399 |
], |
1400 |
"comboFlag": 1, |
1401 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1402 |
"gridsStartTime": "6am Local", |
1403 |
"drtTime": "4am Local", |
1404 |
"fileChanges":[ |
1405 |
("CWF_<site>_Overrides", "TextUtility", "add", CWFPeriod, "undo"), |
1406 |
], |
1407 |
}, |
1408 |
{ |
1409 |
"name": "CWF_Swell11", |
1410 |
"commentary": "CWF Swell phrase: 2 sub-phrases, Swell null in both, Swell2 same mag", |
1411 |
"productType": "CWF", |
1412 |
"createGrids": [ |
1413 |
("Fcst", "Swell", "VECTOR", 0, 6, (0,"N"), "all"), |
1414 |
("Fcst", "Swell2", "VECTOR", 0, 6, (10,"E"), "all"), |
1415 |
("Fcst", "Swell", "VECTOR", 6, 12, (0,"NW"), "all"), |
1416 |
("Fcst", "Swell2", "VECTOR", 6, 12, (7,"SE"), "all"), |
1417 |
], |
1418 |
"checkStrings": [ |
1419 |
"SWELL SOUTHEAST 7 TO 10 FEET", |
1420 |
], |
1421 |
"comboFlag": 1, |
1422 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1423 |
"gridsStartTime": "6am Local", |
1424 |
"drtTime": "4am Local", |
1425 |
"fileChanges":[ |
1426 |
("CWF_<site>_Overrides", "TextUtility", "add", CWFPeriod, "undo"), |
1427 |
], |
1428 |
}, |
1429 |
|
1430 |
### CWF_Swell_withPeriod |
1431 |
{ |
1432 |
"name": "CWF_Swell_withPeriod1", |
1433 |
"commentary": "CWF Swell phrase: Neither null", |
1434 |
"productType": "CWF", |
1435 |
"createGrids": [ |
1436 |
("Fcst", "Swell", "VECTOR", 0, 12, (7,"N"), "all"), |
1437 |
("Fcst", "Swell2", "VECTOR", 0, 12, (14,"E"), "all"), |
1438 |
("Fcst", "Period", "SCALAR", 0, 12, 5, "all"), |
1439 |
("Fcst", "Period2", "SCALAR", 0, 12, 10, "all"), |
1440 |
], |
1441 |
"checkStrings": [ |
1442 |
"MIXED SWELL NORTH AROUND 7 FEET AT 5 SECONDS AND EAST AROUND 14 FEET AT 10 SECONDS", |
1443 |
], |
1444 |
"comboFlag": 1, |
1445 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1446 |
"gridsStartTime": "6am Local", |
1447 |
"drtTime": "4am Local", |
1448 |
}, |
1449 |
{ |
1450 |
"name": "CWF_Swell_withPeriod2", |
1451 |
"commentary": "CWF Swell phrase: Swell2 Null", |
1452 |
"productType": "CWF", |
1453 |
"createGrids": [ |
1454 |
("Fcst", "Swell", "VECTOR", 0, 12, (7,"N"), "all"), |
1455 |
("Fcst", "Swell2", "VECTOR", 0, 12, (0,"E"), "all"), |
1456 |
("Fcst", "Period", "SCALAR", 0, 12, 5, "all"), |
1457 |
("Fcst", "Period2", "SCALAR", 0, 12, 10, "all"), |
1458 |
], |
1459 |
"checkStrings": [ |
1460 |
"NORTH SWELL AROUND 7 FEET AT 5 SECONDS", |
1461 |
], |
1462 |
"comboFlag": 1, |
1463 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1464 |
"gridsStartTime": "6am Local", |
1465 |
"drtTime": "4am Local", |
1466 |
}, |
1467 |
{ |
1468 |
"name": "CWF_Swell_withPeriod3", |
1469 |
"commentary": "CWF Swell phrase: Swell Null", |
1470 |
"productType": "CWF", |
1471 |
"createGrids": [ |
1472 |
("Fcst", "Swell", "VECTOR", 0, 12, (0,"N"), "all"), |
1473 |
("Fcst", "Swell2", "VECTOR", 0, 12, (14,"E"), "all"), |
1474 |
("Fcst", "Period", "SCALAR", 0, 12, 5, "all"), |
1475 |
("Fcst", "Period2", "SCALAR", 0, 12, 10, "all"), |
1476 |
], |
1477 |
"checkStrings": [ |
1478 |
"SWELL EAST AROUND 14 FEET AT 10 SECONDS", |
1479 |
], |
1480 |
"comboFlag": 1, |
1481 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1482 |
"gridsStartTime": "6am Local", |
1483 |
"drtTime": "4am Local", |
1484 |
}, |
1485 |
{ |
1486 |
"name": "CWF_Swell_withPeriod4", |
1487 |
"commentary": "CWF Swell phrase: 2 sub-phrases, neither null", |
1488 |
"productType": "CWF", |
1489 |
"createGrids": [ |
1490 |
("Fcst", "Swell", "VECTOR", 0, 6, (7,"N"), "all"), |
1491 |
("Fcst", "Swell2", "VECTOR", 0, 6, (12,"E"), "all"), |
1492 |
("Fcst", "Period", "SCALAR", 0, 6, 5, "all"), |
1493 |
("Fcst", "Period2", "SCALAR", 0, 6, 10, "all"), |
1494 |
("Fcst", "Swell", "VECTOR", 6, 14, (14,"NW"), "all"), |
1495 |
("Fcst", "Swell2", "VECTOR", 6, 14, (7,"SE"), "all"), |
1496 |
("Fcst", "Period", "SCALAR", 6, 14, 5, "all"), |
1497 |
("Fcst", "Period2", "SCALAR", 6, 14, 10, "all"), |
1498 |
], |
1499 |
"checkStrings": [ |
1500 |
"MIXED SWELL NORTH AROUND 7 FEET AT 5 SECONDS AND EAST AROUND 12 FEET AT 10 SECONDS INCREASING TO NORTHWEST AROUND 14 FEET AT 5 SECONDS AND SOUTHEAST AROUND 7 FEET AT 10 SECONDS IN THE AFTERNOON", |
1501 |
], |
1502 |
"comboFlag": 1, |
1503 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1504 |
"gridsStartTime": "6am Local", |
1505 |
"drtTime": "4am Local", |
1506 |
}, |
1507 |
|
1508 |
{ |
1509 |
"name": "CWF_Swell_withPeriod5", |
1510 |
"commentary": "CWF Swell phrase: 2 sub-phrases, Swell2 null in both", |
1511 |
"productType": "CWF", |
1512 |
"createGrids": [ |
1513 |
("Fcst", "Swell", "VECTOR", 0, 6, (7,"N"), "all"), |
1514 |
("Fcst", "Swell2", "VECTOR", 0, 6, (0,"E"), "all"), |
1515 |
("Fcst", "Period", "SCALAR", 0, 6, 5, "all"), |
1516 |
("Fcst", "Period2", "SCALAR", 0, 6, 10, "all"), |
1517 |
("Fcst", "Swell", "VECTOR", 6, 12, (14,"NW"), "all"), |
1518 |
("Fcst", "Swell2", "VECTOR", 6, 12, (0,"SE"), "all"), |
1519 |
("Fcst", "Period", "SCALAR", 6, 12, 5, "all"), |
1520 |
("Fcst", "Period2", "SCALAR", 6, 12, 10, "all"), |
1521 |
], |
1522 |
"checkStrings": [ |
1523 |
"NORTH SWELL AROUND 7 FEET AT 5 SECONDS INCREASING TO NORTHWEST AROUND 14 FEET AT 5 SECONDS IN THE AFTERNOON", |
1524 |
], |
1525 |
"comboFlag": 1, |
1526 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1527 |
"gridsStartTime": "6am Local", |
1528 |
"drtTime": "4am Local", |
1529 |
}, |
1530 |
{ |
1531 |
"name": "CWF_Swell_withPeriod6", |
1532 |
"commentary": "CWF Swell phrase: 2 sub-phrases, Swell and Swell2 null in both", |
1533 |
"productType": "CWF", |
1534 |
"createGrids": [ |
1535 |
("Fcst", "Swell", "VECTOR", 0, 6, (0,"N"), "all"), |
1536 |
("Fcst", "Swell2", "VECTOR", 0, 6, (0,"E"), "all"), |
1537 |
("Fcst", "Period", "SCALAR", 0, 6, 5, "all"), |
1538 |
("Fcst", "Period2", "SCALAR", 0, 6, 10, "all"), |
1539 |
("Fcst", "Swell", "VECTOR", 6, 12, (0,"NW"), "all"), |
1540 |
("Fcst", "Swell2", "VECTOR", 6, 12, (0,"SE"), "all"), |
1541 |
("Fcst", "Period", "SCALAR", 6, 12, 5, "all"), |
1542 |
("Fcst", "Period2", "SCALAR", 6, 12, 10, "all"), |
1543 |
], |
1544 |
"checkStrings": [ |
1545 |
"", |
1546 |
], |
1547 |
"comboFlag": 1, |
1548 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1549 |
"gridsStartTime": "6am Local", |
1550 |
"drtTime": "4am Local", |
1551 |
}, |
1552 |
{ |
1553 |
"name": "CWF_Swell_withPeriod7", |
1554 |
"commentary": "CWF Swell phrase: 2 sub-phrases, Swell null in both", |
1555 |
"productType": "CWF", |
1556 |
"createGrids": [ |
1557 |
("Fcst", "Swell", "VECTOR", 0, 6, (0,"N"), "all"), |
1558 |
("Fcst", "Swell2", "VECTOR", 0, 6, (14,"N"), "all"), |
1559 |
("Fcst", "Period", "SCALAR", 0, 6, 5, "all"), |
1560 |
("Fcst", "Period2", "SCALAR", 0, 6, 10, "all"), |
1561 |
("Fcst", "Swell", "VECTOR", 6, 12, (0,"NW"), "all"), |
1562 |
("Fcst", "Swell2", "VECTOR", 6, 12, (7,"SE"), "all"), |
1563 |
("Fcst", "Period", "SCALAR", 6, 12, 5, "all"), |
1564 |
("Fcst", "Period2", "SCALAR", 6, 12, 10, "all"), |
1565 |
], |
1566 |
"checkStrings": [ |
1567 |
"SWELL SOUTHEAST 8 TO 13 FEET", |
1568 |
], |
1569 |
"comboFlag": 1, |
1570 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1571 |
"gridsStartTime": "6am Local", |
1572 |
"drtTime": "4am Local", |
1573 |
}, |
1574 |
{ |
1575 |
"name": "CWF_Swell_withPeriod8", |
1576 |
"commentary": "CWF Swell phrase: 2 sub-phrases, Swell2 null in first", |
1577 |
"productType": "CWF", |
1578 |
"createGrids": [ |
1579 |
("Fcst", "Swell", "VECTOR", 0, 6, (7,"N"), "all"), |
1580 |
("Fcst", "Swell2", "VECTOR", 0, 6, (0,"E"), "all"), |
1581 |
("Fcst", "Period", "SCALAR", 0, 6, 5, "all"), |
1582 |
("Fcst", "Period2", "SCALAR", 0, 6, 10, "all"), |
1583 |
("Fcst", "Swell", "VECTOR", 6, 12, (14,"NW"), "all"), |
1584 |
("Fcst", "Swell2", "VECTOR", 6, 12, (7,"SE"), "all"), |
1585 |
("Fcst", "Period", "SCALAR", 6, 12, 5, "all"), |
1586 |
("Fcst", "Period2", "SCALAR", 6, 12, 10, "all"), |
1587 |
], |
1588 |
"checkStrings": [ |
1589 |
"NORTH SWELL AROUND 7 FEET AT 5 SECONDS INCREASING TO NORTHWEST AROUND 14 FEET AT 5 SECONDS AND SOUTHEAST AROUND 7 FEET AT 10 SECONDS IN THE AFTERNOON", |
1590 |
], |
1591 |
"comboFlag": 1, |
1592 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1593 |
"gridsStartTime": "6am Local", |
1594 |
"drtTime": "4am Local", |
1595 |
}, |
1596 |
{ |
1597 |
"name": "CWF_Swell_withPeriod9", |
1598 |
"commentary": "CWF Swell phrase: 2 sub-phrases, Swell null in first", |
1599 |
"productType": "CWF", |
1600 |
"createGrids": [ |
1601 |
("Fcst", "Swell", "VECTOR", 0, 6, (0,"N"), "all"), |
1602 |
("Fcst", "Swell2", "VECTOR", 0, 6, (14,"E"), "all"), |
1603 |
("Fcst", "Period", "SCALAR", 0, 6, 5, "all"), |
1604 |
("Fcst", "Period2", "SCALAR", 0, 6, 10, "all"), |
1605 |
("Fcst", "Swell", "VECTOR", 6, 12, (14,"NW"), "all"), |
1606 |
("Fcst", "Swell2", "VECTOR", 6, 12, (7,"SE"), "all"), |
1607 |
("Fcst", "Period", "SCALAR", 6, 12, 5, "all"), |
1608 |
("Fcst", "Period2", "SCALAR", 6, 12, 10, "all"), |
1609 |
], |
1610 |
"checkStrings": [ |
1611 |
"SWELL EAST AROUND 14 FEET AT 10 SECONDS INCREASING TO NORTHWEST AROUND 14 FEET AT 5 SECONDS AND SOUTHEAST AROUND 7 FEET AT 10 SECONDS IN THE AFTERNOON", |
1612 |
], |
1613 |
"comboFlag": 1, |
1614 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1615 |
"gridsStartTime": "6am Local", |
1616 |
"drtTime": "4am Local", |
1617 |
}, |
1618 |
{ |
1619 |
"name": "CWF_Swell_withPeriod10", |
1620 |
"commentary": "CWF Swell phrase: 2 sub-phrases, Swell same mag, Swell2 null in both", |
1621 |
"productType": "CWF", |
1622 |
"createGrids": [ |
1623 |
("Fcst", "Swell", "VECTOR", 0, 6, (7,"N"), "all"), |
1624 |
("Fcst", "Swell2", "VECTOR", 0, 6, (0,"E"), "all"), |
1625 |
("Fcst", "Period", "SCALAR", 0, 6, 5, "all"), |
1626 |
("Fcst", "Period2", "SCALAR", 0, 6, 10, "all"), |
1627 |
("Fcst", "Swell", "VECTOR", 6, 12, (10,"NW"), "all"), |
1628 |
("Fcst", "Swell2", "VECTOR", 6, 12, (0,"SE"), "all"), |
1629 |
("Fcst", "Period", "SCALAR", 6, 12, 5, "all"), |
1630 |
("Fcst", "Period2", "SCALAR", 6, 12, 10, "all"), |
1631 |
], |
1632 |
"checkStrings": [ |
1633 |
"NORTHWEST SWELL 7 TO 10 FEET AT 5 SECONDS", |
1634 |
], |
1635 |
"comboFlag": 1, |
1636 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1637 |
"gridsStartTime": "6am Local", |
1638 |
"drtTime": "4am Local", |
1639 |
}, |
1640 |
|
1641 |
{ |
1642 |
"name": "CWF_Swell_withPeriod11", |
1643 |
"commentary": "CWF Swell phrase: 2 sub-phrases, Swell null in both, Swell2 same mag", |
1644 |
"productType": "CWF", |
1645 |
"createGrids": [ |
1646 |
("Fcst", "Swell", "VECTOR", 0, 6, (0,"N"), "all"), |
1647 |
("Fcst", "Swell2", "VECTOR", 0, 6, (10,"E"), "all"), |
1648 |
("Fcst", "Period", "SCALAR", 0, 6, 5, "all"), |
1649 |
("Fcst", "Period2", "SCALAR", 0, 6, 10, "all"), |
1650 |
("Fcst", "Swell", "VECTOR", 6, 12, (0,"NW"), "all"), |
1651 |
("Fcst", "Swell2", "VECTOR", 6, 12, (7,"SE"), "all"), |
1652 |
("Fcst", "Period", "SCALAR", 6, 12, 5, "all"), |
1653 |
("Fcst", "Period2", "SCALAR", 6, 12, 10, "all"), |
1654 |
], |
1655 |
"checkStrings": [ |
1656 |
"SWELL SOUTHEAST 7 TO 10 FEET AT 10 SECONDS", |
1657 |
], |
1658 |
"comboFlag": 1, |
1659 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1660 |
"gridsStartTime": "6am Local", |
1661 |
"drtTime": "4am Local", |
1662 |
}, |
1663 |
|
1664 |
# TK 4688 Null Swell |
1665 |
{ |
1666 |
"name": "CWF_NullSwell", |
1667 |
"commentary": "CWF Swell phrase: Test user-set null phrase", |
1668 |
"productType": "CWF", |
1669 |
"createGrids": [ |
1670 |
("Fcst", "Swell", "VECTOR", 0, 12, (2,"N"), "all"), |
1671 |
("Fcst", "Swell2", "VECTOR", 0, 12, (2,"N"), "all"), |
1672 |
], |
1673 |
"checkStrings": [ |
1674 |
"LIGHT SWELLS", |
1675 |
], |
1676 |
"comboFlag": 1, |
1677 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1678 |
"gridsStartTime": "6am Local", |
1679 |
"drtTime": "4am Local", |
1680 |
"fileChanges":[ |
1681 |
("CWF_<site>_Overrides", "TextUtility", "add", CWFPeriod, "undo"), |
1682 |
("CWF_<site>_Overrides", "TextUtility", "add", nullSwell, "undo"), |
1683 |
], |
1684 |
}, |
1685 |
|
1686 |
{ |
1687 |
"name":"SwellPeriodCleanUp", |
1688 |
"commentary": "Clean out grids", |
1689 |
"productType": None, |
1690 |
"deleteGrids": [ |
1691 |
("Fcst", "Swell", "SFC", 0,280), |
1692 |
("Fcst", "Swell2", "SFC", 0,280), |
1693 |
("Fcst", "Period", "SFC", 0,280), |
1694 |
("Fcst", "Period2", "SFC", 0,280), |
1695 |
], |
1696 |
"gridsStartTime": "6am Local", |
1697 |
}, |
1698 |
|
1699 |
|
1700 |
## Period Combining Matt Foster |
1701 |
{ |
1702 |
"name": "PeriodCombine1", |
1703 |
"commentary": "Period combining with NoWx and SChc", |
1704 |
"productType": "ZFP", |
1705 |
"createGrids": [#TestScript.general_createGrids + [ |
1706 |
("Fcst", "Sky", "SCALAR", 48, 72, 0, "all"), |
1707 |
("Fcst", "Sky", "SCALAR", 72, 78, 0, "all"), |
1708 |
("Fcst", "Sky", "SCALAR", 78, 84, 0, "all"), |
1709 |
("Fcst", "Sky", "SCALAR", 84, 90, 0, "all"), |
1710 |
("Fcst", "Sky", "SCALAR", 90, 96, 0, "all"), |
1711 |
("Fcst", "Sky", "SCALAR", 96, 102, 0, "all"), |
1712 |
("Fcst", "Sky", "SCALAR", 102, 108, 0, "all"), |
1713 |
("Fcst", "Sky", "SCALAR", 108, 114, 0, "all"), |
1714 |
("Fcst", "Sky", "SCALAR", 114, 120, 40, "all"), |
1715 |
("Fcst", "Wx", "WEATHER", 48, 72, "NoWx", "all"), |
1716 |
("Fcst", "Wx", "WEATHER", 72, 78, "NoWx", "all"), |
1717 |
("Fcst", "Wx", "WEATHER", 78, 84, "NoWx", "all"), |
1718 |
("Fcst", "Wx", "WEATHER", 84, 90, "NoWx", "all"), |
1719 |
("Fcst", "Wx", "WEATHER", 90, 96, "NoWx", "all"), |
1720 |
("Fcst", "Wx", "WEATHER", 96, 102, "NoWx", "all"), |
1721 |
("Fcst", "Wx", "WEATHER", 102, 108, "NoWx", "all"), |
1722 |
("Fcst", "Wx", "WEATHER", 108, 114, "NoWx", "all"), |
1723 |
("Fcst", "Wx", "WEATHER", 114, 128, "NoWx", "all"), |
1724 |
("Fcst", "Wx", "WEATHER", 128, 142, "SChc:T:<NoInten>:<NoVis>:", "all"), |
1725 |
#("Fcst", "Wx", "WEATHER", 128, 152, "NoWx", "all"), |
1726 |
("Fcst", "PoP", "SCALAR", 48, 128, 0, "all"), |
1727 |
("Fcst", "PoP", "SCALAR", 128, 142, 20, "all"), |
1728 |
#("Fcst", "PoP", "SCALAR", 128, 152, 0, "all"), |
1729 |
## ("Fcst", "MaxT", "SCALAR", "MaxTBegin+24", "MaxTEnd+24", 70, "all"), |
1730 |
## ("Fcst", "MinT", "SCALAR", "MinTBegin+24", "MinTEnd+24", 43, "all"), |
1731 |
## ("Fcst", "MaxT", "SCALAR", "MaxTBegin+48", "MaxTEnd+48", 70, "all"), |
1732 |
## ("Fcst", "MinT", "SCALAR", "MinTBegin+48", "MinTEnd+48", 43, "all"), |
1733 |
## ("Fcst", "MaxT", "SCALAR", "MaxTBegin+60", "MaxTEnd+60", 70, "all"), |
1734 |
## ("Fcst", "MinT", "SCALAR", "MinTBegin+60", "MinTEnd+60", 43, "all"), |
1735 |
## ("Fcst", "MaxT", "SCALAR", "MaxTBegin+72", "MaxTEnd+72", 70, "all"), |
1736 |
## ("Fcst", "MinT", "SCALAR", "MinTBegin+72", "MinTEnd+72", 43, "all"), |
1737 |
## ("Fcst", "Wind", "VECTOR", 36, 72, (10, "SW"), "all"), |
1738 |
], |
1739 |
"checkStrings": [ |
1740 |
"SUNDAY NIGHT THROUGH WEDNESDAY NIGHT...", |
1741 |
], |
1742 |
"fileChanges": [ |
1743 |
("ZFP_<site>_Definition", "TextUtility", "replace", |
1744 |
(periodCombine1, periodCombine2), "undo"), |
1745 |
("ZFP_<site>_Definition", "TextUtility", "replace", |
1746 |
(hoursSChc1, hoursSChc2), "undo"), |
1747 |
("ZFP_<site>_Overrides", "TextUtility", "add", pcElementList, "undo"), |
1748 |
], |
1749 |
"comboFlag": 1, |
1750 |
"gridsStartTime": "6am Local", |
1751 |
"drtTime": "6am Local", |
1752 |
}, |
1753 |
|
1754 |
# TK 4475 hoursSChcEnds handling pre-first period |
1755 |
{ |
1756 |
"name": "hoursSChcEnds1", |
1757 |
"commentary": "hoursSChcEnds for pre-first period", |
1758 |
"productType": "ZFP", |
1759 |
"createGrids": [ |
1760 |
("Fcst", "PoP", "SCALAR", -6, 12, 15, "all", 1), |
1761 |
("Fcst", "Wx", "WEATHER", -6, 0, "SChc:T:<NoInten>:<NoVis>:", "all"), |
1762 |
("Fcst", "Wx", "WEATHER", 0, 12,"SChc:T:<NoInten>:<NoVis>:", "all"), |
1763 |
], |
1764 |
"cmdLineVars" : "{('Product Issuance', 'productIssuance'): 'Morning with Pre-1st Period', ('Issued By', 'issuedBy'): None}", |
1765 |
"checkStrings": [ |
1766 |
"A 20 PERCENT CHANCE OF THUNDERSTORMS", |
1767 |
], |
1768 |
"comboFlag": 1, |
1769 |
|
1770 |
}, |
1771 |
|
1772 |
## Period Combining Label ER Tk 4468 |
1773 |
{ |
1774 |
"name": "PeriodCombineLabel1", |
1775 |
"commentary": "Period combining labelling for CWF", |
1776 |
"productType": "CWF", |
1777 |
"createGrids": [#TestScript.general_createGrids + [ |
1778 |
("Fcst", "Sky", "SCALAR", 48, 72, 0, "all"), |
1779 |
("Fcst", "Sky", "SCALAR", 72, 78, 0, "all"), |
1780 |
("Fcst", "Sky", "SCALAR", 78, 84, 0, "all"), |
1781 |
("Fcst", "Sky", "SCALAR", 84, 90, 0, "all"), |
1782 |
("Fcst", "Sky", "SCALAR", 90, 96, 0, "all"), |
1783 |
("Fcst", "Sky", "SCALAR", 96, 102, 0, "all"), |
1784 |
("Fcst", "Sky", "SCALAR", 102, 108, 0, "all"), |
1785 |
("Fcst", "Sky", "SCALAR", 108, 114, 0, "all"), |
1786 |
("Fcst", "Sky", "SCALAR", 114, 120, 40, "all"), |
1787 |
("Fcst", "Wx", "WEATHER", 48, 72, "Chc:RW:-:<NoVis>:", "all"), |
1788 |
("Fcst", "Wx", "WEATHER", 72, 78, "Chc:RW:-:<NoVis>:", "all"), |
1789 |
("Fcst", "Wx", "WEATHER", 78, 84, "NoWx", "all"), |
1790 |
("Fcst", "Wx", "WEATHER", 84, 90, "NoWx", "all"), |
1791 |
("Fcst", "Wx", "WEATHER", 90, 96, "NoWx", "all"), |
1792 |
("Fcst", "Wx", "WEATHER", 96, 102, "NoWx", "all"), |
1793 |
("Fcst", "Wx", "WEATHER", 102, 108, "NoWx", "all"), |
1794 |
("Fcst", "Wx", "WEATHER", 108, 114, "NoWx", "all"), |
1795 |
("Fcst", "Wx", "WEATHER", 114, 128, "NoWx", "all"), |
1796 |
("Fcst", "Wx", "WEATHER", 128, 142, "SChc:T:<NoInten>:<NoVis>:", "all"), |
1797 |
("Fcst", "PoP", "SCALAR", 48, 128, 30, "all"), |
1798 |
("Fcst", "PoP", "SCALAR", 128, 142, 30, "all"), |
1799 |
], |
1800 |
"checkStrings": [ |
1801 |
".SUNDAY AND SUNDAY NIGHT...", "CHANCE OF SHOWERS.", |
1802 |
".MONDAY THROUGH TUESDAY...", |
1803 |
], |
1804 |
"fileChanges":[ |
1805 |
("CWF_<site>_Definition", "TextUtility", "add", periodCombine2, "undo"), |
1806 |
("CWF_<site>_Overrides", "TextUtility", "add", pcElementList, "undo"), |
1807 |
], |
1808 |
"comboFlag": 1, |
1809 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1810 |
"gridsStartTime": "6am Local", |
1811 |
"drtTime": "6am Local", |
1812 |
}, |
1813 |
|
1814 |
# Visibility phrase tests TK 4658 |
1815 |
{ |
1816 |
"name": "CWF_Vis", |
1817 |
"commentary": "CWF Visibility phrase: 1st period SChc:SW, 2nd period Sct:RW", |
1818 |
"productType": "CWF", |
1819 |
"fileChanges":[ |
1820 |
("CWF_<site>_Overrides", "TextUtility", "add", marine_wx, "undo"), |
1821 |
], |
1822 |
"createGrids": [ |
1823 |
("Fcst", "Wx", "WEATHER", 0, 12, "SChc:SW:-:2SM:", "all"), |
1824 |
("Fcst", "Wx", "WEATHER", 12, 24, "Sct:RW:-:1/4SM:", "all"), |
1825 |
("Fcst", "PoP", "SCALAR", 0, 12, 10, "all"), |
1826 |
("Fcst", "PoP", "SCALAR", 12, 24, 50, "all"), |
1827 |
], |
1828 |
"checkStrings": [ |
1829 |
".TONIGHT...", "SCATTERED SHOWERS", "VISIBILITY 1 NM OR LESS", |
1830 |
".SATURDAY...", |
1831 |
], |
1832 |
"notCheckStrings":[ |
1833 |
"SCATTERED SNOW SHOWERS", "VISIBILITY 2 NM", |
1834 |
], |
1835 |
"comboFlag": 1, |
1836 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1837 |
"gridsStartTime": "6am Local", |
1838 |
"drtTime": "4am Local", |
1839 |
}, |
1840 |
{ |
1841 |
"name": "GLF_Vis", |
1842 |
"commentary": "GLF Visibility phrase: 1st period SChc:SW, 2nd period Sct:RW", |
1843 |
"productType": "GLF", |
1844 |
"fileChanges":[ |
1845 |
("GLF_<site>_Overrides", "TextUtility", "add", marine_wx, "undo"), |
1846 |
], |
1847 |
"createGrids": [ |
1848 |
("Fcst", "Wx", "WEATHER", 0, 12, "SChc:SW:-:2SM:", "all"), |
1849 |
("Fcst", "Wx", "WEATHER", 12, 24, "Sct:RW:-:1/4SM:", "all"), |
1850 |
("Fcst", "PoP", "SCALAR", 0, 12, 10, "all"), |
1851 |
("Fcst", "PoP", "SCALAR", 12, 24, 50, "all"), |
1852 |
], |
1853 |
"checkStrings": [ |
1854 |
".TONIGHT...", "SCATTERED SHOWERS", "VSBY ONE QUARTER MILE OR LESS AT TIMES", |
1855 |
".SAT...", |
1856 |
], |
1857 |
"notCheckStrings":[ |
1858 |
"SCATTERED SNOW SHOWERS", |
1859 |
], |
1860 |
"comboFlag": 1, |
1861 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '400 AM', ('Groupings', 'groupings'): 'West 1/2:East 1/2'}", |
1862 |
"gridsStartTime": "6am Local", |
1863 |
"drtTime": "4am Local", |
1864 |
}, |
1865 |
{ |
1866 |
"name": "NSH_Vis", |
1867 |
"commentary": "NSH Visibility phrase: 1st period SChc:SW, 2nd period Sct:RW", |
1868 |
"productType": "NSH", |
1869 |
"fileChanges":[ |
1870 |
("NSH_<site>_Overrides", "TextUtility", "add", marine_wx, "undo"), |
1871 |
], |
1872 |
"createGrids": [ |
1873 |
("Fcst", "Wx", "WEATHER", 0, 12, "SChc:SW:-:2SM:", "all"), |
1874 |
("Fcst", "Wx", "WEATHER", 12, 24, "Sct:RW:-:1/4SM:", "all"), |
1875 |
("Fcst", "PoP", "SCALAR", 0, 12, 10, "all"), |
1876 |
("Fcst", "PoP", "SCALAR", 12, 24, 50, "all"), |
1877 |
], |
1878 |
"checkStrings": [ |
1879 |
".TONIGHT...", "SCATTERED SHOWERS", |
1880 |
"VISIBILITY ONE QUARTER MILE OR LESS AT TIMES", |
1881 |
".SATURDAY...", |
1882 |
], |
1883 |
"notCheckStrings":[ |
1884 |
"SCATTERED SNOW SHOWERS", "VISIBILITY 2 NM", |
1885 |
], |
1886 |
"comboFlag": 1, |
1887 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '430 AM', ('Issued By', 'issuedBy'): None}", |
1888 |
"gridsStartTime": "6am Local", |
1889 |
"drtTime": "4am Local", |
1890 |
}, |
1891 |
{ |
1892 |
"name": "OFF_Vis", |
1893 |
"commentary": "OFF Visibility phrase: 1st period SChc:SW, 2nd period Sct:RW", |
1894 |
"productType": "OFF", |
1895 |
"fileChanges":[ |
1896 |
("OFF_<site>_Overrides", "TextUtility", "add", marine_wx, "undo"), |
1897 |
], |
1898 |
"createGrids": [ |
1899 |
("Fcst", "Wx", "WEATHER", 0, 12, "SChc:SW:-:2SM:", "all"), |
1900 |
("Fcst", "Wx", "WEATHER", 12, 24, "Sct:RW:-:1/4SM:", "all"), |
1901 |
("Fcst", "PoP", "SCALAR", 0, 12, 10, "all"), |
1902 |
("Fcst", "PoP", "SCALAR", 12, 24, 50, "all"), |
1903 |
], |
1904 |
"checkStrings": [ |
1905 |
".TONIGHT...", "SCATTERED SHOWERS", "VISIBILITY 1 NM OR LESS", |
1906 |
".SATURDAY...", |
1907 |
], |
1908 |
"notCheckStrings":[ |
1909 |
"SCATTERED SNOW SHOWERS", "VISIBILITY 2 NM", |
1910 |
], |
1911 |
"comboFlag": 1, |
1912 |
"cmdLineVars": "{('Product Issuance', 'productIssuance'): '400 AM', ('Issued By', 'issuedBy'): None}", |
1913 |
"gridsStartTime": "6am Local", |
1914 |
"drtTime": "4am Local", |
1915 |
}, |
1916 |
|
1917 |
{ |
1918 |
"name": "ZFP_Vis", |
1919 |
"commentary": "Visibility: Report for significant key BS, not for RW", |
1920 |
"productType": "ZFP", |
1921 |
"createGrids": [ |
1922 |
("Fcst", "Wx", "WEATHER", 0, 12, "Sct:RW:-:1/4SM:", "all"), |
1923 |
("Fcst", "Wx", "WEATHER", 12, 24, "Areas:BS:<NoInten>:1/4SM:", "all"), |
1924 |
("Fcst", "PoP", "SCALAR", 0, 12, 50, "all"), |
1925 |
("Fcst", "PoP", "SCALAR", 12, 24, 10, "all"), |
1926 |
], |
1927 |
"checkStrings": [ |
1928 |
".TODAY...", "SCATTERED SHOWERS", |
1929 |
".TONIGHT...", "AREAS OF BLOWING SNOW.", |
1930 |
"VISIBILITY ONE QUARTER MILE OR LESS AT TIMES.", |
1931 |
".SATURDAY...", |
1932 |
], |
1933 |
"gridsStartTime": "6am Local", |
1934 |
"drtTime": "4am Local", |
1935 |
}, |
1936 |
|
1937 |
{ |
1938 |
"name":"General_CleanUp", |
1939 |
"commentary": "Clean out grids", |
1940 |
"productType": None, |
1941 |
"deleteGrids": TestScript.general_deleteGrids, |
1942 |
"gridsStartTime": "6am Local", |
1943 |
}, |
1944 |
|
1945 |
] |
1946 |
|
1947 |
def testScript(self, dataMgr, level="Site"): |
1948 |
defaults = { |
1949 |
"database": "<site>_GRID__Fcst_00000000_0000", |
1950 |
"combinations": "ZONE", |
1951 |
} |
1952 |
# Necessary to do drt for scripts |
1953 |
# that start the product with current time |
1954 |
time_4am = self.getAbsFromLocal(2010, 1, 1, 4, 0) |
1955 |
time_6am = self.getAbsFromLocal(2010, 1, 1, 6, 0) |
1956 |
for script in scripts: |
1957 |
if script.get("gridsStartTime", None) == "6am Local": |
1958 |
script["gridsStartTime"] = time_6am |
1959 |
if script.get("drtTime", None) == "4am Local": |
1960 |
script["drtTime"] = time_6am |
1961 |
elif script.get("drtTime", None) == "6am Local": |
1962 |
script["drtTime"] = time_6am |
1963 |
return TestScript.generalTestScript(self, dataMgr, scripts, defaults) |
1964 |
|
1965 |
|