## ----setup, include = FALSE--------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 6, fig.height = 4, dpi = 150 ) ## ----install, eval=FALSE------------------------------------------------------ # # Install from Bioconductor (when available) # if (!requireNamespace("BiocManager", quietly = TRUE)) # install.packages("BiocManager") # BiocManager::install("GenomicCoordinates") # # # Or install development version from GitHub # BiocManager::install("js2264/GenomicCoordinates") ## ----load-library------------------------------------------------------------- library(GenomicCoordinates) ## ----auto-detection----------------------------------------------------------- # Standard genomic ranges GenomicCoordinates("chr1:1000-2000") # Single positions (returns GPos) GenomicCoordinates("chr1:1000:-") # Genomic interactions (returns GInteractions) GenomicCoordinates("chr1:1-10:-|chr2:20-30:+") # Pure numeric ranges (returns IRanges) GenomicCoordinates("1,000-2,000") ## ----comma-separated---------------------------------------------------------- # GenomicCoordinates handles comma-separated numbers seamlessly GenomicCoordinates("chr1:100,000-200,000") # Works with single positions too GenomicCoordinates("chr1:1,234,567") # And with strand information GenomicCoordinates("chr1:100,000-200,000:+") ## ----space-delimited---------------------------------------------------------- # Basic space-delimited format GenomicCoordinates("chr1 1000 2000") # Irregular spacing is handled automatically GenomicCoordinates("chr1 1000 2000") # Mixed format with strand GenomicCoordinates("chr1 1000 2000:+") # Single positions with spaces GenomicCoordinates("chr1 1000") ## ----complex-chr-names-------------------------------------------------------- # Chromosome names with spaces (common in some organisms) GenomicCoordinates("chr I:1000-2000") # Scaffold and contig names GenomicCoordinates("scaffold_123:1000-2000") GenomicCoordinates("GL000001.1:1000-2000") # Organism-specific naming conventions GenomicCoordinates("2L:1000-2000") # Drosophila GenomicCoordinates("chrUn_GL000220v1:1000-2000") # Unplaced scaffolds ## ----single-vs-ranges--------------------------------------------------------- # Single positions automatically return GPos objects pos_result <- GenomicCoordinates("chr1:1000") class(pos_result) pos(pos_result) # Ranges return GRanges objects range_result <- GenomicCoordinates("chr1:1000-2000") class(range_result) start(range_result) end(range_result) ## ----genomic-interactions----------------------------------------------------- # Simple interaction interaction <- GenomicCoordinates("chr1:1-10|chr2:20-30") class(interaction) # Check the anchor points InteractionSet::anchors(interaction, "first") InteractionSet::anchors(interaction, "second") # Works with complex and formatting too GenomicCoordinates("chr1 1000 10000 | chr2:20,000-30,000") ## ----iranges-non-genomic------------------------------------------------------ # Pure numeric ranges numeric_range <- GenomicCoordinates("1000-2000") class(numeric_range) # Works with comma-separated numbers GenomicCoordinates("1,000-2,000") # And space-delimited format GenomicCoordinates("1000 2000") ## ----force-class-------------------------------------------------------------- # Force a single position to be a GRanges instead of GPos GenomicCoordinates("chr1:1000", force_class = "GRanges") # Force a single position to be a GPos # instead of GRanges (removes the `end` coordinate) GenomicCoordinates("chr1:1000-2000", force_class = "GPos") # Force a genomic range to be an IRanges (extracts just coordinates) GenomicCoordinates("chr1:1000-2000", force_class = "IRanges") # Force a single range to be a GInteractions (creates self-interaction) GenomicCoordinates("chr1:1000-2000", force_class = "GInteractions") ## ----vector-input------------------------------------------------------------- # Mixed vector of single positions and ranges mixed_coords <- c("chr1:1000", "chr2:2000-3000", "chr3:5000") GenomicCoordinates(mixed_coords) # All single positions return GPos single_positions <- c("chr1:1000", "chr2:2000", "chr3:3000") GenomicCoordinates(single_positions) # Vector of interactions interactions <- c("chr1:1-10|chr2:20-30", "chr3:100-200|chr4:300-400") GenomicCoordinates(interactions) ## ----explicit-conversion------------------------------------------------------ # Convert to GRanges as_granges("chr1:100,000-200,000") # Convert to GPos as_gpos("chr1:1,234,567") # Convert to GInteractions as_ginteractions("chr1:1,000-10,000|chr2:20,000-30,000") # Convert to IRanges as_iranges("1,000-2,000") ## ----class-detection---------------------------------------------------------- # Detect classes for various input types inputs <- c( "chr1:1000-2000", "chr1:1000", "chr1:1-10|chr2:20-30", "1000-2000" ) detect_genomic_class(inputs) ## ----session-info------------------------------------------------------------- sessionInfo()