Flerdimensionella arrayer

Parallellprogrammering med Dask i Python

James Fulton

Climate Informatics Researcher

Typer av flerdimensionell data

  • Väderprognoser/observationer
  • 3D-biomedicinska skanningar
  • Satellitbilder
  • Data från andra vetenskapliga instrument
Parallellprogrammering med Dask i Python

HDF5

HDF-logotypen

  • Hierarchical Data Format
  • Lagras i hierarkiskt format – som (under)kataloger
Parallellprogrammering med Dask i Python

Hur ser en HDF5-fil ut?

En enda mapp

Parallellprogrammering med Dask i Python

Hur ser en HDF5-fil ut?

En enda mapp som innehåller fyra olika datamängder och viss metadata.

Parallellprogrammering med Dask i Python

Navigera HDF5-filer med 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']>
Parallellprogrammering med Dask i Python

Navigera HDF5-filer med 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">
Parallellprogrammering med Dask i Python

Läsa in från 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>
Parallellprogrammering med Dask i Python

Zarr

  • Hierarkisk datamängd som HDF5
  • Utformat för att chunkas
  • Lämpligt för strömning via molntjänster som AWS, Google Cloud m.fl.
  • Navigerbar filstruktur
Parallellprogrammering med Dask i Python

Läsa in från 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>
Parallellprogrammering med Dask i Python

Nu kör vi en övning!

Parallellprogrammering med Dask i Python

Preparing Video For Download...