From 9c532f1272bee6714b98baeb22ee74b100157532 Mon Sep 17 00:00:00 2001 From: mahbub570 Date: Sat, 6 Jun 2026 05:00:03 +0600 Subject: [PATCH 1/3] add Quantum Decoherence brush (T1/T2 open-system channels) --- effect/decoherence/__init__.py | 0 effect/decoherence/decoherence.py | 287 ++++++++++++++++++ .../decoherence/decoherence_requirements.json | 58 ++++ 3 files changed, 345 insertions(+) create mode 100644 effect/decoherence/__init__.py create mode 100644 effect/decoherence/decoherence.py create mode 100644 effect/decoherence/decoherence_requirements.json diff --git a/effect/decoherence/__init__.py b/effect/decoherence/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/effect/decoherence/decoherence.py b/effect/decoherence/decoherence.py new file mode 100644 index 0000000..4686bf2 --- /dev/null +++ b/effect/decoherence/decoherence.py @@ -0,0 +1,287 @@ +""" +Quantum Decoherence Brush Effect Module. + +Models open-system quantum dynamics on stroke colors using amplitude damping +(T1 energy relaxation) and phase damping (T2 dephasing). Each path segment +is encoded as a qubit state; repeated damping steps simulate how quantum +information dissolves into an environment on NISQ hardware. +""" + +import numpy as np +from qiskit import QuantumCircuit +from qiskit.quantum_info import Pauli, SparsePauliOp +import importlib.util +from scipy.stats import circmean + +spec = importlib.util.spec_from_file_location("utils", "effect/utils.py") +utils = importlib.util.module_from_spec(spec) +spec.loader.exec_module(utils) + + +def scale_to_range(x, in_min=1, in_max=100, out_min=2, out_max=8): + """ + Linearly scale x from [in_min, in_max] to [out_min, out_max]. + """ + if not (in_min <= x <= in_max): + raise ValueError(f"Input {x} is out of range [{in_min}, {in_max}]") + return int(round(out_min + (x - in_min) * (out_max - out_min) / (in_max - in_min))) + + +def build_decoherence_circuit(initial_angles, env_angles, amp_rate, phase_rate, steps): + """ + Build a quantum circuit applying Trotterized amplitude and phase damping. + + Amplitude damping follows the ancilla-coupled channel used in damping.py, + extended with controlled rotations toward the environment Bloch angles. + Phase damping applies incremental RZ dephasing each Trotter step. + """ + n_qubits = len(initial_angles) + ancilla = n_qubits + env_phi, env_theta = env_angles + + qc = QuantumCircuit(n_qubits + 1) + + qc.ry(env_theta, ancilla) + qc.rz(env_phi, ancilla) + + for i, (phi, theta) in enumerate(initial_angles): + qc.ry(theta, i) + qc.rz(phi, i) + + per_step_amp = amp_rate / max(steps, 1) + per_step_phase = phase_rate / max(steps, 1) + amp_rotation = 2 * np.arccos(np.clip(1 - per_step_amp, 0.0, 1.0)) + + for _ in range(steps): + for i in range(n_qubits): + if amp_rate > 0: + qc.cry(amp_rotation, target_qubit=ancilla, control_qubit=i) + qc.cx(target_qubit=i, control_qubit=ancilla) + qc.cry(per_step_amp * env_theta, target_qubit=i, control_qubit=ancilla) + qc.crz(per_step_amp * env_phi, target_qubit=i, control_qubit=ancilla) + + if phase_rate > 0: + qc.rz(per_step_phase * np.pi, i) + + return qc + + +def angles_from_observables(obs, num_qubits): + """ + Convert Pauli expectation values into Bloch angles (phi, theta). + """ + x_expectations = obs[:num_qubits] + y_expectations = obs[num_qubits:2 * num_qubits] + z_expectations = obs[2 * num_qubits:] + + phi_expectations = [ + np.arctan2(y, x) % (2 * np.pi) + for x, y in zip(x_expectations, y_expectations) + ] + theta_expectations = [ + np.arctan2(np.sqrt(x ** 2 + y ** 2), z) + for x, y, z in zip(x_expectations, y_expectations, z_expectations) + ] + + return list(zip(phi_expectations, theta_expectations)) + + +def run_decoherence_circuit(initial_angles, env_angles, amp_rate, phase_rate, steps, params=None): + """ + Run decoherence simulation on quantum hardware simulator. + + Args: + initial_angles: List of (phi, theta) Bloch angles per segment + env_angles: (phi, theta) of the environment bath + amp_rate: Amplitude damping strength in [0, 1] + phase_rate: Phase damping strength in [0, 1] + steps: Number of Trotter damping iterations + + Returns: + List of (phi, theta) after decoherence evolution + """ + try: + num_qubits = len(initial_angles) + print(f"Decoherence: {num_qubits} qubits, amp={amp_rate}, phase={phase_rate}, steps={steps}") + print(f"initial angles: {initial_angles}") + print(f"environment angles: {env_angles}") + + qc = build_decoherence_circuit(initial_angles, env_angles, amp_rate, phase_rate, steps) + + ops = [ + SparsePauliOp(Pauli('I' * (num_qubits - i) + p + 'I' * i)) + for p in ['X', 'Y', 'Z'] + for i in range(num_qubits) + ] + + p = params or {} + obs = utils.run_estimator( + qc, ops, + backend=p.get("backend"), + hw=p.get("hw"), + cost_estimate_out=p.get("cost_accumulator"), + ) + + final_angles = angles_from_observables(obs, num_qubits) + print(f"final angles: {final_angles}") + return final_angles + + except Exception as e: + print(f"Quantum simulation failed: {e}") + raise + + +def classical_decoherence(initial_angles, env_angles, amp_rate, phase_rate, steps): + """ + Classical fallback when qubit count exceeds simulator budget. + + Approximates amplitude damping as HLS interpolation toward the environment + and phase damping as progressive hue diffusion. + """ + env_phi, env_theta = env_angles + env_h = env_phi / (2 * np.pi) + env_l = env_theta / np.pi + + final_angles = [] + per_step_amp = amp_rate / max(steps, 1) + per_step_phase = phase_rate / max(steps, 1) + + for phi, theta in initial_angles: + h = phi / (2 * np.pi) + lum = theta / np.pi + + for _ in range(steps): + h = (1 - per_step_phase) * h + per_step_phase * (h + 0.5 * (env_h - h)) + h = h % 1.0 + lum = (1 - per_step_amp) * lum + per_step_amp * env_l + + final_angles.append((h * 2 * np.pi, lum * np.pi)) + + return final_angles + + +def split_path(path, n_segments): + """ + Split a stroke path into n_segments contiguous subpaths. + """ + path_length = len(path) + if path_length == 0: + return [] + + n_segments = max(1, min(n_segments, path_length)) + split_size = max(1, path_length // n_segments) + split_paths = [ + path[i * split_size:(i + 1) * split_size] + for i in range(n_segments - 1) + ] + split_paths.append(path[(n_segments - 1) * split_size:]) + return split_paths + + +# The only thing that you need to change is this function +def run(params): + """ + Executes the decoherence effect pipeline based on the provided parameters. + + Args: + parameters (dict): A dictionary containing all the relevant data. + + Returns: + Image: the new numpy array of RGBA values or None if the effect failed + """ + + image = params["stroke_input"]["image_rgba"].copy() + assert image.shape[-1] == 4, "Image must be RGBA format" + + height = image.shape[0] + width = image.shape[1] + + path = params["stroke_input"]["path"] + if len(path) == 0: + return image + + radius = params["user_input"]["Radius"] + assert radius > 0, "Radius must be greater than 0" + + strength = params["user_input"]["Strength"] + assert 0.0 <= strength <= 1.0, "Strength must be between 0 and 1" + + amp_rate = params["user_input"]["Amplitude Rate"] + assert 0.0 <= amp_rate <= 1.0, "Amplitude Rate must be between 0 and 1" + + phase_rate = params["user_input"]["Phase Rate"] + assert 0.0 <= phase_rate <= 1.0, "Phase Rate must be between 0 and 1" + + steps = params["user_input"]["Steps"] + assert steps >= 1, "Steps must be at least 1" + + env_color = params["user_input"]["Environment Color"] + env_phi, env_theta, _ = utils.color_to_spherical(env_color) + env_angles = (env_phi, env_theta) + print(f"Environment color: {env_color}, angles: {env_angles}") + + n_segments = min(scale_to_range(radius), len(path)) + n_segments = max(1, n_segments) + split_paths = split_path(path, n_segments) + + initial_angles = [] + pixels = [] + for lines in split_paths: + region, distance = utils.points_within_radius( + lines, radius, border=(height, width), return_distance=True + ) + + if len(region) == 0: + continue + + selection = image[region[:, 0], region[:, 1]] + selection = selection.astype(np.float32) / 255.0 + selection_hls = utils.rgb_to_hls(selection) + + phi = circmean(2 * np.pi * selection_hls[..., 0]) + theta = np.pi * np.mean(selection_hls[..., 1], axis=0) + + initial_angles.append((phi, theta)) + pixels.append((region, distance, selection_hls)) + + if len(initial_angles) == 0: + return image + + use_quantum = len(initial_angles) <= 8 + + if use_quantum: + final_angles = run_decoherence_circuit( + initial_angles, env_angles, amp_rate, phase_rate, steps, params=params + ) + else: + print(f"Using classical fallback for {len(initial_angles)} segments") + final_angles = classical_decoherence( + initial_angles, env_angles, amp_rate, phase_rate, steps + ) + + for i, (region, distance, selection_hls) in enumerate(pixels): + new_phi, new_theta = final_angles[i] + old_phi, old_theta = initial_angles[i] + + offset_h = (new_phi - old_phi) / (2 * np.pi) + offset_l = (new_theta - old_theta) / np.pi + + shifted_hls = selection_hls.copy() + shifted_hls[..., 0] = (shifted_hls[..., 0] + offset_h) % 1 + shifted_hls[..., 1] += offset_l + shifted_hls = np.clip(shifted_hls, 0, 1) + + blended_hls = (1 - strength) * selection_hls + strength * shifted_hls + blended_hls = np.clip(blended_hls, 0, 1) + + blended_rgb = utils.hls_to_rgb(blended_hls) + + new_patch = image[region[:, 0], region[:, 1]].astype(np.float32) / 255 + new_patch[..., :3] = blended_rgb[..., :3] + + image[region[:, 0], region[:, 1]] = utils.apply_patch_to_image( + image[region[:, 0], region[:, 1]], new_patch, blur=True, distance=distance + ) + + print("Decoherence effect applied successfully") + return image diff --git a/effect/decoherence/decoherence_requirements.json b/effect/decoherence/decoherence_requirements.json new file mode 100644 index 0000000..2513c2a --- /dev/null +++ b/effect/decoherence/decoherence_requirements.json @@ -0,0 +1,58 @@ +{ + "name": "Quantum Decoherence", + "id": "decoherence", + "author": "QuantumBrush Contributor", + "version": "1.0.0", + "long_description": "This brush models open-system quantum dynamics on your stroke colors. Each segment along the path is encoded as a qubit on the Bloch sphere. Amplitude damping (T1) relaxes colors toward an environment bath, while phase damping (T2) smears hue coherence without transferring energy.\n\nRepeated damping steps along the stroke simulate how quantum information dissolves on NISQ hardware — producing ghost trails, faded memory, and dephased color halos.\n\n - Radius controls brush size and how many path segments become qubits\n - Environment Color is the thermal bath the stroke relaxes toward\n - Amplitude Rate sets T1-style energy loss\n - Phase Rate sets T2-style coherence loss\n - Steps sets how many damping iterations are applied\n - Strength blends quantum-evolved colors with the original canvas", + "description": "Fade stroke colors through amplitude and phase damping channels, modeling NISQ decoherence as artistic memory loss.", + "dependencies": { + "numpy": ">=2.1.0", + "colorsys": "", + "qiskit": ">=1.0.0", + "qiskit_aer": ">=0.17.0", + "scipy": ">=1.10.0" + }, + "user_input": { + "Radius": { + "type": "int", + "min": 1, + "max": 100, + "default": 15 + }, + "Strength": { + "type": "float", + "min": 0.0, + "max": 1.0, + "default": 0.6 + }, + "Environment Color": { + "type": "color", + "default": "#808080" + }, + "Amplitude Rate": { + "type": "float", + "min": 0.0, + "max": 1.0, + "default": 0.5 + }, + "Phase Rate": { + "type": "float", + "min": 0.0, + "max": 1.0, + "default": 0.3 + }, + "Steps": { + "type": "int", + "min": 1, + "max": 20, + "default": 5 + } + }, + "stroke_input": { + "image_rgba": "array", + "path": "array" + }, + "flags": { + "smooth_path": true + } +} From b362ce719632f1795c92e2bc5f6da5dd4a77ccb9 Mon Sep 17 00:00:00 2001 From: mahbub570 Date: Wed, 17 Jun 2026 23:02:52 +0600 Subject: [PATCH 2/3] Refactor Quantum Decoherence brush implementation for improved performance and stability --- effect/decoherence/README.md | 156 ++++++++++++++++++ .../decoherence/screenshots/after_heavy.png | Bin 0 -> 14877 bytes .../decoherence/screenshots/after_light.png | Bin 0 -> 11143 bytes effect/decoherence/screenshots/before.png | Bin 0 -> 3569 bytes effect/decoherence/screenshots/comparison.png | Bin 0 -> 38841 bytes 5 files changed, 156 insertions(+) create mode 100644 effect/decoherence/README.md create mode 100644 effect/decoherence/screenshots/after_heavy.png create mode 100644 effect/decoherence/screenshots/after_light.png create mode 100644 effect/decoherence/screenshots/before.png create mode 100644 effect/decoherence/screenshots/comparison.png diff --git a/effect/decoherence/README.md b/effect/decoherence/README.md new file mode 100644 index 0000000..6227474 --- /dev/null +++ b/effect/decoherence/README.md @@ -0,0 +1,156 @@ +# Quantum Decoherence Brush + +> *Every real quantum computer is slowly losing its mind. This brush makes that visible.* + +When you paint with this brush, your stroke colors dissolve — not randomly, but through the exact two noise channels that limit every real NISQ device today. **Amplitude damping (T1)** pulls colors toward an environment bath. **Phase damping (T2)** scrambles their hue independently, without touching the brightness. Together, they turn a single brushstroke into a visual record of quantum memory fading away. + +--- + +## How it works + +When you drag a stroke, the brush divides the path into segments. Each segment samples the colors underneath it and computes a single representative color. That color gets encoded as a **qubit state on the Bloch sphere** — hue becomes the azimuthal angle φ, lightness becomes the polar angle θ: + +``` +φ = 2π · circmean(hue) → qc.ry(θ, i) then qc.rz(φ, i) +θ = π · mean(lightness) +``` + +Your chosen **Environment Color** is encoded the same way, onto an ancilla qubit that represents the thermal bath. + +Then the decoherence circuit runs. It couples each color-qubit to the environment ancilla over several Trotter steps, applying T1 and T2 noise incrementally. After the circuit finishes, the brush measures ⟨X⟩, ⟨Y⟩, ⟨Z⟩ for each qubit, reconstructs the new Bloch angles, and uses the angular shifts to update the hue and lightness of every pixel in that segment. The result gets blended with the original canvas according to **Strength**. + +--- + +## The physics behind the circuit + +### T1 — Amplitude damping + +T1 is the time it takes for an excited qubit to release its energy to the environment and relax toward equilibrium. On the Bloch sphere, this shows up as the state vector contracting toward a fixed point — whichever state the environment "wants" the qubit to be in. + +The brush implements T1 using an ancilla-coupling approach based on the Stinespring dilation. For each qubit and each Trotter step: + +```python +amp_rotation = 2 * arccos(1 - per_step_amp) + +qc.cry(amp_rotation, target=ancilla, control=qubit_i) # partial energy transfer to bath +qc.cx(target=qubit_i, control=ancilla) # bath feeds back into qubit +qc.cry(per_step_amp * env_θ, target=qubit_i, control=ancilla) +qc.crz(per_step_amp * env_φ, target=qubit_i, control=ancilla) +``` + +The `CRY + CX` pair is the Stinespring unitary that produces the Kraus map for amplitude damping when you trace out the ancilla. The final `CRY/CRZ` rotations steer the relaxation toward your chosen **Environment Color** rather than the default |0⟩ ground state — which is what makes this a generalized thermal bath rather than just energy loss to zero. + +**Visually:** colors drift toward the bath color. Like a photograph left in sunlight, they slowly forget what they were and settle toward the environment. + +### T2 — Phase damping + +T2 is faster and stranger than T1. It destroys the *phase* of a quantum state — the off-diagonal coherences in the density matrix — without necessarily changing the energy at all. The qubit gradually loses track of where it is around the Bloch sphere equator, even while its north–south position stays the same. + +In the brush, each Trotter step applies a small RZ rotation to accumulate phase drift: + +```python +qc.rz(per_step_phase * π, qubit_i) +``` + +This is a deterministic approximation of stochastic dephasing — it captures the same net angular shift in the ⟨X⟩, ⟨Y⟩ expectation values that random phase noise would produce on average. + +**Visually:** hue shifts and smears along the stroke, independently of lightness. At high Phase Rate you can get strong color rotations — blues become purples, reds become oranges — while the brightness of the stroke stays intact. + +### Trotterization — why take multiple steps? + +Instead of applying the full T1 and T2 at once, the brush applies them in small, interleaved increments: + +``` +for step in range(Steps): + apply T1 increment to each qubit + apply T2 increment to each qubit +``` + +This is a Trotterized Lindbladian evolution — the same technique used in quantum simulation to approximate continuous-time evolution with discrete gate sequences. More steps means each increment is smaller and more accurate; it also means colors evolve further into the decoherence regime. With fewer steps and high rates, you get abrupt jumps. With many steps and lower rates, the color change feels more gradual and continuous. + +### Reading the result + +After the circuit runs, three Pauli observables are measured for each qubit: + +``` +⟨X⟩, ⟨Y⟩, ⟨Z⟩ → φ_new = arctan2(⟨Y⟩, ⟨X⟩) + θ_new = arctan2(√(⟨X⟩² + ⟨Y⟩²), ⟨Z⟩) +``` + +This reconstructs the Bloch vector position without needing full state tomography. The difference between the old and new angles (Δφ, Δθ) is then applied as an HLS offset to all the pixels in that path segment, and blended with the original using **Strength**. + +--- + +## Why a classical brush can't do this + +There are two things this brush does that have no classical equivalent. + +**Bloch sphere contraction.** When you apply amplitude damping and trace out the ancilla, the Bloch vector gets shorter — |⟨X⟩² + ⟨Y⟩² + ⟨Z⟩²| < 1. This is the signature of a mixed quantum state, and it cannot come from any unitary operation or any classical color manipulation. It only happens because information genuinely flows from the qubit into the environment. + +**Curved color trajectories from entanglement.** The `CRY + CX` coupling temporarily entangles each color-qubit with the ancilla. This creates a color evolution path on the Bloch sphere that is curved and environment-dependent — not a straight interpolation toward the target, but a trajectory shaped by the quantum correlations between system and bath. Different environment colors produce qualitatively different paths, not just different endpoints. + +--- + +## Parameters + +| Parameter | What it controls physically | What you see | +|-----------|----------------------------|--------------| +| **Radius** | Brush footprint and number of path segments (= qubits) | Stroke width and color granularity | +| **Amplitude Rate** | T1 coupling strength γ per Trotter step | Colors fade toward the Environment Color | +| **Phase Rate** | T2 dephasing rate λ per Trotter step | Hue rotates and smears along the stroke | +| **Steps** | Trotter depth — how far the evolution runs | How deep into the decoherence regime | +| **Environment Color** | The thermal bath equilibrium state | The color the stroke slowly forgets toward | +| **Strength** | Blend between original and quantum-evolved pixels | How much the decoherence overrides the canvas | + +T1 and T2 are completely independent parameters here, just as they are on real hardware. You can have strong energy loss with almost no dephasing, or heavy phase scrambling with barely any energy change — two very different visual effects from the same physical picture. + +--- + +## Screenshots + +| Before | Light decoherence (T1=0.2, T2=0.1) | Heavy decoherence (T1=0.9, T2=0.8) | +|--------|-------------------------------------|--------------------------------------| +| ![Before](screenshots/before.png) | ![Light](screenshots/after_light.png) | ![Heavy](screenshots/after_heavy.png) | + +![All three modes side by side](screenshots/comparison.png) + +--- + +## Why I made this + +Most brushes in this collection model quantum algorithms — Heisenberg spin evolution, VQE chemistry, quantum drops. They're about what quantum computers *do*. + +This one is about what they *can't escape*. Decoherence isn't a side effect you can patch away; it's the fundamental reason we're still in the NISQ era. T1 and T2 are the first two numbers reported for any new qubit — they define what's possible before anything else is considered. I wanted to make a brush that didn't treat decoherence as an enemy to suppress, but as a physical process worth rendering directly. + +The two-channel structure gives you something you can't get from a single noise model: **two independent dimensions of forgetting**. T2 scrambles the hue — the *identity* of the color — before T1 has time to drain the energy. At high T2, low T1, you get chromatic chaos on a stable brightness background. At high T1, low T2, you get clean fade with the hue mostly intact. These aren't just visual variations; they correspond to genuinely different physical regimes that quantum engineers spend real effort distinguishing. + +The result is a brush for painting impermanence. Strokes that don't stay. Colors that remember where they came from, but only partially, and for a limited time. + +--- + +## References + +**Open-system quantum mechanics and noise channels** +- Nielsen & Chuang, *Quantum Computation and Quantum Information* (2000), Chapter 8: Quantum noise and quantum operations — the foundational text for Kraus operators, amplitude damping, and Stinespring dilation. +- Preskill, *Lecture Notes on Quantum Computation*, Ch. 3: Foundations II — Measurement and Evolution — [preskill.caltech.edu/ph229](https://preskill.caltech.edu/ph229/) ([PDF](https://preskill.caltech.edu/ph229/notes/chap3.pdf)) — T1/T2 definitions, Bloch sphere geometry, quantum channels. + +**NISQ-era context** +- Preskill, *Quantum Computing in the NISQ Era and Beyond* (2018) — [arXiv:1801.00862](https://arxiv.org/abs/1801.00862) — why coherence times are the central constraint on near-term hardware. +- Krantz et al., *A Quantum Engineer's Guide to Superconducting Qubits* (2019) — [arXiv:1904.06560](https://arxiv.org/abs/1904.06560) — how T1 and T2 are actually measured and what limits them in practice. + +**Trotterization** +- Childs et al., *A Theory of Trotter Error* (2021) — [arXiv:1912.08854](https://arxiv.org/abs/1912.08854) — theoretical basis for the interleaved step decomposition used in the circuit. + +**Color–quantum state mapping** +- Bloch sphere color encoding follows `color_to_spherical` in `effect/utils.py`: hue → azimuthal angle φ, lightness → polar angle θ. +- Circular mean for hue: Fisher, *Statistical Analysis of Circular Data* (1993) — the correct way to average an angular quantity like hue across a region. + +**Quantum Brush** +- Park, *QuantumBrush* (2025) — [arXiv:2509.01442](https://arxiv.org/abs/2509.01442) — the paper this brush contributes to. +- Circuit structure and Pauli estimator pattern adapted from `effect/damping/`, `effect/qdrop/`, and `effect/heisenbrush/`. + +--- + +## License + +Apache License 2.0 — same as the Quantum Brush project. diff --git a/effect/decoherence/screenshots/after_heavy.png b/effect/decoherence/screenshots/after_heavy.png new file mode 100644 index 0000000000000000000000000000000000000000..09d56c801ab40c58bdb3ce9bb3f01a634693425b GIT binary patch literal 14877 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

*I&|lAdQ}Z#9o~S*_Wek0;1^=Il7{jTo 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 ZBC}3F>@H-}(4drqm>QoVSCia-_!pU_BLx5e literal 0 HcmV?d00001 diff --git a/effect/decoherence/screenshots/comparison.png b/effect/decoherence/screenshots/comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..3cfcd6203a59dca12321a104ff75f2d7756a80c7 GIT binary patch literal 38841 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 literal 0 HcmV?d00001 From 10644c6c062bf3dbafe440e7b59441cabb486480 Mon Sep 17 00:00:00 2001 From: mahbub570 Date: Fri, 26 Jun 2026 17:31:05 +0600 Subject: [PATCH 3/3] fixed some calculations and bugs --- effect/decoherence/README.md | 34 ++--- effect/decoherence/decoherence.py | 124 ++++++++---------- .../decoherence/decoherence_requirements.json | 1 - .../decoherence/screenshots/after_heavy.png | Bin 14877 -> 0 bytes .../decoherence/screenshots/after_light.png | Bin 11143 -> 0 bytes effect/decoherence/screenshots/before.png | Bin 3569 -> 0 bytes effect/decoherence/screenshots/comparison.png | Bin 38841 -> 0 bytes 7 files changed, 74 insertions(+), 85 deletions(-) delete mode 100644 effect/decoherence/screenshots/after_heavy.png delete mode 100644 effect/decoherence/screenshots/after_light.png delete mode 100644 effect/decoherence/screenshots/before.png delete mode 100644 effect/decoherence/screenshots/comparison.png diff --git a/effect/decoherence/README.md b/effect/decoherence/README.md index 6227474..37a4d08 100644 --- a/effect/decoherence/README.md +++ b/effect/decoherence/README.md @@ -15,9 +15,9 @@ When you drag a stroke, the brush divides the path into segments. Each segment s θ = π · mean(lightness) ``` -Your chosen **Environment Color** is encoded the same way, onto an ancilla qubit that represents the thermal bath. +Your chosen **Environment Color** is converted to Bloch angles (φ_env, θ_env) and used to steer the T1 relaxation target inside the circuit — not pre-encoded on the ancilla, but applied through controlled rotations in each Trotter step. -Then the decoherence circuit runs. It couples each color-qubit to the environment ancilla over several Trotter steps, applying T1 and T2 noise incrementally. After the circuit finishes, the brush measures ⟨X⟩, ⟨Y⟩, ⟨Z⟩ for each qubit, reconstructs the new Bloch angles, and uses the angular shifts to update the hue and lightness of every pixel in that segment. The result gets blended with the original canvas according to **Strength**. +Then the decoherence circuit runs. It couples each color-qubit to two dedicated ancillae (one for T1, one for T2) over several Trotter steps, applying amplitude and phase damping incrementally. After the circuit finishes, the brush measures ⟨X⟩, ⟨Y⟩, ⟨Z⟩ for each qubit, reconstructs the new Bloch angles, and uses the angular shifts to update the hue and lightness of every pixel in that segment. The result gets blended with the original canvas according to **Strength**. --- @@ -27,18 +27,18 @@ Then the decoherence circuit runs. It couples each color-qubit to the environmen T1 is the time it takes for an excited qubit to release its energy to the environment and relax toward equilibrium. On the Bloch sphere, this shows up as the state vector contracting toward a fixed point — whichever state the environment "wants" the qubit to be in. -The brush implements T1 using an ancilla-coupling approach based on the Stinespring dilation. For each qubit and each Trotter step: +The brush implements T1 using the Stinespring dilation for amplitude damping. The T1 ancilla starts in |0⟩. For each qubit and each Trotter step: ```python -amp_rotation = 2 * arccos(1 - per_step_amp) +amp_rotation = 2 * arcsin(sqrt(per_step_amp)) # exact Stinespring: sin(θ/2) = sqrt(γ) -qc.cry(amp_rotation, target=ancilla, control=qubit_i) # partial energy transfer to bath -qc.cx(target=qubit_i, control=ancilla) # bath feeds back into qubit -qc.cry(per_step_amp * env_θ, target=qubit_i, control=ancilla) -qc.crz(per_step_amp * env_φ, target=qubit_i, control=ancilla) +qc.cry(amp_rotation, control=qubit_i, target=t1_ancilla) # partial energy transfer to bath +qc.cx(control=t1_ancilla, target=qubit_i) # bath feeds back into qubit +qc.cry(per_step_amp * env_θ, control=t1_ancilla, target=qubit_i) +qc.crz(per_step_amp * env_φ, control=t1_ancilla, target=qubit_i) ``` -The `CRY + CX` pair is the Stinespring unitary that produces the Kraus map for amplitude damping when you trace out the ancilla. The final `CRY/CRZ` rotations steer the relaxation toward your chosen **Environment Color** rather than the default |0⟩ ground state — which is what makes this a generalized thermal bath rather than just energy loss to zero. +The `CRY(2·arcsin(√γ)) + CX` pair on a |0⟩ ancilla is the exact Stinespring unitary for amplitude damping: tracing out the ancilla yields Kraus operators K₀ = [[1,0],[0,√(1-γ)]], K₁ = [[0,√γ],[0,0]]. The final `CRY/CRZ` rotations steer relaxation toward your chosen **Environment Color** rather than the default |0⟩ ground state — making this a generalized thermal bath rather than just energy loss to zero. **Visually:** colors drift toward the bath color. Like a photograph left in sunlight, they slowly forget what they were and settle toward the environment. @@ -46,15 +46,17 @@ The `CRY + CX` pair is the Stinespring unitary that produces the Kraus map for a T2 is faster and stranger than T1. It destroys the *phase* of a quantum state — the off-diagonal coherences in the density matrix — without necessarily changing the energy at all. The qubit gradually loses track of where it is around the Bloch sphere equator, even while its north–south position stays the same. -In the brush, each Trotter step applies a small RZ rotation to accumulate phase drift: +The brush implements T2 using the Stinespring dilation for the phase damping channel. A dedicated T2 ancilla starts in |0⟩. For each qubit and each Trotter step: ```python -qc.rz(per_step_phase * π, qubit_i) +phase_rotation = 2 * arcsin(sqrt(per_step_phase)) # exact Stinespring: sin(θ/2) = sqrt(λ) + +qc.cry(phase_rotation, control=qubit_i, target=t2_ancilla) ``` -This is a deterministic approximation of stochastic dephasing — it captures the same net angular shift in the ⟨X⟩, ⟨Y⟩ expectation values that random phase noise would produce on average. +`CRY(2·arcsin(√λ))` controlled on qubit_i entangles the qubit with the T2 ancilla. Tracing out the ancilla yields the phase damping channel: ρ₀₀ and ρ₁₁ unchanged, ρ₀₁ and ρ₁₀ multiplied by √(1−λ) per step. This is pure Bloch-vector XY contraction — the Z component (lightness) is invariant, but the off-diagonal coherences (hue identity) decay. No energy is exchanged. -**Visually:** hue shifts and smears along the stroke, independently of lightness. At high Phase Rate you can get strong color rotations — blues become purples, reds become oranges — while the brightness of the stroke stays intact. +**Visually:** at high Phase Rate, colors lose their hue identity and trend toward desaturated/neutral tones while brightness stays intact. ### Trotterization — why take multiple steps? @@ -85,9 +87,11 @@ This reconstructs the Bloch vector position without needing full state tomograph There are two things this brush does that have no classical equivalent. -**Bloch sphere contraction.** When you apply amplitude damping and trace out the ancilla, the Bloch vector gets shorter — |⟨X⟩² + ⟨Y⟩² + ⟨Z⟩²| < 1. This is the signature of a mixed quantum state, and it cannot come from any unitary operation or any classical color manipulation. It only happens because information genuinely flows from the qubit into the environment. +**Bloch sphere contraction.** When you apply the T1 or T2 Stinespring unitary and trace out the ancilla, the Bloch vector gets shorter — |⟨X⟩² + ⟨Y⟩² + ⟨Z⟩²| < 1. This is the signature of a mixed quantum state, and it cannot come from any unitary operation or any classical color manipulation. It only happens because information genuinely flows from the qubit into the environment. + +**Independent two-channel contraction.** T1 contracts the full Bloch vector toward the bath fixed point (all three components change). T2 contracts only the XY components (Z/lightness is invariant). These are two separate Stinespring unitaries on two separate ancillae, running simultaneously in each Trotter step. No classical color blend can produce both contractions independently with the right Kraus structure. -**Curved color trajectories from entanglement.** The `CRY + CX` coupling temporarily entangles each color-qubit with the ancilla. This creates a color evolution path on the Bloch sphere that is curved and environment-dependent — not a straight interpolation toward the target, but a trajectory shaped by the quantum correlations between system and bath. Different environment colors produce qualitatively different paths, not just different endpoints. +**Curved color trajectories from entanglement.** The `CRY + CX` coupling (T1) temporarily entangles each color-qubit with the T1 ancilla. This creates a color evolution path on the Bloch sphere shaped by quantum correlations between system and bath — not a straight interpolation toward the target. Different environment colors produce qualitatively different trajectories, not just different endpoints. --- diff --git a/effect/decoherence/decoherence.py b/effect/decoherence/decoherence.py index 4686bf2..f93406a 100644 --- a/effect/decoherence/decoherence.py +++ b/effect/decoherence/decoherence.py @@ -18,31 +18,29 @@ spec.loader.exec_module(utils) -def scale_to_range(x, in_min=1, in_max=100, out_min=2, out_max=8): - """ - Linearly scale x from [in_min, in_max] to [out_min, out_max]. - """ - if not (in_min <= x <= in_max): - raise ValueError(f"Input {x} is out of range [{in_min}, {in_max}]") - return int(round(out_min + (x - in_min) * (out_max - out_min) / (in_max - in_min))) - - def build_decoherence_circuit(initial_angles, env_angles, amp_rate, phase_rate, steps): """ Build a quantum circuit applying Trotterized amplitude and phase damping. - Amplitude damping follows the ancilla-coupled channel used in damping.py, - extended with controlled rotations toward the environment Bloch angles. - Phase damping applies incremental RZ dephasing each Trotter step. + T1 (amplitude damping): ancilla-coupled Stinespring dilation. T1_ancilla starts in + |0>, CRY(2*arcsin(sqrt(gamma))) + CX implements the exact Kraus map; CRY/CRZ after + the CX steer relaxation toward the environment color rather than pure |0> ground state. + + T2 (phase damping): separate T2_ancilla starts in |0>, CRY(2*arcsin(sqrt(lambda))) + controlled on each qubit contracts the off-diagonal density-matrix elements by + sqrt(1-lambda) per step without changing the Z/lightness component. + + Both ancillae are shared across all data qubits per step (same single-ancilla + approximation used in damping.py). Circuit size: n_qubits + 2. """ n_qubits = len(initial_angles) - ancilla = n_qubits + t1_ancilla = n_qubits + t2_ancilla = n_qubits + 1 env_phi, env_theta = env_angles - qc = QuantumCircuit(n_qubits + 1) - - qc.ry(env_theta, ancilla) - qc.rz(env_phi, ancilla) + # Ancillae default to |0> — do NOT pre-rotate t1_ancilla to env state; + # env-steering is handled by the CRY/CRZ gates inside the Trotter loop. + qc = QuantumCircuit(n_qubits + 2) for i, (phi, theta) in enumerate(initial_angles): qc.ry(theta, i) @@ -50,42 +48,26 @@ def build_decoherence_circuit(initial_angles, env_angles, amp_rate, phase_rate, per_step_amp = amp_rate / max(steps, 1) per_step_phase = phase_rate / max(steps, 1) - amp_rotation = 2 * np.arccos(np.clip(1 - per_step_amp, 0.0, 1.0)) + # Stinespring rotation: sin(theta/2) = sqrt(gamma) => theta = 2*arcsin(sqrt(gamma)) + amp_rotation = 2 * np.arcsin(np.sqrt(np.clip(per_step_amp, 0.0, 1.0))) + phase_rotation = 2 * np.arcsin(np.sqrt(np.clip(per_step_phase, 0.0, 1.0))) for _ in range(steps): for i in range(n_qubits): if amp_rate > 0: - qc.cry(amp_rotation, target_qubit=ancilla, control_qubit=i) - qc.cx(target_qubit=i, control_qubit=ancilla) - qc.cry(per_step_amp * env_theta, target_qubit=i, control_qubit=ancilla) - qc.crz(per_step_amp * env_phi, target_qubit=i, control_qubit=ancilla) + # T1: Stinespring unitary for amplitude damping toward env color + qc.cry(amp_rotation, control_qubit=i, target_qubit=t1_ancilla) + qc.cx(control_qubit=t1_ancilla, target_qubit=i) + qc.cry(per_step_amp * env_theta, control_qubit=t1_ancilla, target_qubit=i) + qc.crz(per_step_amp * env_phi, control_qubit=t1_ancilla, target_qubit=i) if phase_rate > 0: - qc.rz(per_step_phase * np.pi, i) + # T2: Stinespring unitary for phase damping (contracts XY Bloch components) + qc.cry(phase_rotation, control_qubit=i, target_qubit=t2_ancilla) return qc -def angles_from_observables(obs, num_qubits): - """ - Convert Pauli expectation values into Bloch angles (phi, theta). - """ - x_expectations = obs[:num_qubits] - y_expectations = obs[num_qubits:2 * num_qubits] - z_expectations = obs[2 * num_qubits:] - - phi_expectations = [ - np.arctan2(y, x) % (2 * np.pi) - for x, y in zip(x_expectations, y_expectations) - ] - theta_expectations = [ - np.arctan2(np.sqrt(x ** 2 + y ** 2), z) - for x, y, z in zip(x_expectations, y_expectations, z_expectations) - ] - - return list(zip(phi_expectations, theta_expectations)) - - def run_decoherence_circuit(initial_angles, env_angles, amp_rate, phase_rate, steps, params=None): """ Run decoherence simulation on quantum hardware simulator. @@ -108,8 +90,10 @@ def run_decoherence_circuit(initial_angles, env_angles, amp_rate, phase_rate, st qc = build_decoherence_circuit(initial_angles, env_angles, amp_rate, phase_rate, steps) + # Circuit has n_qubits + 2 qubits (T1 ancilla + T2 ancilla); Pauli strings + # must be length n_qubits + 2 with ancilla positions as 'I'. ops = [ - SparsePauliOp(Pauli('I' * (num_qubits - i) + p + 'I' * i)) + SparsePauliOp(Pauli('I' * (num_qubits + 1 - i) + p + 'I' * i)) for p in ['X', 'Y', 'Z'] for i in range(num_qubits) ] @@ -122,7 +106,15 @@ def run_decoherence_circuit(initial_angles, env_angles, amp_rate, phase_rate, st cost_estimate_out=p.get("cost_accumulator"), ) - final_angles = angles_from_observables(obs, num_qubits) + x_expectations = obs[:num_qubits] + y_expectations = obs[num_qubits:2 * num_qubits] + z_expectations = obs[2 * num_qubits:] + + # phi = arctan2(Y, X), theta = arctan2(r_xy, Z) + phi_expectations = [np.arctan2(y, x) % (2 * np.pi) for x, y in zip(x_expectations, y_expectations)] + theta_expectations = [np.arctan2(np.sqrt(x ** 2 + y ** 2), z) for x, y, z in zip(x_expectations, y_expectations, z_expectations)] + + final_angles = list(zip(phi_expectations, theta_expectations)) print(f"final angles: {final_angles}") return final_angles @@ -135,8 +127,16 @@ def classical_decoherence(initial_angles, env_angles, amp_rate, phase_rate, step """ Classical fallback when qubit count exceeds simulator budget. - Approximates amplitude damping as HLS interpolation toward the environment - and phase damping as progressive hue diffusion. + T1 (amplitude damping): hue and lightness interpolate toward the environment + color — both channels decay because amplitude damping contracts the full Bloch + vector toward the thermal-bath fixed point. + + T2 (phase damping): hue decays toward the maximally-mixed azimuthal value (0.5) + without a target color, mirroring Bloch-vector XY contraction. Lightness is + unchanged by T2 (Z component is preserved under pure dephasing). + + ponytail: scalar HLS can't represent Bloch-vector shortening (mixed states). + This is the best single-color approximation. Upgrade: per-pixel density matrix. """ env_phi, env_theta = env_angles env_h = env_phi / (2 * np.pi) @@ -151,33 +151,20 @@ def classical_decoherence(initial_angles, env_angles, amp_rate, phase_rate, step lum = theta / np.pi for _ in range(steps): - h = (1 - per_step_phase) * h + per_step_phase * (h + 0.5 * (env_h - h)) + # T1: both hue and lightness drift toward env (full Bloch-vector relaxation) + h = (1 - per_step_amp) * h + per_step_amp * env_h h = h % 1.0 lum = (1 - per_step_amp) * lum + per_step_amp * env_l + # T2: hue loses azimuthal coherence (no env target), lightness unchanged + h = (1 - per_step_phase) * h + per_step_phase * 0.5 + h = h % 1.0 + final_angles.append((h * 2 * np.pi, lum * np.pi)) return final_angles -def split_path(path, n_segments): - """ - Split a stroke path into n_segments contiguous subpaths. - """ - path_length = len(path) - if path_length == 0: - return [] - - n_segments = max(1, min(n_segments, path_length)) - split_size = max(1, path_length // n_segments) - split_paths = [ - path[i * split_size:(i + 1) * split_size] - for i in range(n_segments - 1) - ] - split_paths.append(path[(n_segments - 1) * split_size:]) - return split_paths - - # The only thing that you need to change is this function def run(params): """ @@ -220,9 +207,8 @@ def run(params): env_angles = (env_phi, env_theta) print(f"Environment color: {env_color}, angles: {env_angles}") - n_segments = min(scale_to_range(radius), len(path)) - n_segments = max(1, n_segments) - split_paths = split_path(path, n_segments) + n_segments = min(int(round(np.interp(radius, [1, 100], [2, 8]))), len(path)) + split_paths = np.array_split(path, n_segments) initial_angles = [] pixels = [] diff --git a/effect/decoherence/decoherence_requirements.json b/effect/decoherence/decoherence_requirements.json index 2513c2a..04862e4 100644 --- a/effect/decoherence/decoherence_requirements.json +++ b/effect/decoherence/decoherence_requirements.json @@ -7,7 +7,6 @@ "description": "Fade stroke colors through amplitude and phase damping channels, modeling NISQ decoherence as artistic memory loss.", "dependencies": { "numpy": ">=2.1.0", - "colorsys": "", "qiskit": ">=1.0.0", "qiskit_aer": ">=0.17.0", "scipy": ">=1.10.0" diff --git a/effect/decoherence/screenshots/after_heavy.png b/effect/decoherence/screenshots/after_heavy.png deleted file mode 100644 index 09d56c801ab40c58bdb3ce9bb3f01a634693425b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14877 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

*I&|lAdQ}Z#9o~S*_Wek0;1^=Il7{jTo zmK~B44)A7F1sA6IMdm1^`lnOf>IPqe3^Ck|VgQkt_Q1kpGHXk3NR+@yXYCvxq}b&9 zZgy6n+K(;R-Ij=UkNnEbZxcG$oLXZk^k`nFKsozZ6PNQh)qeIO%*6uKwKrD&4z|o@ zmonPA!KI@z-;aq|rF>m5bi7{~tHT;wZbPYeVJ=Ifm$`VklWi);=*y-=E?vyEvi@iq zR)RH(eU&L>V=W;4lA~Ygs>_lVJtqHF&>|l`Xi`Fg5Nx=Qy5~t&B6EBdNe4T|+r+RZ zO0u&@Z6J+svsj8`G7Tc}i{R&Y0%j`_C6e&tnd6F&SLwTu2R&r#0nSX!DSWvta^Gmo(HgM=Wpb#aqd@yai|G{vo7@l?P6ilkb|AOulUyH1m6=J_C9|;yl>O9L3MtevkV!x#~eB)jDd- zrK@VSzooD|wv~gBVOb)rKW4Nr@Ggh`zGDb$%;=IL=#t{Pgc8K3h%alQG1`8wMFOz| zM`66ZU_u&=;SLsssfwBcL75)hdUmfkS8)9HMZ+UUR*9@wLAW1OQ7ZZo7yfQ_g03kW zE7?Z%{C`dq>h)r2EV`d;lTbDG!APiF+|sek0LS1rH6z{W?$4R|q~waB8)H$F^jBPh zrC@ZW$ycnT6jS0?ZN(79v@J~1aX#qxlP94aD17{)4QT<->lwqcvvh2n!b+Fv=_*W@ zSyivg^{Jy#$G$*0AIcB;WJZzv-F|)_RLC+JQzw!BozoDA0=mF`R7lsDJO#$ zNEws~=Z-pdX7=2aVg2!}Obpvv-{!q%9P%w^Oyr)a$G7ud3ovVhUMB09v7#hh54sbQ zX}wQH_s*I%O!vH9ZGCygP3_?Olgh<^s@oN4_wTwdYB91zg!~zPC1{E8qXYJwhgH2! zWnS%X9RS{hWFPkYozsV-o3uRt`IeJy-mFsFc^>^%9XVH7%0CzbaKbY=^JU9k`f}*x zP*L5ghs&L3+cK21(cqlT_F@J3GiT9G)~H<}_OaR}Lq;0Ec+RQ69ra81l(*mBTiXal$bu0Os+^%DvR|K8pL&AsWF zF9B0SMgLY#T&sxabvqaT#e&$nk}T_UuzB%7Dq&Yu0MEyEbazJ0P|gbTx+vgO@=}_O z?4+J!u`x&P%qKtAM)i0n$5wBFs&B9yev7N<449A4TA4VOYL`TM)Anbc_V?dxP0yzsV(6 zU=;nEMu9DZyDTD#XF?SJ%e{F564UUk6V$Xxdi<{ww$b2Ysr;ll zRqXyxiV8ZBAL$s{nE~H#-V=06iC^8mb`-?~Hx}ZSM!M4&4gvttt zzc*_XvC<5rH5IfWx0@<33={dEYlyXv4=VrGZh)eW6&+EaiOKl;u>=E1uU=XegUcVyS>uP;S9Qk%8@THUJl(-9U4fw^SJ!f;|;{G9SgDPS-Z?% zu4-2op@uk5AMGzMCiv3EZqHwZpSqPCDUgv+l><17XQcbxsy%qN^5g%@#PMML5zFMt znjrQ!N|q#Oh}-xzBoc8r;V~ArpglivxtqC2wuUW30Md%_?Q2>q$gT)q8WL&H*pgy3 z!vePMt@xk|XAlrGk5zN~Yj#!cDi8Fx@+IAiE3#s5IK{(es246S`+;Gu6jiM)a(BPT zd5(x54r!Nae@r6^lCe_20$LOgF}tl;^3dux8)2se_hAngsVqCGE8z>;%LjR>ZSTe3 z)B%p|u@|ht@u30)Kqz6cQOxwC_K~a^4L?|)_}j_Z(tQsS>u(@Lt7XD#kB3~iWJ~mb z(Cd?T4l2^$ebR^7ihGJR9gy#@6@Bz)dbX?Ly10dtQPx7A zN`PLs%Equ$3(LEK!iB2+gqN5fufN->d1~Ic+AU*s%QC0&up#XW|7=y#4f!p}bMj+x z$;NYPUVo?TwMzq1S3^Co4l3Wi3s(DQ4*ZIXe?QrcZT!sd zd#Xs-E!dzTj;}ZC#{He8XPR3tDt!p+a3`JUMWC$qpZncb?{oY6;fDqiq(~O_WiS_F zXm=lQDL$K1KfdI7YNP1x!3Jt;9r@v$5!3dO*H&glxX;i04HvnXOcQ?Js-&K6zd+J3!X=lbUK!1w6K{&x$1Hf|0}P~|V5T#QG-g_to)mn3*{zQ~{Tf;G zqwBiwvPaNNDLE56z5Hi?dN^;#2i$#+2oB2Y@D{MdrZ-|YBP1``*nFy7KP$fu@9_{P z9*4C~4k4eY_tVn?eoFZTW+8?12lkZEGtE8saT7qao*2;FqtE)dVnR;S&mQ0Rn1vVG zA;W!^EeqW#sadDe{YPvNKq?fsfE&54lKF+nHa8h_ozdZWv2yXnZ}uPkLR&EucP@xU zXqa%@MarzX8WR8ZU}1n1wZA_JCV@0y4^n6}A-p|YKKiSHLpmQC*XpU^N!H_MM#-;D z=kEu}@i6&Dg`((yPe+IuS?mgF`D`59W=;MvJ zv#)N{p*r#zZb*SL1jF9vABky3{9~`Hl)n*?HR(>)hmp+`jZ!b4{aC2kt2MT{TDf>2 z8sJ4g+iZjr`9&_FUbN~b;p40YFsgcmXJ9BL%xYo$vW`1nVJlC|_WkG@eKLyF$>1Ia z&eF5cHCYHS3C{xo0ncjzKRsc6AJ5v^W#dDF8x*s7zFqHK1f5Z#)4Y3zM(Zeu2ALANPGLQL0pv zU;Wkam|5lY2j?E$fz^f+F0p}5Svxac#6ShPr+;bJrgFFOE42;ZKK~s!;6XP!6pWq02cs^iES0V{(uzpM8pGiXDRRml>$y z7l^bzb^1*N_a-(WJ7Mj-<%9F#JCd1lH5c>0+%$JaycK@O+iP7F)z*&cjZx=kb0zDf zv!@p?XWbzJB}PUEQKpM=v4Ar@&%jU}m*_Cn0`mC=)`*$9w95JFj~J@9G&h}jGQ0BbOV&2tJZj?dUhmddaN}TKISDF|4 zdaU3`&tZ&dBEU-`yR_8^y|r{g7hIPzF$THGXfgpO)@N)KWI-m7^2XttZ5ZlpY3`es zrAg!(Uy9@|DE-0ZdOl}@IAnjIFNlA_Tfr>>Tq^fmhKQh`RNwjsE<&GooxKbjUjuTP8?$Q-@9RyJPIfoNSP9tjFg=nc(H8Q`6 zE%A>^+k3Hls`PeU(L zZ$s3nJK*H9m@D!X$xd=)x$IAc=t+ZgU!oOX?LWHhex4v8jhG3+@4Xt8eul())1I=q z7w;Tx;1*=_@Xmb7>FLx_)3LQ3X8t-wlA|NTdr7~iMRII*4(&KLEZgSrwt79xjS_NG zn!AQA@?Sy!2AsE7{~Iq}(uRynDyyoGAWx@mNLGwHPkmov^Q;>n=ee}zxu6xY&`b=S8C|4jLpzu)!dflGEYtEw_p8ntp2ViF-5`@Zi zQ^A<%OFgV?WNhG&oF3jR@gWvbj7M^Ef4PSp%gHzqcIye!XG|KWmh89-DwocpW7# zQ5($j$AIIP>B#fOGskBT4v}-Gsrx|Wus{j4XVk$2d8dnkmOIeS_sD^QyOvlP^>qD_ z=Y!(F2xch3Pl~o!tB*4mOQsb=Bz1HAas-Od-soG09;XjHFN8^g9CVZDtPjXTe~6J{ zhaJ8VwGCH@B(LzV$ncA+G53 z;hUX4>NssJ=ph8(ZO03lV*sW^!z7e}U4OJ;d|{58f!lTY`#JN~4|~JhL=@-53~{gE zS&+v9Yo)(R9Ti`>YztpB`;(x?DjY31sQ~0o~Qx zRrB;uzj&4v6-V^>I>_qRux^2xr^cdkT(wwjAdZdOc1e@3($2YC1^8iD04$L4<@cji@@zA|;^C9q zplAAV`f{mhnk%pGi^uapgy4WLfhAQ$8(>CJ3uvj24o^372mb+mTWI^)Z%hiBi?KVi zQ;JOs@?)lMji*fnmSyRxas_G01YM1Op7P*Z{E>^7=Civ#ucnviv2NDM2(| ztCRZ~y7!K2_7DmJbK|4ShbJP@(WD^2A*?JA@wcEs;E`@qL!f8y_&j`P_48~ChvHsm z3m8pY)RRj|(>e+{eUUTNtv|~0w!0HcBaK7q@a|61%HeGD+fdEb>a)HVrvgg<83S3<_IhzMa2% zIW(S||FJ?c&9MKgq>6VC_*YuXYIMdy@ZrR`cIC46+)QvJCazmV{2o5!2uNtBH8Zrx zrN3>G881&=c$E&u&`V9JiP@Kbc*{zdU-)~nVWoy%zd5ouG%aH;8%+=YT2p3V^;+ci z_7&CC%BP32M}@DZL%Z0t4^!t4AEH#4@tsv5iL+7Up%I8Bzfy{cr_U6`0`92=krE5;q2Vqqm+XzOEkC7bGT6X9vw+b&9xwHao&9NK z4$A$syad4BYDMqE0Yz<9bERm@420BRhHql5p8Vyap&59fgyWKg3<;?l&^9zuO{Cg zzt>7+PrK6eM@;jmDDXs8i@rNPY|3CeI5gl^6d%Ms8jBI}SfKY&70N3QKSw?wVhmXnF7Y#XG%J7=7;{Mxkl z_r|Hqub|&p<~9@KzpEiD7$$!G-N_b9-JebpW8@p0SS>*PPB zwSo-nSZUhXe4&-{?p6(Cf$UO0ZLMflF>$N1bmeT{_c$?Rx!IES)W^vKQ_jYL6!ZZI zrp$tdD)ZO!mSl0sGC(6S3)59w9%;(-Le0HsZhrge{pJ0x%mIy;ZzV73<8tHgbS)`{ z3lA|2Nt;-P?K8D-@P!n$L}wVgyM{4aFU`vm9j?~s@OWgLnBxTMH65tR>Bvz0YeQR$ z`agYzyap19?F?5UCjMFQDwM_;kdiZqJjNw4C}n2^%U9vL`1arn=(+#-Kf4p{GLzaB$571a0O}!`p z*|~&k{{FeWTi^E%d4N-NiLs+KxLm2YU%k7_{j%aC#1Kc}1HjKoNjl>xeVl;Hj`ed! z+1A@Xw<8$Ve*4wg3kuqvChLb~+c=#uxCOv{3=@>F2$rNXUkt@(hGY-zu0)nL;L1Te zsr%YdpNNC}c1|H;nOdd#)VI(=!Ix4awy1Um`KbbQ??(&7scKUSc4nu=CD`GiUHzHW z(=97{=DOb#ib93k9SY^h7_q6L6oS94ARf4^BrGyZ(zzWBaYy@~2Z~nr9WpJ(c3yM( z+u7Y=u;jB^`od=nHUviUjl>#o6n=ZcT&3q5h-;vU?axOVAkg06$45Iav{!X@OnG&y z8(g`3sM5ZQQ!nBknT2e=b^3?f95LlE9=y!6o1bO{|D`0hoBI%RO@C#%Wv?d^jEu1! zGbpe^?mTsg%pXl{E(Hhs|1i40J(x;(aUzJY@1`<7?-N#BZ;kNGv4B&~<{%36w+vQY z#P)H6T$u?IAGe#|`|||CT2X^>3Crcp{@jooBz@W%v9RJojJ}NwZe;_jU=fAltv~<`sYYW$mSx6wUKnrI)EQ62Ngk`f%7b;sHp)X!ccQ)3qhvTUnS~&8M5Kqjh(@ zX@*Pzuj^5GNp6fhHzCQad}~H5Vm-yiB}LM0&;@Zm9e{{ZY|Og%ip&tLP5L!2=SR%N zlr1Tlg6Q;nw_UWWIanQX&&iUIw#efqQ;HK9dMyJJh41@SBNg+bi<`#)C-qc>)g^7K z-sfX%Fj+{|D7Drg9vFI(S=YS#tHDk7pfb)1ONwMc|L}OF4Ec|-KXRj>NEN{30D{T5 z^%xTs^zK(_*6$9P)c2%&Jo=AHp!WXd8t%omU!^w7X zvICb^Ukl;;S$6kq4^@wbdY|onkX`w?tKpR3mCyHAd$si&LnMCOntN6{*@)8~ z0{O_fE(lUD#9=P2ieIpbpQT<52;oPN;G7;mcF!FJs$mH0>Zf=i5!cGDW&|!Vm7g6GPKG$Nw0^1p9{ZvLl#t#5+pf;-jPcO&{$7@Ic2}*$C*N!0g84fRB zu(d;*H7^+R-BxX+ZJlxrmZw7-^XgOOztEraJyAfGJG%m}Z@$UWW2!A08zQr0g{LsS z<9@OU(zK<9X&c-sISa=OoFK4630yTsl;4twsKjD@Jb9>W(mRnrl6`Z}!s%Z{$&tM9#6n=-e9^Y> zgTl~B_yY@K$;D|II;^ol0?BJ(h;wQM_`E3zsFA^OkvG+0DXC`VorVxbJ>b%%4$MOD z@kYxd7w9qBNx=%-&-i&;F$<55KR%f&Hhq8FrwhioC1CuT$-_FOKCsovgW!a7(gRot z1s^*kj#XINN4r_fWs$R!3SB)ssOHm;ESB8Q^xd?Li zHdWCl_(c(Lop-$LWDq_(D__s$r6J{G6HaQRuEKD>`AU@x_t6s2lyKwwX{Jda;A&sM z5ceSNm=FPo*keK*AW&WciV~ihU&&b_UztH`OLfJcKabLXHg??^-XmpVWb17csAD&(dN^wvugnp2t7ak8PlBCBN zgxGTn;O*6kcMkeC9!Od>Pn70?t^C_yh;pCLlln;cV>LJjtJ3L)+5E||)dQC_{ezdvSrB zCCp~W(0v*4ALn1ZJSbj{4{2xU>sMG^eiC25+uU*JHb%+mT3?(8&b)vpKeKEg^w)a$1kqog*gSHr3w`K>1M-&V9)O0R#{|&J&GUx3aqD_x zZryj@Y-}ACk?QMv!qoHb^^0LA+|=#85GUN>!q7^u`l^Dw4Pe;a&nkioIEt4K5#7lB z4jL3Y?GT=l5ifW(@TB&{e~f&{&cd)E0vPJ}eJIX~bhWk!rGj==p2etpcL^BNC9m0V z+_9pX@WFV-C>)#p96b?PULjd?Z_Fp2Z~VEWVS!q0?~R6I{X*O*uLS@;3BWD;5*ToI z3FTy3ZJd7-kbh1>F-^L9s6^V>?2jq=-(B!hi}5L01eI(Pw!jT=%2h+WgSK%>qaE0+ z4Ni4@oHdx}qUlivi}a5dev>@J8Y+%&t8`t_pj${gc0k9!-A=>~qWSulbh09_* z#}|^oHp3SR(~Y?>oUj7GVSicFCeU0z%*USeAdAXyx0G0R6zUN`l1<$~`o~EXW9#_& zIWzK8Erv?HyJZpm_dg{$-7LjW@735;R!8`c1stzK@ipheV@I2&|Ex3AKSls=+4NAE zRYLBf=gULzgDy=6kE(CCZw?xK>KXZXtbx>b-I(_SNrVvOb#lVq_;=4wei8w>(%S1B z&Bx{t%{>XzDd8=|uwCaNR`4TII`9YeVs)V}j<-_8@r%uyWM>79w-@_(b|@F+ZlO4V z?tnmw_$EOIseMS7kHj02!LAj{o8?(sjHvg>pjrF7jr!NY7myf z=Wk4J&~X=adX0q}{bzTTbA|H83i}b7v(;O6wQDflUiRxYY?i7uH8%Q`?<=ME93B1t zsz-AGN$5D4B~bQgZ?ui&Qfp_$g^neQ>wFHwlZ{4i{eKgQo0+`ks1(8fe)`DZ`8iHw zll9mz|D|)T8iC{70wC{Wn|mrAdyd3?9YFDrZ*0d?dYumNWLj)BBOjJM_swh+jfdZz12#5^t;%ir5SKs^be%!V0`Oe+L*=MhPzc0?}6h(Tw z(sl?0B5i6ywt+yPso;YHwt>i8bq0Z&23 z#m94sT%3P*kh4><3Qr?lRq7)Xk%`$Hw#(LuT{0a^vmfQYR?(0>^;M0P00L6ms7i21SvH5C8#(kR&9SaOl66uQ*iY@vZKc5B?qA{3`zu z4An02m!tpiJF19>p#LyQO>(&s{>~!k+2z5VZ@OETN8V&ZO5Fd5_T(?r*7V#ti3RqQ~^!?#t%QTYWHBOhOh$`pzu*!k|iM zmA1h+9a&i0ozPsJ?K*)ozc_HmGh>|#NmLYZj*1*Zp@>y{kw(PMJSHRwp0YT;(ku@z z($1=$_xmgyA-HYpyriGf&0GCde0LgKs9m^m5MJakN>G8pDys}4QYnZJ+Q=PH=z!<6 zA5TK!RtzICg$eP`QV^X63+FVB7QTu!=kBj?G_m->H*(y?ZuXR_^VrA@8mKe z>S~>B;$GK4vKx^J7ZHg}KF-zpAc}Y(t9qq`5uUqi{n{4wok^1+4ecfL+|@{ptB`M3 z`VwTuTO{;Nh|IFhkdJSY45j|1U7i=akgsrVrW|q zQBQZ?eF28Clqn2$3Z&DBQ#=zb?WI|#&ykJE$eP8^X2+-fsW?|e9lFrEKngQGtX)5Nvt?i<6&*(W)!j}{toGh zQE79)dG(tTyUyRd5Q0_`WYh%Rl@iX09nFhsJN2Y{{8-Wa zD#a>mFB#&eP&PZQ!g=x@=8GGx&rNJegu?n_LFPsxv(_qf1)g%gA;fqW?2(ILy?G); z@c3q{&-X*(<9QM++h3NZR7I!?#)nF7Vx~xLAdb2uIJD{ZrDUH+=0OhemyQ-ntHCON zqr9;(InakE+hIcF)C+qpF{FL*K9y^&_nPMm5%Bk#5n^*aOpiPiUFJRQ2gI{Eq;m;O z_h~;SnZ>rZoRwnd!&e8d%q@p)mDollpS#XX%$W8v;89rR0FcOBV%Nr3fVI*jopMXcV_Rjr zrkk4SMfOT()pWE)0tmt8#b{tKBzybe%)=>hi z81?|B(wum*eg3PMQ4yXZaptSfsD!LKaQ-E_AP}~IU|GZ1T@5sbY075RaO@*hev$D= z^V~C2(z?>CwgJvKwX%#z(L?;EKYIYs0R54O%s?{BDd9_K_l;;{es`>q$}(Skm#xt~ zYsmKEJ+S)}CeB834VET)jwg#?nQ{n1j0QO8GTB{CUCiO!f|sk4SY*&#+0R6LpMR3S|n!su4>vVYZOqZ zKt}(k+~1e=Xr&8y=XRW+!m&!8#9cob#lkcPB#wViqfyCq#4GRXndMcH_}TROE&ub&IUC|IIR33z0|)t;{1kq@qNKD@bvk7 z0ZrI4S)NGK92v$oS_a9eVNS45<{X0;UE<@bPw3`sR&Jgb9nA(S2Mg(gV>J6N$Vqs6 z=Xd-#BcS<2Bz5(CNjStgSW~_1d{CuKU{pzbQgZ$An1;T+dfrYt67mA9HZV(r{IJb9;D8;1n6hIoa^YMf7I_U+`^W4c^MskhXQsp5Qd zC$9qCGZyQM%?83PdJEfxTb?`%BXyMV!uuPiODcI8{SIWZm!Y{Mu_lB5AkXc2J@rmL zGm(S6KSs!yF6jv&vr3ep9%kfgzPD2RcOwwV{mWXzY0aWaO5Ze6Yh0ixe#3158X++YU>y<7J+Wl>;q#dr`ZFYD>#pL5oj#oXAl60nPrvp zn*Fw)t7TJ;0)X0qy}zBXi&TzPPH{@WV3a@3w95|cJ^hw(R!!B3|63zr9j*~%)UIjY zKt)j_e3!0Vq{E~YUy7}hS-vHq>8%^9^b8^hW$V$0AKhH$OX zn|D3@dFbkZSp11L*^>BBAP?uxlnJU|Ep}sGAREkSUedr^E$gw`8G1-ZQ^7E0^!Shj z>mF}eoY$G64FEeb=`1Sx?U|8iWeFCaT$*QacpQVm`52WB&4#7E97jem+SPF1iAN{z zBI80d)mvXNc*3ivkGM*C`M`>=zfw?5H*p(1t^fd;aV9!!Nmn$gl1!eLmEn?!jyddc zv`R=46OO^mfk>AcZa_0kU;TjU&%bHmpN<} z*(-~P%S(#A&|?fERZ+1sgv&ju+P$~?c?#d|o$Y5!MtH%B3FT>itmqb5xYAKPMor4p zEJ5{%s0e>>{VWcs)CUJ%B`dbcG6R#qSn!3A_1`CFf{NEezFAI+G?(IXXh|`!o zTw}DUFNfgt9h;~-bp(peD~=`WD(XYg%|2+;+jPRK>8|<<8v9|Sv$Jy7Gq`)w4+$?J zc3m?ePL&=an5tP?RkRRnv=q5d_SURZiBmsM;*T}W7v9F=(ysIre(IU?AHj=bm_6!g z94!kiMRjQL;6({zjbANbk5K&x`C{h8CRayJ?)pOK>j^m^nco6A_Fu@ncN-c9!BGFn z|2Jv7Ar--d@BX_k_><0i@gOYDKZQZ?_8tGrr0be34?_MgHeVRL(qGcxPm%F|sEPkH z0gs+49m{~SL8kmg%KVu!sBA{t}aW=#MA$i&fZV*r~{6i$I ZBC}3F>@H-}(4drqm>QoVSCia-_!pU_BLx5e diff --git a/effect/decoherence/screenshots/comparison.png b/effect/decoherence/screenshots/comparison.png deleted file mode 100644 index 3cfcd6203a59dca12321a104ff75f2d7756a80c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38841 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