diff data_manager/data_manager.py @ 0:d1beb6fba192 draft default tip

planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tree/master/data_managers/data_manager_mitos commit a7354d02377105590891f7337f472dc2a2f224a4
author matthias
date Thu, 09 May 2019 16:20:33 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data_manager/data_manager.py	Thu May 09 16:20:33 2019 -0400
@@ -0,0 +1,90 @@
+import argparse
+import json
+import os
+import shutil
+import sys
+import tarfile
+try:
+    # For Python 3.0 and later
+    from urllib.request import Request, urlopen
+except ImportError:
+    # Fall back to Python 2 imports
+    from urllib2 import Request, urlopen
+
+ZENODO = {
+    "mitos":"2683856",
+    "mitos2": "2672835"
+}
+
+NAMES = {
+    "mitos1-refdata": "RefSeq39 + MiTFi tRNA models",
+    "refseq39": "RefSeq39 (equivalent to MITOS1 data)",
+    "refseq63m": "RefSeq63 Metazoa",
+    "refseq63f": "RefSeq63 Fungi",
+    "refseq63o": "RefSeq63 Opisthokonta",
+    "refseq81m": "RefSeq81 Metazoa",
+    "refseq81f": "RefSeq81 Fungi",
+    "refseq81o": "RefSeq81 Opisthokonta"
+}
+
+def url_download(tpe, db, workdir):
+    """
+    download http://ab.inf.uni-tuebingen.de/data/software/megan6/download/FNAME
+    to workdir
+    and unzip 
+    
+    return the name of the resulting dir
+    """
+    tarfname = os.path.join(workdir, db + ".tar.bz")
+    if not os.path.exists(workdir):
+        os.makedirs(workdir)
+    src = None
+    dst = None
+    try:
+        req = Request("https://zenodo.org/record/{zenodoid}/files/{db}.tar.bz2?download=1".format(zenodoid=ZENODO[tpe], db=db))
+        src = urlopen(req)
+        with open(tarfname, 'wb') as dst:
+            while True:
+                chunk = src.read(2**10)
+                if chunk:
+                    dst.write(chunk)
+                else:
+                    break
+    finally:
+        if src:
+            src.close()
+    with tarfile.open(tarfname, "r:bz2") as tar:
+        tar.extractall(workdir)
+    os.remove(tarfname)
+    unzipped = os.listdir(workdir)
+    assert len(unzipped) == 1
+    return unzipped[0]
+
+def main(tpe, db, outjson):
+     
+    workdir = os.getcwd()
+
+    path = url_download(tpe, db, workdir)
+
+    data_manager_entry = {}
+    data_manager_entry['value'] = db
+    data_manager_entry['name'] = NAMES[db]
+    data_manager_entry['type'] = tpe
+    data_manager_entry['path'] = path
+    data_manager_json = dict(data_tables=dict(mitos=data_manager_entry))
+
+    params = json.loads(open(outjson).read())
+    target_directory = params['output_data'][0]['extra_files_path']
+    os.mkdir(target_directory)
+    output_path = os.path.abspath(os.path.join(os.getcwd(), 'mitos'))
+    shutil.move(os.path.join(workdir, path), target_directory)
+    file(outjson, 'w').write(json.dumps(data_manager_json))
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description='Create data manager json.')
+    parser.add_argument('--out', action='store', help='JSON filename')
+    parser.add_argument('--type', action='store', help='mitos version')
+    parser.add_argument('--db', action='store', help='db name')
+    args = parser.parse_args()
+
+    main(args.type, args.db, args.out)