Mercurial > repos > xuebing > sharplabtool
comparison tools/maf/maf_thread_for_species.py @ 0:9071e359b9a3
Uploaded
author | xuebing |
---|---|
date | Fri, 09 Mar 2012 19:37:19 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:9071e359b9a3 |
---|---|
1 #!/usr/bin/env python | |
2 | |
3 """ | |
4 Read a maf file and write out a new maf with only blocks having all of | |
5 the passed in species, after dropping any other species and removing columns | |
6 containing only gaps. This will attempt to fuse together any blocks | |
7 which are adjacent after the unwanted species have been dropped. | |
8 | |
9 usage: %prog input_maf output_maf species1,species2 | |
10 """ | |
11 #Dan Blankenberg | |
12 import sys | |
13 from galaxy import eggs | |
14 import pkg_resources; pkg_resources.require( "bx-python" ) | |
15 import bx.align.maf | |
16 | |
17 from bx.align.tools.thread import * | |
18 from bx.align.tools.fuse import * | |
19 | |
20 def main(): | |
21 input_file = sys.argv.pop( 1 ) | |
22 output_file = sys.argv.pop( 1 ) | |
23 species = sys.argv.pop( 1 ).split( ',' ) | |
24 | |
25 try: | |
26 maf_reader = bx.align.maf.Reader( open( input_file ) ) | |
27 except: | |
28 print >> sys.stderr, "Unable to open source MAF file" | |
29 sys.exit() | |
30 try: | |
31 maf_writer = FusingAlignmentWriter( bx.align.maf.Writer( open( output_file, 'w' ) ) ) | |
32 except: | |
33 print >> sys.stderr, "Unable to open output file" | |
34 sys.exit() | |
35 try: | |
36 for m in maf_reader: | |
37 new_components = m.components | |
38 if species != ['None']: | |
39 new_components = get_components_for_species( m, species ) | |
40 if new_components: | |
41 remove_all_gap_columns( new_components ) | |
42 m.components = new_components | |
43 m.score = 0.0 | |
44 maf_writer.write( m ) | |
45 except Exception, e: | |
46 print >> sys.stderr, "Error steping through MAF File: %s" % e | |
47 sys.exit() | |
48 maf_reader.close() | |
49 maf_writer.close() | |
50 | |
51 print "Restricted to species: %s." % ", ".join( species ) | |
52 | |
53 if __name__ == "__main__": main() |