Introduction

Methrix provides set of function which allows easy importing of various flavors of bedgraphs generated by methylation callers, and many downstream analysis to be performed on large matrices.

This vignette describes basic usage of the package intended to process several large bedgraph files in R. In addition, a detailed exemplary complete data analysis with steps from reading in to annotation and differential methylation calling can be found in our WGBS best practices workflow

Overview and usage functions of the package

Installation

NOTE

Installation from BioConductor requires the BioC and R versions to be the newest. This arises from the restrictions imposed by BioConductor community which might cause package incompatibilities with the earlier versions of R (for e.g; R < 4.0). In that case installing from GitHub might be easier since it is much more merciful with regards to versions.

Reading bedgraph files

read_bedgraphs function is a versatile bedgraph reader intended to import bedgraph files generated virtually by any sort of methylation calling program. It requires user to provide indices for chromosome names, start position and other required fields. There are also presets available to import bedgraphs from most common programs such as Bismark, MethylDackel, and MethylcTools.

We can import bedgraph files with the function read_bedgraphs which reads in the bedgraphs, adds CpGs missing from the reference set, and creates a methylation/coverage matrices. Once the process is complete - it returns an object of class methrix which in turn inherits SummarizedExperiment class. methrix object contains ‘methylation’ and ‘coverage’ matrices (either in-memory or as on-disk HDF5 arrays) along with pheno-data and other basic info. This object can be passed to all downstream functions for various analysis.

Note: Use the argument pipeline if your bedgraphs are generated with “Bismark”, “MethylDeckal”, or “MethylcTools”. This will automatically figure out the file formats for you, and you dont have to use the arguments chr_idx start_idx and so..

HTML QC report

Get basic summary statistics of the methrix object with methrix_report function which produces an interactive html report

Click here for an example report.

Basic operations

Extract methylation/coverage matrices

SessionInfo

sessionInfo()
#> R version 4.1.0 (2021-05-18)
#> Platform: x86_64-pc-linux-gnu (64-bit)
#> Running under: Ubuntu 20.04.2 LTS
#> 
#> Matrix products: default
#> BLAS:   /home/biocbuild/bbs-3.13-bioc/R/lib/libRblas.so
#> LAPACK: /home/biocbuild/bbs-3.13-bioc/R/lib/libRlapack.so
#> 
#> locale:
#>  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
#>  [3] LC_TIME=en_GB              LC_COLLATE=C              
#>  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
#>  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
#>  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
#> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
#> 
#> attached base packages:
#> [1] parallel  stats4    stats     graphics  grDevices utils     datasets 
#> [8] methods   base     
#> 
#> other attached packages:
#>  [1] bsseq_1.28.0                         MafDb.1Kgenomes.phase3.hs37d5_3.10.0
#>  [3] GenomicScores_2.4.0                  BSgenome.Hsapiens.UCSC.hg19_1.4.3   
#>  [5] BSgenome_1.60.0                      rtracklayer_1.52.0                  
#>  [7] Biostrings_2.60.0                    XVector_0.32.0                      
#>  [9] methrix_1.6.0                        SummarizedExperiment_1.22.0         
#> [11] Biobase_2.52.0                       GenomicRanges_1.44.0                
#> [13] GenomeInfoDb_1.28.0                  IRanges_2.26.0                      
#> [15] S4Vectors_0.30.0                     BiocGenerics_0.38.0                 
#> [17] MatrixGenerics_1.4.0                 matrixStats_0.58.0                  
#> [19] data.table_1.14.0                   
#> 
#> loaded via a namespace (and not attached):
#>  [1] colorspace_2.0-1              rjson_0.2.20                 
#>  [3] ellipsis_0.3.2                farver_2.1.0                 
#>  [5] bit64_4.0.5                   interactiveDisplayBase_1.30.0
#>  [7] AnnotationDbi_1.54.0          fansi_0.4.2                  
#>  [9] R.methodsS3_1.8.1             sparseMatrixStats_1.4.0      
#> [11] cachem_1.0.5                  knitr_1.33                   
#> [13] jsonlite_1.7.2                Rsamtools_2.8.0              
#> [15] dbplyr_2.1.1                  png_0.1-7                    
#> [17] R.oo_1.24.0                   shiny_1.6.0                  
#> [19] HDF5Array_1.20.0              BiocManager_1.30.15          
#> [21] compiler_4.1.0                httr_1.4.2                   
#> [23] assertthat_0.2.1              Matrix_1.3-3                 
#> [25] fastmap_1.1.0                 limma_3.48.0                 
#> [27] later_1.2.0                   htmltools_0.5.1.1            
#> [29] tools_4.1.0                   gtable_0.3.0                 
#> [31] glue_1.4.2                    GenomeInfoDbData_1.2.6       
#> [33] dplyr_1.0.6                   rappdirs_0.3.3               
#> [35] Rcpp_1.0.6                    jquerylib_0.1.4              
#> [37] vctrs_0.3.8                   rhdf5filters_1.4.0           
#> [39] DelayedMatrixStats_1.14.0     xfun_0.23                    
#> [41] stringr_1.4.0                 mime_0.10                    
#> [43] lifecycle_1.0.0               restfulr_0.0.13              
#> [45] gtools_3.8.2                  XML_3.99-0.6                 
#> [47] AnnotationHub_3.0.0           zlibbioc_1.38.0              
#> [49] scales_1.1.1                  promises_1.2.0.1             
#> [51] rhdf5_2.36.0                  RColorBrewer_1.1-2           
#> [53] yaml_2.2.1                    curl_4.3.1                   
#> [55] memoise_2.0.0                 ggplot2_3.3.3                
#> [57] sass_0.4.0                    stringi_1.6.2                
#> [59] RSQLite_2.2.7                 BiocVersion_3.13.1           
#> [61] highr_0.9                     BiocIO_1.2.0                 
#> [63] permute_0.9-5                 filelock_1.0.2               
#> [65] BiocParallel_1.26.0           rlang_0.4.11                 
#> [67] pkgconfig_2.0.3               bitops_1.0-7                 
#> [69] evaluate_0.14                 lattice_0.20-44              
#> [71] purrr_0.3.4                   Rhdf5lib_1.14.0              
#> [73] GenomicAlignments_1.28.0      labeling_0.4.2               
#> [75] bit_4.0.4                     tidyselect_1.1.1             
#> [77] magrittr_2.0.1                R6_2.5.0                     
#> [79] generics_0.1.0                DelayedArray_0.18.0          
#> [81] DBI_1.1.1                     pillar_1.6.1                 
#> [83] KEGGREST_1.32.0               RCurl_1.98-1.3               
#> [85] tibble_3.1.2                  crayon_1.4.1                 
#> [87] utf8_1.2.1                    BiocFileCache_2.0.0          
#> [89] rmarkdown_2.8                 locfit_1.5-9.4               
#> [91] grid_4.1.0                    blob_1.2.1                   
#> [93] digest_0.6.27                 xtable_1.8-4                 
#> [95] httpuv_1.6.1                  R.utils_2.10.1               
#> [97] munsell_0.5.0                 bslib_0.2.5.1