comparison data_manager/rnastar_index_builder.py @ 2:8a2d16bfdae2 draft

Uploaded
author fubar
date Fri, 03 Oct 2014 21:59:39 -0400
parents ebadd2c92958
children 102bdfdda10b
comparison
equal deleted inserted replaced
1:ebadd2c92958 2:8a2d16bfdae2
7 import os 7 import os
8 import tempfile 8 import tempfile
9 import optparse 9 import optparse
10 import subprocess 10 import subprocess
11 11
12 from galaxy.util.json import from_json_string, to_json_string 12 from json import loads, dumps
13 13
14 DEFAULT_DATA_TABLE_NAME = "rnastar_indexes" 14 DEFAULT_DATA_TABLE_NAME = "rnastar_indexes"
15 15
16 def get_id_name( params, dbkey, fasta_description=None): 16 def get_id_name( params, dbkey, fasta_description=None):
17 #TODO: ensure sequence_id is unique and does not already appear in location file 17 #TODO: ensure sequence_id is unique and does not already appear in location file
42 if sjdbGTFfile: 42 if sjdbGTFfile:
43 cl += '''--sjdbGTFchrPrefix %(sjdbGTFchrPrefix)s --sjdbGTFfeatureExon %(sjdbGTFfeatureExon)s --sjdbOverhang %(sjdbOverhang)s 43 cl += '''--sjdbGTFchrPrefix %(sjdbGTFchrPrefix)s --sjdbGTFfeatureExon %(sjdbGTFfeatureExon)s --sjdbOverhang %(sjdbOverhang)s
44 --sjdbGTFfile %(sjdbGTFfile)s --sjdbGTFtagExonParentTranscript %(sjdbGTFtagExonParentTranscript)s''' % pdict 44 --sjdbGTFfile %(sjdbGTFfile)s --sjdbGTFtagExonParentTranscript %(sjdbGTFtagExonParentTranscript)s''' % pdict
45 elif sjdbFileChrStartEnd: 45 elif sjdbFileChrStartEnd:
46 cl += '--sjdbFileChrStartEnd %(sjdbFileChrStartEnd)s --sjdbOverhang %(sjdbOverhangs)s' % pdict 46 cl += '--sjdbFileChrStartEnd %(sjdbFileChrStartEnd)s --sjdbOverhang %(sjdbOverhangs)s' % pdict
47 tmp_stderr = tempfile.NamedTemporaryFile( prefix = "tmp-data-manager-rnastar-index-builder-stderr" )
48 args = cl.split(' ') 47 args = cl.split(' ')
49 proc = subprocess.Popen( args=args, shell=False, cwd=target_directory, stderr=tmp_stderr.fileno() ) 48 proc = subprocess.Popen( args=args, shell=False, cwd=target_directory )
50 return_code = proc.wait() 49 return_code = proc.wait()
51 if return_code: 50 if return_code:
52 tmp_stderr.flush() 51 sys.exit( return_code )
53 tmp_stderr.seek(0)
54 print >> sys.stderr, "Error building index: retcode=",retcode
55 while True:
56 chunk = tmp_stderr.read( CHUNK_SIZE )
57 if not chunk:
58 break
59 sys.stderr.write( chunk )
60 tmp_stderr.close()
61 data_table_entry = dict( value=sequence_id, dbkey=dbkey, name=sequence_name, path=fasta_base_name ) 52 data_table_entry = dict( value=sequence_id, dbkey=dbkey, name=sequence_name, path=fasta_base_name )
62 _add_data_table_entry( data_manager_dict, data_table_name, data_table_entry ) 53 _add_data_table_entry( data_manager_dict, data_table_name, data_table_entry )
63 54
64 def _add_data_table_entry( data_manager_dict, data_table_name, data_table_entry ): 55 def _add_data_table_entry( data_manager_dict, data_table_name, data_table_entry ):
65 data_manager_dict['data_tables'] = data_manager_dict.get( 'data_tables', {} ) 56 data_manager_dict['data_tables'] = data_manager_dict.get( 'data_tables', {} )
84 parser.add_option( '--sjdbOverhang', type="int", default=100 ) 75 parser.add_option( '--sjdbOverhang', type="int", default=100 )
85 parser.add_option( '--runThreadN', type="int", default=4 ) 76 parser.add_option( '--runThreadN', type="int", default=4 )
86 (options, args) = parser.parse_args() 77 (options, args) = parser.parse_args()
87 78
88 filename = options.out_file 79 filename = options.out_file
89 params = from_json_string( open( filename ).read() ) 80 params = loads( open( filename ).read() )
90 target_directory = options.out_index_path 81 target_directory = options.out_index_path
91 os.mkdir( target_directory ) 82 os.mkdirs( target_directory )
92 data_manager_dict = {} 83 data_manager_dict = {}
93 84
94 dbkey = options.fasta_dbkey 85 dbkey = options.fasta_dbkey
95 86
96 if dbkey in [ None, '', '?' ]: 87 if dbkey in [ None, '', '?' ]:
105 sjdbGTFfeatureExon=options.sjdbGTFfeatureExon,sjdbGTFchrPrefix=options.sjdbGTFchrPrefix, 96 sjdbGTFfeatureExon=options.sjdbGTFfeatureExon,sjdbGTFchrPrefix=options.sjdbGTFchrPrefix,
106 n_threads=options.runThreadN ) 97 n_threads=options.runThreadN )
107 98
108 99
109 #save info to json file 100 #save info to json file
110 open( filename, 'wb' ).write( to_json_string( data_manager_dict ) ) 101 open( filename, 'wb' ).write( dumps( data_manager_dict ) )
111 102
112 if __name__ == "__main__": main() 103 if __name__ == "__main__": main()