Tablice wielowymiarowe

Programowanie równoległe z Dask w Pythonie

James Fulton

Climate Informatics Researcher

Typy danych wielowymiarowych

  • Prognozy/obserwacje pogody
  • Trójwymiarowe skany biomedyczne
  • Zdjęcia satelitarne
  • Dane z innych instrumentów naukowych
Programowanie równoległe z Dask w Pythonie

HDF5

Logo HDF

  • Hierarchiczny Format Danych
  • Przechowywany hierarchicznie – podobnie do (pod)katalogów
Programowanie równoległe z Dask w Pythonie

Jak wygląda plik HDF5?

Pojedynczy folder

Programowanie równoległe z Dask w Pythonie

Jak wygląda plik HDF5?

Pojedynczy folder zawierający cztery zbiory danych i metadane.

Programowanie równoległe z Dask w Pythonie

Nawigacja po plikach HDF5 z 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']>
Programowanie równoległe z Dask w Pythonie

Nawigacja po plikach HDF5 z 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">
Programowanie równoległe z Dask w Pythonie

Wczytywanie z 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>
Programowanie równoległe z Dask w Pythonie

Zarr

  • Hierarchiczny zbiór danych, jak HDF5
  • Zaprojektowany do podziału na fragmenty
  • Odpowiedni do przesyłania strumieniowego w chmurze (AWS, Google Cloud itp.)
  • Nawigowalna struktura pliku
Programowanie równoległe z Dask w Pythonie

Wczytywanie z 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>
Programowanie równoległe z Dask w Pythonie

Czas na ćwiczenia!

Programowanie równoległe z Dask w Pythonie

Preparing Video For Download...