Universita’



Scaricare 0.54 Mb.
Pagina24/38
29.03.2019
Dimensione del file0.54 Mb.
1   ...   20   21   22   23   24   25   26   27   ...   38

4.5 La libreria PyTables


L’intero lavoro è stato implementati in Python e per interfacciarsi con la libreria HDF5 si è fatto uso della libreria PyTables [13] .

La libreria PyTables permette di manipolare facilmente gli oggetti immagazzinati in una struttura gerarchica fornita dalla sottostante libreria HDF5.

Le funzioni di questa libreria non vogliono coprire tutte quelle che sono le funzionalità messe a disposizione dalla libreria HDF5, ma si limitano a fornire uno strumento che sia in grado di trattare una grossa quantità di dati, maggiore rispetto a quella che sarebbe possibile mantenere in memoria, immagazzinata in una struttura gerarchica persistente mediante l’uso di tabelle e array.

Una tabella è definita come una collezione di record i cui valori sono immagazzinati in campi di lunghezza prefissata. Tutti i record hanno la stessa struttura e tutti i valori in ogni campo hanno lo stesso tipo di dato. L’utilizzo di termini come “lunghezza prefissata” e “tipo di dato” possono sembrare strani requisiti per un linguaggio interpretato come Python, ma sono necessari se si vuole raggiungere lo scopo di salvare una grossa quantità di dati in un modo efficiente, riducendo i tempi di elaborazione.

Per emulare in Python i record mappati nella struttura usata da HDF5, la libreria PyTables implementa uno speciale oggetto “metaclasse”, facilitando la definizione di tutti i campi e le loro proprietà. PyTables inoltre fornisce una ricca interfaccia per estrarre i dati dalle tabelle. I record delle tabelle sono quelli che nello schema dei nomi della libreria HDF5 sono noti come tipi di dato composti.

Il modello gerarchico della sottostante libreria HDF5, permette alla libreria PyTables di gestire tabelle e array in una struttura ad albero. Per fare ciò, viene creato dinamicamente un oggetto di tipo albero, imitando la struttura HDF5 salvata in memoria. In questo modo si può avere una visione completa e dettagliata di quali sono i tipi di dato salvati nell’oggetto esaminandi i nodi contententi metadati4.

I diversi nodi nell’oggetto albero sono istanze della classe PyTables. Ci sono diversi tipi di classi, ma i più importanti sono le classi Group e le classi Leaf.

L’istanza della classe Group è una struttura composta da istanze di zero o più Group, o Leaf e da supplementari metadati. L’istanza della classe Leaf è un contenitore per i dati e non può contenere ulteriori istanze, siano esse Group o Leaf.

Le classi Table, EArray, VLArray e UnImplemented discendono dalla classe Leaf, e ne ereditano tutte le proprietà.
Lavorare con le classi Group e Leaf è come lavorare con le directory e con i file in un filesystem UNIX. Nell’oggetto albero non sono presenti tutti i dati salvati nel file, ma sono caricati solo i metadati. I dati reali non sono letti fino a quando non sono espressamente richiesti.




Condividi con i tuoi amici:
1   ...   20   21   22   23   24   25   26   27   ...   38


©astratto.info 2019
invia messaggio

    Pagina principale