Arrays multidimensionais

Programação Paralela com Dask em Python

James Fulton

Climate Informatics Researcher

Tipos de dados multidimensionais

  • Previsões/observações do tempo
  • Exames biomédicos 3D
  • Imagens de satélite
  • Dados de outros instrumentos científicos
Programação Paralela com Dask em Python

HDF5

O logo do HDF

  • Hierarchical Data Format
  • Armazenado em formato hierárquico — como (sub)diretórios
Programação Paralela com Dask em Python

Como é um arquivo HDF5?

Uma única pasta

Programação Paralela com Dask em Python

Como é um arquivo HDF5?

Uma única pasta que contém quatro conjuntos de dados diferentes e alguns metadados.

Programação Paralela com Dask em Python

Navegando em arquivos HDF5 com 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']>
Programação Paralela com Dask em Python

Navegando em arquivos HDF5 com 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">
Programação Paralela com Dask em Python

Carregando de 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>
Programação Paralela com Dask em Python

Zarr

  • Conjunto de dados hierárquico como HDF5
  • Projetado para usar chunks
  • Bom para streaming em serviços de nuvem como AWS, Google Cloud etc.
  • Estrutura de arquivo navegável
Programação Paralela com Dask em Python

Carregando de 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>
Programação Paralela com Dask em Python

Vamos praticar!

Programação Paralela com Dask em Python

Preparing Video For Download...