PF research library · 5 min read
Noisy Floquet Ising chain: scientific and packaging specification
r34 documentation · floquet-specification.md · Formatted reading copy
On this page
This specification accompanies ../qiskit_floquet_spin_chain.json. The bundle is a complete private workflow with Python source, controls, output declarations and three analytic checks. It uses the Polynomial sweep's bundle structure; none of the polynomial calculation is retained. It is a deterministic local Qiskit simulation with no quantum hardware or network calls.
Controls and conventions
| Input | Default | Supported values | Meaning |
|---|---|---|---|
n |
6 | integer 2–8 | Number of qubits |
cycles |
8 | integer 0–16 | Complete Floquet cycles |
J |
0.34 | 0–pi, radians | Ising coupling in RZZ(2J) |
h |
0.71 | 0–pi, radians | Transverse rotation in RX(2h) |
p |
0.025 | 0–0.5 | Independent phase-flip probability per qubit per cycle |
boundary |
ring |
open, ring |
Nearest-neighbor edge selection |
initial_state |
neel |
neel, zero |
Product-state preparation |
Computational-basis indexing is little endian: qubit q0 is the least-significant bit. The Neel preparation has q0=0, q1=1, q2=0, and so on; the six-qubit basis index is 42. The zero preparation sets every qubit to 0. Let the corresponding statevector be psi_0 and density matrix be rho_0 = |psi_0><psi_0|.
For an open chain, include each undirected edge (0,1), (1,2), ..., (n-2,n-1) once. For a ring, add (n-1,0) only when n>2. A two-qubit ring therefore has one edge, not two copies of the same coupling.
Exact cycle
Use Pauli operators X and Z with eigenvalues +1 and -1. Define
U_ZZ = product_(i,j in edges) exp(-i J Z_i Z_j)
U_X = product_(q=0,...,n-1) exp(-i h X_q)
U = U_X U_ZZ.
Qiskit's gate angles are RZZ(2J) and RX(2h). Apply all ZZ gates before any X rotation. Evolve the ideal reference as psi_(k+1) = U psi_k.
For the noisy state, first compute rho' = U rho_k U†. Then apply, once on every qubit, the channel E_q(rho) = (1-p) rho + p Z_q rho Z_q. Thus rho_(k+1) = E_(n-1)(...E_1(E_0(rho'))...). Qiskit Kraus operators are sqrt(1-p) I and sqrt(p) Z. These are exact density-matrix channels, without shot sampling or a surrogate calculation.
Record cycle 0 and every complete cycle after noise. Couplings are dimensionless rotation parameters expressed in radians; the cycle index is the time axis.
Required observables
Compute each observable from the state at the same cycle:
| Result metric | Definition |
|---|---|
fidelity |
`Re(<psi_ideal |
purity |
Re Tr(rho²) |
magnetization |
Mean of <Z_q> over all n qubits |
zz_correlation |
Mean of <Z_i Z_j> over the defined undirected edges |
half_entropy_bits |
S(rho_A), A is the low-index floor(n/2) qubits |
mutual_information_bits |
S(rho_A) + S(rho_B) - S(rho) |
Here S(sigma) = -sum(lambda log2(lambda)) is von Neumann entropy in bits; zero eigenvalues contribute zero. B is the complementary set of qubits. The implementation symmetrizes a temporary matrix for entropy eigenvalues and clips negative numerical roundoff; it rejects eigenvalues below -1e-10 and does not alter the evolved density matrix. Fidelity is the defined ideal-state overlap, not a separately defined Loschmidt echo or overlap with the initial state.
Program, outputs and full data
The bundle has schema_version: 1, adapter python, entrypoint main.py:run, and exact requirements Qiskit 2.5.2 and NumPy 2.3.5. These versions must already be provisioned in the selected executor; declaring them does not install packages.
Return the six final metrics, six complete cycle series, a table of every observable, the trajectory and conventions, and these real files under context.output_dir:
observables.csv: cycle plus all six observables, including cycle 0.final_states.json: full final noisy density matrix and ideal statevector, each with separaterealandimagarrays. Preserve all floating-point entries without deliberate rounding.
For n<=7, data.final_density_matrix and data.final_ideal_statevector also contain the arrays inline. For n=8 they contain artifact_path: "final_states.json" and the respective json_pointer, /final_density_matrix or /final_ideal_statevector. data.state_artifact identifies the file, shapes and whether inline arrays are present. All file entries are explicitly declared as kind: "file" outputs. The artifact is the full-data source for every supported n.
At n=8 the complex density matrix alone contains 131,072 real-valued scalar components before container nodes. Its inline representation exceeds r34's 100,000-value-node quota; it may also exceed the independent 2 MiB compact-JSON byte quota. Moving its serialization to an artifact changes neither the physics nor the array precision. The chosen 2–8 qubit and 0–16 cycle ranges are this example's supported configuration, not universal platform capacity limits.
Checks and evidence scope
The three declared workflow checks use absolute tolerance 2e-10 and relative tolerance 0: the six-qubit zero-cycle Neel state; noiseless four-qubit evolution with fidelity and purity one; and the stationary all-zero three-qubit state when h=0, including p=0.5 noise. The zero-cycle check additionally verifies one trajectory row; the noiseless check verifies six rows.
The earlier internal study independently compared 16 cases, 131 trajectory points and full final states with a separately authored NumPy implementation. It covered open/ring boundaries, the two-qubit edge, alternate preparation, zero coupling/rotation, zero cycles, noiseless evolution and maximal dephasing, including n=8/cycles=16. The nearby HISTORICAL_VALIDATION.json is a compact record of that earlier evidence, not a new full comparison. It also records the original output-size failure and serialization repair.
During the guide revision, the dedicated developer helper can freshly execute the default, n=8/cycles=16 and three analytic cases, check output contracts/artifacts and physical invariants, and compare the two nontrivial final metric sets against the retained independent reference. This narrower rerun must be reported separately. Neither study establishes production Docker isolation or a configured live r34 model-provider authoring call. The generating agent also used the source contracts; the PDF alone was not its sole input.