Skip to content

Commit fda5af7

Browse files
committed
Generalise descriptor into cytomine descriptor
1 parent 58b9656 commit fda5af7

2 files changed

Lines changed: 21 additions & 20 deletions

File tree

biomero/slurm_client.py

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -632,9 +632,9 @@ def init_workflows(self, force_update: bool = False):
632632
# skips the setup
633633
for workflow in self.slurm_model_repos.keys():
634634
if workflow not in self.slurm_model_images or force_update:
635-
json_descriptor = self.pull_descriptor_from_github(workflow)
636-
logger.debug('%s: %s', workflow, json_descriptor)
637-
image = json_descriptor['container-image']['image']
635+
descriptor = self.pull_descriptor_from_github(workflow)
636+
logger.debug('%s: %s', workflow, descriptor)
637+
image = descriptor['container-image']['image']
638638
self.slurm_model_images[workflow] = image
639639

640640
def setup_slurm(self):
@@ -1883,19 +1883,17 @@ def get_workflow_parameters(self,
18831883
# convert to omero types
18841884
logger.debug(descriptor)
18851885
workflow_dict = {}
1886-
for input in descriptor['inputs']:
1886+
for inp in descriptor['inputs']:
18871887
# filter cytomine parameters
1888-
if not input['id'].startswith('cytomine'):
1889-
workflow_params = {}
1890-
workflow_params['name'] = input['id']
1891-
workflow_params['default'] = input['default-value']
1892-
workflow_params['cytype'] = input['type']
1893-
workflow_params['optional'] = input['optional']
1894-
cmd_flag = input['command-line-flag']
1895-
cmd_flag = cmd_flag.replace("@id", input['id'])
1896-
workflow_params['cmd_flag'] = cmd_flag
1897-
workflow_params['description'] = input['description']
1898-
workflow_dict[input['id']] = workflow_params
1888+
id_name = inp.get('id', inp.get('name'))
1889+
if not id_name.startswith('cytomine'):
1890+
workflow_params = {'name': id_name,
1891+
'default': inp.get('default-value', inp.get('default')),
1892+
'cytype': inp['type'],
1893+
'optional': inp['optional'],
1894+
'cmd_flag': inp['command-line-flag'].replace("@id", id_name),
1895+
'description': inp['description']}
1896+
workflow_dict[inp['id']] = workflow_params
18991897
return workflow_dict
19001898

19011899
def convert_cytype_to_omtype(self,
@@ -2052,6 +2050,10 @@ def pull_descriptor_from_github(self, workflow: str) -> Dict:
20522050
raise ValueError(
20532051
f'Error while pulling descriptor file for workflow {workflow},\
20542052
from {raw_url}: {ghfile.__dict__}')
2053+
if 'container-image' not in descriptor and 'docker_image' in descriptor:
2054+
image = descriptor['docker_image']
2055+
descriptor['container-image'] = (
2056+
image.get('org') + '/' + image.get('name') + ':' + image.get('tag'))
20552057
return descriptor
20562058

20572059
def get_or_create_github_session(self):

tests/unit/test_slurm_client.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -464,24 +464,23 @@ def test_pull_descriptor_from_github(slurm_client):
464464
workflow = "example_workflow"
465465
git_repo = "https://github.com/username/repo/tree/branch"
466466
expected_raw_url = "https://github.com/username/repo/raw/branch/descriptor.json"
467-
expected_json_descriptor = {"key": "value"}
467+
expected_descriptor = {"key": "value"}
468468
repos = {
469469
workflow: git_repo
470470
}
471471
with patch('biomero.slurm_client.requests_cache.CachedSession.get') as mock_get:
472472
slurm_client.slurm_model_repos = repos
473473
with patch.object(slurm_client, 'convert_url', return_value=expected_raw_url):
474474
mock_get.return_value.ok = True
475-
mock_get.return_value.json.return_value = expected_json_descriptor
475+
mock_get.return_value.json.return_value = expected_descriptor
476476

477477
# WHEN
478-
json_descriptor = slurm_client.pull_descriptor_from_github(
479-
workflow)
478+
descriptor = slurm_client.pull_descriptor_from_github(workflow)
480479

481480
# THEN
482481
slurm_client.convert_url.assert_called_once_with(git_repo)
483482
mock_get.assert_called_with(expected_raw_url)
484-
assert json_descriptor == expected_json_descriptor
483+
assert descriptor == expected_descriptor
485484

486485
# WHEN & THEN
487486
mock_get.return_value.ok = False

0 commit comments

Comments
 (0)