annotate data_manager/data_manager_selection_background.py @ 1:fa3b4a42d899 draft default tip

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
author dave
date Tue, 24 Aug 2021 15:23:33 +0000
parents 98beedb0e74b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
1 # -*- coding: utf-8 -*-
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
2 import argparse
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
3 import bz2
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
4 import gzip
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
5 import json
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
6 import os
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
7 import shutil
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
8 import sys
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
9 import uuid
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
10 import zipfile
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
11 from urllib.request import urlretrieve
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
12
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
13 # Nice solution to opening compressed files (zip/bz2/gz) transparently
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
14 # https://stackoverflow.com/a/13045892/638445
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
15
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
16
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
17 class CompressedFile(object):
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
18 magic = None
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
19 file_type = None
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
20 mime_type = None
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
21 proper_extension = None
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
22
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
23 def __init__(self, f):
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
24 # f is an open file or file like object
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
25 self.f = f
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
26 self.accessor = self.open()
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
27
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
28 @classmethod
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
29 def is_magic(self, data):
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
30 return data.startswith(self.magic)
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
31
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
32 def open(self):
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
33 return None
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
34
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
35
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
36 class ZIPFile(CompressedFile):
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
37 magic = '\x50\x4b\x03\x04'
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
38 file_type = 'zip'
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
39 mime_type = 'compressed/zip'
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
40
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
41 def open(self):
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
42 return zipfile.ZipFile(self.f)
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
43
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
44
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
45 class BZ2File(CompressedFile):
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
46 magic = '\x42\x5a\x68'
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
47 file_type = 'bz2'
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
48 mime_type = 'compressed/bz2'
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
49
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
50 def open(self):
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
51 return bz2.BZ2File(self.f)
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
52
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
53
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
54 class GZFile(CompressedFile):
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
55 magic = '\x1f\x8b\x08'
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
56 file_type = 'gz'
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
57 mime_type = 'compressed/gz'
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
58
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
59 def open(self):
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
60 return gzip.GzipFile(self.f)
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
61
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
62
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
63 # factory function to create a suitable instance for accessing files
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
64 def get_compressed_file(filename):
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
65 with open(filename, 'rb') as f:
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
66 start_of_file = f.read(1024)
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
67 f.seek(0)
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
68 for cls in (ZIPFile, BZ2File, GZFile):
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
69 if cls.is_magic(start_of_file):
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
70 f.close()
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
71 return cls(filename)
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
72
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
73 return None
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
74
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
75
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
76 def url_download(url):
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
77 """Attempt to download gene annotation file from a given url
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
78 :param url: full url to gene annotation file
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
79 :type url: str.
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
80 :returns: name of downloaded gene annotation file
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
81 :raises: ContentDecodingError, IOError
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
82 """
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
83
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
84 # Generate file_name
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
85 file_name = url.split('/')[-1]
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
86
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
87 try:
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
88 # download URL (FTP and HTTP work, probably local and data too)
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
89 urlretrieve(url, file_name)
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
90
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
91 # uncompress file if needed
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
92 cf = get_compressed_file(file_name)
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
93 if cf is not None:
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
94 uncompressed_file_name = os.path.splitext(file_name)[0]
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
95 with open(uncompressed_file_name, 'w+') as uncompressed_file:
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
96 shutil.copyfileobj(cf.accessor, uncompressed_file)
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
97 os.remove(file_name)
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
98 file_name = uncompressed_file_name
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
99 except IOError as e:
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
100 sys.stderr.write('Error occured downloading reference file: %s' % e)
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
101 os.remove(file_name)
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
102 return file_name
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
103
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
104
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
105 def main():
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
106 parser = argparse.ArgumentParser(description='Create data manager JSON.')
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
107 parser.add_argument('--output', dest='output', action='store', required=True, help='JSON filename')
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
108 parser.add_argument('--dbkey', dest='dbkey', action='store', default=uuid.uuid4(), help='Data table entry unique ID')
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
109 parser.add_argument('--label', dest='label', action='store', required=True, help='Label to display')
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
110 parser.add_argument('--uri', dest='uri', action='store', help='URI for the sequences')
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
111 parser.add_argument('--dataset', dest='dataset', action='store', help='Path for the sequences')
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
112
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
113 args = parser.parse_args()
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
114
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
115 work_dir = os.getcwd()
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
116
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
117 if args.uri is not None:
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
118 background_fasta = url_download(args.uri)
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
119 else:
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
120 background_fasta = args.dataset
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
121
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
122 table_entry = '%s.fa' % args.dbkey
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
123 shutil.copy(background_fasta, os.path.join(work_dir, table_entry))
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
124
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
125 # Update Data Manager JSON and write to file
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
126 data_manager_entry = {
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
127 'data_tables': {
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
128 'selection_background': {'value': args.dbkey, 'label': args.label, 'path': table_entry}
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
129 }
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
130 }
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
131
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
132 with open(os.path.join(args.output), 'w+') as fh:
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
133 json.dump(data_manager_entry, fh, sort_keys=True)
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
134
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
135
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
136 if __name__ == '__main__':
98beedb0e74b "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_selection_background commit 4854cf92350265cac72ba5bb462e08b8cd239b8b-dirty"
dave
parents:
diff changeset
137 main()