Unverified Commit afe9ddb4 authored by mvdbeek's avatar mvdbeek
Browse files

Use resource consistently

parent fed7f6ab
Loading
Loading
Loading
Loading
+2 −17
Original line number Diff line number Diff line
@@ -459,23 +459,8 @@ class CommandLineToolProxy(ToolProxy):
                    requirements.append((package["package"], first_version))
        return requirements

    def resource_requirements(self) -> List[Dict[str, Union[int, float, str]]]:
        cwl_to_galaxy = {
            "coresMin": "cores_min",
            "coresMax": "cores_max",
            "ramMin": "ram_min",
            "ramMax": "ram_max",
            "tmpdirMin": "tmpdir_min",
            "tmpdirMax": "tmpdir_max",
        }
        cwl_key_set = set(cwl_to_galaxy.keys())
        rr = []
        for r in self._tool.tool.get("requirements", []):
            if r["class"] == "ResourceRequirement":
                for key in cwl_key_set.intersection(set(r.keys())):
                    galaxy_key = cwl_to_galaxy[key]
                    rr.append({galaxy_key: r[key]})
        return rr
    def resource_requirements(self):
        return [r for r in self.requirements if r["class"] == "ResourceRequirement"]

    @property
    def requirements(self):
+30 −4
Original line number Diff line number Diff line
import copy
from typing import (
    Callable,
    cast,
    Dict,
    List,
    Optional,
    Union,
)
@@ -262,20 +264,44 @@ class ResourceRequirement:
        return float(self.value_or_expression)


def resource_requirements_from_list(requirements) -> List[ResourceRequirement]:
    cwl_to_galaxy = {
        "coresMin": "cores_min",
        "coresMax": "cores_max",
        "ramMin": "ram_min",
        "ramMax": "ram_max",
        "tmpdirMin": "tmpdir_min",
        "tmpdirMax": "tmpdir_max",
    }
    rr = []
    for r in requirements:
        if r.get("class") == "ResourceRequirement":
            valid_key_set = set(cwl_to_galaxy.keys())
        elif r.get("type") == "resource":
            valid_key_set = set(cwl_to_galaxy.values())
        else:
            continue
        for key in valid_key_set.intersection(set(r.keys())):
            value = r[key]
            key = cast(ResourceType, cwl_to_galaxy.get(key, key))
            rr.append(ResourceRequirement(value_or_expression=value, resource_type=key))
    return rr


def parse_requirements_from_dict(root_dict):
    requirements = root_dict.get("requirements", [])
    resource_requirements = root_dict.get("resource_requirements", [])
    resource_requirements = resource_requirements_from_list(requirements)
    containers = root_dict.get("containers", [])
    return (
        ToolRequirements.from_list(requirements),
        [ContainerDescription.from_dict(c) for c in containers],
        [ResourceRequirement.from_dict(r) for r in resource_requirements],
        resource_requirements,
    )


def parse_requirements_from_xml(xml_root, parse_resources=False):
    """
    Parses requirement, containers and optionally resource_requirements from Xml tree.
    Parses requirements, containers and optionally resource requirements from Xml tree.

    >>> from galaxy.util import parse_xml_string
    >>> def load_requirements(contents, parse_resources=False):
@@ -317,7 +343,7 @@ def parse_requirements_from_xml(xml_root, parse_resources=False):

    containers = [container_from_element(c) for c in container_elems]
    if parse_resources:
        resource_elems = requirements_elem.findall("resource_requirement") if requirements_elem else []
        resource_elems = requirements_elem.findall("resource") if requirements_elem else []
        resources = [resource_from_element(r) for r in resource_elems]
        return requirements, containers, resources

+3 −3
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ TOOL_XML_1 = """
    <requirements>
        <container type="docker">mycool/bwa</container>
        <requirement type="package" version="1.0">bwa</requirement>
        <resource_requirement type="cores_min">1</resource_requirement>
        <resource type="cores_min">1</resource>
    </requirements>
    <outputs>
        <data name="out1" format="bam" from_work_dir="out1.bam" />
@@ -119,12 +119,12 @@ command: "bowtie_wrapper.pl --map-the-stuff"
interpreter: "perl"
runtime_version:
  command: "bowtie --version"
resource_requirements:
  - cores_min: 1
requirements:
  - type: package
    name: bwa
    version: 1.0.1
  - type: resource
    cores_min: 1
containers:
  - type: docker
    identifier: "awesome/bowtie"