"bamRange"
: Representation of genomic alignments in
defined regions.bamRange represents a double linked list of bamAlign objects
which overlap with a defined region in a BAM-file.
The bamRange-function retrieves all alignments in the depicted Range from
BAM-File into a bamRange object.
A bamRange object maintains a double-linked list of aligns.
The list keeps a pointer to a current align structure for iteration purposes.
Addidionally there are some summarizing values stored (which are displayed
by show
) which describe the range inside the reference from which
the bamRange
object was read (seqid, qrBegin, qrEnd, complex)
and some statistis (size, qSeqMinLen, qSeqMaxLen).
Objects can be created by calls of the form
range<-bamRange(reader, coords)
.
range
:External pointer. Points to double linked list of bamAligns.
signature(x="bamRange")
:
Returns data.frame representation of aligns.
signature(from="bamRange", to="data.frame")
:
Coercion of bamRange to data.frame.
signature(object="bamRange")
:
Saves aligns stored in this list to BAM-file via a bamWriter object.
signature(object="bamRange")
:
Iterates through the list and returns 0-based position of the
leftmost and rightmost matching nucleotide in range.
signature(object="bamRange")
:
Returns next align from current position and shifts current
position to next one.
signature(object="bamRange")
:
Returns named vector of stored parameters
signature(object="bamRange")
:
Returns previous align from current position and shifts current
position to previous one.
signature(.Object="bamRange")
:
Returns the reference sequence name from which the range was
retrieved.
signature(object="bamRange", prob="logical")
:
Returns position dependent counts of phred quality values.
signature(object="bamRange",
quantiles="numeric")
:
Returns position dependent quantile values for phred scores.
signature(object="bamRange")
:
Plots phred quality quantiles for sequence positions.
signature(.Object="bamRange")
:
Initializes bamRange object.
signature(object="bamRange")
:
Inserts align past current position into list.
signature(object="bamRange")
:
Insert align before current position into list.
signature(object="bamRange")
:
Removes last align from list.
signature(object="bamRange")
:
Removes first align from list.
signature(object="bamRange")
:
Adds align at the end of the list.
signature(object="bamRange")
:
Adds align at the front of the list.
signature(object="bamRange")
:
Shifts current align to position before first align.
signature(object="bamRange")
:
Returns number of aligns in list.
signature(object="bamRange")
:
Overwrites current align with given align.
bamRange
objects internally keep the following values:
1 | seqid | 0-based index of reference sequence |
2 | qrBegin | 0-based left boundary of query region (query range begin) |
3 | qrEnd | 0-based right boundary of query region (query range end) |
4 | complex | 0= all aligns included, 1= only aligns with n_cigar > 1 included |
5 | rSeqLen | Length of reference sequence |
6 | qSeqMinLen | Minimum of query sequence length (= read length) |
For the bamRange
class exists a rudimentary subsetting ('[') operator.
'[' allows only for indexes > 0 and <= size(x).
Index values are sorted in ascending order before values are extracted.
# NOT RUN {
## + + + + + + + + + + + + + + + + + + + + + + + + + + + ##
## A) Open reader
## + + + + + + + + + + + + + + + + + + + + + + + + + + + ##
bam <- system.file("extdata", "accepted_hits.bam", package="rbamtools")
idx<-paste(bam,"bai",sep=".")
# Open BAM file
reader<-bamReader(bam)
# }
# NOT RUN {
create.index(reader,idx)
# }
# NOT RUN {
# Load BAM index file
loadIndex(reader,idx)
indexInitialized(reader) # Should return 'TRUE'
## + + + + + + + + + + + + + + + + + + + + + + + + + + + ##
## B) Read range
## + + + + + + + + + + + + + + + + + + + + + + + + + + + ##
# Find appropriate refid (=ID)
# Returns a data.frame with three columns:
# ID=refid, SN=Sequence Name, LN=Sequence length
rdf<-getRefData(reader)
head(rdf)
## + + + + + + + + + + + + + + + + + + + + + + + + + + + ##
# The sequence length (LN) also determines valid
# range for start and stop coordinates
# Invalid refid-, start- or stop-coordinates will
# release an error.
# coords: refid=0, start=0, stop=249250621
## + + + + + + + + + + + + + + + + + + + + + + + + + + + ##
coords <- as.integer(c(0, 0, 249250621))
range <- bamRange(reader, coords)
size(range)
range <- bamRange(reader, coords, complex=TRUE)
dfr <- as.data.frame(range)
size(range)
align <- getNextAlign(range)
cigarData(align)
rewind(range)
# Alterative way of reading Range
range <- readRange(reader, "chr1", c(0,249250621))
size(range)
range <- readRange(reader, "chr1", c(0,249250621), complex=TRUE)
size(range)
# Print align positions
# }
# NOT RUN {
while(!is.null(align))
{
print(position(align))
align<-getNextAlign(range)
}
# }
# NOT RUN {
bamClose(reader)
## + + + + + + + + + + + + + + + + + + + + + + + + + + + ##
## C) Get print message and some other values
## + + + + + + + + + + + + + + + + + + + + + + + + + + + ##
range
getCoords(range)
getSeqLen(range)
getParams(range)
getRefName(range)
getAlignRange(range)
## + + + + + + + + + + + + + + + + + + + + + + + + + + + ##
## D) Rudimentary subsetting
## + + + + + + + + + + + + + + + + + + + + + + + + + + + ##
range[1:5]
# }
Run the code above in your browser using DataLab