Title: | Dithionite Scramblase Assay Analysis |
---|---|
Description: | The lipid scrambling activity of protein extracts and purified scramblases is often determined using a fluorescence-based assay involving many manual steps. flippant offers an integrated solution for the analysis and publication-grade graphical presentation of dithionite scramblase assays, as well as a platform for review, dissemination and extension of the strategies it employs. The package's name derives from a play on the fact that lipid scrambling is also sometimes referred to as 'flipping'. The package is originally published as Cotton, R.J., Ploier, B., Goren, M.A., Menon, A.K., and Graumann, J. (2017). "flippant–An R package for the automated analysis of fluorescence-based scramblase assays." BMC Bioinformatics 18, 146. <DOI:10.1186/s12859-017-1542-y>. |
Authors: | Johannes Graumann [cre, aut], Richard Cotton [aut] |
Maintainer: | Johannes Graumann <[email protected]> |
License: | GPL (>= 3) |
Version: | 1.5.5 |
Built: | 2024-12-06 06:52:37 UTC |
Source: | CRAN |
Extracts the data files used by the case study from the zip archive.
extract_case_study_data(exdir = ".", files = NULL)
extract_case_study_data(exdir = ".", files = NULL)
exdir |
A string giving the path to the extraction directory. Passed to
|
files |
A character vector of files to extract, or |
A character vector of the extracted file paths is invisibly returned.
Richard Cotton
extract_case_study_data(tempfile("flippant"))
extract_case_study_data(tempfile("flippant"))
A package for the analysis of data provided by dithionite scramblase assays.
Johannes Graumann
Parse spectra from files provided by a QuantaMaster fluorimeter
(Photon Technology International, Inc., Edison, New Jersey) using
Felix32 v1.20
parse_felix_32_output(x = NULL)
parse_felix_32_output(x = NULL)
x |
|
A helper function to parse_fluorimeter_output
.
Johannes Graumann
parse_fluorimeter_output
,
parse_felix_gx_output
,
parse_FluorS_Essence_3.8_output
,
parse_manual_output
Parse spectra from files provided by a QuantaMaster fluorimeter
(Photon Technology International, Inc., Edison, New Jersey) using
FelixGX v4.1
parse_felix_gx_output(x = NULL)
parse_felix_gx_output(x = NULL)
x |
|
A helper function to parse_fluorimeter_output
.
Johannes Graumann
parse_fluorimeter_output
,
parse_felix_32_output
,
parse_FluorS_Essence_3.8_output
,
parse_manual_output
Parse fluorimeter spectra
parse_fluorimeter_output( spec_file = NULL, timepoint_of_measurement = NULL, n_averaging = 10, determine_zero_time = TRUE, adjust = TRUE, file_type = c("auto", "FelixGXv4.1.0.3096", "Felix32v1.20", "FluorSEssencev3.8", "manual") )
parse_fluorimeter_output( spec_file = NULL, timepoint_of_measurement = NULL, n_averaging = 10, determine_zero_time = TRUE, adjust = TRUE, file_type = c("auto", "FelixGXv4.1.0.3096", "Felix32v1.20", "FluorSEssencev3.8", "manual") )
spec_file |
Path to a ‘*.txt’ file as a |
timepoint_of_measurement |
A |
n_averaging |
A |
determine_zero_time |
A |
adjust |
A |
file_type |
A string specifying whether or the file was created using Felix GX or Felix 32 or FluorS Essence v3.8 or is a "manual" tab delimited file. |
A function to read fluorimeter output directly. Intended as a helper function to scramblase activity determinations from dithionite assays.
The function is currently capable to deal with input derived from
QuantaMaster instruments (Photon Technology International, Inc., Edison,
New Jersey)running software versions FelixGX v4.1
(see parse_felix_gx_output
), Felix32 v1.20
(see
parse_felix_32_output
) as well as Horiba fluorimeters
(HORIBA Europe GmbH, Oberursel, Germany) using FluorS Essence v3.8
.
The format used in a given file is divined from the data structure and
appropriate internal parsing functions are called.
If requested the time point of dithionite addition to a sample is determined
using pracma-supplied methodology and the acquisition time reset
accordingly (0
henceforth corresponds to the time of addition).
A data frame with two columns:
Numeric. Number of seconds since the start of experiment.
Numeric. Intensity of fluorescence (relative scale, no official unit).
If determine_zero_time
and/or adjust
are set to TRUE
,
the return value will have an attribute ZeroTimePoint
corresponding to
the determined time point of dithionite addition (always 0
(zero)
where adjust == TRUE
).
For Felix GX, if the file contains the information, the return value will
also have an attribute WavelengthsInNanometres
, which contains the
excitation and emission wavelengths.
Johannes Graumann
scramblase_assay_input_validation
,
parse_felix_gx_output
,
parse_felix_32_output
,
parse_FluorS_Essence_3.8_output
,
parse_manual_output
library(magrittr) # Extract example data analysis_dir <- file.path(tempdir(), "flippant-case-study") fluor_file <- extract_case_study_data(analysis_dir, "wildtypeEx1_0.txt") # Parse an exemplary file parse_fluorimeter_output(fluor_file, timepoint_of_measurement = 350) %>% str()
library(magrittr) # Extract example data analysis_dir <- file.path(tempdir(), "flippant-case-study") fluor_file <- extract_case_study_data(analysis_dir, "wildtypeEx1_0.txt") # Parse an exemplary file parse_fluorimeter_output(fluor_file, timepoint_of_measurement = 350) %>% str()
Parse spectra from files provided by a Horiba fluorimeter
(HORIBA Europe GmbH, Oberursel, Germany) using FluorS Essence v3.8
parse_FluorS_Essence_3.8_output(x = NULL)
parse_FluorS_Essence_3.8_output(x = NULL)
x |
|
A helper function to parse_fluorimeter_output
.
Johannes Graumann
parse_fluorimeter_output
,
parse_felix_32_output
,
parse_felix_gx_output
,
parse_manual_output
Parse spectra from files provided in a manually assembled format.
parse_manual_output(x = NULL)
parse_manual_output(x = NULL)
x |
|
A helper function to parse_fluorimeter_output
.
The file in question is supposed to contain a tab-delimited table
with the columns Time (sec)
and Fluorescense Intensity
.
Johannes Graumann
parse_fluorimeter_output
,
parse_felix_gx_output
,
parse_felix_32_output
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_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 )
path |
|
input_directory |
if not |
overwrite |
|
x |
|
scale_to |
Defines the source of |
ppr_scale_factor |
|
force_through_origin |
|
generation_of_algorithm |
Either |
split_by_experiment |
A single |
r_bar |
A |
sigma_r_bar |
A |
time_min_sec |
A single |
time_max_sec |
A single |
adjust |
A single |
timepoint_of_measurement |
A |
n_averaging |
A |
annotate_traces |
A |
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 (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
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 scramblase
molecules is calculated using
where is the
Relative Fluorescence Reduction
and
is the
Relative Fluorescence Reduction
in an experiment without
addition of protein extract. Depending on the scale_to
parameter,
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
(if force_through_origin = TRUE
; default) or
(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
(if force_through_origin = TRUE
; default) or
(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 is equal to
PPR
. This
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 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.
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
.
Johannes Graumann
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)
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)