# Paired-end Interaction Tracks

Paul Shannon

#### 2025-04-15

#### Package

igvR 1.28.0

# Contents

# 1 Overview

With the popularity and wide availability of Hi-C data - a high throughput chromatin confirmation capture technology - an appropriate display format was needed. The igv.js team created the Interact track, supporint the bedpe data file format.

# 2 Example

We demonstrate this track with a few lines extracted from the Encode project’s ENCFF110BUX experiment, from Michael Snyder’s lab, showing the boundaries and extent of two topologically-associated domains (TADS), typically small genomic regions which are somewhat isolated from neighboring regions, which is believed to play a role in restricting enhancer/promoter interactions.

An equally important, and perhaps more common use of paired-end interaction data is to represent Hi-C maps of enhancer-promoter interactions. These data also rely upon the bedpe file format.

igv.js provides several visualization parameters not yet supported in igvR.

To define a TAD, two genomic locations are required, as shown here and in the code below:

          chrom1    start1      end1 chrom2    start2      end2
               2 105780000 105790000      2 105890000 105900000
               2 105575000 105600000      2 106075000 106100000

# 3 Code

These few lines provide a complete, if minimal introduction to the BedpeInteractionsTrack.

    library(igvR)
    igv <- igvR()
    setBrowserWindowTitle(igv, "Paired-end demo")
    setGenome(igv, "hg38")
    tbl.bedpe <- data.frame(chrom1=c("2","2"),
                            start1=c(105780000, 105575000),
                            end1=c(105790000, 105600000),
                            chrom2=c("2","2"),
                            start2=c(105890000, 106075000),
                            end2=c(105900000, 106100000),
                            stringsAsFactors=FALSE)

      # construct a "region of interest" (roi) string from tbl.bedpe
      # this is where our two features are found.

    shoulder <- 300000
    roi <- sprintf("%s:%d-%d", tbl.bedpe$chrom1[1],
                               min(tbl.bedpe$start1) - shoulder,
                               max(tbl.bedpe$end2) + shoulder)

    showGenomicRegion(igv, roi)
    track <- BedpeInteractionsTrack("ENCFF110BUX", tbl.bedpe)
    displayTrack(igv, track)

# 4 Display

# 5 Session Info

    sessionInfo()
    #> R version 4.5.0 RC (2025-04-04 r88126 ucrt)
    #> Platform: x86_64-w64-mingw32/x64
    #> Running under: Windows Server 2022 x64 (build 20348)
    #>
    #> Matrix products: default
    #>   LAPACK version 3.12.1
    #>
    #> locale:
    #> [1] LC_COLLATE=C                           LC_CTYPE=English_United States.utf8    LC_MONETARY=English_United States.utf8
    #> [4] LC_NUMERIC=C                           LC_TIME=English_United States.utf8
    #>
    #> time zone: America/New_York
    #> tzcode source: internal
    #>
    #> attached base packages:
    #> [1] stats     graphics  grDevices utils     datasets  methods   base
    #>
    #> other attached packages:
    #> [1] BiocStyle_2.36.0
    #>
    #> loaded via a namespace (and not attached):
    #>  [1] digest_0.6.37       R6_2.6.1            bookdown_0.43       fastmap_1.2.0       xfun_0.52
    #>  [6] cachem_1.1.0        knitr_1.50          htmltools_0.5.8.1   rmarkdown_2.29      lifecycle_1.0.4
    #> [11] cli_3.6.4           sass_0.4.10         jquerylib_0.1.4     compiler_4.5.0      tools_4.5.0
    #> [16] evaluate_1.0.3      bslib_0.9.0         yaml_2.3.10         BiocManager_1.30.25 jsonlite_2.0.0
    #> [21] rlang_1.1.6