# Organism.dplyr

#### 9 January 2018

# Contents

# 1 Introduction

The Organism.dplyr creates an on disk sqlite database to hold data of an organism combined from an ‘org’ package (e.g., org.Hs.eg.db) and a genome coordinate functionality of the ‘TxDb’ package (e.g., TxDb.Hsapiens.UCSC.hg38.knownGene). It aims to provide an integrated presentation of identifiers and genomic coordinates. And a src_organism object is created to point to the database.

The src_organism object is created as an extension of src_sql and src_sqlite from dplyr, which inherited all dplyr methods. It also implements the `select()` interface from AnnotationDbi and genomic coordinates extractors from GenomicFeatures.

# 2 Constructing a src_organism

## 2.1 Make sqlite datebase from ‘TxDb’ package

The `src_organism()` constructor creates an on disk sqlite database file with data from a given ‘TxDb’ package and corresponding ‘org’ package. When dbpath is given, file is created at the given path, otherwise temporary file is created.

    library(Organism.dplyr)

Running `src_organism()` without a given path will save the sqlite file to a `tempdir()`:

    src <- src_organism("TxDb.Hsapiens.UCSC.hg38.knownGene")

Alternatively you can provide explicit path to where the sqlite file should be saved, and re-use the data base at a later date.

    path <- "path/to/my.sqlite"
    src <- src_organism("TxDb.Hsapiens.UCSC.hg38.knownGene", path)

`supportedOrganisms()` provides a list of organisms with corresponding ‘org’ and ‘TxDb’ packages being supported.

    supportedOrganisms()

    ## # A tibble: 21 x 3
    ##    organism                OrgDb        TxDb
    ##    <chr>                   <chr>        <chr>
    ##  1 Bos taurus              org.Bt.eg.db TxDb.Btaurus.UCSC.bosTau8.refGene
    ##  2 Caenorhabditis elegans  org.Ce.eg.db TxDb.Celegans.UCSC.ce11.refGene
    ##  3 Caenorhabditis elegans  org.Ce.eg.db TxDb.Celegans.UCSC.ce6.ensGene
    ##  4 Canis familiaris        org.Cf.eg.db TxDb.Cfamiliaris.UCSC.canFam3.refGe~
    ##  5 Drosophila melanogaster org.Dm.eg.db TxDb.Dmelanogaster.UCSC.dm3.ensGene
    ##  6 Drosophila melanogaster org.Dm.eg.db TxDb.Dmelanogaster.UCSC.dm6.ensGene
    ##  7 Danio rerio             org.Dr.eg.db TxDb.Drerio.UCSC.danRer10.refGene
    ##  8 Gallus gallus           org.Gg.eg.db TxDb.Ggallus.UCSC.galGal4.refGene
    ##  9 Homo sapiens            org.Hs.eg.db TxDb.Hsapiens.UCSC.hg18.knownGene
    ## 10 Homo sapiens            org.Hs.eg.db TxDb.Hsapiens.UCSC.hg19.knownGene
    ## # ... with 11 more rows

## 2.2 Make sqlite datebase from organism name

Organism name, genome and id could be specified to create sqlite database. Organism name (either Organism or common name) must be provided to create the database, if genome and/or id are not provided, most recent ‘TxDb’ package is used.

    src <- src_ucsc("human", path)

## 2.3 Access existing sqlite file

An existing on-disk sqlite file can be accessed without recreating the database. A version of the database created with TxDb.Hsapiens.UCSC.hg38.knownGene, with just 50 Entrez gene identifiers, is distributed with the Organism.dplyr package

    src <- src_organism(dbpath = hg38light())
    src

    ## src:  sqlite 3.19.3 [C:\Users\biocbuild\bbs-3.6-bioc\tmpdir\RtmpGAM31p\Rinst26bc5bde5a29\Organism.dplyr\extdata\light.hg38.knownGene.sqlite]
    ## tbls: id, id_accession, id_go, id_go_all, id_omim_pm, id_protein,
    ##   id_transcript, ranges_cds, ranges_exon, ranges_gene, ranges_tx

# 3 The “dplyr” interface

All methods from package dplyr can be used for a src_organism object.

Look at all available tables.

    src_tbls(src)

    ##  [1] "id_accession"  "id_transcript" "id"            "id_omim_pm"
    ##  [5] "id_protein"    "id_go"         "id_go_all"     "ranges_gene"
    ##  [9] "ranges_tx"     "ranges_exon"   "ranges_cds"

Look at data from one specific table.

    tbl(src, "id")

    ## # Source: table<id> [?? x 6]
    ## # Database: sqlite 3.19.3 []
    ##    entrez map      ensembl         symbol genename               alias
    ##    <chr>  <chr>    <chr>           <chr>  <chr>                  <chr>
    ##  1 1      19q13.4  ENSG00000121410 A1BG   alpha-1-B glycoprotein A1B
    ##  2 1      19q13.4  ENSG00000121410 A1BG   alpha-1-B glycoprotein ABG
    ##  3 1      19q13.4  ENSG00000121410 A1BG   alpha-1-B glycoprotein GAB
    ##  4 1      19q13.4  ENSG00000121410 A1BG   alpha-1-B glycoprotein HYST2477
    ##  5 1      19q13.4  ENSG00000121410 A1BG   alpha-1-B glycoprotein A1BG
    ##  6 10     8p22     ENSG00000156006 NAT2   N-acetyltransferase 2  AAC2
    ##  7 10     8p22     ENSG00000156006 NAT2   N-acetyltransferase 2  NAT-2
    ##  8 10     8p22     ENSG00000156006 NAT2   N-acetyltransferase 2  PNAT
    ##  9 10     8p22     ENSG00000156006 NAT2   N-acetyltransferase 2  NAT2
    ## 10 100    20q13.12 ENSG00000196839 ADA    adenosine deaminase    ADA
    ## # ... with more rows

Look at fields of one table.

    colnames(tbl(src, "id"))

    ## [1] "entrez"   "map"      "ensembl"  "symbol"   "genename" "alias"

Below are some examples of querying tables using dplyr.

1. Gene symbol starting with “SNORD” (the notation `SNORD%` is from SQL, with `%` representing a wild-card match to any string)

    tbl(src, "id") %>%
        filter(symbol %like% "SNORD%") %>%
        dplyr::select(entrez, map, ensembl, symbol) %>%
        distinct() %>% arrange(symbol) %>% collect()

    ## # A tibble: 9 x 4
    ##   entrez    map     ensembl         symbol
    ##   <chr>     <chr>   <chr>           <chr>
    ## 1 100033413 15q11.2 ENSG00000207063 SNORD116-1
    ## 2 100033414 15q11.2 ENSG00000207001 SNORD116-2
    ## 3 100033415 15q11.2 ENSG00000207014 SNORD116-3
    ## 4 100033416 15q11.2 ENSG00000275529 SNORD116-4
    ## 5 100033417 15q11.2 ENSG00000207191 SNORD116-5
    ## 6 100033418 15q11.2 ENSG00000207442 SNORD116-6
    ## 7 100033419 15q11.2 ENSG00000207133 SNORD116-7
    ## 8 100033420 15q11.2 ENSG00000207093 SNORD116-8
    ## 9 100033421 15q11.2 ENSG00000206727 SNORD116-9

2. Gene ontology (GO) info for gene symbol “ADA”

    inner_join(tbl(src, "id"), tbl(src, "id_go")) %>%
        filter(symbol == "ADA") %>%
        dplyr::select(entrez, ensembl, symbol, go, evidence, ontology)

    ## Joining, by = "entrez"

    ## # Source: lazy query [?? x 6]
    ## # Database: sqlite 3.19.3 []
    ##    entrez ensembl         symbol go         evidence ontology
    ##    <chr>  <chr>           <chr>  <chr>      <chr>    <chr>
    ##  1 100    ENSG00000196839 ADA    GO:0001666 IDA      BP
    ##  2 100    ENSG00000196839 ADA    GO:0001821 IEA      BP
    ##  3 100    ENSG00000196839 ADA    GO:0001829 IEA      BP
    ##  4 100    ENSG00000196839 ADA    GO:0001883 IEA      MF
    ##  5 100    ENSG00000196839 ADA    GO:0001889 IEA      BP
    ##  6 100    ENSG00000196839 ADA    GO:0001890 IEA      BP
    ##  7 100    ENSG00000196839 ADA    GO:0002314 IEA      BP
    ##  8 100    ENSG00000196839 ADA    GO:0002636 IEA      BP
    ##  9 100    ENSG00000196839 ADA    GO:0002686 IEA      BP
    ## 10 100    ENSG00000196839 ADA    GO:0002906 IEA      BP
    ## # ... with more rows

3. Gene transcript counts per gene symbol

    txcount <- inner_join(tbl(src, "id"), tbl(src, "ranges_tx")) %>%
        dplyr::select(symbol, tx_id) %>%
        group_by(symbol) %>%
        summarize(count = n()) %>%
        dplyr::select(symbol, count) %>%
        arrange(desc(count)) %>%
        collect(n=Inf)

    ## Joining, by = "entrez"

    txcount

    ## # A tibble: 18 x 2
    ##    symbol     count
    ##    <chr>      <int>
    ##  1 AKT3         270
    ##  2 RNA5-8S5     128
    ##  3 NAALAD2       50
    ##  4 A1BG          40
    ##  5 MED6          39
    ##  6 CDH2          25
    ##  7 NR2E3         18
    ##  8 RNA28S5       18
    ##  9 NAT2           8
    ## 10 ANO1-AS2       6
    ## 11 SNORD116-2     4
    ## 12 SNORD116-3     4
    ## 13 SNORD116-5     4
    ## 14 ADA            3
    ## 15 SNORD116-1     3
    ## 16 SNORD116-4     2
    ## 17 SNORD116-8     2
    ## 18 ZBTB11-AS1     1

    library(ggplot2)
    ggplot(txcount, aes(x = symbol, y = count)) +
        geom_bar(stat="identity") +
        theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
        ggtitle("Transcript count") +
        labs(x = "Symbol") +
        labs(y = "Count")

4. Gene coordinates of symbol “ADA” and “NAT2” as GRanges

    inner_join(tbl(src, "id"), tbl(src, "ranges_gene")) %>%
        filter(symbol %in% c("ADA", "NAT2")) %>%
        dplyr::select(gene_chrom, gene_start, gene_end, gene_strand,
                      symbol, map) %>%
        collect() %>% GenomicRanges::GRanges()

    ## Joining, by = "entrez"

    ## GRanges object with 5 ranges and 2 metadata columns:
    ##       seqnames               ranges strand |      symbol         map
    ##          <Rle>            <IRanges>  <Rle> | <character> <character>
    ##   [1]     chr8 [18391245, 18401218]      + |        NAT2        8p22
    ##   [2]     chr8 [18391245, 18401218]      + |        NAT2        8p22
    ##   [3]     chr8 [18391245, 18401218]      + |        NAT2        8p22
    ##   [4]     chr8 [18391245, 18401218]      + |        NAT2        8p22
    ##   [5]    chr20 [44619522, 44651742]      - |         ADA    20q13.12
    ##   -------
    ##   seqinfo: 2 sequences from an unspecified genome; no seqlengths

# 4 The “select” interface

Methods `select()`, `keytypes()`, `keys()`, `columns()` and `mapIds` from AnnotationDbi are implemented for src_organism objects.

Use `keytypes()` to discover which keytypes can be passed to keytype argument of methods `select()` or `keys()`.

    keytypes(src)

    ##  [1] "accnum"       "alias"        "cds_chrom"    "cds_end"
    ##  [5] "cds_id"       "cds_name"     "cds_start"    "cds_strand"
    ##  [9] "ensembl"      "ensemblprot"  "ensembltrans" "entrez"
    ## [13] "enzyme"       "evidence"     "evidenceall"  "exon_chrom"
    ## [17] "exon_end"     "exon_id"      "exon_name"    "exon_rank"
    ## [21] "exon_start"   "exon_strand"  "gene_chrom"   "gene_end"
    ## [25] "gene_start"   "gene_strand"  "genename"     "go"
    ## [29] "goall"        "ipi"          "map"          "omim"
    ## [33] "ontology"     "ontologyall"  "pfam"         "pmid"
    ## [37] "prosite"      "refseq"       "symbol"       "tx_chrom"
    ## [41] "tx_end"       "tx_id"        "tx_name"      "tx_start"
    ## [45] "tx_strand"    "tx_type"      "unigene"      "uniprot"

Use `columns()` to discover which kinds of data can be returned for the src_organism object.

    columns(src)

    ##  [1] "accnum"       "alias"        "cds_chrom"    "cds_end"
    ##  [5] "cds_id"       "cds_name"     "cds_start"    "cds_strand"
    ##  [9] "ensembl"      "ensemblprot"  "ensembltrans" "entrez"
    ## [13] "enzyme"       "evidence"     "evidenceall"  "exon_chrom"
    ## [17] "exon_end"     "exon_id"      "exon_name"    "exon_rank"
    ## [21] "exon_start"   "exon_strand"  "gene_chrom"   "gene_end"
    ## [25] "gene_start"   "gene_strand"  "genename"     "go"
    ## [29] "goall"        "ipi"          "map"          "omim"
    ## [33] "ontology"     "ontologyall"  "pfam"         "pmid"
    ## [37] "prosite"      "refseq"       "symbol"       "tx_chrom"
    ## [41] "tx_end"       "tx_id"        "tx_name"      "tx_start"
    ## [45] "tx_strand"    "tx_type"      "unigene"      "uniprot"

`keys()` returns keys for the src_organism object. By default it returns the primary keys for the database, and returns the keys from that keytype when the keytype argument is used.

Keys of entrez

    head(keys(src))

    ## [1] "1"         "10"        "100"       "1000"      "10000"     "100008586"

Keys of symbol

    head(keys(src, "symbol"))

    ## [1] "A1BG"     "ADA"      "AKT3"     "ANO1-AS2" "CDH2"     "DUXB"

`select()` retrieves the data as a tibble based on parameters for selected keys columns and keytype arguments. If requested columns that have multiple matches for the keys, `select_tbl()` will return a tibble with one row for each possible match, and `select()` will return a data frame.

    keytype <- "symbol"
    keys <- c("ADA", "NAT2")
    columns <- c("entrez", "tx_id", "tx_name","exon_id")
    select_tbl(src, keys, columns, keytype)

    ## Joining, by = "entrez"

    ## # Source: lazy query [?? x 5]
    ## # Database: sqlite 3.19.3 []
    ##    symbol entrez  tx_id tx_name    exon_id
    ##    <chr>  <chr>   <int> <chr>        <int>
    ##  1 ADA    100    169786 uc061xfj.1  501379
    ##  2 ADA    100    169786 uc061xfj.1  501383
    ##  3 ADA    100    169786 uc061xfj.1  501385
    ##  4 ADA    100    169786 uc061xfj.1  501387
    ##  5 ADA    100    169786 uc061xfj.1  501389
    ##  6 ADA    100    169786 uc061xfj.1  501390
    ##  7 ADA    100    169786 uc061xfj.1  501392
    ##  8 ADA    100    169787 uc002xmj.4  501379
    ##  9 ADA    100    169787 uc002xmj.4  501382
    ## 10 ADA    100    169787 uc002xmj.4  501384
    ## # ... with more rows

`mapIds()` gets the mapped ids (column) for a set of keys that are of a particular keytype. Usually returned as a named character vector.

    mapIds(src, keys, column = "tx_name", keytype)

    ## Joining, by = "entrez"

    ##          ADA         NAT2
    ## "uc002xmj.4" "uc003wyw.2"

    mapIds(src, keys, column = "tx_name", keytype, multiVals="CharacterList")

    ## Joining, by = "entrez"

    ## CharacterList of length 2
    ## [["ADA"]] uc002xmj.4 uc061xfj.1 uc061xfl.1
    ## [["NAT2"]] uc003wyw.2 uc064kqw.1

# 5 Genomic Coordinates Extractor Interfaces

Eleven genomic coordinates extractor methods are available in this package: `transcripts()`, `exons()`, `cds()`, `genes()`, `promoters()`, `transcriptsBy()`, `exonsBy()`, `cdsBy()`, `intronsByTranscript()`, `fiveUTRsByTranscript()`, `threeUTRsByTranscript()`. Data can be returned in two versions, for instance tibble (`transcripts_tbl()`) and GRanges or GRangesList (`transcripts()`).

Filters can be applied to all extractor functions. The output can be resctricted by an `AnnotationFilter`, an `AnnotationFilterList`, or an expression that can be tranlated into an `AnnotationFilterList`. Valid filters can be retrieved by `supportedFilters(src)`.

    supportedFilters(src)

    ##                filter        field
    ## 1        AccnumFilter       accnum
    ## 2         AliasFilter        alias
    ## 3      CdsChromFilter    cds_chrom
    ## 45       CdsEndFilter      cds_end
    ## 43        CdsIdFilter       cds_id
    ## 4       CdsNameFilter     cds_name
    ## 44     CdsStartFilter    cds_start
    ## 5     CdsStrandFilter   cds_strand
    ## 6       EnsemblFilter      ensembl
    ## 7   EnsemblprotFilter  ensemblprot
    ## 8  EnsembltransFilter ensembltrans
    ## 9        EntrezFilter       entrez
    ## 10       EnzymeFilter       enzyme
    ## 11     EvidenceFilter     evidence
    ## 12  EvidenceallFilter  evidenceall
    ## 13    ExonChromFilter   exon_chrom
    ## 48      ExonEndFilter     exon_end
    ## 46       ExonIdFilter      exon_id
    ## 14     ExonNameFilter    exon_name
    ## 49     ExonRankFilter    exon_rank
    ## 47    ExonStartFilter   exon_start
    ## 15   ExonStrandFilter  exon_strand
    ## 17    FlybaseCgFilter   flybase_cg
    ## 16      FlybaseFilter      flybase
    ## 18  FlybaseProtFilter flybase_prot
    ## 55      GRangesFilter      granges
    ## 19    GeneChromFilter   gene_chrom
    ## 51      GeneEndFilter     gene_end
    ## 50    GeneStartFilter   gene_start
    ## 20   GeneStrandFilter  gene_strand
    ## 21     GenenameFilter     genename
    ## 22           GoFilter           go
    ## 23        GoallFilter        goall
    ## 24          IpiFilter          ipi
    ## 25          MapFilter          map
    ## 26          MgiFilter          mgi
    ## 27         OmimFilter         omim
    ## 28     OntologyFilter     ontology
    ## 29  OntologyallFilter  ontologyall
    ## 30         PfamFilter         pfam
    ## 31         PmidFilter         pmid
    ## 32      PrositeFilter      prosite
    ## 33       RefseqFilter       refseq
    ## 34       SymbolFilter       symbol
    ## 35      TxChromFilter     tx_chrom
    ## 54        TxEndFilter       tx_end
    ## 52         TxIdFilter        tx_id
    ## 36       TxNameFilter      tx_name
    ## 53      TxStartFilter     tx_start
    ## 37     TxStrandFilter    tx_strand
    ## 38       TxTypeFilter      tx_type
    ## 39      UnigeneFilter      unigene
    ## 40      UniprotFilter      uniprot
    ## 41     WormbaseFilter     wormbase
    ## 42         ZfinFilter         zfin

All filters take two parameters: value and condition, condition could be one of “==”, “!=”, “startsWith”, “endsWith”, “>”, “<”, “>=” and “<=”, default condition is “==”.

    EnsemblFilter("ENSG00000196839")

    ## class: EnsemblFilter
    ## condition: ==
    ## value: ENSG00000196839

    SymbolFilter("SNORD", "startsWith")

    ## class: SymbolFilter
    ## condition: startsWith
    ## value: SNORD

The following illustrates several ways of inputting filters to an extractor function.

    smbl <- SymbolFilter("SNORD", "startsWith")
    transcripts_tbl(src, filter=smbl)

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT *
    ## FROM `id`
    ## WHERE (`symbol` LIKE 'SNORD%')

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM `id`
    ## WHERE (`symbol` LIKE 'SNORD%')) AS `TBL_LEFT`
    ##   LEFT JOIN `ranges_tx` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)

    ## # Source: lazy query [?? x 7]
    ## # Database: sqlite 3.19.3 []
    ## # Ordered by: tx_id
    ##   tx_chrom tx_start   tx_end tx_strand  tx_id tx_name    symbol
    ##   <chr>       <int>    <int> <chr>      <int> <chr>      <chr>
    ## 1 chr15    25051477 25051571 +         123215 uc001yxg.4 SNORD116-1
    ## 2 chr15    25054210 25054304 +         123216 uc001yxi.4 SNORD116-2
    ## 3 chr15    25056860 25056954 +         123217 uc001yxk.4 SNORD116-3
    ## 4 chr15    25059538 25059633 +         123218 uc001yxl.5 SNORD116-4
    ## 5 chr15    25062333 25062427 +         123219 uc001yxo.4 SNORD116-5
    ## 6 chr15    25065026 25065121 +         123221 uc001yxp.5 SNORD116-2
    ## 7 chr15    25067788 25067882 +         123222 uc059gus.1 SNORD116-5
    ## 8 chr15    25070432 25070526 +         123223 uc001yxr.4 SNORD116-8
    ## 9 chr15    25073107 25073201 +         123224 uc001yxs.4 SNORD116-3

    filter <- AnnotationFilterList(smbl)
    transcripts_tbl(src, filter=filter)

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT *
    ## FROM `id`
    ## WHERE (`symbol` LIKE 'SNORD%')

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM `id`
    ## WHERE (`symbol` LIKE 'SNORD%')) AS `TBL_LEFT`
    ##   LEFT JOIN `ranges_tx` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)

    ## # Source: lazy query [?? x 7]
    ## # Database: sqlite 3.19.3 []
    ## # Ordered by: tx_id
    ##   tx_chrom tx_start   tx_end tx_strand  tx_id tx_name    symbol
    ##   <chr>       <int>    <int> <chr>      <int> <chr>      <chr>
    ## 1 chr15    25051477 25051571 +         123215 uc001yxg.4 SNORD116-1
    ## 2 chr15    25054210 25054304 +         123216 uc001yxi.4 SNORD116-2
    ## 3 chr15    25056860 25056954 +         123217 uc001yxk.4 SNORD116-3
    ## 4 chr15    25059538 25059633 +         123218 uc001yxl.5 SNORD116-4
    ## 5 chr15    25062333 25062427 +         123219 uc001yxo.4 SNORD116-5
    ## 6 chr15    25065026 25065121 +         123221 uc001yxp.5 SNORD116-2
    ## 7 chr15    25067788 25067882 +         123222 uc059gus.1 SNORD116-5
    ## 8 chr15    25070432 25070526 +         123223 uc001yxr.4 SNORD116-8
    ## 9 chr15    25073107 25073201 +         123224 uc001yxs.4 SNORD116-3

    transcripts_tbl(src, filter=~smbl)

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT *
    ## FROM `id`
    ## WHERE (`symbol` LIKE 'SNORD%')

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM `id`
    ## WHERE (`symbol` LIKE 'SNORD%')) AS `TBL_LEFT`
    ##   LEFT JOIN `ranges_tx` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)

    ## # Source: lazy query [?? x 7]
    ## # Database: sqlite 3.19.3 []
    ## # Ordered by: tx_id
    ##   tx_chrom tx_start   tx_end tx_strand  tx_id tx_name    symbol
    ##   <chr>       <int>    <int> <chr>      <int> <chr>      <chr>
    ## 1 chr15    25051477 25051571 +         123215 uc001yxg.4 SNORD116-1
    ## 2 chr15    25054210 25054304 +         123216 uc001yxi.4 SNORD116-2
    ## 3 chr15    25056860 25056954 +         123217 uc001yxk.4 SNORD116-3
    ## 4 chr15    25059538 25059633 +         123218 uc001yxl.5 SNORD116-4
    ## 5 chr15    25062333 25062427 +         123219 uc001yxo.4 SNORD116-5
    ## 6 chr15    25065026 25065121 +         123221 uc001yxp.5 SNORD116-2
    ## 7 chr15    25067788 25067882 +         123222 uc059gus.1 SNORD116-5
    ## 8 chr15    25070432 25070526 +         123223 uc001yxr.4 SNORD116-8
    ## 9 chr15    25073107 25073201 +         123224 uc001yxs.4 SNORD116-3

A `GRangesFilter()` can also be used as a filter for the methods with result displaying as GRanges or GRangesList.

    gr <- GRangesFilter(GenomicRanges::GRanges("chr15:25062333-25065121"))
    transcripts(src, filter=~smbl & gr)

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT *
    ## FROM `id`
    ## WHERE (`symbol` LIKE 'SNORD%')

    ## Warning in as.data.frame(mcols(x), ...): Arguments in '...' ignored

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM `id`
    ## WHERE (`symbol` LIKE 'SNORD%')) AS `TBL_LEFT`
    ##   LEFT JOIN `ranges_tx` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)

    ## <SQL>
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`, `map`, `ensembl`, `symbol`, `genename`, `alias`
    ## FROM (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM `id`
    ## WHERE (`symbol` LIKE 'SNORD%')) AS `TBL_LEFT`
    ##   LEFT JOIN `ranges_tx` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)
    ## )) AS `TBL_LEFT`
    ##   INNER JOIN `table1_8848` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)

    ## GRanges object with 2 ranges and 3 metadata columns:
    ##       seqnames               ranges strand |     tx_id     tx_name
    ##          <Rle>            <IRanges>  <Rle> | <integer> <character>
    ##   [1]    chr15 [25062333, 25062427]      + |    123219  uc001yxo.4
    ##   [2]    chr15 [25065026, 25065121]      + |    123221  uc001yxp.5
    ##            symbol
    ##       <character>
    ##   [1]  SNORD116-5
    ##   [2]  SNORD116-2
    ##   -------
    ##   seqinfo: 455 sequences (1 circular) from hg38 genome

Filters in extractor functions support `&`, `|`, `!`(negation), and `()`(grouping). Transcript coordinates of gene symbol equal to “ADA” and transcript start position less than 44619810.

    transcripts_tbl(src, filter = AnnotationFilterList(
        SymbolFilter("ADA"),
        TxStartFilter(44619810,"<"),
        logicOp="&")
    )

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT *
    ## FROM `id`
    ## WHERE (`symbol` = 'ADA')

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`
    ## WHERE (`tx_start` < 44619810.0)

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM `id`
    ## WHERE (`symbol` = 'ADA')) AS `TBL_LEFT`
    ##   LEFT JOIN `ranges_tx` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)

    ## <SQL>
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`, `map`, `ensembl`, `symbol`, `genename`, `alias`
    ## FROM (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM `id`
    ## WHERE (`symbol` = 'ADA')) AS `TBL_LEFT`
    ##   LEFT JOIN `ranges_tx` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)
    ## )) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`tx_type` AS `tx_type`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`
    ##   FROM (SELECT *
    ## FROM `ranges_tx`
    ## WHERE (`tx_start` < 44619810.0)) AS `TBL_LEFT`
    ##   LEFT JOIN `id` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name` AND `TBL_LEFT`.`map` = `TBL_RIGHT`.`map` AND `TBL_LEFT`.`ensembl` = `TBL_RIGHT`.`ensembl` AND `TBL_LEFT`.`symbol` = `TBL_RIGHT`.`symbol` AND `TBL_LEFT`.`genename` = `TBL_RIGHT`.`genename` AND `TBL_LEFT`.`alias` = `TBL_RIGHT`.`alias`)

    ## # Source: lazy query [?? x 7]
    ## # Database: sqlite 3.19.3 []
    ## # Ordered by: tx_id
    ##   tx_chrom tx_start   tx_end tx_strand  tx_id tx_name    symbol
    ##   <chr>       <int>    <int> <chr>      <int> <chr>      <chr>
    ## 1 chr20    44619522 44626491 -         169786 uc061xfj.1 ADA
    ## 2 chr20    44619522 44651742 -         169787 uc002xmj.4 ADA

    ## Equivalent to
    transcripts_tbl(src, filter = ~symbol == "ADA" & tx_start < 44619810)

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT *
    ## FROM `id`
    ## WHERE (`symbol` = 'ADA')

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`
    ## WHERE (`tx_start` < 44619810.0)

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM `id`
    ## WHERE (`symbol` = 'ADA')) AS `TBL_LEFT`
    ##   LEFT JOIN `ranges_tx` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)

    ## <SQL>
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`, `map`, `ensembl`, `symbol`, `genename`, `alias`
    ## FROM (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM `id`
    ## WHERE (`symbol` = 'ADA')) AS `TBL_LEFT`
    ##   LEFT JOIN `ranges_tx` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)
    ## )) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`tx_type` AS `tx_type`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`
    ##   FROM (SELECT *
    ## FROM `ranges_tx`
    ## WHERE (`tx_start` < 44619810.0)) AS `TBL_LEFT`
    ##   LEFT JOIN `id` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name` AND `TBL_LEFT`.`map` = `TBL_RIGHT`.`map` AND `TBL_LEFT`.`ensembl` = `TBL_RIGHT`.`ensembl` AND `TBL_LEFT`.`symbol` = `TBL_RIGHT`.`symbol` AND `TBL_LEFT`.`genename` = `TBL_RIGHT`.`genename` AND `TBL_LEFT`.`alias` = `TBL_RIGHT`.`alias`)

    ## # Source: lazy query [?? x 7]
    ## # Database: sqlite 3.19.3 []
    ## # Ordered by: tx_id
    ##   tx_chrom tx_start   tx_end tx_strand  tx_id tx_name    symbol
    ##   <chr>       <int>    <int> <chr>      <int> <chr>      <chr>
    ## 1 chr20    44619522 44626491 -         169786 uc061xfj.1 ADA
    ## 2 chr20    44619522 44651742 -         169787 uc002xmj.4 ADA

Transcripts coordinates of gene symbol equal to “ADA” or transcript end position equal to 243843236.

    txend <- TxEndFilter(243843236, '==')
    transcripts_tbl(src, filter = ~symbol == "ADA" | txend)

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT *
    ## FROM `id`
    ## WHERE (`symbol` = 'ADA')

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`
    ## WHERE (`tx_end` = '243843236')

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM `id`
    ## WHERE (`symbol` = 'ADA')) AS `TBL_LEFT`
    ##   LEFT JOIN `ranges_tx` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)

    ## <SQL>
    ## SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`, `map`, `ensembl`, `symbol`, `genename`, `alias`, `tx_type`
    ## FROM (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM (SELECT *
    ## FROM `ranges_tx`)) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM (SELECT *
    ## FROM `id`)
    ## WHERE (`symbol` = 'ADA')) AS `TBL_LEFT`
    ##   LEFT JOIN (SELECT *
    ## FROM `ranges_tx`) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)
    ## )
    ## UNION
    ## SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`, `map`, `ensembl`, `symbol`, `genename`, `alias`, `tx_type`
    ## FROM (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`tx_type` AS `tx_type`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`
    ##   FROM (SELECT *
    ## FROM (SELECT *
    ## FROM `ranges_tx`)
    ## WHERE (`tx_end` = '243843236')) AS `TBL_LEFT`
    ##   LEFT JOIN (SELECT *
    ## FROM `id`) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## )

    ## # Source: lazy query [?? x 7]
    ## # Database: sqlite 3.19.3 []
    ## # Ordered by: tx_id
    ##   tx_chrom  tx_start    tx_end tx_strand  tx_id tx_name    symbol
    ##   <chr>        <int>     <int> <chr>      <int> <chr>      <chr>
    ## 1 chr1     243488233 243843236 -          15880 uc001hzz.2 AKT3
    ## 2 chr20     44619522  44626491 -         169786 uc061xfj.1 ADA
    ## 3 chr20     44619522  44651742 -         169787 uc002xmj.4 ADA
    ## 4 chr20     44619810  44651691 -         169789 uc061xfl.1 ADA

Using negation to find transcript coordinates of gene symbol equal to “ADA” and transcript start positions NOT less than 44619810.

    transcripts_tbl(src, filter = ~symbol == "ADA" & !tx_start < 44618910)

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT *
    ## FROM `id`
    ## WHERE (`symbol` = 'ADA')

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`
    ## WHERE (NOT(`tx_start` < 44618910.0))

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM `id`
    ## WHERE (`symbol` = 'ADA')) AS `TBL_LEFT`
    ##   LEFT JOIN `ranges_tx` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)

    ## <SQL>
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`, `map`, `ensembl`, `symbol`, `genename`, `alias`
    ## FROM (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM `id`
    ## WHERE (`symbol` = 'ADA')) AS `TBL_LEFT`
    ##   LEFT JOIN `ranges_tx` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)
    ## )) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`tx_type` AS `tx_type`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`
    ##   FROM (SELECT *
    ## FROM `ranges_tx`
    ## WHERE (NOT(`tx_start` < 44618910.0))) AS `TBL_LEFT`
    ##   LEFT JOIN `id` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name` AND `TBL_LEFT`.`map` = `TBL_RIGHT`.`map` AND `TBL_LEFT`.`ensembl` = `TBL_RIGHT`.`ensembl` AND `TBL_LEFT`.`symbol` = `TBL_RIGHT`.`symbol` AND `TBL_LEFT`.`genename` = `TBL_RIGHT`.`genename` AND `TBL_LEFT`.`alias` = `TBL_RIGHT`.`alias`)

    ## # Source: lazy query [?? x 7]
    ## # Database: sqlite 3.19.3 []
    ## # Ordered by: tx_id
    ##   tx_chrom tx_start   tx_end tx_strand  tx_id tx_name    symbol
    ##   <chr>       <int>    <int> <chr>      <int> <chr>      <chr>
    ## 1 chr20    44619522 44626491 -         169786 uc061xfj.1 ADA
    ## 2 chr20    44619522 44651742 -         169787 uc002xmj.4 ADA
    ## 3 chr20    44619810 44651691 -         169789 uc061xfl.1 ADA

Using grouping to find transcript coordinates of a long filter statement.

    transcripts_tbl(src,
        filter = ~(symbol == 'ADA' & !(tx_start >= 44619810 | tx_end < 44651742)) |
                  (smbl & !tx_end > 25056954)
    )

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT *
    ## FROM `id`
    ## WHERE (`symbol` = 'ADA')

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`
    ## WHERE (NOT(`tx_start` >= 44619810.0))

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`
    ## WHERE (NOT(`tx_end` < 44651742.0))

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`tx_type` AS `tx_type`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`
    ##   FROM (SELECT *
    ## FROM `ranges_tx`
    ## WHERE (NOT(`tx_start` >= 44619810.0))) AS `TBL_LEFT`
    ##   LEFT JOIN `id` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM `id`
    ## WHERE (`symbol` = 'ADA')) AS `TBL_LEFT`
    ##   LEFT JOIN `ranges_tx` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT *
    ## FROM `id`
    ## WHERE (`symbol` LIKE 'SNORD%')

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`
    ## WHERE (NOT(`tx_end` > 25056954.0))

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM `id`
    ## WHERE (`symbol` LIKE 'SNORD%')) AS `TBL_LEFT`
    ##   LEFT JOIN `ranges_tx` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)

    ## <SQL>
    ## SELECT *
    ## FROM `ranges_tx`

    ## <SQL>
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`, `map`, `ensembl`, `symbol`, `genename`, `alias`
    ## FROM (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM `id`
    ## WHERE (`symbol` = 'ADA')) AS `TBL_LEFT`
    ##   LEFT JOIN `ranges_tx` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)
    ## )) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`, `map`, `ensembl`, `symbol`, `genename`, `alias`
    ## FROM (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM `ranges_tx`) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`tx_type` AS `tx_type`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`
    ##   FROM (SELECT *
    ## FROM `ranges_tx`
    ## WHERE (NOT(`tx_start` >= 44619810.0))) AS `TBL_LEFT`
    ##   LEFT JOIN `id` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)
    ## )) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`tx_type` AS `tx_type`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`
    ##   FROM (SELECT *
    ## FROM `ranges_tx`
    ## WHERE (NOT(`tx_end` < 44651742.0))) AS `TBL_LEFT`
    ##   LEFT JOIN `id` AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name` AND `TBL_LEFT`.`map` = `TBL_RIGHT`.`map` AND `TBL_LEFT`.`ensembl` = `TBL_RIGHT`.`ensembl` AND `TBL_LEFT`.`symbol` = `TBL_RIGHT`.`symbol` AND `TBL_LEFT`.`genename` = `TBL_RIGHT`.`genename` AND `TBL_LEFT`.`alias` = `TBL_RIGHT`.`alias`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name` AND `TBL_LEFT`.`map` = `TBL_RIGHT`.`map` AND `TBL_LEFT`.`ensembl` = `TBL_RIGHT`.`ensembl` AND `TBL_LEFT`.`symbol` = `TBL_RIGHT`.`symbol` AND `TBL_LEFT`.`genename` = `TBL_RIGHT`.`genename` AND `TBL_LEFT`.`alias` = `TBL_RIGHT`.`alias`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)

    ## <SQL>
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM (SELECT *
    ## FROM `ranges_tx`)) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`, `map`, `ensembl`, `symbol`, `genename`, `alias`
    ## FROM (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM (SELECT *
    ## FROM `ranges_tx`)) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM (SELECT *
    ## FROM `id`)
    ## WHERE (`symbol` = 'ADA')) AS `TBL_LEFT`
    ##   LEFT JOIN (SELECT *
    ## FROM `ranges_tx`) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)
    ## )) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`, `map`, `ensembl`, `symbol`, `genename`, `alias`
    ## FROM (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM (SELECT *
    ## FROM `ranges_tx`)) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`tx_type` AS `tx_type`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`
    ##   FROM (SELECT *
    ## FROM (SELECT *
    ## FROM `ranges_tx`)
    ## WHERE (NOT(`tx_start` >= 44619810.0))) AS `TBL_LEFT`
    ##   LEFT JOIN (SELECT *
    ## FROM `id`) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)
    ## )) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`tx_type` AS `tx_type`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`
    ##   FROM (SELECT *
    ## FROM (SELECT *
    ## FROM `ranges_tx`)
    ## WHERE (NOT(`tx_end` < 44651742.0))) AS `TBL_LEFT`
    ##   LEFT JOIN (SELECT *
    ## FROM `id`) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name` AND `TBL_LEFT`.`map` = `TBL_RIGHT`.`map` AND `TBL_LEFT`.`ensembl` = `TBL_RIGHT`.`ensembl` AND `TBL_LEFT`.`symbol` = `TBL_RIGHT`.`symbol` AND `TBL_LEFT`.`genename` = `TBL_RIGHT`.`genename` AND `TBL_LEFT`.`alias` = `TBL_RIGHT`.`alias`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name` AND `TBL_LEFT`.`map` = `TBL_RIGHT`.`map` AND `TBL_LEFT`.`ensembl` = `TBL_RIGHT`.`ensembl` AND `TBL_LEFT`.`symbol` = `TBL_RIGHT`.`symbol` AND `TBL_LEFT`.`genename` = `TBL_RIGHT`.`genename` AND `TBL_LEFT`.`alias` = `TBL_RIGHT`.`alias`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)
    ##
    ## UNION
    ## SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`, `map`, `ensembl`, `symbol`, `genename`, `alias`
    ## FROM (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT `tx_chrom`, `tx_strand`, `tx_start`, `tx_end`, `entrez`, `tx_id`, `tx_name`
    ## FROM (SELECT *
    ## FROM `ranges_tx`)) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`map` AS `map`, `TBL_LEFT`.`ensembl` AS `ensembl`, `TBL_LEFT`.`symbol` AS `symbol`, `TBL_LEFT`.`genename` AS `genename`, `TBL_LEFT`.`alias` AS `alias`, `TBL_RIGHT`.`tx_chrom` AS `tx_chrom`, `TBL_RIGHT`.`tx_strand` AS `tx_strand`, `TBL_RIGHT`.`tx_start` AS `tx_start`, `TBL_RIGHT`.`tx_end` AS `tx_end`, `TBL_RIGHT`.`tx_id` AS `tx_id`, `TBL_RIGHT`.`tx_name` AS `tx_name`, `TBL_RIGHT`.`tx_type` AS `tx_type`
    ##   FROM (SELECT *
    ## FROM (SELECT *
    ## FROM `id`)
    ## WHERE (`symbol` LIKE 'SNORD%')) AS `TBL_LEFT`
    ##   LEFT JOIN (SELECT *
    ## FROM `ranges_tx`) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name`)
    ## )) AS `TBL_LEFT`
    ##   INNER JOIN (SELECT `TBL_LEFT`.`tx_chrom` AS `tx_chrom`, `TBL_LEFT`.`tx_strand` AS `tx_strand`, `TBL_LEFT`.`tx_start` AS `tx_start`, `TBL_LEFT`.`tx_end` AS `tx_end`, `TBL_LEFT`.`entrez` AS `entrez`, `TBL_LEFT`.`tx_id` AS `tx_id`, `TBL_LEFT`.`tx_name` AS `tx_name`, `TBL_LEFT`.`tx_type` AS `tx_type`, `TBL_RIGHT`.`map` AS `map`, `TBL_RIGHT`.`ensembl` AS `ensembl`, `TBL_RIGHT`.`symbol` AS `symbol`, `TBL_RIGHT`.`genename` AS `genename`, `TBL_RIGHT`.`alias` AS `alias`
    ##   FROM (SELECT *
    ## FROM (SELECT *
    ## FROM `ranges_tx`)
    ## WHERE (NOT(`tx_end` > 25056954.0))) AS `TBL_LEFT`
    ##   LEFT JOIN (SELECT *
    ## FROM `id`) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez`)
    ## ) AS `TBL_RIGHT`
    ##   ON (`TBL_LEFT`.`tx_chrom` = `TBL_RIGHT`.`tx_chrom` AND `TBL_LEFT`.`tx_strand` = `TBL_RIGHT`.`tx_strand` AND `TBL_LEFT`.`tx_start` = `TBL_RIGHT`.`tx_start` AND `TBL_LEFT`.`tx_end` = `TBL_RIGHT`.`tx_end` AND `TBL_LEFT`.`entrez` = `TBL_RIGHT`.`entrez` AND `TBL_LEFT`.`tx_id` = `TBL_RIGHT`.`tx_id` AND `TBL_LEFT`.`tx_name` = `TBL_RIGHT`.`tx_name` AND `TBL_LEFT`.`map` = `TBL_RIGHT`.`map` AND `TBL_LEFT`.`ensembl` = `TBL_RIGHT`.`ensembl` AND `TBL_LEFT`.`symbol` = `TBL_RIGHT`.`symbol` AND `TBL_LEFT`.`genename` = `TBL_RIGHT`.`genename` AND `TBL_LEFT`.`alias` = `TBL_RIGHT`.`alias`)

    ## # Source: lazy query [?? x 7]
    ## # Database: sqlite 3.19.3 []
    ## # Ordered by: tx_id
    ##   tx_chrom tx_start   tx_end tx_strand  tx_id tx_name    symbol
    ##   <chr>       <int>    <int> <chr>      <int> <chr>      <chr>
    ## 1 chr15    25051477 25051571 +         123215 uc001yxg.4 SNORD116-1
    ## 2 chr15    25054210 25054304 +         123216 uc001yxi.4 SNORD116-2
    ## 3 chr15    25056860 25056954 +         123217 uc001yxk.4 SNORD116-3
    ## 4 chr20    44619522 44651742 -         169787 uc002xmj.4 ADA

    sessionInfo()

    ## R version 3.4.3 (2017-11-30)
    ## Platform: x86_64-w64-mingw32/x64 (64-bit)
    ## Running under: Windows Server 2012 R2 x64 (build 9600)
    ##
    ## Matrix products: default
    ##
    ## locale:
    ## [1] LC_COLLATE=C
    ## [2] LC_CTYPE=English_United States.1252
    ## [3] LC_MONETARY=English_United States.1252
    ## [4] LC_NUMERIC=C
    ## [5] LC_TIME=English_United States.1252
    ##
    ## attached base packages:
    ## [1] parallel  stats4    stats     graphics  grDevices utils     datasets
    ## [8] methods   base
    ##
    ## other attached packages:
    ##  [1] bindrcpp_0.2           ggplot2_2.2.1          GenomicRanges_1.30.1
    ##  [4] GenomeInfoDb_1.14.0    IRanges_2.12.0         S4Vectors_0.16.0
    ##  [7] BiocGenerics_0.24.0    Organism.dplyr_1.6.2   AnnotationFilter_1.2.0
    ## [10] dplyr_0.7.4            BiocStyle_2.6.1
    ##
    ## loaded via a namespace (and not attached):
    ##  [1] Rcpp_0.12.14               lattice_0.20-35
    ##  [3] prettyunits_1.0.2          Rsamtools_1.30.0
    ##  [5] Biostrings_2.46.0          utf8_1.1.3
    ##  [7] assertthat_0.2.0           rprojroot_1.3-2
    ##  [9] digest_0.6.13              BiocFileCache_1.2.1
    ## [11] plyr_1.8.4                 R6_2.2.2
    ## [13] backports_1.1.2            RSQLite_2.0
    ## [15] evaluate_0.10.1            httr_1.3.1
    ## [17] pillar_1.0.1               zlibbioc_1.24.0
    ## [19] rlang_0.1.6                GenomicFeatures_1.30.0
    ## [21] progress_1.1.2             lazyeval_0.2.1
    ## [23] blob_1.1.0                 Matrix_1.2-12
    ## [25] rmarkdown_1.8              labeling_0.3
    ## [27] RMySQL_0.10.13             BiocParallel_1.12.0
    ## [29] stringr_1.2.0              RCurl_1.95-4.10
    ## [31] bit_1.1-12                 biomaRt_2.34.1
    ## [33] munsell_0.4.3              DelayedArray_0.4.1
    ## [35] compiler_3.4.3             rtracklayer_1.38.2
    ## [37] pkgconfig_2.0.1            htmltools_0.3.6
    ## [39] tidyselect_0.2.3           SummarizedExperiment_1.8.1
    ## [41] tibble_1.4.1               GenomeInfoDbData_1.0.0
    ## [43] bookdown_0.5               matrixStats_0.52.2
    ## [45] XML_3.98-1.9               crayon_1.3.4
    ## [47] dbplyr_1.2.0               GenomicAlignments_1.14.1
    ## [49] bitops_1.0-6               rappdirs_0.3.1
    ## [51] grid_3.4.3                 gtable_0.2.0
    ## [53] DBI_0.7                    magrittr_1.5
    ## [55] scales_0.5.0               cli_1.0.0
    ## [57] stringi_1.1.6              XVector_0.18.0
    ## [59] tools_3.4.3                bit64_0.9-7
    ## [61] Biobase_2.38.0             glue_1.2.0
    ## [63] purrr_0.2.4                yaml_2.1.16
    ## [65] AnnotationDbi_1.40.0       colorspace_1.3-2
    ## [67] memoise_1.1.0              knitr_1.18
    ## [69] bindr_0.1