File-like object from url of remote file, optimized for use with h5py.
Project description
remfile
Provides a file-like object for reading a remote file over HTTP, optimized for use with h5py.
Example usage:
# See examples/example1.py
import h5py
import remfile
url = 'https://dandiarchive.s3.amazonaws.com/blobs/d86/055/d8605573-4639-4b99-a6d9-e0ac13f9a7df'
file = remfile.File(url)
with h5py.File(file, 'r') as f:
print(f['/'].keys())
See examples/example1.py for a more complete example.
Installation
pip install remfile
Why?
The conventional way of reading a remote hdf5 file is to use the fsspec library as in examples/example1_compare_fsspec.py. However, this approach is empirically much slower than using remfile. I am not familiar with the inner workings of fsspec, but it does not seem to be optimized for reading hdf5 files. Efficient access of remote hdf5 files requires reading small chunks of data to obtain meta information, and then large chunks of data, and parallelization, to obtain the larger data arrays.
See a timing comparison betweeen remfile and fsspec in the examples directory.
How?
A file-like object is created that reads the remote file in chunks using the requests library. A relatively small default chunk size is used, but when the system detects that a large data array is being accessed, it switches to a larger chunk size. For very large data arrays, the system will use multiple threads to read the data in parallel.
Caveats
This library is not intended to be a general purpose library for reading remote files. It is optimized for reading hdf5 files.
At this time, remfile provides only an in-memory cache, not an on-disk cache.
At this time, remfile does not do automatic retries for failed requests.
License
Apache 2.0
Author
Jeremy Magland, Center for Computational Mathematics, Flatiron Institute
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file remfile-0.1.5.tar.gz
.
File metadata
- Download URL: remfile-0.1.5.tar.gz
- Upload date:
- Size: 9.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 848f150479c1fa7fe881c17c3a7b62d8bbf22f56ed861c281ce30779f41b608d |
|
MD5 | 56ffea79a408779daeba82a51e0fead4 |
|
BLAKE2b-256 | 9ea1b2865a38502f3034f7b2e0d88247ccf83e4367a4af159bd06e68e935d28c |
File details
Details for the file remfile-0.1.5-py3-none-any.whl
.
File metadata
- Download URL: remfile-0.1.5-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0f2b59c086eca0ac58cdf78af25a2b45e6a49988297746efa50f4119f74858d5 |
|
MD5 | a3a540732cddb87e0fa9d782028ac823 |
|
BLAKE2b-256 | 87e6ba32e28ce2a4ff594cc940440495cef7c7d0d3e414646a9ef2babc63b2c7 |