convertFilter converts an AnnotationFilter::AnnotationFilter or AnnotationFilter::AnnotationFilterList to an SQL where condition for an EnsDb database.

# S4 method for AnnotationFilter,EnsDb
convertFilter(object, db, with.tables = character())

# S4 method for AnnotationFilterList,EnsDb
convertFilter(object, db, with.tables = character())

Arguments

object

AnnotationFilter or AnnotationFilterList objects (or objects extending these classes).

db

EnsDb object.

with.tables

optional character vector specifying the names of the database tables that are being queried.

Value

A character(1) with the SQL where condition.

Note

This function might be used in direct SQL queries on the SQLite database underlying an EnsDb but is more thought to illustrate the use of AnnotationFilter objects in combination with SQL databases. This method is used internally to create the SQL calls to the database.

Author

Johannes Rainer

Examples


library(EnsDb.Hsapiens.v86)
edb <- EnsDb.Hsapiens.v86

## Define a filter
flt <- AnnotationFilter(~ gene_name == "BCL2")

## Use the method from the AnnotationFilter package:
convertFilter(flt)
#> [1] "gene_name == 'BCL2'"

## Create a combination of filters
flt_list <- AnnotationFilter(~ gene_name %in% c("BCL2", "BCL2L11") &
    tx_biotype == "protein_coding")
flt_list
#> AnnotationFilterList of length 2 
#> gene_name %in% c('BCL2', 'BCL2L11') & tx_biotype == 'protein_coding'

convertFilter(flt_list)
#> [1] "gene_name %in% c('BCL2', 'BCL2L11') & tx_biotype == 'protein_coding'"

## Use the filters in the context of an EnsDb database:
convertFilter(flt, edb)
#> [1] "gene.gene_name = 'BCL2'"

convertFilter(flt_list, edb)
#> [1] "(gene.gene_name in ('BCL2','BCL2L11') and tx.tx_biotype = 'protein_coding')"