annotate tools/filters/gff/extract_GFF_Features.py @ 0:9071e359b9a3

Uploaded
author xuebing
date Fri, 09 Mar 2012 19:37:19 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
1 #!/usr/bin/env python
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
2 #Guruprasad Ananda
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
3 """
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
4 Extract features from GFF file.
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
5
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
6 usage: %prog input1 out_file1 column features
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
7 """
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
8
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
9 import sys, os
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
10
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
11 from galaxy import eggs
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
12 import pkg_resources; pkg_resources.require( "bx-python" )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
13 from bx.cookbook import doc_optparse
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
14
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
15 assert sys.version_info[:2] >= ( 2, 4 )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
16
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
17 def stop_err( msg ):
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
18 sys.stderr.write( msg )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
19 sys.exit()
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
20
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
21 def main():
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
22 # Parsing Command Line here
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
23 options, args = doc_optparse.parse( __doc__ )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
24
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
25 try:
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
26 inp_file, out_file, column, features = args
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
27 except:
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
28 stop_err( "One or more arguments is missing or invalid.\nUsage: prog input output column features" )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
29 try:
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
30 column = int( column )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
31 except:
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
32 stop_err( "Column %s is an invalid column." % column )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
33
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
34 if features == None:
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
35 stop_err( "Column %d has no features to display, select another column." %( column + 1 ) )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
36
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
37 fo=open( out_file, 'w' )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
38 for i, line in enumerate( file( inp_file ) ):
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
39 line = line.rstrip( '\r\n' )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
40 if line and line.startswith( '#' ):
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
41 # Keep valid comment lines in the output
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
42 fo.write( "%s\n" % line )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
43 else:
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
44 try:
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
45 if line.split( '\t' )[column] in features.split( ',' ):
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
46 fo.write( "%s\n" % line )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
47 except:
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
48 pass
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
49 fo.close()
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
50
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
51 print 'Column %d features: %s' %( column + 1, features )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
52
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
53 if __name__ == "__main__":
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
54 main()