changeset 29:65cbfb5e6f65 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_build_kraken2_database/ commit d59f93c41e32c857f9e82a59c0c408cafc10c233-dirty
author dfornika
date Fri, 29 Mar 2019 14:32:59 -0400
parents b400ae4d47cc
children 0aaff8fb824d
files data_manager/kraken2_build_custom.py data_manager/kraken2_build_custom.xml data_manager/kraken2_build_minikraken.py data_manager/kraken2_build_special.py data_manager/kraken2_build_standard.py
diffstat 5 files changed, 30 insertions(+), 64 deletions(-) [+]
line wrap: on
line diff
--- a/data_manager/kraken2_build_custom.py	Wed Mar 27 19:54:12 2019 -0400
+++ b/data_manager/kraken2_build_custom.py	Fri Mar 29 14:32:59 2019 -0400
@@ -7,13 +7,12 @@
 import json
 import os
 import subprocess
-import sys
 
 
 DATA_TABLE_NAME = "kraken2_databases"
 
 
-def kraken2_build(data_manager_dict, kraken2_args, database_name, params, target_directory, data_table_name=DATA_TABLE_NAME):
+def kraken2_build(data_manager_dict, kraken2_args, database_name, target_directory, data_table_name=DATA_TABLE_NAME):
 
     args = [
         '--threads', str(kraken2_args["threads"]),
@@ -102,12 +101,12 @@
     kraken2_build(
         data_manager_dict,
         kraken2_args,
-        params,
+        args.database_name,
         target_directory
     )
 
     # save info to json file
-    open(args.params, 'wb').write(json.dumps(data_manager_dict))
+    open(args.params, 'w').write(json.dumps(data_manager_dict))
 
 
 if __name__ == "__main__":
--- a/data_manager/kraken2_build_custom.xml	Wed Mar 27 19:54:12 2019 -0400
+++ b/data_manager/kraken2_build_custom.xml	Fri Mar 29 14:32:59 2019 -0400
@@ -10,7 +10,7 @@
         python '$__tool_directory__/kraken2_build_custom.py'
           '${out_file}'
           --threads \${GALAXY_SLOTS:-1}
-          --db ${database_name}
+          --db '${database_name}'
           --kmer-len ${kmer_len}
           --minimizer-len ${minimizer_len}
           --minimizer-spaces ${minimizer_spaces}
--- a/data_manager/kraken2_build_minikraken.py	Wed Mar 27 19:54:12 2019 -0400
+++ b/data_manager/kraken2_build_minikraken.py	Fri Mar 29 14:32:59 2019 -0400
@@ -7,21 +7,19 @@
 import errno
 import json
 import os
-import subprocess
-import sys
+import shutil
+import tarfile
+
+try:
+    # Python3
+    from urllib.request import urlopen
+except ImportError:
+    from urllib2 import urlopen
 
 
 DATA_TABLE_NAME = "kraken2_databases"
 
 
-def run(args, cwd):
-    proc = subprocess.Popen(args=args, shell=False, cwd=cwd)
-    return_code = proc.wait()
-    if return_code:
-        print("Error building database.", file=sys.stderr)
-        sys.exit( return_code )
-
-
 def kraken2_build_minikraken(data_manager_dict, minikraken2_version, target_directory, data_table_name=DATA_TABLE_NAME):
 
     now = datetime.datetime.utcnow().strftime("%Y-%m-%dT%H%M%SZ")
@@ -40,34 +38,21 @@
         now + ")"
     ])
 
-    database_path = database_value
-
-    args = [
-        'https://ccb.jhu.edu/software/kraken2/dl/minikraken2_' + minikraken2_version + '_8GB.tgz'
-    ]
-
-    subprocess.check_call(['wget'] + args, cwd=target_directory)
-
-    args = [
-        '-p',
-        database_path,
-    ]
-
-    subprocess.check_call(['mkdir'] + args, cwd=target_directory)
-
-    args = [
-        '-xvzf',
-        'minikraken2_' + minikraken2_version + '_8GB.tgz',
-        '-C',
-        database_path,
-    ]
-
-    subprocess.check_call(['tar'] + args, cwd=target_directory)
+    # download the minikraken2 data
+    src = urlopen(
+        'https://ccb.jhu.edu/software/kraken2/dl/minikraken2_%s_8GB.tgz'
+        % minikraken2_version
+    )
+    with open('tmp_data.tar.gz', 'wb') as dst:
+        shutil.copyfileobj(src, dst)
+    # unpack the downloaded archive to the target directory
+    with tarfile.open('tmp_data.tar.gz', 'r:gz') as fh:
+        fh.extractall(target_directory)
 
     data_table_entry = {
         "value": database_value,
         "name": database_name,
-        "path": database_path,
+        "path": database_value,
     }
 
     _add_data_table_entry(data_manager_dict, data_table_entry)
@@ -108,7 +93,7 @@
         target_directory,
     )
 
-    open(args.data_manager_json, 'wb').write(json.dumps(data_manager_output))
+    open(args.data_manager_json, 'w').write(json.dumps(data_manager_output))
 
 
 if __name__ == "__main__":
--- a/data_manager/kraken2_build_special.py	Wed Mar 27 19:54:12 2019 -0400
+++ b/data_manager/kraken2_build_special.py	Fri Mar 29 14:32:59 2019 -0400
@@ -8,20 +8,11 @@
 import json
 import os
 import subprocess
-import sys
 
 
 DATA_TABLE_NAME = "kraken2_databases"
 
 
-def run(args, cwd):
-    proc = subprocess.Popen(args=args, shell=False, cwd=cwd)
-    return_code = proc.wait()
-    if return_code:
-        print("Error building database.", file=sys.stderr)
-        sys.exit( return_code )
-
-
 def kraken2_build_standard(data_manager_dict, kraken2_args, target_directory, data_table_name=DATA_TABLE_NAME):
 
     now = datetime.datetime.utcnow().strftime("%Y-%m-%dT%H%M%SZ")
@@ -60,7 +51,7 @@
         '--db', database_path
     ]
 
-    run(['kraken2-build'] + args, target_directory)
+    subprocess.check_call(['kraken2-build'] + args, cwd=target_directory)
 
     args = [
         '--threads', str(kraken2_args["threads"]),
@@ -68,7 +59,7 @@
         '--db', database_path
     ]
 
-    run(['kraken2-build'] + args, target_directory)
+    subprocess.check_call(['kraken2-build'] + args, cwd=target_directory)
 
     data_table_entry = {
         "value": database_value,
@@ -124,7 +115,7 @@
         target_directory,
     )
 
-    open(args.data_manager_json, 'wb').write(json.dumps(data_manager_output))
+    open(args.data_manager_json, 'w').write(json.dumps(data_manager_output))
 
 
 if __name__ == "__main__":
--- a/data_manager/kraken2_build_standard.py	Wed Mar 27 19:54:12 2019 -0400
+++ b/data_manager/kraken2_build_standard.py	Fri Mar 29 14:32:59 2019 -0400
@@ -8,20 +8,11 @@
 import json
 import os
 import subprocess
-import sys
 
 
 DATA_TABLE_NAME = "kraken2_databases"
 
 
-def run(args, cwd):
-    proc = subprocess.Popen(args=args, shell=False, cwd=cwd)
-    return_code = proc.wait()
-    if return_code:
-        print("Error building database.", file=sys.stderr)
-        sys.exit( return_code )
-
-
 def kraken2_build_standard(data_manager_dict, kraken2_args, target_directory, data_table_name=DATA_TABLE_NAME):
     now = datetime.datetime.utcnow().strftime("%Y-%m-%dT%H%M%SZ")
 
@@ -53,7 +44,7 @@
         '--db', database_path
     ]
 
-    run(['kraken2-build'] + args, target_directory)
+    subprocess.check_call(['kraken2-build'] + args, cwd=target_directory)
 
     args = [
         '--threads', str(kraken2_args["threads"]),
@@ -61,7 +52,7 @@
         '--db', database_path
     ]
 
-    run(['kraken2-build'] + args, target_directory)
+    subprocess.check_call(['kraken2-build'] + args, cwd=target_directory)
 
     data_table_entry = {
         "value": database_value,
@@ -115,7 +106,7 @@
         target_directory,
     )
 
-    open(args.data_manager_json, 'wb').write(json.dumps(data_manager_output))
+    open(args.data_manager_json, 'w').write(json.dumps(data_manager_output))
 
 
 if __name__ == "__main__":