detectRibosomeShifts {ORFik} | R Documentation

## Detect ribosome shifts

### Description

Utilizes periodicity measurement (Fourier transform), and change point analysis to detect ribosomal footprint shifts for each of the ribosomal read lengths. Returns subset of read lengths and their shifts for which top covered transcripts follow periodicity measure. Each shift value assumes 5' anchoring of the reads, so that output offsets values will shift 5' anchored footprints to be on the p-site of the ribosome. The E-site will be shift + 3 and A site will be shift - 3. So update to these, if you rather want those.

### Usage

    detectRibosomeShifts(
      footprints,
      txdb,
      start = TRUE,
      stop = FALSE,
      top_tx = 10L,
      minFiveUTR = 30L,
      minCDS = 150L,
      minThreeUTR = 30L,
      firstN = 150L,
      tx = NULL,
      min_reads = 1000,
      accepted.lengths = 26:34,
      heatmap = FALSE,
      must.be.periodic = TRUE
    )

### Arguments

`footprints` | `GAlignments` object of RiboSeq reads - footprints, can also be path to the .bam /.ofst file. If GAlignment object has a meta column called "score", this will be used as replicate numbering for that read. So be careful if you have custom files with score columns, with another meaning.
`txdb` | a TxDb file, a path to one of: (.gtf ,.gff, .gff2, .gff2, .db or .sqlite) or an ORFik experiment
`start` | (logical) Whether to include predictions based on the start codons. Default TRUE.
`stop` | (logical) Whether to include predictions based on the stop codons. Default FASLE. Only use if there exists 3' UTRs for the annotation. If peridicity around stop codon is stronger than at the start codon, use stop instead of start region for p-shifting.
`top_tx` | (integer), default 10. Specify which reads transcripts to use for estimation of the shifts. By default we take top 10 top covered transcripts as they represent less noisy dataset. This is only applicable when there are more than 1000 transcripts.
`minFiveUTR` | (integer) minimum bp for 5' UTR during filtering for the transcripts. Set to NULL if no 5' UTRs exists for annotation.
`minCDS` | (integer) minimum bp for CDS during filtering for the transcripts
`minThreeUTR` | (integer) minimum bp for 3' UTR during filtering for the transcripts. Set to NULL if no 3' UTRs exists for annotation.
`firstN` | (integer) Represents how many bases of the transcripts downstream of start codons to use for initial estimation of the periodicity.
`tx` | a GRangesList, if you do not have 5' UTRs in annotation, send your own version. Example: extendLeaders(tx, 30) Where 30 bases will be new "leaders". Since each original transcript was either only CDS or non-coding (filtered out).
`min_reads` | default (1000), how many reads must a read-length have to be considered for periodicity.
`accepted.lengths` | accepted readlengths, default 26:34, usually ribo-seq is strongest between 27:32.
`heatmap` | a logical or character string, default FALSE. If TRUE, will plot heatmap of raw reads before p-shifting to console, to see if shifts given make sense. You can also set a filepath to save the file there.
`must.be.periodic` | logical TRUE, if FALSE will not filter on periodic read lengths. (The Fourier transform filter will be skipped).

### Details

Check out vignette for the examples of plotting RiboSeq metaplots over start and stop codons, so that you can verify visually whether this function detects correct shifts.

For how the Fourier transform works, see: `isPeriodic`
For how the changepoint analysis works, see: `changePointAnalysis`

NOTE: It will remove softclips from valid width, the CIGAR 3S30M is qwidth 33, but will remove 3S so final read width is 30 in ORFik. This is standard for ribo-seq.

### Value

a data.table with lengths of footprints and their predicted coresponding offsets

### References

https://bmcgenomics.biomedcentral.com/articles/10.1186/s12864-018-4912-6

### See Also

Other pshifting: `changePointAnalysis()`, `shiftFootprintsByExperiment()`, `shiftFootprints()`

### Examples

    ## Basic run
    # Transcriptome annotation ->
    gtf_file <- system.file("extdata", "annotations.gtf", package = "ORFik")
    # Ribo seq data ->
    riboSeq_file <- system.file("extdata", "ribo-seq.bam", package = "ORFik")
    ## Not run:
    footprints <- readBam(riboSeq_file)

    detectRibosomeShifts(footprints, gtf_file, stop = TRUE)
    ## Subset bam file
    param = ScanBamParam(flag = scanBamFlag(
                           isDuplicate = FALSE,
                           isSecondaryAlignment = FALSE))
    footprints <- readBam(riboSeq_file, param = param)
    detectRibosomeShifts(footprints, gtf_file, stop = TRUE)

    ## Without 5' Annotation
    library(GenomicFeatures)

    txdb <- loadTxdb(gtf_file)
    tx <- exonsBy(txdb, by = "tx", use.names = TRUE)
    tx <- extendLeaders(tx, 30)
    # Now run function, without 5' and 3' UTRs
    detectRibosomeShifts(footprints, txdb, start = TRUE, minFiveUTR = NULL,
                         minCDS = 150L, minThreeUTR = NULL, firstN = 150L,
                         tx = tx)

    ## End(Not run)

[Package ORFik version 1.10.13 Index]