Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Stage F: wire --cds (CLI, build_cds_backend, BACKENDS registry, mandatory channels.drive)

Aperta
#20 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
42/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
python
Ambito
backend, cli

Direzione di ricerca

Leggi prima la specifica di progettazione CDS e il piano collegati, quindi esamina cli.py, config.py, loop.py e configs/rtsfreerun_hsts.yml. Traccia i punti di ingresso esistenti per la selezione del backend e la convalida del canale prima di implementare il cablaggio di --cds, il registry, la configurazione, la convalida obbligatoria dell’unità, l’esempio indipendente dal sito e l’avviso sulla banda. Il lavoro è completato quando il backend CDS è selezionabile senza il precedente rifiuto e tutti i requisiti di configurazione e sicurezza indicati sono coperti.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

enhancement

Stage F (spec §4, §6). The backend exists but nothing can reach it. Note --cds currently
appears exactly once in the whole repo — in the roadmap note, as future work.

cli.py
  • Add --cds.
  • Remove the hard refusal at src/system_ident/cli.py:62 ("the CDS-hardware backend is not
    available yet").
  • (_confirm and --yes are handled in the approval-gate issue.)
config.py
  • build_cds_backend(...) beside build_twin_backend (src/system_ident/config.py:144) and
    build_rtsfreerun_backend (src/system_ident/config.py:162).
  • A BACKENDS registry mirroring ESTIMATORS / DESIGNERS (src/system_ident/config.py:31), so
    the backend choice stops being a pair of hard-coded booleans. Note MIMOTwinBackend, ReducedPlantBackend
    and DARMBackend currently have no config path at all — they are constructed directly in
    experiments/ and tests. A registry is the place to fix that later.
  • A cds: section — transport: awg_nds | twin, start_buffer, the site IFO key — validated in
    REQUIRED (src/system_ident/config.py:37).
  • channels.drive mandatory for this backend — a ConfigError, not a warning.
    src/system_ident/loop.py:90 silently falls back to exc[d] and _warn_open_drive_monitor
    (src/system_ident/loop.py:274) only warns. On hardware that fallback, combined with a synthesised
    X, is the measured 200%-error configuration (see the read() invariants issue).
New config

src/system_ident/configs/cds_twin_transport.yml, modelled on
src/system_ident/configs/rtsfreerun_hsts.yml — which already has the right shape
(channels.excitation/drive/readback, measurement.t_ramp, safety.actuator_sat). Deliberately
site-agnostic: no 40m channel names, no C1. Site specifics are the deferred site-profile layer.

Band guard

warnings.warn when freq_max > 0.8 * (fs/2), explaining the cost is SNR, not bias. The sibling
project needed a hard --f-max because scipy.signal.decimate uses cheby1(8, 0.05, 0.8/q), measured
−9.04 dB at 0.9·Nyquist and −22.37 dB at Nyquist; resample_poly's Kaiser FIR is +0.02 dB at 0.8 and
−0.67 dB at 0.9, and being LTI and applied to both X and Y it cancels exactly in Ybar/Xbar. Record
that cancellation argument in the docstring — it is a second, independent reason X must never be a
synthesised array.

pyproject.toml:34 already reserves the cds = [] extra; no change needed there.


Campaign: CDS hardware backend · branch feat/cds-hardware-backend
· spec · plan · handoff
Code is deferred until the plan and issues have been reviewed.

Lingua principale
Python
Stelle
0
Fork
1
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di CaltechExperimentalGravity/system_ident

Tutte le issue di CaltechExperimentalGravity/system_ident

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.