quscope.simulations
Lower-level classical simulation helpers (multislice propagation, WPOA, and shared quantum utility functions).
Multislice method for thick specimen CTEM simulations. Uses quantum algorithms (QFT/iQFT) for wave propagation between slices.
- class quscope.simulations.multislice.ThickCTEM(image_size=50.0, n_qubits=8, beam_energy=200000.0, kirkland_params_file='kirkland.json')[source]
Bases:
objectQuantum multislice CTEM simulation for thick specimens.
This class implements: - Multislice algorithm for thick specimens - QFT for propagation between slices - Support for arbitrary crystal structures - Dynamical scattering effects
- get_atoms_in_slice(atoms_3d, z_start, z_end)[source]
Get atoms within a z-range, with periodic boundary conditions
- calculate_slice_transmission(atoms_in_slice, slice_thickness)[source]
Calculate transmission function for a slice
- calculate_propagator(slice_thickness)[source]
Calculate Fresnel propagator.
Parameters:
- slice_thicknessfloat
Thickness of each slice in Angstroms.
Returns:
- propagatornp.ndarray
Fresnel propagator.
- simulate_multislice(atoms_3d, total_thickness, slice_thickness=2.0, defocus=0)[source]
Simulate multislice propagation through a specimen.
Parameters:
- atoms_3dlist
List of atom dictionaries with ‘position’ [x,y,z] and ‘Z’ keys.
- total_thicknessfloat
Total specimen thickness in Angstroms.
- slice_thicknessfloat
Thickness of each slice in Angstroms.
- defocusfloat
Objective lens defocus in Angstroms.
Returns:
Dictionary with simulation results.
- simulate_thickness_series(atoms_3d, thicknesses, slice_thickness=2.0, defocus=0)[source]
Simulate images at different specimen thicknesses.
Parameters:
- atoms_3dlist
List of atom dictionaries.
- thicknesseslist
List of thicknesses to simulate.
- slice_thicknessfloat
Thickness per slice in Angstroms.
- defocusfloat
Objective lens defocus.
Returns:
Dictionary with results for each thickness.
- plot_wave_magnitude(results, thicknesses=None)[source]
Plot magnitude of electron wave function at different thicknesses (Figure 7.2)
- quscope.simulations.multislice.create_gaas_structure(supercell_size=(6, 6, 20), a_gaas=5.65)[source]
Create GaAs crystal structure oriented for [110] projection
Parameters: - supercell_size: (nx, ny, nz) repetitions of unit cell - a_gaas: GaAs lattice constant in Angstroms
Returns: - List of atom dictionaries with ‘position’ and ‘Z’ keys - Dictionary with structural information
Quantum-Enhanced Weak Phase Object Simulations
This module implements a hybrid quantum-classical framework for simulating CTEM and STEM images of thin specimen based on weak phase object approximation. This leverages QFTs and inverse QFTs, replacing various FFTs and iFFTs to reduce computational overhead.
- class quscope.simulations.wpo.ThinCTEM(image_size=50.0, n_qubits=8, beam_energy=200000.0, kirkland_params_file='kirkland.json')[source]
Bases:
objectQuantum CTEM simulation for thin specimens using weak phase object approximation.
This class implements: - Weak phase object approximation for thin specimens - QFT replacing classical FFT - Support for abritrary atomic structures - For CTEM at the moment
- calculate_transmission_function(atom_positions, atom_z_values)[source]
Calculate transmission function for weak phase object.
Parameters:
- atom_positionslist
List of (x,y) positions in Angstroms.
- atom_z_valueslist
List of atomic numbers corresponding to positions
Returns:
- transmissionnp.ndarray
Complex transmission function.
- objective_lens_transfer_function(kx, ky, defocus, Cs, alpha_max=None)[source]
Apply objective lens transfer function in reciprocal space.
Parameters:
- kx, kyfloat
Spatial components in the x and y directions in space.
- defocusfloat
Defocus in Angstroms.
- Csfloat
Spherical aberration coefficient in Angstroms.
- alpha_maxfloat, optional
Objective aperture semi-angle in mrad.
Returns:
- Hnp.ndarray
Transfer function.
- simulate_image(atom_positions, atom_z_values, defocus=700, Cs=13000000.0, alpha_max=None)[source]
Simulate CTEM image using quantum algorithms.
Parameters:
- atom_positionslist
List of (x,y) positions in Angstroms.
- atom_z_valueslist
List of atomic numbers.
- defocusfloat
Defocus in Angstroms.
- Csfloat
Spherical aberration in Angstroms.
- alpha_maxfloat, optional
Objective aperture in mrad.
Returns:
- resultsDict
Dictionary containing: - ‘intensity’: Final image intensity. - ‘transmission’: Complex transmission function. - ‘psi’: Exit wave function. - ‘potential’: Projected potential.
- quscope.simulations.wpo.create_five_atoms_example()[source]
Create the classic 5-atom example from Kirkland Figure 5.11
Quantum Transform Utilities for TEM Simulations
This module contains all quantum circuit operations for implementing Quantum Fourier Transforms (QFT) and Inverse Quantum Fourier Transforms (iQFT).
- class quscope.simulations.quantum_utils.TEMQFT(n_qubits=8)[source]
Bases:
objectClass containing quantum transform operations for CTEM simulations.
- encode_to_quantum_state(data_1d)[source]
Encode classical 1D array into quantum state amplitudes.
Parameters:
- data_1dnp.ndarray
1D numpy array of length 2^n_qubits to encode.
Returns:
- circuitQuantumCircuit
Quantum circuit with encoded data.
- normfloat
Normalization factor.
- apply_qft(circuit, qubits)[source]
Apply Quantum Fourier Transform to specified qubits.
Parameters:
- circuitQuantumCircuit
Quantum circuit.
- qubitslist
List of qubit indices.
Returns:
- circuitQuantumCircuit
Circuit with QFT applied.
- apply_iqft(circuit, qubits)[source]
Apply Inverse Quantum Fourier Transform to specified qubits.
Parameters:
- circuitQuantumCircuit
Quantum circuit.
- qubitslist
List of qubit indices.
Returns:
- circuitQuantumCircuit
Circuit with iQFT applied.
- decode_quantum_state(circuit)[source]
Decode quantum state back to classical data.
Parameters:
- circuitQuantumCircuit
Quantum circuit to decode.
Returns:
- amplitudesnp.ndarray
Complex array of amplitudes.
- qft_1d(data_1d)[source]
Perform 1D QFT on classical data.
Parameters:
- data_1dnp.ndarray
1D complex array.
Returns:
- transformed_datanp.ndarray
QFT result with proper normalization.
- iqft_1d(data_1d)[source]
Perform 1D iQFT on classical data.
Parameters:
- data_1dnp.ndarray
1D complex array.
Returns:
- transformed_datanp.ndarray
iQFT result with proper normalization.