Description Usage Arguments Value Note Author(s) See Also Examples
exonicParts
and intronicParts
extract the non-overlapping
(a.k.a. disjoint) exonic or intronic parts from a TxDb-like object.
1 2 3 4 5 6 7 | exonicParts(txdb, linked.to.single.gene.only=FALSE)
intronicParts(txdb, linked.to.single.gene.only=FALSE)
## 3 helper functions used internally by exonicParts() and intronicParts():
tidyTranscripts(txdb, drop.geneless=FALSE)
tidyExons(txdb, drop.geneless=FALSE)
tidyIntrons(txdb, drop.geneless=FALSE)
|
txdb |
A TxDb object, or any TxDb-like object that supports the
|
linked.to.single.gene.only |
If If
|
drop.geneless |
If If Note that
|
exonicParts
returns a disjoint and strictly sorted
GRanges object with 1 range per exonic part
and with metadata columns tx_id
, tx_name
, gene_id
,
exon_id
, exon_name
, and exon_rank
.
If linked.to.single.gene.only
was set to TRUE
,
an additional exonic_part
metadata column is added that
indicates the rank of each exonic part within all the exonic parts
linked to the same gene.
intronicParts
returns a disjoint and strictly sorted
GRanges object with 1 range per intronic part
and with metadata columns tx_id
, tx_name
, and gene_id
.
If linked.to.single.gene.only
was set to TRUE
,
an additional intronic_part
metadata column is added that
indicates the rank of each intronic part within all the intronic parts
linked to the same gene.
tidyTranscripts
returns a GRanges object
with 1 range per transcript and with metadata columns tx_id
,
tx_name
, and gene_id
.
tidyExons
returns a GRanges object
with 1 range per exon and with metadata columns tx_id
,
tx_name
, gene_id
, exon_id
, exon_name
,
and exon_rank
.
tidyIntrons
returns a GRanges object
with 1 range per intron and with metadata columns tx_id
,
tx_name
, and gene_id
.
exonicParts
is a replacement for disjointExons
with
the following differences/improvements:
Argument linked.to.single.gene.only
in exonicParts
replaces argument aggregateGenes
in disjointExons
,
but has opposite meaning i.e.
exonicParts(txdb, linked.to.single.gene.only=TRUE)
returns the same exonic parts as
disjointExons(txdb, aggregateGenes=FALSE)
.
Unlike disjointExons(txdb, aggregateGenes=TRUE)
,
exonicParts(txdb, linked.to.single.gene.only=FALSE)
does
NOT discard exon parts that are not linked to a gene.
exonicParts
is almost 2x more efficient than
disjointExons
.
exonicParts
works out-of-the-box on any TxDb-like
object that supports the transcripts()
and
exonsBy()
extractors (e.g. on an
EnsDb object).
Hervé Pagès
disjoin
in the IRanges package.
transcripts
, transcriptsBy
,
and transcriptsByOverlaps
, for extracting
genomic feature locations from a TxDb-like object.
transcriptLengths
for extracting the transcript
lengths (and other metrics) from a TxDb object.
extractTranscriptSeqs
for extracting transcript
(or CDS) sequences from chromosome sequences.
coverageByTranscript
for computing coverage by
transcript (or CDS) of a set of ranges.
The TxDb class.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | library(TxDb.Hsapiens.UCSC.hg19.knownGene)
txdb <- TxDb.Hsapiens.UCSC.hg19.knownGene
## ---------------------------------------------------------------------
## exonicParts()
## ---------------------------------------------------------------------
exonic_parts1 <- exonicParts(txdb)
exonic_parts1
## Mapping from exonic parts to genes is many-to-many:
gene_id1 <- mcols(exonic_parts1)$gene_id
gene_id1 # CharacterList object
table(lengths(gene_id1))
## The number of known genes a Human exonic part can be linked to
## varies from 0 to 22!
exonic_parts2 <- exonicParts(txdb, linked.to.single.gene.only=TRUE)
exonic_parts2
## Mapping from exonic parts to genes now is many-to-one:
gene_id2 <- mcols(exonic_parts2)$gene_id
gene_id2[1:20] # character vector
## Select exonic parts for a given gene:
exonic_parts2[gene_id2 %in% "643837"]
## Sanity checks:
stopifnot(isDisjoint(exonic_parts1), isStrictlySorted(exonic_parts1))
stopifnot(isDisjoint(exonic_parts2), isStrictlySorted(exonic_parts2))
stopifnot(all(exonic_parts2 %within% reduce(exonic_parts1)))
stopifnot(identical(
lengths(gene_id1) == 1L,
exonic_parts1 %within% exonic_parts2
))
## ---------------------------------------------------------------------
## intronicParts()
## ---------------------------------------------------------------------
intronic_parts1 <- intronicParts(txdb)
intronic_parts1
## Mapping from intronic parts to genes is many-to-many:
mcols(intronic_parts1)$gene_id
table(lengths(mcols(intronic_parts1)$gene_id))
## A Human intronic part can be linked to 0 to 22 known genes!
intronic_parts2 <- intronicParts(txdb, linked.to.single.gene.only=TRUE)
intronic_parts2
## Mapping from intronic parts to genes now is many-to-one:
class(mcols(intronic_parts2)$gene_id) # character vector
## Sanity checks:
stopifnot(isDisjoint(intronic_parts1), isStrictlySorted(intronic_parts1))
stopifnot(isDisjoint(intronic_parts2), isStrictlySorted(intronic_parts2))
stopifnot(all(intronic_parts2 %within% reduce(intronic_parts1)))
stopifnot(identical(
lengths(mcols(intronic_parts1)$gene_id) == 1L,
intronic_parts1 %within% intronic_parts2
))
## ---------------------------------------------------------------------
## Helper functions
## ---------------------------------------------------------------------
tidyTranscripts(txdb) # Ordered by 'tx_id'.
tidyTranscripts(txdb, drop.geneless=TRUE) # Ordered first by 'gene_id',
# then by 'tx_id'.
tidyExons(txdb) # Ordered first by 'tx_id',
# then by 'exon_rank'.
tidyExons(txdb, drop.geneless=TRUE) # Ordered first by 'gene_id',
# then by 'tx_id',
# then by 'exon_rank'.
tidyIntrons(txdb) # Ordered by 'tx_id'.
tidyIntrons(txdb, drop.geneless=TRUE) # Ordered first by 'gene_id',
# then by 'tx_id'.
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.