This convenience function removes non-standard, mitochondrial, and/or sex chromosomes from any GRanges object.

tidyChromosomes(
  gr,
  keep.X = TRUE,
  keep.Y = TRUE,
  keep.M = FALSE,
  keep.nonstandard = FALSE,
  genome = NULL
)

Arguments

gr

Any GRanges object, or any another object with associated seqinfo (or a Seqinfo object itself). The object should typically have a standard genome associated with it, e.g. genome(gr) <- "hg38". gr can also be a list of such GRanges objects.

keep.X, keep.Y, keep.M, keep.nonstandard

Logicals indicating which non-autosomes should be kept. By default, sex chromosomes are kept, but mitochondrial and non-standard chromosomes are removed.

genome

An optional string that, if supplied, will be used to set the genome of gr.

Value

A GRanges object in which both ranges and seqinfo associated with trimmed chromosomes have been removed.

Details

Standard chromosomes are defined using the standardChromosomes function from the GenomeInfoDb package.

Author

Mike DeBerardine

Examples

# make a GRanges
chrom <- c("chr2", "chr3", "chrX", "chrY", "chrM", "junk")
gr <- GRanges(seqnames = chrom,
              ranges = IRanges(start = 2*(1:6), end = 3*(1:6)),
              strand = "+",
              seqinfo = Seqinfo(chrom))
genome(gr) <- "hg38"

gr
#> GRanges object with 6 ranges and 0 metadata columns:
#>       seqnames    ranges strand
#>          <Rle> <IRanges>  <Rle>
#>   [1]     chr2       2-3      +
#>   [2]     chr3       4-6      +
#>   [3]     chrX       6-9      +
#>   [4]     chrY      8-12      +
#>   [5]     chrM     10-15      +
#>   [6]     junk     12-18      +
#>   -------
#>   seqinfo: 6 sequences from hg38 genome; no seqlengths

tidyChromosomes(gr)
#> GRanges object with 4 ranges and 0 metadata columns:
#>       seqnames    ranges strand
#>          <Rle> <IRanges>  <Rle>
#>   [1]     chr2       2-3      +
#>   [2]     chr3       4-6      +
#>   [3]     chrX       6-9      +
#>   [4]     chrY      8-12      +
#>   -------
#>   seqinfo: 4 sequences from hg38 genome; no seqlengths

tidyChromosomes(gr, keep.M = TRUE)
#> GRanges object with 5 ranges and 0 metadata columns:
#>       seqnames    ranges strand
#>          <Rle> <IRanges>  <Rle>
#>   [1]     chr2       2-3      +
#>   [2]     chr3       4-6      +
#>   [3]     chrX       6-9      +
#>   [4]     chrY      8-12      +
#>   [5]     chrM     10-15      +
#>   -------
#>   seqinfo: 5 sequences from hg38 genome; no seqlengths

tidyChromosomes(gr, keep.M = TRUE, keep.Y = FALSE)
#> GRanges object with 4 ranges and 0 metadata columns:
#>       seqnames    ranges strand
#>          <Rle> <IRanges>  <Rle>
#>   [1]     chr2       2-3      +
#>   [2]     chr3       4-6      +
#>   [3]     chrX       6-9      +
#>   [4]     chrM     10-15      +
#>   -------
#>   seqinfo: 4 sequences from hg38 genome; no seqlengths

tidyChromosomes(gr, keep.nonstandard = TRUE)
#> GRanges object with 5 ranges and 0 metadata columns:
#>       seqnames    ranges strand
#>          <Rle> <IRanges>  <Rle>
#>   [1]     chr2       2-3      +
#>   [2]     chr3       4-6      +
#>   [3]     chrX       6-9      +
#>   [4]     chrY      8-12      +
#>   [5]     junk     12-18      +
#>   -------
#>   seqinfo: 5 sequences from hg38 genome; no seqlengths