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 scope_identifier
  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 scope_identifier to an actual eTiKeT scope. There are two ways to do this:

  1. Auto-assignment: If the scope_identifier 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.

Release files for etiket-sync-agent-core-tools 0.3.0b5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for etiket-sync-agent-core-tools 0.3.0b5
File Interpreter ABI Platform
etiket_sync_agent_core_tools-0.3.0b5-py3-none-any.whl Python 3 none any Details

Release files / etiket_sync_agent_core_tools-0.3.0b5-py3-none-any.whl

Download URL etiket_sync_agent_core_tools-0.3.0b5-py3-none-any.whl
Size 15.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
699fc71b257d1560785b4750fcfd5611c6a9bf172257205e544faea8c45d6508
BLAKE2b-256 checksum
How to use checksums
04b221e229676056070f8e741e11191bd0a2b7d2cabaaa017806942b20337a6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page