comparison data_manager/pangolearn_dm.py @ 5:29c738066906 draft default tip

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_pangolearn commit b12eb7c784ce8e0f9b775530e710e47088711f76"
author iuc
date Fri, 15 Apr 2022 09:12:48 +0000
parents 6e24e79d3d69
children
comparison
equal deleted inserted replaced
4:6e24e79d3d69 5:29c738066906
49 ret.append(release) 49 ret.append(release)
50 50
51 return ret 51 return ret
52 52
53 53
54 def download_and_unpack(url, output_directory): 54 def download_and_unpack(url, output_directory, v3datatree=True):
55 response = requests.get(url) 55 response = requests.get(url)
56 if response.status_code == 200: 56 if response.status_code == 200:
57 tmp_filename = url.split("/")[-1] 57 tmp_filename = url.split("/")[-1]
58 tmpfile = open(tmp_filename, "wb") 58 tmpfile = open(tmp_filename, "wb")
59 tmpfile.write(response.content) 59 tmpfile.write(response.content)
60 tmpfile.close() 60 tmpfile.close()
61 shutil.copy(tmp_filename, "/tmp") 61 shutil.copy(tmp_filename, "/tmp")
62 tf = tarfile.open(tmp_filename) 62 tf = tarfile.open(tmp_filename)
63 pl_path = tf.next().name 63 pl_path = os.path.join(output_directory, tf.next().name)
64 tf.extractall(output_directory) 64 tf.extractall(output_directory)
65 os.unlink(tmp_filename) 65 os.unlink(tmp_filename)
66 pangolearn_unpacked_dir = os.path.join(pl_path, "pangoLEARN")
67 if v3datatree:
68 # pangolin v3 expects a datadir with the entire pangoLEARN
69 # subfolder in it.
70 # In addition, it will only use the data if the __init__.py file
71 # contained within that subfolder declares a __version__ that is
72 # newer than the version installed with pangolin.
73 pangolearn_dir = os.path.join(
74 output_directory, tmp_filename, "pangoLEARN"
75 )
76 os.mkdir(os.path.dirname(pangolearn_dir))
77 # rewrite the __init__.py file and make the __version__ string
78 # appear newer than anything that might come with pangolin by
79 # prepending a "v" to it.
80 pangolearn_init = open(
81 os.path.join(pangolearn_unpacked_dir, "__init__.py")
82 ).readlines()
83 with open(
84 os.path.join(pangolearn_unpacked_dir, "__init__.py"), "w"
85 ) as o:
86 for line in pangolearn_init:
87 if line.startswith('__version__ = "'):
88 line = line.replace(
89 '__version__ = "', '__version__ = "v'
90 )
91 o.write(line)
92 else:
93 # Earlier versions of pangolin expect a datadir with just the
94 # contents of the downloaded pangoLEARN subfolder in it and don't
95 # care about the declared version in __init__.py.
96 pangolearn_dir = os.path.join(
97 output_directory, tmp_filename
98 )
66 os.rename( 99 os.rename(
67 output_directory + "/" + pl_path + "/" + "pangoLEARN", 100 pangolearn_unpacked_dir,
68 output_directory + "/" + tmp_filename, 101 pangolearn_dir
69 ) 102 )
70 shutil.rmtree(output_directory + "/" + pl_path) 103 shutil.rmtree(pl_path)
71 return tmp_filename 104 return tmp_filename
72 else: 105 else:
73 response.raise_for_status() 106 response.raise_for_status()
74 107
75 108
130 release 163 release
131 for release in releases 164 for release in releases
132 if release["tag_name"] not in existing_release_tags 165 if release["tag_name"] not in existing_release_tags
133 ] 166 ]
134 for release in releases_to_download: 167 for release in releases_to_download:
135 fname = download_and_unpack(release["tarball_url"], output_directory)
136 if args.pangolearn_format_version is not None: 168 if args.pangolearn_format_version is not None:
137 version = args.pangolearn_format_version 169 version = args.pangolearn_format_version
138 else: 170 else:
139 # 2021-05-27 was the first release of pangoLEARN for pangolin 3, which changed DB format 171 # 2021-05-27 was the first release of pangoLEARN for pangolin 3, which changed DB format
140 if release["date"] >= datetime.datetime(2021, 5, 27): 172 if release["date"] >= datetime.datetime(2021, 5, 27):
141 version = '3.0' 173 version = '3.0'
142 else: 174 else:
143 version = '1.0' 175 version = '1.0'
176 fname = download_and_unpack(
177 release["tarball_url"],
178 output_directory,
179 v3datatree=version == '3.0'
180 )
144 data_manager_dict["data_tables"][args.datatable_name].append( 181 data_manager_dict["data_tables"][args.datatable_name].append(
145 dict( 182 dict(
146 value=release["tag_name"], 183 value=release["tag_name"],
147 description=release["name"], 184 description=release["name"],
148 format_version=version, 185 format_version=version,