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:
- Snapshot data: Instrument settings stored in the measurement snapshot
- Pulses data: AWG pulse sequences (if available in snapshot)
- 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
- If scope exists in core_tools: The scope name is used as the
scope_identifier - 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:
- Auto-assignment: If the
scope_identifierexactly matches an existing eTiKeT scope name, use the auto-assign feature - 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:
- Creates the dataset entry in eTiKeT
- Streams data points as they are written to the database
- Uploads pulse metadata (if available)
- 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)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|