comparison chipseeker.R @ 1:95f779f4adb7 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/chipseeker commit 3419a5a5e19a93369c8c20a39babe5636a309292
author rnateam
date Tue, 29 May 2018 15:08:04 -0400
parents
children 535321abf9a4
comparison
equal deleted inserted replaced
0:58ef4507ce5a 1:95f779f4adb7
1 options( show.error.messages=F, error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
2
3 # we need that to not crash galaxy with an UTF8 error on German LC settings.
4 loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
5
6 suppressPackageStartupMessages({
7 library(ChIPseeker)
8 library(GenomicFeatures)
9 library(optparse)
10 })
11
12 option_list <- list(
13 make_option(c("-i","--infile"), type="character", help="Peaks file to be annotated"),
14 make_option(c("-G","--gtf"), type="character", help="GTF to create TxDb."),
15 make_option(c("-u","--upstream"), type="integer", help="TSS upstream region"),
16 make_option(c("-d","--downstream"), type="integer", help="TSS downstream region"),
17 make_option(c("-F","--flankgeneinfo"), type="logical", help="Add flanking gene info"),
18 make_option(c("-D","--flankgenedist"), type="integer", help="Flanking gene distance"),
19 make_option(c("-f","--format"), type="character", help="Output format (interval or tabular)."),
20 make_option(c("-p","--plots"), type="character", help="PDF of plots.")
21 )
22
23 parser <- OptionParser(usage = "%prog [options] file", option_list=option_list)
24 args = parse_args(parser)
25
26 peaks = args$infile
27 gtf = args$gtf
28 up = args$upstream
29 down = args$downstream
30 format = args$format
31 plots = args$plots
32
33 peaks <- readPeakFile(peaks)
34
35 # Make TxDb from GTF
36 txdb <- makeTxDbFromGFF(gtf, format="gtf")
37 if (!is.null(args$flankgeneinfo)) {
38 peakAnno <- annotatePeak(peaks, TxDb=txdb, tssRegion=c(-up, down), addFlankGeneInfo=args$flankgeneinfo, flankDistance=args$flankgenedist)
39 } else {
40 peakAnno <- annotatePeak(peaks, TxDb=txdb, tssRegion=c(-up, down))
41 }
42
43 # Convert from 1-based to 0-based format
44 res <- as.GRanges(peakAnno)
45 metacols <- mcols(res)
46 if (format == "interval") {
47 metacols <- apply(as.data.frame(metacols), 1, function(col) paste(col, collapse="|"))
48 resout <- data.frame(Chrom=seqnames(res),
49 Start=start(res) - 1,
50 End=end(res),
51 Comment=metacols)
52 } else {
53 resout <- data.frame(Chrom=seqnames(res),
54 Start=start(res) - 1,
55 End=end(res),
56 metacols)
57 }
58
59 write.table(resout, file="out.tab", sep="\t", row.names=FALSE, quote=FALSE)
60
61 if (!is.null(plots)) {
62 pdf("out.pdf", width=14)
63 plotAnnoPie(peakAnno)
64 plotAnnoBar(peakAnno)
65 vennpie(peakAnno)
66 upsetplot(peakAnno)
67 plotDistToTSS(peakAnno, title="Distribution of transcription factor-binding loci\nrelative to TSS")
68 dev.off()
69 }