Skip to main content
Pre-release

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

eTiKeT Sync Agent - Core Tools Connector

Connector for synchronizing core_tools datasets with the eTiKeT platform. This connector reads measurements from core_tools PostgreSQL databases and syncs them to the cloud.

Installation

This connector depends on core_tools and pulse_lib, which are hosted on a private TU Delft GitLab repository. You must have these packages cloned locally and install them from their folder locations.

from etiket_sdk.sync import Connectors

# 1. Install dependencies from local folders
Connectors.install_from_local("/path/to/pulse_lib")
Connectors.install_from_local("/path/to/core_tools")

# 2. Install the connector
Connectors.install_from_pypi("etiket-sync-agent-core-tools")

The package is automatically discovered by etiket_sync_agent through the entry-point system. Once installed, you can verify with:

print(Connectors.list())
connector = Connectors.get("etiket_sync_agent_core_tools")
print(connector)

What Gets Synchronized

When a core_tools measurement is synced, the following data is extracted and uploaded:

core_tools Data eTiKeT Field Description
exp_uuid alt_uid Unique identifier for the measurement
name name Name of the dataset
run_timestamp collected When the measurement was taken
keywords keywords Keywords associated with the measurement
sample_name attributes["sample"] Sample name for the measurement
set_up attributes["set-up"] Experimental setup name
xarray dataset HDF5 file The actual measurement data

Additional Metadata

The connector also extracts and synchronizes:

  1. Snapshot data: Instrument settings stored in the measurement snapshot
  2. Pulses data: AWG pulse sequences (if available in snapshot)
  3. Gates data: Gate voltages (if available in snapshot)

Configuration

The core_tools connector requires a CoreToolsConfigData configuration with the following fields:

Field Type Required Description
dbname str Yes Name of the PostgreSQL database
user str Yes Database username
password str Yes Database password
host str No Database host (default: localhost)
port int No Database port (default: 5432)

Example Configuration

from etiket_sync_agent_core_tools import CoreToolsConfigData

config = CoreToolsConfigData(
    dbname="my_experiments",
    user="postgres",
    password="secret",
    host="localhost",
    port=5432
)

Scope Mapping

Core_tools supports the concept of scope (or project in older versions) to organize measurements. When syncing, the connector maps core_tools scopes to eTiKeT scopes.

How Scope Mapping Works

  1. If scope exists in core_tools: The scope name is used as the scopeIdentifier
  2. If scope is None: A generated identifier is used: CT_PROJECT_{project_name}

Assigning Scope Mappings

After datasets are discovered, the user must map the scopeIdentifier to an actual eTiKeT scope. There are two ways to do this:

  1. Auto-assignment: If the scopeIdentifier exactly matches an existing eTiKeT scope name, use the auto-assign feature
  2. Manual mapping: Use the etiket_sdk or the DataQruiser GUI to manually map identifiers to scopes

For more information, see the etiket_sdk documentation or use our GUI application (DataQruiser).


Features

  • Direct integration with core_tools PostgreSQL databases
  • Automatic metadata extraction from snapshots
  • Live sync support for running measurements
  • Pulse sequence extraction from AWG instruments
  • Gate voltage extraction in the metadata of the hdf5 file.

Live Measurement Sync

The core_tools connector supports live synchronization of in-progress measurements. When a measurement is detected as "running", the sync agent:

  1. Creates the dataset entry in eTiKeT
  2. Streams data points as they are written to the database
  3. Uploads pulse metadata (if available)
  4. Marks the dataset as complete when the measurement finishes

Timeout Handling

If no new data is written for 30 minutes, the live sync assumes the measurement has stalled and raises a timeout error.

Requirements

  • Python >= 3.10
  • core_tools (private package from TU Delft GitLab)
  • PostgreSQL database with core_tools schema

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.

File details

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

File metadata

File hashes

Hashes for etiket_sync_agent_core_tools-0.3.0b3-py3-none-any.whl
Algorithm Hash digest
SHA256 6f216176187b1a3c0424aaab172d7bb3cd8b8cd4d3f9bb8d853eec517d35bb0e
MD5 3e91b0c223f01c1bfcfcf31686cd03d5
BLAKE2b-256 762b0439454e9a9b0e20e00695e1dc4d3ec5a648db6f9cace1aaa412b086f5e7

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