<jupyter_start><jupyter_text>Plot the Aggregated Fields using Bootstrap Significance This sheet is for dilbit<jupyter_code>import cmocean.cm as cm
import matplotlib.colors as colors
import matplotlib.pyplot as plt
import numpy as np
import xarray as xr

%matplotlib inline
thefile = '/scratch/allen/MIDOSS/aggregate/fiftieth_55_dilbit.nc'
oil = xr.open_dataset(thefile)
whichspills = "Dilbit Spills"
smalloils = 0
mesh = xr.open_dataset('~/MEOPAR/grid/mesh_mask201702.nc')
tmask = 1- mesh.tmask[0, 0]
divarea = 1/(mesh.e1t[0, 1:-1, 1:-1] * mesh.e2t[0, 1:-1, 1:-1])
alength = 1/np.maximum(mesh.e1t[0, 1:-1:, 1:-1], mesh.e2t[0, 1:-1, 1:-1])
mesh.close()
imin = 0
jmin, jmax = 0, 398
imax = imin + (jmax - jmin)*2/500*440
imax = 898
aspect = 500/440
def truncate_colormap(cmap, minval=0.0, maxval=1.0, n=-1):
    if n == -1:
        n = cmap.N
    new_cmap = colors.LinearSegmentedColormap.from_list(
         'trunc({name},{a:.2f},{b:.2f})'.format(name=cmap.name, a=minval, b=maxval),
         cmap(np.linspace(minval, maxval, n)))
    return new_cmap
minColor = 0.1
maxColor = 0.85
thermal_r_t = truncate_colormap(cm.thermal_r, minColor, maxColor)<jupyter_output><empty_output><jupyter_text>Beaching  Beaching Presence: Set-up and Preparation<jupyter_code>ma_beaching_pres = np.ma.masked_array(oil.beachpresence, oil.beachpresence == 0)<jupyter_output><empty_output><jupyter_text>Beaching Presence: Plot<jupyter_code>fig, ax = plt.subplots(1, 1, figsize=(5, 9))

ax.pcolormesh(tmask[1:, 1:], cmap='terrain', vmin=-0.2, vmax=1.6)
ax.set_ylim(imin, imax)
ax.set_xlim(jmin, jmax)
ax.set_aspect(aspect)


C = ax.pcolormesh(
     ma_beaching_pres,
    zorder=2, #vmin=0, vmax=7
)
cb = fig.colorbar(C, ax=ax);    
cb.set_label('Presence (count of spills)')
ax.set_title(f'Beaching Presence (count) of {oil.nofiles.values+smalloils} spills');<jupyter_output><empty_output><jupyter_text>Beaching Time: Set-up and Preparation<jupyter_code># Good if good to half a day or 15% of beaching time
absol = 0.5
perol = 0.15
eps = 1e-7
mcsize = 49

bt_absol = absol
bt_perol = perol
ma_beaching_time = np.ma.masked_array(oil.beaching_time[0]/(oil.beachpresence + eps), oil.beachpresence == 0)

den = np.minimum(np.array(oil.beachpresence) + eps, mcsize)
beached_ste = np.std(oil.beaching_time, axis=0, ddof=1) / np.sqrt(den)
beached = np.ma.masked_array(oil.beaching_time[0]/(oil.beachpresence + eps), (oil.beachpresence <= 1) | (
    (beached_ste/(oil.beachpresence+eps) > absol) | (beached_ste > perol*oil.beaching_time[0]))) 

ma_beached_ste = np.ma.masked_array(beached_ste/(oil.beachpresence + eps), oil.beachpresence <= 1)<jupyter_output><empty_output><jupyter_text>Beaching Time: Plot<jupyter_code>fig, axs = plt.subplots(1, 3, figsize=(18, 9))

for ax in axs:
    ax.pcolormesh(tmask[1:, 1:], cmap='terrain', vmin=-0.2, vmax=1.6)
    ax.set_ylim(imin, imax)
    ax.set_xlim(jmin, jmax)
    ax.set_aspect(aspect)


C = axs[0].pcolormesh(
     ma_beaching_time,
    zorder=2, vmin=0, vmax=7, cmap=thermal_r_t
)
cb = fig.colorbar(C, ax=axs[0]);    
cb.set_label('Beaching Time (days)')
axs[0].set_title('Mean Beaching Time')
    
C = axs[1].pcolormesh(
     beached,
    zorder=2, vmin=0, vmax=7, cmap=thermal_r_t
)
cb = fig.colorbar(C, ax=axs[1]);
cb.set_label('Beaching Time (days)')
axs[1].set_title(f'Screened Mean Beaching Time\n Standard Error less than {bt_absol} days and {bt_perol*100}%')

C = axs[2].pcolormesh(
     ma_beached_ste,
    zorder=2, vmin=0, vmax=2, cmap=thermal_r_t
)
cb = fig.colorbar(C, ax=axs[2]);
axs[2].set_title('Standard Error');<jupyter_output><empty_output><jupyter_text>Beaching Volume: Set-up and Preparation<jupyter_code># Good if good to 100% of beaching volume
perol = 1
absol = np.log(perol+1)

bv_perol = perol
ma_beach_oil = np.ma.masked_array(oil.beaching_oil[0]/(oil.beachpresence + eps), oil.beachpresence == 0)

den = np.minimum(np.array(oil.beachpresence) + eps, mcsize)
beachoil_ste = np.std(oil.beaching_oil/(oil.beachpresence + eps), axis=0, ddof=1) / np.sqrt(den)
beachedoil = np.ma.masked_array(oil.beaching_oil[0]/(oil.beachpresence + eps), (oil.beachpresence <= 1) | (
    (beachoil_ste > absol) )) 

ma_beachoil_ste = np.ma.masked_array(beachoil_ste, oil.beachpresence <= 0)
plt.hist(oil.beaching_oil[:, 315, 310]/(oil.beachpresence[315, 310] + eps))
print (np.std(oil.beaching_oil[:, 315, 310]/(oil.beachpresence[315, 310] + eps), axis=0, ddof=1) 
       / np.sqrt(mcsize))
print (ma_beach_oil[315, 310])
print ('ste', beachoil_ste[315, 310], absol)
print (oil.beachpresence[315, 310])
print (ma_beachoil_ste[315, 310])
print ('*', beachedoil[315, 310])
print (np.exp(beachedoil.max()))
print (np.exp(beachedoil.min()))
print (divarea[200, 200], 500*440)
print (alength[200, 200])
fig, axs = plt.subplots(1, 3, figsize=(18, 9))

vmin, vmax = 0.01, 50

for ax in axs:
    ax.pcolormesh(tmask[1:, 1:], cmap='terrain', vmin=-0.2, vmax=1.6)
    ax.set_ylim(imin, imax)
    ax.set_xlim(jmin, jmax)
    ax.set_aspect(aspect)

C = axs[0].pcolormesh(
     np.exp(ma_beach_oil) * alength * 1000, norm=colors.LogNorm(vmin=vmin, vmax=vmax),
    zorder=2, cmap='inferno'
)
cb = fig.colorbar(C, ax=axs[0]);    
cb.set_label('Beached Oil ($\ell$/m)')
axs[0].set_title('Geometric Mean Beached Oil')
    
C = axs[1].pcolormesh(
     np.exp(beachedoil) * alength * 1000,
    zorder=2, norm=colors.LogNorm(vmin=vmin, vmax=vmax), cmap='inferno'
)
cb = fig.colorbar(C, ax=axs[1]);
cb.set_label('Beached Oil ($\ell$/m)')
axs[1].set_title(f'Screened Geometric Mean Beached Oil\n Standard Error less than {perol*100}%')

C = axs[2].pcolormesh(
     (np.exp(ma_beachoil_ste + ma_beach_oil) - np.exp(ma_beach_oil)) * alength * 10000, norm=colors.LogNorm(vmin=vmin, vmax=vmax),
    zorder=2, cmap='inferno'
)
cb = fig.colorbar(C, ax=axs[2]);
cb.set_label('Beached Oil ($\ell$/m)')
axs[2].set_title('One Standard Error Up');<jupyter_output><empty_output><jupyter_text>Surface Oil  Surface Oil Presence: Set-up and Prep<jupyter_code>ma_oil_pres = np.ma.masked_array(oil.oilpresence, oil.oilpresence == 0)<jupyter_output><empty_output><jupyter_text>Surface Oil Presence: Plot<jupyter_code>fig, ax = plt.subplots(1, 1, figsize=(6, 9))

ax.pcolormesh(tmask[1:, 1:], cmap='terrain', vmin=-0.2, vmax=1.6)
ax.set_ylim(imin, imax)
ax.set_xlim(jmin, jmax)
ax.set_aspect(aspect)


C = ax.pcolormesh(ma_oil_pres, zorder=2,)# cmap='gist_ncar')
cb = fig.colorbar(C, ax=ax);    
cb.set_label('Presence (count of spills)')
ax.set_title(f'Surface Oil Presence (count) of {oil.nofiles.values+smalloils} spills');<jupyter_output><empty_output><jupyter_text>Oil Arrival Time: Set-up and Preparation<jupyter_code># Good if good to half a day or 15% of arrival time
absol = 0.5
perol = 0.15

at_absol = absol
at_perol = perol
ma_arrival_time = np.ma.masked_array(oil.oiling_time[0]/(oil.oilpresence + eps), oil.oilpresence == 0)

den = np.minimum(np.array(oil.oilpresence) + eps, mcsize)
arrival_ste = np.std(oil.oiling_time, axis=0, ddof=1) / np.sqrt(den)
arrived = np.ma.masked_array(oil.oiling_time[0]/(oil.oilpresence + eps), (oil.oilpresence <= 1) | (
    (arrival_ste/(oil.oilpresence+eps) > absol) | (arrival_ste > perol*oil.oiling_time[0]))) 

ma_arrived_ste = np.ma.masked_array(arrival_ste/(oil.oilpresence + eps), oil.oilpresence <= 1)<jupyter_output><empty_output><jupyter_text>Oil Arrival: Plot<jupyter_code>fig, axs = plt.subplots(1, 3, figsize=(18, 9))

for ax in axs:
    ax.pcolormesh(tmask[1:, 1:], cmap='terrain', vmin=-0.2, vmax=1.6)
    ax.set_ylim(imin, imax)
    ax.set_xlim(jmin, jmax)
    ax.set_aspect(aspect)


C = axs[0].pcolormesh(ma_arrival_time, zorder=2, vmin=0, vmax=7, cmap=thermal_r_t)
cb = fig.colorbar(C, ax=axs[0]);    
cb.set_label('Arrival Time (days)')
axs[0].set_title('Mean Arrival Time')
    
C = axs[1].pcolormesh(arrived, zorder=2, vmin=0, vmax=7,cmap=thermal_r_t)
cb = fig.colorbar(C, ax=axs[1]);
cb.set_label('Arrival Time (days)')
axs[1].set_title(f'Screened Mean Arrival Time\n Standard Error less than {at_absol} days and {at_perol*100}%')

C = axs[2].pcolormesh(ma_arrived_ste, zorder=2, vmin=0, vmax=2, cmap=thermal_r_t)
cb = fig.colorbar(C, ax=axs[2]);
axs[2].set_title('Standard Error');<jupyter_output><empty_output><jupyter_text>Surface Oil Volume: Set-up and Preparation<jupyter_code># Good if good to 100% of beaching volume
perol = 1
absol = np.log(perol+1)

sv_perol = perol
ma_surface_oil = np.ma.masked_array(oil.surface_oil[0]/(oil.oilpresence + eps), oil.oilpresence == 0)

den = np.minimum(np.array(oil.oilpresence) + eps, mcsize)
surfoil_ste = np.std(oil.surface_oil/(oil.oilpresence + eps), axis=0, ddof=1) / np.sqrt(den)
surfoiled = np.ma.masked_array(oil.surface_oil[0]/(oil.oilpresence + eps), (oil.oilpresence <= 1) | (
    (surfoil_ste > absol) )) 

ma_surfoil_ste = np.ma.masked_array(surfoil_ste, oil.oilpresence <= 0)
plt.hist(oil.surface_oil[:, 400, 300]/(oil.oilpresence[400, 300] + eps))
print (np.std(oil.surface_oil[:, 400, 300]/(oil.oilpresence[400, 300] + eps), axis=0, ddof=1) 
       / np.sqrt(mcsize))
print (ma_surface_oil[400, 300])
print ('ste', surfoil_ste[400, 300], absol)
print (oil.oilpresence[400, 300])
print (ma_surfoil_ste[400, 300])
print ('*', surfoiled[400, 300])
print (np.exp(surfoiled.max()))
print (np.exp(surfoiled.min()))
print (np.sqrt(49))
print (np.sqrt(49)* ma_surfoil_ste[400, 300])<jupyter_output><xarray.DataArray ()>
array(0.)
Coordinates:
    grid_x   int64 300
    grid_y   int64 400
    grid_z   int16 39
--
ste <xarray.DataArray ()>
array(0.)
Coordinates:
    grid_x   int64 300
    grid_y   int64 400
    grid_z   int16 39 0.6931471805599453
<xarray.DataArray 'oilpresence' ()>
array(0.)
Coordinates:
    grid_x   int64 300
    grid_y   int64 400
    grid_z   int16 ...
--
* --
--
--
7.0
--<jupyter_text>Surface Oil: Plots<jupyter_code>fig, axs = plt.subplots(1, 3, figsize=(18, 9))

vmin, vmax = 0.02, 50

for ax in axs:
    ax.pcolormesh(tmask[1:, 1:], cmap='terrain', vmin=-0.2, vmax=1.6)
    ax.set_ylim(imin, imax)
    ax.set_xlim(jmin, jmax)
    ax.set_aspect(aspect)


C = axs[0].pcolormesh(
     np.exp(ma_surface_oil) * divarea * 1e6, norm=colors.LogNorm(vmin=vmin, vmax=vmax),
    zorder=2, cmap='inferno'
)
cb = fig.colorbar(C, ax=axs[0]);    
cb.set_label('Surface Oil ($\mu m$)')
axs[0].set_title('Geometric Mean Surface Oil')
    
C = axs[1].pcolormesh(
     np.exp(surfoiled) * divarea * 1e6,
    zorder=2, norm=colors.LogNorm(vmin=vmin, vmax=vmax), cmap='inferno'
)
cb = fig.colorbar(C, ax=axs[1]);
cb.set_label('Surface Oil ($\mu m$)')
axs[1].set_title(f'Screened Geometric Mean Surface Oil\n Standard Error less than {perol*100}%')

C = axs[2].pcolormesh(
     (np.exp(ma_surfoil_ste + ma_surface_oil) - np.exp(ma_surface_oil)) * divarea * 1e6, norm=colors.LogNorm(vmin=vmin, vmax=vmax),
    zorder=2, cmap='inferno'
)
cb = fig.colorbar(C, ax=axs[2]);
cb.set_label('Surface Oil ($\mu m$)')
axs[2].set_title('One Standard Error Up');<jupyter_output><empty_output><jupyter_text>Watercolumn Oil  Watercolumn Presence: Set-up and Preparation<jupyter_code>ma_deep_pres = np.ma.masked_array(oil.deeppresence, oil.deeppresence == 0)<jupyter_output><empty_output><jupyter_text>Watercolumn Presence: Plot<jupyter_code>fig, ax = plt.subplots(1, 1, figsize=(6, 9))

ax.pcolormesh(tmask[1:, 1:], cmap='terrain', vmin=-0.2, vmax=1.6)
ax.set_ylim(imin, imax)
ax.set_xlim(jmin, jmax)
ax.set_aspect(aspect)


C = ax.pcolormesh(ma_deep_pres, zorder=2)
cb = fig.colorbar(C, ax=ax);    
cb.set_label('Presence (count of spills)')
ax.set_title(f'Below Surface Oil Presence (count) of {oil.nofiles.values+smalloils} spills');<jupyter_output><empty_output><jupyter_text>Watercolumn Depth: Set-up and Preparation<jupyter_code># Good if good to 5 m or 25% of depth
absol = 5
perol = 0.25

wd_absol = absol
wd_perol = perol
ma_deep_location = np.ma.masked_array(oil.deep_location[0]/(oil.deeppresence + eps), oil.deeppresence == 0)
den = np.minimum(np.array(oil.deeppresence) + eps, mcsize)
location_ste = np.std(oil.deep_location, axis=0, ddof=1) / np.sqrt(den)
location = np.ma.masked_array(oil.deep_location[0]/(oil.deeppresence + eps), (oil.deeppresence <= 1) | (
    (location_ste/(oil.deeppresence+eps) > absol) | (location_ste > perol*oil.deep_location[0]))) 

ma_location_ste = np.ma.masked_array(location_ste/(oil.deeppresence+eps), location_ste == 0)<jupyter_output><empty_output><jupyter_text>Watercolumn Depth: Plot<jupyter_code>fig, axs = plt.subplots(1, 3, figsize=(18, 9))

for ax in axs:
    ax.pcolormesh(tmask[1:, 1:], cmap='terrain', vmin=-0.2, vmax=1.6)
    ax.set_ylim(imin, imax)
    ax.set_xlim(jmin, jmax)
    ax.set_aspect(aspect)



C = axs[0].pcolormesh(
     ma_deep_location,
    zorder=2, vmin=0, vmax=75, cmap=cm.deep
)
cb = fig.colorbar(C, ax=axs[0]);    
axs[0].set_title('Deep Location (m)');    

C = axs[1].pcolormesh(
     location,
    zorder=2, vmin=0, vmax=75, cmap=cm.deep
)
cb = fig.colorbar(C, ax=axs[1]);
cb.set_label('Depth of Dispersed Oil')
axs[1].set_title(f'Screened Deep Location\n Standard Error less than {wd_absol} m and {wd_perol*100}%')

C = axs[2].pcolormesh(ma_location_ste, 
    zorder=2, vmax=10, cmap=cm.deep
)
cb = fig.colorbar(C, ax=axs[2]);
axs[2].set_title('Standard Error');<jupyter_output><empty_output><jupyter_text>Watercolumn Volume: Set-up and Preparation<jupyter_code># Good if good to 100% of beaching volume
perol = 1
absol = np.log(perol+1)

dv_perol = perol
ma_deep_oil = np.ma.masked_array(oil.deep_oil[0]/(oil.deeppresence + eps), oil.deeppresence == 0)

den = np.minimum(np.array(oil.deeppresence) + eps, mcsize)
deepoil_ste = np.std(oil.deep_oil/(oil.deeppresence + eps), axis=0, ddof=1) / np.sqrt(den)
deepoiled = np.ma.masked_array(oil.deep_oil[0]/(oil.deeppresence + eps), (oil.deeppresence <= 1) | (
    (deepoil_ste > absol) )) 

ma_deepoil_ste = np.ma.masked_array(deepoil_ste, oil.deeppresence <= 0)<jupyter_output><empty_output><jupyter_text>Watercolumn Volume: Plots<jupyter_code>fig, axs = plt.subplots(1, 3, figsize=(18, 9))

vmin, vmax = 0.02, 50

for ax in axs:
    ax.pcolormesh(tmask[1:, 1:], cmap='terrain', vmin=-0.2, vmax=1.6)
    ax.set_xlim(jmin, jmax)
    ax.set_aspect(aspect)


C = axs[0].pcolormesh(
     np.exp(ma_deep_oil) * divarea * 1e6, norm=colors.LogNorm(vmin=vmin, vmax=vmax),
    zorder=2, cmap='inferno'
)
cb = fig.colorbar(C, ax=axs[0]);    
cb.set_label('Deep Oil (depth integrated: $\mu m$)')
axs[0].set_title('Geometric Mean Deep Oil')
    
C = axs[1].pcolormesh(
     np.exp(deepoiled) * divarea * 1e6,
    zorder=2, norm=colors.LogNorm(vmin=vmin, vmax=vmax), cmap='inferno'
)
cb = fig.colorbar(C, ax=axs[1]);
cb.set_label('Deep Oil (depth integrated: $\mu m$)')
axs[1].set_title(f'Screened Geometric Mean Deep Oil\n Standard Error less than {perol*100}%')

C = axs[2].pcolormesh(
     (np.exp(ma_deepoil_ste + ma_deep_oil) - np.exp(ma_deep_oil)) * divarea * 1e6, norm=colors.LogNorm(vmin=vmin, vmax=vmax),
    zorder=2, cmap='inferno'
)
cb = fig.colorbar(C, ax=axs[2]);
cb.set_label('Deep Oil (depth integrated: $\mu m$)')
axs[2].set_title('One Standard Error Up');<jupyter_output><empty_output><jupyter_text>Screened Plots<jupyter_code>fig, axs = plt.subplots(3, 3, figsize=(18, 9*3+2))

fig.suptitle(f'{whichspills}', fontsize=20)
vmax = 50
vmin = 0.02

for i in range(3):
    for ax in axs[i]:
        ax.pcolormesh(tmask[1:, 1:], cmap='terrain', vmin=-0.2, vmax=1.6)
        ax.set_ylim(imin, imax)
        ax.set_xlim(jmin, jmax)
        ax.set_aspect(aspect)

        
C = axs[0, 0].pcolormesh(ma_beaching_pres, zorder=2)
cb = fig.colorbar(C, ax=axs[0, 0]);    
cb.set_label('Presence (count of spills)')
axs[0, 0].set_title(f'Beaching Presence (count) of {oil.nofiles.values+smalloils} spills');   

C = axs[0, 1].pcolormesh(beached, zorder=2, vmin=0, vmax=7, cmap=thermal_r_t)
cb = fig.colorbar(C, ax=axs[0, 1]);
cb.set_label('Beaching Time (days)')
axs[0, 1].set_title(f'Screened Mean Beaching Time\n Standard Error less than {bt_absol} days and {bt_perol*100}%');

C = axs[0, 2].pcolormesh(np.exp(beachedoil) * alength * 1000, zorder=2, norm=colors.LogNorm(vmin=vmin, vmax=vmax), cmap='inferno')
cb = fig.colorbar(C, ax=axs[0, 2]);
cb.set_label('Beached Oil ($\ell$/m)')
axs[0, 2].set_title(f'Screened Geometric Mean Beached Oil\n Standard Error less than {bv_perol*100}%');

C = axs[1, 0].pcolormesh(ma_oil_pres, zorder=2)
cb = fig.colorbar(C, ax=axs[1, 0]);    
cb.set_label('Presence (count of spills)')
axs[1, 0].set_title(f'Surface Oil Presence (count) of {oil.nofiles.values+smalloils} spills');  

C = axs[1, 1].pcolormesh(arrived, zorder=2, vmin=0, vmax=7, cmap=thermal_r_t)
cb = fig.colorbar(C, ax=axs[1, 1]);
cb.set_label('Arrival Time (days)')
axs[1, 1].set_title(f'Screened Mean Arrival Time\n Standard Error less than {at_absol} days ad {at_perol*100}%');

C = axs[1, 2].pcolormesh(
     np.exp(surfoiled) * divarea * 1e6,
    zorder=2, norm=colors.LogNorm(vmin=vmin, vmax=vmax), cmap='inferno')
cb = fig.colorbar(C, ax=axs[1, 2]);
cb.set_label('Surface Oil ($\mu m$)')
axs[1, 2].set_title(f'Screened Geometric Mean Surface Oil\n Standard Error less than {sv_perol*100}%');


C = axs[2, 0].pcolormesh(ma_deep_pres, zorder=2)
cb = fig.colorbar(C, ax=axs[2, 0]);    
cb.set_label('Presence (count of spills)')
axs[2, 0].set_title(f'Below Surface Oil Presence (count) of {oil.nofiles.values+smalloils} spills');   

C = axs[2, 1].pcolormesh(
     location,
    zorder=2, vmin=0, vmax=75, cmap=cm.deep
)
cb = fig.colorbar(C, ax=axs[2, 1]);
cb.set_label('Depth of Dispersed Oil')
axs[2, 1].set_title(f'Screened Deep Location\n Standard Error less than {wd_absol} m and {wd_perol*100}%');

C = axs[2, 2].pcolormesh(
     np.exp(deepoiled) * divarea * 1e6,
    zorder=2, norm=colors.LogNorm(vmin=vmin, vmax=vmax), cmap='inferno'
)
cb = fig.colorbar(C, ax=axs[2, 2]);
cb.set_label('Deep Oil (depth integrated: $\mu m$)')
axs[2, 2].set_title(f'Screened Geometric Mean Deep Oil\n Standard Error less than {dv_perol*100}%');<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.17013190252626872, 'fraction_numerical': 0.040800357701766155, 'mean_word_length': 5.260671798460462, 'pattern_counts': {'":': 0, '<': 90, '<?xml version=': 0, '>': 88, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '19', 'dir': 'jupyter-structured-clean-dedup', 'id': '388813', 'license': 'Apache-2.0', 'n_tokens_mistral': 8537, 'n_tokens_neox': 7833, 'n_words': 1403, 'path': 'notebooks/Plot_Aggregates_dilbit.ipynb', 'repo_name': 'MIDOSS/Visualization', 'size': '17892'}