PumpProbeSpectrum#

Pump-probe spectra can be obtained as a projection of a 2D spectrum onto the probe frequency axis. The PumpProbeSpectrum and PumpProbeSpectrumContainer classes represent these projected spectra.

class quantarhei.spectroscopy.pumpprobe.PumpProbeSpectrum[source]#

Bases: DFunction

Class representing a pump-probe spectrum.

A one-dimensional spectrum obtained at a fixed waiting time t2 from a pump-probe experiment. Data and axis are set via set_data and set_axis after construction.

set_axis(axis: Any) None[source]#
set_data(data: Any) None[source]#
get_PumpProbeSpectrum() PumpProbeSpectrum[source]#

Returns self

This method is here to override the one inherented from TwoDSpectrum

set_t2(t2: float) None[source]#

Sets the t2 (waiting time) of the spectrum

get_t2() float[source]#

Returns the t2 (waiting time) of the spectrum

class quantarhei.spectroscopy.pumpprobe.PumpProbeSpectrumContainer(t2axis: Any = None)[source]#

Bases: TwoDSpectrumContainer

Container for a set of pump-probe spectra indexed by waiting time.

Parameters:

t2axis (TimeAxis or None, optional) – Waiting-time axis shared by all stored spectra. Default is None.

plot() None[source]#
set_spectrum(spec: Any, tag: Any = None) None[source]#

Stores spectrum with a tag (time, index, etc.)

Stores the spectrum according to present indexing scheme

Parameters:
  • spect (TwoDSpectrum) – Object holding the spectrum; when not tag is specified for a spectrum which as its t2 time set, the tag is set to t2 time.

  • tag ({int, string, ValuesAxis, TimeAxis, FrequencyAxis}) – Tag which will be used for retrieval of the spectrum from the container.

amax(spart: Any = None) Any[source]#

Returns maximum amplitude of the spectra in the container

amin() Any[source]#
plot2D(axis: Any = None, units: str = 'nm', zero_centered: bool = True, lines: Any = None) None[source]#
plot_slices(freqs: Any, expRes: Any = None, units: str = 'nm') ndarray[source]#
make_movie(filename: str, window: Any = None, stype: Any = None, spart: Any = None, cmap: Any = None, Npos_contours: int = 10, vmax: Any = None, vmin_ratio: float = 0.5, xlabel: Any = None, ylabel: Any = None, axis_label_font: Any = None, start: Any = None, end: Any = None, frate: int = 20, dpi: int = 100, show_states: Any = None, show_states_func: Any = None, label: Any = None, label_func: Any = None, text_loc: Any = None, progressbar: bool = False, use_t2: bool = False, title: str = '', comment: str = '', axis: Any = None, vmin: Any = None, **kwargs: Any) None[source]#

Creates a movie out of the spectra in the container

Parameters:

Npos_contours (int) – Nomber of positive value contours in the plot

class quantarhei.spectroscopy.pumpprobe.PumpProbeSpectrumCalculator(t2axis: Any, t3axis: Any, system: Any = None, dynamics: str = 'secular', relaxation_tensor: Any = None, rate_matrix: Any = None, effective_hamiltonian: Any = None, separate_relax_pwy: bool = True, population_propagator: Any = None, density_matrix_propagator: Any = None, density_matrix_trajectory: Any = None, population_time_axis: Any = None, include_nonsecular_remainder: bool = True, include_remainder: bool = True, dipole_normalization_tol: float = 1e-12)[source]#

Bases: object

Calculator for pump-probe spectra derived from 2D response pathways.

Parameters:
  • t2axis (TimeAxis) – Waiting-time axis over which spectra are calculated.

  • t3axis (TimeAxis) – Detection-time axis used to build the frequency axis.

  • system (Molecule or Aggregate, optional) – Quantum system for which spectra are calculated.

  • dynamics (str, optional) – Dynamics type, e.g. "secular". Default is "secular".

  • relaxation_tensor (optional) – Relaxation tensor to include population relaxation.

  • rate_matrix (optional) – Rate matrix alternative to a full relaxation tensor.

  • effective_hamiltonian (optional) – Effective Hamiltonian used in the relaxation basis.

  • separate_relax_pwy (bool, optional) – If True, pathways with relaxation steps are treated separately. Default is True.

property t2axis: Any#
property t3axis: Any#
property system: Any#
bootstrap(rwa: float = 0.0, pathways: Any = None, lab: Any = None, verbose: bool = False, adiabatic: Any = None) None[source]#

Sets up the environment for pump-probe calculation

set_pathways(pathways: Any) None[source]#
set_density_matrix_trajectory(density_matrix_trajectory: Any, timeaxis: Any = None) None[source]#

Set an externally calculated density-matrix trajectory.

set_population_propagator(population_propagator: Any, timeaxis: Any = None) None[source]#

Set an externally calculated one-exciton population propagator.

set_density_matrix_propagator(density_matrix_propagator: Any, timeaxis: Any = None) None[source]#

Set an externally calculated one-exciton density-matrix propagator.

set_dynamics(density_matrix_trajectory: Any = None, population_propagator: Any = None, density_matrix_propagator: Any = None, timeaxis: Any = None) None[source]#

Set exactly one external dynamics object for response-backend PP.

bath_reorg(cfm: Any, indx: Any) float[source]#
calculate_all_system_approx(sys: Any, rdmt: Any, lab: Any, show_progress: bool = False, approx: Any = None, spec: Any = None, gsb_mode: str = 'hole', orientational_averaging: str = 'legacy') Any[source]#

Calculates all 2D spectra for a system and reduced density matrix evolution. The approach assumes no diiference between pathways with jumps and without the jumps.

calculate_all_system_approx_response_backend(sys: Any, rdmt: Any = None, lab: Any = None, show_progress: bool = False, spec: Any = None, population_propagator: Any = None, density_matrix_propagator: Any = None, population_time_axis: Any = None, include_nonsecular_remainder: bool = True, include_remainder: bool = True, dipole_normalization_tol: float = 1e-12) Any[source]#

Calculate pump-probe spectra through the modern response backend.

This method is a pump-probe-like t1 = 0 calculation. The supplied dynamics can be a reduced-density-matrix trajectory, a one-exciton population propagator, or a one-exciton density-matrix propagator.

calculate(system: Any = None, lab: Any = None, density_matrix_trajectory: Any = None, population_propagator: Any = None, density_matrix_propagator: Any = None, population_time_axis: Any = None, method: str = 'response', show_progress: bool = False, spec: Any = None, include_nonsecular_remainder: bool | None = None, include_remainder: bool | None = None, dipole_normalization_tol: float | None = None, approx: Any = None, gsb_mode: str = 'hole', orientational_averaging: str = 'legacy') Any[source]#

Calculate pump-probe spectra with the selected backend.

Parameters:
  • system (Aggregate, optional) – System to calculate. If omitted, the calculator’s stored system is used.

  • lab (LabSetup, optional) – Laboratory setup. If omitted, the setup supplied to bootstrap is used.

  • density_matrix_trajectory – Optional external dynamics. If omitted, dynamics previously set by set_dynamics or one of the specialized setters are used.

  • population_propagator – Optional external dynamics. If omitted, dynamics previously set by set_dynamics or one of the specialized setters are used.

  • density_matrix_propagator – Optional external dynamics. If omitted, dynamics previously set by set_dynamics or one of the specialized setters are used.

  • method ({"response", "legacy"}) – "response" uses the modern nonlinear-response backend. "legacy" uses the old RDM pump-probe implementation.

calculate_all_system(sys: Any, eUt: Any, lab: Any, show_progress: bool = False) Any[source]#

Calculates all 2D spectra for a system and evolution superoperator

calculate_one_system(t2: float, sys: Any, eUt: Any, lab: Any, pways: Any = None) Any[source]#

Returns pump-probe spectrum at t2 for a system and evolution superoperator

calculate_next(t2: float) Any[source]#
calculate_one(tc: int, t2: float) Any[source]#

Calculate the 2D spectrum for all pathways

calculate_pathways(pathways: Any, tau: float) ndarray[source]#

Calculate the shape of a Liouville pathway

calculate_pathways_rdm(rdm0: Any, rdm: Any, tau: float, lab: Any, ptol: float = 1e-06, spec: Any = None, gsb_mode: str = 'hole', orientational_averaging: str = 'legacy') Any[source]#

Calculate the shape of a Liouville pathway so far implemented only for electronic aggregate.

calculate_pathways_rdm_novoderezhkin(rdm0: Any, rdm: Any, tau: float, lab: Any, ptol: float = 1e-06, spec: Any = None, gsb_mode: str = 'hole', orientational_averaging: str = 'legacy') Any[source]#

Calculate the shape of a Liouville pathway so far implemented only for electronic aggregate.

quantarhei.spectroscopy.pumpprobe.calculate_from_2D(twod: Any) PumpProbeSpectrum[source]#

Calculates pump-probe spectrum from 2D spectrum

Calculates pump-probe spectrum from 2D spectrum using projection theorem

Parameters:

twod (TwoDSpectrum) – 2D spectrum from which pump-probe will be calculated

class quantarhei.spectroscopy.pumpprobe.MockPumpProbeSpectrumCalculator(t1axis: Any, t2axis: Any, t3axis: Any, temp: Any = None)[source]#

Bases: MockTwoDResponseCalculator

Effective line-shape pump-probe spectrum calculator.

Uses Gaussian or Lorentzian lineshapes evaluated directly in the frequency domain to produce pump-probe spectra without computing the full time-domain response.

Parameters:
  • t1axis (TimeAxis) – Coherence-time axis (used by parent class; not directly needed for pump-probe).

  • t2axis (TimeAxis) – Waiting-time axis over which spectra are calculated.

  • t3axis (TimeAxis) – Detection-time axis used to build the frequency axis.

  • temp (float or None, optional) – Temperature in Kelvin. Default is None (temperature-independent lineshapes).

calculate_all_system(sys: Any, eUt: Any, lab: Any, selection: Any = None, show_progress: bool = False, dtol: float = 1e-12, H: Any = None, **kwargs: Any) Any[source]#

Calculate all pump-probe spectra for all t2 times in the t2axis.

Parameters:
  • sys (Aggregate) – Molecular aggregate system.

  • eUt (evolution superoperator) – Evolution superoperator evaluated at each t2 time.

  • lab (LabSetup) – Laboratory setup with polarization information.

  • selection (optional) – Pathway selection; not currently used.

  • show_progress (bool, optional) – If True, print progress messages. Default is False.

  • dtol (float, optional) – Tolerance for dipole moment contributions. Default is 1e-12.

  • H (optional) – Hamiltonian; not currently used.

  • **kwargs – Additional keyword arguments.

Returns:

PumpProbeSpectrumContainer – Container with all calculated pump-probe spectra.

calculate_one_system(t2: float, sys: Any, eUt: Any, lab: Any, selection: Any = None, pways: Any = None, dtol: float = 1e-12, H: Any = None, **kwargs: Any) Any[source]#

Calculate a single pump-probe spectrum at the specified t2 time.

Parameters:
  • t2 (float) – Waiting time at which to calculate the spectrum.

  • sys (Aggregate) – Molecular aggregate system.

  • eUt (evolution superoperator) – Evolution superoperator.

  • lab (LabSetup) – Laboratory setup with polarization information.

  • selection (optional) – Pathway selection; not currently used.

  • pways (optional) – Pathway storage; not currently used.

  • dtol (float, optional) – Tolerance for dipole moment contributions. Default is 1e-12.

  • H (optional) – Hamiltonian; not currently used.

  • **kwargs – Additional keyword arguments.

Returns:

PumpProbeSpectrum – Calculated pump-probe spectrum at t2.

quantarhei.spectroscopy.pumpprobe.printProgressBar(iteration: int, total: int, prefix: str = '', suffix: str = '', decimals: int = 1, length: int = 100, fill: str = '█') None[source]#

Call n a loop to create terminal progress bar

Parameters:
  • iteration (int (Required)) – Current iteration

  • total (int (Required)) – Total interactions

  • prefix (string (optional)) – Prefix string

  • suffix (string (optional)) – Suffix string

  • decimal (int (optional)) – positive number of decimals in percent complete

  • length (int (optional)) – Character length of bar

  • fill (str (optional)) – Fill bar character