Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Add a new function to use tag distribution to determine peak summits

-- similar to SPP.
  • Loading branch information...
commit 829cff27ae070148a6d59860776e4b77f626d551 1 parent d541fac
@taoliu authored
View
8 ChangeLog
@@ -1,4 +1,4 @@
-2012-04-29 Benjamin Schiller <benjamin.schiller@ucsf.edu>, Tao Liu <taoliu@jimmy.harvard.edu>
+2012-09-13 Benjamin Schiller <benjamin.schiller@ucsf.edu>, Tao Liu <taoliu@jimmy.harvard.edu>
MACS version 2.0.10 (tag:alpha not released)
* Introduced BAMPEParser *
@@ -10,6 +10,12 @@
* Added --no-trackline *
By default, files have descriptive tracklines now
+ * new refinepeak command (experimental)
+ This new function will use a similar method in SPP (wtd), to
+ analyze raw tag distribution in peak region, then redefine the
+ peak summit where plus and minus tags are evenly distributed
+ around.
+
* Changes to output *
cPeakDetect.pyx has full support for new print/write methods and
--call-peaks, BAMPEParser, and use of paired-end data
View
2  MACS2/Constants.py
@@ -1,4 +1,4 @@
-MACS_VERSION = "2.0.10.20120703 (tag:beta)"
+MACS_VERSION = "2.0.10.20120913 (tag:beta)"
#MACSDIFF_VERSION = "1.0.4 20110212 (tag:alpha)"
FILTERDUP_VERSION = "1.0.0 20120703"
RANDSAMPLE_VERSION = "1.0.0 20120703"
View
3,473 MACS2/IO/cFixWidthTrack.c
2,656 additions, 817 deletions not shown
View
95 MACS2/IO/cFixWidthTrack.pyx
@@ -1,5 +1,5 @@
# cython: profile=True
-# Time-stamp: <2012-08-01 18:08:12 Tao Liu>
+# Time-stamp: <2012-09-14 06:11:57 Tao Liu>
"""Module for FWTrack classes.
@@ -514,3 +514,96 @@ cdef class FWTrackIII:
fhd.write("%s\t%d\t%d\t.\t.\t%s\n" % (k,p-self.fw,p,"-") )
return
+ cpdef tuple extract_region_tags ( self, str chromosome, int32_t startpos, int32_t endpos ):
+ cdef:
+ int32_t i, pos
+ np.ndarray rt_plus, rt_minus
+ list temp
+
+ if not self.__sorted: self.sort()
+
+ chrnames = self.get_chr_names()
+ assert chromosome in chrnames, "chromosome %s can't be found in the FWTrackIII object." % chromosome
+
+ (plus, minus) = self.__locations[chromosome]
+
+ temp = []
+ for i in range(plus.shape[0]):
+ pos = plus[i]
+ if pos < startpos:
+ continue
+ elif pos > endpos:
+ break
+ else:
+ temp.append(pos)
+ rt_plus = np.array(temp)
+
+ temp = []
+ for i in range(minus.shape[0]):
+ pos = minus[i]
+ if pos < startpos:
+ continue
+ elif pos > endpos:
+ break
+ else:
+ temp.append(pos)
+ rt_minus = np.array(temp)
+ return (rt_plus, rt_minus)
+
+ cpdef extract_region_tags_from_peaks ( self, peaks, func ):
+ """Extract tags in peak, then apply func on extracted tags.
+
+ """
+
+ cdef:
+ int32_t m, i, j, pre_i, pre_j, pos, startpos, endpos
+ np.ndarray plus, minus, rt_plus, rt_minus
+ str chrom
+ list temp, retval
+
+ pchrnames = sorted(peaks.peaks.keys())
+ retval = []
+ if not self.__sorted: self.sort()
+
+ chrnames = self.get_chr_names()
+ #assert chromosome in chrnames, "chromosome %s can't be found in the FWTrackIII object." % chromosome
+
+ for chrom in pchrnames:
+ assert chrom in chrnames, "chromosome %s can't be found in the FWTrackIII object." % chrom
+ (plus, minus) = self.__locations[chrom]
+ cpeaks = peaks.peaks[chrom]
+ prev_i = 0
+ prev_j = 0
+ for m in range(len(cpeaks)):
+ startpos = cpeaks[m]["start"]
+ endpos = cpeaks[m]["end"]
+
+ temp = []
+ for i in range(prev_i,plus.shape[0]):
+ pos = plus[i]
+ if pos < startpos:
+ continue
+ elif pos > endpos:
+ prev_i = i
+ break
+ else:
+ temp.append(pos)
+ rt_plus = np.array(temp)
+
+ temp = []
+ for j in range(prev_j,minus.shape[0]):
+ pos = minus[j]
+ if pos < startpos:
+ continue
+ elif pos > endpos:
+ prev_j = j
+ break
+ else:
+ temp.append(pos)
+ rt_minus = np.array(temp)
+
+ retval.append( func(chrom, rt_plus, rt_minus, startpos, endpos) )
+
+ return retval
+
+
View
7,063 MACS2/IO/cPeakIO.c
3,940 additions, 3,123 deletions not shown
View
16 MACS2/IO/cPeakIO.pyx
@@ -1,5 +1,5 @@
# cython: profile=True
-# Time-stamp: <2012-08-10 00:42:37 Tao Liu>
+# Time-stamp: <2012-09-14 05:07:33 Tao Liu>
"""Module for PeakIO IO classes.
@@ -78,6 +78,20 @@ class PeakIO:
"fc":fold_change,
"qscore":qscore})
+ def get_data_from_chrom (self, str chrom):
+ return self.peaks[chrom]
+
+ def get_chr_names (self):
+ return self.peaks.keys()
+
+ def sort ( self ):
+ # sort by position
+ chrs = sorted(self.peaks.keys())
+ for chrom in chrs:
+ self.peaks[chrom].sort(key=lambda x:x["start"])
+ return
+
+
def filter_pscore (self, double pscore_cut ):
cdef str chrom
View
12,118 MACS2/IO/cScoreTrack.c
7,258 additions, 4,860 deletions not shown
View
5 MACS2/IO/cScoreTrack.pyx
@@ -1,5 +1,5 @@
# cython: profile=True
-# Time-stamp: <2012-08-10 04:22:32 Tao Liu>
+# Time-stamp: <2012-09-13 16:22:41 Tao Liu>
"""Module for Feature IO classes.
@@ -931,7 +931,8 @@ cdef class scoreTrackII:
for i in range( 1, l ):
v = value[ i ]
p = pos[ i-1 ]
- if ('%.5f' % pre_v) != ('%.5f' % v):
+ #if ('%.5f' % pre_v) != ('%.5f' % v):
+ if abs(pre_v - v) > 1e-5: # precision is 5 digits
write( "%s\t%d\t%d\t%.5f\n" % ( chrom, pre, p, pre_v ) )
pre_v = v
pre = p
View
51 MACS2/OptValidator.py
@@ -1,4 +1,4 @@
-# Time-stamp: <2012-06-05 22:38:35 Tao Liu>
+# Time-stamp: <2012-09-14 02:32:11 Tao Liu>
"""Module Description
@@ -464,3 +464,52 @@ def opt_validate_randsample ( options ):
options.info = logging.info
return options
+
+def opt_validate_refinepeak ( options ):
+ """Validate options from a OptParser object.
+
+ Ret: Validated options object.
+ """
+ # format
+
+ options.gzip_flag = False # if the input is gzip file
+
+ options.format = options.format.upper()
+ if options.format == "ELAND":
+ options.parser = ELANDResultParser
+ elif options.format == "BED":
+ options.parser = BEDParser
+ elif options.format == "ELANDMULTI":
+ options.parser = ELANDMultiParser
+ elif options.format == "ELANDEXPORT":
+ options.parser = ELANDExportParser
+ elif options.format == "SAM":
+ options.parser = SAMParser
+ elif options.format == "BAM":
+ options.parser = BAMParser
+ options.gzip_flag = True
+ elif options.format == "BOWTIE":
+ options.parser = BowtieParser
+ elif options.format == "AUTO":
+ options.parser = guess_parser
+ else:
+ logging.error("Format \"%s\" cannot be recognized!" % (options.format))
+ sys.exit(1)
+
+ # uppercase the format string
+ options.format = options.format.upper()
+
+ # logging object
+ logging.basicConfig(level=(4-options.verbose)*10,
+ format='%(levelname)-5s @ %(asctime)s: %(message)s ',
+ datefmt='%a, %d %b %Y %H:%M:%S',
+ stream=sys.stderr,
+ filemode="w"
+ )
+
+ options.error = logging.critical # function alias
+ options.warn = logging.warning
+ options.debug = logging.debug
+ options.info = logging.info
+
+ return options
View
195 MACS2/refinepeak.py
@@ -0,0 +1,195 @@
+# Time-stamp: <2012-09-14 06:03:57 Tao Liu>
+
+"""Description: Filter duplicate reads depending on sequencing depth.
+
+Copyright (c) 2011 Tao Liu <taoliu@jimmy.harvard.edu>
+
+This code is free software; you can redistribute it and/or modify it
+under the terms of the Artistic License (see the file COPYING included
+with the distribution).
+
+@status: release candidate
+@version: $Id$
+@author: Yong Zhang, Tao Liu
+@contact: taoliu@jimmy.harvard.edu
+"""
+
+# ------------------------------------
+# python modules
+# ------------------------------------
+
+import os
+import sys
+import logging
+from collections import Counter
+
+# ------------------------------------
+# own python modules
+# ------------------------------------
+from MACS2.OptValidator import opt_validate_refinepeak as opt_validate
+from MACS2.cProb import binomial_cdf_inv
+from MACS2.IO.cBedGraphIO import bedGraphIO,genericBedIO
+from MACS2.IO.cPeakIO import PeakIO
+from MACS2.Constants import *
+
+
+# ------------------------------------
+# Main function
+# ------------------------------------
+def run( o_options ):
+ """The Main function/pipeline for duplication filter.
+
+ """
+ # Parse options...
+ options = opt_validate( o_options )
+ # end of parsing commandline options
+ info = options.info
+ warn = options.warn
+ debug = options.debug
+ error = options.error
+
+
+ outputfile = open(options.oprefix+"_refinepeak.bed", "w")
+
+
+ #if options.outputfile != "stdout":
+ # assert not os.path.exists(options.outputfile), "%s already exists, please check!" % options.outputfile
+ # outfhd = open(options.outputfile,"w")
+ #else:
+ # outfhd = sys.stdout
+
+ peakio = file(options.bedfile)
+ peaks = PeakIO()
+ for l in peakio:
+ fs = l.rstrip().split()
+ peaks.add( fs[0], int(fs[1]), int(fs[2]) )
+
+ peaks.sort()
+
+ #for l in peakio:
+ #l = peakio.readline()
+ #fs = l.rstrip().split()
+ #print fs
+
+ #1 Read tag files
+ info("read tag files...")
+ fwtrack = load_tag_files_options (options)
+
+ #info("tag size = %d" % options.tsize)
+ #fwtrack.fw = options.tsize
+
+ retval = fwtrack.extract_region_tags_from_peaks( peaks, find_summit1 )
+ outputfile.write( "".join(retval) )
+ info("Done!")
+ info("Check output file: %s" % options.oprefix+"_refinepeak.bed")
+
+ #for l in peakio:
+ # fs = l.rstrip().split()
+ #
+ # (p,m) = fwtrack.extract_region_tags( fs[0], int(fs[1])-options.windowsize, int(fs[2])+options.windowsize )
+ # print p.shape[0],m.shape[0]
+
+
+def find_summit1(chrom, plus, minus, peak_start, peak_end, window_size=100):
+
+ left_sum = lambda strand, pos, width = window_size: sum([strand[x] for x in strand if x <= pos and x >= pos - width])
+ right_sum = lambda strand, pos, width = window_size: sum([strand[x] for x in strand if x >= pos and x <= pos + width])
+ left_forward = lambda strand, pos: strand.get(pos,0) - strand.get(pos-window_size, 0)
+ right_forward = lambda strand, pos: strand.get(pos + window_size, 0) - strand.get(pos, 0)
+
+ watson, crick = (Counter(plus), Counter(minus))
+ watson_left = left_sum(watson, peak_start)
+ crick_left = left_sum(crick, peak_start)
+ watson_right = right_sum(watson, peak_start)
+ crick_right = right_sum(crick, peak_start)
+
+ wtd_list = []
+ for j in range(peak_start, peak_end+1):
+ wtd_list.append(2 * (watson_left * crick_right)**0.5 - watson_right - crick_left)
+ watson_left += left_forward(watson, j)
+ watson_right += right_forward(watson, j)
+ crick_left += left_forward(crick, j)
+ crick_right += right_forward(crick,j)
+
+ wtd_max_val = max(wtd_list)
+ wtd_max_pos = wtd_list.index(wtd_max_val) + peak_start
+
+ #return (chrom, wtd_max_pos, wtd_max_pos+1, wtd_max_val)
+
+ return "{}\t{}\t{}\tRefinePeak_summit\t{:.2f}\n".format(chrom,
+ wtd_max_pos,
+ wtd_max_pos+1,
+ wtd_max_val,)
+
+
+
+def find_summit(bed_file, sam_file, window_size, output_file):
+ def count_by_strand(ialign):
+ pred = lambda x:x.is_reverse
+ watson_5_end = lambda x:x.pos
+ crick_5_end = lambda x:x.aend
+ ialign1, ialign2 = tee(ialign)
+
+ return (Counter(map(watson_5_end,
+ ifilterfalse(pred, ialign1))),
+ Counter(map(crick_5_end,
+ ifilter(pred, ialign2))))
+
+ left_sum = lambda strand, pos, width = window_size: sum([strand[x] for x in strand if x <= pos and x >= pos - width])
+ right_sum = lambda strand, pos, width = window_size: sum([strand[x] for x in strand if x >= pos and x <= pos + width])
+ left_forward = lambda strand, pos: strand.get(pos,0) - strand.get(pos-window_size, 0)
+ right_forward = lambda strand, pos: strand.get(pos + window_size, 0) - strand.get(pos, 0)
+ samfile = pysam.Samfile(sam_file, "rb" )
+
+ cnt = 0
+ with open(bed_file) as bfile, open(output_file,"w") as ofile:
+ for i in bfile:
+ i = i.split("\t")
+ chrom = i[0]
+ peak_start = int(i[1])
+ peak_end = int(i[2])
+
+ watson, crick = count_by_strand(samfile.fetch(chrom, peak_start-window_size, peak_end+window_size))
+ watson_left = left_sum(watson, peak_start)
+ crick_left = left_sum(crick, peak_start)
+ watson_right = right_sum(watson, peak_start)
+ crick_right = right_sum(crick, peak_start)
+
+ wtd_list = []
+ for j in range(peak_start, peak_end+1):
+ wtd_list.append(2 * sqrt(watson_left * crick_right) - watson_right - crick_left)
+ watson_left += left_forward(watson, j)
+ watson_right += right_forward(watson, j)
+ crick_left += left_forward(crick, j)
+ crick_right += right_forward(crick,j)
+
+ wtd_max_val = max(wtd_list)
+ wtd_max_pos = wtd_list.index(wtd_max_val) + peak_start
+ cnt += 1
+
+ ofile.write("{}\t{}\t{}\tSPP_summit_{}\t{:.2f}\n".format(chrom,
+ wtd_max_pos,
+ wtd_max_pos+1,
+ cnt,
+ wtd_max_val,))
+ samfile.close()
+
+
+
+
+def load_tag_files_options ( options ):
+ """From the options, load alignment tags.
+
+ """
+ options.info("read alignment tags...")
+ tp = options.parser(options.ifile)
+
+ ttsize = tp.tsize()
+ options.tsize = ttsize
+
+ treat = tp.build_fwtrack()
+ treat.sort()
+
+ options.info("tag size is determined as %d bps" % options.tsize)
+ return treat
+
View
7 README
@@ -1,7 +1,7 @@
=====================
README for MACS (2.1)
=====================
-Time-stamp: <2012-07-03 16:52:45 Tao Liu>
+Time-stamp: <2012-08-02 19:34:52 Tao Liu>
Introduction
============
@@ -23,7 +23,7 @@ Install
Please check the file 'INSTALL' in the distribution.
-Usage of macs2
+Usage of MACS2
==============
Usage::
@@ -37,7 +37,8 @@ or example for broad peak calling: ``macs2 -t ChIP.bam -c Control.bam --broad -g
There are seven major functions available in MACS serving as sub-commands.
-
+Call peaks
+~~~~~~~~~~
** Parameters:
*** -t/--treatment FILENAME
View
47 bin/macs2
@@ -1,5 +1,5 @@
#!/usr/bin/env python
-# Time-stamp: <2012-08-10 03:25:30 Tao Liu>
+# Time-stamp: <2012-09-14 06:12:27 Tao Liu>
"""Description: MACS v2 main executable.
@@ -40,26 +40,37 @@ def main():
args = argparser.parse_args()
subcommand = args.subcommand_name
if subcommand == "callpeak":
+ # General call peak
from MACS2.callpeak import run
run( args )
elif subcommand == "bdgpeakcall":
+ # call peak from bedGraph
from MACS2.bdgpeakcall import run
run( args )
elif subcommand == "bdgbroadcall":
+ # call broad peak from bedGraph
from MACS2.bdgbroadcall import run
run( args )
elif subcommand == "bdgcmp":
+ # compare treatment and control to make enrichment scores
from MACS2.bdgcmp import run
run( args )
elif subcommand == "randsample":
+ # randomly sample sequencing reads, and save as bed file
from MACS2.randsample import run
run( args )
elif subcommand == "filterdup":
+ # filter out duplicate reads, and save as bed file
from MACS2.filterdup import run
run( args )
elif subcommand == "bdgdiff":
+ # differential calling
from MACS2.bdgdiff import run
run( args )
+ elif subcommand == "refinepeak":
+ # refine peak summits
+ from MACS2.refinepeak import run
+ run( args )
def prepare_argparser ():
"""Prepare optparser object. New options will be added in this
@@ -93,7 +104,10 @@ def prepare_argparser ():
add_filterdup_parser( subparsers )
# command for 'bdgdiff'
- add_bdgdiff_parser( subparsers )
+ add_bdgdiff_parser( subparsers )
+
+ # command for 'refinepeak'
+ add_refinepeak_parser( subparsers )
return argparser
@@ -112,7 +126,7 @@ def add_callpeak_parser( subparsers ):
choices = ("AUTO", "BAM", "SAM", "BED", "ELAND",
"ELANDMULTI", "ELANDEXPORT", "BOWTIE",
"BAMPE"),
- help = "Format of tag file, \"AUTO\", \"BED\" or \"ELAND\" or \"ELANDMULTI\" or \"ELANDEXPORT\" or \"SAM\" or \"BAM\" or \"BOWTIE\" or \"BAMPE\". The default AUTO option will let MACS decide which format the file is. Please check the definition in 00README file if you choose ELAND/ELANDMULTI/ELANDEXPORT/SAM/BAM/BOWTIE. DEFAULT: \"AUTO\"",
+ help = "Format of tag file, \"AUTO\", \"BED\" or \"ELAND\" or \"ELANDMULTI\" or \"ELANDEXPORT\" or \"SAM\" or \"BAM\" or \"BOWTIE\" or \"BAMPE\". The default AUTO option will let MACS decide which format the file is. Please check the definition in README file if you choose ELAND/ELANDMULTI/ELANDEXPORT/SAM/BAM/BOWTIE. DEFAULT: \"AUTO\"",
default = "AUTO" )
group_input.add_argument( "-g", "--gsize", dest = "gsize", type = str, default = "hs",
help = "Effective genome size. It can be 1.0e+9 or 1000000000, or shortcuts:'hs' for human (2.7e9), 'mm' for mouse (1.87e9), 'ce' for C. elegans (9e7) and 'dm' for fruitfly (1.2e8), Default:hs" )
@@ -195,7 +209,7 @@ def add_filterdup_parser( subparsers ):
default = "stdout" )
argparser_filterdup.add_argument( "-f", "--format", dest = "format", type = str,
choices=("AUTO","BAM","SAM","BED","ELAND","ELANDMULTI","ELANDEXPORT","BOWTIE"),
- help = "Format of tag file, \"AUTO\", \"BED\" or \"ELAND\" or \"ELANDMULTI\" or \"ELANDEXPORT\" or \"SAM\" or \"BAM\" or \"BOWTIE\". The default AUTO option will let '%(prog)s' decide which format the file is. Please check the definition in 00README file if you choose ELAND/ELANDMULTI/ELANDEXPORT/SAM/BAM/BOWTIE. DEFAULT: \"AUTO\"",
+ help = "Format of tag file, \"AUTO\", \"BED\" or \"ELAND\" or \"ELANDMULTI\" or \"ELANDEXPORT\" or \"SAM\" or \"BAM\" or \"BOWTIE\". The default AUTO option will let '%(prog)s' decide which format the file is. Please check the definition in README file if you choose ELAND/ELANDMULTI/ELANDEXPORT/SAM/BAM/BOWTIE. DEFAULT: \"AUTO\"",
default = "AUTO" )
argparser_filterdup.add_argument( "-g", "--gsize", dest = "gsize", type = str, default = "hs",
help = "Effective genome size. It can be 1.0e+9 or 1000000000, or shortcuts:'hs' for human (2.7e9), 'mm' for mouse (1.87e9), 'ce' for C. elegans (9e7) and 'dm' for fruitfly (1.2e8), DEFAULT:hs" )
@@ -291,7 +305,7 @@ def add_randsample_parser( subparsers ):
help = "Tag size. This will overide the auto detected tag size. DEFAULT: Not set")
argparser_randsample.add_argument( "-f", "--format", dest = "format", type = str,
choices=("AUTO","BAM","SAM","BED","ELAND","ELANDMULTI","ELANDEXPORT","BOWTIE"),
- help = "Format of tag file, \"AUTO\", \"BED\" or \"ELAND\" or \"ELANDMULTI\" or \"ELANDEXPORT\" or \"SAM\" or \"BAM\" or \"BOWTIE\". The default AUTO option will %(prog)s decide which format the file is. Please check the definition in 00README file if you choose ELAND/ELANDMULTI/ELANDEXPORT/SAM/BAM/BOWTIE. DEFAULT: \"AUTO\"",
+ help = "Format of tag file, \"AUTO\", \"BED\" or \"ELAND\" or \"ELANDMULTI\" or \"ELANDEXPORT\" or \"SAM\" or \"BAM\" or \"BOWTIE\". The default AUTO option will %(prog)s decide which format the file is. Please check the definition in README file if you choose ELAND/ELANDMULTI/ELANDEXPORT/SAM/BAM/BOWTIE. DEFAULT: \"AUTO\"",
default = "AUTO" )
argparser_randsample.add_argument( "--verbose", dest = "verbose", type = int, default = 2,
help = "Set verbose level. 0: only show critical message, 1: show additional warning message, 2: show process information, 3: show debug messages. If you want to know where are the duplicate reads, use 3. DEFAULT:2" )
@@ -320,6 +334,29 @@ def add_bdgdiff_parser( subparsers ):
help = "Sequence depth of condition 2 in million reads. Default: 1 (if you use 'macs2 callpeak --SPMR' to generate bdg files." )
return
+def add_refinepeak_parser( subparsers ):
+ argparser_refinepeak = subparsers.add_parser( "refinepeak",
+ help = "(Experimental) Take raw reads alignment, refine peak summits and give scores measuring balance of forward-backward tags. Inspired by SPP." )
+ argparser_refinepeak.add_argument( "-b", dest = "bedfile", type = str, required = True,
+ help = "Candidate peak file in BED format. REQUIRED." )
+ argparser_refinepeak.add_argument( "-i", dest = "ifile", type = str, required = True,
+ help = "Sequencing alignment file of treatment/ChIP. REQUIRED." )
+ argparser_refinepeak.add_argument( "-f", "--format", dest = "format", type = str,
+ choices=("AUTO","BAM","SAM","BED","ELAND","ELANDMULTI","ELANDEXPORT","BOWTIE"),
+ help = "Format of tag file, \"AUTO\", \"BED\" or \"ELAND\" or \"ELANDMULTI\" or \"ELANDEXPORT\" or \"SAM\" or \"BAM\" or \"BOWTIE\". The default AUTO option will let '%(prog)s' decide which format the file is. Please check the definition in README file if you choose ELAND/ELANDMULTI/ELANDEXPORT/SAM/BAM/BOWTIE. DEFAULT: \"AUTO\"",
+ default = "AUTO" )
+ argparser_refinepeak.add_argument( "-c", "--cutoff" , dest = "cutoff", type = float,
+ help = "Cutoff DEFAULT: 5", default = 5 )
+ argparser_refinepeak.add_argument( "-w", "--window-size", dest= "windowsize", help = 'Scan window size on both side of the summit (default: 200bp)',
+ type = int, default = 200)
+ argparser_refinepeak.add_argument( "-o", "--o-prefix", dest = "oprefix", default = "peak", type = str,
+ help = "Prefix for output file, DEFAULT: peak" )
+ argparser_refinepeak.add_argument( "--verbose", dest = "verbose", type = int, default = 2,
+ help = "Set verbose level. 0: only show critical message, 1: show additional warning message, 2: show process information, 3: show debug messages. If you want to know where are the duplicate reads, use 3. DEFAULT:2" )
+
+ return
+
+
if __name__ == '__main__':
try:
main()
View
8 setup.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python
-# Time-stamp: <2012-08-01 18:28:05 Tao Liu>
+# Time-stamp: <2012-09-14 06:15:35 Tao Liu>
"""Description
@@ -56,14 +56,14 @@ def main():
]
setup(name="MACS2",
- version="2.0.10.09122012",
+ version="2.0.10.09132012",
description="Model Based Analysis for ChIP-Seq data",
author='Tao Liu',
author_email='vladimir.liu@gmail.com',
url='http://github.com/taoliu/MACS/',
package_dir={'MACS2' : 'MACS2'},
- packages=['MACS2', 'MACS2.IO', 'MACS2.data'],
- package_data={'MACS2': ['data/*.dat']},
+ packages=['MACS2', 'MACS2.IO'],#, 'MACS2.data'],
+ #package_data={'MACS2': ['data/*.dat']},
scripts=['bin/macs2',
],
classifiers=[
View
4 setup_w_cython.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python
-# Time-stamp: <2012-08-01 18:28:13 Tao Liu>
+# Time-stamp: <2012-09-14 06:15:41 Tao Liu>
"""Description:
@@ -82,7 +82,7 @@ def main():
]
setup(name="MACS",
- version="2.0.10.09122012",
+ version="2.0.10.09132012",
description="Model Based Analysis for ChIP-Seq data",
author='Tao Liu',
author_email='vladimir.liu@gmail.com',
Please sign in to comment.
Something went wrong with that request. Please try again.