%matplotlib inline
import pandas as pd
import socket
host = socket.getfqdn()
from core import load, zoom, calc, save,plots,monitor
#reload funcs after updating ./core/*.py
import importlib
importlib.reload(load)
importlib.reload(zoom)
importlib.reload(calc)
importlib.reload(save)
importlib.reload(plots)
importlib.reload(monitor)
<module 'core.monitor' from '/ccc/work/cont003/gen7420/odakatin/monitor-sedna/notebook/core/monitor.py'>
If you submit the job with job scheduler; below are list of enviroment variable one can pass
local : if True run dask local cluster, if not true, put number of workers setted in the 'local' if no 'local ' given, local will be setted automatically to 'True'
%env ychunk='2', #%env tchunk='2'
controls chunk. 'False' sets no modification from original netcdf file's chunk.
ychunk=10 will group the original netcdf file to 10 by 10
tchunk=1 will chunk the time coordinate one by one
%env file_exp=
'file_exp': Which 'experiment' name is it? this corresopnds to intake catalog name without path and .yaml
#%env year=
for Validation, this correspoinds to path/year/month 's year for monitoring, this corresponids to 'date' having means do all files in the monitoring directory setting it as 0[0-9] &1[0-9]& [2-3][0-9], the job can be separated in three lots. For DELTA experiment, year corresponds to really 'year'
%env month=
for monitoring this corresponds to file path path-XIOS.{month}/
For DELTA experiment, year corresponds to really 'month'
proceed saving? True or False , Default is setted as True
proceed plotting? True or False , Default is setted as True
proceed computation? or just load computed result? True or False , Default is setted as True
save output file used for plotting
using kerchunked file -> False, not using kerhcunk -> True
name of control file to be used for computation/plots/save/ We have number of M_xxx.csv
Monitor.sh calls M_MLD_2D
and AWTD.sh, Fluxnet.sh, Siconc.sh, IceClim.sh, FWC_SSH.sh, Integrals.sh , Sections.sh
M_AWTMD
M_Fluxnet
M_Ice_quantities
M_IceClim M_IceConce M_IceThick
M_FWC_2D M_FWC_integrals M_FWC_SSH M_SSH_anomaly
M_Mean_temp_velo M_Mooring
M_Sectionx M_Sectiony
%%time
# 'savefig': Do we save output in html? or not. keep it true.
savefig=True
client,cluster,control,catalog_url,month,year,daskreport,outputpath = load.set_control(host)
!mkdir -p $outputpath
!mkdir -p $daskreport
client
local True using host= irene5307.c-irene.mg1.tgcc.ccc.cea.fr starting dask cluster on local= True workers 16 10000000000 rome local cluster starting This code is running on irene5307.c-irene.mg1.tgcc.ccc.cea.fr using SEDNA_DELTA_MONITOR file experiment, read from ../lib/SEDNA_DELTA_MONITOR.yaml on year= 2012 on month= 03 outputpath= ../results/SEDNA_DELTA_MONITOR/ daskreport= ../results/dask/6464054irene5307.c-irene.mg1.tgcc.ccc.cea.fr_SEDNA_DELTA_MONITOR_03M_Sectiony/ CPU times: user 579 ms, sys: 139 ms, total: 718 ms Wall time: 21.1 s
Client-b61b1233-184e-11ed-be8b-080038b93dd9
Connection method: Cluster object | Cluster type: distributed.LocalCluster |
Dashboard: http://127.0.0.1:8787/status |
984025e3
Dashboard: http://127.0.0.1:8787/status | Workers: 16 |
Total threads: 128 | Total memory: 251.06 GiB |
Status: running | Using processes: True |
Scheduler-52378e84-7a99-48fa-9c45-2357b86e1788
Comm: tcp://127.0.0.1:35734 | Workers: 16 |
Dashboard: http://127.0.0.1:8787/status | Total threads: 128 |
Started: Just now | Total memory: 251.06 GiB |
Comm: tcp://127.0.0.1:37315 | Total threads: 8 |
Dashboard: http://127.0.0.1:35575/status | Memory: 15.69 GiB |
Nanny: tcp://127.0.0.1:35047 | |
Local directory: /tmp/dask-worker-space/worker-ktd2c8bm |
Comm: tcp://127.0.0.1:38034 | Total threads: 8 |
Dashboard: http://127.0.0.1:34644/status | Memory: 15.69 GiB |
Nanny: tcp://127.0.0.1:33063 | |
Local directory: /tmp/dask-worker-space/worker-4b2zj8ha |
Comm: tcp://127.0.0.1:40885 | Total threads: 8 |
Dashboard: http://127.0.0.1:38685/status | Memory: 15.69 GiB |
Nanny: tcp://127.0.0.1:39692 | |
Local directory: /tmp/dask-worker-space/worker-blk9ywjc |
Comm: tcp://127.0.0.1:44078 | Total threads: 8 |
Dashboard: http://127.0.0.1:41701/status | Memory: 15.69 GiB |
Nanny: tcp://127.0.0.1:33111 | |
Local directory: /tmp/dask-worker-space/worker-jwl8sscj |
Comm: tcp://127.0.0.1:39655 | Total threads: 8 |
Dashboard: http://127.0.0.1:38147/status | Memory: 15.69 GiB |
Nanny: tcp://127.0.0.1:39187 | |
Local directory: /tmp/dask-worker-space/worker-ls9v65kn |
Comm: tcp://127.0.0.1:40865 | Total threads: 8 |
Dashboard: http://127.0.0.1:41349/status | Memory: 15.69 GiB |
Nanny: tcp://127.0.0.1:42354 | |
Local directory: /tmp/dask-worker-space/worker-q2xeydfe |
Comm: tcp://127.0.0.1:33346 | Total threads: 8 |
Dashboard: http://127.0.0.1:33668/status | Memory: 15.69 GiB |
Nanny: tcp://127.0.0.1:41969 | |
Local directory: /tmp/dask-worker-space/worker-uvg_wbpe |
Comm: tcp://127.0.0.1:33822 | Total threads: 8 |
Dashboard: http://127.0.0.1:33448/status | Memory: 15.69 GiB |
Nanny: tcp://127.0.0.1:41097 | |
Local directory: /tmp/dask-worker-space/worker-0mr4qg4o |
Comm: tcp://127.0.0.1:40295 | Total threads: 8 |
Dashboard: http://127.0.0.1:44777/status | Memory: 15.69 GiB |
Nanny: tcp://127.0.0.1:37479 | |
Local directory: /tmp/dask-worker-space/worker-oqm22ffi |
Comm: tcp://127.0.0.1:39790 | Total threads: 8 |
Dashboard: http://127.0.0.1:40666/status | Memory: 15.69 GiB |
Nanny: tcp://127.0.0.1:43717 | |
Local directory: /tmp/dask-worker-space/worker-nvgwc4sp |
Comm: tcp://127.0.0.1:40521 | Total threads: 8 |
Dashboard: http://127.0.0.1:34651/status | Memory: 15.69 GiB |
Nanny: tcp://127.0.0.1:44510 | |
Local directory: /tmp/dask-worker-space/worker-ct5zagkf |
Comm: tcp://127.0.0.1:42652 | Total threads: 8 |
Dashboard: http://127.0.0.1:37289/status | Memory: 15.69 GiB |
Nanny: tcp://127.0.0.1:35279 | |
Local directory: /tmp/dask-worker-space/worker-ys1y0yqy |
Comm: tcp://127.0.0.1:45712 | Total threads: 8 |
Dashboard: http://127.0.0.1:40300/status | Memory: 15.69 GiB |
Nanny: tcp://127.0.0.1:37023 | |
Local directory: /tmp/dask-worker-space/worker-gr1sn071 |
Comm: tcp://127.0.0.1:41137 | Total threads: 8 |
Dashboard: http://127.0.0.1:38306/status | Memory: 15.69 GiB |
Nanny: tcp://127.0.0.1:43506 | |
Local directory: /tmp/dask-worker-space/worker-pvbsp24_ |
Comm: tcp://127.0.0.1:38895 | Total threads: 8 |
Dashboard: http://127.0.0.1:33410/status | Memory: 15.69 GiB |
Nanny: tcp://127.0.0.1:41304 | |
Local directory: /tmp/dask-worker-space/worker-vzuaxmh5 |
Comm: tcp://127.0.0.1:39768 | Total threads: 8 |
Dashboard: http://127.0.0.1:33273/status | Memory: 15.69 GiB |
Nanny: tcp://127.0.0.1:46698 | |
Local directory: /tmp/dask-worker-space/worker-pdqwfwwz |
df=load.controlfile(control)
#Take out 'later' tagged computations
#df=df[~df['Value'].str.contains('later')]
df
Value | Inputs | Equation | Zone | Plot | Colourmap | MinMax | Unit | Oldname | Unnamed: 10 | |
---|---|---|---|---|---|---|---|---|---|---|
Section | gridT.votemper,gridS.vosaline,gridV.vomecrty,p... | data.unify_chunks().persist() | FramS | section | None | {'vosaline': (33,36.2), 'votemper': (-2,6), 'v... | None | S-1 |
Each computation consists of
%%time
import os
calcswitch=os.environ.get('calc', 'True')
lazy=os.environ.get('lazy','False' )
loaddata=((df.Inputs != '').any())
print('calcswitch=',calcswitch,'df.Inputs != nothing',loaddata, 'lazy=',lazy)
data = load.datas(catalog_url,df.Inputs,month,year,daskreport,lazy=lazy) if ((calcswitch=='True' )*loaddata) else 0
data
calcswitch= True df.Inputs != nothing True lazy= False ../lib/SEDNA_DELTA_MONITOR.yaml using param_xios reading ../lib/SEDNA_DELTA_MONITOR.yaml using param_xios reading <bound method DataSourceBase.describe of sources: param_xios: args: combine: nested concat_dim: y urlpath: /ccc/work/cont003/gen7420/odakatin/CONFIGS/SEDNA/SEDNA-I/SEDNA_Domain_cfg_Tgt_20210423_tsh10m_L1/param_f32/x_*.nc xarray_kwargs: compat: override coords: minimal data_vars: minimal parallel: true description: SEDNA NEMO parameters from MPI output nav_lon lat fails driver: intake_xarray.netcdf.NetCDFSource metadata: catalog_dir: /ccc/work/cont003/gen7420/odakatin/monitor-sedna/notebook/../lib/ > {'name': 'param_xios', 'container': 'xarray', 'plugin': ['netcdf'], 'driver': ['netcdf'], 'description': 'SEDNA NEMO parameters from MPI output nav_lon lat fails', 'direct_access': 'forbid', 'user_parameters': [{'name': 'path', 'description': 'file coordinate', 'type': 'str', 'default': '/ccc/work/cont003/gen7420/odakatin/CONFIGS/SEDNA/MESH/SEDNA_mesh_mask_Tgt_20210423_tsh10m_L1/param'}], 'metadata': {}, 'args': {'urlpath': '/ccc/work/cont003/gen7420/odakatin/CONFIGS/SEDNA/SEDNA-I/SEDNA_Domain_cfg_Tgt_20210423_tsh10m_L1/param_f32/x_*.nc', 'combine': 'nested', 'concat_dim': 'y'}} 0 read gridS ['vosaline'] lazy= False using load_data_xios_kerchunk reading gridS using load_data_xios_kerchunk reading <bound method DataSourceBase.describe of sources: data_xios_kerchunk: args: consolidated: false storage_options: fo: file:////ccc/cont003/home/ra5563/ra5563/catalogue/DELTA/201203/gridS_0[0-5][0-9][0-9].json target_protocol: file urlpath: reference:// description: CREG025 NEMO outputs from different xios server in kerchunk format driver: intake_xarray.xzarr.ZarrSource metadata: catalog_dir: /ccc/work/cont003/gen7420/odakatin/monitor-sedna/notebook/../lib/ > took 21.180792570114136 seconds 0 merging gridS ['vosaline'] 1 read gridT ['votemper'] lazy= False using load_data_xios_kerchunk reading gridT using load_data_xios_kerchunk reading <bound method DataSourceBase.describe of sources: data_xios_kerchunk: args: consolidated: false storage_options: fo: file:////ccc/cont003/home/ra5563/ra5563/catalogue/DELTA/201203/gridT_0[0-5][0-9][0-9].json target_protocol: file urlpath: reference:// description: CREG025 NEMO outputs from different xios server in kerchunk format driver: intake_xarray.xzarr.ZarrSource metadata: catalog_dir: /ccc/work/cont003/gen7420/odakatin/monitor-sedna/notebook/../lib/ > took 31.633633852005005 seconds 1 merging gridT ['votemper'] took 0.7532386779785156 seconds 2 read gridV ['vomecrty'] lazy= False using load_data_xios_kerchunk reading gridV using load_data_xios_kerchunk reading <bound method DataSourceBase.describe of sources: data_xios_kerchunk: args: consolidated: false storage_options: fo: file:////ccc/cont003/home/ra5563/ra5563/catalogue/DELTA/201203/gridV_0[0-5][0-9][0-9].json target_protocol: file urlpath: reference:// description: CREG025 NEMO outputs from different xios server in kerchunk format driver: intake_xarray.xzarr.ZarrSource metadata: catalog_dir: /ccc/work/cont003/gen7420/odakatin/monitor-sedna/notebook/../lib/ > took 42.17132616043091 seconds 2 merging gridV ['vomecrty'] took 0.8151638507843018 seconds param nav_lon will be included in data param depth will be included in data param mask2d will be included in data param mask will be included in data param nav_lat will be included in data ychunk= 10 calldatas_y_rechunk sum_num (13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12) start rechunking with (130, 122, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 48) end of y_rechunk CPU times: user 53.8 s, sys: 7.4 s, total: 1min 1s Wall time: 2min 2s
<xarray.Dataset> Dimensions: (t: 31, z: 150, y: 6540, x: 6560) Coordinates: * t (t) object 2012-03-01 12:00:00 ... 2012-03-31 12:00:00 * y (y) int64 1 2 3 4 5 6 7 8 ... 6534 6535 6536 6537 6538 6539 6540 * x (x) int64 1 2 3 4 5 6 7 8 ... 6554 6555 6556 6557 6558 6559 6560 * z (z) int64 1 2 3 4 5 6 7 8 9 ... 143 144 145 146 147 148 149 150 nav_lon (y, x) float32 dask.array<chunksize=(130, 6560), meta=np.ndarray> depth (z, y, x) float32 dask.array<chunksize=(150, 130, 6560), meta=np.ndarray> mask2d (y, x) bool dask.array<chunksize=(130, 6560), meta=np.ndarray> mask (z, y, x) bool dask.array<chunksize=(150, 130, 6560), meta=np.ndarray> nav_lat (y, x) float32 dask.array<chunksize=(130, 6560), meta=np.ndarray> Data variables: vosaline (t, z, y, x) float32 dask.array<chunksize=(1, 150, 130, 6560), meta=np.ndarray> votemper (t, z, y, x) float32 dask.array<chunksize=(1, 150, 130, 6560), meta=np.ndarray> vomecrty (t, z, y, x) float32 dask.array<chunksize=(1, 150, 130, 6560), meta=np.ndarray> Attributes: (12/26) CASE: DELTA CONFIG: SEDNA Conventions: CF-1.6 DOMAIN_dimensions_ids: [2, 3] DOMAIN_halo_size_end: [0, 0] DOMAIN_halo_size_start: [0, 0] ... ... nj: 13 output_frequency: 1d start_date: 20090101 timeStamp: 2022-Jan-19 12:40:34 GMT title: ocean T grid variables uuid: b2000bef-0e1f-4f0d-ae2a-b9429429b7a2
%%time
monitor.auto(df,data,savefig,daskreport,outputpath,file_exp='SEDNA'
)
#calc= True #save= True #plot= False Value='Section' Zone='FramS' Plot='section' cmap='None' clabel='None' clim= {'vosaline': (33, 36.2), 'votemper': (-2, 6), 'vomecrty': (-0.05, 0.05)} outputpath='../results/SEDNA_DELTA_MONITOR/' nc_outputpath='../nc_results/SEDNA_DELTA_MONITOR/' filename='SEDNA_section_FramS_Section' data=monitor.optimize_dataset(data) #2 Zooming Data data= zoom.FramS(data) data=monitor.optimize_dataset(data)
<xarray.Dataset> Dimensions: (t: 31, z: 150, x: 601) Coordinates: * t (t) object 2012-03-01 12:00:00 ... 2012-03-31 12:00:00 y int64 2609 * x (x) int64 3734 3735 3736 3737 3738 ... 4330 4331 4332 4333 4334 * z (z) int64 1 2 3 4 5 6 7 8 9 ... 143 144 145 146 147 148 149 150 nav_lon (x) float32 dask.array<chunksize=(601,), meta=np.ndarray> depth (z, x) float32 dask.array<chunksize=(150, 601), meta=np.ndarray> mask2d (x) bool dask.array<chunksize=(601,), meta=np.ndarray> mask (z, x) bool dask.array<chunksize=(150, 601), meta=np.ndarray> nav_lat (x) float32 dask.array<chunksize=(601,), meta=np.ndarray> Data variables: vosaline (t, z, x) float32 dask.array<chunksize=(1, 150, 601), meta=np.ndarray> votemper (t, z, x) float32 dask.array<chunksize=(1, 150, 601), meta=np.ndarray> vomecrty (t, z, x) float32 dask.array<chunksize=(1, 150, 601), meta=np.ndarray> Attributes: (12/26) CASE: DELTA CONFIG: SEDNA Conventions: CF-1.6 DOMAIN_dimensions_ids: [2, 3] DOMAIN_halo_size_end: [0, 0] DOMAIN_halo_size_start: [0, 0] ... ... nj: 13 output_frequency: 1d start_date: 20090101 timeStamp: 2022-Jan-19 12:40:34 GMT title: ocean T grid variables uuid: b2000bef-0e1f-4f0d-ae2a-b9429429b7a2
#3 Start computing data= data.unify_chunks().persist() monitor.optimize_dataset(data) add optimise here once otimise can recognise
<xarray.Dataset> Dimensions: (t: 31, z: 150, x: 601) Coordinates: * t (t) object 2012-03-01 12:00:00 ... 2012-03-31 12:00:00 y int64 2609 * x (x) int64 3734 3735 3736 3737 3738 ... 4330 4331 4332 4333 4334 * z (z) int64 1 2 3 4 5 6 7 8 9 ... 143 144 145 146 147 148 149 150 nav_lon (x) float32 dask.array<chunksize=(601,), meta=np.ndarray> depth (z, x) float32 dask.array<chunksize=(150, 601), meta=np.ndarray> mask2d (x) bool dask.array<chunksize=(601,), meta=np.ndarray> mask (z, x) bool dask.array<chunksize=(150, 601), meta=np.ndarray> nav_lat (x) float32 dask.array<chunksize=(601,), meta=np.ndarray> Data variables: vosaline (t, z, x) float32 dask.array<chunksize=(1, 150, 601), meta=np.ndarray> votemper (t, z, x) float32 dask.array<chunksize=(1, 150, 601), meta=np.ndarray> vomecrty (t, z, x) float32 dask.array<chunksize=(1, 150, 601), meta=np.ndarray> Attributes: (12/26) CASE: DELTA CONFIG: SEDNA Conventions: CF-1.6 DOMAIN_dimensions_ids: [2, 3] DOMAIN_halo_size_end: [0, 0] DOMAIN_halo_size_start: [0, 0] ... ... nj: 13 output_frequency: 1d start_date: 20090101 timeStamp: 2022-Jan-19 12:40:34 GMT title: ocean T grid variables uuid: b2000bef-0e1f-4f0d-ae2a-b9429429b7a2
#4 Saving SEDNA_section_FramS_Section data=save.datas(data,plot=Plot,path=nc_outputpath,filename=filename) start saving data saving data in a file t (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 slice(0, 1, None) slice(1, 2, None) slice(2, 3, None) slice(3, 4, None) slice(4, 5, None) slice(5, 6, None) slice(6, 7, None) slice(7, 8, None) slice(8, 9, None) slice(9, 10, None) slice(10, 11, None) slice(11, 12, None) slice(12, 13, None) slice(13, 14, None) slice(14, 15, None) slice(15, 16, None) slice(16, 17, None) slice(17, 18, None) slice(18, 19, None) slice(19, 20, None) slice(20, 21, None) slice(21, 22, None) slice(22, 23, None) slice(23, 24, None) slice(24, 25, None) slice(25, 26, None) slice(26, 27, None) slice(27, 28, None) slice(28, 29, None) slice(29, 30, None) slice(30, 31, None) CPU times: user 11.6 s, sys: 1.67 s, total: 13.3 s Wall time: 1min 16s