Skip to content
tatopenn-cell edited this page Jul 25, 2026 · 3 revisions

🔬 Dense-Evolution-Ising-Tests — Wiki

Suite di cross-validazione fisica per Dense-Evolution: TFIM, gradienti VQE, mitigazione degli errori (ZNE), bandstructure del silicio, VQE molecolare. Ogni script produce un dataset + un grafico, e (dove sensato) ha un test dedicato in tests/ eseguito dalla CI GitHub Actions su ogni push.


📖 Capitoli

  1. Transizione di Fase Ising (TFIM)scan_ising.py, plot_ising.py
  2. Mitigazione degli Errori (ZNE)zne_mitigation.py
  3. Gradiente VQE: Differenze Finite vs PSR Esattavqe_gradient.py, vqe_jax_grad.py
  4. Mappatura dei Difetti Quantisticiquantum_defect_scanner.py
  5. Bandstructure Silicio e Termodinamica Reticolarenext_gen_silicon.py, manufacturing_thermodynamics.py
  6. VQE Molecolare e Ottimizzazione Adamvqe_silicon_molecular.py, vqe_silicon_molecular_optimized.py
  7. Suite di Test e CI — struttura dei test, test_integration_smoke.py

⚠️ Un avvertimento che vale per tutto il repo (ora corretto a monte, dense-evolution ≥8.1.28)

DenseSVSimulator.run_parametric_batch_jit() assegna una colonna di parameter_batch a ogni gate di rotazione, in ordine di apparizione nel circuito — anche se gli passi un float letterale invece di un placeholder stringa. Il letterale veniva ignorato in silenzio, e se il numero di colonne non combaciava col numero di gate parametrici, JAX non sollevava errore: clippava l'indice fuori range all'ultima colonna valida, corrompendo silenziosamente il risultato.

Questo ha causato due bug reali in questo repo (quantum_defect_scanner.py e vqe_jax_grad.py, vedi capitoli 4 e 3) — entrambi corretti qui, e il bug stesso è stato poi segnalato a monte come Dense-Evolution#6.

Da dense-evolution 8.1.28: run_parametric_batch_jit valida parameter_batch.shape[1] contro il numero reale di gate parametrici e solleva ValueError su un mismatch, invece di clippare in silenzio. Chi è su una versione precedente resta esposto al comportamento vecchio — questa pagina resta comunque il riferimento corretto sul perché del bug, utile a chiunque debba ancora capirlo o lavori su una versione più vecchia.


🕒 Aggiornamenti upstream rilevanti per questo repo

dense-evolution versioni successive all'8.1.21 usato per l'audit di questo repo hanno corretto (o aggiunto) cose direttamente rilevanti a quanto documentato qui:

  • 8.1.28run_parametric_batch_jit solleva ValueError su mismatch di colonne invece di clippare in silenzio (#6, vedi avvertimento sopra). run_circuit/run_circuit_jit_beast_mode/run_parametric_batch_jit sollevano ValueError su un nome di gate non riconosciuto invece di scartarlo in silenzio (#4). NoiseModel.apply_to_sv non ignora più rng su statevector JAX (#7).
  • 8.1.27 — aggiunto dense_evolution.mitigation (richardson_extrapolate, zero_noise_extrapolation): la stessa Zero-Noise Extrapolation di Richardson usata a mano nel capitolo 2 e nella variante "predictive healing" di tests/test_zne_predictive_healing.py è ora anche una funzione reale, riusabile e standard-named del pacchetto, non solo logica hand-written locale a questo repo.
  • 8.1.26 — chiuse lacune di copertura test su Chunk (dispatch multi-chunk) e sui for-loop QASM a bound non risolvibile; nessun bug trovato, solo test aggiuntivi.
  • 8.1.24-8.1.25 — fix su healing.py (crash su statevector complessi in calculate_phi_ab) e su MPSSimulator (violazione silenziosa del jsd_budget) non toccano direttamente gli script di questo repo, ma erano la fonte del dubbio "ho perso pezzi di healing?" chiarito durante questa sessione: nessuna funzionalità persa, solo bug fix.

Changelog completo, versione per versione: README di Dense-Evolution.


🔗 Link utili