annotate run_spp.R @ 0:d4236b60701f draft default tip

planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
author gandres
date Wed, 25 May 2016 11:52:21 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
1 # run_spp.R
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
2 # =============
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
3 # Author: Anshul Kundaje, Computer Science Dept., Stanford University
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
4 # Email: akundaje@stanford.edu
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
5 # Last updated: Oct 8, 2010
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
6 # =============
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
7 # MANDATORY ARGUMENTS
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
8 # -c=<ChIP_tagAlign/BAMFile>, full path and name of tagAlign/BAM file (can be gzipped) (FILE EXTENSION MUST BE tagAlign.gz, tagAlign, bam or bam.gz)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
9 # MANDATORY ARGUMENT FOR PEAK CALLING
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
10 # -i=<Input_tagAlign/BAMFile>, full path and name of tagAlign/BAM file (can be gzipped) (FILE EXTENSION MUST BE tagAlign.gz, tagAlign, bam or bam.gz)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
11 # OPTIONAL ARGUMENTS
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
12 # -s=<min>:<step>:<max> , strand shifts at which cross-correlation is evaluated, default=-100:5:600
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
13 # -speak=<strPeak>, user-defined cross-correlation peak strandshift
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
14 # -x=<min>:<max>, strand shifts to exclude (This is mainly to avoid phantom peaks) default=10:(readlen+10)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
15 # -p=<nodes> , number of parallel processing nodes, default=NULL
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
16 # -fdr=<falseDisoveryRate> , false discovery rate threshold for peak calling
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
17 # -npeak=<numPeaks>, threshold on number of peaks to call
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
18 # -tmpdir=<tempdir> , Temporary directory (if not specified R function tempdir() is used)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
19 # -filtchr=<chrnamePattern> , Pattern to use to remove tags that map to specific chromosomes e.g. _ will remove all tags that map to chromosomes with _ in their name
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
20 # OUTPUT PARAMETERS
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
21 # -odir=<outputDirectory> name of output directory (If not set same as ChIP file directory is used)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
22 # -savn=<narrowpeakfilename> OR -savn NarrowPeak file name
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
23 # -savr=<regionpeakfilename> OR -savr RegionPeak file name
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
24 # -savd=<rdatafile> OR -savd , save Rdata file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
25 # -savp=<plotdatafile> OR -savp , save cross-correlation plot
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
26 # -out=<resultfile>, append peakshift result to a file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
27 # format:Filename<tab>numReads<tab>estFragLen<tab>corr_estFragLen<tab>PhantomPeak<tab>corr_phantomPeak<tab>argmin_corr<tab>min_corr<tab>phantomPeakCoef<tab>relPhantomPeakCoef<tab>QualityTag
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
28 # -rf , if plot or rdata or narrowPeak file exists replace it. If not used then the run is aborted if the plot or Rdata or narrowPeak file exists
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
29 # -clean, if present will remove the original chip and control files after reading them in. CAUTION: Use only if the script calling run_spp.R is creating temporary files
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
30
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
31 args <- commandArgs(trailingOnly=TRUE); # Read Arguments from command line
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
32 nargs = length(args); # number of arguments
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
33
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
34 # ###########################################################################
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
35 # AUXILIARY FUNCTIONS
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
36 # ###########################################################################
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
37
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
38 print.usage <- function() {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
39 # ===================================
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
40 # Function will print function usage
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
41 # ===================================
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
42 cat('Usage: Rscript run_spp.R <options>\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
43 cat('MANDATORY ARGUMENTS\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
44 cat('-c=<ChIP_alignFile>, full path and name (or URL) of tagAlign/BAM file (can be gzipped)(FILE EXTENSION MUST BE tagAlign.gz, tagAlign, bam or bam.gz) \n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
45 cat('MANDATORY ARGUMENTS FOR PEAK CALLING\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
46 cat('-i=<Input_alignFile>, full path and name (or URL) of tagAlign/BAM file (can be gzipped) (FILE EXTENSION MUST BE tagAlign.gz, tagAlign, bam or bam.gz) \n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
47 cat('OPTIONAL ARGUMENTS\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
48 cat('-s=<min>:<step>:<max> , strand shifts at which cross-correlation is evaluated, default=-100:5:600\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
49 cat('-speak=<strPeak>, user-defined cross-correlation peak strandshift\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
50 cat('-x=<min>:<max>, strand shifts to exclude (This is mainly to avoid region around phantom peak) default=10:(readlen+10)\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
51 cat('-p=<nodes> , number of parallel processing nodes, default=0\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
52 cat('-fdr=<falseDisoveryRate> , false discovery rate threshold for peak calling\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
53 cat('-npeak=<numPeaks>, threshold on number of peaks to call\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
54 cat('-tmpdir=<tempdir> , Temporary directory (if not specified R function tempdir() is used)\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
55 cat('-filtchr=<chrnamePattern> , Pattern to use to remove tags that map to specific chromosomes e.g. _ will remove all tags that map to chromosomes with _ in their name\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
56 cat('OUTPUT ARGUMENTS\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
57 cat('-odir=<outputDirectory> name of output directory (If not set same as ChIP file directory is used)\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
58 cat('-savn=<narrowpeakfilename> OR -savn NarrowPeak file name (fixed width peaks)\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
59 cat('-savr=<regionpeakfilename> OR -savr RegionPeak file name (variable width peaks with regions of enrichment)\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
60 cat('-savd=<rdatafile> OR -savd, save Rdata file\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
61 cat('-savp=<plotdatafile> OR -savp, save cross-correlation plot\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
62 cat('-out=<resultfile>, append peakshift/phantomPeak results to a file\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
63 cat(' format:Filename<tab>numReads<tab>estFragLen<tab>corr_estFragLen<tab>PhantomPeak<tab>corr_phantomPeak<tab>argmin_corr<tab>min_corr<tab>phantomPeakCoef<tab>relPhantomPeakCoef<tab>QualityTag)\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
64 cat('-rf, if plot or rdata or narrowPeak file exists replace it. If not used then the run is aborted if the plot or Rdata or narrowPeak file exists\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
65 cat('-clean, if present will remove the original chip and control files after reading them in. CAUTION: Use only if the script calling run_spp.R is creating temporary files\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
66 } # end: print.usage()
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
67
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
68 get.file.parts <- function(file.fullpath) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
69 # ===================================
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
70 # Function will take a file name with path and split the file name into
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
71 # path, fullname, name and ext
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
72 # ===================================
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
73 if (! is.character(file.fullpath)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
74 stop('File name must be a string')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
75 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
76
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
77 file.parts <- strsplit(as.character(file.fullpath), .Platform$file.sep, fixed=TRUE)[[1]] # split on file separator
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
78
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
79 if (length(file.parts) == 0) { # if empty file name
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
80 return(list(path='',
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
81 fullname='',
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
82 name='',
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
83 ext='')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
84 )
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
85 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
86 if (length(file.parts) == 1) { # if no path then just the file name itself
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
87 file.path <- '.'
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
88 file.fullname <- file.parts
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
89 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
90 file.path <- paste(file.parts[1:(length(file.parts)-1)], collapse=.Platform$file.sep) # 1:last-1 token is path
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
91 file.fullname <- file.parts[length(file.parts)] # last token is filename
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
92 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
93 file.fullname.parts <- strsplit(file.fullname,'.',fixed=TRUE)[[1]] # split on .
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
94 if (length(file.fullname.parts) == 1) { # if no extension
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
95 file.ext <- ''
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
96 file.name <- file.fullname.parts
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
97 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
98 file.ext <- paste('.', file.fullname.parts[length(file.fullname.parts)], sep="") # add the . to the last token
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
99 file.name <- paste(file.fullname.parts[1:(length(file.fullname.parts)-1)], collapse=".")
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
100 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
101 return(list(path=file.path,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
102 fullname=file.fullname,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
103 name=file.name,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
104 ext=file.ext))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
105 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
106 } # end: get.file.parts()
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
107
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
108 parse.arguments <- function(args) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
109 # ===================================
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
110 # Function will parse arguments
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
111 # ===================================
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
112 # Set arguments to default values
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
113 chip.file <- NA # main ChIP tagAlign/BAM file name
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
114 isurl.chip.file <- FALSE # flag indicating whether ChIP file is a URL
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
115 control.file <- NA # control tagAlign/BAM file name
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
116 isurl.control.file <- FALSE # flag indicating whether control file is a URL
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
117 sep.min <- -100 # min strand shift
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
118 sep.max <- 600 # max strand shift
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
119 sep.bin <- 5 # increment for strand shift
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
120 sep.peak <- NA # user-defined peak shift
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
121 exclude.min <- 10 # lowerbound of strand shift exclusion region
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
122 exclude.max <- NaN # upperbound of strand shift exclusion region
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
123 n.nodes <- NA # number of parallel processing nodes
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
124 fdr <- 0.01 # false discovery rate threshold for peak calling
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
125 npeak <- NA # threshold on number of peaks to call
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
126 temp.dir <- tempdir() # temporary directory
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
127 chrname.rm.pattern <- NA # chromosome name pattern used to remove tags
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
128 output.odir <- NA # Output directory name
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
129 output.npeak.file <- NA # Output narrowPeak file name
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
130 output.rpeak.file <- NA # Output regionPeak file name
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
131 output.rdata.file <- NA # Rdata file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
132 output.plot.file <- NA # cross correlation plot file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
133 output.result.file <- NA # result file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
134 replace.flag <- FALSE # replace file flag
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
135 clean.files.flag <- FALSE # file deletion flag
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
136
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
137 # Parse arguments
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
138 for (each.arg in args) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
139
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
140 if (grepl('^-c=',each.arg)) { #-c=<chip.file>
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
141
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
142 arg.split <- strsplit(each.arg,'=',fixed=TRUE)[[1]] # split on =
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
143 if (! is.na(arg.split[2]) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
144 chip.file <- arg.split[2] # second part is chip.file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
145 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
146 stop('No tagAlign/BAM file name provided for parameter -c=')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
147 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
148
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
149 } else if (grepl('^-i=',each.arg)) { #-i=<control.file>
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
150
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
151 arg.split <- strsplit(each.arg,'=',fixed=TRUE)[[1]] # split on =
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
152 if (! is.na(arg.split[2]) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
153 control.file <- arg.split[2] # second part is control.file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
154 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
155 stop('No tagAlign/BAM file name provided for parameter -i=')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
156 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
157
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
158 } else if (grepl('^-s=',each.arg)) { #-s=<sep.min>:<sep.bin>:<sep.max>
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
159
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
160 arg.split <- strsplit(each.arg,'=',fixed=TRUE)[[1]] # split on =
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
161 if (! is.na(arg.split[2]) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
162 sep.vals <- arg.split[2] # second part is sepmin:sepbin:sepmax
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
163 sep.vals.split <- strsplit(sep.vals,':',fixed=TRUE)[[1]] # split on :
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
164 if (length(sep.vals.split) != 3) { # must have 3 parts
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
165 stop('Strand shift limits must be specified as -s=sepmin:sepbin:sepmax')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
166 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
167 if (any(is.na(as.numeric(sep.vals.split)))) { # check that sep vals are numeric
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
168 stop('Strand shift limits must be numeric values')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
169 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
170 sep.min <- round(as.numeric(sep.vals.split[1]))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
171 sep.bin <- round(as.numeric(sep.vals.split[2]))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
172 sep.max <- round(as.numeric(sep.vals.split[3]))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
173 if ((sep.min > sep.max) || (sep.bin > (sep.max - sep.min)) || (sep.bin < 0)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
174 stop('Illegal separation values -s=sepmin:sepbin:sepmax')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
175 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
176 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
177 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
178 stop('Strand shift limits must be specified as -s=sepmin:sepbin:sepmax')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
179 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
180
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
181 } else if (grepl('^-speak=',each.arg)) { #-speak=<sep.peak> , user-defined cross-correlation peak strandshift
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
182
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
183 arg.split <- strsplit(each.arg,'=',fixed=TRUE)[[1]] # split on =
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
184 if (! is.na(arg.split[2]) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
185 sep.peak <- arg.split[2] # second part is <sep.peak>
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
186 if (is.na(as.numeric(sep.peak))) { # check that sep.peak is numeric
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
187 stop('-speak=<sep.peak>: User defined peak shift must be numeric')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
188 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
189 sep.peak <- as.numeric(sep.peak)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
190 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
191 stop('User defined peak shift must be provided as -speak=<sep.peak>')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
192 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
193
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
194 } else if (grepl('^-x=',each.arg)) { #-x=<exclude.min>:<exclude.max>
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
195
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
196 arg.split <- strsplit(each.arg,'=',fixed=TRUE)[[1]] # split on =
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
197 if (! is.na(arg.split[2]) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
198 exclude.vals <- arg.split[2] # second part is excludemin:excludemax
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
199 exclude.vals.split <- strsplit(exclude.vals,':',fixed=TRUE)[[1]] # split on :
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
200 if (length(exclude.vals.split) != 2) { # must have 2 parts
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
201 stop('Exclusion limits must be specified as -x=excludemin:excludemax')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
202 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
203 if (any(is.na(as.numeric(exclude.vals.split)))) { # check that exclude vals are numeric
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
204 stop('Exclusion limits must be numeric values')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
205 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
206 exclude.min <- round(as.numeric(exclude.vals.split[1]))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
207 exclude.max <- round(as.numeric(exclude.vals.split[2]))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
208 if (exclude.min > exclude.max) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
209 stop('Illegal exclusion limits -x=excludemin:excludemax')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
210 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
211 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
212 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
213 stop('Exclusion limits must be specified as -x=excludemin:excludemax')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
214 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
215
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
216 } else if (grepl('^-p=',each.arg)) { #-p=<n.nodes> , number of parallel processing nodes, default=NULL
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
217
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
218 arg.split <- strsplit(each.arg,'=',fixed=TRUE)[[1]] # split on =
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
219 if (! is.na(arg.split[2]) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
220 n.nodes <- arg.split[2] # second part is numnodes
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
221 if (is.na(as.numeric(n.nodes))) { # check that n.nodes is numeric
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
222 stop('-p=<numnodes>: numnodes must be numeric')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
223 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
224 n.nodes <- round(as.numeric(n.nodes))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
225 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
226 stop('Number of parallel nodes must be provided as -p=<numnodes>')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
227 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
228
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
229 } else if (grepl('^-fdr=',each.arg)) { #-fdr=<fdr> , false discovery rate, default=0.01
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
230
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
231 arg.split <- strsplit(each.arg,'=',fixed=TRUE)[[1]] # split on =
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
232 if (! is.na(arg.split[2]) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
233 fdr <- arg.split[2] # second part is fdr
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
234 if (is.na(as.numeric(fdr))) { # check that fdr is numeric
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
235 stop('-fdr=<falseDiscoveryRate>: false discovery rate must be numeric')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
236 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
237 fdr <- as.numeric(fdr)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
238 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
239 stop('False discovery rate must be provided as -fdr=<fdr>')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
240 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
241
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
242 } else if (grepl('^-npeak=',each.arg)) { #-npeak=<numPeaks> , number of peaks threshold, default=NA
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
243
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
244 arg.split <- strsplit(each.arg,'=',fixed=TRUE)[[1]] # split on =
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
245 if (! is.na(arg.split[2]) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
246 npeak <- arg.split[2] # second part is npeak
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
247 if (is.na(as.numeric(npeak))) { # check that npeak is numeric
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
248 stop('-npeak=<numPeaks>: threshold on number of peaks must be numeric')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
249 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
250 npeak <- round(as.numeric(npeak))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
251 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
252 stop('Threshold on number of peaks must be provided as -npeak=<numPeaks>')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
253 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
254
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
255 } else if (grepl('^-tmpdir=',each.arg)) { #-tmpdir=<temp.dir>
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
256
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
257 arg.split <- strsplit(each.arg,'=',fixed=TRUE)[[1]] # split on =
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
258 if (! is.na(arg.split[2]) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
259 temp.dir <- arg.split[2] # second part is temp.dir
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
260 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
261 stop('No temporary directory provided for parameter -tmpdir=')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
262 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
263
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
264 } else if (grepl('^-filtchr=',each.arg)) { #-filtchr=<chrname.rm.pattern>
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
265
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
266 arg.split <- strsplit(each.arg,'=',fixed=TRUE)[[1]] # split on =
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
267 if (! is.na(arg.split[2]) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
268 chrname.rm.pattern <- arg.split[2] # second part is chrname.rm.pattern
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
269 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
270 stop('No pattern provided for parameter -filtchr=')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
271 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
272
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
273 } else if (grepl('^-odir=',each.arg)) { #-odir=<output.odir>
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
274
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
275 arg.split <- strsplit(each.arg,'=',fixed=TRUE)[[1]] # split on =
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
276 if (! is.na(arg.split[2]) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
277 output.odir <- arg.split[2] # second part is output.odir
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
278 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
279 stop('No output directory provided for parameter -odir=')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
280 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
281
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
282 } else if (grepl('^-savn',each.arg)) { # -savn=<output.npeak.file> OR -savn , save narrowpeak
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
283
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
284 arg.split <- strsplit(each.arg,'=',fixed=TRUE)[[1]] # split on =
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
285 if (! is.na(arg.split[2])) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
286 output.npeak.file <- arg.split[2] #-savn=
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
287 } else if (each.arg=='-savn') {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
288 output.npeak.file <- NULL # NULL indicates get the name from the main file name
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
289 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
290 stop('Argument for saving narrowPeak file must be -savn or -savn=<filename>')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
291 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
292
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
293 } else if (grepl('^-savr',each.arg)) { # -savr=<output.rpeak.file> OR -savr , save regionpeak
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
294
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
295 arg.split <- strsplit(each.arg,'=',fixed=TRUE)[[1]] # split on =
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
296 if (! is.na(arg.split[2])) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
297 output.rpeak.file <- arg.split[2] #-savr=
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
298 } else if (each.arg=='-savr') {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
299 output.rpeak.file <- NULL # NULL indicates get the name from the main file name
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
300 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
301 stop('Argument for saving regionPeak file must be -savr or -savr=<filename>')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
302 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
303
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
304 } else if (grepl('^-savd',each.arg)) { # -savd=<output.rdata.file> OR -savd , save Rdata file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
305
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
306 arg.split <- strsplit(each.arg,'=',fixed=TRUE)[[1]] # split on =
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
307 if (! is.na(arg.split[2])) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
308 output.rdata.file <- arg.split[2] #-savd=
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
309 } else if (each.arg=='-savd') {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
310 output.rdata.file <- NULL # NULL indicates get the name from the main file name
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
311 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
312 stop('Argument for saving Rdata file must be -savd or -savd=<filename>')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
313 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
314
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
315 } else if (grepl('^-savp',each.arg)) { # -savp=<output.plot.file> OR -savp , save cross-correlation plot
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
316
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
317 arg.split <- strsplit(each.arg,'=',fixed=TRUE)[[1]] # split on =
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
318 if (! is.na(arg.split[2])) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
319 output.plot.file <- arg.split[2] #-savp=
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
320 } else if (each.arg=='-savp') {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
321 output.plot.file <- NULL # NULL indicates get the name from the main file name
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
322 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
323 stop('Argument for saving Rdata file must be -savp or -savp=<filename>')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
324 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
325
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
326 } else if (grepl('^-out=',each.arg)) { #-out=<output.result.file>
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
327
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
328 arg.split <- strsplit(each.arg,'=',fixed=TRUE)[[1]] # split on =
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
329 if (! is.na(arg.split[2]) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
330 output.result.file <- arg.split[2] # second part is output.result.file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
331 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
332 stop('No result file provided for parameter -out=')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
333 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
334
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
335 } else if (each.arg == '-rf') {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
336
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
337 replace.flag <- TRUE
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
338
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
339 } else if (each.arg == '-clean') {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
340
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
341 clean.files.flag <- TRUE
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
342
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
343 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
344
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
345 stop('Illegal argument ',each.arg)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
346 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
347 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
348 # End: for loop
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
349
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
350 # Check mandatory arguments
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
351 if (is.na(chip.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
352 stop('-c=<tagAlign/BAMFileName> is a mandatory argument')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
353 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
354
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
355 if (is.na(control.file) && ! is.na(output.npeak.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
356 stop('-i=<tagAlign/BAMFileName> is required for peak calling')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
357 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
358
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
359 # Check if ChIP and control files are URLs
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
360 if (grepl('^http://',chip.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
361 isurl.chip.file <- TRUE
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
362 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
363 if (grepl('^http://',control.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
364 isurl.control.file <- TRUE
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
365 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
366
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
367 # If ChIP file is a URL output.odir MUST be specified
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
368 if (isurl.chip.file && is.na(output.odir)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
369 stop('If ChIP file is a URL, then output directory MUST be specified')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
370 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
371
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
372 # Check that ChIP and control files exist
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
373 if (isurl.chip.file) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
374 if (system(paste('wget -q --spider',chip.file)) != 0) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
375 stop('ChIP file URL not valid: ',chip.file)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
376 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
377 } else if (!file.exists(chip.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
378 stop('ChIP File:',chip.file,' does not exist')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
379 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
380
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
381 if (!is.na(control.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
382 if (isurl.control.file) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
383 if (system(paste('wget -q --spider',control.file)) != 0) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
384 stop('Control file URL not valid: ',control.file)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
385 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
386 } else if (!file.exists(control.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
387 stop('Control File:',control.file,' does not exist')
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
388 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
389 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
390
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
391 # Correct other arguments
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
392 if (is.na(output.odir)) { # Reconstruct output.odir if not provided
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
393 output.odir <- get.file.parts(chip.file)$path
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
394 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
395
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
396 if (is.null(output.npeak.file)) { # Reconstruct output.npeak.file if NULL
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
397 output.npeak.file <- file.path(output.odir, paste(get.file.parts(chip.file)$name, '_VS_', get.file.parts(control.file)$name,'.narrowPeak', sep=""))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
398 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
399
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
400 if (is.null(output.rpeak.file)) { # Reconstruct output.rpeak.file if NULL
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
401 output.rpeak.file <- file.path(output.odir, paste(get.file.parts(chip.file)$name, '_VS_', get.file.parts(control.file)$name,'.regionPeak', sep=""))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
402 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
403
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
404 if (is.null(output.rdata.file)) { # Reconstruct output.rdata.file if NULL
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
405 output.rdata.file <- file.path(output.odir, paste(get.file.parts(chip.file)$name, '.Rdata', sep=""))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
406 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
407
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
408 if (is.null(output.plot.file)) { # Reconstruct output.plot.file if NULL
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
409 output.plot.file <- file.path(output.odir, paste(get.file.parts(chip.file)$name, '.pdf', sep=""))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
410 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
411
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
412 return(list(chip.file=chip.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
413 isurl.chip.file=isurl.chip.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
414 control.file=control.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
415 isurl.control.file=isurl.control.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
416 sep.range=c(sep.min,sep.bin,sep.max),
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
417 sep.peak=sep.peak,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
418 ex.range=c(exclude.min,exclude.max),
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
419 n.nodes=n.nodes,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
420 fdr=fdr,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
421 npeak=npeak,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
422 temp.dir=temp.dir,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
423 chrname.rm.pattern=chrname.rm.pattern,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
424 output.odir=output.odir,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
425 output.npeak.file=output.npeak.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
426 output.rpeak.file=output.rpeak.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
427 output.rdata.file=output.rdata.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
428 output.plot.file=output.plot.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
429 output.result.file=output.result.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
430 replace.flag=replace.flag,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
431 clean.files.flag=clean.files.flag))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
432 } # end: parse.arguments()
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
433
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
434 read.align <- function(align.filename) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
435 # ===================================
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
436 # Function will read a tagAlign or BAM file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
437 # ===================================
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
438 if (grepl('(\\.bam)?.*(\\.tagAlign)',align.filename)) { # if tagalign file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
439 chip.data <- read.tagalign.tags(align.filename)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
440 # get readlength info
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
441 tmpDataRows <- read.table(align.filename,nrows=500)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
442 chip.data$read.length <- round(median(tmpDataRows$V3 - tmpDataRows$V2))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
443 } else if (grepl('(\\.tagAlign)?.*(\\.bam)',align.filename)) { # if bam file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
444 # create BAM file name
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
445 bam2align.filename <- sub('\\.bam','.tagAlign',align.filename)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
446 # generate command to convert bam to tagalign
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
447 command <- vector(length=2)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
448 command[1] <- sprintf("samtools view -F 0x0204 -o - %s",align.filename)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
449 command[2] <- paste("awk 'BEGIN{FS=" , '"\t"' , ";OFS=", '"\t"} {if (and($2,16) > 0) {print $3,($4-1),($4-1+length($10)),"N","1000","-"} else {print $3,($4-1),($4-1+length($10)),"N","1000","+"}}', "' 1> ", bam2align.filename, sep="")
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
450 # command[2] <- paste("awk 'BEGIN{OFS=", '"\t"} {if (and($2,16) > 0) {print $3,($4-1),($4-1+length($10)),"N","1000","-"} else {print $3,($4-1),($4-1+length($10)),"N","1000","+"}}', "' 1> ", bam2align.filename, sep="")
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
451 command <- paste(command,collapse=" | ")
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
452 # Run command
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
453 status <- system(command,intern=FALSE,ignore.stderr=FALSE)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
454 if ((status != 0) || !file.exists(bam2align.filename)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
455 cat(sprintf("Error converting BAM to tagalign file: %s\n",align.filename),file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
456 q(save="no",status=1)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
457 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
458 # read converted BAM file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
459 chip.data <- read.tagalign.tags(bam2align.filename)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
460 # get readlength info
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
461 tmpDataRows <- read.table(bam2align.filename,nrows=500)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
462 chip.data$read.length <- round(median(tmpDataRows$V3 - tmpDataRows$V2))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
463 # delete temporary tagalign file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
464 file.remove(bam2align.filename)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
465 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
466 cat(sprintf("Error:Unknown file format for file:%s\n",align.fname),file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
467 q(save="no",status=1)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
468 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
469 return(chip.data)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
470 } # end: read.align()
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
471
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
472 print.run.params <- function(params){
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
473 # ===================================
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
474 # Output run parameters
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
475 # ===================================
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
476 cat('################\n',file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
477 cat(iparams$chip.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
478 iparams$control.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
479 iparams$sep.range,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
480 iparams$sep.peak,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
481 iparams$ex.range,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
482 iparams$n.nodes,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
483 iparams$fdr,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
484 iparams$npeak,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
485 iparams$output.odir,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
486 iparams$output.npeak.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
487 iparams$output.rpeak.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
488 iparams$output.rdata.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
489 iparams$output.plot.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
490 iparams$output.result.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
491 iparams$replace.flag,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
492 labels=c('ChIP data:','Control data:', 'strandshift(min):','strandshift(step):','strandshift(max)','user-defined peak shift',
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
493 'exclusion(min):','exclusion(max):','num parallel nodes:','FDR threshold:','NumPeaks Threshold:','Output Directory:',
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
494 'narrowPeak output file name:', 'regionPeak output file name:', 'Rdata filename:',
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
495 'plot pdf filename:','result filename:','Overwrite files?:'),
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
496 fill=18,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
497 file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
498 cat('\n',file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
499 } # end: print.run.parameters()
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
500
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
501 check.replace.flag <- function(params){
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
502 # ===================================
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
503 # Check if files exist
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
504 # ===================================
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
505 # If replace.flag is NOT set, check if output files exist and abort if necessary
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
506 if (! iparams$replace.flag) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
507 if (! is.na(iparams$output.npeak.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
508 if (file.exists(iparams$output.npeak.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
509 cat('narrowPeak file already exists. Aborting Run. Use -rf if you want to overwrite\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
510 q(save="no",status=1)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
511 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
512 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
513 if (! is.na(iparams$output.rpeak.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
514 if (file.exists(iparams$output.rpeak.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
515 cat('regionPeak file already exists. Aborting Run. Use -rf if you want to overwrite\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
516 q(save="no",status=1)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
517 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
518 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
519 if (! is.na(iparams$output.plot.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
520 if (file.exists(iparams$output.plot.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
521 cat('Plot file already exists. Aborting Run. Use -rf if you want to overwrite\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
522 q(save="no",status=1)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
523 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
524 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
525 if (! is.na(iparams$output.rdata.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
526 if (file.exists(iparams$output.rdata.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
527 cat('Rdata file already exists. Aborting Run. Use -rf if you want to overwrite\n',file=stderr())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
528 q(save="no",status=1)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
529 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
530 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
531 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
532 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
533
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
534 # #############################################################################
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
535 # MAIN FUNCTION
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
536 # #############################################################################
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
537
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
538 # Check number of arguments
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
539 minargs = 1;
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
540 maxargs = 17;
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
541 if (nargs < minargs | nargs > maxargs) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
542 print.usage()
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
543 q(save="no",status=1)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
544 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
545
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
546 # Parse arguments
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
547 # iparams$chip.file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
548 # iparams$isurl.chip.file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
549 # iparams$control.file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
550 # iparams$isurl.control.file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
551 # iparams$sep.range
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
552 # iparams$sep.peak
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
553 # iparams$ex.range
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
554 # iparams$n.nodes
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
555 # iparams$fdr
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
556 # iparams$npeak
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
557 # iparams$temp.dir
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
558 # iparams$output.odir
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
559 # iparams$output.npeak.file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
560 # iparams$output.rpeak.file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
561 # iparams$output.rdata.file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
562 # iparams$output.plot.file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
563 # iparams$output.result.file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
564 # iparams$replace.flag
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
565 # iparams$clean.files.flag
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
566 iparams <- parse.arguments(args)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
567
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
568 # Print run parameters
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
569 print.run.params(iparams)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
570
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
571 # Check if output files exist
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
572 check.replace.flag(iparams)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
573
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
574 # curr.chip.file and curr.control.file always point to the original ChIP and control files on disk
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
575 # ta.chip.filename & ta.control.filename always point to the final but temporary versions of the ChIP and control files that will be passed to read.align
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
576
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
577 # Download ChIP and control files if necessary to temp.dir
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
578 if (iparams$isurl.chip.file) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
579 curr.chip.file <- file.path(iparams$temp.dir, get.file.parts(iparams$chip.file)$fullname) # file is downloaded to temp.dir. Has same name as URL suffix
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
580 cat('Downloading ChIP file:',iparams$chip.file,"\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
581 if (system(paste('wget -N -q -P',iparams$temp.dir,iparams$chip.file)) != 0) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
582 stop('Error downloading ChIP file:',iparams$chip.file)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
583 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
584 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
585 curr.chip.file <- iparams$chip.file # file is in original directory
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
586 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
587
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
588 if (iparams$isurl.control.file) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
589 curr.control.file <- file.path(iparams$temp.dir, get.file.parts(iparams$control.file)$fullname) # file is downloaded to temp.dir. Has same name as URL suffix
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
590 cat('Downloading control file:',iparams$control.file,"\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
591 if (system(paste('wget -N -q -P',iparams$temp.dir,iparams$control.file)) != 0) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
592 stop('Error downloading Control file:',iparams$control.file)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
593 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
594 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
595 curr.control.file <- iparams$control.file # file is in original directory
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
596 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
597
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
598 # unzip ChIP and input files if required AND copy to temp directory
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
599 if (get.file.parts(curr.chip.file)$ext == '.gz') {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
600 ta.chip.filename <- tempfile(get.file.parts(curr.chip.file)$name, tmpdir=iparams$temp.dir) # unzip file to temp.dir/[filename with .gz removed][randsuffix]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
601 cat('Decompressing ChIP file\n',file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
602 if (system(paste("gunzip -c",curr.chip.file,">",ta.chip.filename)) != 0) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
603 stop('Unable to decompress file:', iparams$chip.file)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
604 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
605 if (iparams$clean.files.flag) { # Remove original file if clean.files.flag is set
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
606 file.remove(curr.chip.file)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
607 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
608 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
609 ta.chip.filename <- tempfile(get.file.parts(curr.chip.file)$fullname, tmpdir=iparams$temp.dir)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
610 if (iparams$clean.files.flag) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
611 file.rename(curr.chip.file,ta.chip.filename) # move file to temp.dir/[filename][randsuffix]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
612 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
613 file.copy(curr.chip.file,ta.chip.filename) # copy file to temp.dir/[filename][randsuffix]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
614 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
615 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
616
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
617 if (! is.na(iparams$control.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
618 if (get.file.parts(curr.control.file)$ext == '.gz') {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
619 ta.control.filename <- tempfile(get.file.parts(curr.control.file)$name, tmpdir=iparams$temp.dir) # unzip file to temp.dir/[filename with .gz removed][randsuffix]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
620 cat('Decompressing control file\n',file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
621 if (system(paste("gunzip -c",curr.control.file,">",ta.control.filename)) != 0) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
622 stop('Unable to decompress file:', iparams$control.file)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
623 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
624 if (iparams$clean.files.flag) { # Remove original file if clean.files.flag is set
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
625 file.remove(curr.control.file)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
626 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
627 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
628 ta.control.filename <- tempfile(get.file.parts(curr.control.file)$fullname, tmpdir=iparams$temp.dir) # copy file to temp.dir/[filename][randsuffix]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
629
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
630 if (iparams$clean.files.flag) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
631 file.rename(curr.control.file,ta.control.filename) # move file to temp.dir/[filename][randsuffix]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
632 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
633 file.copy(curr.control.file,ta.control.filename) # copy file to temp.dir/[filename][randsuffix]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
634 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
635 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
636 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
637
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
638 # Remove downloaded files
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
639 if (iparams$isurl.chip.file & file.exists(curr.chip.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
640 file.remove(curr.chip.file)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
641 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
642
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
643 if (! is.na(iparams$control.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
644 if (iparams$isurl.control.file & file.exists(curr.control.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
645 file.remove(curr.control.file)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
646 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
647 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
648
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
649 # Load SPP library
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
650 library(spp)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
651
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
652 # Read ChIP tagAlign/BAM files
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
653 cat("Reading ChIP tagAlign/BAM file",iparams$chip.file,"\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
654 chip.data <- read.align(ta.chip.filename)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
655 cat("ChIP data read length",chip.data$read.length,"\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
656 file.remove(ta.chip.filename) # Delete temporary file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
657 if (length(chip.data$tags)==0) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
658 stop('Error in ChIP file format:', iparams$chip.file)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
659 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
660 # Remove illegal chromosome names
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
661 if (! is.na(iparams$chrname.rm.pattern)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
662 selectidx <- which(grepl(iparams$chrname.rm.pattern,names(chip.data$tags))==FALSE)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
663 chip.data$tags <- chip.data$tags[selectidx]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
664 chip.data$quality <- chip.data$quality[selectidx]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
665 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
666 chip.data$num.tags <- sum(unlist(lapply(chip.data$tags,function(d) length(d))))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
667
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
668 # Read Control tagAlign/BAM files
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
669 if (! is.na(iparams$control.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
670 cat("Reading Control tagAlign/BAM file",iparams$control.file,"\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
671 control.data <- read.align(ta.control.filename)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
672 file.remove(ta.control.filename) # Delete temporary file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
673 if (length(control.data$tags)==0) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
674 stop('Error in control file format:', iparams$chip.file)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
675 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
676 cat("Control data read length",control.data$read.length,"\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
677 # Remove illegal chromosome names
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
678 if (! is.na(iparams$chrname.rm.pattern)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
679 selectidx <- which(grepl(iparams$chrname.rm.pattern,names(control.data$tags))==FALSE)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
680 control.data$tags <- control.data$tags[selectidx]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
681 control.data$quality <- control.data$quality[selectidx]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
682 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
683 control.data$num.tags <- sum(unlist(lapply(control.data$tags,function(d) length(d))))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
684 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
685
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
686 # Open multiple processes if required
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
687 if (is.na(iparams$n.nodes)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
688 cluster.nodes <- NULL
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
689 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
690 library(snow)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
691 cluster.nodes <- makeCluster(iparams$n.nodes)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
692 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
693
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
694 # #################################
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
695 # Calculate cross-correlation for various strand shifts
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
696 # #################################
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
697 cat("Calculating peak characteristics\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
698 # crosscorr
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
699 # $cross.correlation : Cross-correlation profile as an $x/$y data.frame
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
700 # $peak : Position ($x) and height ($y) of automatically detected cross-correlation peak.
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
701 # $whs: Optimized window half-size for binding detection (based on the width of the cross-correlation peak)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
702 crosscorr <- get.binding.characteristics(chip.data,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
703 srange=iparams$sep.range[c(1,3)],
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
704 bin=iparams$sep.range[2],
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
705 accept.all.tags=T,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
706 cluster=cluster.nodes)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
707 if (!is.na(iparams$n.nodes)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
708 stopCluster(cluster.nodes)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
709 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
710
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
711 # Smooth the cross-correlation curve if required
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
712 cc <- crosscorr$cross.correlation
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
713 crosscorr$min.cc <- crosscorr$cross.correlation[ which.min(crosscorr$cross.correlation$y) , ] # minimum value and shift of cross-correlation
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
714 cat("Minimum cross-correlation value", crosscorr$min.cc$y,"\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
715 cat("Minimum cross-correlation shift", crosscorr$min.cc$x,"\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
716 sbw <- 2*floor(ceiling(5/iparams$sep.range[2]) / 2) + 1 # smoothing bandwidth
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
717 cc$y <- runmean(cc$y,sbw,alg="fast")
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
718
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
719 # Compute cross-correlation peak
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
720 bw <- ceiling(2/iparams$sep.range[2]) # crosscorr[i] is compared to crosscorr[i+/-bw] to find peaks
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
721 peakidx <- (diff(cc$y,bw)>=0) # cc[i] > cc[i-bw]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
722 peakidx <- diff(peakidx,bw)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
723 peakidx <- which(peakidx==-1) + bw
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
724
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
725 # exclude peaks from the excluded region
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
726 if ( is.nan(iparams$ex.range[2]) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
727 iparams$ex.range[2] <- chip.data$read.length+10
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
728 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
729 peakidx <- peakidx[(cc$x[peakidx] < iparams$ex.range[1]) | (cc$x[peakidx] > iparams$ex.range[2])]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
730 cc <- cc[peakidx,]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
731
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
732 # Find max peak position and other peaks within 0.9*max_peakvalue that are further away from maxpeakposition
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
733 maxpeakidx <- which.max(cc$y)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
734 maxpeakshift <- cc$x[maxpeakidx]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
735 maxpeakval <- cc$y[maxpeakidx]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
736 peakidx <-which((cc$y >= 0.9*maxpeakval) & (cc$x >= maxpeakshift))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
737 cc <- cc[peakidx,]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
738
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
739 # sort the peaks and get the top 3
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
740 sortidx <- order(cc$y,decreasing=TRUE)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
741 sortidx <- sortidx[c(1:min(3,length(sortidx)))]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
742 cc.peak <- cc[sortidx,]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
743
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
744 # Override peak shift if user supplies peak shift
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
745 if (! is.na(iparams$sep.peak)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
746 cc.peak <- approx(crosscorr$cross.correlation$x,crosscorr$cross.correlation$y,iparams$sep.peak,rule=2)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
747 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
748 cat("Peak cross-correlation value", paste(cc.peak$y,collapse=","),"\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
749 cat("Peak strand shift",paste(cc.peak$x,collapse=","),"\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
750
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
751 # Reset values in crosscorr
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
752 crosscorr$peak$x <- cc.peak$x[1]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
753 crosscorr$peak$y <- cc.peak$y[1]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
754
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
755 # Compute window half size
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
756 whs.thresh <- crosscorr$min.cc$y + (crosscorr$peak$y - crosscorr$min.cc$y)/3
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
757 crosscorr$whs <- max(crosscorr$cross.correlation$x[crosscorr$cross.correlation$y >= whs.thresh])
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
758 cat("Window half size",crosscorr$whs,"\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
759
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
760 # Compute phantom peak coefficient
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
761 ph.peakidx <- which( ( crosscorr$cross.correlation$x >= ( chip.data$read.length - round(2*iparams$sep.range[2]) ) ) &
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
762 ( crosscorr$cross.correlation$x <= ( chip.data$read.length + round(1.5*iparams$sep.range[2]) ) ) )
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
763 ph.peakidx <- ph.peakidx[ which.max(crosscorr$cross.correlation$y[ph.peakidx]) ]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
764 crosscorr$phantom.cc <- crosscorr$cross.correlation[ph.peakidx,]
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
765 cat("Phantom peak location",crosscorr$phantom.cc$x,"\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
766 cat("Phantom peak Correlation",crosscorr$phantom.cc$y,"\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
767 crosscorr$phantom.coeff <- crosscorr$peak$y / crosscorr$phantom.cc$y
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
768 crosscorr$phantom.coeff <- crosscorr$peak$y / crosscorr$min.cc$y
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
769 cat("Normalized cross-correlation coefficient (NCCC)",crosscorr$phantom.coeff,"\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
770 crosscorr$rel.phantom.coeff <- (crosscorr$peak$y - crosscorr$min.cc$y) / (crosscorr$phantom.cc$y - crosscorr$min.cc$y)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
771 cat("Relative Cross correlation Coefficient (RCCC)",crosscorr$rel.phantom.coeff,"\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
772 crosscorr$phantom.quality.tag <- NA
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
773 if ( (crosscorr$rel.phantom.coeff >= 0) & (crosscorr$rel.phantom.coeff < 0.25) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
774 crosscorr$phantom.quality.tag <- -2
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
775 } else if ( (crosscorr$rel.phantom.coeff >= 0.25) & (crosscorr$rel.phantom.coeff < 0.5) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
776 crosscorr$phantom.quality.tag <- -1
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
777 } else if ( (crosscorr$rel.phantom.coeff >= 0.5) & (crosscorr$rel.phantom.coeff < 1) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
778 crosscorr$phantom.quality.tag <- 0
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
779 } else if ( (crosscorr$rel.phantom.coeff >= 1) & (crosscorr$rel.phantom.coeff < 1.5) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
780 crosscorr$phantom.quality.tag <- 1
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
781 } else if ( (crosscorr$rel.phantom.coeff >= 1.5) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
782 crosscorr$phantom.quality.tag <- 2
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
783 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
784 cat("Phantom Peak Quality Tag",crosscorr$phantom.quality.tag,"\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
785
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
786 # Output result to result file if required
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
787 #Filename\tnumReads\tPeak_shift\tPeak_Correlation\tRead_length\tPhantomPeak_Correlation\tMin_Correlation_Shift\tMin_Correlation\tNormalized_CrossCorrelation_Coefficient\tRelative_CrossCorrelation_Coefficient\tQualityTag)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
788 if (! is.na(iparams$output.result.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
789 cat(get.file.parts(iparams$chip.file)$fullname,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
790 chip.data$num.tags,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
791 paste(cc.peak$x,collapse=","),
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
792 paste(cc.peak$y,collapse=","),
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
793 crosscorr$phantom.cc$x,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
794 crosscorr$phantom.cc$y,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
795 crosscorr$min.cc$x,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
796 crosscorr$min.cc$y,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
797 crosscorr$phantom.coeff,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
798 crosscorr$rel.phantom.coeff,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
799 crosscorr$phantom.quality.tag,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
800 sep="\t",
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
801 file=iparams$output.result.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
802 append=TRUE)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
803 cat("\n",
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
804 file=iparams$output.result.file,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
805 append=TRUE)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
806 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
807
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
808 # Save figure if required
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
809 if (! is.na(iparams$output.plot.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
810 pdf(file=iparams$output.plot.file,width=5,height=5)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
811 par(mar = c(4,3.5,2,0.5), mgp = c(1.5,0.5,0), cex = 0.8);
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
812 plot(crosscorr$cross.correlation,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
813 type='l',
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
814 xlab=sprintf("strand-shift (%s)",paste(cc.peak$x,collapse=",")),
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
815 ylab="cross-correlation")
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
816 abline(v=cc.peak$x,lty=2,col=2)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
817 abline(v=crosscorr$phantom.cc$x,lty=2,col=4)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
818 title(main=get.file.parts(iparams$chip.file)$fullname,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
819 sub=sprintf("NSC=%g,RSC=%g,Qtag=%d",crosscorr$phantom.coeff,crosscorr$rel.phantom.coeff,crosscorr$phantom.quality.tag))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
820 dev.off();
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
821 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
822
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
823 # Save RData file if required
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
824 if (! is.na(iparams$output.rdata.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
825 save(iparams,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
826 crosscorr,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
827 cc.peak,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
828 file=iparams$output.rdata.file);
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
829 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
830
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
831 # #################################
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
832 # Call peaks
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
833 # #################################
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
834
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
835 if ( !is.na(iparams$output.npeak.file) || !is.na(iparams$output.rpeak.file) ) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
836
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
837 # Remove local tag anomalies
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
838 cat('Removing read stacks\n',file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
839 chip.data <- remove.local.tag.anomalies(chip.data$tags)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
840 control.data <- remove.local.tag.anomalies(control.data$tags)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
841
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
842 # Open multiple processes if required
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
843 if (is.na(iparams$n.nodes)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
844 cluster.nodes <- NULL
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
845 } else {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
846 cluster.nodes <- makeCluster(iparams$n.nodes)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
847 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
848
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
849 # Find peaks
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
850 cat('Finding peaks\n',file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
851 if (!is.na(iparams$npeak)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
852 iparams$fdr <- 0.96
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
853 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
854 narrow.peaks <- find.binding.positions(signal.data=chip.data,control.data=control.data,fdr=iparams$fdr,method=tag.lwcc,whs=crosscorr$whs,cluster=cluster.nodes)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
855 if (!is.na(iparams$n.nodes)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
856 stopCluster(cluster.nodes)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
857 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
858 cat(paste("Detected",sum(unlist(lapply(narrow.peaks$npl,function(d) length(d$x)))),"peaks"),"\n",file=stdout())
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
859
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
860 # Write to narrowPeak file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
861 if (!is.na(iparams$output.npeak.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
862 write.narrowpeak.binding(narrow.peaks,iparams$output.npeak.file,margin=round(crosscorr$whs/2),npeaks=iparams$npeak)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
863 #system(paste('gzip -f ',iparams$output.npeak.file))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
864 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
865
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
866 # Compute and write regionPeak file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
867 if (!is.na(iparams$output.rpeak.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
868 region.peaks <- add.broad.peak.regions(chip.data,control.data,narrow.peaks,window.size=max(50,round(crosscorr$whs/4)),z.thr=10)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
869 write.narrowpeak.binding(region.peaks,iparams$output.rpeak.file,margin=round(crosscorr$whs/2),npeaks=iparams$npeak)
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
870 #system(paste('gzip -f ',iparams$output.rpeak.file))
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
871 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
872
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
873 # Save Rdata file
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
874 if (! is.na(iparams$output.rdata.file)) {
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
875 save(iparams,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
876 crosscorr,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
877 cc.peak,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
878 narrow.peaks,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
879 region.peaks,
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
880 file=iparams$output.rdata.file);
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
881 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
882
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
883 }
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
884
d4236b60701f planemo upload for repository https://github.com/eba2016/spp_tool commit 2fb169b136aea9887da7ab9fdccc442443f8efa3-dirty
gandres
parents:
diff changeset
885