diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000..1befa8c --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,33 @@ +name: Docker Build + +on: + push: + branches: + - release + build: + needs: test + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: | + ghcr.io/${{ github.repository }}:latest + ghcr.io/${{ github.repository }}:${{ github.sha }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/Dockerfile b/Dockerfile old mode 100644 new mode 100755 index dcc3f1c..331fc8c --- a/Dockerfile +++ b/Dockerfile @@ -14,13 +14,12 @@ RUN apt-get update && apt-get install -y \ && rm -rf /var/lib/apt/lists/* # Install required R packages -RUN R -e "install.packages(c('ggplot2', 'dplyr', 'tidyr', 'cowplot', 'scales'), repos='http://cran.rstudio.com/')" +RUN R -e "install.packages(c('ggplot2', 'dplyr', 'tidyr', 'cowplot', 'scales', 'segmented'), repos='http://cran.rstudio.com/')" # Copy the R script to the working directory COPY bedgraph-visualizer.R . - # Example usage: # docker build -t my-r-script . # docker run --rm -v $(pwd)/output:/usr/src/app/output my-r-script BAF.bedgraph.gz LRR.bedgraph.gz regions.bed output diff --git a/README b/README new file mode 100644 index 0000000..32fae20 --- /dev/null +++ b/README @@ -0,0 +1,3 @@ +# Example usage: +# docker build -t my-r-script . +# docker run --rm -v $(pwd)/output:/usr/src/app/output my-r-script BAF.bedgraph.gz LRR.bedgraph.gz regions.bed output diff --git a/bedgraph-visualizer.R b/bedgraph-visualizer.R old mode 100644 new mode 100755 index 4212868..aca8e78 --- a/bedgraph-visualizer.R +++ b/bedgraph-visualizer.R @@ -118,7 +118,7 @@ genome_plot <- function() { } # Function to plot specific regions -region_plot <- function(region_file, padding_percent=0.2) { +region_plot <- function(region_file, min_padding=600000) { # Load region data regions <- read.table(region_file, header = FALSE) colnames(regions) <- c("Chr", "Start", "End", "Type") @@ -126,9 +126,12 @@ region_plot <- function(region_file, padding_percent=0.2) { # Iterate over each region and create plots for (i in 1:nrow(regions)) { region <- regions[i, ] - padding = (region$End - region$Start ) * padding_percent - padded_start = region$Start - padding / 2 - padded_end = region$End + padding / 2 + padding = (region$End - region$Start ) + if (padding <= min_padding) { + padding = min_padding + } + padded_start = region$Start - padding + padded_end = region$End + padding # Filter BAF and LRR data for the current region filtered_baf <- baf_data %>%