changeset 4:c276a826fc4b draft

planemo upload for repository https://github.com/zipho/data_manager_novocraft_index_builder commit 1e4e16c747ca6ef261d3307f47a09ff1d49756a1
author sanbi-uwc
date Sat, 05 Mar 2016 06:47:55 -0500
parents 38d9721a5251
children b7c01f1d6451
files data_manager/novocraft_index_builder.py data_manager/novocraft_index_builder.xml data_manager_conf.xml tool_data_table_conf.xml.sample
diffstat 4 files changed, 23 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/data_manager/novocraft_index_builder.py	Fri Mar 04 09:24:47 2016 -0500
+++ b/data_manager/novocraft_index_builder.py	Sat Mar 05 06:47:55 2016 -0500
@@ -14,6 +14,8 @@
 
 from json import loads, dumps
 
+DEFAULT_DATA_TABLE_NAME = "novocraft_indexes"
+
 def get_dbkey_id_name(params, dbkey_description=None):
     dbkey = params['param_dict']['dbkey']
     # TODO: ensure sequence_id is unique and does not already appear in location file
@@ -28,8 +30,7 @@
             sequence_name = dbkey
     return dbkey, sequence_id, sequence_name
 
-
-def _make_novocraft_index(fasta_filename, target_directory):
+def _make_novocraft_index(data_manager_dict, fasta_filename, target_directory, dbkey, sequence_id, sequence_name, data_table_name=DEFAULT_DATA_TABLE_NAME):
     if os.path.exists(target_directory) and not os.path.isdir(target_directory):
         print("Output directory path already exists but is not a directory: {}".format(target_directory),
               file=sys.stderr)
@@ -51,22 +52,28 @@
         check_call(cmdline)
     except CalledProcessError:
         print("Error building RNA STAR index", file=sys.stderr)
-    return (target_directory)
+
+    data_table_entry = dict( value=sequence_id, dbkey=dbkey, name=sequence_name, path=target_directory )
+    _add_data_table_entry( data_manager_dict, data_table_name, data_table_entry )
 
+def _add_data_table_entry( data_manager_dict, data_table_name, data_table_entry ):
+    data_manager_dict['data_tables'] = data_manager_dict.get( 'data_tables', {} )
+    data_manager_dict['data_tables'][ data_table_name ] = data_manager_dict['data_tables'].get( data_table_name, [] )
+    data_manager_dict['data_tables'][ data_table_name ].append( data_table_entry )
+    return data_manager_dict
 
-def download_from_url(params, target_directory):
+def download_from_url( data_manager_dict, params, target_directory, dbkey, sequence_id, sequence_name, data_table_name=DEFAULT_DATA_TABLE_NAME ):
     # TODO: we should automatically do decompression here
     urls = filter(bool, map(lambda x: x.strip(), params['param_dict']['reference_source']['user_url'].split('\n')))
     fasta_reader = [urllib2.urlopen(url) for url in urls]
 
-    _make_novocraft_index(fasta_reader, target_directory)
+    _make_novocraft_index(data_manager_dict, fasta_reader, target_directory, dbkey, sequence_id, sequence_name, data_table_name)
 
-
-def download_from_history( params, target_directory):
+def download_from_history( data_manager_dict, params, target_directory, dbkey, sequence_id, sequence_name, data_table_name=DEFAULT_DATA_TABLE_NAME ):
     # TODO: allow multiple FASTA input files
     input_filename = params['param_dict']['reference_source']['input_fasta']
 
-    _make_novocraft_index(input_filename, target_directory)
+    _make_novocraft_index(data_manager_dict, input_filename, target_directory, dbkey, sequence_id, sequence_name, data_table_name)
 
 REFERENCE_SOURCE_TO_DOWNLOAD = dict(url=download_from_url, history=download_from_history)
 
@@ -82,18 +89,17 @@
     params = loads(open(filename).read())
     target_directory = params['output_data'][0]['extra_files_path']
     os.makedirs(target_directory)
+    data_manager_dict = {}
 
     dbkey, sequence_id, sequence_name = get_dbkey_id_name(params, dbkey_description=args.dbkey_description)
+
     if dbkey in [None, '', '?']:
         raise Exception('"%s" is not a valid dbkey. You must specify a valid dbkey.' % (dbkey))
 
     # Fetch the FASTA
     REFERENCE_SOURCE_TO_DOWNLOAD[params['param_dict']['reference_source']['reference_source_selector']]\
-        (params, target_directory)
+        (data_manager_dict, params, target_directory, dbkey, sequence_id, sequence_name, data_table_name=args.data_table_name or DEFAULT_DATA_TABLE_NAME)
 
-    data_table_entry = dict(value=sequence_id, dbkey=dbkey, name=sequence_name, path=target_directory)
-
-    output_datatable_dict = dict(data_tables={args.data_table_name: [data_table_entry]})
-    open(filename, 'wb').write(dumps(output_datatable_dict))
+    open(filename, 'wb').write(dumps( data_manager_dict ))
 
 if __name__ == "__main__": main()
--- a/data_manager/novocraft_index_builder.xml	Fri Mar 04 09:24:47 2016 -0500
+++ b/data_manager/novocraft_index_builder.xml	Sat Mar 05 06:47:55 2016 -0500
@@ -6,7 +6,7 @@
         <exit_code range="1:" />
     </stdio>
     <command interpreter="python">
-        novocraft_index_builder.py "${out_file}" --dbkey_description ${ dbkey.get_display_text() } --data_table_name "novocraft_index"
+        novocraft_index_builder.py "${out_file}" --dbkey_description ${ dbkey.get_display_text() } --data_table_name "novocraft_indexes"
     </command>
     <inputs>
         <param name="dbkey" type="genomebuild" label="DBKEY to assign to data" />
--- a/data_manager_conf.xml	Fri Mar 04 09:24:47 2016 -0500
+++ b/data_manager_conf.xml	Sat Mar 05 06:47:55 2016 -0500
@@ -1,14 +1,13 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <data_managers>
     <data_manager tool_file="data_manager/novocraft_index_builder.xml" id="novocraft_index_builder" version="0.0.1">
-        <data_table name="novocraft_index">
+        <data_table name="novocraft_indexes">
             <output>
                 <column name="value" />
                 <column name="dbkey" />
                 <column name="name" />
                 <column name="path" output_ref="out_file">
-                    <move type="file">
-                    <!--<move type="directory" relative_symlinks="True">-->
+                    <move type="directory" relative_symlinks="True">
                         <!-- no need to set source, gets taken from out_dir.extra_files_path -->
                         <target base="${GALAXY_DATA_MANAGER_DATA_PATH}">${dbkey}/novocraft_index/${value}</target>
                     </move>
--- a/tool_data_table_conf.xml.sample	Fri Mar 04 09:24:47 2016 -0500
+++ b/tool_data_table_conf.xml.sample	Sat Mar 05 06:47:55 2016 -0500
@@ -1,5 +1,5 @@
 <tables>
-    <table name="novocraft_index" comment_char="#">
+    <table name="novocraft_indexes" comment_char="#">
         <columns>value, dbkey, name, path</columns>
         <file path="tool-data/novocraft_index.nix" />
     </table>