Previous changeset 16:163688bb8f73 (2020-11-18) Next changeset 18:f907216064f6 (2024-07-08) |
Commit message:
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/diffbind commit 3da34ac6e5b18fd5deacaf31b757aca6bae82251 |
modified:
diffbind.R diffbind.xml |
b |
diff -r 163688bb8f73 -r 2605cbdaa7d8 diffbind.R --- a/diffbind.R Wed Nov 18 12:54:07 2020 +0000 +++ b/diffbind.R Fri Dec 15 19:39:14 2023 +0000 |
[ |
b'@@ -1,14 +1,15 @@\n ## Setup R error handling to go to stderr\n-options(show.error.messages = F, error = function() {\n- cat(geterrmessage(), file = stderr()); q("no", 1, F)\n+options(show.error.messages = FALSE, error = function() {\n+ cat(geterrmessage(), file = stderr())\n+ q("no", 1, FALSE)\n })\n # we need that to not crash galaxy with an UTF8 error on German LC settings.\n Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")\n \n suppressPackageStartupMessages({\n- library("getopt")\n- library("DiffBind")\n- library("rjson")\n+ library("getopt")\n+ library("DiffBind")\n+ library("rjson")\n })\n \n options(stringAsfactors = FALSE, useFancyQuotes = FALSE)\n@@ -17,28 +18,28 @@\n #get options, using the spec as defined by the enclosed list.\n #we read the options from the default: commandArgs(TRUE).\n spec <- matrix(c(\n- "infile", "i", 1, "character",\n- "outfile", "o", 1, "character",\n- "scorecol", "n", 1, "integer",\n- "lowerbetter", "l", 1, "logical",\n- "summits", "s", 1, "integer",\n- "th", "t", 1, "double",\n- "format", "f", 1, "character",\n- "plots", "p", 2, "character",\n- "bmatrix", "b", 0, "logical",\n- "rdaOpt", "r", 0, "logical",\n- "infoOpt", "a", 0, "logical",\n- "verbose", "v", 2, "integer",\n- "help", "h", 0, "logical"\n-), byrow = TRUE, ncol = 4);\n+ "infile", "i", 1, "character",\n+ "outfile", "o", 1, "character",\n+ "scorecol", "n", 1, "integer",\n+ "lowerbetter", "l", 1, "logical",\n+ "summits", "s", 1, "integer",\n+ "th", "t", 1, "double",\n+ "format", "f", 1, "character",\n+ "plots", "p", 2, "character",\n+ "bmatrix", "b", 0, "logical",\n+ "rdaOpt", "r", 0, "logical",\n+ "infoOpt", "a", 0, "logical",\n+ "verbose", "v", 2, "integer",\n+ "help", "h", 0, "logical"\n+), byrow = TRUE, ncol = 4)\n \n-opt <- getopt(spec);\n+opt <- getopt(spec)\n \n # if help was asked for print a friendly message\n # and exit with a non-zero error code\n if (!is.null(opt$help)) {\n- cat(getopt(spec, usage = TRUE));\n- q(status = 1);\n+ cat(getopt(spec, usage = TRUE))\n+ q(status = 1)\n }\n \n parser <- newJSONParser()\n@@ -54,28 +55,31 @@\n samples <- sapply(strsplit(peaks, "-"), `[`, 2)\n \n if (length(ctrls) != 0) {\n- sample_table <- data.frame(SampleID = samples,\n- Condition = groups,\n- bamReads = bams,\n- bamControl = ctrls,\n- Peaks = peaks,\n- Tissue = samples) # using "Tissue" column to display ids as labels in PCA plot\n+ sample_table <- data.frame(\n+ SampleID = samples,\n+ Condition = groups,\n+ bamReads = bams,\n+ bamControl = ctrls,\n+ Peaks = peaks,\n+ Tissue = samples\n+ ) # using "Tissue" column to display ids as labels in PCA plot\n } else {\n-\n- sample_table <- data.frame(SampleID = samples,\n- Replicate = samples,\n- Condition = groups,\n- bamReads = bams,\n- Peaks = peaks,\n- Tissue = samples)\n+ sample_table <- data.frame(\n+ SampleID = samples,\n+ Replicate = samples,\n+ Condition = groups,\n+ bamReads = bams,\n+ Peaks = peaks,\n+ Tissue = samples\n+ )\n }\n \n sample <- dba(sampleSheet = sample_table, peakFormat = "bed", scoreCol = opt$scorecol, bLowerScoreBetter = opt$lowerbetter)\n \n if (!is.null(opt$summits)) {\n- sample_count <- dba.count(sample, summits = opt$summits)\n+ sample_count <- dba.count(sample, summits = opt$summits)\n } else {\n- sample_count <- dba.count(sample)\n+ sample_count <- dba.count(sample)\n }\n \n sample_contrast <- dba.contrast(sample_count, categories = DBA_CONDITION, minMembers = 2)\n@@ -84,74 +88,82 @@\n \n # Generate plots\n if (!is.null(opt$plots)) {\n- pdf(opt$plots)\n- orvals <- dba.plotHeatmap(sample_analyze, contrast = 1, correlations = FALSE, cexCol = 0.8, th = opt$th)\n- dba.plotPCA(sample_analyze, contrast = 1, th = opt$th, label = DBA_TISSUE, labelSize = 0.3)\n- dba.plotMA(sample_analyze, th = opt$th)\n- dba.plotVol'..b'(res_sorted)),\n- Score = rep("0", length(res_sorted)),\n- Strand = gsub("\\\\*", ".", strand(res_sorted)))\n+ res_sorted <- data.frame(\n+ Chrom = seqnames(res_sorted),\n+ Start = start(res_sorted) - 1,\n+ End = end(res_sorted),\n+ Name = rep("DiffBind", length(res_sorted)),\n+ Score = rep("0", length(res_sorted)),\n+ Strand = gsub("\\\\*", ".", strand(res_sorted))\n+ )\n } else if (opt$format == "interval") {\n- # Output as interval\n- df <- as.data.frame(res_sorted)\n- extrainfo <- NULL\n- for (i in seq_len(nrow(df))) {\n- extrainfo[i] <- paste0(c(df$width[i], df[i, 6:ncol(df)]), collapse = "|")\n- }\n- res_sorted <- data.frame(Chrom = seqnames(res_sorted),\n- Start = start(res_sorted) - 1,\n- End = end(res_sorted),\n- Name = rep("DiffBind", length(res_sorted)),\n- Score = rep("0", length(res_sorted)),\n- Strand = gsub("\\\\*", ".", strand(res_sorted)),\n- Comment = extrainfo)\n+ # Output as interval\n+ df <- as.data.frame(res_sorted)\n+ extrainfo <- NULL\n+ for (i in seq_len(nrow(df))) {\n+ extrainfo[i] <- paste0(c(df$width[i], df[i, 6:ncol(df)]), collapse = "|")\n+ }\n+ res_sorted <- data.frame(\n+ Chrom = seqnames(res_sorted),\n+ Start = start(res_sorted) - 1,\n+ End = end(res_sorted),\n+ Name = rep("DiffBind", length(res_sorted)),\n+ Score = rep("0", length(res_sorted)),\n+ Strand = gsub("\\\\*", ".", strand(res_sorted)),\n+ Comment = extrainfo\n+ )\n } else {\n- # Output as 0-based tabular\n- res_sorted <- data.frame(Chrom = seqnames(res_sorted),\n- Start = start(res_sorted) - 1,\n- End = end(res_sorted),\n- Name = rep("DiffBind", length(res_sorted)),\n- Score = rep("0", length(res_sorted)),\n- Strand = gsub("\\\\*", ".", strand(res_sorted)),\n- mcols(res_sorted))\n+ # Output as 0-based tabular\n+ res_sorted <- data.frame(\n+ Chrom = seqnames(res_sorted),\n+ Start = start(res_sorted) - 1,\n+ End = end(res_sorted),\n+ Name = rep("DiffBind", length(res_sorted)),\n+ Score = rep("0", length(res_sorted)),\n+ Strand = gsub("\\\\*", ".", strand(res_sorted)),\n+ mcols(res_sorted)\n+ )\n }\n write.table(res_sorted, file = opt$outfile, sep = "\\t", quote = FALSE, row.names = FALSE)\n \n # Output binding affinity scores\n if (!is.null(opt$bmatrix)) {\n- bmat <- dba.peakset(sample_count, bRetrieve = TRUE, DataType = DBA_DATA_FRAME)\n- # Output as 0-based tabular\n- bmat <- data.frame(Chrom = bmat[, 1],\n- Start = bmat[, 2] - 1,\n- End = bmat[, 3],\n- bmat[, 4:ncol(bmat)])\n- write.table(bmat, file = "bmatrix.tab", sep = "\\t", quote = FALSE, row.names = FALSE)\n+ bmat <- dba.peakset(sample_count, bRetrieve = TRUE, DataType = DBA_DATA_FRAME)\n+ # Output as 0-based tabular\n+ bmat <- data.frame(\n+ Chrom = bmat[, 1],\n+ Start = bmat[, 2] - 1,\n+ End = bmat[, 3],\n+ bmat[, 4:ncol(bmat)]\n+ )\n+ write.table(bmat, file = "bmatrix.tab", sep = "\\t", quote = FALSE, row.names = FALSE)\n }\n \n # Output RData file\n if (!is.null(opt$rdaOpt)) {\n- save.image(file = "DiffBind_analysis.RData")\n+ save.image(file = "DiffBind_analysis.RData")\n }\n \n # Output analysis info\n if (!is.null(opt$infoOpt)) {\n- info <- "DiffBind_analysis_info.txt"\n- cat("dba.count Info\\n\\n", file = info, append = TRUE)\n- capture.output(sample, file = info, append = TRUE)\n- cat("\\ndba.analyze Info\\n\\n", file = info, append = TRUE)\n- capture.output(sample_analyze, file = info, append = TRUE)\n- cat("\\nSessionInfo\\n\\n", file = info, append = TRUE)\n- capture.output(sessionInfo(), file = info, append = TRUE)\n+ info <- "DiffBind_analysis_info.txt"\n+ cat("dba.count Info\\n\\n", file = info, append = TRUE)\n+ capture.output(sample, file = info, append = TRUE)\n+ cat("\\ndba.analyze Info\\n\\n", file = info, append = TRUE)\n+ capture.output(sample_analyze, file = info, append = TRUE)\n+ cat("\\nSessionInfo\\n\\n", file = info, append = TRUE)\n+ capture.output(sessionInfo(), file = info, append = TRUE)\n }\n' |
b |
diff -r 163688bb8f73 -r 2605cbdaa7d8 diffbind.xml --- a/diffbind.xml Wed Nov 18 12:54:07 2020 +0000 +++ b/diffbind.xml Fri Dec 15 19:39:14 2023 +0000 |
[ |
@@ -1,7 +1,16 @@ -<tool id="diffbind" name="DiffBind" version="2.10.0+galaxy0"> +<tool id="diffbind" name="DiffBind" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@"> <description> differential binding analysis of ChIP-Seq peak data</description> + <macros> + <token name="@TOOL_VERSION@">2.10.0</token> + <token name="@VERSION_SUFFIX@">1</token> + <token name="@PROFILE@">22.05</token> + </macros> + <xrefs> + <xref type="bio.tools">diffbind</xref> + <xref type="bioconductor">diffbind</xref> + </xrefs> <requirements> - <requirement type="package" version="2.10.0">bioconductor-diffbind</requirement> + <requirement type="package" version="@TOOL_VERSION@">bioconductor-diffbind</requirement> <requirement type="package" version="3.5.1">r-base</requirement> <requirement type="package" version="1.20.3">r-getopt</requirement> <requirement type="package" version="0.2.20">r-rjson</requirement> @@ -33,14 +42,14 @@ #for $g in $rep_group: - #set $peak_files = list() - #set $bam_files = list() - #set $bam_controls = list() + #set $peak_files = dict() + #set $bam_files = dict() + #set $bam_controls = dict() #for $file in $g.peaks: #set $file_name = str($g.groupName) + "-" + re.sub('[^\w\-]', '_', str($file.element_identifier)) + "-peaks.bed" ln -s '${file}' '${file_name}' && - $peak_files.append($file_name) + #set $peak_files[str($file.element_identifier)] = str($file_name) #end for #for $bam in $g.bamreads: @@ -49,11 +58,14 @@ #set $bam_index = $bam_name + "-bamreads.bai" ln -s '${bam}' '${bam_file}' && ln -s '${bam.metadata.bam_index}' '${bam_index}' && - $bam_files.append($bam_file) + #set $bam_files[str($bam.element_identifier)] = str($bam_file) #end for - $temp_factor.append( {str($g.groupName): $peak_files} ) - $temp_factor.append( {str($g.groupName): $bam_files} ) + #if len($peak_files.keys()) != len($bam_files.keys()) + >&2 echo "Group $g.groupName: same number of Peak and Bam files needs to be given" && exit 1 && + #end if + $temp_factor.append( {str($g.groupName): [f[1] for f in sorted($peak_files.items())]} ) + $temp_factor.append( {str($g.groupName): [f[1] for f in sorted($bam_files.items())]} ) #if str( $g.bamcontrol ) != 'None': #for $ctrl in $g.bamcontrol: @@ -64,9 +76,12 @@ ln -s '${ctrl}' '${ctrl_file}' && ln -s '${ctrl.metadata.bam_index}' '${ctrl_index}' && #end if - $bam_controls.append($ctrl_file) + #set $bam_controls[str($ctrl.element_identifier)] = str($ctrl_file) #end for - $temp_factor.append( {str($g.groupName): $bam_controls} ) + #if len($peak_files.keys()) != len($bam_files.keys()) + >&2 echo "Group $g.groupName: same number of Peak and Bam control files needs to be given" && exit 1 && + #end if + $temp_factor.append( {str($g.groupName): [f[1] for f in sorted($bam_controls.items())]} ) #end if #end for @@ -305,6 +320,11 @@ be associated with each peakset (one for the ChIP data, and optionally another representing a control sample) +Inputs for a group will be sorted by identifier before processing. For each group the corresponding +sets of peak and BAM files need to be provided. Ideally this is accomplished by providing the data in +collections. + + **Groups** You have to specify the name of the Group and the peak and BAM files for the two Groups you want to compare (e.g Resistant and Responsive) in the tool form above. |