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.
Metadata
Release files for etiket-sync-agent-core-tools 0.3.2
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 | Actions Reset |
|---|---|---|---|---|
| etiket_sync_agent_core_tools-0.3.2-py3-none-any.whl | Python 3 | none | any | Details for etiket_sync_agent_core_tools-0.3.2-py3-none-any.whl |
Release files / etiket_sync_agent_core_tools-0.3.2-py3-none-any.whl
| Download URL | etiket_sync_agent_core_tools-0.3.2-py3-none-any.whl |
|---|---|
| Size | 15.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e5f634f7d44995300ef71239b4becb2d9c0e6addc004738149d6dd58e8f69be1
|
|
BLAKE2b-256 checksum How to use checksums |
08c48fb635c098e6f6c66084c8fd9b4888b6ab847f046244d9893aca9302aea1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Security for etiket-sync-agent-core-tools 0.3.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.