@@ -0,0 +1,77 | |||
|
1 | ''' | |
|
2 | @author: roj-idl71 | |
|
3 | ''' | |
|
4 | #USED IN jroplot_spectra.py | |
|
5 | RTI_CODE = 0 #Range time intensity (RTI). | |
|
6 | SPEC_CODE = 1 #Spectra (and Cross-spectra) information. | |
|
7 | CROSS_CODE = 2 #Cross-Correlation information. | |
|
8 | COH_CODE = 3 #Coherence map. | |
|
9 | BASE_CODE = 4 #Base lines graphic. | |
|
10 | ROW_CODE = 5 #Row Spectra. | |
|
11 | TOTAL_CODE = 6 #Total Power. | |
|
12 | DRIFT_CODE = 7 #Drifts graphics. | |
|
13 | HEIGHT_CODE = 8 #Height profile. | |
|
14 | PHASE_CODE = 9 #Signal Phase. | |
|
15 | ||
|
16 | POWER_CODE = 16 | |
|
17 | NOISE_CODE = 17 | |
|
18 | BEACON_CODE = 18 | |
|
19 | ||
|
20 | #USED IN jroplot_parameters.py | |
|
21 | WIND_CODE = 22 | |
|
22 | MSKYMAP_CODE = 23 | |
|
23 | MPHASE_CODE = 24 | |
|
24 | ||
|
25 | MOMENTS_CODE = 25 | |
|
26 | PARMS_CODE = 26 | |
|
27 | SPECFIT_CODE = 27 | |
|
28 | EWDRIFT_CODE = 28 | |
|
29 | ||
|
30 | ||
|
31 | #COLOR TABLES | |
|
32 | ||
|
33 | reflectivity = [ | |
|
34 | "#000000", # -30 | |
|
35 | "#15191d", # -25 | |
|
36 | "#2a323b", # -20 | |
|
37 | "#3f4c59", # -15 | |
|
38 | "#556576", # -10 | |
|
39 | "#6a7f94", # -5 | |
|
40 | "#7f99b2", # 0 | |
|
41 | "#00ffff", # 5 | |
|
42 | "#007fff", # 10 | |
|
43 | "#0000ff", # 15 | |
|
44 | "#00ff00", # 20 | |
|
45 | "#00bf00", # 25 | |
|
46 | "#007f00", # 30 | |
|
47 | "#ffff00", # 35 | |
|
48 | "#ffbf00", # 40 | |
|
49 | "#ff7f00", # 45 | |
|
50 | "#ff0000", # 50 | |
|
51 | "#bf0000", # 55 | |
|
52 | "#7f0000", # 60 | |
|
53 | "#fe00fe", # 65 | |
|
54 | "#8e59ff", # 70 | |
|
55 | "#f0f0f0", # 75 | |
|
56 | ] | |
|
57 | ||
|
58 | velocity = [ | |
|
59 | "#003300", "#005500", "#007700", "#009900", "#00bb00", "#24ce24", "#6cd26c", "#b4d6b4", | |
|
60 | "#d6b4b4", "#d26c6c", "#ce2424", "#bb0000", "#980000", "#760000", "#540000", "#330000", | |
|
61 | ] | |
|
62 | ||
|
63 | spc_width = [ | |
|
64 | "#00ffff", "#00aaf2", "#0055e5", "#0000d8", | |
|
65 | "#007f00", "#00aa00", "#00d400", "#00ff00", | |
|
66 | "#ffff00", "#ffd400", "#ffaa00", "#ff7f00", | |
|
67 | "#ff0000", "#d40000", "#aa0000", "#7f0000", | |
|
68 | "#ff00ff", "#d400d4", "#aa00aa", "#7f007f", | |
|
69 | "#9938ff", "#832ed8", "#6e25b2", "#591c8c", | |
|
70 | "#aaaaaa", "#8e8e8e" | |
|
71 | ] | |
|
72 | ||
|
73 | sophy_cb_tables = [ | |
|
74 | ('sophy_r', reflectivity), | |
|
75 | ('sophy_v', velocity), | |
|
76 | ('sophy_w', spc_width), | |
|
77 | ] |
@@ -0,0 +1,159 | |||
|
1 | #!/usr/bin/env python | |
|
2 | import matplotlib.pyplot as pl | |
|
3 | import matplotlib | |
|
4 | import wradlib | |
|
5 | import numpy | |
|
6 | import warnings | |
|
7 | import argparse | |
|
8 | from wradlib.io import read_generic_hdf5 | |
|
9 | from wradlib.util import get_wradlib_data_file | |
|
10 | from plotting_codes import sophy_cb_tables | |
|
11 | import os,time | |
|
12 | ||
|
13 | for name, cb_table in sophy_cb_tables: | |
|
14 | ncmap = matplotlib.colors.ListedColormap(cb_table, name=name) | |
|
15 | matplotlib.pyplot.register_cmap(cmap=ncmap) | |
|
16 | #LINUX bash: export WRADLIB_DATA=/path/to/wradlib-data | |
|
17 | warnings.filterwarnings('ignore') | |
|
18 | PARAM = { | |
|
19 | 'S': {'var': 'dataPP_POWER','vmin': -45, 'vmax': -15, 'cmap': 'jet', 'label': 'Power','unit': 'dBm'}, | |
|
20 | 'V': {'var': 'velRadial_V', 'vmin': -10, 'vmax': 10 , 'cmap': 'sophy_v', 'label': 'Velocity','unit': 'm/s'}, | |
|
21 | 'Z': {'var': 'Zdb', 'vmin': -30, 'vmax': 80 , 'cmap': 'sophy_r','label': 'Reflectivity','unit': 'dBZ'}, | |
|
22 | 'W': {'var': 'Sigmav_W', 'vmin': 0 , 'vmax': 12 , 'cmap': 'sophy_w','label': 'Spectral Width','unit': 'hz'} | |
|
23 | } | |
|
24 | class Readsophy(): | |
|
25 | def __init__(self): | |
|
26 | self.list_file = None | |
|
27 | self.grado = None | |
|
28 | self.variable = None | |
|
29 | self.save = None | |
|
30 | ||
|
31 | def read_files(self,path_file,grado=None, variable=None): | |
|
32 | filter= "_E"+str(grado)+".0_"+variable | |
|
33 | validFilelist = [] | |
|
34 | fileList= os.listdir(path_file) | |
|
35 | for thisFile in fileList: | |
|
36 | if (os.path.splitext(thisFile)[0][-7:] != filter): | |
|
37 | #print("s_:",os.path.splitext(thisFile)[0][-7:]) | |
|
38 | continue | |
|
39 | validFilelist.append(thisFile) | |
|
40 | validFilelist.sort() | |
|
41 | return validFilelist | |
|
42 | ||
|
43 | def setup(self, path_file,grado,variable,save): | |
|
44 | self.path_file = path_file | |
|
45 | self.grado = grado | |
|
46 | self.variable = variable | |
|
47 | self.save = save | |
|
48 | self.list_file = self.read_files(path_file=self.path_file,grado=self.grado, variable=self.variable) | |
|
49 | ||
|
50 | def run(self): | |
|
51 | count= 0 | |
|
52 | len_files = len(self.list_file) | |
|
53 | ||
|
54 | for thisFile in self.list_file: | |
|
55 | count = count +1 | |
|
56 | fullpathfile = self.path_file + thisFile | |
|
57 | filename = get_wradlib_data_file(fullpathfile) | |
|
58 | test_hdf5 = read_generic_hdf5(filename) | |
|
59 | ||
|
60 | var = PARAM[self.variable]['var'] | |
|
61 | unit = PARAM[self.variable]['unit'] | |
|
62 | cmap = PARAM[self.variable]['cmap'] | |
|
63 | vmin = PARAM[self.variable]['vmin'] | |
|
64 | vmax = PARAM[self.variable]['vmax'] | |
|
65 | label = PARAM[self.variable]['label'] | |
|
66 | var_ = 'Data/'+var+'/channel00' | |
|
67 | data_arr = numpy.array(test_hdf5[var_]['data']) # data | |
|
68 | utc_time = numpy.array(test_hdf5['Data/utctime']['data']) | |
|
69 | data_azi = numpy.array(test_hdf5['Metadata/data_azi']['data']) # th | |
|
70 | data_ele = numpy.array(test_hdf5["Metadata/data_ele"]['data']) | |
|
71 | heightList = numpy.array(test_hdf5["Metadata/heightList"]['data']) # r | |
|
72 | my_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(utc_time[0])) | |
|
73 | time_save = time.strftime('%Y%m%d_%H%M%S',time.localtime(utc_time[0])) | |
|
74 | ||
|
75 | # PLOT DATA WITH ANNOTATION | |
|
76 | if count ==1: | |
|
77 | fig = pl.figure(figsize=(10,8)) | |
|
78 | cgax, pm = wradlib.vis.plot_ppi(data_arr,r=heightList,az=data_azi,rf=1e3,fig=fig, ax=111,proj='cg',cmap=cmap,vmin=vmin, vmax=vmax) | |
|
79 | caax = cgax.parasites[0] | |
|
80 | title = 'Simple PPI'+"-"+ my_time | |
|
81 | t = pl.title(title, fontsize=12,y=1.05) | |
|
82 | cbar = pl.gcf().colorbar(pm, pad=0.075) | |
|
83 | pl.text(1.0, 1.05, 'azimuth', transform=caax.transAxes, va='bottom',ha='right') | |
|
84 | cbar.set_label(label+'[' + unit + ']') | |
|
85 | gh = cgax.get_grid_helper() | |
|
86 | else: | |
|
87 | cgax, pm = wradlib.vis.plot_ppi(data_arr,r=heightList,az=data_azi,rf=1e3,fig=fig, ax=111,proj='cg',cmap=cmap,vmin=vmin, vmax=vmax) | |
|
88 | caax = cgax.parasites[0] | |
|
89 | title = 'Simple PPI'+"-"+my_time | |
|
90 | t = pl.title(title, fontsize=12,y=1.05) | |
|
91 | cbar = pl.gcf().colorbar(pm, pad=0.075) | |
|
92 | pl.text(1.0, 1.05, 'azimuth', transform=caax.transAxes, va='bottom',ha='right') | |
|
93 | cbar.set_label(label+'[' + unit + ']') | |
|
94 | gh = cgax.get_grid_helper() | |
|
95 | if self.save == 1: | |
|
96 | if count ==1: | |
|
97 | filename = "SOPHY"+"_"+time_save+"_"+"E."+self.grado+"_"+self.variable+".png" | |
|
98 | dir =self.variable+"_"+"E."+self.grado+"CH0/" | |
|
99 | filesavepath = os.path.join(self.path_file,dir) | |
|
100 | os.mkdir(filesavepath) | |
|
101 | else: | |
|
102 | filename = "SOPHY"+"_"+time_save+"_"+"E."+self.grado+"_"+self.variable+".png" | |
|
103 | pl.savefig(filesavepath+filename) | |
|
104 | ||
|
105 | pl.pause(2) | |
|
106 | pl.clf() | |
|
107 | if count==len_files: | |
|
108 | pl.close() | |
|
109 | pl.show() | |
|
110 | ||
|
111 | PATH = "/home/soporte/Documents/EVENTO/HYO_PM@2022-06-09T15-05-12/paramC0_FD_PL_R15.0km/2022-06-09T18-00-00/" | |
|
112 | ||
|
113 | def main(args): | |
|
114 | grado = args.grado | |
|
115 | parameters = args.parameters | |
|
116 | save = args.save | |
|
117 | obj = Readsophy() | |
|
118 | for param in parameters: | |
|
119 | obj.setup(path_file = PATH,grado = grado, variable=param,save=int(save)) | |
|
120 | obj.run() | |
|
121 | ||
|
122 | if __name__ == '__main__': | |
|
123 | ||
|
124 | parser = argparse.ArgumentParser(description='Script to process SOPHy data.') | |
|
125 | parser.add_argument('--parameters', nargs='*', default=['S'], | |
|
126 | help='Variables to process: P, Z, V ,W') | |
|
127 | parser.add_argument('--grado', default=2, | |
|
128 | help='Angle in Elev to plot') | |
|
129 | parser.add_argument('--save', default=0, | |
|
130 | help='Save plot') | |
|
131 | args = parser.parse_args() | |
|
132 | ||
|
133 | main(args) | |
|
134 | ||
|
135 | ||
|
136 | ''' | |
|
137 | def read_and_overview(filename): | |
|
138 | """Read HDF5 using read_generic_hdf5 and print upper level dictionary keys | |
|
139 | """ | |
|
140 | test = read_generic_hdf5(filename) | |
|
141 | print("\nPrint keys for file %s" % os.path.basename(filename)) | |
|
142 | for key in test.keys(): | |
|
143 | print("\t%s" % key) | |
|
144 | return test | |
|
145 | ||
|
146 | file__ = "/home/soporte/Documents/EVENTO/HYO_PM@2022-06-09T15-05-12/paramC0_FD_PL_R15.0km/2022-06-09T18-00-00/SOPHY_20220609_180229_E2.0_Z.hdf5" | |
|
147 | ||
|
148 | ||
|
149 | filename = get_wradlib_data_file(file__) | |
|
150 | ||
|
151 | print("filename:\n",filename ) | |
|
152 | ||
|
153 | test= read_and_overview(filename) | |
|
154 | # ANADIR INFORMACION | |
|
155 | # informacion de los pulsos de TX | |
|
156 | # informacion de los ruidos | |
|
157 | # informacion de los SNR ¿? | |
|
158 | # Aumentar la amplitud de la USRP | |
|
159 | ''' |
General Comments 0
You need to be logged in to leave comments.
Login now