tidyqpcr
tidyqpcr: Quantitative PCR analysis in the tidyverse. - Published in JOSS (2022)
Science Score: 98.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 1 DOI reference(s) in JOSS metadata -
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Keywords
Scientific Fields
Repository
quantitative PCR analysis in the tidyverse
Basic Info
- Host: GitHub
- Owner: ropensci
- License: other
- Language: R
- Default Branch: main
- Homepage: https://docs.ropensci.org/tidyqpcr/
- Size: 17.4 MB
Statistics
- Stars: 53
- Watchers: 5
- Forks: 18
- Open Issues: 27
- Releases: 7
Topics
Metadata Files
README.md
tidyqpcr - Quantitative PCR analysis in the tidyverse.
Empowering scientists to conduct reproducible, flexible, and MIQE best-practice compliant quantitative PCR analysis.
Contents
Motivation
Quantitative Polymerase Chain Reaction (qPCR) is a highly adaptable experimental technique used across biology and medicine to measure the amounts of nucleic acids (DNA or RNA). tidyqpcr is a software package for qPCR data analysis that builds on the tidyverse collection of data science tools in the R programming language.
Empowering
tidyqpcr combines a free, open-source qPCR analysis R package with online teaching materials.
We want our users to be able to know and understand what happens at every step of their analysis. Users are able to know what occurs at each step as all tidyqpcr tools are open source and follow the FAIR principles - Findable, Accessible, Interoperable, and Reusable. Users should also find each step understandable as we aim to produce educational resources as extensions of data carpentry workshops, such as Data Analysis and Visualization in R for Ecologists, accessible to beginner programmers.
Reproducible
tidyqpcr scripts produce paper-ready figures straight from raw data with identical results across computers.
We want to promote reproducible research so collaborators, reviewers or students can easily confirm and extend results and conclusions. tidyqpcr analysis will repeat exactly on different computers, enabling scientists to share raw data and analysis scripts rather than just processed figures. An R or R markdown script using tidyqpcr to analyse a set of qPCR data could be directly uploaded to a repository such as figshare, as encouraged by many journal publishers.
Flexible
tidyqpcr follows the 'tidy' data paradigm to ensure scalability and adaptability.
We want to create a tool that is flexible enough to analyse high or low throughput experimental data whilst integrating easily into other data analyses. tidyqpcr uses powerful generic data science tools from the tidyverse R package, lightly overlaid with qPCR-specific scripts. As far as possible, every object in tidyqpcr is stored as a generic tibble / data frame. Manipulating and plotting qPCR data without creating bespoke data structures allows tidyqpcr scripts to be easily integrated and scaled according to the needs of your experiments.
Best-practice compliant
tidyqpcr encourages standardised, reliable experimental design by following the Minimum Information for Publication of Quantitative Real-Time PCR Experiments (MIQE) best practices.
We want to make it easier for scientists to produce reliable and interpretable results. The MIQE best practices are a framework to facilitate the full disclosure of all reagents, sequences, and analysis methods necessary to enable other investigators to reproduce results. The final version of tidyqpcr will, by default, request the relevant experimental conditions and assay characteristics, as described in the MIQE guidelines, to allow reviewers/readers to rigorously assess the validity of a result. See "Future Priorities" below to get updates on tidyqpcr's MIQE compliant features.
Getting started
Installing tidyqpcr
First install R.
For Windows users
Next, you need a working installation of Rtools.
Jeffrey Leek made slides on installation and testing of Rtools.
Install via devtools (for all R users)
Install the devtools R package, see devtools installation instructions.
``` library(devtools) devtools::installgithub("ropensci/tidyqpcr", buildvignettes = TRUE)
Alternatively, install without building the vignettes
(Not recommended as vignettes contain the tutorials on using tidyqpcr)
devtools::install_github("ropensci/tidyqpcr") ```
Note older versions of the remotes package automatically convert warnings to errors during installation. Please update your remotes package to >2.3.0 in order to remove this default.
Then load tidyqpcr as a standard package:
library(tidyqpcr)
Note tidyqpcr automatically imports and loads several external packages for basic functionality, including; tidy, dplyr and ggplot2. This allows tidyqpcr to be used immediately but may cause NAMESPACE clashes if the user already has many other package libraries loaded. Restarting the R session and loading tidyqpcr separately may solve such issues.
Using tidyqpcr
The best place to start is by viewing the articles on the tidyqpcr website. Here you will find the vignettes, which offer tutorials and example data analyses including figures. Currently there are 4 vignettes:
- IntroDesignPlatesetup - Introduction to designing an experiment and setting up a plate plan in tidyqpcr.
- DeltaCq96wellExample - Example analysis of 96-well RT-qPCR data including relative quantification with delta Cq, from a real experiment.
- MultifactorialExample - Example design and analysis of a (real) multifactorial RT-qPCR experiment.
- PrimerCalibration - Example design and analysis of calibrating qPCR primer sets from a (real) experimental test
To find these from your R session, enter browseVignettes(package="tidyqpcr").
Individual R functions are also documented, use R's standard help system after loading the package, e.g. ?create_blank_plate. To see a list of all the functions and links to their help pages use help(package="tidyqpcr").
A basic use case for designing a 12 well plate is given below, see IntroDesignPlatesetup for more details.
``` rowkey4 <- tibble( wellrow = LETTERS[1:4], targetid = c("ACT1", "BFG2", "CDC19", "DED1") )
colkey3 <- tibble( wellcol = 1:3, sampleid = c("rep1", "rep2", "rep3"), prep_type = "+RT" )
createblankplate(wellrow = LETTERS[1:4], wellcol = 1:3)
plateplan12 <- labelplaterowcol( plate = createblankplate(wellrow = LETTERS[1:4], well_col = 1:3), rowkey = rowkey4, colkey = colkey3 )
displayplateqpcr(plate_plan12) ```
Status
As of June 2022, this software is fully useable, and under active development. It is particularly good at designing qPCR experiments in microwell plates (96-well and 384-well), and at relative quantification by the delta Cq method.
Edward Wallace wrote basic functions and documentation needed to do qPCR analysis in the Wallace lab, then started building them into an R package. Sam Haynes is actively developing, initially as part of the eLife Open Innovation Leaders programme 2020.
If there is a feature that you need for your work, please ask us!
News - see NEWS.md.
Features
tidyqpcr can be used to analyse qPCR data from any nucleic acid source - DNA for qPCR or ChIP-qPCR, RNA for RT-qPCR.
Currently tidyqpcr has functions that support relative quantification by the delta Cq method, but not yet absolute quantification.
Current features
- every object is a tibble / data frame, no special data classes to learn
- lay out and display 96/384-well plates for easy experimental setup (
label_plate_rowcol,create_blank_plate, ...). - consistently describe samples and target amplicons with reserved variable names (
sample_id,target_id). - flexibly assign metadata to samples for visualisation with ggplot2 (see vignettes).
- read in quantification cycle (Cq) and raw data from Roche LightCycler machines with single-channel fluorescence (
read_lightcycler_1colour_cq,read_lightcycler_1colour_raw). - calibration of primer sets including estimating efficiencies and visualization of curves (
calculate_efficiency, and see vignettes) - visualization of amplification and melt curves (
calculate_drdt_plate, and see vignettes) - delta Cq: normalization/ relative quantification of Cq data to one or more reference targets by delta count method (
calculate_normcq,calculate_deltacq_bysampleid) - delta delta Cq: normalization of delta Cq data across multiple samples (
calculate_deltadeltacq_bytargetid)
Future priorities
- including primer efficiencies in quantification
- an open-source and tested Cq calculation function, from amplification curves
- multi-colour (hydrolysis probe) detection
- extend to 1536-well plates
- metadata handling compatible with RDML format
- files for automatic plate loading with Opentrons and Labcyte Echo liquid handlers.
Comparison of qPCR R packages with respect to the MIQE guidelines
Table of package features corresponding to the essential information on qPCR validation and data analysis, that are outlined by the MIQE guidelines for publication of qPCR results.
| MIQE Guidelines | tidyqpcr | HTqPCR | NormqPCR | qpcR | pcr | --- | --- | --- | --- | --- | --- Version | 0.5.0 | 1.48.0 | 1.40.0 | 1.4.1 | 1.2.2 For SYBR Green I, Cq of the NTC | Yes + Docs | Yes + Docs | Yes + Docs | Yes | Yes Calibration curves with slope and y intercept | Slope | No | No | Yes + Docs | Yes + Docs PCR efficiency calculated from slope | Yes + Doc | No | Yes + Doc | Yes + Doc | Yes r2 of calibration curve | Yes + Doc | No | No | Yes | Yes Linear dynamic range ‡ | No | No | No | No | No Cq variation at LOD ‡ | No | No | No | No | No Evidence for LOD ‡ | No | No | No | No | No If multiplex, efficiency and LOD of each assay ‡ | No | No | No | No | No Method of Cq determination | N/A | N/A | Sigmoidal model selection | Sigmoidal model selection | N/A Outlier identification and disposition | No | Yes | Yes | Yes | No Results for NTCs | Yes + Doc | Yes + Docs | Yes + Docs | Yes | Yes Justification of number and choice of reference genes | User defined (vignettes encourage 3) | User defined (vignettes encourage 2) | Automatic Selection (vignettes encourage 2) | User defined | One Description of normalization method | Relative | Relative | Relative | Relative or absolute | Relative Number and stage (reverse transcription or qPCR) of technical replicates | User defined (vignettes encourage 3) | User defined (vignettes encourage 3) | User defined (vignettes encourage 2) | User defined | User defined (vignettes encourage 6) Repeatability | No† | Yes + Docs | Yes + Docs | Yes + Docs | No Statistical methods for results significance | No† | Yes + Docs | No | Yes + Docs | Yes
Note: - Yes means the package includes the functionality to complete this analysis. - Yes + Docs means this step is explicitly shown in either the function documentation or a vignette. - No† means that the package lacks explicit functionality, but generic R capabilities for statistical testing can be applied to the data. - ‡ Linear dynamic range and limit of detection (LOD) calculations would be enabled by these packages from additional short scripted analyses from a well-designed experiment, but the functionality is not specifically documented.
Contribute
We would be delighted to work with you to answer questions, add features, and fix problems. Please file an issue or email Edward dot Wallace at his University email address, (ed.ac.uk).
Code of conduct
This package is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.
How to contribute code: style, checking, development cycle
If you want to fix bugs or add features yourself, that's great. tidyqpcr development aims to follow best practices which we have outlined in the CONTRIBUTING.md file in the .github folder.
Thank you
Many thanks to everyone who has helped with tidyqpcr
Users and interviewees: Jamie Auxillos, Rosey Bayne, Liz Hughes, Rachael Murray, Elliott Chapman, Laura Tuck, Amy Newell, David Barrass, Christopher Katanski, Magnus Gwynne and Stuart McKeller. Reviewers: @seaaan, @kelshmo and @jooolia
Owner
- Name: rOpenSci
- Login: ropensci
- Kind: organization
- Email: info@ropensci.org
- Location: Berkeley, CA
- Website: https://ropensci.org/
- Twitter: rOpenSci
- Repositories: 307
- Profile: https://github.com/ropensci
JOSS Publication
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: Wallace
given-names: Edward
- family-names: Haynes
given-names: Sam
title: "The tidyqpcr R Package: Quantitative PCR analysis in the tidyverse."
version: 0.3.0
date-released: 2021-10-07
license: Apache-2.0
repository-code: "https://github.com/ewallace/tidyqpcr"
CodeMeta (codemeta.json)
{
"@context": "https://doi.org/10.5063/schema/codemeta-2.0",
"@type": "SoftwareSourceCode",
"identifier": "tidyqpcr",
"description": "This package is for reproducible quantitative PCR (qPCR) analysis using packages from the tidyverse, notably dplyr and ggplot2. It normalizes (by ddCq), summarizes, and plots pre-calculated Cq data, and plots raw amplification and melt curves from Roche lightcycler machines. It does NOT (yet) calculate Cq data from amplification curves.",
"name": "tidyqpcr: Quantitative PCR Analysis with the Tidyverse",
"relatedLink": "https://docs.ropensci.org/tidyqpcr",
"codeRepository": "https://github.com/ropensci/tidyqpcr",
"issueTracker": "https://github.com/ropensci/tidyqpcr/issues",
"license": "Apache License 2",
"version": "1.0",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "R",
"url": "https://r-project.org"
},
"runtimePlatform": "R version 4.1.1 (2021-08-10)",
"author": [
{
"@type": "Person",
"givenName": "Edward",
"familyName": "Wallace",
"email": "Edward.Wallace@ed.ac.uk"
}
],
"contributor": [
{
"@type": "Person",
"givenName": "Sam",
"familyName": "Haynes",
"email": "samuel.haynes10@gmail.com"
}
],
"maintainer": [
{
"@type": "Person",
"givenName": "Edward",
"familyName": "Wallace",
"email": "Edward.Wallace@ed.ac.uk"
}
],
"softwareSuggestions": [
{
"@type": "SoftwareApplication",
"identifier": "knitr",
"name": "knitr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=knitr"
},
{
"@type": "SoftwareApplication",
"identifier": "rmarkdown",
"name": "rmarkdown",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=rmarkdown"
},
{
"@type": "SoftwareApplication",
"identifier": "testthat",
"name": "testthat",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=testthat"
},
{
"@type": "SoftwareApplication",
"identifier": "covr",
"name": "covr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=covr"
}
],
"softwareRequirements": {
"1": {
"@type": "SoftwareApplication",
"identifier": "R",
"name": "R",
"version": ">= 3.1.0"
},
"2": {
"@type": "SoftwareApplication",
"identifier": "tibble",
"name": "tibble",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=tibble"
},
"3": {
"@type": "SoftwareApplication",
"identifier": "rlang",
"name": "rlang",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=rlang"
},
"4": {
"@type": "SoftwareApplication",
"identifier": "dplyr",
"name": "dplyr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=dplyr"
},
"5": {
"@type": "SoftwareApplication",
"identifier": "ggplot2",
"name": "ggplot2",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=ggplot2"
},
"6": {
"@type": "SoftwareApplication",
"identifier": "scales",
"name": "scales",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=scales"
},
"7": {
"@type": "SoftwareApplication",
"identifier": "readr",
"name": "readr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=readr"
},
"8": {
"@type": "SoftwareApplication",
"identifier": "forcats",
"name": "forcats",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=forcats"
},
"9": {
"@type": "SoftwareApplication",
"identifier": "assertthat",
"name": "assertthat",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=assertthat"
},
"10": {
"@type": "SoftwareApplication",
"identifier": "tidyr",
"name": "tidyr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=tidyr"
},
"SystemRequirements": null
},
"fileSize": "5946.526KB",
"citation": [
{
"@type": "CreativeWork",
"datePublished": "2021",
"author": [
{
"@type": "Organization",
"name": "Edward Wallace"
},
{
"@type": "Organization",
"name": "Sam Haynes"
}
],
"name": "The tidyqpcr R Package: Quantitative PCR analysis in the tidyverse.",
"url": "https://github.com/ewallace/tidyqpcr"
}
],
"releaseNotes": "https://github.com/ropensci/tidyqpcr/blob/master/NEWS.md",
"readme": "https://github.com/ropensci/tidyqpcr/blob/main/README.md",
"contIntegration": [
"https://codecov.io/gh/ropensci/tidyqpcr/branch/main",
"https://github.com/ropensci/tidyqpcr/actions"
],
"developmentStatus": "https://www.repostatus.org/#active",
"keywords": [
"qpcr-analysis",
"tidyverse",
"r",
"rstats",
"r-package",
"miqe",
"qpcr"
]
}
GitHub Events
Total
- Watch event: 5
Last Year
- Watch event: 5
Committers
Last synced: 5 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Edward Wallace | e****e@g****m | 140 |
| DimmestP | d****p@g****m | 93 |
| Maëlle Salmon | m****n@y****e | 1 |
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 59
- Total pull requests: 41
- Average time to close issues: 6 months
- Average time to close pull requests: 19 days
- Total issue authors: 4
- Total pull request authors: 3
- Average comments per issue: 1.46
- Average comments per pull request: 0.76
- Merged pull requests: 38
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- ewallace (39)
- DimmestP (17)
- ramiromagno (2)
- mpadge (1)
Pull Request Authors
- ewallace (28)
- DimmestP (14)
- maelle (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- R >= 3.1.0 depends
- tibble * depends
- assertthat * imports
- dplyr * imports
- forcats * imports
- ggplot2 * imports
- readr * imports
- rlang * imports
- scales * imports
- tidyr * imports
- covr * suggests
- knitr * suggests
- rmarkdown * suggests
- testthat * suggests
- actions/checkout v2 composite
- actions/upload-artifact main composite
- r-lib/actions/check-r-package v2 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
- actions/checkout v2 composite
- actions/upload-artifact v1 composite
- openjournals/openjournals-draft-action master composite
- fair-software/howfairis-github-action 0.2.1 composite
- actions/checkout v2 composite
- r-lib/actions/setup-r v1 composite
- r-lib/actions/setup-r-dependencies v1 composite
