view data_manager/defense_finder_models_fetcher.py @ 0:a04c5659aac3 draft

planemo upload for repository https://gitlab.pasteur.fr/galaxy-team/galaxy-tools/-/tree/master/data_managers/data_manager_defense_finder commit cd90d22094f1128738ca4614b51d81af00a83d50
author rplanel
date Tue, 12 Sep 2023 09:06:45 +0000
parents
children 6dd2220e0a1c
line wrap: on
line source

#!/usr/bin/env python

import argparse
import json

import subprocess
import sys
from pathlib import Path


def main(args):
    dataset_basename = "defense-finder-models"
    models_version = args.version
    output_file = args.output
    dataset_value = f"{dataset_basename}_{models_version}"
    with open(output_file) as fh:
        params = json.load(fh)
    target_directory = Path(params["output_data"][0]["extra_files_path"])
    target_directory.mkdir(parents=True, exist_ok=True)
    # download models with macsydata
    args = [
        "defense-finder",
        "update",
        "--models-dir",
        dataset_value,
    ]

    proc = subprocess.Popen(args=args, shell=False, cwd=target_directory)
    return_code = proc.wait()
    if return_code:
        print("Error building index.", file=sys.stderr)
        sys.exit(return_code)

    data_table_entry = dict(
        value=dataset_value,
        dbkey=dataset_basename,
        version=models_version,
        name=f"Defense Finder models (version {models_version})",
        description="MacSyFinder models allowing for a systematic search of anti-phage systems",
        path=dataset_value,
    )

    data_manager_json = dict(data_tables={"defense-finder": data_table_entry})

    # move dir to final target dir
    # shutil.move(workdir / dataset_name, target_directory_tax)
    # data_manager_json = dict(data_tables=dict(pasteurqtl=data_table_entry))
    with open(output_file, "w") as fh:
        json.dump(data_manager_json, fh, sort_keys=True)


if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Create data manager json.")
    parser.add_argument("--out", dest="output", action="store", help="JSON filename")
    parser.add_argument(
        "--version", dest="version", action="store", default="1", help="dataset version"
    )

    args = parser.parse_args()
    main(args)