incremental schreibt mit h5py auf hdf5

Ich habe eine Frage, wie ich mit python / h5py am besten in hdf5-Dateien schreiben kann.

Ich habe Daten wie:

-----------------------------------------
| timepoint | voltage1 | voltage2 | ...
-----------------------------------------
| 178       | 10       | 12       | ...
-----------------------------------------
| 179       | 12       | 11       | ...
-----------------------------------------
| 185       | 9        | 12       | ...
-----------------------------------------
| 187       | 15       | 12       | ...
                    ...

mit ungefähr 10 ^ 4 Spalten und ungefähr 10 ^ 7 Zeilen. (Das sind ungefähr 10 ^ 11 (100 Milliarden) Elemente oder ~ 100 GB mit 1 Byte Ints).

Mit diesen Daten wird in der Regel nur ein Mal geschrieben und mehrmals gelesen. Der typische Lesefall besteht darin, Spalte 1 und eine weitere Spalte (z. B. 254) zu erfassen, beide Spalten in den Speicher zu laden und ausgefallene Statistiken zu erstellen.

Ich denke, eine gute hdf5-Struktur wäre also, dass jede Spalte in der obigen Tabelle eine hdf5-Gruppe ist, was 10 ^ 4 Gruppen ergibt. Auf diese Weise müssen wir nicht alle Daten in den Speicher einlesen, ja? Die hdf5-Struktur ist jedoch noch nicht definiert, es kann also alles sein.

Jetzt die Frage: Ich erhalte die Daten ~ 10 ^ 4 Zeilen gleichzeitig (und nicht jedes Mal genau die gleiche Anzahl von Zeilen) und muss sie inkrementell in die hdf5-Datei schreiben. Wie schreibe ich diese Datei?

Ich überlege mir python und h5py, könnte aber ein anderes tool empfehlen. Ist Chunking der Weg zu gehen, mit z. B.

dset = f.create_dataset("voltage284", (100000,), maxshape=(None,), dtype='i8', chunks=(10000,))

und dann, wenn ein weiterer Block mit 10 ^ 4 Zeilen eintrifft, ersetzen Sie den Datensatz?

Oder ist es besser, jeden Block mit 10 ^ 4 Zeilen als separaten Datensatz zu speichern? Oder muss ich die endgültige Anzahl der Zeilen wirklich wissen? (Das ist schwierig zu bekommen, aber vielleicht möglich).

Ich kann auf hdf5 aussteigen, wenn es nicht das richtige Werkzeug für den Job ist, obwohl ich denke, dass es wunderbar sein wird, wenn die unangenehmen Schreibvorgänge abgeschlossen sind.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage