Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

eTiKeT Sync Agent - Quantify Connector

Connector for synchronizing Quantify datasets with the eTiKeT platform. This connector scans Quantify data directories and syncs HDF5 datasets to the cloud.

Installation

pip install etiket_sync_agent_quantify

The package is automatically discovered by etiket_sync_agent through the entry-point system.

What Gets Synchronized

When a Quantify dataset is synced, the following data is extracted and uploaded:

Quantify Data eTiKeT Field Description
TUID (first 26 chars) alt_uid Unique identifier extracted from the folder name
Folder name (after TUID) name Name of the measurement
TUID timestamp collected Measurement timestamp parsed from TUID format
Variable long_name/name attrs tags Extracted from HDF5 dataset attributes
Config set_up attributes.set-up Experimental setup from configuration
HDF5 files Data files xarray datasets converted and uploaded
JSON/text files Auxiliary files Additional files in the dataset folder

Data Processing

  • Grid conversion: Datasets are automatically converted to gridded format for efficient visualization
  • Standard deviation detection: Variables ending with _u are marked as uncertainties for their base variable
  • TUID extraction: The unique identifier follows the format YYYYMMDD-HHMMSS-fff-xxxxxx

Configuration

The Quantify connector requires a QuantifyConfigData configuration with the following fields:

Field Type Required Description
quantify_directory Path or str Yes Path to the Quantify data directory
set_up str Yes Name of the experimental setup (added as set-up attribute)
is_server_folder bool No Whether this is a server folder (default: False), e.g. on network drive of the university.

Example Configuration

Example using the etiket-sdk package:

from etiket_sdk.sync import SyncSources

SyncSources.create(
    name="my_quantify_source",
    connector_identifier="etiket_sync_agent_quantify",
    config_data={
        "quantify_directory": "~/quantify-data",
        "set_up": "dilution_fridge_1",
        "is_server_folder": False
    },
    default_scope="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
)

Live Sync

The Quantify connector supports real-time synchronization of running measurements. We currenly do not support non-gridded datasets.

How Live Detection Works

A dataset is considered "live" (still being written to) if:

  1. Recent modification: The HDF5 file was modified within the last 2 minutes
  2. Contains NaN values: Quantify pre-allocates arrays with NaN values that get filled during measurement
  3. No newer datasets: No other dataset directories have been created (indicating the measurement is still active)

How Live Sync Works

The XArrayReplicator class performs real-time replication:

  1. Creates a qdrive dataset with SWMR (Single-Writer Multiple-Reader) HDF5 mode
  2. Monitors file modifications by checking the source file's modification time
  3. Tracks data using NaN cursor: Follows the position of NaN values to detect new data
  4. Polls for updates every 0.5 seconds.
  5. Completes when: All NaN values are replaced OR the 2-minute timeout is reached OR a newer dataset directory is created

Timeout Behavior

Condition Timeout Action
No file modification 120 seconds (2 min) Dataset marked as complete
Newer directory created Immediate Live sync stops, dataset marked complete
All NaN values filled Immediate Dataset marked complete

File Snapshot Safety

To avoid conflicts with concurrent file writes, the connector creates temporary snapshots of HDF5 files before reading:

with with_dataset_snapshot(file_path) as safe_file:
    dataset = xr.open_dataset(safe_file, engine='h5netcdf')
    # Process dataset safely

This is necessary because Quantify continuously overwrites the HDF5 file during measurement. Creating a temporary copy avoids file corruption or read errors when the source file is being written to.


Features

  • Direct Quantify integration: Reads HDF5 datasets written by Quantify's data management system
  • Live sync support: Real-time monitoring of running measurements via SWMR HDF5
  • Automatic TUID parsing: Extracts timestamps and identifiers from Quantify's TUID format
  • Grid conversion: Converts irregular datasets to gridded format for efficient visualization
  • Auxiliary file upload: Syncs JSON, text, and other files alongside the main data

Requirements

  • Python >= 3.10
  • xarray
  • h5py
  • h5netcdf

License

Copyright © 2025 QHarbor. All Rights Reserved. See LICENCE for details.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

etiket_sync_agent_quantify-0.3.0b3-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file etiket_sync_agent_quantify-0.3.0b3-py3-none-any.whl.

File metadata

File hashes

Hashes for etiket_sync_agent_quantify-0.3.0b3-py3-none-any.whl
Algorithm Hash digest
SHA256 d485cc693aa05f6aee5df0de70f43fbaff0902182870e0e3bb6c0d188b7d0d60
MD5 1cf070d3ede2b5bc5d1753bed1a2d575
BLAKE2b-256 97bb1bf94fc4c8e421b48284a5c27d1e58d597a723f55c680a89400534e935fe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page