Advertisement
Guest User

Untitled

a guest
Jul 1st, 2010
1,046
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.75 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3. import sys, os
  4. from optparse import OptionParser
  5. from MAT import AffyFileParser
  6. def parse(fname, level, step):
  7.    
  8.     if not os.path.isfile(fname):
  9.         print 'Error: could not open %s' % fname
  10.         sys.exit('Stopping')
  11.  
  12.     oname = fname + '.wig'
  13.    
  14.     fp = open(oname, 'wt')
  15.     fp.write( 'track type=wiggle_0\n' )
  16.  
  17.     # mat file parsing parsing
  18.     from MAT import AffyFileParser
  19.     bar  =  AffyFileParser.CBARFileWriter()
  20.     bar.SetFileName(fname)
  21.     if not bar.Read():
  22.         raise Exception('Unable to properly read %s' % fname )
  23.  
  24.     seq  = AffyFileParser.CGDACSequenceResultItem()
  25.     data = AffyFileParser.BarSequenceResultData()
  26.  
  27.     seq_range = range(bar.GetNumberSequences() - 1)
  28.    
  29.     for s in seq_range:
  30.         bar.GetResults(s, seq)
  31.         name  = seq.GetName()        
  32.         for i in range( 0, seq.GetNumberDataPoints()-1, step ):
  33.             seq.GetData(i, 0, data)
  34.             x = data.iValue
  35.             seq.GetData(i, 1, data)
  36.             y = data.fValue
  37.             if y >= level:                
  38.                 out ='%s\t%s\t%s\t%s\n' % ( name, x-1, x, y )
  39.                 fp.write( out )
  40.  
  41.     print '...saved bar data to: %s' % oname
  42.                    
  43.  
  44. def usage():
  45.     "Prints usage information"
  46.    
  47.     help = """
  48.    
  49.    USAGE:
  50.    
  51.    bar2wig -t threshold -s step input_file
  52.  
  53.    PARAMETERS:
  54.    
  55.        - threshold is the minimal signal strength (default value 0.0)
  56.        - step specifies the increment of the indices when sampling the  
  57.          data and must be an integer >= 1 (default 1)
  58.        
  59.    Unspecified parameters will take the default values.
  60.  
  61.    EXAMPLE:
  62.        
  63.        bar2wig -t 1.5 -s 5 somedata.bar
  64.  
  65.    Will create the somedata.bar.wig file with threshold of 1.5
  66.    while examining every 5th measurement.
  67.  
  68.    SEE ALSO: wig2peak, wigalign
  69.    """
  70.    
  71.     return help
  72.  
  73. if __name__ == '__main__':
  74.     #sys.argv.extend( [ 'bar2text.py', '2' ] )
  75.     try:
  76.         import psyco
  77.         psyco.full()
  78.     except:
  79.         pass
  80.  
  81.     parser = OptionParser()
  82.     parser.set_usage( usage() )
  83.  
  84.     parser.add_option("-t", type="float", dest="level", default=0 )
  85.     parser.add_option("-s", type="int", dest="step", default=1)
  86.     (options, args) = parser.parse_args()
  87.  
  88.     if len(args)!=1:
  89.         parser.print_usage()
  90.         sys.exit(-1)
  91.     else:
  92.         fname = args[-1]
  93.  
  94.     if options.step < 1:
  95.         parser.print_usage()
  96.         print 'Incorrect step option %s. It must be greater or equal to 1' % options.step
  97.         sys.exit()
  98.  
  99.     print '\n...executing bar2wig with threshold=%s, step=%d' % (options.level, options.step)
  100.  
  101.     parse(fname=fname, level=options.level, step=options.step)
  102.  
  103.     print '...done\n'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement