comparison data_manager/data_manager_fetch_motifs.py @ 0:ba049ce65693 draft

Initial upload
author jeremyjliu
date Sun, 11 Jan 2015 19:21:52 -0500
parents
children 2ed33f9b9a47
comparison
equal deleted inserted replaced
-1:000000000000 0:ba049ce65693
1 #!/usr/bin/env python
2 #Dan Blankenberg
3
4 import sys
5 import os
6 import tempfile
7 import shutil
8 import optparse
9 import urllib2
10 #import uuid
11 from ftplib import FTP
12 import tarfile
13 import zipfile
14 import gzip
15 import bz2
16
17 from galaxy.util.json import from_json_string, to_json_string
18
19 CHUNK_SIZE = 2**20 #1mb
20
21 def download_motif_databases( data_manager_dict, params, target_directory, motif_db ):
22 TEST_DOWNLOAD_URL = 'http://gehlenborg.com/wp-content/uploads/motif/pouya_test_motifs.bed.bgz'
23 #TO DO: Add tbi file
24
25 url = TEST_DOWNLOAD_URL
26 fasta_reader = urllib2.urlopen( url )
27
28 data_table_entry = _stream_fasta_to_file( fasta_reader, target_directory, params )
29 _add_data_table_entry( data_manager_dict, data_table_entry )
30
31 def _add_data_table_entry( data_manager_dict, data_table_entry ):
32 data_manager_dict['data_tables'] = data_manager_dict.get( 'data_tables', {} )
33 data_manager_dict['data_tables']['all_fasta'] = data_manager_dict['data_tables'].get( 'all_fasta', [] )
34 data_manager_dict['data_tables']['all_fasta'].append( data_table_entry )
35 return data_manager_dict
36
37 def _stream_fasta_to_file( fasta_stream, target_directory, params, close_stream=True ):
38 fasta_base_filename = "pouya_test_motifs.bed.bgz"
39 fasta_filename = os.path.join( target_directory, fasta_base_filename )
40 fasta_writer = open( fasta_filename, 'wb+' )
41
42 while True:
43 buffer = fasta_stream.read(CHUNK_SIZE)
44 if not buffer:
45 break
46
47 fasta_writer.write(buffer)
48
49 fasta_stream.close()
50 fasta_writer.close()
51
52 return dict( value="test", name="Test Pouya Subset (hg19)", path=fasta_base_filename )
53
54 def main():
55 #Parse Command Line
56 parser = optparse.OptionParser()
57 parser.add_option( '-m', '--motif_db', dest='motif_db', action='store', type="string", default=None, help='motif_db' )
58 (options, args) = parser.parse_args()
59
60 filename = args[0]
61
62 params = from_json_string( open( filename ).read() )
63 target_directory = params[ 'output_data' ][0]['extra_files_path']
64 os.mkdir( target_directory )
65 data_manager_dict = {}
66
67 #Fetch the Motif Database
68 download_motif_databases( data_manager_dict, params, target_directory, motif_db )
69
70 #save info to json file
71 open( filename, 'wb' ).write( to_json_string( data_manager_dict ) )
72
73 if __name__ == "__main__": main()