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)