Nuclear quantum effects slow down the energy transfer in biological light-harvesting complexes
Data files
May 15, 2025 version files 7.39 MB
-
README.md
4.56 KB
-
results.zip
7.38 MB
Abstract
We assess how quantum-mechanical effects associated with high-frequency chromophore vibrations influence excitation energy transfer in biological light-harvesting complexes. After defining a classical nuclear limit that is consistent with the quantum-classical equilibrium, we include nuclear quantum effects through a variational polaron transformation of the high-frequency vibrational modes. This approach is validated by comparison with fully quantum-mechanical benchmark calculations and applied to three prototypical light-harvesting complexes. For light-harvesting complex 2 of purple bacteria, the inter-ring transfer is 1.5 times slower in the quantum treatment than the classical. For the Fenna-Matthews-Olson complex, the transfer rate is the same in both cases, whereas for light-harvesting complex II of spinach, transfer is 1.7 times slower in the quantum treatment. The effect is most pronounced for systems with large excitonic energy gaps and strong vibronic coupling to high-frequency modes. In all cases, nuclear quantum effects are found to be unimportant for the directionality of energy transfer.
https://doi.org/10.5061/dryad.sj3tx96fn
Description of the data and file structure
Files and variables
File: results.zip
Description:
Files starting with “LH2”, “FMO” or “LHC2” contains the plotted data with time (in fs) as first column and populations (unitless) in the following columns.
Each file is named according to the pattern [system]-[population type or figure number]-[method].dat
- [system]:
- LH2: 24-site light-harvesting complex 2 in purple bacteria
- FMO: 7-site Fenna-Matthews-Olson complex
- LHC2: 14-site light-harvesting couplex II in spinach
- [population type or figure number]:
- B850: total population of sites 16-24
- sites: population of each site 1-24 in the columns following time
- Pa: total population of Chla sites
- fig2: population of each site 1-7 for the model used in Fig2
- figS1: population of each site 1-7 for the model used in FigS1
- [method]:
- all_classical: MASH with all modes classical
- VPT: MASH with the variational polaron transformation for the high frequencies
- without_high: MASH without high frequencies
- wigner: MASH with an initial Wigner distribution
- without_any_discrete: MASH without any discrete modes
Files starting with “SI” contain the equilibrium site populations plotted in figure S2. The first column is the mean population, and the second column is the standard error in the mean. The row number corresponds to the site index. Here, the [method] refers to
- bare: equilibrium of the uncoupled system
- classical: single bead equilibrium
- quantum: 8-bead equilibrium
Code/software (Zenodo - Software Related work)
Overview
This directory contains
- A main Python script
mash.py
- A script
model.py
with functions for setting up the model, handling input/output, sampling initial variables, and running a debug trajectory - A Fortran source code in
src/
that runs the trajectories
These allow you to run MASH for various potentials, initial conditions and observables.
How to compile
Prerequisites:
- gfortran (it also compiles and runs with ifort, but you will need to manually update the makefile)
- lapack
- numpy.f2py for Python3
Compile by typing make [option]
and one of the following options
clean
Remove compiled files and restart from clean directoryfast
Produces fast parallelized codedebug
Uses plenty of warning flags and should tell at which line the code breaks.
Also check that you have the required Python packages installed.
One way to ensure this is to (preferably in a virtual environment) run pip install -r requirements.txt
.
How to run
mash.py +[args].in
where [args].in
is an argument file with one line per argument (allowing commented lines). See examples
for example input files.
There are plenty of available option flags and you can add more to suit your system.
Hints:
- Make sure
mash.py
is executable, otherwisechmod u+x mash.py
- Create a symbolic link to
mash.py
in some place in your PATH, so that you can call it from anywhere. - You may need to add the directory to your PYTHONPATH.
Input
Run mash.py -h
to see the available options. In general you should know about the following:
model
String specifying your model system.- Model-specific parameters like
beta
,Delta
etc. init
Integer that specifies initial state (index starts at 0)dt
Timestepnt
Number of timestepsntraj
Number of trajectoriesnucsamp
Nuclear sampling option (see “sampling” in model.py)elsamp
Electronic sampling option (see “sampling” in model.py)obstyp
Specify what kind of observables you want to measure (e.g.pop
for populations)
Output
You should see a file pop.out
which contains time in the first column and then the state populations in the following columns.
Examples
The examples
folder contains lh2.in
, fmo8.in
, and lhc2.in
with input parameters appropriate for the corresponding models in the associated paper. (Note: these are example inputs only – the actual convergence parameters are indicated in the paper.)
Access information
Other publicly accessible locations of the data:
- n/a
Data was derived from the following sources:
- The files LH2-B850-fully_quantum.dat and LH2-B850-no_backaction (included for comparison) were obtained by screen-grabbing from Kundu, Dani and Makri, Sci. Adv., 8, eadd0023 (2022).