class Item(object): def __init__(self, *initial_data, **kwargs): for dictionary in initial_data: for key in dictionary: setattr(self, key, dictionary[key]) for key in kwargs: setattr(self, key, kwargs[key]) #class GenerateNexradTable(object): # import numpy as np # import json # # find this file locally and confirm location # filename = '~/awips2-builds/edexOsgi/com.raytheon.edex.plugin.radar/utility/common_static/base/radarInfoSimple.txt' # data = np.genfromtxt( # filename, # delimiter=",", # autostrip=True, # skip_header=0, # names=True, # dtype=None) # # for x in data: # defn = Item(dict(zip(data.dtype.names, x))) # prod = dict(zip(data.dtype.names, x)) # nexrad[defn.id] = prod # # return json.dumps(nexrad, indent=1) profiler = { "74997" : { "profilerId": "ASTC1", "latitude": 46.16, "longitude": -123.88, "elevation": 3, "profilerName": "Astoria OR"}, "74996" : { "profilerId": "BGDC1", "latitude": 38.32, "longitude": -123.07, "elevation": 13, "profilerName": "Bodega Bay CA"}, "74995" : { "profilerId": "FKSC1", "latitude": 47.97, "longitude": -124.40, "elevation": 92, "profilerName": "Forks WA"}, "74998" : { "profilerId": "ACVC1", "latitude": 40.97, "longitude": -124.11, "elevation": 56, "profilerName": "McKinleyville CA"}, "74994" : { "profilerId": "OTHC1", "latitude": 43.42, "longitude": -124.24, "elevation": 5, "profilerName": "North Bend OR"}, "74993" : { "profilerId": "PTSC1", "latitude": 36.30, "longitude": -121.89, "elevation": 11, "profilerName": "Point Sur CA"}, "74992" : { "profilerId": "SBAC1", "latitude": 34.43, "longitude": -119.85, "elevation": 4, "profilerName": "Santa Barbara CA"}, "74991" : { "profilerId": "PVLC1", "latitude": 40.18, "longitude": -104.73, "elevation": 1503, "profilerName": "Platteville CO"}, "74990" : { "profilerId": "TDEC1", "latitude": 45.55, "longitude": -122.39, "elevation": 12, "profilerName": "Troutdale OR"}, "74989" : { "profilerId": "CCOC1", "latitude": 39.70, "longitude": -121.91, "elevation": 42, "profilerName": "Chico CA"} } nexrad = { "2": { "layer": 0, "name": "NEXRAD Unit Status Msg", "res": 0.0, "mnemo": "GSM", "range": 0, "lvls": 0, "id": 2, "unit": "" }, "3": { "layer": 0, "name": "Product Request Resp", "res": 0.0, "mnemo": "PRR", "range": 0, "lvls": 0, "id": 3, "unit": "" }, "8": { "layer": 0, "name": "Product List", "res": 0.0, "mnemo": "PTL", "range": 0, "lvls": 0, "id": 8, "unit": "" }, "12": { "layer": 0, "name": "Command Parameter Msg", "res": 0.0, "mnemo": "CPM", "range": 0, "lvls": 0, "id": 12, "unit": "" }, "14": { "layer": 0, "name": "Command Control Msg", "res": 0.0, "mnemo": "CCM", "range": 0, "lvls": 0, "id": 14, "unit": "" }, "16": { "layer": 0, "name": "Reflectivity", "res": 1.0, "mnemo": "Z", "range": 230, "lvls": 8, "id": 16, "unit": "dBZ" }, "17": { "layer": 0, "name": "Reflectivity", "res": 2.0, "mnemo": "Z", "range": 460, "lvls": 8, "id": 17, "unit": "dBZ" }, "18": { "layer": 0, "name": "Reflectivity", "res": 4.0, "mnemo": "Z", "range": 460, "lvls": 8, "id": 18, "unit": "dBZ" }, "19": { "layer": 0, "name": "Reflectivity", "res": 1.0, "mnemo": "Z", "range": 230, "lvls": 16, "id": 19, "unit": "dBZ" }, "20": { "layer": 0, "name": "Reflectivity", "res": 2.0, "mnemo": "Z", "range": 460, "lvls": 16, "id": 20, "unit": "dBZ" }, "21": { "layer": 0, "name": "Reflectivity", "res": 4.0, "mnemo": "Z", "range": 460, "lvls": 16, "id": 21, "unit": "dBZ" }, "22": { "layer": 0, "name": "Velocity", "res": 0.25, "mnemo": "V", "ctable": ['NWS8bitVel', -100., 1.], "scale": [-100, 100], "range": 60, "lvls": 8, "id": 22, "unit": "kts" }, "23": { "layer": 0, "name": "Velocity", "ctable": ['NWS8bitVel', -100., 1.], "scale": [-100, 100], "res": 0.5, "mnemo": "V", "range": 115, "lvls": 8, "id": 23, "unit": "kts" }, "24": { "layer": 0, "name": "Velocity", "ctable": ['NWS8bitVel', -100., 1.], "scale": [-100, 100], "res": 1.0, "mnemo": "V", "range": 230, "lvls": 8, "id": 24, "unit": "kts" }, "25": { "layer": 0, "name": "Velocity", "ctable": ['NWS8bitVel', -100., 1.], "scale": [-100, 100], "res": 0.25, "mnemo": "V", "range": 60, "lvls": 16, "id": 25, "unit": "kts" }, "26": { "layer": 0, "name": "Velocity", "ctable": ['NWS8bitVel', -100., 1.], "scale": [-100, 100], "res": 0.5, "mnemo": "V", "range": 115, "lvls": 16, "id": 26, "unit": "kts" }, "27": { "layer": 0, "name": "Velocity", "ctable": ['NWS8bitVel', -100., 1.], "scale": [-100, 100], "res": 1.0, "mnemo": "V", "range": 230, "lvls": 16, "id": 27, "unit": "kts" }, "28": { "layer": 0, "name": "Spectrum Width", "res": 0.25, "mnemo": "SW", "range": 60, "lvls": 8, "id": 28, "unit": "kts" }, "29": { "layer": 0, "name": "Spectrum Width", "res": 0.5, "mnemo": "SW", "range": 115, "lvls": 8, "id": 29, "unit": "kts" }, "30": { "layer": 0, "name": "Spectrum Width", "res": 1.0, "mnemo": "SW", "range": 230, "lvls": 8, "id": 30, "unit": "kts" }, "31": { "layer": 0, "name": "User Select Precip", "res": 2.0, "mnemo": "USP", "range": 460, "lvls": 16, "id": 31, "unit": "in" }, "32": { "layer": 0, "name": "Digital Hybrid Scan Refl", "res": 1.0, "mnemo": "DHR", "ctable": ['NWSStormClearReflectivity', -20., 0.5], "scale": [-32.0, 94.5], "range": 230, "lvls": 256, "id": 32, "unit": "dBZ/10" }, "33": { "layer": 0, "name": "Hybrid Scan Reflectivity", "res": 1.0, "mnemo": "HSR", "range": 230, "lvls": 16, "id": 33, "unit": "dBZ" }, "34": { "layer": 0, "name": "Clutter Filter Control", "res": 1.0, "mnemo": "CFC", "range": 230, "lvls": 8, "id": 34, "unit": "" }, "35": { "layer": 0, "name": "Composite Refl", "res": 1.0, "mnemo": "CZ", "range": 230, "lvls": 8, "id": 35, "unit": "dBZ" }, "36": { "layer": 0, "name": "Composite Refl", "res": 4.0, "mnemo": "CZ", "range": 460, "lvls": 8, "id": 36, "unit": "dBZ" }, "37": { "layer": 0, "name": "Composite Refl", "res": 1.0, "mnemo": "CZ", "range": 230, "lvls": 16, "id": 37, "unit": "dBZ" }, "38": { "layer": 0, "name": "Composite Refl", "res": 4.0, "mnemo": "CZ", "range": 460, "lvls": 16, "id": 38, "unit": "dBZ" }, "41": { "layer": 0, "name": "Echo Tops", "res": 4.0, "mnemo": "ET", "range": 230, "lvls": 16, "id": 41, "unit": "ft*1000" }, "43": { "layer": 0, "name": "Svr Wx Analysis - Ref", "res": 1.0, "mnemo": "SWR", "range": 230, "lvls": 16, "id": 43, "unit": "" }, "44": { "layer": 0, "name": "Svr Wx Analysis - Vel", "res": 0.25, "mnemo": "SWV", "range": 230, "lvls": 16, "id": 44, "unit": "" }, "45": { "layer": 0, "name": "Svr Wx Analysis - SW", "res": 0.25, "mnemo": "SWW", "range": 230, "lvls": 8, "id": 45, "unit": "" }, "46": { "layer": 0, "name": "Svr Wx Analysis - Shear", "res": 0.5, "mnemo": "SWS", "range": 230, "lvls": 16, "id": 46, "unit": "" }, "47": { "layer": 0, "name": "Severe Wx Prob", "res": 4.0, "mnemo": "SWP", "range": 230, "lvls": 0, "id": 47, "unit": "" }, "48": { "layer": 0, "name": "VAD Wind Profile", "res": 0.0, "mnemo": "VWP", "range": 0, "lvls": 8, "id": 48, "unit": "kts" }, "50": { "layer": 0, "name": "Ref X-Sect", "res": 1.0, "mnemo": "RCS", "range": 230, "lvls": 16, "id": 50, "unit": "dBZ" }, "51": { "layer": 0, "name": "Vel X-Sect", "res": 0.5, "mnemo": "VCS", "range": 230, "lvls": 16, "id": 51, "unit": "kts" }, "55": { "layer": 0, "name": "Storm Rel Vel Region", "res": 0.5, "mnemo": "SRR", "range": 230, "lvls": 16, "id": 55, "unit": "kts" }, "56": { "layer": 0, "name": "Storm Rel Velocity", "ctable": ['NWS8bitVel', -100., 1.], "scale": [-100, 100], "res": 1.0, "mnemo": "SRM", "range": 230, "lvls": 16, "id": 56, "unit": "kts" }, "57": { "layer": 0, "name": "Vert Integ Liq", "res": 4.0, "mnemo": "VIL", "range": 230, "lvls": 16, "id": 57, "unit": "kg/m\u00b2" }, "58": { "layer": 0, "name": "Storm Track", "res": 0.0, "mnemo": "STI", "range": 345, "lvls": 0, "id": 58, "unit": "" }, "59": { "layer": 0, "name": "Hail Index", "res": 0.0, "mnemo": "HI", "range": 230, "lvls": 0, "id": 59, "unit": "" }, "60": { "layer": 0, "name": "Legacy Meso", "res": 0.0, "mnemo": "M", "range": 230, "lvls": 0, "id": 60, "unit": "" }, "61": { "layer": 0, "name": "Tornadic Vortex Sig", "res": 0.0, "mnemo": "TVS", "range": 230, "lvls": 0, "id": 61, "unit": "" }, "62": { "layer": 0, "name": "Storm Structure", "res": 0.0, "mnemo": "SS", "range": 460, "lvls": 0, "id": 62, "unit": "" }, "65": { "layer": 1, "name": "Layer 1 Max Refl", "res": 4.0, "mnemo": "LRM", "range": 460, "lvls": 8, "id": 65, "unit": "dBZ" }, "66": { "layer": 2, "name": "Lyr 2 Comp Ref Max", "res": 4.0, "mnemo": "LRM", "range": 460, "lvls": 8, "id": 66, "unit": "dBZ" }, "67": { "layer": 1, "name": "Lyr 1 Comp Ref Max", "res": 4.0, "mnemo": "APR", "range": 460, "lvls": 8, "id": 67, "unit": "dBZ" }, "74": { "layer": 0, "name": "Radar Coded Message", "res": 0.0, "mnemo": "RCM", "range": 460, "lvls": 0, "id": 74, "unit": "" }, "75": { "layer": 0, "name": "Free Text Message", "res": 0.0, "mnemo": "FTM", "range": 0, "lvls": 0, "id": 75, "unit": "" }, "77": { "layer": 0, "name": "PUP Text Message", "res": 0.0, "mnemo": "PTM", "range": 0, "lvls": 0, "id": 77, "unit": "" }, "78": { "layer": 0, "name": "One Hour Precip", "res": 2.0, "mnemo": "OHP", "range": 460, "lvls": 16, "id": 78, "unit": "in" }, "79": { "layer": 0, "name": "Three Hour Precip", "res": 2.0, "mnemo": "THP", "range": 460, "lvls": 16, "id": 79, "unit": "in" }, "80": { "layer": 0, "name": "Storm Total Precip", "res": 2.0, "mnemo": "STP", "range": 460, "lvls": 16, "id": 80, "unit": "in" }, "81": { "layer": 0, "name": "Digital Precip Array", "res": 4.0, "mnemo": "DPA", "range": 230, "lvls": 256, "id": 81, "unit": "" }, "82": { "layer": 0, "name": "Supplemental Precip Data", "res": 40.0, "mnemo": "SPD", "range": 230, "lvls": 8, "id": 82, "unit": "" }, "83": { "layer": 0, "name": "Intermediate Radar Message", "res": 0.0, "mnemo": "IRM", "range": 0, "lvls": 0, "id": 83, "unit": "" }, "84": { "layer": 0, "name": "Velocity Azimuth Disp", "res": 0.0, "mnemo": "VAD", "range": 0, "lvls": 8, "id": 84, "unit": "dBZ" }, "85": { "layer": 0, "name": "Ref X-Sect", "res": 1.0, "mnemo": "RCS", "range": 230, "lvls": 8, "id": 85, "unit": "dBZ" }, "86": { "layer": 0, "name": "Vel X-Sect", "res": 0.5, "mnemo": "VCS", "range": 230, "lvls": 8, "id": 86, "unit": "kts" }, "87": { "layer": 0, "name": "Combined Shear", "res": 2.0, "mnemo": "CS", "range": 230, "lvls": 16, "id": 87, "unit": "" }, "90": { "layer": 3, "name": "Lyr 3 Comp Ref Max", "res": 4.0, "mnemo": "LRM", "range": 460, "lvls": 8, "id": 90, "unit": "dBZ" }, "93": { "layer": 0, "name": "ITWS Digital Velocity", "res": 1.0, "mnemo": "DBV", "range": 115, "lvls": 256, "id": 93, "unit": "(m/s)/10" }, "94": { "layer": 0, "name": "Reflectivity", "res": 1.0, "mnemo": "Z", "range": 460, "ctable": ['NWSStormClearReflectivity', -20., 0.5], "scale": [-32.0, 94.5], "lvls": 256, "id": 94, "unit": "dBZ/10" }, "95": { "layer": 0, "name": "Comp Refl Edited for AP", "res": 1.0, "mnemo": "CZE", "range": 230, "lvls": 8, "id": 95, "unit": "dBZ" }, "96": { "layer": 0, "name": "Comp Refl Edited for AP", "res": 4.0, "mnemo": "CZE", "range": 460, "lvls": 8, "id": 96, "unit": "dBZ" }, "97": { "layer": 0, "name": "Comp Refl Edited for AP", "res": 1.0, "mnemo": "CZE", "range": 230, "lvls": 16, "id": 97, "unit": "dBZ" }, "98": { "layer": 0, "name": "Comp Refl Edited for AP", "res": 4.0, "mnemo": "CZE", "range": 460, "lvls": 16, "id": 98, "unit": "dBZ" }, "99": { "layer": 0, "name": "Velocity", "res": 0.25, "mnemo": "V", "range": 300, "ctable": ['NWS8bitVel', -100., 1.], "scale": [-100, 100], "lvls": 256, "id": 99, "unit": "(m/s)/10" }, "100": { "layer": 0, "name": "VAD Site Adapt Params", "res": 0.0, "mnemo": "VSDT", "range": 0, "lvls": 0, "id": 100, "unit": "" }, "101": { "layer": 0, "name": "Storm Track Alpha block", "res": 0.0, "mnemo": "STIT", "range": 0, "lvls": 0, "id": 101, "unit": "" }, "102": { "layer": 0, "name": "Hail Index Alpha block", "res": 0.0, "mnemo": "HIT", "range": 0, "lvls": 0, "id": 102, "unit": "" }, "103": { "layer": 0, "name": "Mesocyclone Alpha block", "res": 0.0, "mnemo": "MT", "range": 0, "lvls": 0, "id": 103, "unit": "" }, "104": { "layer": 0, "name": "TVS Alpha block", "res": 0.0, "mnemo": "TVST", "range": 0, "lvls": 0, "id": 104, "unit": "" }, "105": { "layer": 0, "name": "Combined Shear Params", "res": 0.0, "mnemo": "CST", "range": 0, "lvls": 0, "id": 105, "unit": "" }, "107": { "layer": 0, "name": "1hr Rainfall Params", "res": 0.0, "mnemo": "OHPT", "range": 0, "lvls": 0, "id": 107, "unit": "" }, "108": { "layer": 0, "name": "3hr Rainfall Params", "res": 0.0, "mnemo": "THPT", "range": 0, "lvls": 0, "id": 108, "unit": "" }, "109": { "layer": 0, "name": "Storm Total Params", "res": 0.0, "mnemo": "STPT", "range": 0, "lvls": 0, "id": 109, "unit": "" }, "132": { "layer": 0, "name": "Clutter Likelihood Refl", "res": 1.0, "mnemo": "CLR", "range": 230, "lvls": 16, "id": 132, "unit": "%" }, "133": { "layer": 0, "name": "Clutter Likelihood Dopp", "res": 1.0, "mnemo": "CLD", "range": 230, "lvls": 16, "id": 133, "unit": "%" }, "134": { "layer": 0, "name": "Digital Vert Integ Liq", "res": 1.0, "mnemo": "DVL", "range": 460, "lvls": 256, "id": 134, "unit": "kg/m\u00b2" }, "135": { "layer": 0, "name": "Enhanced Echo Tops", "res": 1.0, "mnemo": "EET", "ctable": ['NWSEnhancedEchoTops', 2, 1], "scale": [0, 255], "range": 460, "lvls": 256, "id": 135, "unit": "ft*1000" }, "136": { "layer": 0, "name": "SuperOb", "res": 4.0, "mnemo": "SO", "range": 0, "lvls": 256, "id": 136, "unit": "" }, "137": { "layer": 9, "name": "User Selectable Lyr Refl", "res": 1.0, "mnemo": "ULR", "range": 230, "lvls": 16, "id": 137, "unit": "dBZ" }, "138": { "layer": 0, "name": "Storm Total Precip", "res": 2.0, "mnemo": "STP", "ctable": ['NWSStormClearReflectivity', -100., 1.], "scale": [0, 10], "range": 460, "lvls": 256, "id": 138, "unit": "in/100" }, "139": { "layer": 0, "name": "Rapid Update Mesocyclone", "res": 0.0, "mnemo": "MRU", "range": 230, "lvls": 0, "id": 139, "unit": "" }, "140": { "layer": 0, "name": "Gust Front MIGFA", "res": 0.0, "mnemo": "GFM", "range": 230, "lvls": 0, "id": 140, "unit": "" }, "141": { "layer": 0, "name": "Mesocyclone", "res": 0.0, "mnemo": "MD", "range": 230, "lvls": 0, "id": 141, "unit": "" }, "143": { "layer": 0, "name": "TVS Rapid Update", "res": 0.0, "mnemo": "TRU", "range": 230, "lvls": 0, "id": 143, "unit": "" }, "144": { "layer": 0, "name": "1-Hour Snow-Water Equiv", "res": 1.0, "mnemo": "OSW", "range": 230, "lvls": 16, "id": 144, "unit": "in" }, "145": { "layer": 0, "name": "1-Hour Snow Depth", "res": 1.0, "mnemo": "OSD", "range": 230, "lvls": 16, "id": 145, "unit": "in" }, "146": { "layer": 0, "name": "Storm Tot Snow-Water Equiv", "res": 1.0, "mnemo": "SSW", "range": 230, "lvls": 16, "id": 146, "unit": "in" }, "147": { "layer": 0, "name": "Storm Tot Snow Depth", "res": 1.0, "mnemo": "SSD", "range": 230, "lvls": 16, "id": 147, "unit": "in" }, "149": { "layer": 0, "name": "Digital Mesocyclone Data", "res": 0.0, "mnemo": "DMD", "range": 230, "lvls": 0, "id": 149, "unit": "" }, "150": { "layer": 0, "name": "User Sel Snow-Water Equiv", "res": 1.0, "mnemo": "USW", "range": 230, "lvls": 16, "id": 150, "unit": "in" }, "151": { "layer": 0, "name": "User Sel Snow Depth", "res": 1.0, "mnemo": "USD", "range": 230, "lvls": 16, "id": 151, "unit": "in" }, "152": { "layer": 0, "name": "RPG System Status", "res": 0.0, "mnemo": "RSS", "range": 0, "lvls": 0, "id": 152, "unit": "" }, "153": { "layer": 0, "name": "Reflectivity", "res": 0.25, "mnemo": "HZ", "range": 460, "lvls": 256, "id": 153, "unit": "dBZ/10" }, "154": { "layer": 0, "name": "Velocity", "res": 0.25, "mnemo": "HV", "range": 300, "lvls": 256, "id": 154, "unit": "(m/s)/10" }, "155": { "layer": 0, "name": "Spec Width", "res": 0.25, "mnemo": "HSW", "range": 300, "lvls": 256, "id": 155, "unit": "(m/s)/10" }, "158": { "layer": 0, "name": "Diff Reflectivity", "res": 1.0, "mnemo": "ZDR", "range": 230, "ctable": ['NWSStormClearReflectivity', -4.0, 5.0], "lvls": 16, "id": 158, "unit": "dB" }, "159": { "layer": 0, "name": "Diff Reflectivity", "res": 0.25, "mnemo": "ZDR", "range": 300, "ctable": ['NWSStormClearReflectivity', -4.0, 5.0], "lvls": 256, "id": 159, "unit": "dB" }, "160": { "layer": 0, "name": "Correlation Coeff", "res": 1.0, "mnemo": "CC", "range": 230, "lvls": 16, "id": 160, "unit": "" }, "161": { "layer": 0, "name": "Correlation Coeff", "res": 0.25, "mnemo": "CC", "range": 300, "lvls": 256, "id": 161, "unit": "" }, "162": { "layer": 0, "name": "Specific Diff Phase", "res": 1.0, "mnemo": "KDP", "range": 230, "lvls": 16, "id": 162, "unit": "deg/km" }, "163": { "layer": 0, "name": "Specific Diff Phase", "res": 0.25, "mnemo": "KDP", "range": 300, "lvls": 256, "id": 163, "unit": "deg/km" }, "164": { "layer": 0, "name": "Hydrometeor Class", "res": 1.0, "mnemo": "HC", "range": 230, "lvls": 16, "id": 164, "unit": "" }, "165": { "layer": 0, "name": "Hydrometeor Class", "res": 0.25, "mnemo": "HC", "range": 300, "lvls": 256, "id": 165, "unit": "/10" }, "166": { "layer": 0, "name": "Melting Layer", "res": 0.0, "mnemo": "ML", "range": 230, "lvls": 0, "id": 166, "unit": "" }, "167": { "layer": 0, "name": "Raw CC", "res": 0.25, "mnemo": "SDC", "range": 300, "lvls": 256, "id": 167, "unit": "" }, "168": { "layer": 0, "name": "Raw PHIDP", "res": 0.25, "mnemo": "SDP", "range": 300, "lvls": 256, "id": 168, "unit": "deg" }, "169": { "layer": 0, "name": "One Hour Accum", "res": 2.0, "mnemo": "OHA", "ctable": ['NWSStormClearReflectivity', -100., 1.], "scale": [0, 10], "range": 230, "lvls": 16, "id": 169, "unit": "in" }, "170": { "layer": 0, "name": "One Hour Unbiased Accum", "res": 0.25, "mnemo": "DAA", "ctable": ['NWSStormClearReflectivity', -100., 1.], "scale": [0, 10], "range": 230, "lvls": 256, "id": 170, "unit": "in/100" }, "171": { "layer": 0, "name": "Storm Total Accum", "res": 2.0, "mnemo": "STA", "ctable": ['NWSStormClearReflectivity', -100., 1.], "scale": [0, 30], "range": 230, "lvls": 16, "id": 171, "unit": "in" }, "172": { "layer": 0, "name": "Storm Total Accum", "res": 0.25, "mnemo": "STA", "ctable": ['NWSStormClearReflectivity', -100., 1.], "scale": [0, 30], "range": 230, "lvls": 256, "id": 172, "unit": "in/100" }, "173": { "layer": 0, "name": "User Select Accum", "res": 0.25, "mnemo": "DUA", "ctable": ['NWSStormClearReflectivity', -100., 1.], "scale": [0, 30], "range": 230, "lvls": 256, "id": 173, "unit": "in/100" }, "174": { "layer": 0, "name": "One Hour Diff", "res": 0.25, "mnemo": "DOD", "range": 230, "lvls": 256, "id": 174, "unit": "in/100" }, "175": { "layer": 0, "name": "Storm Total Diff", "res": 0.25, "mnemo": "DSD", "range": 230, "lvls": 256, "id": 175, "unit": "in/100" }, "176": { "layer": 0, "name": "Digital Inst Precip Rate", "res": 0.25, "mnemo": "DPR", "ctable": ['NWS8bitVel', -100., 1.], "scale": [0, 16], "range": 230, "lvls": 65536, "id": 176, "unit": "in/h" }, "177": { "layer": 0, "name": "Hybrid Hydrometeor Class", "res": 0.25, "mnemo": "HHC", "range": 230, "lvls": 256, "id": 177, "unit": "/10" }, "180": { "layer": 0, "name": "Reflectivity", "res": 0.15, "mnemo": "Z", "range": 90, "lvls": 256, "id": 180, "unit": "dBZ/10" }, "181": { "layer": 0, "name": "Reflectivity", "res": 0.15, "mnemo": "Z", "range": 90, "lvls": 16, "id": 181, "unit": "dBZ" }, "182": { "layer": 0, "name": "Velocity", "res": 0.15, "mnemo": "V", "range": 90, "lvls": 256, "id": 182, "unit": "(m/s)/10" }, "183": { "layer": 0, "name": "Velocity", "res": 0.15, "mnemo": "V", "range": 90, "lvls": 16, "id": 183, "unit": "kts" }, "184": { "layer": 0, "name": "Spec Width", "res": 0.15, "mnemo": "SW", "range": 90, "lvls": 256, "id": 184, "unit": "(m/s)/10" }, "185": { "layer": 0, "name": "Spectrum Width", "res": 0.15, "mnemo": "SW", "range": 90, "lvls": 8, "id": 185, "unit": "kts" }, "186": { "layer": 0, "name": "Long Range Refl", "res": 0.3, "mnemo": "Z", "range": 460, "lvls": 256, "id": 186, "unit": "dBZ/10" }, "187": { "layer": 0, "name": "Long Range Refl", "res": 0.3, "mnemo": "Z", "range": 460, "lvls": 16, "id": 187, "unit": "dBZ" }, "196": { "layer": 0, "name": "Microburst AMDA", "res": 0.0, "mnemo": "MBA", "range": 50, "lvls": 0, "id": 196, "unit": "" }, "202": { "layer": 0, "name": "Shift Change Checklist", "res": 0.0, "mnemo": "SCC", "range": 0, "lvls": 0, "id": 202, "unit": "" }, "550": { "layer": 0, "name": "Reflectivity", "res": 0.926, "mnemo": "Z", "range": 111, "lvls": 8, "id": 550, "unit": "dBZ" }, "300": { "layer": 0, "name": "Level II Reflectivity", "res": 1.0, "mnemo": "Z", "range": 460, "lvls": 256, "id": 300, "unit": "dBZ/10" }, "301": { "layer": 0, "name": "Level II Velocity", "res": 0.25, "mnemo": "V", "range": 230, "lvls": 256, "id": 301, "unit": "kts" }, "500": { "layer": 0, "name": "Reflectivity", "res": 0.463, "mnemo": "Z", "range": 463, "lvls": 8, "id": 500, "unit": "dBZ" } } # # Dictionary that maps VTEC codes to headlines # Modified from com.raytheon.uf.edex.activetable/utility/common_static/base/vtec/VTECTable.py # Colornames from: # 1) https://www.weather.gov/bro/mapcolors # 2) https://digital.weather.gov/staticpages/definitions.php # 3) https://www.w3schools.com/colors/colors_names.asp # vtec = { 'AF.W' : {'phen': 'AF', 'sig': 'W', 'color': 'gray', 'hdln': 'Ashfall Warning'}, 'AF.Y' : {'phen': 'AF', 'sig': 'Y', 'color': 'gray', 'hdln': 'Ashfall Advisory'}, 'AQ.Y' : {'phen': 'AQ', 'sig': 'Y', 'color': 'gray', 'hdln': 'Air Quality Alert'}, 'AS.O' : {'phen': 'AS', 'sig': 'O', 'color': 'gray', 'hdln': 'Air Stagnation Outlook'}, 'AS.Y' : {'phen': 'AS', 'sig': 'Y', 'color': 'gray', 'hdln': 'Air Stagnation Advisory'}, 'BH.S' : {'phen': 'BH', 'sig': 'S', 'color': 'turquoise', 'hdln': 'Beach Hazards Statement'}, 'BW.Y' : {'phen': 'BW', 'sig': 'Y', 'color': 'thistle', 'hdln': 'Brisk Wind Advisory'}, 'BZ.A' : {'phen' : 'BZ', 'sig' : 'A', 'color': 'greenyellow', 'hdln' : 'Blizzard Watch'}, 'BZ.W' : {'phen' : 'BZ', 'sig' : 'W', 'color': 'orangered', 'hdln' : 'Blizzard Warning'}, 'CF.A' : {'phen': 'CF', 'sig': 'A', 'color': 'mediumaquamarine', 'hdln': 'Coastal Flood Watch'}, 'CF.W' : {'phen': 'CF', 'sig': 'W', 'color': 'forestgreen', 'hdln': 'Coastal Flood Warning'}, 'CF.Y' : {'phen': 'CF', 'sig': 'Y', 'color': 'lawngreen', 'hdln': 'Coastal Flood Advisory'}, 'CF.S' : {'phen': 'CF', 'sig': 'S', 'color': 'olivedrab', 'hdln': 'Coastal Flood Statement'}, 'DS.W' : {'phen': 'DS', 'sig': 'W', 'color': 'bisque', 'hdln': 'Dust Storm Warning'}, 'DS.Y' : {'phen': 'DS', 'sig': 'Y', 'color': 'darkkhaki' 'hdln': 'Dust Advisory'}, 'DU.Y' : {'phen': 'DU', 'sig': 'Y', 'color': 'darkkhaki', 'hdln': 'Blowing Dust Advisory'}, 'EC.A' : {'phen': 'EC', 'sig': 'A', 'color': 'blue', 'hdln': 'Extreme Cold Watch'}, 'EC.W' : {'phen': 'EC', 'sig': 'W', 'color': 'blue', 'hdln': 'Extreme Cold Warning'}, 'EH.A' : {'phen': 'EH', 'sig': 'A', 'color': 'maroon', 'hdln': 'Excessive Heat Watch'}, 'EH.W' : {'phen': 'EH', 'sig': 'W', 'color': 'mediumvioletred', 'hdln': 'Excessive Heat Warning'}, 'EW.W' : {'phen': 'EW', 'sig': 'W', 'color': 'deeppink', 'hdln': 'Excessive Wind Warning'}, 'FA.A' : {'phen': 'FA', 'sig': 'A', 'color': 'seagreen', 'hdln': 'Flood Watch'}, 'FA.W' : {'phen': 'FA', 'sig': 'W', 'color': 'seagreen', 'hdln': 'Areal Flood Warning'}, 'FA.Y' : {'phen': 'FA', 'sig': 'Y', 'color': 'seagreen', 'hdln': 'Areal Flood Advisory'}, 'FF.A' : {'phen': 'FF', 'sig': 'A', 'color': 'limegreen', 'hdln': 'Flash Flood Watch'}, 'FF.S' : {'phen': 'FF', 'sig': 'S', 'color': 'yellowgreen', 'hdln': 'Flash Flood Statement'}, 'FF.W' : {'phen': 'FF', 'sig': 'W', 'color': 'darkred', 'hdln': 'Flash Flood Warning'}, 'FG.Y' : {'phen': 'FG', 'sig': 'Y', 'color': 'slategray', 'hdln': 'Dense Fog Advisory'}, 'FL.A' : {'phen': 'FL', 'sig': 'A', 'color': 'seagreen', 'hdln': 'Flood Watch'}, 'FL.W' : {'phen': 'FL', 'sig': 'W', 'color': 'green', 'hdln': 'Flood Warning'}, 'HY.S' : {'phen': 'FL', 'sig': 'S', 'color': '#00ff7f', 'hdln': 'Hydrological Statement'}, 'FL.S' : {'phen': 'FL', 'sig': 'S', 'color': '#00ff7f', 'hdln': 'Flood Statement'}, 'FL.Y' : {'phen': 'FL', 'sig': 'Y', 'color': '#00ff7f', 'hdln': 'Flood Advisory'}, 'FR.Y' : {'phen': 'FR', 'sig': 'Y', 'color': 'cornflowerblue', 'hdln': 'Frost Advisory'}, 'FW.A' : {'phen': 'FW', 'sig': 'A', 'color': 'navajowhite', 'hdln': 'Fire Weather Watch'}, 'FW.W' : {'phen': 'FW', 'sig': 'W', 'color': 'deeppink', 'hdln': 'Red Flag Warning'}, 'FZ.A' : {'phen': 'FZ', 'sig': 'A', 'color': 'royalblue', 'hdln': 'Freeze Watch'}, 'FZ.W' : {'phen': 'FZ', 'sig': 'W', 'color': 'cyan', 'hdln': 'Freeze Warning'}, 'GL.A' : {'phen': 'GL', 'sig': 'A', 'color': 'pink', 'hdln': 'Gale Watch'}, 'GL.W' : {'phen': 'GL', 'sig': 'W', 'color': '#dda0dd', 'hdln': 'Gale Warning'}, 'HF.A' : {'phen': 'HF', 'sig': 'A', 'color': 'darkorchid', 'hdln': 'Hurricane Force Wind Watch'}, 'HF.W' : {'phen': 'HF', 'sig': 'W', 'color': '#cd5c5c', 'hdln': 'Hurricane Force Wind Warning'}, 'HT.Y' : {'phen': 'HT', 'sig': 'Y', 'color': '#ff7f4e', 'hdln': 'Heat Advisory'}, 'HU.A' : {'phen': 'HU', 'sig': 'A', 'color': '#ff00ff', 'hdln': 'Hurricane Watch'}, 'HU.S' : {'phen': 'HU', 'sig': 'S', 'color': 'yellow', 'hdln': 'Hurricane Statement'}, 'HU.W' : {'phen': 'HU', 'sig': 'W', 'color': '#dc143c', 'hdln': 'Hurricane Warning'}, 'HW.A' : {'phen': 'HW', 'sig': 'A', 'color': 'darkgoldenrod', 'hdln': 'High Wind Watch'}, 'HW.W' : {'phen': 'HW', 'sig': 'W', 'color': 'goldenrod', 'hdln': 'High Wind Warning'}, 'HZ.A' : {'phen': 'HZ', 'sig': 'A', 'color': 'royalblue', 'hdln': 'Hard Freeze Watch'}, 'HZ.W' : {'phen': 'HZ', 'sig': 'W', 'color': 'blue', 'hdln': 'Hard Freeze Warning'}, 'IS.W' : {'phen': 'IS', 'sig': 'W', 'color': 'darkmagenta', 'hdln': 'Ice Storm Warning'}, 'LE.A' : {'phen': 'LE', 'sig': 'A', 'color': 'LightSkyBlue', 'hdln': 'Lake Effect Snow Watch'}, 'LE.W' : {'phen': 'LE', 'sig': 'W', 'color': 'DarkCyan', 'hdln': 'Lake Effect Snow Warning'}, 'LE.Y' : {'phen': 'LE', 'sig': 'Y', 'color': 'MediumTurquoise', 'hdln': 'Lake Effect Snow Advisory'}, 'LO.Y' : {'phen': 'LO', 'sig': 'Y', 'color': 'maroon', 'hdln': 'Low Water Advisory'}, 'LS.A' : {'phen': 'LS', 'sig': 'A', 'color': 'MediumAquaMarine', 'hdln': 'Lakeshore Flood Watch'}, 'LS.S' : {'phen': 'LS', 'sig': 'S', 'color': 'lawngreen', 'hdln': 'Lakeshore Flood Statement'}, 'LS.W' : {'phen': 'LS', 'sig': 'W', 'color': 'forestgreen', 'hdln': 'Lakeshore Flood Warning'}, 'LS.Y' : {'phen': 'LS', 'sig': 'Y', 'color': 'lawngreen', 'hdln': 'Lakeshore Flood Advisory'}, 'LW.Y' : {'phen': 'LW', 'sig': 'Y', 'color': 'tan', 'hdln': 'Lake Wind Advisory'}, 'MA.A' : {'phen': 'MA', 'sig': 'A', 'color': 'peachpuff', 'hdln': 'Special Marine Advisory'}, 'MA.S' : {'phen': 'MA', 'sig': 'S', 'color': 'peachpuff', 'hdln': 'Special Marine Statement'}, 'MA.W' : {'phen': 'MA', 'sig': 'W', 'color': 'palevioletred', 'hdln': 'Special Marine Warning'}, 'MF.Y' : {'phen': 'MF', 'sig': 'Y', 'color': 'slategray', 'hdln': 'Dense Fog Advisory'}, # Marine Fog 'MH.W' : {'phen': 'MH', 'sig': 'W', 'color': 'darkgray', 'hdln': 'Ashfall Warning'}, # Marine Ashfall 'MH.Y' : {'phen': 'MH', 'sig': 'Y', 'color': 'dimgray', 'hdln': 'Ashfall Advisory'}, # Marine Ashfall 'MS.Y' : {'phen': 'MS', 'sig': 'Y', 'color': 'khaki', 'hdln': 'Dense Smoke Advisory'}, # Marine Smoke 'RB.Y' : {'phen': 'RB', 'sig': 'Y', 'color': 'thistle', 'hdln': 'Small Craft Advisory for rough bar'}, 'RP.S' : {'phen': 'RP', 'sig' : 'S', 'color': 'turquoise', 'hdln': 'High Rip Current Risk'}, 'SC.Y' : {'phen': 'SC', 'sig': 'Y', 'color': 'thistle', 'hdln': 'Small Craft Advisory'}, 'SE.A' : {'phen': 'SE', 'sig': 'A', 'color': 'darkslateblue', 'hdln': 'Hazardous Seas Watch'}, 'SE.W' : {'phen': 'SE', 'sig': 'W', 'color': 'thistle', 'hdln': 'Hazardous Seas Warning'}, 'SI.Y' : {'phen': 'SI', 'sig': 'Y', 'color': 'thistle', 'hdln': 'Small Craft Advisory for winds'}, 'SM.Y' : {'phen': 'SM', 'sig': 'Y', 'color': 'khaki', 'hdln': 'Dense Smoke Advisory'}, 'SQ.W' : {'phen': 'SQ', 'sig': 'W', 'color': '#EF2B1C', 'hdln': 'Snow Squall Warning'}, 'SR.A' : {'phen': 'SR', 'sig': 'A', 'color': 'violet', 'hdln': 'Storm Watch'}, 'SR.W' : {'phen': 'SR', 'sig': 'W', 'color': 'darkorchid', 'hdln': 'Storm Warning'}, 'SS.A' : {'phen': 'SS', 'sig': 'A', 'color': '#DB7FF7', 'hdln': 'Storm Surge Watch'}, 'SS.W' : {'phen': 'SS', 'sig': 'W', 'color': '#B524F7', 'hdln': 'Storm Surge Warning'}, 'SU.W' : {'phen': 'SU', 'sig': 'W', 'color': 'forestgreen', 'hdln': 'High Surf Warning'}, 'SU.Y' : {'phen': 'SU', 'sig': 'Y', 'color': 'mediumorchid', 'hdln': 'High Surf Advisory'}, 'SV.A' : {'phen': 'SV', 'sig': 'A', 'color': 'palevioletred', 'hdln': 'Severe Thunderstorm Watch'}, 'SV.S' : {'phen': 'SV', 'sig': 'S', 'color': 'aqua', 'hdln': 'Severe Weather Statement'}, 'SV.W' : {'phen': 'SV', 'sig': 'W', 'color': 'orange', 'hdln': 'Severe Thunderstorm Warning'}, 'SW.Y' : {'phen': 'SW', 'sig': 'Y', 'color': 'thistle', 'hdln': 'Small Craft Advisory for hazardous seas'}, 'TO.A' : {'phen': 'TO', 'sig': 'A', 'color': 'yellow', 'hdln': 'Tornado Watch'}, 'TO.W' : {'phen': 'TO', 'sig': 'W', 'color': 'red', 'hdln': 'Tornado Warning'}, 'TR.A' : {'phen': 'TR', 'sig': 'A', 'color': '#f08080', 'hdln': 'Tropical Storm Watch'}, 'TR.W' : {'phen': 'TR', 'sig': 'W', 'color': '#b22222', 'hdln': 'Tropical Storm Warning'}, 'TS.A' : {'phen': 'TS', 'sig': 'A', 'color': 'fuchsia', 'hdln': 'Tsunami Watch'}, 'TS.W' : {'phen': 'TS', 'sig': 'W', 'color': '#FD6347', 'hdln': 'Tsunami Warning'}, 'TS.Y' : {'phen': 'TS', 'sig': 'Y', 'color': 'chocolate', 'hdln': 'Tsunami Advisory'}, 'TY.A' : {'phen': 'TY', 'sig': 'A', 'color': 'fuchsia', 'hdln': 'Typhoon Watch'}, 'TY.W' : {'phen': 'TY', 'sig': 'W', 'color': '#FD6347', 'hdln': 'Typhoon Warning'}, 'UP.A' : {'phen': 'UP', 'sig': 'A', 'color': 'RosyBrown', 'hdln': 'Heavy Freezing Spray Watch'}, 'UP.W' : {'phen': 'UP', 'sig': 'W', 'color': '#00C0FF', 'hdln': 'Heavy Freezing Spray Warning'}, 'UP.Y' : {'phen': 'UP', 'sig': 'Y', 'color': '#00C0FF', 'hdln': 'Freezing Spray Advisory'}, 'WC.A' : {'phen': 'WC', 'sig': 'A', 'color': 'cadetblue', 'hdln': 'Wind Chill Watch'}, 'WC.W' : {'phen': 'WC', 'sig': 'W', 'color': 'lightsteelblue', 'hdln': 'Wind Chill Warning'}, 'WC.Y' : {'phen': 'WC', 'sig': 'Y', 'color': 'paleturquoise', 'hdln': 'Wind Chill Advisory'}, 'WI.Y' : {'phen': 'WI', 'sig': 'Y', 'color': 'tan', 'hdln': 'Wind Advisory'}, 'WS.A' : {'phen': 'WS', 'sig': 'A', 'color': '#4682b4', 'hdln': 'Winter Storm Watch'}, 'WS.W' : {'phen': 'WS', 'sig': 'W', 'color': 'hotpink', 'hdln': 'Winter Storm Warning'}, 'WW.Y' : {'phen': 'WW', 'sig': 'Y', 'color': '#7b68ee', 'hdln': 'Winter Weather Advisory'}, 'ZF.Y' : {'phen': 'ZF', 'sig': 'Y', 'color': 'teal', 'hdln': 'Freezing Fog Advisory'}, 'ZR.Y' : {'phen': 'ZR', 'sig': 'Y', 'color': 'orchid', 'hdln': 'Freezing Rain Advisory'}, } # # Upgrade Hazards Dictionary - upgradeHazardsDict is a dictionary of # phen/sig combinations defining upgrades. Each key is the proposed hazard. # The associated list are the hazards which are upgraded by the # proposed hazard. # upgradeHazardsDict = { 'WC.W': ['WC.A', 'WC.Y'], 'WC.Y': ['WC.A'], 'BZ.W': ['WS.W', 'LE.W', 'ZR.Y', 'LE.Y', 'WW.Y', 'BZ.A', 'WS.A', 'LE.A'], 'IS.W': ['WS.W', 'LE.W', 'ZR.Y', 'LE.Y', 'WW.Y', 'BZ.A', 'WS.A', 'LE.A'], 'LE.W': ['ZR.Y', 'LE.Y', 'WW.Y', 'BZ.A', 'WS.A', 'LE.A'], 'WS.W': ['ZR.Y', 'LE.Y', 'WW.Y', 'BZ.A', 'WS.A', 'LE.A'], 'ZR.Y': ['BZ.A', 'WS.A', 'LE.A'], 'LE.Y': ['BZ.A', 'WS.A', 'LE.A'], 'WW.Y': ['BZ.A', 'WS.A', 'LE.A'], 'EH.W': ['EH.A', 'HT.Y'], 'HT.Y': ['EH.A'], 'FZ.W': ['FZ.A', 'FR.Y', 'HZ.A'], 'HZ.W': ['FZ.A', 'FR.Y', 'HZ.A'], 'FR.Y': ['FZ.A', 'HZ.A'], 'HW.W': ['DU.Y', 'LW.Y', 'WI.Y', 'HW.A'], 'DS.W': ['DU.Y', 'LW.Y', 'WI.Y', 'HW.A'], 'WI.Y': ['HW.A'], 'EC.W': ['EC.A'], 'FW.W': ['FW.A'], 'CF.W': ['CF.A', 'CF.Y'], 'CF.Y': ['CF.A'], 'LS.W': ['LS.A', 'LS.Y'], 'LS.Y': ['LS.A'], 'BW.Y': ['GL.A', 'SR.A', 'HF.A', 'SE.A'], 'RB.Y': ['GL.A', 'SR.A', 'HF.A', 'SE.A'], 'SC.Y': ['GL.A', 'SR.A', 'HF.A', 'SE.A'], 'SI.Y': ['GL.A', 'SR.A', 'HF.A', 'SE.A'], 'SW.Y': ['SE.A'], 'UP.Y': ['UP.A'], 'HF.W': ['SR.W', 'GL.W', 'SC.Y', 'SW.Y', 'BW.Y', 'SI.Y', 'RB.Y', 'GL.A', 'SR.A', 'HF.A', 'SE.A'], 'SR.W': ['GL.W', 'SC.Y', 'SW.Y', 'BW.Y', 'SI.Y', 'RB.Y', 'GL.A', 'SR.A', 'HF.A', 'SE.A'], 'GL.W': ['SC.Y', 'SW.Y', 'BW.Y', 'SI.Y', 'RB.Y', 'GL.A', 'SR.A', 'HF.A', 'SE.A'], 'SE.W': ['SC.Y', 'RB.Y', 'GL.A', 'SR.A', 'HF.A', 'SE.A'], 'UP.W': ['UP.Y', 'UP.A'], 'SU.W': ['SU.Y'], 'SS.W': ['SS.A'], 'HU.W': ['HU.A', 'TR.W', 'TR.A'], 'HU.A': ['TR.A'], 'TR.W': ['TR.A', 'HU.A', 'TY.A'], 'TY.W': ['TY.A', 'TR.W', 'TR.A'], 'TY.A': ['TR.A'], 'AF.W': ['AF.Y'], 'MH.W': ['MH.Y'], } # # When passed a phen/sig for both the current hazard and the proposed hazard, # checkForUpgrade returns a 1 if the proposed hazard is an upgrade, otherwise 0 # def checkForUpgrade(pPhen, pSig, cPhen, cSig): proposed = pPhen + "." + pSig current = cPhen + "." + cSig if proposed in upgradeHazardsDict: if current in upgradeHazardsDict[proposed]: return 1 else: return 0 else: return 0 # # Downgrade Hazards Dictionary - downgradeHazardsDict is a dictionary of # phen/sig combinations defining downgrades. Each key is the proposed hazard. # The associated list are the hazards which are downgraded by the # proposed hazard. # downgradeHazardsDict = { 'ZR.Y': ['BZ.W', 'LE.W', 'IS.W', 'WS.W'], 'LE.Y': ['BZ.W', 'LE.W', 'IS.W', 'WS.W'], 'WW.Y': ['BZ.W', 'LE.W', 'IS.W', 'WS.W'], 'WC.Y': ['WC.W'], 'WS.W': ['BZ.W', 'IS.W'], 'LE.W': ['BZ.W', 'IS.W'], 'DU.Y': ['DS.W', 'HW.W'], 'LW.Y': ['DS.W', 'HW.W', 'WI.Y'], 'WI.Y': ['DS.W', 'HW.W'], 'HT.Y': ['EH.W'], 'FR.Y': ['FZ.W', 'HZ.W'], 'TR.W': ['HU.W', 'TY.W'], 'UP.Y': ['UP.W'], 'SR.W': ['HF.W'], 'GL.W': ['HF.W', 'SR.W'], 'SC.Y': ['HF.W', 'SR.W', 'GL.W', 'SE.W'], 'SW.Y': ['SE.W'], 'RB.Y': ['HF.W', 'SR.W', 'GL.W', 'SE.W'], 'SU.Y': ['SU.W'], 'BW.Y': ['HF.W', 'SR.W', 'GL.W'], 'SI.Y': ['HF.W', 'SR.W', 'GL.W'], 'LS.Y': ['LS.W'], 'CF.Y': ['CF.W'], 'AF.Y': ['AF.W'], 'MH.Y': ['MH.W'], } # # When passed a phen/sig for both the current hazard and the proposed hazard, # checkForDowngrade returns a 1 if the proposed hazard is an downgrade, otherwise 0 # def checkForDowngrade(pPhen, pSig, cPhen, cSig): proposed = pPhen + "." + pSig current = cPhen + "." + cSig if proposed in downgradeHazardsDict: if current in downgradeHazardsDict[proposed]: return 1 else: return 0 else: return 0