Python Scripts
Example Python script to load an HDF5 file.
Loading Data into Python Lists.
import h5py
import numpy as np
import statistics
h5_filenames = []
h5_filenames.append( "file.h5" )
data_ts = []
data_lat = []
data_lon = []
data_pol = []
data_unpol = []
for h5_filename in h5_filenames:
h5_file = h5py.File(h5_filename, "r+")
for key in list(h5_file.keys()):
grps = h5_file[key]
for grp in list(grps):
if grp == "Rawdata":
ts = h5_file[key + "/Rawdata"]
for t in ts:
d = key + "/Rawdata/" + t
data = h5_file[d]
t = float(data.attrs["lna_temperature_degC"])
t_kelvin = t + 273.15
data_hh = t_kelvin*statistics.median( np.array(data[2]) / np.array(data[0]) )
data_vv = t_kelvin*statistics.median( np.array(data[3]) / np.array(data[1]) )
data_u = t_kelvin*statistics.median( np.array(data[4]) / (np.sqrt(np.array(data[0])) * np.sqrt(np.array(data[1]))) )
data_v = t_kelvin*statistics.median( np.array(data[5]) / (np.sqrt(np.array(data[0])) * np.sqrt(np.array(data[1]))) )
temp_tot = (0.5 * (data_hh + data_vv))
temp_q = 1.0 * (0.5 * (data_hh - data_vv))
temp_pol = np.sqrt(data_u * data_u + temp_q * temp_q + data_v * data_v)
temp_unpol = temp_tot - temp_pol
if temp_unpol<300:
data_pol.append(temp_pol)
data_unpol.append(temp_unpol)
data_ts.append(float(data.attrs["timestamp_utc"]))
data_lat.append(float(data.attrs["position"][0]))
data_lon.append(float(data.attrs["position"][1]))
h5_file.close()
Convert HDF5 to CSV
import csv
import pandas as pd
csv_filename = "file.csv"
headerList = ["ts", "lat", "lon", "pol", "unpol"]
with open(csv_filename, 'w') as file:
dw = csv.DictWriter(file, delimiter=',', fieldnames=headerList)
dw.writeheader()
for i in range(len(data_ts)):
dw.writerow(dict(zip(headerList, [data_ts[i], data_lat[i], data_lon[i], data_pol[i], data_unpol[i]])))
Plot Data using Plotly
import pandas as pd
import plotly.express as px
# Remember: plotly express will need to open a browser tab to display the map!
# Here insert your own mapbox token please! A "pay-as-you-go" account gives plenty of free accesses.
# Instructions on how to obtain one are here:
# https://docs.mapbox.com/api/accounts/tokens/
mapbox_token = "your_token_here"
csv_filename = "file.csv"
df = pd.read_csv(csv_filename)
df.head()
px.set_mapbox_access_token(mapbox_token)
cs_min, cs_max = np.percentile(data_unpol, [5, 95])
fig = px.scatter_mapbox(df, lon="lon", lat="lat", color="unpol", size_max=10,
color_continuous_scale="Jet",
range_color=(cs_min, cs_max),
mapbox_style="satellite", zoom=17,
title="T_B (K)",
)
fig.update_layout(width=950, height=900)
fig.show()
Last updated