Functions for the presentation and evaluaton of dithionite scramblase assays
scramblase_assay_input_template(
path = "scramblase_assay_input_template.txt",
input_directory = NULL,
overwrite = FALSE
)scramblase_assay_plot(
x,
scale_to = c("model", "data"),
ppr_scale_factor = 0.65,
force_through_origin = TRUE,
generation_of_algorithm = c(2, 1),
split_by_experiment = TRUE,
r_bar = 88,
sigma_r_bar = 28
)
scramblase_assay_stats(
x,
scale_to = c("model", "data"),
ppr_scale_factor = 0.65,
force_through_origin = TRUE,
generation_of_algorithm = c(2, 1),
split_by_experiment = TRUE,
r_bar = 88,
sigma_r_bar = 28
)
scramblase_assay_traces(
x,
ppr_scale_factor = 0.65,
time_min_sec = NA_real_,
time_max_sec = NA_real_,
adjust = TRUE,
timepoint_of_measurement = 400,
n_averaging = 10,
annotate_traces = FALSE
)
scramblase_assay_traces
and scramblase_assay_plot
return
ggplot
objects representing the raw fluorescence traces and a
complete PPR plot, respectively. scramblase_assay_input_template
generates a tab-delimited ASCII
file in the file system and invisibly
returns the path name. scramblase_assay_stats
assembles (and prints)
assay statistics as a data.frame
.
character
object giving the path of an empty
template for a spreadsheet that can provide x
.
if not NULL
, character
object
giving the path to a directory where spectrometer output resides for the
prepopulation of the template spreadsheet.
logical
object allowing to overwrite existing
template paths.
data.frame
or path to a tab delimited file
representing it (see "Details").
Defines the source of ymax
, defaulting to
model
. See "Details".
numeric
object providing a scale factor
to adjust internally calculated Protein per Phospholipid (mg/mmol)
ratios (PPR
; see "Details").
logical
indicating whether to force
the fitted curve(s) to penetrate the origin (defaulting to TRUE
). See
"Details".
Either 2
or 1
(numeric
; defaulting to 2
). See "Details".
A single logical
, indicating whether or
not calculations and plots will treat experimental series from different
experiments separately (TRUE
, default) or whether data from all
experiments included is used for a single calculation/plot per experimental
series (FALSE
). While the former emphasizes reproducibility, the
latter likely produces a more reliable fit.
A numeric
, representing the average radius of the
liposomes used in the assay. Only used in generatio_of_algorithm = 2
and defaulting to 88
(see Ploier et al. 2016 for details).
A numeric
, representing the standard
deviationaverage of the radius distribution of the liposomes used in the
assay. Only used in generatio_of_algorithm = 2
and defaulting to
28
(see Ploier et al. 2016 for details).
A single numeric
. If given,
scramblase_assay_traces
produces a time/x axis trimmed to
this value (in seconds).
A single numeric
. If given,
scramblase_assay_traces
produces a time/x axis trimmed to
this value (in seconds).
A single logical
, indicating whether (default) or
not spectral traces to be plotted are algorithmically aligned at the time
point of dithionite addition.
A numeric
indicating the time
(in sec) at which fluorescence extrema are calculated (DEPENDENT ON
adjust
!).
A numeric
indicating the number of
data points used for extrema calculations.
A logical
idicating whether fluorescence
traces should be annotated.
Johannes Graumann
The data.frame
accepted by the majority of the
functions a an R
object or path to a corresponding file (x
)
must have the following mandatory columns:
Path
:Paths to existing and readable ASCII
output files
of a fluorimeter. See parse_fluorimeter_output
for details and
supported formats.
Protein Reconstituted (mg)
:Self-explanatory. In the case of
scramblase_assay_traces
ONLY this may be abused by
taking character
values rather than the usually required
numeric
s. Handy when e.g. plotting traces for "Liposomes"
and "Proteoliposomes", rather than defined PPRs.
Further (facultative) columns are:
Fluorescence Assay Vol. w/o DT (ul)
:Volume of the
fluorescence assay prior to addition of ditihionite (defaulting to
2000
).
Fluorescence Assay Vol. with DT (ul)
:Volume of the
fluorescence assay after the addition ditihionite (defaulting to
2040
).
Lipid in Reconstitution (mmol)
:Self-explanatory. For the
standard phospholipid experiment defaulting to 0.0045
(1 ml of a
4.5 mM solution).
Timepoint of Measurement (s)
:The time to determine terminal
fluorescence, calculated from the point when dithionite is added, in
seconds, defaulting to 400
).
Experiment
:Identifier for any given experiment. Used for
facet_wrap
during generation of ggplot
output.
All data with one Experiment
identifier ends up on one plot/facet.
Experimental Series
:Identifier for a given series/graph (e.g.
Extract
and Depleted Extract
). Used by color
during
generation of ggplot
output to differentiate lines in the
same plot/facet.
Based on Goren et al. (2014) and Ploier et al. (2016) data is processed as
follows (the majority of the processing is split off into the internal
function scramblase_assay_calculations
):
Input is format checked and defaults are injected for facultative
parameters/columns as appropriate (see input data.frame
format above). The internal function
scramblase_assay_input_validation
supplies this
functionality.
Fluorescence spectra are parsed using
parse_fluorimeter_output
. This includes automated
determination of when dithionite was added to the sample using
pracma-supplied methodology and resetting the acquisition time
accordingly (0
henceforth corresponds to the time of addition).
Pre-dithionite-addition Baseline Fluorescence
is determined for
each spectrum by averaging (median
) over the 10
values preceding dithionite addition.
Post-dithinonite-addition Minimum Fluorescence
is determined
for each spectrum by averaging (median
) over the last ten
datapoints \(\leq 400\,\mbox{s}\) (or
Timepoint of Measurement (s)
, see above).
The Minimum Fluorescence
is volume-corrected based on
Reaction Volume w/o DT (ul)
and Reaction Volume with DT (ul)
(see above).
For each spectrum/datapoint a measured Fluorescence Reduction
is calculated as
$$1 - \left(\frac{\mbox{\small Minimum Fluorescence}}{\mbox{\small Baseline Fluorescence}}\right)$$
A Relative Fluorescence Reduction
is calculated in comparison
to the liposomes-only/no-protein control).
A Protein per Phospholipid (mg/mmol)
ratio (PPR
) is
calculated. If ppr_scale_factor
is not NULL
, the value is
scaled (divided) by that value to account for liposomes that remain
inaccessible to reconstitution with scramblase molecules.
Depending on split_by_experiment
, data are split
for parallel treatment using either Experimental Series
(split_by_experiment = TRUE
) or a combined
Experimental Series
/Experiment
(split_by_experiment = FALSE
) identifier (see above).
A probability for a liposome holding \(\geq 1\) scramblase
molecules is calculated using
$$\frac{y-y_0}{y_{\mbox{\scriptsize max}}-y_0}$$
where \(y\) is the Relative Fluorescence Reduction
and \(y_0\)
is the Relative Fluorescence Reduction
in an experiment without
addition of protein extract. Depending on the scale_to
parameter,
\(y_{\mbox{\scriptsize max}}\) is either the maximal Relative Fluorescence Reduction
in the series (scale_to = "data"
) or derived from a
mono-exponential fit to the data (scale_to = "model"
). The latter
(default) is a precaution for the case where the protein/phospholipid
titration did not reach the plateau of the saturation curve.
A monoexponential curve is fitted using nlsLM
. If generation_of_algorithm
is 1
, the underlying formula is
derived from Goren et al. (2014) and data is fitted to either
$$p(\geq 1)=b\cdot(1-e^{-\frac{\mbox{\tiny PPR}}{a}})$$
(if force_through_origin = TRUE
; default) or
$$p(\geq 1)=b-c\cdot e^{-\frac{\mbox{\tiny PPR}}{a}}$$
(if force_through_origin = FALSE
). The latter implies more degrees
of freedom and occasionaly results in better fits to experimental data.
Mechanistic implication, however, are unclear. If generation_of_algorithm
is 2
(default), the more
elaborate model put forth in Ploier et al. (2016) is employed, using
either
$$p(\geq 1)=b\cdot(\frac{1}{\sqrt{1+\sigma^2\cdot a \cdot x}})\cdot exp(\frac{-\bar{r}^2\cdot a \cdot x}{1+\sigma^2\cdot a\cdot x})$$
(if force_through_origin = TRUE
; default) or
$$p(\geq 1)=b-c\cdot(\frac{1}{\sqrt{1+\sigma^2\cdot a \cdot x}})\cdot exp(\frac{-\bar{r}^2\cdot a \cdot x}{1+\sigma^2\cdot a\cdot x})$$
(if force_through_origin = FALSE
).
Data split
apart above are recombined and a
ggplot
object is assembled with the following layers:
Lines (geom_line
) representing the monoexponential
fit(s). color
is used to differentiate
Experimental Series
.
If generation_of_algorithm
is 1
, segments
(geom_segment
) representing the PPR
at which the fit constant \(a\) is equal to PPR
. This
\(\tau\) value has the implication that at this PPR
all
vesicles on average have one scramblase and 63% have one or more
(i.e. are active). color
is used to differentiate
Experimental Series
. Where generation_of_algorithm
is
2
, interpretation of \(a\) is less obvious and this layer is
thus ommited in the plot.
Points (geom_point
) representing the corresponding
datapoints. color
is used to differentiate
Experimental Series
.
Plots are finally facet_wrap
ed by Experiment
(if split_by_experiment = TRUE
) and labels adjusted
cosmetically.
Menon, I., Huber, T., Sanyal, S., Banerjee, S., Barre, P., Canis, S., Warren, J.D., Hwa, J., Sakmar, T.P., and Menon, A.K. (2011) <DOI:10.1016/j.cub.2010.12.031>
Goren, M.A., Morizumi, T., Menon, I., Joseph, J.S., Dittman, J.S., Cherezov, V., Stevens, R.C., Ernst, O.P., and Menon, A.K. (2014) <DOI:10.1038/ncomms6115>
Ploier, B., Caro, L.N., Morizumi, T., Pandey, K., Pearring, J.N., Goren, M.A., Finnemann, S.C., Graumann, J., Arshavsky, V.Y., Dittman, J.S., Ernst, O.P., Menon, A.K. (2016). <DOI:10.1038/ncomms12832>
parse_fluorimeter_output
nlsLM
library(magrittr)
library(ggplot2)
# Extract example data
analysis_dir <- file.path(tempdir(), "flippant-case-study")
extract_case_study_data(analysis_dir)
template_file <- file.path(analysis_dir, "inputTable.txt")
# Plot the spectral traces
scramblase_assay_traces(
template_file,
time_max_sec = 350,
timepoint_of_measurement = 350)
# Plot the PPR plot(s) faceting by experiment
scramblase_assay_plot(template_file)
# Generate tabular results
scramblase_assay_stats(template_file)
# Plot the PPR plot(s) forgoing faceting by experiment
scramblase_assay_plot(template_file, split_by_experiment = FALSE)
# Generate tabular results
scramblase_assay_stats(template_file, split_by_experiment = FALSE)
Run the code above in your browser using DataLab