# HG changeset patch # User iuc # Date 1686820448 0 # Node ID b56071bdecad0c54afd318ed841b9636e9d8ddc1 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_fetch_plasmidfinder commit f6d40bf94e015c2690e97c4b3533517b812f3bfb diff -r 000000000000 -r b56071bdecad data_manager/macro.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/data_manager/macro.xml Thu Jun 15 09:14:08 2023 +0000 @@ -0,0 +1,16 @@ + + 2.1.6 + 3.1.31 + 2.34.1 + 4.0.10 + 3.11.3 + 0 + 21.05 + + + python + gitpython + git + + + diff -r 000000000000 -r b56071bdecad data_manager/plasmidfinder_fetch_database.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/data_manager/plasmidfinder_fetch_database.py Thu Jun 15 09:14:08 2023 +0000 @@ -0,0 +1,154 @@ +import argparse +import json +import os +import time +from pathlib import Path + + +import git + + +class GetPlasmidfinderDataManager: + """ + Create the json file with database information for galaxy data manager + """ + + def __init__(self, + plasmidfinder_database="plasmidfinder_database", + db_name="plasmidfinder_database", + plasmidfinder_version="latest"): + self.data_table_name = plasmidfinder_database + self._db_name = db_name + self._plasmidfinder_version = plasmidfinder_version + self._plasmidfinder_date_version = None + self.data_table_entry = None + self.plasmidfinder_table_list = None + self._commit_number = None + + def get_data_table_format(self): + """ + Skeleton of a data_table format + return: a data table formatted for json output + """ + self.data_table_entry = { + "data_tables": { + self.data_table_name: {} + } + } + return self.data_table_entry + + def get_data_manager(self): + """ + Create the empty data table format and add all the information into + Commit number is added if latest is required instead of version number + return: The data table with database information + """ + self.plasmidfinder_table_list = self.get_data_table_format() + if self._plasmidfinder_version == "latest": + version_value = self._commit_number + else: + version_value = self._plasmidfinder_version + plasmidfinder_value = f"plasmidfinder_{self._commit_number}" \ + f"_{self._plasmidfinder_date_version}" + plasmidfinder_name = f"{version_value}" \ + f"_{self._plasmidfinder_date_version}" + data_info = dict(value=plasmidfinder_value, + name=plasmidfinder_name, + date=self._plasmidfinder_date_version, + path=self._db_name) + self.plasmidfinder_table_list["data_tables"][self.data_table_name] = [data_info] + return self.plasmidfinder_table_list + + +class DownloadPlasmidfinderDatabase(GetPlasmidfinderDataManager): + """ + Download the plasmidfinder database from the bitbucket repository. + Build the data manager info for galaxy + """ + + def __init__(self, + output_dir=Path.cwd(), + plasmidfinder_url="https://bitbucket.org/genomicepidemiology/plasmidfinder_db/src/master", + db_name="plasmidfinder_database", + db_tmp="tmp_database", + plasmidfinder_version="latest", + json_file_path=None, + date_version=None): + + super().__init__() + self.json_file_path = json_file_path + self._output_dir = output_dir + self._plasmidfinder_url = plasmidfinder_url + self._temporary_folder = db_tmp + self._db_name = db_name + self._db_name_tar = f'{db_name}.gz' + self._plasmidfinder_version = plasmidfinder_version + self._plasmidfinder_date_version = date_version + self._commit_number = None + + def git_clone(self): + git.Repo.clone_from(url=self._plasmidfinder_url, to_path=self._output_dir) + self._plasmidfinder_repository = git.Repo(path=self._output_dir) + + def get_commit_number(self): + sha = self._plasmidfinder_repository.head.commit.hexsha + short_sha = self._plasmidfinder_repository.git.rev_parse(sha, short=7) + self._commit_number = short_sha + + def get_commit_date(self): + self._plasmidfinder_date_version = time.strftime("%Y_%m_%d", time.gmtime(self._plasmidfinder_repository.head.commit.committed_date)) + + def download_database(self): + """ + Download the plasmidfinder database using git lib + Extract commit and commit date + """ + self._output_dir = Path(self._output_dir) + self.git_clone() + if self._plasmidfinder_version != "latest": + self._plasmidfinder_repository.git.checkout(self._plasmidfinder_version) + self.get_commit_number() + self.get_commit_date() + + def read_json_input_file(self): + """ + Import the json file + """ + with open(self.json_file_path) as fh: + params = json.load(fh) + target_dir = params['output_data'][0]['extra_files_path'] + os.makedirs(target_dir) + self._output_dir = target_dir + + def write_json_infos(self): + """ + Write in the imported json file + """ + with open(self.json_file_path, 'w') as fh: + json.dump(self.get_data_manager(), fh, sort_keys=True) + + +def parse_arguments(): + """ + List of arguments provided by the user + return: parsed arguments + """ + # parse options and arguments + arg_parser = argparse.ArgumentParser() + arg_parser.add_argument("data_manager_json", + help="json file from galaxy") + arg_parser.add_argument("-v", "--db_version", + help="version of the plasmidfinder (latest or 2.1)") + return arg_parser.parse_args() + + +def main(): + all_args = parse_arguments() + plasmidfinder_download = DownloadPlasmidfinderDatabase(json_file_path=all_args.data_manager_json, plasmidfinder_version=all_args.db_version) + plasmidfinder_download.read_json_input_file() + plasmidfinder_download.download_database() + plasmidfinder_download.write_json_infos() + + +if __name__ == '__main__': + main() diff -r 000000000000 -r b56071bdecad data_manager/plasmidfinder_fetch_database.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/data_manager/plasmidfinder_fetch_database.xml Thu Jun 15 09:14:08 2023 +0000 @@ -0,0 +1,39 @@ + + plasmidfinder database builder + + macro.xml + + + + + + + + + + + + + + + + + + + + + + + + + + + 10.1007/978-1-4939-9877-7_20 + + diff -r 000000000000 -r b56071bdecad data_manager_conf.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/data_manager_conf.xml Thu Jun 15 09:14:08 2023 +0000 @@ -0,0 +1,20 @@ + + + + + + + + + + + ${path} + plasmidfinder-db/${name} + + ${GALAXY_DATA_MANAGER_DATA_PATH}/plasmidfinder-db/${name} + abspath + + + + + diff -r 000000000000 -r b56071bdecad plasmidfinder_database.loc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plasmidfinder_database.loc Thu Jun 15 09:14:08 2023 +0000 @@ -0,0 +1,8 @@ +# this is a tab separated file describing the location of plasmidfinder database +# The name was obtained by merging date of download and commit number +# the columns are: +# value, name, date, path +# +# for example +#plasmidfinder_9002e7282dd0_2022-12-20 9002e7282dd0_2022-12-20 2022-12-20 plasmidfinder-db +#plasmidfinder_1307168b1ce7_2022-12-20 2.1_2022-12-20 2022-12-20 plasmidfinder-db diff -r 000000000000 -r b56071bdecad test-data/plasmidfinder.loc.test --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/plasmidfinder.loc.test Thu Jun 15 09:14:08 2023 +0000 @@ -0,0 +1,5 @@ +plasmidfinder_1307168_2019_08_28 2.1_2019_08_28 2019_08_28 /tmp/tmptllq5k0r/galaxy-dev/tool-data/plasmidfinder-db/2.1_2019_08_28 +plasmidfinder_1307168_2019_08_28 2.1_2019_08_28 2019_08_28 /tmp/tmpnshbzr8f/galaxy-dev/tool-data/plasmidfinder-db/2.1_2019_08_28 +plasmidfinder_1307168_2019_08_28 2.1_2019_08_28 2019_08_28 /tmp/tmpgfqg6r8x/galaxy-dev/tool-data/plasmidfinder-db/2.1_2019_08_28 +plasmidfinder_1307168_2019_08_28 2.1_2019_08_28 2019_08_28 /tmp/tmpam2pha1m/galaxy-dev/tool-data/plasmidfinder-db/2.1_2019_08_28 +plasmidfinder_1307168_2019_08_28 2.1_2019_08_28 2019_08_28 /tmp/tmp_tzl62ye/galaxy-dev/tool-data/plasmidfinder-db/2.1_2019_08_28 diff -r 000000000000 -r b56071bdecad test-data/plasmidfinder_test_data_manager_2.1.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/plasmidfinder_test_data_manager_2.1.json Thu Jun 15 09:14:08 2023 +0000 @@ -0,0 +1,1 @@ +{"data_tables": {"plasmidfinder_database": [{"date": "2019_08_28", "name": "2.1_2019_08_28", "path": "plasmidfinder_database", "value": "plasmidfinder_1307168_2019_08_28"}]}} \ No newline at end of file diff -r 000000000000 -r b56071bdecad tool-data/plasmidfinder_database.loc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tool-data/plasmidfinder_database.loc Thu Jun 15 09:14:08 2023 +0000 @@ -0,0 +1,8 @@ +# this is a tab separated file describing the location of plasmidfinder database +# The name was obtained by merging date of download and commit number +# the columns are: +# value, name, date, path +# +# for example +#plasmidfinder_9002e7282dd0_2022-12-20 9002e7282dd0_2022-12-20 2022-12-20 plasmidfinder-db +#plasmidfinder_1307168b1ce7_2022-12-20 2.1_2022-12-20 2022-12-20 plasmidfinder-db diff -r 000000000000 -r b56071bdecad tool_data_table_conf.xml.sample --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tool_data_table_conf.xml.sample Thu Jun 15 09:14:08 2023 +0000 @@ -0,0 +1,8 @@ + + + + + value, name, date, path + +
+
diff -r 000000000000 -r b56071bdecad tool_data_table_conf.xml.test --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tool_data_table_conf.xml.test Thu Jun 15 09:14:08 2023 +0000 @@ -0,0 +1,7 @@ + + + + value, name, date, path + +
+