Mercurial > repos > iuc > data_manager_omamer
comparison data_manager/omamer.py @ 1:57db282ca204 draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_omamer commit 67067cd7917545904b3a9980948abdd19f0576bd
author | iuc |
---|---|
date | Thu, 07 Mar 2024 14:28:42 +0000 |
parents | e1502e4f8725 |
children | f8d72275878e |
comparison
equal
deleted
inserted
replaced
0:e1502e4f8725 | 1:57db282ca204 |
---|---|
2 | 2 |
3 import argparse | 3 import argparse |
4 import json | 4 import json |
5 import os | 5 import os |
6 import sys | 6 import sys |
7 from pathlib import Path | |
8 | 7 |
9 import requests | 8 import requests |
10 | 9 |
11 # URL for downloading OMAmer datasets | 10 # URL for downloading OMAmer datasets |
12 OMAMER_DATASETS_URL = "https://omabrowser.org/All/{dataset}" | 11 OMAMER_DATASETS_URL = "https://omabrowser.org/All/{dataset}" |
16 "Primates": "Primates-v2.0.0.h5", | 15 "Primates": "Primates-v2.0.0.h5", |
17 "Viridiplantae": "Viridiplantae-v2.0.0.h5", | 16 "Viridiplantae": "Viridiplantae-v2.0.0.h5", |
18 "Metazoa": "Metazoa-v2.0.0.h5", | 17 "Metazoa": "Metazoa-v2.0.0.h5", |
19 "LUCA": "LUCA-v0.2.5.h5", | 18 "LUCA": "LUCA-v0.2.5.h5", |
20 } | 19 } |
21 | |
22 | 20 |
23 DEFAULT_OUTPUT_DIR = "database_omamer" | 21 DEFAULT_OUTPUT_DIR = "database_omamer" |
24 | 22 |
25 | 23 |
26 def download_file(url, dest): | 24 def download_file(url, dest): |
35 print(f"Error downloading {url}: {e}") | 33 print(f"Error downloading {url}: {e}") |
36 sys.exit(1) | 34 sys.exit(1) |
37 | 35 |
38 | 36 |
39 def main(args): | 37 def main(args): |
40 # Set output directory to default | 38 |
41 output_dir = DEFAULT_OUTPUT_DIR | 39 with open(args.json) as fh: |
40 params = json.load(fh) | |
41 target_directory = params["output_data"][0]["extra_files_path"] | |
42 | 42 |
43 # Create output directory if none exists | 43 # Create output directory if none exists |
44 if not os.path.exists(output_dir): | 44 if not os.path.exists(target_directory): |
45 os.makedirs(output_dir) | 45 os.makedirs(target_directory) |
46 | 46 |
47 # Check if the selected dataset exists | 47 # Check if the selected dataset exists |
48 if args.name not in OMAMER_DATASETS: | 48 if args.name not in OMAMER_DATASETS: |
49 print(f"Error: Selected dataset '{args.name}' not found.") | 49 print(f"Error: Selected dataset '{args.name}' not found.") |
50 sys.exit(1) | 50 sys.exit(1) |
51 | 51 |
52 # Download the selected OMAmer dataset | 52 # Download the selected OMAmer dataset |
53 dataset = OMAMER_DATASETS[args.name] | 53 dataset = OMAMER_DATASETS[args.name] |
54 url = OMAMER_DATASETS_URL.format(dataset=dataset) | 54 url = OMAMER_DATASETS_URL.format(dataset=dataset) |
55 base_name = os.path.splitext(dataset)[0] | 55 base_name = os.path.splitext(dataset)[0] |
56 destination_path = os.path.join(output_dir, base_name) | 56 destination_path = os.path.join(target_directory, dataset) |
57 download_file(url, destination_path) | 57 download_file(url, destination_path) |
58 | 58 |
59 data_manager_entry = { | 59 data_manager_entry = { |
60 "value": os.path.splitext(os.path.basename(base_name))[0], | 60 "value": dataset, |
61 "name": os.path.splitext(os.path.basename(base_name))[0], | 61 "name": base_name, |
62 "version": "2.0.2", | 62 "version": args.version, |
63 "path": str(Path(output_dir)), | 63 "path": dataset, |
64 } | 64 } |
65 | 65 |
66 # Creates a JSON dictionary representing the Data Manager configuration | 66 # Creates a JSON dictionary representing the Data Manager configuration |
67 data_manager_json = {"data_tables": {"omamer_data": [data_manager_entry]}} | 67 data_manager_json = {"data_tables": {"omamer": [data_manager_entry]}} |
68 | 68 |
69 # Writes this JSON dictionary to the specified output file | 69 # Writes this JSON dictionary to the specified output file |
70 with open(args.json, "w") as fh: | 70 with open(args.json, "w") as fh: |
71 json.dump(data_manager_json, fh, indent=2, sort_keys=True) | 71 json.dump(data_manager_json, fh, indent=2, sort_keys=True) |
72 | 72 |
74 if __name__ == "__main__": | 74 if __name__ == "__main__": |
75 # Set up argparse to specify expected command line arguments | 75 # Set up argparse to specify expected command line arguments |
76 parser = argparse.ArgumentParser(description='Download data for OMAmer') | 76 parser = argparse.ArgumentParser(description='Download data for OMAmer') |
77 parser.add_argument('--name', default='Primates', choices=OMAMER_DATASETS.keys(), help='Select dataset to download') | 77 parser.add_argument('--name', default='Primates', choices=OMAMER_DATASETS.keys(), help='Select dataset to download') |
78 parser.add_argument('--json', help='Path to JSON file') | 78 parser.add_argument('--json', help='Path to JSON file') |
79 parser.add_argument("--version", help="Omamer version") | |
79 | 80 |
80 args = parser.parse_args() | 81 args = parser.parse_args() |
81 | 82 |
82 main(args) | 83 main(args) |