Перейти к содержанию

IQ dataset manifest guide

Real IQ recordings are valuable, but they can easily make a repository large, ambiguous and non-reproducible. This guide defines how the course describes IQ captures without forcing large binary files into Git history.

  • Keep small synthetic demo files in the repository only when they are tiny and useful for tests.
  • Store real captures externally or through Git LFS when needed.
  • Always provide a manifest file with metadata, checksums and analysis intent.
  • Do not publish captures with unclear spectrum origin, unknown frequency, or missing sample format.
  • Prefer reproducible synthetic examples for CI and public documentation.

Manifest kinds

The checker distinguishes three contracts. Use manifest_kind explicitly for new files; older captures are classified from storage and the filename for compatibility.

Kind Purpose Required evidence
dataset Fixed, reproducible input intended for replay or sharing version, status, file reference, SHA256 when fixed, source, analysis targets, quality checks and license
capture-session Local bench result whose raw file is not yet published local/repository file hint, capture settings, analysis command, signal description and notes
template Intentionally incomplete form for a future capture all canonical top-level fields may contain null or placeholder values while status: template

New manifests start with:

manifest_kind: dataset  # dataset, capture-session, or template
schema_version: 1

Minimum manifest fields

Field Meaning
dataset_id Stable identifier used in docs and scripts.
version Manifest/data revision.
status git-lfs, generated-local, manifest-only, local-only, or template.
title Human-readable dataset title.
description What the recording contains and why it exists.
file_name Expected local file name after download.
storage repo, git-lfs, external-url, or private.
url External URL when the file is not stored in the repository.
sha256 File checksum for reproducibility.
format ci16, cu8, cf32, WAV IQ, or another explicit format.
endianness Byte order for integer formats.
sample_rate_hz IQ sample rate.
center_frequency_hz RF center frequency or baseband reference.
bandwidth_hz Approximate receiver bandwidth.
duration_s Recording duration.
source SDR board, receiver, generator, antenna, synthetic model, or unknown.
hardware Receiver/transmitter and important settings.
gain RX/TX gain values when available.
license Dataset license or access limitation.
analysis_targets Expected plots, metrics or labs using the dataset.
quality_checks Machine-readable validation state and measured quality gates.

Example manifest

manifest_kind: dataset
schema_version: 1
dataset_id: lab09_ci16_tone_demo_v1
version: 1.0
status: external-url
title: CI16 tone capture demo
description: Short educational IQ recording containing a single narrowband tone for spectrum and metadata validation.
storage: external-url
url: https://example.invalid/datasets/lab09_ci16_tone_demo_v1.ci16
file_name: lab09_ci16_tone_demo_v1.ci16
sha256: replace-with-real-sha256
format: ci16
endianness: little
sample_rate_hz: 2400000
center_frequency_hz: 100000000
bandwidth_hz: 1200000
duration_s: 2.0
source: rtl-sdr-observation
hardware:
  receiver: RTL-SDR V3 Pro
  transmitter: Zynq-7020 + AD9363
  rf_path: conducted path with attenuation or controlled low-power OTA
  attenuation_db: 40
  rx_gain_db: 20
license: course-demo-only
analysis_targets:
  - spectrum estimate
  - peak frequency detection
  - noise floor estimate
  - metadata parser test
quality_checks:
  checksum_verified: true
  clipping_checked: true
notes:
  - Use only after verifying the checksum.
  - Do not assume this recording is calibrated for absolute power measurements.

Directory convention

Recommended layout for future datasets:

datasets/
  README.md
  manifests/
    lab09_ci16_tone_demo_v1.yml
    lab11_qpsk_loopback_v1.yml
  small/
    synthetic_ci16_smoke_test.ci16

Large recordings should not be committed directly to Git. Use external storage or Git LFS, then reference them from manifest files.

Analysis workflow

manifest.yml -> download or locate file -> verify sha256 -> parse format -> run analysis -> save plots -> save report

Every analysis script should print the manifest ID, file format, sample rate and checksum result before computing metrics.

Metadata quality checklist

A dataset is acceptable for course use when:

  • the sample format is unambiguous;
  • the sample rate and center frequency are known;
  • a checksum is available;
  • the RF path and gain settings are described;
  • the license or access policy is clear;
  • at least one script can read it;
  • expected plots or metrics are defined.

Common mistakes

Mistake Consequence
Missing sample rate Frequency axis and spectra become meaningless.
Unknown IQ format Data may be parsed with wrong scaling or byte order.
No checksum Reproducibility is not guaranteed.
No gain settings Measurements cannot be compared across captures.
Large binary committed to Git Repository clone becomes slow and hard to maintain.
No license / access note Dataset cannot be safely reused in teaching or publications.