Redox potential#

Introduction#


Midpoint redox potentials for heme proteins, such as cytochrome c (cyt c), can be determined using a standard spectrophotometric procedure, called the “methods of mixtures”. Basically, cyt c is oxidized or reduced with ferri- or ferrocyanide and the absorbance at 550 nm at equilibrium measured as a function of different ratios of ferri- to ferrocyanide.

Redox reaction between ferro- and ferricytochrome c and ferri- and ferrocyanide

Comparing the absorbances at 550 nm to those of fully oxidized and reduced cyt c allows us to obtain the concentration ratio of both forms of cyt c.

How to use the absorbance measured to calculate the ratio of ferro- and ferricytochrome c

Because we measure the system at equilibrium, the redox potential of the ferricyanide / ferrocyanide halfreaction equals that of the ferrocyt c / ferricyt c half-reaction. The \([ferrocyanide]\)/\([ferricyanide]\) value that corresponds to when the concentrations of oxidized and reduced cyt c are equal can be determined graphically. This value can be used to calculate the midpoint redox potential of cyt c.

Calculating the midpoint redox potential of cytochrome c

See the article by Douglas B. Craig and Ellert R. Nichols (2006), available here, for more information.

Data#


Get the data needed for this exercise here.

The spreadsheet “RedoxPotential.xlsx” contains one sheet (see figure below) with absorbances at 550 nm (in AU) and concentrations of ferricyanide, ferrocyanide and sodium dithionite (in mM).

The data are from Table 1 in Craig & Nichols, 2006. There are 11 data points.

Redox potential assay data

Data analysis#


Exercise 57

Import the libraries needed. Use convenient naming.

Exercise 58

Read in the data containing AU550nm (AU) and \([Ferricyanide]\), \([Ferrocyanide]\), and \([Sodium dithionite]\) (mM) into a Python pandas DataFrame.

Exercise 59

Calculate \(log_{10}\)\(([Ferrocyanide]/[Ferricyanide])\).

Tip: use the numpy.log10 command to calculate \(log_{10}\).

Exercise 60

Calculate \(log_{10}\)\(([FerrocytC]/[FerricytC])\) using a function.

Exercise 61

Plot the data: log10([Ferrocyanide]/[Ferricyanide]) versus log10([FerrocytC]/[FerricytC]).

Inspect the data!

  • Do we discern a clear trend in our data?

    • Do the data show a positive (sloping upward), negative (sloping downward), or no (spread out) correlation?

    • Do we notice a linear or a non-linear relationship between x- and y-values?

  • Do we have outliers?

    • Where the values entered correctly?

    • Where there any experimental errors? E.g. a calculation error that we picked up afterwards when looking at our lab notebook?

    • Are the data points a mistake? E.g. a pipetting error?

In this example, we do not have plenty replicate data points at each value of x so we cannot use statistical tests, e.g. the Grubbs test (see here for more information and an online Grubbs test calculator), on each set of replicates to determine whether a data point is a significant outlier from the rest.

We often only measure a data point once or twice, like in this example. Useful tools in this case are:

  • studentized residuals, which look at the residuals calculated from the experimental data and model data. See here for more information.

  • robust techniques which use median, rather than mean, values. See here for more information.

  • Cook’s distance, which measures the influence of each data point (of note, an influential point is not always an outlier!), thereby determining how much predicted values would change if that point were deleted. See here for more information.

  • ROUT (Robust regression and OUTlier removal) for non-linear regression. See the article by Motulsky HJ and Brown RE (2006), available here, for more information.

Exercise 62

Define the line function to fit the data and fit the data. Report the fit parameters and standard errors on the fit parameters.

Exercise 63

Calculate the residuals.

Exercise 64

Produce a combined figure showing the residuals plot underneath the main plot with data and fitted curve. Make sure they are aligned and have the same X-axis so we can see which residual corresponds to which data point.

Inspect the quality of the fit!

  • Look at the graph of the experimental data and the fitted curve Do the experimental data and model match?

  • Look at the graph of the residuals. Are they around 0? Are they random or is there a trend? If the residuals display a systematic pattern, the model fits the data poorly.

  • Look at the fit parameters and the standard errors on the fit parameters. Are the fit parameters within (biological) reason? Are the standard errors on the fit parameters small? If a standard error on a fit parameter is bigger than the fit parameter, it is possible that there are not enough data points or that the model fits the data poorly.

  • Look at the goodness of fit statistics. For example, the value of R-square ranges from 0 (worst possible fit) to 1 (best possible fit). However, these fit statistics are not readily available as output of the SciPy curve_fit() function…

Exercise 65

Calculate the midpoint redox potential with

\[ E^{'0}_{m,Ferri/FerroCytochromeC} = 0.430 − 0.059 * log10(\frac{[Ferrocyanide]}{[Ferricyanide]}) \]

You can use the standard deviations from the fitted parameters to calculate its uncertainty. Use the error propagation tools.

Work with a function.