2013-04-09 11 views
5

Aktualnie pracuję nad projektem kompresji zbiorów danych HDF5, a ostatnio zaczęłam używać h5py. Postępowałem zgodnie z podstawowymi samouczkami i mogłem otwierać, tworzyć i kompresować plik podczas jego tworzenia. Jednak nie udało mi się skompresować istniejącego pliku (co jest celem mojej pracy).Kompresja istniejącego pliku przy użyciu h5py

Próbowałem otwierać pliki za pomocą "r +", a następnie kompresować zgrupowane zestawy danych, ale rozmiary plików pozostały takie same.

Wszelkie sugestie dotyczące poleceń, których należy użyć, czy też podejmuję niewłaściwe działania?

Odpowiedz

3

Kompresja jest bardzo łatwa w użyciu w h5py. Sprawdź przewodniki Wiki HowTo i Compression. Zasadniczo, byłoby coś jak:

ds = myfile.create_dataset('ds', shape, dtype, compression='lzf') 

istnieje również pewne problemy z jak wybrać kawałek wielkości zoptymalizować rozmiar pliku/dostępu, patrz instrukcja kompresji I powiązany.

Nie pamiętam, która kompresja, jeśli jest, jest domyślnie włączona.

+1

Tak, wypróbowałem dokładnie to, ale wydaje mi się, że działa to tylko podczas tworzenia nowego pliku, np. Mogę utworzyć nowy plik o rozmiarze (100,100) z włączoną kompresją gzip/szip/lzf. Kiedy ładuję istniejący plik, jedynym sposobem, w jaki faktycznie działa funkcja kompresji, jest sytuacja, w której zawartość oryginalnego pliku jest nadpisywana i tworzona jest nowa (z tą samą nazwą oryginału). Po załadowaniu pliku, utwórz porcjowany zbiór danych, włącz kompresję, a następnie zamknij plik, wydaje się, że nie ma żadnego efektu ani zmiany. Mam wrażenie, że brakuje mi kroku, ale nie jestem pewien, co to jest. – kromegaman

+0

Kompresja i rozmiar kawałka @kromegaman określają, w jaki sposób plik jest zapisywany na dysku. Nie sądzę, że jest to coś, co można zmienić dla istniejącego pliku, ponieważ jest już napisane. Myślę, że jedynym sposobem na zmianę kompresji/porcji jest napisanie nowego pliku z tymi ustawieniami. – Bitwise

+0

Tak, im bardziej go używam, tym bardziej wydaje mi się, że tak jest. Myślę, że będę musiał utworzyć nowy plik i zestaw danych, skopiować dane z istniejącego pliku do nowego, a następnie skompresować nowy plik podczas jego tworzenia. Niemniej dziękuję za pomoc! – kromegaman

Powiązane problemy