diff --git a/tools/new_operations/flanking_features.py b/tools/new_operations/flanking_features.py index 0c9204cb951..6fecbfeb286 100644 --- a/tools/new_operations/flanking_features.py +++ b/tools/new_operations/flanking_features.py @@ -84,8 +84,6 @@ def proximal_region_finder(readers, region, comments=True): start = int(interval.start) end = int(interval.end) strand = interval.strand - if start > end: - warn( "Interval start after end!" ) if chrom not in rightTree.chroms: continue else: diff --git a/tools/new_operations/get_flanks.py b/tools/new_operations/get_flanks.py index 73d35802b94..90ea6261f61 100644 --- a/tools/new_operations/get_flanks.py +++ b/tools/new_operations/get_flanks.py @@ -40,21 +40,15 @@ def main(): size = int(size) except: stop_err( "Invalid offset or length entered. Try again by entering valid integer values." ) - try: - fi = open(inp_file,'r') - except: - stop_err( "Unable to open input file" ) - try: - fo = open(out_file,'w') - except: - stop_err( "Unable to open output file" ) + + fo = open(out_file,'w') skipped_lines = 0 first_invalid_line = 0 invalid_line = None elems = [] j=0 - for i, line in enumerate( fi ): + for i, line in enumerate( file( inp_file ) ): line = line.strip() if line and (not line.startswith( '#' )) and line != '': j+=1 @@ -83,7 +77,7 @@ def main(): elems[start_col_1] = str(int(elems[end_col_1]) - offset) elems[end_col_1] = str(int(elems[start_col_1]) + size) assert int(elems[start_col_1]) > 0 and int(elems[end_col_1]) > 0 - print >>fo, '\t'.join(elems) + fo.write( "%s\n" % '\t'.join( elems ) ) elif direction == 'Downstream': if strand == '-': @@ -101,7 +95,7 @@ def main(): elems[start_col_1] = str(int(elems[end_col_1]) + offset) elems[end_col_1] = str(int(elems[start_col_1]) + size) assert int(elems[start_col_1]) > 0 and int(elems[end_col_1]) > 0 - print >>fo, '\t'.join(elems) + fo.write( "%s\n" % '\t'.join( elems ) ) elif direction == 'Both': if strand == '-': @@ -112,11 +106,11 @@ def main(): elems[start_col_1]=start elems[end_col_1]=end1 assert int(elems[start_col_1]) > 0 and int(elems[end_col_1]) > 0 - print >>fo, '\t'.join(elems) + fo.write( "%s\n" % '\t'.join( elems ) ) elems[start_col_1]=end2 elems[end_col_1]=start assert int(elems[start_col_1]) > 0 and int(elems[end_col_1]) > 0 - print >>fo, '\t'.join(elems) + fo.write( "%s\n" % '\t'.join( elems ) ) elif region == 'end': start = str(int(elems[start_col_1]) - offset) end1 = str(int(start) + size) @@ -124,11 +118,11 @@ def main(): elems[start_col_1]=start elems[end_col_1]=end1 assert int(elems[start_col_1]) > 0 and int(elems[end_col_1]) > 0 - print >>fo, '\t'.join(elems) + fo.write( "%s\n" % '\t'.join( elems ) ) elems[start_col_1]=end2 elems[end_col_1]=start assert int(elems[start_col_1]) > 0 and int(elems[end_col_1]) > 0 - print >>fo, '\t'.join(elems) + fo.write( "%s\n" % '\t'.join( elems ) ) else: start1 = str(int(elems[end_col_1]) - offset) end1 = str(int(start1) + size) @@ -137,11 +131,11 @@ def main(): elems[start_col_1]=start1 elems[end_col_1]=end1 assert int(elems[start_col_1]) > 0 and int(elems[end_col_1]) > 0 - print >>fo, '\t'.join(elems) + fo.write( "%s\n" % '\t'.join( elems ) ) elems[start_col_1]=end2 elems[end_col_1]=start2 assert int(elems[start_col_1]) > 0 and int(elems[end_col_1]) > 0 - print >>fo, '\t'.join(elems) + fo.write( "%s\n" % '\t'.join( elems ) ) elif strand == '+': if region == 'start': start = str(int(elems[start_col_1]) + offset) @@ -150,11 +144,11 @@ def main(): elems[start_col_1]=end1 elems[end_col_1]=start assert int(elems[start_col_1]) > 0 and int(elems[end_col_1]) > 0 - print >>fo, '\t'.join(elems) + fo.write( "%s\n" % '\t'.join( elems ) ) elems[start_col_1]=start elems[end_col_1]=end2 assert int(elems[start_col_1]) > 0 and int(elems[end_col_1]) > 0 - print >>fo, '\t'.join(elems) + fo.write( "%s\n" % '\t'.join( elems ) ) elif region == 'end': start = str(int(elems[end_col_1]) + offset) end1 = str(int(start) - size) @@ -162,11 +156,11 @@ def main(): elems[start_col_1]=end1 elems[end_col_1]=start assert int(elems[start_col_1]) > 0 and int(elems[end_col_1]) > 0 - print >>fo, '\t'.join(elems) + fo.write( "%s\n" % '\t'.join( elems ) ) elems[start_col_1]=start elems[end_col_1]=end2 assert int(elems[start_col_1]) > 0 and int(elems[end_col_1]) > 0 - print >>fo, '\t'.join(elems) + fo.write( "%s\n" % '\t'.join( elems ) ) else: start1 = str(int(elems[start_col_1]) + offset) end1 = str(int(start1) - size) @@ -175,27 +169,23 @@ def main(): elems[start_col_1]=end1 elems[end_col_1]=start1 assert int(elems[start_col_1]) > 0 and int(elems[end_col_1]) > 0 - print >>fo, '\t'.join(elems) + fo.write( "%s\n" % '\t'.join( elems ) ) elems[start_col_1]=start2 elems[end_col_1]=end2 assert int(elems[start_col_1]) > 0 and int(elems[end_col_1]) > 0 - print >>fo, '\t'.join(elems) - + fo.write( "%s\n" % '\t'.join( elems ) ) except: skipped_lines += 1 if not invalid_line: first_invalid_line = i + 1 invalid_line = line fo.close() - fi.close() - - #If number of skipped lines = num of lines in the file, inform the user to check metadata attributes of the input file. + if skipped_lines == j: - print 'Data issue: Skipped all lines in your input. Check the metadata attributes of the chosen input by clicking on the pencil icon next to it.' - sys.exit() - elif skipped_lines > 0: - print '(Data issue: skipped %d invalid lines starting at line #%d which is "%s")' % ( skipped_lines, first_invalid_line, invalid_line ) - print 'Location : %s, Region : %s, Flank-length : %d, Offset : %d ' %(direction, region, size, offset) + stop_err( "Data issue: click the pencil icon in the history item to correct the metadata attributes." ) + if skipped_lines > 0: + print 'Skipped %d invalid lines starting with #%dL "%s"' % ( skipped_lines, first_invalid_line, invalid_line ) + print 'Location: %s, Region: %s, Flank-length: %d, Offset: %d ' %( direction, region, size, offset ) if __name__ == "__main__": main() diff --git a/tools/regVariation/featureCounter.py b/tools/regVariation/featureCounter.py index 0baa78d63bc..fc7bbb949b5 100644 --- a/tools/regVariation/featureCounter.py +++ b/tools/regVariation/featureCounter.py @@ -48,7 +48,7 @@ def counter(node, start, end): if node.left: counter(node.left, start, end) -def count_coverage(readers): +def count_coverage( readers, comments=True ): primary = readers[0] secondary = readers[1] secondary_copy = readers[2] @@ -71,7 +71,6 @@ def count_coverage(readers): chrom = interval.chrom start = int(interval.start) end = int(interval.end) - if start > end: warn( "Interval start after end!" ) full = 0 partial = 0 if chrom not in bitsets: @@ -129,9 +128,9 @@ def main(): try: for line in count_coverage([g1,g2,g2_copy]): if type( line ) is GenomicInterval: - print >> out_file, "\t".join( line.fields ) + out_file.write( "%s\n" % "\t".join( line.fields ) ) else: - print >> out_file, line + out_file.write( "%s\n" % line ) except ParseError, exc: out_file.close() fail( str( exc ) ) diff --git a/tools/regVariation/quality_filter.py b/tools/regVariation/quality_filter.py index 811a8a722fa..d77a296861d 100644 --- a/tools/regVariation/quality_filter.py +++ b/tools/regVariation/quality_filter.py @@ -93,32 +93,17 @@ def main(): mask_length_r = int(mask_length.split(',')[0]) mask_length_l = int(mask_length.split(',')[1]) except: - print >> sys.stderr, "Data issue: Please check the metadata attributes of the chosen input by clicking on the pencil icon next to it." - sys.exit() - - try: - fi = open(inp_file,'r') - except: - print >> sys.stderr, "Unable to open input file" - sys.exit() - try: - fo = open(out_file,'w') - except: - print >> sys.stderr, "Unable to open output file" - sys.exit() + stop_err( "Data issue, click the pencil icon in the history item to correct the metadata attributes of the input dataset." ) if pri_species == 'None': - print >>sys.stderr, "No primary species selected. Try again by selecting at least one primary species." - sys.exit() - + stop_err( "No primary species selected, try again by selecting at least one primary species." ) if mask_species == 'None': - print >>sys.stderr, "No mask species selected. Try again by selecting at least one species to mask." - sys.exit() - + stop_err( "No mask species selected, try again by selecting at least one species to mask." ) + mask_chr_count = 0 mask_chr_dict = {0:'#', 1:'$', 2:'^', 3:'*', 4:'?'} mask_reg_dict = {0:'Current pos', 1:'Current+Downstream', 2:'Current+Upstream', 3:'Current+Both sides'} - + #ensure dbkey is present in the twobit loc file filepath = None try: @@ -144,13 +129,12 @@ def main(): except: pass except Exception, exc: - print >>sys.stdout, 'quality_filter.py initialization error -> %s' % exc + stop_err( 'Initialization errorL %s' % str( exc ) ) if len(pspecies) == 0: - print >>sys.stderr, "Quality scores are not available for the following genome builds: %s" %(pspecies_all2) - sys.exit() + stop_err( "Quality scores are not available for the following genome builds: %s" % ( pspecies_all2 ) ) if len(pspecies) < len(pspecies_all): - print >>sys.stdout, "Quality scores are not available for the following genome builds: %s" %(pspecies_all2) + print "Quality scores are not available for the following genome builds: %s" %(pspecies_all2) scores_by_chrom = [] #Get scores for all the primary species @@ -160,9 +144,8 @@ def main(): try: maf_reader = bx.align.maf.Reader( open(inp_file, 'r') ) maf_writer = bx.align.maf.Writer( open(out_file,'w') ) - except: - print >>sys.stderr, "Your MAF file appears to be malformed." - sys.exit() + except Exception, e: + stop_err( "Your MAF file appears to be malformed: %s" % str( e ) ) maf_count = 0 for block in maf_reader: diff --git a/tools/regVariation/windowSplitter.py b/tools/regVariation/windowSplitter.py index 2808320e527..c5102aef578 100644 --- a/tools/regVariation/windowSplitter.py +++ b/tools/regVariation/windowSplitter.py @@ -14,6 +14,10 @@ import pkg_resources; pkg_resources.require( "bx-python" ) from bx.cookbook import doc_optparse from galaxy.tools.util.galaxyops import * +def stop_err( msg ): + sys.stderr.write( msg ) + sys.exit() + def main(): # Parsing Command Line here options, args = doc_optparse.parse( __doc__ ) @@ -27,27 +31,17 @@ def main(): if strand_col_1 <= 0: strand = "+" #if strand is not defined, default it to + except: - print >> sys.stderr, "Data issue: Please check the metadata attributes of the chosen input by clicking on the pencil icon next to it." - sys.exit() + stop_err( "Data issue, click the pencil icon in the history item to correct the metadata attributes of the input dataset." ) - try: - fi = open(inp_file,'r') - except: - print >> sys.stderr, "Unable to open input file" - sys.exit() - try: - fo = open(out_file,'w') - except: - print >> sys.stderr, "Unable to open output file" - sys.exit() + fo = open(out_file,'w') skipped_lines = 0 first_invalid_line = 0 invalid_line = None - if offset == 0: makesliding = 0 - for i, line in enumerate( fi ): + + for i, line in enumerate( file( inp_file ) ): line = line.strip() if line and line[0:1] != "#": try: @@ -65,27 +59,27 @@ def main(): elems_1 = elems elems_1[start_col_1] = str(start) elems_1[end_col_1] = str(start + winsize) - print >>fo, '\t'.join(elems_1) + fo.write( "%s\n" % '\t'.join( elems_1 ) ) if makesliding == 0: start = start + winsize else: start = start + offset if start+winsize > end: break - except Exception, exc: - print exc + except: skipped_lines += 1 if not invalid_line: first_invalid_line = i + 1 invalid_line = line + fo.close() + if makesliding == 1: - print 'Window size = %d, Sliding = Yes, Offset = %d' %(winsize, offset) + print 'Window size=%d, Sliding=Yes, Offset=%d' %(winsize, offset) else: - print 'Window size = %d, Sliding = No' %(winsize) - + print 'Window size=%d, Sliding=No' %(winsize) if skipped_lines > 0: - print '(Data issue: skipped %d invalid lines starting at line #%d which is "%s")' % ( skipped_lines, first_invalid_line, invalid_line ) + print 'Skipped %d invalid lines starting with #%d: "%s"' % ( skipped_lines, first_invalid_line, invalid_line ) if __name__ == "__main__": main()