In [1]:
import plotly.express as px
import pandas as pd
In [2]:
# df = pd.read_parquet("era5-pds/measurements-m1.parquet")
# df = pd.read_parquet("era5-pds/measurements-i10k.parquet")
# df = pd.read_parquet("era5-pds/measurements-ryzen3.parquet")
df = pd.read_parquet("era5-pds/measurements-i13k.parquet")
df = df.query("clevel > 0")  # get rid of no compression results
In [3]:
category_orders = {"dset": ["flux", "wind", "pressure", "precip", "snow"],
                   "filter": ["nofilter", "shuffle", "bitshuffle", "bytedelta"]}
labels = {
    "cratio": "Compression ratio (x times)",
    "cspeed": "Compression speed (GB/s)",
    "dspeed": "Decompression speed (GB/s)",
    "codec": "Codec",
    "dset": "Dataset",
    "filter": "Filter",
    "cratio * cspeed": "Compression ratio x Compression speed",
    "cratio * dspeed": "Compression ratio x Decompression speed",
    "cratio * cspeed * dspeed": "Compression ratio x Compression x Decompression speeds",
    }
In [4]:
hover_data = {"filter": False, "codec": True, "cratio": ':.1f', "cspeed": ':.2f',
              "dspeed": ':.2f', "dset": True, "clevel": True}
fig = px.box(df, x="cratio", color="filter", points="all", hover_data=hover_data,
             labels=labels, range_x=(0, 60), range_y=(-.4, .35),)
fig.update_layout(
    title={
        'text': "Compression ratio vs filter (larger is better)",
        #'y':0.9,
        'x':0.25,
        'xanchor': 'left',
        #'yanchor': 'top'
    },
    #xaxis_title="Filter",
)
fig.show()
In [5]:
hover_data = {"filter": False, "codec": True, "cratio": ':.1f', "cspeed": ':.2f', "dspeed": ':.2f',
              "dset": False, "clevel": True}
fig = px.strip(df, y="cratio", x="dset", color="filter", hover_data=hover_data, labels=labels,
               category_orders=category_orders)
fig.show()
In [6]:
hover_data = {"filter": False, "codec": False, "cratio": ':.1f', "cspeed": ':.2f', "dspeed": ':.2f',
              "dset": True, "clevel": True}
fig = px.strip(df, y="cratio", x="codec", color="filter", labels=labels, hover_data=hover_data)
fig.show()
In [7]:
df["cratio * cspeed"] = df["cratio"] * df["cspeed"]
df["cratio * dspeed"] = df["cratio"] * df["dspeed"]
df["cratio * cspeed * dspeed"] = df["cratio"] * df["cspeed"] * df["dspeed"]
df_mean = df.groupby(['filter', 'clevel', 'codec']).mean(numeric_only=True).reset_index(level=[0,1,2])
df_mean2 = df.groupby(['filter', 'dset']).mean(numeric_only=True).reset_index(level=[0,1])
df_mean
Out[7]:
filter clevel codec cspeed dspeed cratio cratio * cspeed cratio * dspeed cratio * cspeed * dspeed
0 bitshuffle 1 BLOSCLZ 12.761833 66.747672 9.173380 170.239436 675.753748 12870.859984
1 bitshuffle 1 LZ4 12.205809 73.292183 11.894671 222.119679 922.913309 17639.433252
2 bitshuffle 1 LZ4HC 6.076772 67.928352 12.769271 98.755855 908.162400 7154.733080
3 bitshuffle 1 ZLIB 7.298479 25.029979 11.200472 106.809085 330.309560 3332.657153
4 bitshuffle 1 ZSTD 11.477392 44.646190 15.785637 273.428811 774.338758 13816.902657
... ... ... ... ... ... ... ... ... ...
75 shuffle 9 BLOSCLZ 10.061763 72.198181 11.338061 209.104856 1076.932715 22342.209134
76 shuffle 9 LZ4 15.022658 92.064490 10.963307 266.011167 1250.285500 32369.603352
77 shuffle 9 LZ4HC 2.625860 94.784550 12.928206 61.242247 1482.265572 7769.986737
78 shuffle 9 ZLIB 1.053539 11.222278 16.333023 25.617114 199.231475 319.643959
79 shuffle 9 ZSTD 0.103401 41.698953 18.288814 1.900180 1087.433286 114.708453

80 rows × 9 columns

In [8]:
fig = px.bar(df_mean, y="cratio", x="codec", color="filter", category_orders=category_orders,
             barmode="group", facet_col="clevel", labels=labels, title="Compression ratio (mean)")
fig.show()
In [9]:
fig = px.bar(df_mean, y="cspeed", x="codec", color="filter", category_orders=category_orders,
             barmode="group", facet_col="clevel", labels=labels, title="Compression speed (mean)")
fig.show()
In [10]:
fig = px.bar(df_mean2, y="cspeed", x="filter", facet_col="dset", color="filter", log_y=True,
             labels=labels, category_orders=category_orders)
fig.show()
In [11]:
fig = px.strip(df, y="cspeed", x="codec", color="filter", hover_data=hover_data, labels=labels)
fig.show()
In [12]:
fig = px.bar(df_mean, y="dspeed", x="codec", color="filter",
             category_orders=category_orders, barmode="group",
             facet_col="clevel", labels=labels, title="Decompression speed (mean)")
fig.show()
In [13]:
fig = px.bar(df_mean2, y="dspeed", x="filter", facet_col="dset", color="filter", log_y=True,
             labels=labels, category_orders=category_orders)
fig.show()
In [14]:
fig = px.strip(df, y="dspeed", x="codec", color="filter", hover_data=hover_data, labels=labels)
fig.show()
In [15]:
hover_data = {"filter": True, "codec": True, "cratio": ':.1f', "cspeed": ':.2f',
             "dspeed": ':.2f', "dset": True, "clevel": True}
fig = px.scatter(df, y="cratio", x="cspeed", color="filter", log_y=True,
                 hover_data=hover_data, labels=labels)
fig.show()
In [16]:
fig = px.box(df, y="cratio * cspeed", x="codec", color="filter", log_y=True,
             hover_data=hover_data, labels=labels)
fig.show()
In [17]:
fig = px.bar(df_mean, y="cratio * cspeed", x="codec", color="filter", log_y=True,
             labels=labels, facet_col="clevel", barmode="group", category_orders=category_orders)
fig.show()
In [18]:
fig = px.bar(df_mean2, y="cratio * cspeed", x="filter", facet_col="dset", color="filter", log_y=True,
             labels=labels, category_orders=category_orders)
fig.show()
In [19]:
hover_data = {"filter": True, "codec": True, "cratio": ':.1f', "cspeed": ':.2f',
             "dspeed": ':.2f', "dset": True, "clevel": True}
fig = px.scatter(df, y="cratio", x="dspeed", color="filter", log_y=True,
              hover_data=hover_data, labels=labels)
fig.show()
In [20]:
fig = px.box(df, y="cratio * dspeed", x="codec", color="filter", log_y=True,
             hover_data=hover_data, labels=labels, category_orders=category_orders)
fig.show()
In [21]:
fig = px.bar(df_mean, y="cratio * dspeed", x="codec", color="filter", log_y=True,
             labels=labels, facet_col="clevel", barmode="group", category_orders=category_orders)
fig.show()
In [22]:
fig = px.bar(df_mean2, y="cratio * dspeed", x="filter", facet_col="dset", color="filter", log_y=True,
             labels=labels, category_orders=category_orders)
fig.show()
In [23]:
fig = px.box(df, y="cratio * cspeed * dspeed", x="codec", color="filter",
             log_y=True, hover_data=hover_data, labels=labels, category_orders=category_orders)
fig.show()
In [24]:
fig = px.bar(df_mean, y="cratio * cspeed * dspeed", x="codec", color="filter", log_y=True,
             labels=labels, facet_col="clevel", barmode="group", category_orders=category_orders)
fig.show()
In [25]:
fig = px.bar(df_mean2, y="cratio * cspeed * dspeed", x="filter", facet_col="dset", color="filter", log_y=True,
             labels=labels, category_orders=category_orders)
fig.show()
In [ ]: