HEP Demo

Here we show a plausible small workflow on a real excerpt of particle data.

[1]:
import akimbo.pandas
import pandas as pd
import awkward as ak
import dask_awkward as dak
[2]:
ds = dak.from_parquet("s3://ddavistemp/hpq/*.parquet", storage_options={"anon": True}).compute()
[3]:
ds.show(limit_rows=10, limit_cols=140)
[{run: 1, luminosityBlock: 13, event: 1201, MET: {pt: 19.5, phi: 3.1}, muons: [], gen: [{pt: 60.4, ...}, ...]},
 {run: 1, luminosityBlock: 13, event: 1202, MET: {pt: 20.4, phi: -2.18}, muons: [{pt: 18.6, ...}, ...], gen: [{...}, ...]},
 {run: 1, luminosityBlock: 13, event: 1203, MET: {pt: 28.8, phi: 2.62}, muons: [], gen: [{pt: 40.6, ...}]},
 {run: 1, luminosityBlock: 13, event: 1204, MET: {pt: 4.42, phi: -0.206}, muons: [{pt: 26.7, ...}, ...], gen: [{...}, ...]},
 {run: 1, luminosityBlock: 13, event: 1205, MET: {pt: 5.86, phi: 2.47}, muons: [{pt: 7.62, eta: ..., ...}], gen: [...]},
 ...,
 {run: 1, luminosityBlock: 2801, event: 80097, MET: {pt: 17.6, phi: 2.15}, muons: [], gen: [{pt: 24, ...}, ...]},
 {run: 1, luminosityBlock: 2801, event: 80098, MET: {pt: 15.5, phi: 0.718}, muons: [{pt: 18.6, ...}, ...], gen: [...]},
 {run: 1, luminosityBlock: 2801, event: 80099, MET: {pt: 16.2, phi: -0.555}, muons: [{pt: 26.1, ...}, ...], gen: [...]},
 {run: 1, luminosityBlock: 2801, event: 80100, MET: {pt: 18.8, phi: 0.657}, muons: [{pt: 30.4, ...}, ...], gen: [...]}]
[4]:
s = ak.to_arrow(ds, extensionarray=False).to_pandas(types_mapper=pd.ArrowDtype)

image0

[5]:
s
[5]:
0         {'run': 1, 'luminosityBlock': 13, 'event': 120...
1         {'run': 1, 'luminosityBlock': 13, 'event': 120...
2         {'run': 1, 'luminosityBlock': 13, 'event': 120...
3         {'run': 1, 'luminosityBlock': 13, 'event': 120...
4         {'run': 1, 'luminosityBlock': 13, 'event': 120...
                                ...
299678    {'run': 1, 'luminosityBlock': 2801, 'event': 8...
299679    {'run': 1, 'luminosityBlock': 2801, 'event': 8...
299680    {'run': 1, 'luminosityBlock': 2801, 'event': 8...
299681    {'run': 1, 'luminosityBlock': 2801, 'event': 8...
299682    {'run': 1, 'luminosityBlock': 2801, 'event': 8...
Length: 299683, dtype: struct<run: int64 not null, luminosityBlock: int64 not null, event: int64 not null, MET: struct<pt: double not null, phi: double not null> not null, muons: large_list<item: struct<pt: double not null, eta: double not null, phi: double not null, mass: double not null, charge: int64 not null> not null> not null, gen: large_list<item: struct<pt: double not null, eta: double not null, phi: double not null, pdgId: int64 not null> not null> not null>[pyarrow]

We can “unroll” the Series into a DataFrame by extracting columns that are primitive types (e.g. Series of ints or floats). We do this with the awkward accessor (.ak on the Series). In the accessor we have a to_columns method:

[6]:
df = s.ak.unpack()

image0

[7]:
df
[7]:
run luminosityBlock event MET muons gen
0 1 13 1201 {'pt': 19.49629020690918, 'phi': 3.09666585922... [] [{'pt': 60.43461608886719, 'eta': -0.782095849...
1 1 13 1202 {'pt': 20.397918701171875, 'phi': -2.180577278... [{'pt': 18.583789825439453, 'eta': -0.17873963... [{'pt': 18.733409881591797, 'eta': -0.17861033...
2 1 13 1203 {'pt': 28.81757164001465, 'phi': 2.61683297157... [] [{'pt': 40.565895080566406, 'eta': -0.33271655...
3 1 13 1204 {'pt': 4.415469169616699, 'phi': -0.2062562108... [{'pt': 26.678863525390625, 'eta': -1.23002457... [{'pt': 26.755929946899414, 'eta': -1.23014056...
4 1 13 1205 {'pt': 5.85665225982666, 'phi': 2.472323179244... [{'pt': 7.621268272399902, 'eta': 2.1535851955... [{'pt': 7.496843338012695, 'eta': 2.1539559364...
... ... ... ... ... ... ...
299678 1 2801 80096 {'pt': 13.942445755004883, 'phi': -0.285923928... [{'pt': 5.740289211273193, 'eta': -1.979136943... [{'pt': 5.610562324523926, 'eta': -1.979978322...
299679 1 2801 80097 {'pt': 17.55270004272461, 'phi': 2.15474414825... [] [{'pt': 24.036447525024414, 'eta': 0.494034796...
299680 1 2801 80098 {'pt': 15.480612754821777, 'phi': 0.7176428437... [{'pt': 18.630128860473633, 'eta': 0.646761536... [{'pt': 18.798992156982422, 'eta': 0.646190226...
299681 1 2801 80099 {'pt': 16.163414001464844, 'phi': -0.555234909... [{'pt': 26.122941970825195, 'eta': -1.98191392... [{'pt': 25.94921112060547, 'eta': -1.981276035...
299682 1 2801 80100 {'pt': 18.839515686035156, 'phi': 0.6565476059... [{'pt': 30.407604217529297, 'eta': 1.319252133... [{'pt': 29.94283676147461, 'eta': 1.3189213275...

299683 rows × 6 columns

[8]:
df.luminosityBlock
[8]:
0           13
1           13
2           13
3           13
4           13
          ...
299678    2801
299679    2801
299680    2801
299681    2801
299682    2801
Name: luminosityBlock, Length: 299683, dtype: int64[pyarrow]
[9]:
muons_series = df["muons"]
[10]:
muons_series
[10]:
0                                                        []
1         [{'pt': 18.583789825439453, 'eta': -0.17873963...
2                                                        []
3         [{'pt': 26.678863525390625, 'eta': -1.23002457...
4         [{'pt': 7.621268272399902, 'eta': 2.1535851955...
                                ...
299678    [{'pt': 5.740289211273193, 'eta': -1.979136943...
299679                                                   []
299680    [{'pt': 18.630128860473633, 'eta': 0.646761536...
299681    [{'pt': 26.122941970825195, 'eta': -1.98191392...
299682    [{'pt': 30.407604217529297, 'eta': 1.319252133...
Name: muons, Length: 299683, dtype: large_list<item: struct<pt: double not null, eta: double not null, phi: double not null, mass: double not null, charge: int64 not null> not null>[pyarrow]
[11]:
%%timeit
[len(x) for x in muons_series.tolist()]
2.38 s ± 7.01 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In akimbo world we have access to functions from the awkward-array API:

[12]:
%%timeit
muons_series.ak.num(axis=1)
922 μs ± 32 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)

Big performance improvement with compiled awkward code over Python iteration!

[13]:
# ensure they give the same result
[len(x) for x in muons_series.tolist()] == muons_series.ak.num(axis=1).tolist()
[13]:
True
[14]:
n_muons = muons_series.ak.num(axis=1)

And we can use the results with other pandas analysis workflows…

[15]:
n_muons
[15]:
0         0
1         2
2         0
3         3
4         1
         ..
299678    2
299679    0
299680    2
299681    3
299682    4
Length: 299683, dtype: int64[pyarrow]
[16]:
df["n_muons"] = n_muons
[17]:
df
[17]:
run luminosityBlock event MET muons gen n_muons
0 1 13 1201 {'pt': 19.49629020690918, 'phi': 3.09666585922... [] [{'pt': 60.43461608886719, 'eta': -0.782095849... 0
1 1 13 1202 {'pt': 20.397918701171875, 'phi': -2.180577278... [{'pt': 18.583789825439453, 'eta': -0.17873963... [{'pt': 18.733409881591797, 'eta': -0.17861033... 2
2 1 13 1203 {'pt': 28.81757164001465, 'phi': 2.61683297157... [] [{'pt': 40.565895080566406, 'eta': -0.33271655... 0
3 1 13 1204 {'pt': 4.415469169616699, 'phi': -0.2062562108... [{'pt': 26.678863525390625, 'eta': -1.23002457... [{'pt': 26.755929946899414, 'eta': -1.23014056... 3
4 1 13 1205 {'pt': 5.85665225982666, 'phi': 2.472323179244... [{'pt': 7.621268272399902, 'eta': 2.1535851955... [{'pt': 7.496843338012695, 'eta': 2.1539559364... 1
... ... ... ... ... ... ... ...
299678 1 2801 80096 {'pt': 13.942445755004883, 'phi': -0.285923928... [{'pt': 5.740289211273193, 'eta': -1.979136943... [{'pt': 5.610562324523926, 'eta': -1.979978322... 2
299679 1 2801 80097 {'pt': 17.55270004272461, 'phi': 2.15474414825... [] [{'pt': 24.036447525024414, 'eta': 0.494034796... 0
299680 1 2801 80098 {'pt': 15.480612754821777, 'phi': 0.7176428437... [{'pt': 18.630128860473633, 'eta': 0.646761536... [{'pt': 18.798992156982422, 'eta': 0.646190226... 2
299681 1 2801 80099 {'pt': 16.163414001464844, 'phi': -0.555234909... [{'pt': 26.122941970825195, 'eta': -1.98191392... [{'pt': 25.94921112060547, 'eta': -1.981276035... 3
299682 1 2801 80100 {'pt': 18.839515686035156, 'phi': 0.6565476059... [{'pt': 30.407604217529297, 'eta': 1.319252133... [{'pt': 29.94283676147461, 'eta': 1.3189213275... 4

299683 rows × 7 columns

[18]:
df.query("n_muons >= 2")
[18]:
run luminosityBlock event MET muons gen n_muons
1 1 13 1202 {'pt': 20.397918701171875, 'phi': -2.180577278... [{'pt': 18.583789825439453, 'eta': -0.17873963... [{'pt': 18.733409881591797, 'eta': -0.17861033... 2
3 1 13 1204 {'pt': 4.415469169616699, 'phi': -0.2062562108... [{'pt': 26.678863525390625, 'eta': -1.23002457... [{'pt': 26.755929946899414, 'eta': -1.23014056... 3
9 1 13 1210 {'pt': 23.15256118774414, 'phi': -1.3448100090... [{'pt': 8.245718955993652, 'eta': 0.4933051466... [{'pt': 8.270858764648438, 'eta': 0.4933516085... 2
10 1 13 1211 {'pt': 8.993561744689941, 'phi': -0.6995754837... [{'pt': 40.31018829345703, 'eta': -1.591983556... [{'pt': 40.29347610473633, 'eta': -1.591879606... 2
11 1 13 1212 {'pt': 11.699790000915527, 'phi': -2.898928403... [{'pt': 41.209922790527344, 'eta': -1.75342404... [{'pt': 40.541831970214844, 'eta': -1.75308358... 3
... ... ... ... ... ... ... ...
299677 1 2801 80095 {'pt': 6.506622791290283, 'phi': -2.8128659725... [{'pt': 26.82998275756836, 'eta': -1.692675352... [{'pt': 23.990140914916992, 'eta': -1.70475649... 5
299678 1 2801 80096 {'pt': 13.942445755004883, 'phi': -0.285923928... [{'pt': 5.740289211273193, 'eta': -1.979136943... [{'pt': 5.610562324523926, 'eta': -1.979978322... 2
299680 1 2801 80098 {'pt': 15.480612754821777, 'phi': 0.7176428437... [{'pt': 18.630128860473633, 'eta': 0.646761536... [{'pt': 18.798992156982422, 'eta': 0.646190226... 2
299681 1 2801 80099 {'pt': 16.163414001464844, 'phi': -0.555234909... [{'pt': 26.122941970825195, 'eta': -1.98191392... [{'pt': 25.94921112060547, 'eta': -1.981276035... 3
299682 1 2801 80100 {'pt': 18.839515686035156, 'phi': 0.6565476059... [{'pt': 30.407604217529297, 'eta': 1.319252133... [{'pt': 29.94283676147461, 'eta': 1.3189213275... 4

144474 rows × 7 columns

[19]:
df = df.query("n_muons >= 2")
[20]:
df.ak["MET", "phi"].groupby(df.luminosityBlock).min().sort_values()
[20]:
luminosityBlock
2143    -3.14158
594    -3.141542
2597   -3.141537
1453   -3.141512
1746   -3.141483
          ...
1799   -2.282698
1012   -2.273576
2059   -2.244525
47     -2.204018
958    -2.181129
Length: 2997, dtype: double[pyarrow]
[21]:
maybe_strange_lumiblock = int(df.ak["MET", "phi"].groupby(df.luminosityBlock).min().idxmax())
[22]:
maybe_strange_lumiblock
[22]:
958
[23]:
df[df.luminosityBlock == maybe_strange_lumiblock]
[23]:
run luminosityBlock event MET muons gen n_muons
136194 1 958 95702 {'pt': 9.32455062866211, 'phi': 0.053808707743... [{'pt': 17.39313507080078, 'eta': -1.847270846... [{'pt': 17.233966827392578, 'eta': -1.84710228... 2
136195 1 958 95703 {'pt': 15.678848266601562, 'phi': 1.0668007135... [{'pt': 34.96195602416992, 'eta': 1.0815714597... [{'pt': 34.21088790893555, 'eta': 1.0816322565... 2
136196 1 958 95704 {'pt': 10.801395416259766, 'phi': -1.883632421... [{'pt': 40.85875701904297, 'eta': 1.5373326539... [{'pt': 39.86746597290039, 'eta': 1.5372104644... 5
136197 1 958 95705 {'pt': 27.977304458618164, 'phi': -2.181129455... [{'pt': 42.02450180053711, 'eta': 0.6413493156... [{'pt': 42.0600471496582, 'eta': 0.64086186885... 2
136198 1 958 95706 {'pt': 44.71547317504883, 'phi': 2.52462005615... [{'pt': 9.585787773132324, 'eta': -1.828484535... [{'pt': 9.453995704650879, 'eta': -1.828184485... 2
136202 1 958 95710 {'pt': 4.6118950843811035, 'phi': -2.009603738... [{'pt': 12.712407112121582, 'eta': 1.665425777... [{'pt': 12.579483985900879, 'eta': 1.665357470... 4
136204 1 958 95712 {'pt': 10.901251792907715, 'phi': 1.6692819595... [{'pt': 28.988916397094727, 'eta': 1.426161408... [{'pt': 29.23183250427246, 'eta': 1.4259384870... 2
136206 1 958 95714 {'pt': 6.936832427978516, 'phi': 0.50806105136... [{'pt': 33.164180755615234, 'eta': -1.03487014... [{'pt': 33.692684173583984, 'eta': -1.03486096... 4
136207 1 958 95715 {'pt': 12.992511749267578, 'phi': 2.5144424438... [{'pt': 42.73493957519531, 'eta': -1.897092819... [{'pt': 41.00784683227539, 'eta': -1.897110700... 3
136209 1 958 95717 {'pt': 11.85525131225586, 'phi': -1.5537400245... [{'pt': 8.502578735351562, 'eta': -1.390953898... [{'pt': 8.506632804870605, 'eta': -1.391292810... 2
136213 1 958 95721 {'pt': 22.108491897583008, 'phi': 1.2742083072... [{'pt': 39.634498596191406, 'eta': -2.17111086... [{'pt': 39.1713752746582, 'eta': -2.1711895465... 3
136214 1 958 95722 {'pt': 39.396728515625, 'phi': -0.586968421936... [{'pt': 37.014530181884766, 'eta': 0.539512038... [{'pt': 36.64643096923828, 'eta': 0.5394459962... 2
136217 1 958 95725 {'pt': 28.107641220092773, 'phi': -2.061355113... [{'pt': 28.529312133789062, 'eta': -1.92499852... [{'pt': 28.674528121948242, 'eta': -1.92519390... 2
136222 1 958 95730 {'pt': 6.728403091430664, 'phi': 0.64055746793... [{'pt': 44.686187744140625, 'eta': -0.29042178... [{'pt': 44.80177307128906, 'eta': -0.290572881... 4
136223 1 958 95731 {'pt': 2.442694902420044, 'phi': 2.98343157768... [{'pt': 74.63383483886719, 'eta': 0.2354883253... [{'pt': 75.15045166015625, 'eta': 0.2356527149... 2
136225 1 958 95733 {'pt': 5.25895357131958, 'phi': 0.989695847034... [{'pt': 13.540238380432129, 'eta': -0.96499544... [{'pt': 13.687565803527832, 'eta': -0.96489042... 3
136227 1 958 95735 {'pt': 39.792320251464844, 'phi': -0.607204139... [{'pt': 28.45280647277832, 'eta': 1.4398310184... [{'pt': 28.934585571289062, 'eta': 1.439734458... 2
136228 1 958 95736 {'pt': 9.327455520629883, 'phi': -1.8331677913... [{'pt': 33.318115234375, 'eta': -1.35030031204... [{'pt': 34.288909912109375, 'eta': -1.35011303... 2
136230 1 958 95738 {'pt': 5.225285053253174, 'phi': 0.26599729061... [{'pt': 5.74852991104126, 'eta': -1.5219720602... [{'pt': 5.723165512084961, 'eta': -1.521689295... 2
136231 1 958 95739 {'pt': 19.77752113342285, 'phi': 2.56310439109... [{'pt': 21.930816650390625, 'eta': 1.622602462... [{'pt': 22.40825843811035, 'eta': 1.6232310533... 4
136232 1 958 95740 {'pt': 16.91146469116211, 'phi': 0.17997898161... [{'pt': 57.63543701171875, 'eta': 0.6997669935... [{'pt': 58.36896514892578, 'eta': 0.6996427178... 3
136237 1 958 95745 {'pt': 17.964941024780273, 'phi': 0.2798292934... [{'pt': 21.472057342529297, 'eta': -0.14510136... [{'pt': 21.377073287963867, 'eta': -0.14469610... 2
136239 1 958 95747 {'pt': 34.146915435791016, 'phi': -0.343910306... [{'pt': 47.73208236694336, 'eta': -0.195875376... [{'pt': 46.937984466552734, 'eta': -0.19632942... 2
136241 1 958 95749 {'pt': 60.79026794433594, 'phi': -1.1350969076... [{'pt': 5.522252082824707, 'eta': -0.910994112... [{'pt': 5.54920768737793, 'eta': -0.9106213450... 2
136242 1 958 95750 {'pt': 20.187013626098633, 'phi': 1.3756097555... [{'pt': 37.732452392578125, 'eta': 2.046837806... [{'pt': 36.122745513916016, 'eta': 2.046431303... 2
136243 1 958 95751 {'pt': 45.754146575927734, 'phi': -0.575200021... [{'pt': 35.7652587890625, 'eta': 1.84004938602... [{'pt': 35.632320404052734, 'eta': 1.839916348... 2
136244 1 958 95752 {'pt': 39.07128143310547, 'phi': 0.99168241024... [{'pt': 57.12268829345703, 'eta': 1.2766863107... [{'pt': 57.2701530456543, 'eta': 1.27632701396... 4
136248 1 958 95756 {'pt': 3.5609500408172607, 'phi': 2.7537925243... [{'pt': 31.377283096313477, 'eta': -2.16292452... [{'pt': 32.82319259643555, 'eta': -2.162747383... 2
136249 1 958 95757 {'pt': 9.218932151794434, 'phi': -2.0534968376... [{'pt': 69.20734405517578, 'eta': -1.621163845... [{'pt': 68.95838928222656, 'eta': -1.621161580... 2
136252 1 958 95760 {'pt': 18.948158264160156, 'phi': -1.723783731... [{'pt': 15.97077465057373, 'eta': 1.2463308572... [{'pt': 16.47576904296875, 'eta': 1.2466225624... 2
136257 1 958 95765 {'pt': 2.889784812927246, 'phi': 1.20234358310... [{'pt': 4.265729904174805, 'eta': 1.9936699867... [{'pt': 19.37196159362793, 'eta': 1.8591572046... 2
136258 1 958 95766 {'pt': 16.802858352661133, 'phi': -1.810781121... [{'pt': 9.82548713684082, 'eta': 1.16541755199... [{'pt': 9.746100425720215, 'eta': 1.1653298139... 2
136261 1 958 95769 {'pt': 24.222867965698242, 'phi': -0.425295323... [{'pt': 34.92827606201172, 'eta': 0.3492964506... [{'pt': 35.03514099121094, 'eta': 0.3486303985... 2
136262 1 958 95770 {'pt': 4.4938554763793945, 'phi': -0.196108326... [{'pt': 32.37409591674805, 'eta': -0.309629142... [{'pt': 33.08842468261719, 'eta': -0.309075087... 2
136266 1 958 95774 {'pt': 15.200396537780762, 'phi': -0.340379208... [{'pt': 8.123419761657715, 'eta': -1.234412431... [{'pt': 8.026605606079102, 'eta': -1.235345721... 2
136267 1 958 95775 {'pt': 8.26032829284668, 'phi': -0.23124067485... [{'pt': 56.755157470703125, 'eta': 1.028796076... [{'pt': 56.293296813964844, 'eta': 1.028779745... 2
136268 1 958 95776 {'pt': 13.11574649810791, 'phi': 1.36859905719... [{'pt': 18.178020477294922, 'eta': -2.23843741... [{'pt': 18.548580169677734, 'eta': -2.23823046... 2
136269 1 958 95777 {'pt': 25.982837677001953, 'phi': 0.6142482161... [{'pt': 59.537254333496094, 'eta': -1.79875850... [{'pt': 60.195823669433594, 'eta': -1.79869830... 2
136272 1 958 95780 {'pt': 6.408741474151611, 'phi': 1.24201548099... [{'pt': 9.31895637512207, 'eta': -0.7859385609... [{'pt': 9.313433647155762, 'eta': -0.786293327... 2
136273 1 958 95781 {'pt': 11.913872718811035, 'phi': 0.8305811882... [{'pt': 36.297996520996094, 'eta': 1.849698901... [{'pt': 37.235496520996094, 'eta': 1.849808931... 4
136277 1 958 95785 {'pt': 5.784417629241943, 'phi': 1.06288385391... [{'pt': 5.388668060302734, 'eta': 0.8629760146... [{'pt': 5.2818498611450195, 'eta': 0.863830327... 2
136278 1 958 95786 {'pt': 53.30470657348633, 'phi': 2.96238994598... [{'pt': 46.658206939697266, 'eta': -2.09441971... [{'pt': 47.01996994018555, 'eta': -2.094365358... 2
136280 1 958 95788 {'pt': 79.87776947021484, 'phi': 0.11870313435... [{'pt': 13.233634948730469, 'eta': 1.643572211... [{'pt': 13.423243522644043, 'eta': 1.643285036... 4
136282 1 958 95790 {'pt': 30.711828231811523, 'phi': 0.3528386950... [{'pt': 20.057493209838867, 'eta': -1.47776961... [{'pt': 33.98409652709961, 'eta': -1.472594022... 3
136284 1 958 95792 {'pt': 2.3940744400024414, 'phi': -0.816025972... [{'pt': 6.69031286239624, 'eta': 1.60692858695... [{'pt': 6.756163597106934, 'eta': 1.6070077419... 2
136287 1 958 95795 {'pt': 14.409249305725098, 'phi': 0.1069312840... [{'pt': 3.9270830154418945, 'eta': -1.91549956... [{'pt': 1.5912946462631226, 'eta': -0.62308007... 3
136288 1 958 95796 {'pt': 24.02878189086914, 'phi': -1.5590174198... [{'pt': 10.37822437286377, 'eta': -0.442846536... [{'pt': 10.33800983428955, 'eta': -0.442937105... 2
136289 1 958 95797 {'pt': 28.7943115234375, 'phi': 0.793956518173... [{'pt': 8.992547988891602, 'eta': -1.181468605... [{'pt': 8.802826881408691, 'eta': -1.181635737... 4
136290 1 958 95798 {'pt': 17.060649871826172, 'phi': 1.4013400077... [{'pt': 53.44632339477539, 'eta': -1.892633676... [{'pt': 51.28750991821289, 'eta': -1.892772078... 2
136291 1 958 95799 {'pt': 5.828614711761475, 'phi': 0.90214794874... [{'pt': 5.276854038238525, 'eta': 1.5319671630... [{'pt': 5.306309223175049, 'eta': 1.5308386087... 2
[24]:
# save for further analysis
df[df.luminosityBlock == maybe_strange_lumiblock].to_parquet("strange.parquet")