This release is a pre-release and may not be stable for production use.
qdrive
Dataset management and measurement library for the qHarbor data platform.
qdrive is the Python interface for creating, managing, and syncing scientific datasets with qHarbor.
Features
- 📦 Create & manage datasets — Store measurements with rich metadata (tags, attributes, descriptions)
- 📁 Multi-file support with versioning — Attach xarray, NumPy, JSON, HDF5 or any file, with automatic version tracking
- 🔍 Powerful search — Filter datasets by attributes, date range, tags, or text
- ☁️ Cloud sync — Automatic synchronization via the sync agent
- 📊 Measurement tools — Built-in
do0D,do1D,do2Dsweep functions using native qHarbor format, compatible with QCoDeS parameters
Installation
pip install qdrive
To install the background services (syncs your data to qHarbor automatically):
etiket-services install
Other useful commands (though the service is managed automatically in the background):
etiket-services status # Check service status
etiket-services start # Start services
etiket-services stop # Stop services
etiket-services restart # Restart services
etiket-services update # Update packages
etiket-services update --no-connectors # Update core packages only
etiket-services uninstall # Remove services
For programmatic control of the sync agent (managing sync sources, viewing sync status, debugging), see the etiket-sdk package. You can also manage the services through the DataQruiser desktop application.
Quick Start
Authentication
import qdrive.authenticate as qauth
# See available institutions and login methods
qauth.print_login_methods()
# Log in with SSO (opens browser)
qauth.log_in_with_sso("MyInstitution")
# Check if logged in
qauth.is_logged_in() # Returns True/False
# Log out
qauth.logout()
Scopes
from qdrive.scopes import get_scopes, set_default_scope
# List available scopes
get_scopes()
# Set default scope (by name or UUID)
set_default_scope("MyScope")
Create a dataset
from qdrive import dataset
ds = dataset.create(
'Qubit T2* measurement',
tags=['calibration'],
attributes={'sample': 'Q7-R3', 'fridge': 'BlueFors-1'}
)
Add files to a dataset
import numpy as np
import xarray as xr
# Add various file types
ds['config.json'] = {'param1': 42, 'param2': 'value'}
ds['raw_data.npz'] = np.random.rand(100, 100)
ds['measurement.hdf5'] = xr.Dataset({'signal': (['time'], np.sin(np.linspace(0, 10, 100)))})
ds['script.py'] = __file__ # Attach the current script
Retrieve and access data
from qdrive import dataset
ds = dataset('59c40af3-cef3-49aa-8747-64707a9b080a') # Load by UUID
# Access files in multiple formats
xr_data = ds['measurement.hdf5'].xarray
json_data = ds['config.json'].json
Search datasets
from qdrive.dataset.search import search_datasets
results = search_datasets(
search_query='T2*',
attributes={'sample': 'Q7-R3'},
ranking=1
)
for ds in results:
print(ds.name, ds.uuid)
Documentation
- 📖 Full Documentation
- 🖥️ DataQruiser App — Browse and visualize your data
- 💬 Support
License
Proprietary — © 2026 QHarbor B.V. All Rights Reserved.
Release files for qdrive 0.3.0b4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| qdrive-0.3.0b4-py3-none-any.whl | Python 3 | none | any | Details |
Release files / qdrive-0.3.0b4-py3-none-any.whl
| Download URL | qdrive-0.3.0b4-py3-none-any.whl |
|---|---|
| Size | 59.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a8adfa6a02027fd7c3b4a9eb610cfd9f2a9c3e1e5ccec3ce47fcf1cb8cd47796
|
|
BLAKE2b-256 checksum How to use checksums |
31bdd824bbad07baffef4262d498c8223511b054d0ecfa9409659c80ebc7fd00
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|