示例#1
0
def implementation(logger, args):
    list_of_files = {}
    if path_exists(args.sg_local_path, logger=logger, force=True):
        for (dirpath, dirnames, filenames) in os.walk(args.sg_local_path):
            for filename in filenames:
                list_of_files[filename] = os.sep.join([dirpath, filename])
        logger.debug(list_of_files)

    gi = GalaxyInstance(args.url, key=args.key)
    tools = gi.tools.get_tools()

    counter_singularity = 0
    counter_docker = 0
    match = {}
    unmatch = []

    for t in tools:
        t_id = t['id']
        t_xml_file = gi.tools.show_tool(t['id'])['config_file']

        container_name = None
        try:
            tool_xml = load(t_xml_file)
            requirements, containers = parse_requirements_from_xml(tool_xml)
            conda_targets = requirements_to_conda_targets(requirements)
            mulled_targets = [
                build_target(c.package, c.version) for c in conda_targets
            ]
            container_name = mulled_container_name("biocontainers",
                                                   mulled_targets)
        except Exception as ex:
            logger.exception('Caught an error at {} with tid: {}'.format(
                args.url, t_id))
            pass

        singularity = 'not_found'
        if container_name:
            container_name = container_name.lower()
            counter_docker += 1
            if os.path.basename(container_name) in list_of_files:
                singularity = os.path.join(args.sg_local_path,
                                           os.path.basename(container_name))
                counter_singularity += 1

            match[t_id] = {
                'docker': "docker://{}".format(container_name),
                'singularity': singularity
            }
        unmatch.append(t_id)
        print(t_id, container_name, singularity)
    dump(match, "{}_{}".format(args.url.split('/')[2], args.matched))
    dump(unmatch, "{}_{}".format(args.url.split('/')[2], args.notmatched))

    print("number of tools {}".format(len(tools)))
    print("number of docker images matched {}".format(counter_docker))
    print("number of singularity images in CVMFS {}".format(
        len(list_of_files)))
    print(
        "number of singularity images matched {}".format(counter_singularity))
示例#2
0
def collect_conda_targets(path, found_tool_callback=None, conda_context=None):
    conda_targets = []
    for (tool_path, tool_xml) in load_tool_elements_from_path(path):
        if found_tool_callback:
            found_tool_callback(tool_path)
        requirements, containers = parse_requirements_from_xml(tool_xml)
        conda_targets.extend(conda_util.requirements_to_conda_targets(requirements))
    return conda_targets
示例#3
0
def collect_conda_targets(path, found_tool_callback=None, conda_context=None):
    conda_targets = []
    for (tool_path, tool_xml) in load_tool_elements_from_path(path):
        if found_tool_callback:
            found_tool_callback(tool_path)
        requirements, containers = parse_requirements_from_xml(tool_xml)
        conda_targets.extend(conda_util.requirements_to_conda_targets(requirements))
    return conda_targets
示例#4
0
文件: conda.py 项目: michauhl/planemo
def tool_source_conda_targets(tool_source):
    """Load CondaTarget object from supplied abstract tool source."""
    requirements, _ = tool_source.parse_requirements_and_containers()
    return conda_util.requirements_to_conda_targets(requirements)
示例#5
0
def tool_source_conda_targets(tool_source):
    """Load CondaTarget object from supplied abstract tool source."""
    requirements, _ = tool_source.parse_requirements_and_containers()
    return conda_util.requirements_to_conda_targets(requirements)