GitHub - sofpn/rprimer (original) (raw)

rprimer

R-CMD-check

rprimer is an R package that designs degenerate oligos and PCR assays from a multiple DNA sequence alignment of target sequences of interest. The package is specifically designed for sequence variable viruses.

Installation

To install rprimer fromBioconductor, start R (version 4.2) and enter:

if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install("rprimer")

Attach the package by calling:

Overview

The package contains five main functions:

Shiny application

The package can be run through a Shiny application (a graphical user interface). To start the application, type runRprimerApp() from within R upon installing and attaching the package.

The application can also be found online,here.

Workflow

Import alignment

The first step is to import an alignment with target sequences of interest. This is done by using readDNAMultipleAlignment().

The file “example_alignment.txt” contains an alignment of 50 hepatitis E virus sequences.

infile <- system.file("extdata", "example_alignment.txt", package = "rprimer")

myAlignment <- readDNAMultipleAlignment(infile, format = "fasta")

Step 1: consensusProfile

consensusProfile() takes a DNAMultipleAlignment as input and returns all the information needed for the subsequent design process.

myConsensusProfile <- consensusProfile(myAlignment, ambiguityThreshold = 0.05)

Results (row 100-106):

position a c g t other gaps majority identity iupac coverage
100 0.00 1.00 0.00 0.00 0.00 0 C 1.00 C 1.00
101 1.00 0.00 0.00 0.00 0.00 0 A 1.00 A 1.00
102 0.16 0.00 0.84 0.00 0.00 0 G 0.84 R 1.00
103 0.00 0.00 1.00 0.00 0.00 0 G 1.00 G 1.00
104 0.00 0.98 0.00 0.00 0.02 0 C 1.00 C 1.00
105 0.20 0.00 0.02 0.78 0.00 0 T 0.78 W 0.98
106 0.00 0.00 1.00 0.00 0.00 0 G 1.00 G 1.00

The results can be visualized with plotData():

plotData(myConsensusProfile)

Step 2: designOligos

The next step is to design oligos. You can either use the default settings as below, or adjust them as preferred (see the package vignette or ?designOligos for more information). The default settings allow a maximum degeneracy of four, which means that only the most conserved regions of the genome will be considered as oligo binding sites.

myOligos <- designOligos(myConsensusProfile)

Results (first six rows):

type fwd rev start end length iupacSequence iupacSequenceRc identity coverage degeneracy gcContentMean gcContentRange tmMean tmRange deltaGMean deltaGRange sequence sequenceRc gcContent tm deltaG method score roiStart roiEnd
probe TRUE TRUE 124 143 20 TCYGCCYTGGCGAATGCTGT ACAGCATTCGCCARGGCRGA 0.95 0.99 4 0.60 0.10 63.17 4.33 -21.61 2.08 TCCGCCCT…. ACAGCATT…. 0.65, 0….. 65.33623…. -22.6538…. ambiguous 2 1 7597
probe FALSE TRUE 127 146 20 GCCYTGGCGAATGCTGTGGT ACCACAGCATTCGCCARGGC 0.98 0.99 2 0.62 0.05 63.18 1.84 -21.73 0.83 GCCCTGGC…. ACCACAGC…. 0.65, 0.6 64.10586…. -22.1475…. ambiguous 3 1 7597
primer TRUE FALSE 128 146 19 CCYTGGCGAATGCTGTGGT ACCACAGCATTCGCCARGG 0.97 0.99 2 0.61 0.05 61.48 1.95 -19.84 0.83 CCCTGGCG…. ACCACAGC…. 0.631578…. 62.45335…. -20.2570…. ambiguous 3 1 7597
primer TRUE FALSE 128 147 20 CCYTGGCGAATGCTGTGGTR YACCACAGCATTCGCCARGG 0.96 0.99 4 0.60 0.10 61.61 3.37 -20.55 1.76 CCCTGGCG…. TACCACAG…. 0.6, 0.5…. 61.77166…. -20.5089…. ambiguous 2 1 7597
probe TRUE TRUE 128 146 19 CCYTGGCGAATGCTGTGGT ACCACAGCATTCGCCARGG 0.97 0.99 2 0.61 0.05 60.45 1.94 -19.84 0.83 CCCTGGCG…. ACCACAGC…. 0.631578…. 61.41686…. -20.2570…. ambiguous 3 1 7597
probe TRUE TRUE 128 147 20 CCYTGGCGAATGCTGTGGTR YACCACAGCATTCGCCARGG 0.96 0.99 4 0.60 0.10 60.63 3.37 -20.55 1.76 CCCTGGCG…. TACCACAG…. 0.6, 0.5…. 60.78676…. -20.5089…. ambiguous 2 1 7597

The results can be visualized as a dashboard, using plotData():

Step 3: designAssays

designAssays() finds pairs of forward and reverse primers and combine them with probes, if probes are present in the input dataset. You can either use the default settings as below, or adjust the design constraints (see the package vignette or ?designAssays for more information).

myAssays <- designAssays(myOligos)

Results (first six rows):

start end length totalDegeneracy score startFwd endFwd lengthFwd iupacSequenceFwd identityFwd coverageFwd degeneracyFwd gcContentMeanFwd gcContentRangeFwd tmMeanFwd tmRangeFwd deltaGMeanFwd deltaGRangeFwd sequenceFwd gcContentFwd tmFwd deltaGFwd methodFwd startRev endRev lengthRev iupacSequenceRev identityRev coverageRev degeneracyRev gcContentMeanRev gcContentRangeRev tmMeanRev tmRangeRev deltaGMeanRev deltaGRangeRev sequenceRev gcContentRev tmRev deltaGRev methodRev plusPr minusPr startPr endPr lengthPr iupacSequencePr iupacSequenceRcPr identityPr coveragePr degeneracyPr gcContentMeanPr gcContentRangePr tmMeanPr tmRangePr deltaGMeanPr deltaGRangePr sequencePr sequenceRcPr gcContentPr tmPr deltaGPr methodPr roiStart roiEnd
5605 5673 69 6 2.00 5605 5624 20 GGCRGTGGTTTCTGGGGTGA 0.98 1 2 0.62 0.05 62.84 2.51 -20.86 1.25 GGCAGTGG…. 0.6, 0.65 61.57995…. -20.2350…. ambiguous 5654 5673 20 GTTGGTTGGATGAASATAGG 1 1 2 0.4 0 50.71 1.1 -15.27 0.52 GTTGGTTG…. 0.4, 0.4 50.15469…. -15.0078…. ambiguous TRUE FALSE 5625 5642 18 CMGGGTTGATTCTCAGCC GGCTGAGAATCAACCCKG 0.97 0.99 2 0.58 0.06 55.14 2.79 -17.06 1.25 CAGGGTTG…. GGCTGAGA…. 0.555555…. 53.74554…. -16.4324…. ambiguous 1 7597
5605 5673 69 6 2.33 5605 5624 20 GGCRGTGGTTTCTGGGGTGA 0.98 1 2 0.62 0.05 62.84 2.51 -20.86 1.25 GGCAGTGG…. 0.6, 0.65 61.57995…. -20.2350…. ambiguous 5654 5673 20 GTTGGTTGGATGAASATAGG 1 1 2 0.4 0 50.71 1.1 -15.27 0.52 GTTGGTTG…. 0.4, 0.4 50.15469…. -15.0078…. ambiguous TRUE FALSE 5625 5643 19 CMGGGTTGATTCTCAGCCC GGGCTGAGAATCAACCCKG 0.97 0.99 2 0.61 0.05 57.63 2.64 -18.54 1.25 CAGGGTTG…. GGGCTGAG…. 0.578947…. 56.30713…. -17.9185…. ambiguous 1 7597
5605 5673 69 6 2.00 5605 5624 20 GGCRGTGGTTTCTGGGGTGA 0.98 1 2 0.62 0.05 62.84 2.51 -20.86 1.25 GGCAGTGG…. 0.6, 0.65 61.57995…. -20.2350…. ambiguous 5654 5673 20 GTTGGTTGGATGAASATAGG 1 1 2 0.4 0 50.71 1.1 -15.27 0.52 GTTGGTTG…. 0.4, 0.4 50.15469…. -15.0078…. ambiguous TRUE TRUE 5625 5644 20 CMGGGTTGATTCTCAGCCCT AGGGCTGAGAATCAACCCKG 0.97 1.00 2 0.58 0.05 58.87 2.55 -19.43 1.25 CAGGGTTG…. AGGGCTGA…. 0.55, 0.6 57.59836…. -18.8035…. ambiguous 1 7597
5605 5673 69 6 1.67 5605 5624 20 GGCRGTGGTTTCTGGGGTGA 0.98 1 2 0.62 0.05 62.84 2.51 -20.86 1.25 GGCAGTGG…. 0.6, 0.65 61.57995…. -20.2350…. ambiguous 5654 5673 20 GTTGGTTGGATGAASATAGG 1 1 2 0.4 0 50.71 1.1 -15.27 0.52 GTTGGTTG…. 0.4, 0.4 50.15469…. -15.0078…. ambiguous TRUE TRUE 5625 5645 21 CMGGGTTGATTCTCAGCCCTT AAGGGCTGAGAATCAACCCKG 0.98 1.00 2 0.55 0.05 59.21 2.43 -20.08 1.25 CAGGGTTG…. AAGGGCTG…. 0.523809…. 57.99472…. -19.4553…. ambiguous 1 7597
5605 5673 69 6 2.00 5605 5624 20 GGCRGTGGTTTCTGGGGTGA 0.98 1 2 0.62 0.05 62.84 2.51 -20.86 1.25 GGCAGTGG…. 0.6, 0.65 61.57995…. -20.2350…. ambiguous 5654 5673 20 GTTGGTTGGATGAASATAGG 1 1 2 0.4 0 50.71 1.1 -15.27 0.52 GTTGGTTG…. 0.4, 0.4 50.15469…. -15.0078…. ambiguous TRUE FALSE 5625 5646 22 CMGGGTTGATTCTCAGCCCTTC GAAGGGCTGAGAATCAACCCKG 0.98 0.99 2 0.57 0.05 59.91 2.28 -21.11 1.25 CAGGGTTG…. GAAGGGCT…. 0.545454…. 58.77533…. -20.4881…. ambiguous 1 7597
5605 5673 69 6 2.00 5605 5624 20 GGCRGTGGTTTCTGGGGTGA 0.98 1 2 0.62 0.05 62.84 2.51 -20.86 1.25 GGCAGTGG…. 0.6, 0.65 61.57995…. -20.2350…. ambiguous 5654 5673 20 GTTGGTTGGATGAASATAGG 1 1 2 0.4 0 50.71 1.1 -15.27 0.52 GTTGGTTG…. 0.4, 0.4 50.15469…. -15.0078…. ambiguous TRUE FALSE 5626 5643 18 MGGGTTGATTCTCAGCCC GGGCTGAGAATCAACCCK 0.97 0.99 2 0.58 0.06 55.71 1.65 -17.21 0.94 AGGGTTGA…. GGGCTGAG…. 0.555555…. 54.88806…. -16.7409…. ambiguous 1 7597

The assays can be visualized using plotData():

Additional step: checkMatch

checkMatch() shows the proportion and names of the target sequences in the input alignment that match with the generated oligos or assays. See the package vignette or ?checkMatch for more information.

Randomly select six oligos to illustrate an example

selection <- sample(seq_len(nrow(myOligos)), size = 6)

matchTableOligos <- checkMatch(myOligos[selection, ], target = myAlignment)

Results:

iupacSequence perfectMatch idPerfectMatch oneMismatch idOneMismatch twoMismatches idTwoMismatches threeMismatches idThreeMismatches fourOrMoreMismatches idFourOrMoreMismatches offTargetMatch idOffTargetMatch
MGGGTTGATTCTCAGCCCT 0.90 AB073912…. 0.10 AB481228…. 0 0 0 0
TGACMGGGTTGATTCTCA 0.92 AB073912…. 0.08 AB481228…. 0 0 0 0
GTGACMGGGTTGATTCTCA 0.92 AB073912…. 0.08 AB481228…. 0 0 0 0
CCCCTATWTTCATCCAACCAA 1.00 AB073912…. 0.00 0 0 0 0
CCCCTATWTTCATCCAACC 1.00 AB073912…. 0.00 0 0 0 0
TCAGCCCTTCGCMMTCCCCTAT 0.94 AB073912…. 0.06 AB481228…. 0 0 0 0

The match table can be visualized using plotData():

plotData(matchTableOligos)

More information

Please see the package vignettefor more information on how to use the package.

Citation

Persson S., Larsson C., Simonsson M., Ellström P. (2022) rprimer: an R/bioconductor package for design of degenerate oligos for sequence variable viruses. _BMC Bioinformatics_23:239

The publication describes version 1.1.0 of the package.