seqSetFilter-methods {SeqArray} | R Documentation

## Set a Filter to Sample or Variant

### Description

Sets a filter to sample and/or variant.

### Usage

    ## S4 method for signature 'SeqVarGDSClass,ANY'
    seqSetFilter(object, variant.sel,
        sample.sel=NULL, variant.id=NULL, sample.id=NULL,
        action=c("set", "intersect", "push", "push+set", "push+intersect", "pop"),
        verbose=TRUE)
    ## S4 method for signature 'SeqVarGDSClass,GRanges'
    seqSetFilter(object, variant.sel,
        rm.txt="chr", intersect=FALSE, verbose=TRUE)
    ## S4 method for signature 'SeqVarGDSClass,GRangesList'
    seqSetFilter(object, variant.sel,
        rm.txt="chr", intersect=FALSE, verbose=TRUE)
    ## S4 method for signature 'SeqVarGDSClass,IRanges'
    seqSetFilter(object, variant.sel,
        chr, intersect=FALSE, verbose=TRUE)
    seqResetFilter(object, sample=TRUE, variant=TRUE, verbose=TRUE)
    seqSetFilterChrom(object, include=NULL, is.num=NA, from.bp=NULL, to.bp=NULL,
        intersect=FALSE, verbose=TRUE)
    seqSetFilterPos(object, chr, pos, intersect=FALSE, multi.pos=FALSE,
        verbose=TRUE)

### Arguments

`object` | a `SeqVarGDSClass` object
`variant.sel` | a logical/raw/index vector indicating the selected variants; `GRanges`, a GRanges object for the genomic locations; `GRangesList`, a GRangesList object for storing a collection of GRanges objects; `IRanges`, a IRanges object for storing a collection of range objects
`sample.sel` | a logical/raw/index vector indicating the selected samples
`variant.id` | ID of selected variants
`sample.id` | ID of selected samples
`action` | `"set"` – set the current filter via `sample.id`, `variant.id`, `samp.sel` or `variant.sel`; `"intersect"` – set the current filter to the intersection of selected samples and/or variants; `"push"` – push the current filter to the stack, and it could be recovered by `"pop"` later, no change on the current filter; `"push+set"` – push the current filter to the stack, and changes the current filter via `sample.id`, `variant.id`, `samp.sel` or `variant.sel`; `"push+intersect"` – push the current filter to the stack, and set the current filter to the intersection of selected samples and/or variants; `"pop"` – pop up the last filter
`rm.txt` | a character, the characters will be removed from `seqnames(variant.sel)`
`chr` | a vector of character for chromsome coding
`pos` | a vector of numeric values for genome coordinate
`sample` | logical, if `TRUE`, include all samples
`variant` | logical, if `TRUE`, include all variants
`include` | NULL, or a vector of characters for specified chromosome(s)
`is.num` | a logical variable: `TRUE`, chromosome code is numeric; `FALSE`, chromosome is not numeric; `is.num=TRUE` is usually used to exclude non-autosomes
`from.bp` | NULL, no limit; a numeric vector, the lower bound of position
`to.bp` | NULL, no limit; a numeric vector, the upper bound of position
`intersect` | if `FALSE`, the candidate samples/variants for selection are all samples/variants (by default); if `TRUE`, the candidate samples/variants are from the selected samples/variants defined via the previous call
`multi.pos` | `FALSE`, use the first matched position; `TRUE`, allow multiple variants at the same position
`verbose` | if `TRUE`, show information

### Details

`seqResetFilter(file)` is equivalent to `seqSetFilter(file)`, where the selection arguments in `seqSetFilter` are `NULL`.

If `from.bp` and `to.bp` has values, they should be equal-size as `include`. A trio of `include`, `from.bp` and `to.bp` indicates a region on human genomes. `NA` in `from.bp` is treated as 0, and `NA` in `to.bp` is treated as the maximum of integer (2^31 - 1).

### Value

None.

### Author(s)

Xiuwen Zheng

### See Also

`seqSetFilterChrom`, `seqSetFilterCond`, `seqGetFilter`, `seqGetData`, `seqApply`

### Examples

    # the GDS file
    (gds.fn <- seqExampleFileName("gds"))

    # display
    (f <- seqOpen(gds.fn))

    # get 'sample.id
    (samp.id <- seqGetData(f, "sample.id"))
    # "NA06984" "NA06985" "NA06986" ...

    # get 'variant.id'
    head(variant.id <- seqGetData(f, "variant.id"))

    # get 'chromosome'
    table(seqGetData(f, "chromosome"))

    # get 'allele'
    head(seqGetData(f, "allele"))
    # "T,C" "G,A" "G,A" ...

    # set sample and variant filters
    seqSetFilter(f, sample.id=samp.id[c(2,4,6,8)])
    set.seed(100)
    seqSetFilter(f, variant.id=sample(variant.id, 5))

    # get genotypic data
    seqGetData(f, "genotype")

    ## OR
    # set sample and variant filters
    seqSetFilter(f, sample.sel=c(2,4,6,8))
    set.seed(100)
    seqSetFilter(f, variant.sel=sample.int(length(variant.id), 5))

    # get genotypic data
    seqGetData(f, "genotype")

    ## set the intersection

    seqResetFilter(f)
    seqSetFilterChrom(f, 10L)
    seqSummary(f, "genotype", check="none")

    AF <- seqAlleleFreq(f)
    table(AF <= 0.9)

    seqSetFilter(f, variant.sel=(AF<=0.9), action="intersect")
    seqSummary(f, "genotype", check="none")

    ## chromosome

    seqResetFilter(f)

    seqSetFilterChrom(f, is.num=TRUE)
    seqSummary(f, "genotype", check="none")

    seqSetFilterChrom(f, is.num=FALSE)
    seqSummary(f, "genotype", check="none")

    seqSetFilterChrom(f, 1:4)
    seqSummary(f, "genotype", check="none")
    table(seqGetData(f, "chromosome"))

    # HLA region
    seqSetFilterChrom(f, 6, from.bp=29719561, to.bp=32883508)
    seqSummary(f, "genotype", check="none")

    # two regions
    seqSetFilterChrom(f, c(1, 6), from.bp=c(1000000, 29719561),
        to.bp=c(90000000, 32883508))
    seqSummary(f, "genotype", check="none")
    seqGetData(f, "chromosome")

    ## intersection option

    seqResetFilter(f)
    seqSetFilterChrom(f, 6, from.bp=29719561, to.bp=32883508)  # MHC
    seqSetFilterChrom(f, include=6)  # chromosome 6

    seqResetFilter(f)
    seqSetFilterChrom(f, 6, from.bp=29719561, to.bp=32883508)  # MHC
    seqSetFilterChrom(f, include=6, intersect=TRUE)  # MHC region only

    # close the GDS file
    seqClose(f)

[Package SeqArray version 1.20.2 Index]