diff --git a/CHANGELOG.md b/CHANGELOG.md index 5374755..ea5da11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,19 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm --- +## [2.2.9-bl-parametrize-max-rho] - 2024-10-29 +### Added +- Add `renv.lock` file containing R packages and their version +- Add `battenberg_bl_custom.R`, a customized `battenberg.R` script that allows parameterization of `max_rho` +- Add `battenberg_wgs_bl_custom.R`, a customized `battenberg_wgs.R` wrapper that allows parameterization of options + +### Changed +- Reproduce R packages environment using `renv.lock` file +- Install ASCAT and Battenberg using `R CMD INSTALL` + +### Removed +- Remove `modify_reference_path.sh` + ## [2.2.9] - 2023-06-27 ### Added - Add `modify_reference_path.sh` diff --git a/Dockerfile b/Dockerfile index c8a6cb1..8ed1392 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,6 @@ ARG MINIFORGE_VERSION=23.1.0-1 +ARG ASCAT_VERSION=3.1.2 +ARG BATTENBERG_VERSION=2.2.9 FROM condaforge/mambaforge:${MINIFORGE_VERSION} AS builder @@ -13,49 +15,73 @@ RUN mamba create -qy -p /usr/local \ cancerit-allelecount==${ALLELECOUNT_VERSION} \ impute2==${IMPUTE2_VERSION} -FROM rocker/r-ver:4.4.1 +# Deploy the target tools into a base image +FROM ubuntu:20.04 COPY --from=builder /usr/local /usr/local -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - libcurl4-openssl-dev \ - libbz2-dev \ - liblzma-dev \ - libpng-dev \ - libssl-dev \ - libxml2-dev \ - python3 \ - && apt-get clean && rm -rf /var/lib/apt/lists/* - -# Main tool version -ARG BATTENBERG_VERSION="2.2.9" - -# Dependency version or commit ID -ARG ASCAT_VERSION=3.1.3 -ARG COPYNUMBER_VERSION="b404a4d" - -# GitHub repo link -ARG ASCAT="VanLoo-lab/ascat/ASCAT@v${ASCAT_VERSION}" -ARG COPYNUMBER="igordot/copynumber@${COPYNUMBER_VERSION}" -ARG BATTENBERG="Wedge-lab/battenberg@v${BATTENBERG_VERSION}" - -# Install Package Dependency toolkit -RUN R -e 'install.packages(c("argparse", "BiocManager", "pkgdepends", "optparse"))' && \ - R -q -e 'BiocManager::install(c("ellipsis", "splines", "VariantAnnotation"))' - -# Install Battenberg -COPY installer.R /usr/local/bin/installer.R -RUN chmod +x /usr/local/bin/installer.R - -RUN Rscript /usr/local/bin/installer.R -d ${COPYNUMBER} ${ASCAT} ${BATTENBERG} - -# Modify paths to reference files -COPY modify_reference_path.sh /usr/local/bin/modify_reference_path.sh -RUN chmod +x /usr/local/bin/modify_reference_path.sh && \ - bash /usr/local/bin/modify_reference_path.sh /usr/local/lib/R/site-library/Battenberg/example/battenberg_wgs.R /usr/local/bin/battenberg_wgs.R - -RUN ln -sf /usr/local/lib/R/site-library/Battenberg/example/filter_sv_brass.R /usr/local/bin/filter_sv_brass.R && \ - ln -sf /usr/local/lib/R/site-library/Battenberg/example/battenberg_cleanup.sh /usr/local/bin/battenberg_cleanup.sh +ARG DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + libxml2 \ + libxml2-dev \ + libcurl4-gnutls-dev \ + build-essential \ + libfontconfig1-dev \ + libharfbuzz-dev \ + libfribidi-dev \ + libfreetype6-dev \ + libpng-dev \ + libtiff5-dev \ + libjpeg-dev \ + r-cran-rgl \ + git \ + libssl-dev \ + r-cran-curl \ + r-cran-devtools \ + wget && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + +RUN R -q -e 'install.packages("renv")' && \ + mkdir -p /usr/local/src + +COPY renv.lock /usr/local/renv.lock +COPY battenberg_bl_custom.R /usr/local/src/ +COPY battenberg_wgs_bl_custom.R /usr/local/src/ + +ARG ASCAT_VERSION +ARG ASCAT_SHA512="a60e75405c3999c86d19e20d717eee9d1e1915e647e2626be5b5bb0d266a6f96535d9cd21ee7717d6fb04d4f76a5b78a1b45e3315bf823e480a8e27afdec364b" +ARG BATTENBERG_VERSION +ARG BATTENBERG_SHA512="a4784ca3e6523bd47b5a6d86c1e7ef5f0023371bd0b5bf3685440e3336333cddf3937f768910462c98eb5cb8b5cfd2c63db052c3186a3b1f0363e460ace521d4" + +WORKDIR /usr/local/src/ + +RUN set -eux && \ + # Ignore specific packages from `renv.lock` file + R -q -e 'renv::settings$ignored.packages(c("ASCAT", "Battenberg"))' && \ + R -q -e 'renv::restore(lockfile = "/usr/local/renv.lock")' && \ + # Install ASCAT + wget -q -O ascat-${ASCAT_VERSION}.tar.gz \ + https://github.com/VanLoo-lab/ascat/archive/refs/tags/v${ASCAT_VERSION}.tar.gz && \ + if echo "$ASCAT_SHA512" ascat-${ASCAT_VERSION}.tar.gz | sha512sum -c --quiet; \ + then echo "ASCAT SHA512 checksum verified successfully!"; \ + else echo "ASCAT SHA512 checksum verification failed. Downloaded file checksum does not match the SHA512 hash."; exit 1; \ + fi && \ + tar -xzf ascat-${ASCAT_VERSION}.tar.gz && \ + R CMD INSTALL ascat-${ASCAT_VERSION}/ASCAT/ && \ + # Instal Battenberg + wget -q -O battenberg-${BATTENBERG_VERSION}.tar.gz \ + https://github.com/Wedge-lab/battenberg/archive/refs/tags/v${BATTENBERG_VERSION}.tar.gz && \ + if echo "$BATTENBERG_SHA512" battenberg-${BATTENBERG_VERSION}.tar.gz | sha512sum -c --quiet; \ + then echo "Battenberg SHA512 checksum verified successfully!"; \ + else echo "Battenberg SHA512 checksum verification failed. Downloaded file checksum does not match the SHA512 hash."; exit 1; \ + fi && \ + tar -xzf battenberg-${BATTENBERG_VERSION}.tar.gz && \ + cp battenberg_bl_custom.R battenberg-${BATTENBERG_VERSION}/R/battenberg.R && \ + cp battenberg_wgs_bl_custom.R battenberg-${BATTENBERG_VERSION}/inst/example/battenberg_wgs.R && \ + R CMD INSTALL battenberg-${BATTENBERG_VERSION}/ && \ + # Cleanup + rm -rf /usr/local/src/* # Add a new user/group called bldocker RUN groupadd -g 500001 bldocker && \ diff --git a/README.md b/README.md index e6c1c52..4ff5e59 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,34 @@ # docker-Battenberg This repository contains code for the whole genome sequencing subclonal copy number caller Battenberg, as described in [Nik-Zainal, Van Loo, Wedge, et al. (2012), Cell](https://www.ncbi.nlm.nih.gov/pubmed/22608083). -It installs the release v2.2.9 of Battenberg and modifies the Battenberg resource paths for GRCh37 and GRCh38 based on how they are structured in the Boutros Lab cluster. +It installs Battenberg v2.2.9 using +- a custom battenberg.R script that allows parameterization of `max_rho` +- a custom battenberg_wgs.R script that allows parameterization of all available options -GRCh37 resources - `/hot/ref/tool-specific-input/Battenberg/download_202204/GRCh37/` +## Resources +GRCh37 resources - `/hot/resource/tool-specific-input/Battenberg/download_202204/GRCh37/` GRCh38 resources - - - with `chr` name (default): `/hot/ref/tool-specific-input/Battenberg/download_202204/GRCh38/battenberg_ref_hg38_chr/` - - without `chr` name: `/hot/ref/tool-specific-input/Battenberg/download_202204/GRCh38/battenberg_ref_hg38_non_chr/` + - with `chr` name (default): `/hot/resource/tool-specific-input/Battenberg/download_202204/GRCh38/battenberg_ref_hg38_chr/` + - without `chr` name: `/hot/resource/tool-specific-input/Battenberg/download_202204/GRCh38/battenberg_ref_hg38_non_chr/` This image can be found in docker-Battenberg's GitHub package page [here](https://github.com/uclahs-cds/docker-Battenberg/pkgs/container/battenberg). # Example Usage ``` docker run --rm -u $(id -u):$(id -g) -w $(pwd) -v /hot/:/hot/ \ - -v /hot/ref/tool-specific-input/Battenberg/download_202204/GRCh38/battenberg_ref_hg38_chr/:/opt/battenberg_reference/ \ - battenberg:2.2.9 Rscript /usr/local/bin/battenberg_wgs.R \ + -v /hot/resource/tool-specific-input/Battenberg/download_202204/GRCh38/battenberg_ref_hg38_chr/:/opt/battenberg_reference/ \ + battenberg:2.2.9-bl-parametrize-max-rho Rscript /usr/local/lib/R/site-library/Battenberg/example/battenberg_wgs.R \ -t ${tumor_sample_name} \ -n ${normal_sample_name} \ --tb ${tumor_bam} \ --nb ${normal_bam} \ -o ${sample_out_dir} \ - --sex ${sample_sex} + --sex ${sample_sex} \ + --min_ploidy 1.6 \ + --max_ploidy 4.8 \ + --min_rho 0.1 \ + --max_rho 1.0 ``` # Documentation @@ -65,9 +72,9 @@ Author: 'Mohammed Faizal Eeman Mootor', 'Ardalan Davarifar' docker-Battenberg is licensed under the GNU General Public License version 2. See the file LICENSE for the terms of the GNU GPL license. -docker-Battenberg can be used to create a docker instance to use the Battenberg tool. +docker-Battenberg can be used to create a docker instance to use the Battenberg tool. -Copyright (C) 2021-2023 University of California Los Angeles ("Boutros Lab") All rights reserved. +Copyright (C) 2021-2024 University of California Los Angeles ("Boutros Lab") All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. diff --git a/battenberg_bl_custom.R b/battenberg_bl_custom.R new file mode 100644 index 0000000..ac32138 --- /dev/null +++ b/battenberg_bl_custom.R @@ -0,0 +1,240 @@ + +#' Run the Battenberg pipeline +#' +#' @param tumourname Tumour identifier, this is used as a prefix for the output files. If allele counts are supplied separately, they are expected to have this identifier as prefix. +#' @param normalname Matched normal identifier, this is used as a prefix for the output files. If allele counts are supplied separately, they are expected to have this identifier as prefix. +#' @param tumour_data_file A BAM or CEL file for the tumour +#' @param normal_data_file A BAM or CEL file for the normal +#' @param imputeinfofile Full path to a Battenberg impute info file with pointers to Impute2 reference data +#' @param g1000prefix Full prefix path to 1000 Genomes SNP loci data, as part of the Battenberg reference data +#' @param problemloci Full path to a problem loci file that contains SNP loci that should be filtered out +#' @param gccorrectprefix Full prefix path to GC content files, as part of the Battenberg reference data, not required for SNP6 data (Default: NULL) +#' @param repliccorrectprefix Full prefix path to replication timing files, as part of the Battenberg reference data, not required for SNP6 data (Default: NULL) +#' @param g1000allelesprefix Full prefix path to 1000 Genomes SNP alleles data, as part of the Battenberg reference data, not required for SNP6 data (Default: NA) +#' @param ismale A boolean set to TRUE if the donor is male, set to FALSE if female, not required for SNP6 data (Default: NA) +#' @param data_type String that contains either wgs or snp6 depending on the supplied input data (Default: wgs) +#' @param impute_exe Pointer to the Impute2 executable (Default: impute2, i.e. expected in $PATH) +#' @param allelecounter_exe Pointer to the alleleCounter executable (Default: alleleCounter, i.e. expected in $PATH) +#' @param nthreads The number of concurrent processes to use while running the Battenberg pipeline (Default: 8) +#' @param platform_gamma Platform scaling factor, suggestions are set to 1 for wgs and to 0.55 for snp6 (Default: 1) +#' @param phasing_gamma Gamma parameter used when correcting phasing mistakes (Default: 1) +#' @param segmentation_gamma The gamma parameter controls the size of the penalty of starting a new segment during segmentation. It is therefore the key parameter for controlling the number of segments (Default: 10) +#' @param segmentation_kmin Kmin represents the minimum number of probes/SNPs that a segment should consist of (Default: 3) +#' @param phasing_kmin Kmin used when correcting for phasing mistakes (Default: 3) +#' @param clonality_dist_metric Distance metric to use when choosing purity/ploidy combinations (Default: 0) +#' @param ascat_dist_metric Distance metric to use when choosing purity/ploidy combinations (Default: 1) +#' @param min_ploidy Minimum ploidy to be considered (Default: 1.6) +#' @param max_ploidy Maximum ploidy to be considered (Default: 4.8) +#' @param min_rho Minimum purity to be considered (Default: 0.1) +#' @param max_rho Maximum purity to be considered (Default: 1.0) +#' @param min_goodness Minimum goodness of fit required for a purity/ploidy combination to be accepted as a solution (Default: 0.63) +#' @param uninformative_BAF_threshold The threshold beyond which BAF becomes uninformative (Default: 0.51) +#' @param min_normal_depth Minimum depth required in the matched normal for a SNP to be considered as part of the wgs analysis (Default: 10) +#' @param min_base_qual Minimum base quality required for a read to be counted when allele counting (Default: 20) +#' @param min_map_qual Minimum mapping quality required for a read to be counted when allele counting (Default: 35) +#' @param calc_seg_baf_option Sets way to calculate BAF per segment: 1=mean, 2=median, 3=ifelse median==0 | 1, mean, median (Default: 3) +#' @param skip_allele_counting Provide TRUE when allele counting can be skipped (i.e. its already done) (Default: FALSE) +#' @param skip_preprocessing Provide TRUE when preprocessing is already complete (Default: FALSE) +#' @param skip_phasing Provide TRUE when phasing is already complete (Default: FALSE) +#' @param snp6_reference_info_file Reference files for the SNP6 pipeline only (Default: NA) +#' @param apt.probeset.genotype.exe Helper tool for extracting data from CEL files, SNP6 pipeline only (Default: apt-probeset-genotype) +#' @param apt.probeset.summarize.exe Helper tool for extracting data from CEL files, SNP6 pipeline only (Default: apt-probeset-summarize) +#' @param norm.geno.clust.exe Helper tool for extracting data from CEL files, SNP6 pipeline only (Default: normalize_affy_geno_cluster.pl) +#' @param birdseed_report_file Sex inference output file, SNP6 pipeline only (Default: birdseed.report.txt) +#' @param heterozygousFilter Legacy option to set a heterozygous SNP filter, SNP6 pipeline only (Default: "none") +#' @param prior_breakpoints_file A two column file with prior breakpoints to be used during segmentation (Default: NULL) +#' @author sd11 +#' @export +battenberg = function(tumourname, normalname, tumour_data_file, normal_data_file, imputeinfofile, g1000prefix, problemloci, gccorrectprefix=NULL, + repliccorrectprefix=NULL, g1000allelesprefix=NA, ismale=NA, data_type="wgs", impute_exe="impute2", allelecounter_exe="alleleCounter", nthreads=8, platform_gamma=1, phasing_gamma=1, + segmentation_gamma=10, segmentation_kmin=3, phasing_kmin=1, clonality_dist_metric=0, ascat_dist_metric=1, min_ploidy=1.6, + max_ploidy=4.8, min_rho=0.1, max_rho=1.0, min_goodness=0.63, uninformative_BAF_threshold=0.51, min_normal_depth=10, min_base_qual=20, + min_map_qual=35, calc_seg_baf_option=3, skip_allele_counting=F, skip_preprocessing=F, skip_phasing=F, + snp6_reference_info_file=NA, apt.probeset.genotype.exe="apt-probeset-genotype", apt.probeset.summarize.exe="apt-probeset-summarize", + norm.geno.clust.exe="normalize_affy_geno_cluster.pl", birdseed_report_file="birdseed.report.txt", heterozygousFilter="none", + prior_breakpoints_file=NULL) { + + requireNamespace("foreach") + requireNamespace("doParallel") + requireNamespace("parallel") + + if (data_type=="wgs" & is.na(ismale)) { + stop("Please provide a boolean denominator whether this sample represents a male donor") + } + + if (data_type=="wgs" & is.na(g1000allelesprefix)) { + stop("Please provide a path to 1000 Genomes allele reference files") + } + + if (data_type=="wgs" & is.null(gccorrectprefix)) { + stop("Please provide a path to GC content reference files") + } + + if (!file.exists(problemloci)) { + stop("Please provide a path to a problematic loci file") + } + + if (!file.exists(imputeinfofile)) { + stop("Please provide a path to an impute info file") + } + + # check whether the impute_info.txt file contains correct paths + check.imputeinfofile(imputeinfofile, ismale) + + if (data_type=="wgs" | data_type=="WGS") { + chrom_names = get.chrom.names(imputeinfofile, ismale) + logr_file = paste(tumourname, "_mutantLogR_gcCorrected.tab", sep="") + allelecounts_file = paste(tumourname, "_alleleCounts.tab", sep="") + } else if (data_type=="snp6" | data_type=="SNP6") { + chrom_names = get.chrom.names(imputeinfofile, TRUE) + logr_file = paste(tumourname, "_mutantLogR.tab", sep="") + allelecounts_file = NULL + } + + if (!skip_preprocessing) { + if (data_type=="wgs" | data_type=="WGS") { + # Setup for parallel computing + clp = parallel::makeCluster(nthreads) + doParallel::registerDoParallel(clp) + + prepare_wgs(chrom_names=chrom_names, + tumourbam=tumour_data_file, + normalbam=normal_data_file, + tumourname=tumourname, + normalname=normalname, + g1000allelesprefix=g1000allelesprefix, + g1000prefix=g1000prefix, + gccorrectprefix=gccorrectprefix, + repliccorrectprefix=repliccorrectprefix, + min_base_qual=min_base_qual, + min_map_qual=min_map_qual, + allelecounter_exe=allelecounter_exe, + min_normal_depth=min_normal_depth, + nthreads=nthreads, + skip_allele_counting=skip_allele_counting) + + # Kill the threads + parallel::stopCluster(clp) + + } else if (data_type=="snp6" | data_type=="SNP6") { + + prepare_snp6(tumour_cel_file=tumour_data_file, + normal_cel_file=normal_data_file, + tumourname=tumourname, + chrom_names=chrom_names, + snp6_reference_info_file=snp6_reference_info_file, + apt.probeset.genotype.exe=apt.probeset.genotype.exe, + apt.probeset.summarize.exe=apt.probeset.summarize.exe, + norm.geno.clust.exe=norm.geno.clust.exe, + birdseed_report_file=birdseed_report_file) + + } else { + print("Unknown data type provided, please provide wgs or snp6") + q(save="no", status=1) + } + } + + if (data_type=="snp6" | data_type=="SNP6") { + # Infer what the gender is - WGS requires it to be specified + gender = infer_gender_birdseed(birdseed_report_file) + ismale = gender == "male" + } + + if (!skip_phasing) { + # Setup for parallel computing + clp = parallel::makeCluster(nthreads) + doParallel::registerDoParallel(clp) + + # Reconstruct haplotypes + # mclapply(1:length(chrom_names), function(chrom) { + foreach::foreach (chrom=1:length(chrom_names)) %dopar% { + print(chrom) + + run_haplotyping(chrom=chrom, + tumourname=tumourname, + normalname=normalname, + ismale=ismale, + imputeinfofile=imputeinfofile, + problemloci=problemloci, + impute_exe=impute_exe, + min_normal_depth=min_normal_depth, + chrom_names=chrom_names, + snp6_reference_info_file=snp6_reference_info_file, + heterozygousFilter=heterozygousFilter) + }#, mc.cores=nthreads) + + # Kill the threads as from here its all single core + parallel::stopCluster(clp) + + # Combine all the BAF output into a single file + combine.baf.files(inputfile.prefix=paste(tumourname, "_chr", sep=""), + inputfile.postfix="_heterozygousMutBAFs_haplotyped.txt", + outputfile=paste(tumourname, "_heterozygousMutBAFs_haplotyped.txt", sep=""), + no.chrs=length(chrom_names)) + } + + # Segment the phased and haplotyped BAF data + segment.baf.phased(samplename=tumourname, + inputfile=paste(tumourname, "_heterozygousMutBAFs_haplotyped.txt", sep=""), + outputfile=paste(tumourname, ".BAFsegmented.txt", sep=""), + prior_breakpoints_file=prior_breakpoints_file, + gamma=segmentation_gamma, + phasegamma=phasing_gamma, + kmin=segmentation_kmin, + phasekmin=phasing_kmin, + calc_seg_baf_option=calc_seg_baf_option) + + # Fit a clonal copy number profile + fit.copy.number(samplename=tumourname, + outputfile.prefix=paste(tumourname, "_", sep=""), + inputfile.baf.segmented=paste(tumourname, ".BAFsegmented.txt", sep=""), + inputfile.baf=paste(tumourname,"_mutantBAF.tab", sep=""), + inputfile.logr=logr_file, + dist_choice=clonality_dist_metric, + ascat_dist_choice=ascat_dist_metric, + min.ploidy=min_ploidy, + max.ploidy=max_ploidy, + min.rho=min_rho, + max.rho=max_rho, + min.goodness=min_goodness, + uninformative_BAF_threshold=uninformative_BAF_threshold, + gamma_param=platform_gamma, + use_preset_rho_psi=F, + preset_rho=NA, + preset_psi=NA, + read_depth=30) + + # Go over all segments, determine which segements are a mixture of two states and fit a second CN state + callSubclones(sample.name=tumourname, + baf.segmented.file=paste(tumourname, ".BAFsegmented.txt", sep=""), + logr.file=logr_file, + rho.psi.file=paste(tumourname, "_rho_and_psi.txt",sep=""), + output.file=paste(tumourname,"_subclones.txt", sep=""), + output.figures.prefix=paste(tumourname,"_subclones_chr", sep=""), + output.gw.figures.prefix=paste(tumourname,"_BattenbergProfile", sep=""), + masking_output_file=paste(tumourname, "_segment_masking_details.txt", sep=""), + prior_breakpoints_file=prior_breakpoints_file, + chr_names=chrom_names, + gamma=platform_gamma, + segmentation.gamma=NA, + siglevel=0.05, + maxdist=0.01, + noperms=1000, + calc_seg_baf_option=calc_seg_baf_option) + + # Make some post-hoc plots + make_posthoc_plots(samplename=tumourname, + logr_file=logr_file, + subclones_file=paste(tumourname, "_subclones.txt", sep=""), + rho_psi_file=paste(tumourname, "_rho_and_psi.txt", sep=""), + bafsegmented_file=paste(tumourname, ".BAFsegmented.txt", sep=""), + logrsegmented_file=paste(tumourname, ".logRsegmented.txt", sep=""), + allelecounts_file=allelecounts_file) + + # Save refit suggestions for a future rerun + cnfit_to_refit_suggestions(samplename=tumourname, + subclones_file=paste(tumourname, "_subclones.txt", sep=""), + rho_psi_file=paste(tumourname, "_rho_and_psi.txt", sep=""), + gamma_param=platform_gamma) + +} diff --git a/battenberg_wgs_bl_custom.R b/battenberg_wgs_bl_custom.R new file mode 100644 index 0000000..a347184 --- /dev/null +++ b/battenberg_wgs_bl_custom.R @@ -0,0 +1,124 @@ +############################################################################### +# A pure R Battenberg v2.2.9 WGS pipeline implementation. +############################################################################### +library(Battenberg); +library(optparse); + +option.list <- list( + make_option(c('-t', '--tumourname'), type = 'character', default = NULL, help = 'Samplename of the tumour', metavar = 'character'), + make_option(c('-n', '--normalname'), type = 'character', default = NULL, help = 'Samplename of the normal', metavar = 'character'), + make_option(c('--tb'), type = 'character', default = NULL, help = 'Tumour BAM file', metavar = 'character'), + make_option(c('--nb'), type = 'character', default = NULL, help = 'Normal BAM file', metavar = 'character'), + make_option(c('--sex'), type = 'character', default = NULL, help = 'Sex of the sample', metavar = 'character'), + make_option(c('-o', '--output'), type = 'character', default = NULL, help = 'Directory where output will be written', metavar = 'character'), + make_option(c('--skip_allelecount'), type = 'logical', default = FALSE, action = 'store_true', help = 'Provide when alleles don\'t have to be counted. This expects allelecount files on disk', metavar = 'character'), + make_option(c('--skip_preprocessing'), type = 'logical', default = FALSE, action = 'store_true', help = 'Provide when pre-processing has previously completed. This expects the files on disk', metavar = 'character'), + make_option(c('--skip_phasing'), type = 'logical', default = FALSE, action = 'store_true', help = 'Provide when phasing has previously completed. This expects the files on disk', metavar = 'character'), + make_option(c('--cpu'), type = 'numeric', default = 8, help = 'The number of CPU cores to be used by the pipeline (Default: 8)', metavar = 'character'), + make_option(c('--bp'), type = 'character', default = NULL, help = 'Optional two column file (chromosome and position) specifying prior breakpoints to be used during segmentation', metavar = 'character'), + make_option(c('--min_ploidy'), type = 'double', default = 1.6, help = 'The minimum ploidy to consider', metavar = 'character'), + make_option(c('--max_ploidy'), type = 'double', default = 4.8, help = 'The maximum ploidy to consider', metavar = 'character'), + make_option(c('--min_rho'), type = 'double', default = 0.1, help = 'The minimum cellularity to consider', metavar = 'character'), + make_option(c('--max_rho'), type = 'double', default = 1.0, help = 'The maximum cellularity to consider', metavar = 'character'), + make_option(c('--platform_gamma'), type = 'numeric', default = 1, help = 'Platform specific gamma value (0.55 for SNP6, 1 for NGS)', metavar = 'character'), + make_option(c('--phasing_gamma'), type = 'numeric', default = 1, help = 'Gamma parameter used when correcting phasing mistakes (Default: 1)', metavar = 'character'), + make_option(c('--segmentation_gamma'), type = 'numeric', default = 10, help = 'The gamma parameter controls the size of the penalty of starting a new segment during segmentation. It is therefore the key parameter for controlling the number of segments (Default: 10)', metavar = 'character'), + make_option(c('--segmentation_kmin'), type = 'numeric', default = 3, help = 'Kmin represents the minimum number of probes/SNPs that a segment should consist of (Default: 3)', metavar = 'character'), + make_option(c('--phasing_kmin'), type = 'numeric', default = 1, help = 'Kmin used when correcting for phasing mistakes (Default: 3)', metavar = 'character'), + make_option(c('--clonality_dist_metric'), type = 'numeric', default = 0, help = 'Distance metric to use when choosing purity/ploidy combinations (Default: 0)', metavar = 'character'), + make_option(c('--ascat_dist_metric'), type = 'numeric', default = 1, help = 'Distance metric to use when choosing purity/ploidy combinations (Default: 1)', metavar = 'character'), + make_option(c('--min_goodness_of_fit'), type = 'double', default = 0.63, help = 'Minimum goodness of fit required for a purity/ploidy combination to be accepted as a solution (Default: 0.63)', metavar = 'character'), + make_option(c('--balanced_threshold'), type = 'double', default = 0.51, help = 'The threshold beyond which BAF becomes uninformative (Default: 0.51)', metavar = 'character'), + make_option(c('--min_normal_depth'), type = 'numeric', default = 10, help = 'Minimum depth required in the matched normal for a SNP to be considered as part of the wgs analysis (Default: 10)', metavar = 'character'), + make_option(c('--min_base_qual'), type = 'numeric', default = 20, help = 'Minimum base quality required for a read to be counted when allele counting (Default: 20)', metavar = 'character'), + make_option(c('--min_map_qual'), type = 'numeric', default = 35, help = 'Minimum mapping quality required for a read to be counted when allele counting (Default: 35)', metavar = 'character'), + make_option(c('--calc_seg_baf_option'), type = 'numeric', default = 3, help = 'Sets way to calculate BAF per segment: 1=mean, 2=median, 3=ifelse median==0 | 1, mean, median (Default: 3)', metavar = 'character'), + make_option(c('--data_type'), type = 'character', default = 'wgs', help = 'String that contains either wgs or snp6 depending on the supplied input data (Default: wgs)', metavar = 'character') + ); + +opt.parser <- OptionParser(option_list = option.list); +opt <- parse_args(opt.parser); + +TUMOURNAME <- opt$tumourname; +NORMALNAME <- opt$normalname; +NORMALBAM <- opt$nb; +TUMOURBAM <- opt$tb; +IS.MALE <- opt$sex == 'male' | opt$sex == 'Male'; +RUN.DIR <- opt$output; +SKIP.ALLELECOUNTING <- opt$skip_allelecount; +SKIP.PREPROCESSING <- opt$skip_preprocessing; +SKIP.PHASING <- opt$skip_phasing; +NTHREADS <- opt$cpu; +PRIOR.BREAKPOINTS.FILE <- opt$bp; +MIN.PLOIDY <- opt$min_ploidy; +MAX.PLOIDY <- opt$max_ploidy; +MIN.RHO <- opt$min_rho; +MAX.RHO <- opt$max_rho; +PLATFORM.GAMMA <- opt$platform_gamma; +PHASING.GAMMA <- opt$phasing_gamma; +SEGMENTATION.GAMMA <- opt$segmentation_gamma; +SEGMENTATION.KMIN <- opt$segmentation_kmin; +PHASING.KMIN <- opt$phasing_kmin; +CLONALITY.DIST.METRIC <- opt$clonality_dist_metric; +ASCAT.DIST.METRIC <- opt$ascat_dist_metric; +MIN.GOODNESS.OF.FIT <- opt$min_goodness_of_fit; +BALANCED.THRESHOLD <- opt$balanced_threshold; +MIN.NORMAL.DEPTH <- opt$min_normal_depth; +MIN.BASE.QUAL <- opt$min_base_qual; +MIN.MAP.QUAL <- opt$min_map_qual; +CALC.SEG.BAF.OPTION <- opt$calc_seg_baf_option; +DATA.TYPE <- opt$data_type; + +# General static +IMPUTEINFOFILE <- '/opt/battenberg_reference/impute_info.txt'; +G1000PREFIX <- '/opt/battenberg_reference/1000_genomes_loci/1000_genomes_allele_index_chr'; +G1000PREFIX.AC <- '/opt/battenberg_reference/1000_genomes_loci/1000_genomes_loci_chr'; +GCCORRECTPREFIX <- '/opt/battenberg_reference/1000_genomes_gcContent/1000_genomes_GC_corr_chr'; +REPLICCORRECTPREFIX <- '/opt/battenberg_reference/battenberg_wgs_replication_timing_correction_1000_genomes/1000_genomes_replication_timing_chr'; +IMPUTE.EXE <- 'impute2'; + +# WGS specific static +ALLELECOUNTER <- 'alleleCounter'; +PROBLEMLOCI <- '/opt/battenberg_reference/battenberg_problem_loci/probloci.txt.gz'; + +# Change to work directory and load the chromosome information +setwd(RUN.DIR); + +battenberg( + tumourname = TUMOURNAME, + normalname = NORMALNAME, + tumour_data_file = TUMOURBAM, + normal_data_file = NORMALBAM, + ismale = IS.MALE, + imputeinfofile = IMPUTEINFOFILE, + g1000prefix = G1000PREFIX, + g1000allelesprefix = G1000PREFIX.AC, + gccorrectprefix = GCCORRECTPREFIX, + repliccorrectprefix = REPLICCORRECTPREFIX, + problemloci = PROBLEMLOCI, + data_type = DATA.TYPE, + impute_exe = IMPUTE.EXE, + allelecounter_exe = ALLELECOUNTER, + nthreads = NTHREADS, + platform_gamma = PLATFORM.GAMMA, + phasing_gamma = PHASING.GAMMA, + segmentation_gamma = SEGMENTATION.GAMMA, + segmentation_kmin = SEGMENTATION.KMIN, + phasing_kmin = PHASING.KMIN, + clonality_dist_metric = CLONALITY.DIST.METRIC, + ascat_dist_metric = ASCAT.DIST.METRIC, + min_ploidy = MIN.PLOIDY, + max_ploidy = MAX.PLOIDY, + min_rho = MIN.RHO, + max_rho = MAX.RHO, + min_goodness = MIN.GOODNESS.OF.FIT, + uninformative_BAF_threshold = BALANCED.THRESHOLD, + min_normal_depth = MIN.NORMAL.DEPTH, + min_base_qual = MIN.BASE.QUAL, + min_map_qual = MIN.MAP.QUAL, + calc_seg_baf_option = CALC.SEG.BAF.OPTION, + skip_allele_counting = SKIP.ALLELECOUNTING, + skip_preprocessing = SKIP.PREPROCESSING, + skip_phasing = SKIP.PHASING, + prior_breakpoints_file = PRIOR.BREAKPOINTS.FILE + ); diff --git a/installer.R b/installer.R deleted file mode 100644 index 4c9f491..0000000 --- a/installer.R +++ /dev/null @@ -1,20 +0,0 @@ -library(argparse); -library(pkgdepends); - -parser <- ArgumentParser(); - -parser$add_argument( - '-d', - '--dependencies', - nargs = '+', - help = 'List dependencies separated by space' - ); - -args <- parser$parse_args(); - -tools <- args$dependencies; - -pkg.installation.proposal <- new_pkg_installation_proposal(tools); -pkg.installation.proposal$solve(); -pkg.installation.proposal$download(); -pkg.installation.proposal$install(); diff --git a/metadata.yaml b/metadata.yaml index 6c33da3..ef0a8e9 100644 --- a/metadata.yaml +++ b/metadata.yaml @@ -4,7 +4,7 @@ description: 'Docker repository for Wedge-lab/battenberg' maintainers: ['mmootor@mednet.ucla.edu'] languages: ['Dockerfile'] tools: ['battenberg'] -version: ['2.2.9'] # Tool version number +version: ['2.2.9-bl-parametrize-max-rho'] # Tool version number purpose: 'Whole Genome Sequencing subclonal copy number caller' # Description of what this tool does references: 'https://github.com/Wedge-lab/battenberg' # is the tool/dependencies published, is there a confluence page image_name: 'battenberg' # name of the new docker image diff --git a/modify_reference_path.sh b/modify_reference_path.sh deleted file mode 100644 index 4c3d7d1..0000000 --- a/modify_reference_path.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/sh - -refpath_default=$1 -refpath_modified=$2 - -cat "${refpath_default}" | \ - sed 's|IMPUTEINFOFILE = \".*|IMPUTEINFOFILE = \"/opt/battenberg_reference/impute_info.txt\"|' | \ - sed 's|G1000PREFIX = \".*|G1000PREFIX = \"/opt/battenberg_reference/1000_genomes_loci/1000_genomes_allele_index_chr\"|' | \ - sed 's|G1000PREFIX_AC = \".*|G1000PREFIX_AC = \"/opt/battenberg_reference/1000_genomes_loci/1000_genomes_loci_chr\"|' | \ - sed 's|GCCORRECTPREFIX = \".*|GCCORRECTPREFIX = \"/opt/battenberg_reference/1000_genomes_gcContent/1000_genomes_GC_corr_chr\"|' | \ - sed 's|PROBLEMLOCI = \".*|PROBLEMLOCI = \"/opt/battenberg_reference/battenberg_problem_loci/probloci.txt.gz\"|' | \ - sed 's|REPLICCORRECTPREFIX = \".*|REPLICCORRECTPREFIX = \"/opt/battenberg_reference/battenberg_wgs_replication_timing_correction_1000_genomes/1000_genomes_replication_timing_chr\"|' > "${refpath_modified}" diff --git a/renv.lock b/renv.lock new file mode 100644 index 0000000..720781e --- /dev/null +++ b/renv.lock @@ -0,0 +1,2287 @@ +{ + "R": { + "Version": "3.6.3", + "Repositories": [ + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Bioconductor": { + "Version": "3.10" + }, + "Packages": { + "ASCAT": { + "Package": "ASCAT", + "Version": "3.1.2", + "Source": "unknown", + "Requirements": [ + "GenomicRanges", + "IRanges", + "R", + "RColorBrewer", + "data.table", + "doParallel", + "foreach", + "grDevices", + "graphics", + "parallel", + "splines", + "stats", + "utils" + ], + "Hash": "ec7df76f9604746d60dea3d0ed928fd9" + }, + "AnnotationDbi": { + "Package": "AnnotationDbi", + "Version": "1.48.0", + "Source": "Bioconductor", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DBI", + "IRanges", + "R", + "RSQLite", + "S4Vectors", + "methods", + "stats4", + "utils" + ], + "Hash": "2ccf69ebae65488c59f5ad22d36aae82" + }, + "BH": { + "Package": "BH", + "Version": "1.66.0-1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "65955cebebd6f0075d89ee3b6558f2ac" + }, + "BSgenome": { + "Package": "BSgenome", + "Version": "1.54.0", + "Source": "Bioconductor", + "Requirements": [ + "BiocGenerics", + "Biostrings", + "GenomeInfoDb", + "GenomicRanges", + "IRanges", + "R", + "Rsamtools", + "S4Vectors", + "XVector", + "methods", + "rtracklayer", + "stats", + "utils" + ], + "Hash": "f43037954239a8bbc7256263c4b7a73d" + }, + "Battenberg": { + "Package": "Battenberg", + "Version": "2.2.9", + "Source": "unknown", + "Requirements": [ + "ASCAT", + "R", + "RColorBrewer", + "doParallel", + "foreach", + "ggplot2", + "grDevices", + "graphics", + "gridExtra", + "gtools", + "parallel", + "readr", + "splines", + "stats", + "utils" + ], + "Hash": "c902c175efb4bd7d0d97d6cc542bf95d" + }, + "Biobase": { + "Package": "Biobase", + "Version": "2.46.0", + "Source": "Bioconductor", + "Requirements": [ + "BiocGenerics", + "R", + "methods", + "utils" + ], + "Hash": "ddbfe185296ede75aadb84a51724ac88" + }, + "BiocFileCache": { + "Package": "BiocFileCache", + "Version": "1.10.2", + "Source": "Bioconductor", + "Requirements": [ + "DBI", + "R", + "RSQLite", + "curl", + "dbplyr", + "dplyr", + "httr", + "methods", + "rappdirs", + "stats", + "utils" + ], + "Hash": "6b036e16fdfecc74e515a92b74983b20" + }, + "BiocGenerics": { + "Package": "BiocGenerics", + "Version": "0.32.0", + "Source": "Bioconductor", + "Requirements": [ + "R", + "graphics", + "methods", + "parallel", + "stats", + "utils" + ], + "Hash": "b2dabf833cc349c2cd9cba38de7af085" + }, + "BiocManager": { + "Package": "BiocManager", + "Version": "1.30.25", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "utils" + ], + "Hash": "3aec5928ca10897d7a0a1205aae64627" + }, + "BiocParallel": { + "Package": "BiocParallel", + "Version": "1.20.1", + "Source": "Bioconductor", + "Requirements": [ + "BH", + "futile.logger", + "methods", + "parallel", + "snow", + "stats", + "utils" + ], + "Hash": "744ce1b8f59ad5827fe03f30a4fe8e50" + }, + "BiocVersion": { + "Package": "BiocVersion", + "Version": "3.10.1", + "Source": "Bioconductor", + "Requirements": [ + "R" + ], + "Hash": "b69e4e634db423b8e6c58103d579ec95" + }, + "Biostrings": { + "Package": "Biostrings", + "Version": "2.54.0", + "Source": "Bioconductor", + "Requirements": [ + "BiocGenerics", + "IRanges", + "R", + "S4Vectors", + "XVector", + "graphics", + "methods", + "stats", + "utils" + ], + "Hash": "1b67f1596c4bd58e1e3cbeeeafd8e83b" + }, + "DBI": { + "Package": "DBI", + "Version": "1.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "8943ce80c4b851ca3e75ba52c2fad1b4" + }, + "DT": { + "Package": "DT", + "Version": "0.12", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "crosstalk", + "htmltools", + "htmlwidgets", + "jsonlite", + "magrittr", + "promises" + ], + "Hash": "0e120603cc57e4f1d741f739aa8147ba" + }, + "DelayedArray": { + "Package": "DelayedArray", + "Version": "0.12.3", + "Source": "Bioconductor", + "Requirements": [ + "BiocGenerics", + "BiocParallel", + "IRanges", + "Matrix", + "R", + "S4Vectors", + "matrixStats", + "methods", + "stats", + "stats4" + ], + "Hash": "44cc30c09b19ebae7519a646892f08aa" + }, + "GenomeInfoDb": { + "Package": "GenomeInfoDb", + "Version": "1.22.1", + "Source": "Bioconductor", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDbData", + "IRanges", + "R", + "RCurl", + "S4Vectors", + "methods", + "stats", + "stats4", + "utils" + ], + "Hash": "93817c3d2875eafe039f2096257e8391" + }, + "GenomeInfoDbData": { + "Package": "GenomeInfoDbData", + "Version": "1.2.2", + "Source": "Bioconductor", + "Requirements": [ + "R" + ], + "Hash": "de42132c04371f624cdea8de86e8fc5d" + }, + "GenomicAlignments": { + "Package": "GenomicAlignments", + "Version": "1.22.1", + "Source": "Bioconductor", + "Requirements": [ + "BiocGenerics", + "BiocParallel", + "Biostrings", + "GenomeInfoDb", + "GenomicRanges", + "IRanges", + "R", + "Rsamtools", + "S4Vectors", + "SummarizedExperiment", + "methods", + "stats", + "utils" + ], + "Hash": "13bd06473113c31fbbcfb15f1c1a5f82" + }, + "GenomicFeatures": { + "Package": "GenomicFeatures", + "Version": "1.38.2", + "Source": "Bioconductor", + "Requirements": [ + "AnnotationDbi", + "Biobase", + "BiocGenerics", + "Biostrings", + "DBI", + "GenomeInfoDb", + "GenomicRanges", + "IRanges", + "RCurl", + "RSQLite", + "S4Vectors", + "XVector", + "biomaRt", + "methods", + "rtracklayer", + "stats", + "tools", + "utils" + ], + "Hash": "f14e2c8c9ef78d7c96f5bed4fdc223ca" + }, + "GenomicRanges": { + "Package": "GenomicRanges", + "Version": "1.38.0", + "Source": "Bioconductor", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDb", + "IRanges", + "R", + "S4Vectors", + "XVector", + "methods", + "stats", + "stats4", + "utils" + ], + "Hash": "8ff54983afa8eda100fa0fcadd6816bf" + }, + "IRanges": { + "Package": "IRanges", + "Version": "2.20.2", + "Source": "Bioconductor", + "Requirements": [ + "BiocGenerics", + "R", + "S4Vectors", + "methods", + "stats", + "stats4", + "utils" + ], + "Hash": "1a50f68b0c61ae8e76b318af5a2da784" + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-51.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "methods", + "stats", + "utils" + ], + "Hash": "9efe80472b21189ebab1b74169808c26" + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.2-18", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "graphics", + "grid", + "lattice", + "methods", + "stats", + "utils" + ], + "Hash": "08588806cba69f04797dab50627428ed" + }, + "R6": { + "Package": "R6", + "Version": "2.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "292b54f8f4b94669b08f94e5acce6be2" + }, + "RColorBrewer": { + "Package": "RColorBrewer", + "Version": "1.1-2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "e031418365a7f7a766181ab5a41a5716" + }, + "RCurl": { + "Package": "RCurl", + "Version": "1.98-1.16", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "bitops", + "methods" + ], + "Hash": "ddbdf53d15b47be4407ede6914f56fbb" + }, + "RSQLite": { + "Package": "RSQLite", + "Version": "2.3.7", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "DBI", + "R", + "bit64", + "blob", + "cpp11", + "memoise", + "methods", + "pkgconfig", + "plogr", + "rlang" + ], + "Hash": "899ee59409e8daa50914156ab6c0b4a8" + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods", + "utils" + ], + "Hash": "f3ca785924863b0e4c8cb23b6a5c75a1" + }, + "Rhtslib": { + "Package": "Rhtslib", + "Version": "1.18.1", + "Source": "Bioconductor", + "Requirements": [ + "zlibbioc" + ], + "Hash": "70d3c447ca9f22a8f0b07328dbe32421" + }, + "Rsamtools": { + "Package": "Rsamtools", + "Version": "2.2.3", + "Source": "Bioconductor", + "Requirements": [ + "BiocGenerics", + "BiocParallel", + "Biostrings", + "GenomeInfoDb", + "GenomicRanges", + "IRanges", + "Rhtslib", + "S4Vectors", + "XVector", + "bitops", + "methods", + "utils", + "zlibbioc" + ], + "Hash": "6d7d5bb29dd9bb69bfabccfa595a8a53" + }, + "S4Vectors": { + "Package": "S4Vectors", + "Version": "0.24.4", + "Source": "Bioconductor", + "Requirements": [ + "BiocGenerics", + "R", + "methods", + "stats", + "stats4", + "utils" + ], + "Hash": "83b45b8b34a545f830bb6ca3aa0dd5be" + }, + "SummarizedExperiment": { + "Package": "SummarizedExperiment", + "Version": "1.16.1", + "Source": "Bioconductor", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DelayedArray", + "GenomeInfoDb", + "GenomicRanges", + "IRanges", + "Matrix", + "R", + "S4Vectors", + "methods", + "stats", + "tools", + "utils" + ], + "Hash": "b4078536bcc60be8f23ea78a8d807602" + }, + "VariantAnnotation": { + "Package": "VariantAnnotation", + "Version": "1.32.0", + "Source": "Bioconductor", + "Requirements": [ + "AnnotationDbi", + "BSgenome", + "Biobase", + "BiocGenerics", + "Biostrings", + "DBI", + "GenomeInfoDb", + "GenomicFeatures", + "GenomicRanges", + "IRanges", + "R", + "Rhtslib", + "Rsamtools", + "S4Vectors", + "SummarizedExperiment", + "XVector", + "methods", + "rtracklayer", + "utils", + "zlibbioc" + ], + "Hash": "51930eaf6f901255d96407681e4007ab" + }, + "XML": { + "Package": "XML", + "Version": "3.99-0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods", + "utils" + ], + "Hash": "c1616606f097075542c12fb8a10a071e" + }, + "XVector": { + "Package": "XVector", + "Version": "0.26.0", + "Source": "Bioconductor", + "Requirements": [ + "BiocGenerics", + "IRanges", + "R", + "S4Vectors", + "methods", + "utils", + "zlibbioc" + ], + "Hash": "315ee199ff158bcbec0d6ca9129c5d01" + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "sys" + ], + "Hash": "e8a22846fff485f0be3770c2da758713" + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "tools" + ], + "Hash": "50c838a310445e954bc13f26f26a6ecf" + }, + "backports": { + "Package": "backports", + "Version": "1.1.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "e9f705633dc932bfd5b02b17a5053a06" + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "543776ae6848fde2f48ff3816d0628bc" + }, + "biomaRt": { + "Package": "biomaRt", + "Version": "2.42.1", + "Source": "Bioconductor", + "Requirements": [ + "AnnotationDbi", + "BiocFileCache", + "XML", + "httr", + "methods", + "openssl", + "progress", + "rappdirs", + "stringr", + "utils" + ], + "Hash": "8482bfe886794fbbf64282f1484cf8a5" + }, + "bit": { + "Package": "bit", + "Version": "4.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "bea4d535d65dc5715c4f7ce1d40d6855" + }, + "bit64": { + "Package": "bit64", + "Version": "4.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "bit", + "methods", + "stats", + "utils" + ], + "Hash": "3bcac3afc6956ef8b20dfa40ffa89824" + }, + "bitops": { + "Package": "bitops", + "Version": "1.0-9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d972ef991d58c19e6efa71b21f5e144b" + }, + "blob": { + "Package": "blob", + "Version": "1.2.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "methods", + "rlang", + "vctrs" + ], + "Hash": "114db06d895ee0b7b33cefdd93be2c08" + }, + "brew": { + "Package": "brew", + "Version": "1.0-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "92a5f887f9ae3035ac7afde22ba73ee9" + }, + "callr": { + "Package": "callr", + "Version": "3.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R6", + "processx", + "utils" + ], + "Hash": "d16f6e202179e69c1400cc1f845bfc09" + }, + "cli": { + "Package": "cli", + "Version": "3.6.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "0ed4ad4cf3f08062b4c287a5558954f1" + }, + "clipr": { + "Package": "clipr", + "Version": "0.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "utils" + ], + "Hash": "08cf4045c149a0f0eaf405324c7495bd" + }, + "clisymbols": { + "Package": "clisymbols", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "96c01552bfd5661b9bbdefbc762f4bcd" + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-16", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "89cf4b8207269ccf82fbeb6473fd662b" + }, + "colorspace": { + "Package": "colorspace", + "Version": "1.4-1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "methods", + "stats" + ], + "Hash": "6b436e95723d1f0e861224dd9b094dfb" + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f22be39ec1d141fd03683c06f3a6e67" + }, + "copynumber": { + "Package": "copynumber", + "Version": "1.26.0", + "Source": "Bioconductor", + "Requirements": [ + "BiocGenerics", + "GenomicRanges", + "IRanges", + "R", + "S4Vectors" + ], + "Hash": "32e85de489402757bb1426ec54a5add3" + }, + "covr": { + "Package": "covr", + "Version": "3.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "crayon", + "digest", + "httr", + "jsonlite", + "methods", + "rex", + "stats", + "utils", + "withr", + "yaml" + ], + "Hash": "f74318f5d25fa79665684bcdc296ea4f" + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed588261931ee3be2c700d22e94a29ab" + }, + "crayon": { + "Package": "crayon", + "Version": "1.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "grDevices", + "methods", + "utils" + ], + "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b" + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R6", + "ggplot2", + "htmltools", + "jsonlite", + "lazyeval", + "shiny" + ], + "Hash": "4ac529753d1e529966ef675d7f0c762b" + }, + "curl": { + "Package": "curl", + "Version": "4.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "2b7d10581cc730804e9ed178c8374bd6" + }, + "data.table": { + "Package": "data.table", + "Version": "1.14.8", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "b4c06e554f33344e044ccd7fdca750a9" + }, + "dbplyr": { + "Package": "dbplyr", + "Version": "2.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "DBI", + "R", + "R6", + "blob", + "cli", + "dplyr", + "glue", + "lifecycle", + "magrittr", + "methods", + "pillar", + "purrr", + "rlang", + "tibble", + "tidyr", + "tidyselect", + "utils", + "vctrs", + "withr" + ], + "Hash": "39b2e002522bfd258039ee4e889e0fd1" + }, + "desc": { + "Package": "desc", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "assertthat", + "crayon", + "rprojroot", + "utils" + ], + "Hash": "6c8fe8fa26a23b79949375d372c7b395" + }, + "devtools": { + "Package": "devtools", + "Version": "2.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "DT", + "R", + "callr", + "cli", + "covr", + "crayon", + "desc", + "digest", + "ellipsis", + "git2r", + "glue", + "httr", + "jsonlite", + "memoise", + "pkgbuild", + "pkgload", + "rcmdcheck", + "remotes", + "rlang", + "roxygen2", + "rstudioapi", + "rversions", + "sessioninfo", + "stats", + "testthat", + "tools", + "usethis", + "utils", + "withr" + ], + "Hash": "e12b66f9f6dc41b765b047b4df4b4a38" + }, + "digest": { + "Package": "digest", + "Version": "0.6.25", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "f697db7d92b7028c4b3436e9603fb636" + }, + "doParallel": { + "Package": "doParallel", + "Version": "1.0.17", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "foreach", + "iterators", + "parallel", + "utils" + ], + "Hash": "451e5edf411987991ab6a5410c45011f" + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "cli", + "generics", + "glue", + "lifecycle", + "magrittr", + "methods", + "pillar", + "rlang", + "tibble", + "tidyselect", + "utils", + "vctrs" + ], + "Hash": "81d8f0b59c994d785ad85797601823b9" + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "rlang" + ], + "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077" + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "ec8ca05cffcc70569eaaad8469d2a3a7" + }, + "fansi": { + "Package": "fansi", + "Version": "0.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "7fce217eaaf8016e72065e85c73027b5" + }, + "farver": { + "Package": "farver", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "dad6793a5a1f73c8e91f1a1e3e834b05" + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "83ab58a0518afe3d17e41da01af13b60" + }, + "foreach": { + "Package": "foreach", + "Version": "1.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "codetools", + "iterators", + "utils" + ], + "Hash": "618609b42c9406731ead03adf5379850" + }, + "formatR": { + "Package": "formatR", + "Version": "1.14", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "63cb26d12517c7863f5abb006c5e0f25" + }, + "fs": { + "Package": "fs", + "Version": "1.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "methods" + ], + "Hash": "0e26be4558dbbc713d7cfe4a4c361f38" + }, + "futile.logger": { + "Package": "futile.logger", + "Version": "1.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "futile.options", + "lambda.r", + "utils" + ], + "Hash": "99f0ace8c05ec7d3683d27083c4f1e7e" + }, + "futile.options": { + "Package": "futile.options", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "0d9bf02413ddc2bbe8da9ce369dcdd2b" + }, + "generics": { + "Package": "generics", + "Version": "0.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "15e9634c0fcd294799e9b2e929ed1b86" + }, + "getopt": { + "Package": "getopt", + "Version": "1.20.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "stats" + ], + "Hash": "ed33b16c6d24f7ced1d68877ac2509ee" + }, + "ggplot2": { + "Package": "ggplot2", + "Version": "3.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "MASS", + "R", + "digest", + "grDevices", + "grid", + "gtable", + "lazyeval", + "mgcv", + "reshape2", + "rlang", + "scales", + "stats", + "tibble", + "viridisLite", + "withr" + ], + "Hash": "9ac60f09a2f437af8df8638ef3da0288" + }, + "gh": { + "Package": "gh", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "cli", + "httr", + "ini", + "jsonlite" + ], + "Hash": "89ea5998938d1ad55f035c8a86f96b74" + }, + "git2r": { + "Package": "git2r", + "Version": "0.26.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "graphics", + "utils" + ], + "Hash": "135db4dbc94ed18f629ff8843a8064b7" + }, + "glue": { + "Package": "glue", + "Version": "1.8.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "5899f1eaa825580172bb56c08266f37c" + }, + "gridExtra": { + "Package": "gridExtra", + "Version": "2.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "grDevices", + "graphics", + "grid", + "gtable", + "utils" + ], + "Hash": "7d7f283939f563670a697165b2cf5560" + }, + "gtable": { + "Package": "gtable", + "Version": "0.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grid" + ], + "Hash": "ac5c6baf7822ce8732b343f14c072c4d" + }, + "gtools": { + "Package": "gtools", + "Version": "3.9.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "methods", + "stats", + "utils" + ], + "Hash": "88bb96eaf7140cdf29e374ef74182220" + }, + "highr": { + "Package": "highr", + "Version": "0.8", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "4dc5bb88961e347a0f4d8aad597cbfac" + }, + "hms": { + "Package": "hms", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "lifecycle", + "methods", + "pkgconfig", + "rlang", + "vctrs" + ], + "Hash": "f0aae4008b1fd655b9a62e26a4994c65" + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "digest", + "rlang", + "utils" + ], + "Hash": "2d7691222f82f41e93f6d30f169bd5e1" + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "grDevices", + "htmltools", + "jsonlite", + "yaml" + ], + "Hash": "41bace23583fbc25089edae324de2dc3" + }, + "httpuv": { + "Package": "httpuv", + "Version": "1.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "BH", + "R", + "R6", + "Rcpp", + "later", + "promises", + "utils" + ], + "Hash": "f793dad2c9ae14fbb1d22f16f23f8326" + }, + "httr": { + "Package": "httr", + "Version": "1.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ], + "Hash": "7146fea4685b4252ebf478978c75f597" + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6154ec2223172bce8162d4153cda21f7" + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.14", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "8954069286b4b2b0d023d1b288dce978" + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "methods" + ], + "Hash": "84b0ee361e2f78d6b7d670db9471c0c5" + }, + "knitr": { + "Package": "knitr", + "Version": "1.28", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "evaluate", + "highr", + "markdown", + "methods", + "stringr", + "tools", + "xfun", + "yaml" + ], + "Hash": "915a6f0134cdbdf016d7778bc80b2eda" + }, + "labeling": { + "Package": "labeling", + "Version": "0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "73832978c1de350df58108c745ed0e3e" + }, + "lambda.r": { + "Package": "lambda.r", + "Version": "1.2.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "formatR" + ], + "Hash": "b1e925c4b9ffeb901bacf812cbe9a6ad" + }, + "later": { + "Package": "later", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "BH", + "Rcpp", + "rlang" + ], + "Hash": "6d927978fc658d24175ce37db635f9e5" + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-40", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "grid", + "stats", + "utils" + ], + "Hash": "61339152c288b871facca5f68f401f89" + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "d908914ae53b04d4c0c0fd72ecc35370" + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "rlang" + ], + "Hash": "001cecbeac1cff9301bdc3775ee46a86" + }, + "littler": { + "Package": "littler", + "Version": "0.3.9", + "Source": "Repository", + "Repository": "CRAN", + "OS_type": "unix", + "Hash": "c3acd4365e02598fc09d6c547255602e" + }, + "magrittr": { + "Package": "magrittr", + "Version": "1.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1bb58822a20301cee84a41678e25d9b7" + }, + "manipulateWidget": { + "Package": "manipulateWidget", + "Version": "0.9.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "base64enc", + "codetools", + "grDevices", + "htmltools", + "htmlwidgets", + "knitr", + "methods", + "miniUI", + "shiny", + "tools" + ], + "Hash": "11669da8ee4debef0ca7475f79bf5a9f" + }, + "markdown": { + "Package": "markdown", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "mime", + "utils", + "xfun" + ], + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95" + }, + "matrixStats": { + "Package": "matrixStats", + "Version": "1.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "8885ffb1f46e820dede6b2ca9442abca" + }, + "memoise": { + "Package": "memoise", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "digest" + ], + "Hash": "58baa74e4603fcfb9a94401c58c8f9b1" + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-31", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "Matrix", + "R", + "graphics", + "methods", + "nlme", + "splines", + "stats", + "utils" + ], + "Hash": "4bb7e0c4f3557583e1e8d3c9ffb8ba5c" + }, + "mime": { + "Package": "mime", + "Version": "0.9", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "tools" + ], + "Hash": "e87a35ec73b157552814869f45a63aa3" + }, + "miniUI": { + "Package": "miniUI", + "Version": "0.1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "htmltools", + "shiny", + "utils" + ], + "Hash": "fec5f52652d60615fdb3957b3d74324a" + }, + "munsell": { + "Package": "munsell", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "colorspace", + "methods" + ], + "Hash": "6dfe8bf774944bd5595785e3229d8771" + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-144", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "graphics", + "lattice", + "stats", + "utils" + ], + "Hash": "e80d41932d3cc235ccbbbb9732ae162e" + }, + "openssl": { + "Package": "openssl", + "Version": "1.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "askpass" + ], + "Hash": "49f7258fd86ebeaea1df24d9ded00478" + }, + "optparse": { + "Package": "optparse", + "Version": "1.7.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "getopt", + "methods" + ], + "Hash": "aa4a7717b5760a769c7fd3d34614f2a2" + }, + "pillar": { + "Package": "pillar", + "Version": "1.9.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "cli", + "fansi", + "glue", + "lifecycle", + "rlang", + "utf8", + "utils", + "vctrs" + ], + "Hash": "d6d0adcbc0f2fa6ff6e98dd0ae93882a" + }, + "pkgKitten": { + "Package": "pkgKitten", + "Version": "0.1.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f9e9851a276298641a897cf372ac65b5" + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "callr", + "cli", + "crayon", + "desc", + "prettyunits", + "rprojroot", + "withr" + ], + "Hash": "899835dfe286963471cbdb9591f8f94f" + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "utils" + ], + "Hash": "01f28d4278f15c76cddbea05899c5d6f" + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "desc", + "methods", + "pkgbuild", + "rlang", + "rprojroot", + "rstudioapi", + "utils", + "withr" + ], + "Hash": "5e655fb54cceead0f095f22d7be33da3" + }, + "plogr": { + "Package": "plogr", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a6c25edda325ab10a32f41d625fcb5b9" + }, + "plyr": { + "Package": "plyr", + "Version": "1.8.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp" + ], + "Hash": "3f1b0dbcc503320e6e7aae6c3ff87eaa" + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f" + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "95ef9167b75dde9d2ccc3c7528393e7e" + }, + "processx": { + "Package": "processx", + "Version": "3.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R6", + "ps", + "utils" + ], + "Hash": "20a082f2bde0ffcd8755779fd476a274" + }, + "progress": { + "Package": "progress", + "Version": "1.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "crayon", + "hms", + "prettyunits" + ], + "Hash": "f29072c6df15dd72be41c6f26bec4b18" + }, + "promises": { + "Package": "promises", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R6", + "Rcpp", + "later", + "magrittr", + "rlang", + "stats" + ], + "Hash": "efbbe62da4709f7040a380c702bc7103" + }, + "ps": { + "Package": "ps", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "98777535b61c57d1749344345e2a4ccd" + }, + "purrr": { + "Package": "purrr", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "lifecycle", + "magrittr", + "rlang", + "vctrs" + ], + "Hash": "1cba04a4e9414bdefc9dcaa99649a8dc" + }, + "rappdirs": { + "Package": "rappdirs", + "Version": "0.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "5e3c5dc0b071b21fa128676560dbe94d" + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "digest", + "pkgbuild", + "prettyunits", + "rprojroot", + "sessioninfo", + "utils", + "withr", + "xopen" + ], + "Hash": "ed95895886dab6d2a584da45503555da" + }, + "readr": { + "Package": "readr", + "Version": "2.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "cli", + "clipr", + "cpp11", + "crayon", + "hms", + "lifecycle", + "methods", + "rlang", + "tibble", + "tzdb", + "utils", + "vroom" + ], + "Hash": "b5047343b3825f37ad9d3b5d89aa1078" + }, + "remotes": { + "Package": "remotes", + "Version": "2.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods", + "stats", + "tools", + "utils" + ], + "Hash": "57c3009534f805f0f6476ffee68483cc" + }, + "renv": { + "Package": "renv", + "Version": "1.0.11", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "utils" + ], + "Hash": "47623f66b4e80b3b0587bc5d7b309888" + }, + "reshape2": { + "Package": "reshape2", + "Version": "1.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "plyr", + "stringr" + ], + "Hash": "15a23ad30f51789188e439599559815c" + }, + "rex": { + "Package": "rex", + "Version": "1.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "lazyeval", + "magrittr" + ], + "Hash": "6d3dbb5d528c8f726861018472bc668c" + }, + "rgl": { + "Package": "rgl", + "Version": "0.100.50", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "crosstalk", + "grDevices", + "graphics", + "htmltools", + "htmlwidgets", + "jsonlite", + "knitr", + "magrittr", + "manipulateWidget", + "shiny", + "stats", + "utils" + ], + "Hash": "30066f09826010feecfc836c51aaa7a9" + }, + "rlang": { + "Package": "rlang", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "3eec01f8b1dee337674b2e34ab1f9bc1" + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "Rcpp", + "brew", + "commonmark", + "desc", + "digest", + "methods", + "pkgload", + "purrr", + "rlang", + "stringi", + "stringr", + "utils", + "xml2" + ], + "Hash": "1977524d886576fe7da0332de2f30dae" + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "1.3-2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "backports" + ], + "Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae" + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "33a5b27a03da82ac4b1d43268f80088a" + }, + "rtracklayer": { + "Package": "rtracklayer", + "Version": "1.46.0", + "Source": "Bioconductor", + "Requirements": [ + "BiocGenerics", + "Biostrings", + "GenomeInfoDb", + "GenomicAlignments", + "GenomicRanges", + "IRanges", + "R", + "RCurl", + "Rsamtools", + "S4Vectors", + "XML", + "XVector", + "methods", + "tools", + "zlibbioc" + ], + "Hash": "a635995c99bc0e67fd23167f859893af" + }, + "rversions": { + "Package": "rversions", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "curl", + "utils", + "xml2" + ], + "Hash": "2aa84e83767ba93ee6415b439fa981d2" + }, + "scales": { + "Package": "scales", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "RColorBrewer", + "farver", + "labeling", + "lifecycle", + "munsell", + "viridisLite" + ], + "Hash": "a1c68369c629ea3188d0676e37069c65" + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "cli", + "tools", + "utils", + "withr" + ], + "Hash": "308013098befe37484df72c39cf90d6e" + }, + "shiny": { + "Package": "shiny", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "crayon", + "digest", + "fastmap", + "grDevices", + "htmltools", + "httpuv", + "jsonlite", + "later", + "methods", + "mime", + "promises", + "rlang", + "sourcetools", + "tools", + "utils", + "xtable" + ], + "Hash": "6ca23724bb2c804c1d0b3db4862a39c7" + }, + "snow": { + "Package": "snow", + "Version": "0.4-4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "40b74690debd20c57d93d8c246b305d4" + }, + "sourcetools": { + "Package": "sourcetools", + "Version": "0.1.7", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "947e4e02a79effa5d512473e10f41797" + }, + "stringi": { + "Package": "stringi", + "Version": "1.8.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats", + "tools", + "utils" + ], + "Hash": "39e1144fd75428983dc3f63aa53dfa91" + }, + "stringr": { + "Package": "stringr", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "magrittr", + "rlang", + "stringi", + "vctrs" + ], + "Hash": "960e2ae9e09656611e0b8214ad543207" + }, + "sys": { + "Package": "sys", + "Version": "3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "507f3116a38d37ad330a038b3be07b66" + }, + "testthat": { + "Package": "testthat", + "Version": "2.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "cli", + "crayon", + "digest", + "ellipsis", + "evaluate", + "magrittr", + "methods", + "pkgload", + "praise", + "rlang", + "withr" + ], + "Hash": "68dad590f6445cdcdaa5b7eec60e9686" + }, + "tibble": { + "Package": "tibble", + "Version": "3.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "fansi", + "lifecycle", + "magrittr", + "methods", + "pillar", + "pkgconfig", + "rlang", + "utils", + "vctrs" + ], + "Hash": "4365264443928ad5ba1295beab017f87" + }, + "tidyr": { + "Package": "tidyr", + "Version": "1.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "cpp11", + "dplyr", + "glue", + "lifecycle", + "magrittr", + "purrr", + "rlang", + "stringr", + "tibble", + "tidyselect", + "utils", + "vctrs" + ], + "Hash": "915fb7ce036c22a6a33b5a8adb712eb1" + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "rlang", + "vctrs", + "withr" + ], + "Hash": "829f27b9c4919c16b593794a6344d6c0" + }, + "tzdb": { + "Package": "tzdb", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cpp11" + ], + "Hash": "f561504ec2897f4d46f0c7657e488ae1" + }, + "usethis": { + "Package": "usethis", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "clipr", + "clisymbols", + "crayon", + "curl", + "desc", + "fs", + "gh", + "git2r", + "glue", + "purrr", + "rlang", + "rprojroot", + "rstudioapi", + "stats", + "utils", + "whisker", + "withr", + "yaml" + ], + "Hash": "30ee6fa315a020d5db6f28adbb7fea83" + }, + "utf8": { + "Package": "utf8", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "4a5081acfb7b81a572e4384a7aaf2af1" + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.6.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "rlang" + ], + "Hash": "c03fa420630029418f7e6da3667aac4a" + }, + "viridisLite": { + "Package": "viridisLite", + "Version": "0.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "ce4f6271baa94776db692f1cb2055bee" + }, + "vroom": { + "Package": "vroom", + "Version": "1.6.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "bit64", + "cli", + "cpp11", + "crayon", + "glue", + "hms", + "lifecycle", + "methods", + "progress", + "rlang", + "stats", + "tibble", + "tidyselect", + "tzdb", + "vctrs", + "withr" + ], + "Hash": "76385e34b0a587cea758fdee61ba4af0" + }, + "whisker": { + "Package": "whisker", + "Version": "0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca970b96d894e90397ed20637a0c1bbe" + }, + "withr": { + "Package": "withr", + "Version": "3.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics" + ], + "Hash": "f67d8fc354f44b16fc494f86f1ddda89" + }, + "xfun": { + "Package": "xfun", + "Version": "0.12", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "stats", + "tools" + ], + "Hash": "ccd8453a7b9e380628f6cd2862e46cad" + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "921dce7c0ec595ed85e77683d3e6c8b6" + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "processx" + ], + "Hash": "6c85f015dee9cc7710ddd20f86881f58" + }, + "xtable": { + "Package": "xtable", + "Version": "1.8-4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats", + "utils" + ], + "Hash": "b8acdf8af494d9ec19ccb2481a9b11c2" + }, + "yaml": { + "Package": "yaml", + "Version": "2.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2826c5d9efb0a88f657c7a679c7106db" + }, + "zlibbioc": { + "Package": "zlibbioc", + "Version": "1.32.0", + "Source": "Bioconductor", + "Hash": "f7a31247eadfb45098bcf2e8c4aebb49" + } + } +}