view data_manager/recetox_metabolite_fetcher.py @ 0:953dd78a34d3 draft default tip

"planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
author recetox
date Tue, 25 Aug 2020 11:15:49 +0000
parents
children
line wrap: on
line source

import os
import errno

from argparse import ArgumentParser
from datetime import datetime
from json import dumps, loads
from urllib.parse import urlparse
from shutil import copy


def main(args):
    with open(args.data_manager_json, 'r') as json_in:
        data_manager_input = loads(json_in.read())
    target_directory = data_manager_input['output_data'][0]['extra_files_path']

    try:
        os.mkdir(target_directory)
    except OSError as exc:
        if exc.errno == errno.EEXIST and os.path.isdir(target_directory):
            pass
        else:
            raise

    date = str(datetime.now())
    base = urlparse(args.database_url).hostname.split('.')[-2]
    name = f'{base}_{date}'.replace(' ', '_')

    if base not in ['hmdb', 't3db']:
        raise NameError('Unknown database')
    
    src = os.path.join(args.tool_data_dir, f'{base}.h5')
    dst = os.path.join(target_directory, f'{name}.h5')
    copy(src, dst)
        
    data_table_entry = {
        'data_tables': {
            'recetox_metabolite_databases' : [
                {
                    "value": name,
                    "name": name,
                    "date": date,
                    "path": f'{name}.h5',
                }
            ]
        }
    }

    with open(args.data_manager_json, 'w') as json_out:
        json_out.write(dumps(data_table_entry))


if __name__ == "__main__":
    parser = ArgumentParser()
    parser.add_argument('--tool_data_dir')
    parser.add_argument('--database_url')
    parser.add_argument('--data_manager_json')
    main(parser.parse_args())