Array multidimensionali

Programmazione parallela con Dask in Python

James Fulton

Climate Informatics Researcher

Tipi di dati multidimensionali

  • Previsioni/osservazioni meteo
  • Scansioni biomediche 3D
  • Immagini satellitari
  • Dati da altri strumenti scientifici
Programmazione parallela con Dask in Python

HDF5

Il logo HDF

  • Hierarchical Data Format
  • Salvato in formato gerarchico, come (sotto)cartelle
Programmazione parallela con Dask in Python

Com'è un file HDF5?

Una singola cartella

Programmazione parallela con Dask in Python

Com'è un file HDF5?

Una cartella con quattro dataset e alcuni metadati.

Programmazione parallela con Dask in Python

Navigare i file HDF5 con h5py

import h5py

# Open the HDF5 file
file = h5py.File('data.hdf5')


# Print the available datasets inside the file print(file.keys())
<KeysViewHDF5 ['A', 'B', 'C', 'D']>
Programmazione parallela con Dask in Python

Navigare i file HDF5 con h5py

import h5py

# Open the HDF5 file
file = h5py.File('data.hdf5')


# Select dataset A dataset_a = file['/A']
print(dataset_a)
<HDF5 dataset "A": shape (10000, 100, 100), type "<f4">
Programmazione parallela con Dask in Python

Caricare da HDF5

import dask.array as da

# Load dataset into a Dask array a = da.from_array(dataset_a, chunks=(100, 20, 20))
print(a)
dask.array<array, shape=(10000, 100, 100), dtype=float32, chunksize=(100, 20, 20),
    chunktype=numpy.ndarray>
Programmazione parallela con Dask in Python

Zarr

  • Dataset gerarchico come HDF5
  • Progettato per il chunking
  • Ottimo per lo streaming su cloud (AWS, Google Cloud, ecc.)
  • Struttura di file navigabile
Programmazione parallela con Dask in Python

Caricare da Zarr

import dask.array as da

a = da.from_zarr("dataset.zarr", component="A")


print(a)
dask.array<from-zarr, shape=(10000, 100, 100), dtype=float32,
    chunksize=(100, 20, 20), chunktype=numpy.ndarray>
Programmazione parallela con Dask in Python

Ayo berlatih!

Programmazione parallela con Dask in Python

Preparing Video For Download...