Type: | Package |
Title: | Secondary Structure Plotting for RNA |
Version: | 1.2 |
Date: | 2024-07-10 |
Description: | Functions for creating and manipulating RNA secondary structure plots. |
License: | GPL-3 |
NeedsCompilation: | no |
Packaged: | 2024-07-10 10:02:31 UTC; jp |
Author: | JP Bida [aut],
Jonathan Price |
Maintainer: | Jonathan Price <jlp76@cam.ac.uk> |
Repository: | CRAN |
Date/Publication: | 2024-07-10 10:20:02 UTC |
RNA secondary structure ploting
Description
Set of functions for creating and manipulating RNA secondary structure plots from CT files or bracket notations.
Details
Package: | RRNA |
Type: | Package |
Version: | 1.0 |
Date: | 2015-07-27 |
License: | GPL-3 |
Author(s)
JP Bida Maintainer: JP Bida <bida.john@gmail.com
Examples
### Create a CT file from bracket notation
ct=makeCt("(((...(((...)))...(((...)))...)))","AAAUUUCCCAAAGGGUUUAAAGGGUUUCCCUUU")
coord=ct2coord(ct)
RNAPlot(coord,hl=c("GGGUUU","AAAUUU"),seqcols=c(2,4),labTF=TRUE)
Generic RNA Secondary Structure Plotting Function
Description
Given fold data from loadFolds or ct2coords RNAPlot plots the secondary structure
Usage
RNAPlot(data, ranges = 0, add = FALSE, hl = NULL, seqcols = NULL,
seqTF = FALSE, labTF = FALSE, nt = FALSE, dp = 0.5,
modspec = FALSE, modp = NULL, mod = NULL, modcol = NULL,
tsize = 0.5, main = "", pointSize = 2, lineWd = 2)
Arguments
data |
R data frame containing the coordinates for plotting a given secondary structure
|
ranges |
A data frame containing the ranges of sequence positions that should be highlighted with given colors.
|
add |
Should the new plot be added to an existing plot TRUE/FALSE |
hl |
Takes an array of sequences and highlights them with seqcol
|
seqcols |
Colors that should be used to highlight the sequences given in hl |
seqTF |
If sequence is a vector set as TRUE |
labTF |
TRUE/FALSE plot the legend |
nt |
TRUE/FALSE plot the nucleotide sequence on the secondary structure |
dp |
Floating point value to determine how far from the coordinates the nucleotide sequence should be plotted. Values between 0 and 5 usually work best. |
modspec |
TRUE/FALSE modify specific positions in the secondary structure. Used in combination with modp,mod,and modcol. This allows you to change the shape and color of nucleotide in the secondary structure. |
modp |
Array defining the specific positions to be modified in the plot
|
mod |
Array defining the pch values to be plotted at the positions given by modp.
|
modcol |
Array of color values to be used for plotting at the positions defined by modp in the secondary structure.
|
tsize |
Text size used for plotting the nucleotide sequence in the secondary structure. Only applicable when nt=TRUE. Values between 0.1 and 4 work well. |
main |
Title used for the plot when labTF is set to TRUE. |
pointSize |
The size of points plotted in the secondary structure. Values betwen 0.1-5 work well. |
lineWd |
Line width for base pairings and backbone of secondary structures. |
Value
Returns a generic R plot that can be used with the jpeg, postscript, etc. functions.
Author(s)
JP Bida
See Also
Examples
## Create a CT file from bracket notation and sequence ###
ct=makeCt( "((((...(((((((....)))))))...((((...))))...))))",
"CCCCAAAGGGGGGGAUUACCCCUCCUUUAAAAGGGUUUUCCCCCCC"
)
## Create a coordinate file based on the CT file ###
dat=ct2coord(ct)
### Create a plot of the secondary structure ###
RNAPlot(dat)
### Plot positions 1:4 as green and 43:46 circles ##
### and show the legend
ranges=data.frame(min=c(1,43),max=c(4,46),col=c(2,3),
desc=c("Region 1","Region 2")
)
RNAPlot(dat,ranges,labTF=TRUE)
### Highlight the sequences CUCCU and CCCCAAA ###
RNAPlot(dat,hl=c("CUCCU","CCCCAAA"),seqcol=c(2,4),labTF=TRUE,main="RNA Molecule")
### Modify specific positions ####
RNAPlot( dat, modspec=TRUE, modp=c(1:4,43:46),mod=c(17,17,15,15,16,16,16,16),
modcol=c(rep(2,2),rep(3,2),rep(4,4))
)
### RNA Plot with nucleotides ###
RNAPlot(dat,nt=TRUE)
### RNA plot with nucleotides
RNAPlot( dat,nt=TRUE,modspec=TRUE,modp=c(1:4,43:46),
mod=c(17,17,15,15,16,16,16,16),
modcol=c(rep(2,2),rep(3,2),rep(4,4))
)
### RNA Plot wiht nucleotides and dots ###
RNAPlot(dat)
RNAPlot(dat,nt=TRUE,add=TRUE,dp=0.75)
Alignment of secondary structure folds to 2 nucleotides.
Description
Given a coordinate file with multiple RNA secondary structures, it aligns all folds such that n1 is at position (x,y) and n2 has its y coordinate equal to y
Usage
alignCoord(data, n1, n2, x, y)
Arguments
data |
R data frame containing the coordinates for plotting a given secondary structure |
n1 |
Nucleotide position that will be translated to (x,y) |
n2 |
Nucleotide position that will have its y coordinate equal to y |
x |
x coordinate that n1 will be translated to |
y |
y coordinate that n1 will be translated to |
Value
Returns a data frame containing fold coordinates.
Author(s)
JP Bida
See Also
Examples
### Create two RNA secondary structures ####
ct1=makeCt(
"((((...(((((((....)))))))...((((...))))...))))",
"CCCCAAAGGGGGGGAUUACCCCUCCUUUAAAAGGGUUUUCCCCCCC"
)
ct2=makeCt(
"((((...(((((((....))))))).((..((...))))...))))",
"CCCCAAAGGGGGGGAUUACCCCUCCUUUAAAAGGGUUUUCCCCCCC"
)
### Create a coordinate file ####
dat1=ct2coord(ct1)
### Each RNA fold needs its own id ###
dat1$id=1
#### Create a coordinate file ####
dat2=ct2coord(ct2)
### Each RNA fold needs its own id ###
dat2$id=2
dat=rbind(dat1,dat2)
adat=alignCoord(dat,1,46,0,0)
### Plot the aligned RNA folds ####
RNAPlot(adat[adat$id==1,])
l=length(adat$seq[adat$id==2])
RNAPlot(adat[adat$id==2,],modspec=TRUE,modp=c(1:l),modcol=rep(4,l),mod=rep(16,l),add=TRUE)
RNA secondary structure plotting from CT files
Description
Generates and RNA secondary structure plot from a CT file. Removes pseudoKnots automatically and allows them to be drawn back in with pseudoTF=TRUE.
Usage
aptPlotCT(file, ranges = 0, add = FALSE, hl = NULL, seqcols = NULL,
seqTF = FALSE, labTF = FALSE, nt = FALSE, dp = 0.5,
modspec = FALSE, modp = NULL, mod = NULL, modcol = NULL,
tsize = 0.5, main = "", pseudoTF = FALSE, pseudo_nums = NULL,
ticks = NULL, ticksTF = FALSE
)
Arguments
file |
CT file name |
ranges |
A data frame containing the ranges of sequence positions that should be highlighted with given colors.
|
add |
Should the new plot be added to an existing plot TRUE/FALSE |
hl |
Takes an array of sequences and highlights them with seqcol
|
seqcols |
Colors that should be used to highlight the sequences given in hl |
seqTF |
If sequence is a vector set as TRUE |
labTF |
TRUE/FALSE plot the legend |
nt |
TRUE/FALSE plot the nucleotide sequence on the secondary structure |
dp |
Floating point value to determine how far from the coordinates the nucleotide sequence should be plotted. Values between 0 and 5 usually work best. |
modspec |
TRUE/FALSE modify specific positions in the secondary structure. Used in combination with modp,mod,and modcol. This allows you to change the shape and color of nucleotide in the secondary structure. |
modp |
Array defining the specific positions to be modified in the plot
|
mod |
Array defining the pch values to be plotted at the positions given by modp.
|
modcol |
Array of color values to be used for plotting at the positions defined by modp in the secondary structure.
|
tsize |
Text size used for plotting the nucleotide sequence in the secondary structure. Only applicable when nt=TRUE. Values between 0.1 and 4 work well. |
main |
Title used for the plot when labTF is set to TRUE. |
pseudoTF |
Plot pseudo knot sequences |
pseudo_nums |
indices of the nucleotides included in pseudoknots |
ticksTF |
TRUE/FALSE include ticks |
ticks |
Positions where the ticks should be drawn. These are sequence positions in the RNA molecule |
Value
Returns and R plot object
Author(s)
JP Bida
See Also
Examples
### PseudoKnots ###
pk= makeCt("((((...(((((((.........)))))))...((((.........))))...))))",
"AAAAAAAACCCCCCCCAAAGGGGGGGAUUACCCCUCCUUUAAAAGGGUUUUCCCCCCC"
)
pk$bound[pk$pos==20]=42
pk$bound[pk$pos==19]=43
pk$bound[pk$pos==43]=19
pk$bound[pk$pos==42]=20
f = tempfile()
### Create a CT file for testing ###
write.table(pk[,c(1,4,2,3,6,5)],file=f,row.names=FALSE,col.names=TRUE)
aptPlotCT(f,ticksTF=TRUE,ticks=seq(1,60,by=5),pseudoTF=TRUE,pseudo_nums=c(19,20,43,42))
Internal function for moving through secondary structures
Description
Given a bracket notation for RNA secondary structure and an index of a ")" bracket type the backward function will find the "(" bracket that closes the ")" at the given index.
Usage
backward(stc, i)
Arguments
stc |
Array of brackets and dots.
|
i |
index giving the position of a bracket |
Value
returns the index of the bracket that closes the bracket at the given index
Author(s)
JP Bida
Examples
a=unlist(strsplit("(((...)))...((..))",""))
ind=backward(a,7)
Creates a bpl file from a coordinate file
Description
A bpl file can be created from a given coordinate file for inputing into other RNA visulatization programs
Usage
bplfile(dat, name)
Arguments
dat |
Coordinate file created by ct2coord or loadCoords functions
|
name |
Name of the file outputed |
Value
Creates the file with the given "name"
Author(s)
JP Bida
Examples
ct=makeCt("((((...))))","AAAACCCUUUU")
### Create the coordinate file ###
dat=ct2coord(ct)
bplfile(dat,tempfile())
Internal function for finding the coordinates of NT's in a circle
Description
Given an integer N the function returns N (x,y) coordinates for a polygon with N sides each of length 1. This is used to plot the loops in an RNA structure
Usage
circleCoord(n)
Arguments
n |
Integer determining the number of sides |
Value
Data frame with columns x,y defining coordinates of the polygons
Author(s)
JP Bida
Examples
pts=circleCoord(10)
plot(pts$x,pts$y)
Generate coordinate file
Description
Creates a coordinate file from a CT file that has been loaded into a data frame
Usage
ct2coord(input)
Arguments
input |
Data frame representing a ct file. Created from makeCt or loadCt |
Value
Returns a coordinate file for the secondary structure represented in the CT file
Note
Pseudoknots sometimes cause trouble
Author(s)
JP Bida
See Also
Examples
ct=makeCt("((((...(((((((....)))))))...((((...))))...))))",
"CCCCAAAGGGGGGGAUUACCCCUCCUUUAAAAGGGUUUUCCCCCCC"
)
coord=ct2coord(ct)
RNAPlot(coord)
creates a knet file from a CT file
Description
Knet files are used as inputs for KnetFold secondary structure prediction program
Usage
ct2knet(file, ind = 0)
Arguments
file |
Name of the CT file being converted to KnetFold file |
ind |
Index used to relabel sequence indexes |
Value
Retuns a string containing the contains of the knet file
Author(s)
JP Bida
Examples
pk=makeCt("((((...(((((((.........)))))))...((((.........))))...))))",
"AAAAAAAACCCCCCCCAAAGGGGGGGAUUACCCCUCCUUUAAAAGGGUUUUCCCCCCC"
)
pk$bound[pk$pos==20]=42
pk$bound[pk$pos==19]=43
pk$bound[pk$pos==43]=19
pk$bound[pk$pos==42]=20
f = tempfile()
### Create a CT file for testing ###
write.table(pk[,c(1,4,2,3,6,5)],file=f,row.names=FALSE,col.names=TRUE)
### Convert CT file to Knet ###
out=ct2knet(f,0)
Internal function for moving through secondary structures
Description
Given a bracket notation for RNA secondary structure and an index of a "(" bracket type the forward function will find the ")" bracket that closes the "(" at the given index.
Usage
forward(stc, i)
Arguments
stc |
a=unlist(strsplit("(((...)))...((..))","")) |
i |
Interger index |
Value
Integer index
Author(s)
JP Bida
See Also
Examples
a=unlist(strsplit("(((...)))...((..))",""))
ind=forward(a,1)
Internal function that generates coordinates for a given loop starting and stopping at p1 and p2 respectfully
Description
Generates coordinates for a loop in a secondary structure. Internal function used by RNAPlot.
Usage
genCords(loop, p1, p2, input, vn)
Arguments
loop |
List contianing a data frame that has the subset of nucleotides in a given loop |
p1 |
The position of the first nucleotide in the loop |
p2 |
The position of the second nucleotide in the loop |
input |
The data frame contianing the coordinate file for the entire RNA secondary structure |
vn |
A flag that flips over y axis if vn = 1. |
Value
Returns a set of points
Author(s)
JP Bida
Examples
### This is an internal function ###
Loads a coordinate file into a data frame
Description
Coordinate files can be created from the viennaRNA library.
Usage
loadCoords(filename)
Arguments
filename |
Name of the coordinate file being loaded |
Value
Data frame containing the coordinate file
Author(s)
JP Bida
References
The RRNAFold program generates the coordinate files used by RRNA
https://github.com/jpbida/ViennaScripts
Examples
### Create a test coordinate file using ct2coord ###
ct=makeCt("((((...(((((((.........)))))))...((((.........))))...))))",
"AAAAAAAACCCCCCCCAAAGGGGGGGAUUACCCCUCCUUUAAAAGGGUUUUCCCCCCC"
)
coord=ct2coord(ct)
### add an id ###
coord$id=1
f = tempfile()
### write out test file ###
write.table( coord[,c('id','x','y','seq','num','bound')],
col.names=FALSE,row.names=FALSE,sep=",",file=f
)
### Read in the coordinate file ##
input=loadCoords(f)
### Plot the file using RNAPlot ##
RNAPlot(input)
Loads a CT file into an R data frame
Description
A variety of RNA secondary structure prediction programs produce CT files. You can load these CT files into R using the loadCT function.
Usage
loadCt(file)
Arguments
file |
The name of the CT file being loaded |
Value
Returns at data frame containing the CT file data
Author(s)
JP Bida
See Also
Examples
### Create a CT file with PseudoKnots ###
pk=makeCt("((((...(((((((.........)))))))...((((.........))))...))))",
"AAAAAAAACCCCCCCCAAAGGGGGGGAUUACCCCUCCUUUAAAAGGGUUUUCCCCCCC"
)
pk$bound[pk$pos==20]=42
pk$bound[pk$pos==19]=43
pk$bound[pk$pos==43]=19
pk$bound[pk$pos==42]=20
### Create a CT file for testing ###
f = tempfile()
write.table(pk[,c(1,4,2,3,6,5)],file=f,
row.names=FALSE,col.names=TRUE)
ctfile=loadCt(f)
### Before using ct2coord you need to remove the pseudo knots ###
l=pseudoKnot(ctfile)
dat=l[[2]]
cd=ct2coord(dat)
RNAPlot(cd)
internal function that determines the length of a loop
Description
Used by RNAPlot to get the length of a loop
Usage
loopLength(input, start)
Arguments
input |
CT file
|
start |
Position of the first nucleotide in the the loop |
Value
Retuns a list contianing the output and stems
Author(s)
JP Bida
Examples
ct=makeCt("((((...((((..))))..((((...)))).))))","AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
out=loopLength(ct,4)
make a CT file from a structure and sequence
Description
Given an RNA secondary structure in bracket notation containing no pseudoKnots this function creates an R data frame that represents the secondary structures CT file.
Usage
makeCt(struct, seq)
Arguments
struct |
Bracket notation.
|
seq |
String containing the RNA sequence
|
Value
Returns a data frame representing the bracket notaiton secondary structure in a CT file like format.
Author(s)
JP Bida
Examples
st="(((((....)))))..((..))"
seq="AUAAUUAAAAAAAACCCCCAAA"
ct=makeCt(st,seq)
removes pseudoknots from a ct file
Description
internal function used to remove pseudoKnots before calling ct2coord
Usage
pseudoKnot(ctDat)
Arguments
ctDat |
R data frame representing a CT file for RNA secondary structure |
Value
Returns a list with the first item being a list of pseudoKnots and the second item being a CT file data frame with all pseudoKnots removed from the structure
Author(s)
JP Bida
See Also
Examples
pk=makeCt("((((...(((((((.........)))))))...((((.........))))...))))",
"AAAAAAAACCCCCCCCAAAGGGGGGGAUUACCCCUCCUUUAAAAGGGUUUUCCCCCCC")
pk$bound[pk$pos==20]=42
pk$bound[pk$pos==19]=43
pk$bound[pk$pos==43]=19
pk$bound[pk$pos==42]=20
l=pseudoKnot(pk)
## Positions of removed pseudo knots ##
removed=l[[1]]
### clean ct file that can be used by ct2coord ###
ct=l[[2]]
Internal function to rotate a single point
Description
Rotates a point a given angle around a given center point.
Usage
rotateS(x2, y2, x0, y0, ang)
Arguments
x2 |
x coordinate of the position being rotated |
y2 |
y coordinate of the position being rotated |
x0 |
x coordinate of the center of rotation |
y0 |
y coordinate of the center of rotation |
ang |
rotatation angle in radians |
Value
Returns a rotated point
Author(s)
JP Bida
Examples
### Rotate a point 90 degress ###
rotateS(0,1,0,0,pi/2)
internal function to rotate a vector of points
Description
Rotates a set of points around a center point a given number of radians
Usage
rotateV(x2, y2, x0, y0, ang)
Arguments
x2 |
Vector containing x coordinates being rotated |
y2 |
Vector containing y coordinates being rotated |
x0 |
x coordinate of center of rotation |
y0 |
y coordinate of center of rotation |
ang |
Angle of rotation given in radians |
Value
set of rotated points
Author(s)
JP Bida
See Also
Examples
x=c(1,0,-1,0)
y=c(0,1,0,-1)
pts=rotateV(x,y,0,0,pi/4)
internal function that generates coordinates for a stem
Description
internal function that generates coordinates for an RNA secondary structure stem
Usage
stemCords(input, p1, p2, x1, y1, x2, y2, x3, y3)
Arguments
input |
ct file as data frame |
p1 |
index of nucleotide in first base pair of the stem |
p2 |
index of nucleotide in first base pair of the stem |
x1 |
x coordinate of p1 |
y1 |
y coordinate of p1 |
x2 |
x coordinate of p2 |
y2 |
y coordinate of p2 |
x3 |
direction vector x component |
y3 |
direction vector y component |
Value
set of points
Note
This is an internal function not recommend for use out side of the ct2coord function
Author(s)
JP Bida
See Also
Examples
### Internal Function ###
Internal function to translate and rotate a secondary structure plot
Description
Given a coordinate file, a point, and an angle in radians transformFold rotates the fold around the given point the given number of radians.
Usage
transformFold(dat, x0, y0, ang)
Arguments
dat |
Coordinate file containing multiple RNA folds |
x0 |
x coordinate of center of rotation |
y0 |
y coordinate of center of rotation |
ang |
angle of rotation in radians |
Value
dat frame containing the rotated coordinates
Author(s)
JP Bida
See Also
Examples
ct=makeCt("((((...(((((((.........)))))))...((((.........))))...))))",
"AAAAAAAACCCCCCCCAAAGGGGGGGAUUACCCCUCCUUUAAAAGGGUUUUCCCCCCC")
c1=ct2coord(ct)
RNAPlot(c1)
c2=transformFold(c1,0,0,pi/2)
c3=transformFold(c2,0,0,pi/2)
c4=transformFold(c3,0,0,pi/2)
RNAPlot(c2,add=TRUE)
RNAPlot(c3,add=TRUE)
RNAPlot(c4,add=TRUE)
internal function for translating points
Description
internal function to translate points
Usage
translate(x1, y1, x2, y2)
Arguments
x1 |
x coordinates being translated |
y1 |
y coordinates being translated |
x2 |
dx for translation |
y2 |
dy for translation |
Value
set of points
Author(s)
JP Bida
Examples
## Internal Function ##