pyxetabase 3.1.0.dev2__tar.gz → 4.0.0.dev81__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pyxetabase might be problematic. Click here for more details.

Files changed (41) hide show
  1. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/PKG-INFO +1 -1
  2. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/commons.py +6 -6
  3. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/opencga_config.py +59 -8
  4. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/_parent_rest_clients.py +47 -13
  5. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/admin_client.py +15 -9
  6. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/clinical_analysis_client.py +17 -74
  7. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/cohort_client.py +11 -0
  8. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/disease_panel_client.py +6 -13
  9. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/file_client.py +13 -1
  10. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/job_client.py +20 -1
  11. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/meta_client.py +4 -3
  12. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/study_client.py +30 -1
  13. pyxetabase-4.0.0.dev81/pyxetabase/rest_clients/user_tool_client.py +471 -0
  14. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/variant_operation_client.py +26 -27
  15. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/workflow_client.py +1 -1
  16. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase.egg-info/PKG-INFO +1 -1
  17. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase.egg-info/SOURCES.txt +1 -0
  18. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/setup.py +1 -1
  19. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/LICENSE +0 -0
  20. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/README.rst +0 -0
  21. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/__init__.py +0 -0
  22. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/exceptions.py +0 -0
  23. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/opencga_client.py +0 -0
  24. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/__init__.py +0 -0
  25. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/alignment_client.py +0 -0
  26. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/cvdb_client.py +0 -0
  27. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/family_client.py +0 -0
  28. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/federation_client.py +0 -0
  29. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/ga4gh_client.py +0 -0
  30. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/individual_client.py +0 -0
  31. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/organization_client.py +0 -0
  32. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/project_client.py +0 -0
  33. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/sample_client.py +0 -0
  34. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/user_client.py +0 -0
  35. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_clients/variant_client.py +0 -0
  36. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/rest_response.py +0 -0
  37. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase/retry.py +0 -0
  38. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase.egg-info/dependency_links.txt +0 -0
  39. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase.egg-info/requires.txt +0 -0
  40. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/pyxetabase.egg-info/top_level.txt +0 -0
  41. {pyxetabase-3.1.0.dev2 → pyxetabase-4.0.0.dev81}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyxetabase
3
- Version: 3.1.0.dev2
3
+ Version: 4.0.0.dev81
4
4
  Summary: A REST client for OpenCGA enterprise REST web services
5
5
  Author: Daniel Perez-Gil
6
6
  Author-email: daniel.perez@zettagenomics.com
@@ -145,22 +145,22 @@ def _fetch(config, sid, category, resource, method, subcategory=None, query_id=N
145
145
  # Getting REST response
146
146
  if method == 'get':
147
147
  try:
148
- r = requests.get(url, headers=header, cookies=config.cookies)
148
+ r = requests.get(url, headers=header, cookies=config.cookies, verify=not config.tlsAllowInvalidCertificates)
149
149
  except requests.exceptions.ConnectionError:
150
150
  sleep(1)
151
- r = requests.get(url, headers=header, cookies=config.cookies)
151
+ r = requests.get(url, headers=header, cookies=config.cookies, verify=not config.tlsAllowInvalidCertificates)
152
152
  elif method == 'post':
153
153
  try:
154
- r = requests.post(url, json=data, headers=header, cookies=config.cookies)
154
+ r = requests.post(url, json=data, headers=header, cookies=config.cookies, verify=not config.tlsAllowInvalidCertificates)
155
155
  except requests.exceptions.ConnectionError:
156
156
  sleep(1)
157
- r = requests.post(url, json=data, headers=header, cookies=config.cookies)
157
+ r = requests.post(url, json=data, headers=header, cookies=config.cookies, verify=not config.tlsAllowInvalidCertificates)
158
158
  elif method == 'delete':
159
159
  try:
160
- r = requests.delete(url, headers=header, cookies=config.cookies)
160
+ r = requests.delete(url, headers=header, cookies=config.cookies, verify=not config.tlsAllowInvalidCertificates)
161
161
  except requests.exceptions.ConnectionError:
162
162
  sleep(1)
163
- r = requests.delete(url, headers=header, cookies=config.cookies)
163
+ r = requests.delete(url, headers=header, cookies=config.cookies, verify=not config.tlsAllowInvalidCertificates)
164
164
  else:
165
165
  raise NotImplementedError('method: ' + method + ' not implemented.')
166
166
 
@@ -37,12 +37,21 @@ class ClientConfiguration(object):
37
37
  return config_dict
38
38
 
39
39
  def get_sso_login_info(self):
40
+ # Checking if SSO login is specified
40
41
  if (('sso_login' in self._config and self._config['sso_login']) or
41
42
  ('cookies' in self._config and self._config['cookies'])):
42
- python_session_fhand = open(os.path.expanduser("~/.opencga/session.json"), 'r')
43
+
44
+ # Getting session file name
45
+ if 'name' in self._config['rest'] and self._config['rest']['name']:
46
+ host_name = self._config['rest']['name']
47
+ else:
48
+ host_name = 'opencga'
49
+ python_session_fhand = open(os.path.expanduser("~/.opencga/{}_session.json".format(host_name)), 'r')
50
+
51
+ # Loading info from session file
43
52
  session_info = json.loads(python_session_fhand.read())
44
53
  self._config['sso_login'] = True
45
- self._config['cookies'] = session_info['cookies']
54
+ self._config['cookies'] = session_info['attributes']['cookies']
46
55
  self._config['token'] = session_info['token']
47
56
 
48
57
  def _validate_configuration(self):
@@ -55,16 +64,46 @@ class ClientConfiguration(object):
55
64
  if 'host' not in self._config['rest'] or not self._config['rest']['host']:
56
65
  raise ValueError('Missing configuration field "host".')
57
66
 
58
- self._validate_host(self._config['rest']['host'])
67
+ self._validate_host()
59
68
 
60
- @staticmethod
61
- def _validate_host(host):
69
+ def _validate_host(self):
62
70
  try:
63
- r = requests.head(host, timeout=2)
71
+ r = requests.head(self.host, timeout=2, verify=not self.tlsAllowInvalidCertificates)
64
72
  if r.status_code == 302:
65
73
  return
74
+ except requests.exceptions.SSLError:
75
+ raise Exception('Invalid SSL certificate from "{}"'.format(self.host))
66
76
  except requests.ConnectionError:
67
- raise Exception('Unreachable host "{}"'.format(host))
77
+ raise Exception('Unreachable host "{}"'.format(self.host))
78
+
79
+ @property
80
+ def host(self):
81
+ return self._config['rest']['host']
82
+
83
+ @host.setter
84
+ def host(self, new_host):
85
+ self._config['rest']['host'] = new_host
86
+
87
+ @property
88
+ def tlsAllowInvalidCertificates(self):
89
+ if ('tlsAllowInvalidCertificates' in self._config['rest']
90
+ and self._config['rest']['tlsAllowInvalidCertificates'] is not None):
91
+ return self._config['rest']['tlsAllowInvalidCertificates']
92
+ else:
93
+ return False
94
+
95
+ @property
96
+ def version(self):
97
+ return self._config['version'] if 'version' in self._config else 'v2'
98
+
99
+ @property
100
+ def cookies(self):
101
+ if 'cookies' in self._config and self._config['cookies']:
102
+ python_session_fhand = open(os.path.expanduser("~/.opencga/python_session.json"), 'r')
103
+ session_info = json.loads(python_session_fhand.read())
104
+ return session_info['cookies']
105
+ else:
106
+ return None
68
107
 
69
108
  @property
70
109
  def configuration(self):
@@ -77,7 +116,19 @@ class ClientConfiguration(object):
77
116
  @host.setter
78
117
  def host(self, host):
79
118
  self._config['rest']['host'] = host
80
- self._validate_host(host)
119
+ self._validate_host()
120
+
121
+ @property
122
+ def tlsAllowInvalidCertificates(self):
123
+ if ('tlsAllowInvalidCertificates' in self._config['rest'] and
124
+ self._config['rest']['tlsAllowInvalidCertificates'] is not None):
125
+ return self._config['rest']['tlsAllowInvalidCertificates']
126
+ else:
127
+ return False
128
+
129
+ @tlsAllowInvalidCertificates.setter
130
+ def tlsAllowInvalidCertificates(self, tlsAllowInvalidCertificates):
131
+ self._config['rest']['tlsAllowInvalidCertificates'] = tlsAllowInvalidCertificates
81
132
 
82
133
  @property
83
134
  def version(self):
@@ -1,6 +1,7 @@
1
- import json
1
+ import os
2
+ import requests
2
3
 
3
- from pyxetabase.commons import execute
4
+ from pyxetabase.commons import execute, _create_rest_url, snake_to_camel_case
4
5
  from pyxetabase.rest_response import RestResponse
5
6
  from pyxetabase.retry import retry
6
7
 
@@ -87,18 +88,23 @@ class _ParentRestClient(object):
87
88
  def _post(self, category, resource, data=None, query_id=None, subcategory=None,
88
89
  second_query_id=None, **options):
89
90
  """Queries the REST service and returns the result"""
90
- if data is not None:
91
- return self._rest_retry(
92
- method='post', category=category, resource=resource, query_id=query_id,
93
- subcategory=subcategory, second_query_id=second_query_id,
94
- data=data, **options
95
- )
91
+ # Special treatment for the "/{apiVersion}/files/upload" endpoint
92
+ if category == 'files' and resource == 'upload':
93
+ response = self._upload(category=category, resource=resource, **options)
94
+ return RestResponse(response)
96
95
  else:
97
- return self._rest_retry(
98
- method='post', category=category, resource=resource, query_id=query_id,
99
- subcategory=subcategory, second_query_id=second_query_id,
100
- **options
101
- )
96
+ if data is not None:
97
+ return self._rest_retry(
98
+ method='post', category=category, resource=resource, query_id=query_id,
99
+ subcategory=subcategory, second_query_id=second_query_id,
100
+ data=data, **options
101
+ )
102
+ else:
103
+ return self._rest_retry(
104
+ method='post', category=category, resource=resource, query_id=query_id,
105
+ subcategory=subcategory, second_query_id=second_query_id,
106
+ **options
107
+ )
102
108
 
103
109
  def _delete(self, category, resource, query_id=None, subcategory=None,
104
110
  second_query_id=None, **options):
@@ -108,3 +114,31 @@ class _ParentRestClient(object):
108
114
  subcategory=subcategory, second_query_id=second_query_id,
109
115
  **options
110
116
  )
117
+
118
+ def _upload(self, category, resource, **options):
119
+ """Upload files"""
120
+
121
+ # Checking that the parameter file contains the file path to upload
122
+ if 'file' not in options or not isinstance(options['file'], str):
123
+ raise ValueError('To upload a file, please specify the file path as the "file" parameter.')
124
+
125
+ # Creating URL and headers
126
+ url, header = _create_rest_url(host=self._cfg.host, version=self._cfg.version, sid=self.token,
127
+ category=category, resource=resource, options=options)
128
+
129
+ # Creating data
130
+ data = {}
131
+ for k, v in options.items():
132
+ if k == 'file': # Param "file" is not included in data
133
+ continue
134
+ data[snake_to_camel_case(k)] = v
135
+
136
+ # Uploading
137
+ fpath = os.path.realpath(os.path.expanduser(options['file']))
138
+ with open(fpath, "rb") as f:
139
+ fhand = {"file": (fpath, f, "application/octet-stream")}
140
+ response = requests.post(url, headers=header, files=fhand, data=data or None)
141
+ if response.status_code != 200:
142
+ raise Exception(response.content)
143
+
144
+ return response.json()
@@ -27,7 +27,7 @@ class Admin(_ParentRestClient):
27
27
  :param str entity: Entity to be grouped by. Allowed values: ['AUDIT
28
28
  NOTE ORGANIZATION USER PROJECT STUDY FILE SAMPLE JOB INDIVIDUAL
29
29
  COHORT DISEASE_PANEL FAMILY CLINICAL_ANALYSIS INTERPRETATION
30
- VARIANT ALIGNMENT CLINICAL EXPRESSION RGA FUNCTIONAL WORKFLOW
30
+ VARIANT ALIGNMENT CLINICAL EXPRESSION RGA FUNCTIONAL EXTERNAL_TOOL
31
31
  RESOURCE'] (REQUIRED)
32
32
  :param str fields: Comma separated list of fields by which to group
33
33
  by. (REQUIRED)
@@ -54,16 +54,23 @@ class Admin(_ParentRestClient):
54
54
 
55
55
  return self._post(category='admin', resource='install', subcategory='catalog', data=data, **options)
56
56
 
57
- def jwt_catalog(self, data=None, **options):
57
+ def update_catalog_workspace(self, data=None, **options):
58
58
  """
59
- Change JWT secret key.
60
- PATH: /{apiVersion}/admin/catalog/jwt
59
+ Update the OpenCGA Catalog workspace.
60
+ PATH: /{apiVersion}/admin/catalog/workspace/update
61
61
 
62
- :param dict data: JSON containing the parameters. (REQUIRED)
63
- :param str organization: Organization id.
62
+ :param dict data: JSON containing the workspace parameters. (REQUIRED)
63
+ """
64
+
65
+ return self._post(category='admin', resource='update', subcategory='catalog/workspace', data=data, **options)
66
+
67
+ def list_organizations(self, **options):
68
+ """
69
+ List current Organizations.
70
+ PATH: /{apiVersion}/admin/organizations/list
64
71
  """
65
72
 
66
- return self._post(category='admin', resource='jwt', subcategory='catalog', data=data, **options)
73
+ return self._get(category='admin', resource='list', subcategory='organizations', **options)
67
74
 
68
75
  def fetch_resource(self, data=None, **options):
69
76
  """
@@ -147,8 +154,7 @@ class Admin(_ParentRestClient):
147
154
 
148
155
  def sync_users(self, data=None, **options):
149
156
  """
150
- Synchronise a group of users from an authentication origin with a
151
- group in a study from catalog.
157
+ [DEPRECATED] Moved to /users/sync.
152
158
  PATH: /{apiVersion}/admin/users/sync
153
159
 
154
160
  :param dict data: JSON containing the parameters. (REQUIRED)
@@ -350,32 +350,6 @@ class ClinicalAnalysis(_ParentRestClient):
350
350
 
351
351
  return self._get(category='analysis', resource='info', subcategory='clinical/interpretation', second_query_id=interpretations, **options)
352
352
 
353
- def run_interpreter_cancer_tiering(self, data=None, **options):
354
- """
355
- Run cancer tiering interpretation analysis.
356
- PATH: /{apiVersion}/analysis/clinical/interpreter/cancerTiering/run
357
-
358
- :param dict data: Cancer tiering interpretation analysis params.
359
- (REQUIRED)
360
- :param str study: Study [[organization@]project:]study where study and
361
- project can be either the ID or UUID.
362
- :param str job_id: Job ID. It must be a unique string within the
363
- study. An ID will be autogenerated automatically if not provided.
364
- :param str job_description: Job description.
365
- :param str job_depends_on: Comma separated list of existing job IDs
366
- the job will depend on.
367
- :param str job_tags: Job tags.
368
- :param str job_scheduled_start_time: Time when the job is scheduled to
369
- start.
370
- :param str job_priority: Priority of the job.
371
- :param bool job_dry_run: Flag indicating that the job will be executed
372
- in dry-run mode. In this mode, OpenCGA will validate that all
373
- parameters and prerequisites are correctly set for successful
374
- execution, but the job will not actually run.
375
- """
376
-
377
- return self._post(category='analysis', resource='run', subcategory='clinical/interpreter/cancerTiering', data=data, **options)
378
-
379
353
  def run_interpreter_exomiser(self, data=None, **options):
380
354
  """
381
355
  Run exomiser interpretation analysis.
@@ -401,62 +375,31 @@ class ClinicalAnalysis(_ParentRestClient):
401
375
 
402
376
  return self._post(category='analysis', resource='run', subcategory='clinical/interpreter/exomiser', data=data, **options)
403
377
 
404
- def run_interpreter_team(self, data=None, **options):
405
- """
406
- Run TEAM interpretation analysis.
407
- PATH: /{apiVersion}/analysis/clinical/interpreter/team/run
408
-
409
- :param dict data: TEAM interpretation analysis params. (REQUIRED)
410
- :param str study: Study [[organization@]project:]study where study and
411
- project can be either the ID or UUID.
412
- :param str job_id: Job ID. It must be a unique string within the
413
- study. An ID will be autogenerated automatically if not provided.
414
- :param str job_description: Job description.
415
- :param str job_depends_on: Comma separated list of existing job IDs
416
- the job will depend on.
417
- :param str job_tags: Job tags.
418
- :param str job_scheduled_start_time: Time when the job is scheduled to
419
- start.
420
- :param str job_priority: Priority of the job.
421
- :param bool job_dry_run: Flag indicating that the job will be executed
422
- in dry-run mode. In this mode, OpenCGA will validate that all
423
- parameters and prerequisites are correctly set for successful
424
- execution, but the job will not actually run.
425
- """
426
-
427
- return self._post(category='analysis', resource='run', subcategory='clinical/interpreter/team', data=data, **options)
428
-
429
- def run_interpreter_tiering(self, data=None, **options):
378
+ def rd_interpreter(self, **options):
430
379
  """
431
- Run tiering interpretation analysis.
432
- PATH: /{apiVersion}/analysis/clinical/interpreter/tiering/run
380
+ Rare disease interpretation analysis.
381
+ PATH: /{apiVersion}/analysis/clinical/interpreter/rd
433
382
 
434
- :param dict data: Tiering interpretation analysis params. (REQUIRED)
383
+ :param str clinical_analysis_id: Clinical analysis ID.
384
+ :param str proband_id: Proband ID.
385
+ :param str family_id: Family ID.
386
+ :param str panel_ids: List of panel IDs (separated by commas).
387
+ :param str disorder_id: Disorder ID.
388
+ :param str config_file: RD interpretation configuration file
389
+ (otherwise the default one will be used).
435
390
  :param str study: Study [[organization@]project:]study where study and
436
391
  project can be either the ID or UUID.
437
- :param str job_id: Job ID. It must be a unique string within the
438
- study. An ID will be autogenerated automatically if not provided.
439
- :param str job_description: Job description.
440
- :param str job_depends_on: Comma separated list of existing job IDs
441
- the job will depend on.
442
- :param str job_tags: Job tags.
443
- :param str job_scheduled_start_time: Time when the job is scheduled to
444
- start.
445
- :param str job_priority: Priority of the job.
446
- :param bool job_dry_run: Flag indicating that the job will be executed
447
- in dry-run mode. In this mode, OpenCGA will validate that all
448
- parameters and prerequisites are correctly set for successful
449
- execution, but the job will not actually run.
450
392
  """
451
393
 
452
- return self._post(category='analysis', resource='run', subcategory='clinical/interpreter/tiering', data=data, **options)
394
+ return self._get(category='analysis', resource='rd', subcategory='clinical/interpreter', **options)
453
395
 
454
- def run_interpreter_zetta(self, data=None, **options):
396
+ def run_interpreter_rd(self, data=None, **options):
455
397
  """
456
- Run Zetta interpretation analysis.
457
- PATH: /{apiVersion}/analysis/clinical/interpreter/zetta/run
398
+ Run interpretation analysis for rare diseases.
399
+ PATH: /{apiVersion}/analysis/clinical/interpreter/rd/run
458
400
 
459
- :param dict data: Zetta interpretation analysis params. (REQUIRED)
401
+ :param dict data: Parameters to execute the rare disease
402
+ interpretation analysis. (REQUIRED)
460
403
  :param str study: Study [[organization@]project:]study where study and
461
404
  project can be either the ID or UUID.
462
405
  :param str job_id: Job ID. It must be a unique string within the
@@ -474,7 +417,7 @@ class ClinicalAnalysis(_ParentRestClient):
474
417
  execution, but the job will not actually run.
475
418
  """
476
419
 
477
- return self._post(category='analysis', resource='run', subcategory='clinical/interpreter/zetta', data=data, **options)
420
+ return self._post(category='analysis', resource='run', subcategory='clinical/interpreter/rd', data=data, **options)
478
421
 
479
422
  def load(self, data=None, **options):
480
423
  """
@@ -61,6 +61,9 @@ class Cohort(_ParentRestClient):
61
61
  :param str status: status.
62
62
  :param str internal_status: internalStatus.
63
63
  :param str annotation: Cohort annotation.
64
+ :param str tags: Tags. Also admits basic regular expressions using the
65
+ operator '~', i.e. '~{perl-regex}' e.g. '~value' for case
66
+ sensitive, '~/value/i' for case insensitive search.
64
67
  :param str acl: acl.
65
68
  :param str samples: Cohort sample IDs.
66
69
  :param str num_samples: Number of samples.
@@ -137,6 +140,9 @@ class Cohort(_ParentRestClient):
137
140
  :param str uuid: Comma separated list of cohort IDs up to a maximum of
138
141
  100.
139
142
  :param str type: Cohort type.
143
+ :param str tags: Tags. Also admits basic regular expressions using the
144
+ operator '~', i.e. '~{perl-regex}' e.g. '~value' for case
145
+ sensitive, '~/value/i' for case insensitive search.
140
146
  :param str creation_date: creationDate.
141
147
  :param str modification_date: modificationDate.
142
148
  :param bool deleted: deleted.
@@ -223,6 +229,9 @@ class Cohort(_ParentRestClient):
223
229
  :param str uuid: Comma separated list of cohort IDs up to a maximum of
224
230
  100.
225
231
  :param str type: Cohort type.
232
+ :param str tags: Tags. Also admits basic regular expressions using the
233
+ operator '~', i.e. '~{perl-regex}' e.g. '~value' for case
234
+ sensitive, '~/value/i' for case insensitive search.
226
235
  :param str creation_date: creationDate.
227
236
  :param str modification_date: modificationDate.
228
237
  :param bool deleted: deleted.
@@ -303,6 +312,8 @@ class Cohort(_ParentRestClient):
303
312
  :param str annotation_sets_action: Action to be performed if the array
304
313
  of annotationSets is being updated. Allowed values: ['ADD SET
305
314
  REMOVE']
315
+ :param str tags_action: Action to be performed if the array of tags is
316
+ being updated. Allowed values: ['ADD SET REMOVE']
306
317
  :param bool include_result: Flag indicating to include the created or
307
318
  updated document result in the response.
308
319
  :param dict data: body.
@@ -190,21 +190,14 @@ class DiseasePanel(_ParentRestClient):
190
190
  Import panels.
191
191
  PATH: /{apiVersion}/panels/import
192
192
 
193
+ :param str include: Fields included in the response, whole JSON path
194
+ must be provided.
195
+ :param str exclude: Fields excluded in the response, whole JSON path
196
+ must be provided.
193
197
  :param str study: Study [[organization@]project:]study where study and
194
198
  project can be either the ID or UUID.
195
- :param str job_id: Job ID. It must be a unique string within the
196
- study. An ID will be autogenerated automatically if not provided.
197
- :param str job_depends_on: Comma separated list of existing job IDs
198
- the job will depend on.
199
- :param str job_description: Job description.
200
- :param str job_tags: Job tags.
201
- :param str job_scheduled_start_time: Time when the job is scheduled to
202
- start.
203
- :param str job_priority: Priority of the job.
204
- :param bool job_dry_run: Flag indicating that the job will be executed
205
- in dry-run mode. In this mode, OpenCGA will validate that all
206
- parameters and prerequisites are correctly set for successful
207
- execution, but the job will not actually run.
199
+ :param bool include_result: Flag indicating to include the created or
200
+ updated document result in the response.
208
201
  :param dict data: Panel parameters.
209
202
  """
210
203
 
@@ -420,7 +420,7 @@ class File(_ParentRestClient):
420
420
  MICROARRAY_EXPRESSION_TWOCHANNELS_GENEPIX DATAMATRIX_EXPRESSION
421
421
  IDLIST IDLIST_RANKED ANNOTATION_GENEVSANNOTATION OTHER_NEWICK
422
422
  OTHER_BLAST OTHER_INTERACTION OTHER_GENOTYPE OTHER_PLINK OTHER_VCF
423
- OTHER_PED VCF4 VARIANT ALIGNMENT COVERAGE SEQUENCE PEDIGREE
423
+ OTHER_PED VCF4 CVDB VARIANT ALIGNMENT COVERAGE SEQUENCE PEDIGREE
424
424
  REFERENCE_GENOME NONE UNKNOWN']
425
425
  :param str checksum: Expected MD5 file checksum.
426
426
  :param bool resource: Boolean field indicating whether the file is a
@@ -436,6 +436,18 @@ class File(_ParentRestClient):
436
436
 
437
437
  return self._post(category='files', resource='upload', **options)
438
438
 
439
+ def update_uri(self, data=None, **options):
440
+ """
441
+ Update URIs of files that have been manually moved in disk.
442
+ PATH: /{apiVersion}/files/uri/update
443
+
444
+ :param dict data: Parameters to modify. (REQUIRED)
445
+ :param str study: Study [[organization@]project:]study where study and
446
+ project can be either the ID or UUID.
447
+ """
448
+
449
+ return self._post(category='files', resource='update', subcategory='uri', data=data, **options)
450
+
439
451
  def acl(self, files, **options):
440
452
  """
441
453
  Return the acl defined for the file or folder. If member is provided,
@@ -56,6 +56,12 @@ class Job(_ParentRestClient):
56
56
  search.
57
57
  :param str tool_type: Tool type executed by the job [OPERATION,
58
58
  ANALYSIS].
59
+ :param str tool.minimum_requirements.queue: Queue where the job is
60
+ expected to be executed.
61
+ :param str tool.minimum_requirements.processor_type: Processor type
62
+ required to run the job. Allowed values: [CPU, GPU, FPGA].
63
+ :param str execution.queue.id: Queue id where the job has been
64
+ submitted to be executed.
59
65
  :param str user_id: User that created the job.
60
66
  :param str priority: Priority of the job.
61
67
  :param str status: Filter by status.
@@ -118,6 +124,12 @@ class Job(_ParentRestClient):
118
124
  search.
119
125
  :param str tool_type: Tool type executed by the job [OPERATION,
120
126
  ANALYSIS].
127
+ :param str tool.minimum_requirements.queue: Queue where the job is
128
+ expected to be executed.
129
+ :param str tool.minimum_requirements.processor_type: Processor type
130
+ required to run the job. Allowed values: [CPU, GPU, FPGA].
131
+ :param str execution.queue.id: Queue id where the job has been
132
+ submitted to be executed.
121
133
  :param str tool.external_executor.id: Id of the external executor.
122
134
  This field is only applicable for jobs executed by an external
123
135
  executor.
@@ -202,6 +214,12 @@ class Job(_ParentRestClient):
202
214
  search.
203
215
  :param str tool_type: Tool type executed by the job [OPERATION,
204
216
  ANALYSIS].
217
+ :param str tool.minimum_requirements.queue: Queue where the job is
218
+ expected to be executed.
219
+ :param str tool.minimum_requirements.processor_type: Processor type
220
+ required to run the job. Allowed values: [CPU, GPU, FPGA].
221
+ :param str execution.queue.id: Queue id where the job has been
222
+ submitted to be executed.
205
223
  :param str tool.external_executor.id: Id of the external executor.
206
224
  This field is only applicable for jobs executed by an external
207
225
  executor.
@@ -265,7 +283,8 @@ class Job(_ParentRestClient):
265
283
  Execute an analysis from a custom binary.
266
284
  PATH: /{apiVersion}/jobs/tool/run
267
285
 
268
- :param dict data: NextFlow run parameters. (REQUIRED)
286
+ :param dict data: Container image to be executed and its requirements.
287
+ (REQUIRED)
269
288
  :param str study: Study [[organization@]project:]study where study and
270
289
  project can be either the ID or UUID.
271
290
  :param str job_id: Job ID. It must be a unique string within the
@@ -55,15 +55,16 @@ class Meta(_ParentRestClient):
55
55
 
56
56
  return self._get(category='meta', resource='model', **options)
57
57
 
58
- def openapi(self, **options):
58
+ def openapi(self, url, **options):
59
59
  """
60
60
  Opencga openapi json.
61
61
  PATH: /{apiVersion}/meta/openapi
62
62
 
63
- :param str environment: Environment of the app.
64
- :param str host: Opencga host without environment.
63
+ :param str url: Opencga host with environment. (REQUIRED)
64
+ :param str study: Opencga study to be default in queries.
65
65
  """
66
66
 
67
+ options['url'] = url
67
68
  return self._get(category='meta', resource='openapi', **options)
68
69
 
69
70
  def ping(self, **options):
@@ -139,7 +139,8 @@ class Study(_ParentRestClient):
139
139
  :param str resource: Resource involved. Allowed values: ['AUDIT NOTE
140
140
  ORGANIZATION USER PROJECT STUDY FILE SAMPLE JOB INDIVIDUAL COHORT
141
141
  DISEASE_PANEL FAMILY CLINICAL_ANALYSIS INTERPRETATION VARIANT
142
- ALIGNMENT CLINICAL EXPRESSION RGA FUNCTIONAL WORKFLOW RESOURCE']
142
+ ALIGNMENT CLINICAL EXPRESSION RGA FUNCTIONAL EXTERNAL_TOOL
143
+ RESOURCE']
143
144
  :param str resource_id: Resource ID.
144
145
  :param str resource_uuid: resource UUID.
145
146
  :param str status: Filter by status. Allowed values: ['SUCCESS ERROR']
@@ -166,6 +167,19 @@ class Study(_ParentRestClient):
166
167
 
167
168
  return self._get(category='studies', resource='groups', query_id=study, **options)
168
169
 
170
+ def sync_groups(self, study, data=None, **options):
171
+ """
172
+ Associate a remote group from an authentication origin with a local
173
+ group in a study.
174
+ PATH: /{apiVersion}/studies/{study}/groups/sync
175
+
176
+ :param dict data: JSON containing the parameters. (REQUIRED)
177
+ :param str study: Study [[organization@]project:]study where study and
178
+ project can be either the ID or UUID. (REQUIRED)
179
+ """
180
+
181
+ return self._post(category='studies', resource='sync', query_id=study, subcategory='groups', data=data, **options)
182
+
169
183
  def update_groups(self, study, data=None, **options):
170
184
  """
171
185
  Add or remove a group.
@@ -386,6 +400,21 @@ class Study(_ParentRestClient):
386
400
 
387
401
  return self._post(category='studies', resource='update', query_id=study, data=data, **options)
388
402
 
403
+ def sync_users(self, study, authentication_origin_id, **options):
404
+ """
405
+ Synchronize all users from the remote groups of a given authentication
406
+ origin.
407
+ PATH: /{apiVersion}/studies/{study}/users/sync
408
+
409
+ :param str authentication_origin_id: Authentication origin ID.
410
+ (REQUIRED)
411
+ :param str study: Study [[organization@]project:]study where study and
412
+ project can be either the ID or UUID. (REQUIRED)
413
+ """
414
+
415
+ options['authenticationOriginId'] = authentication_origin_id
416
+ return self._post(category='studies', resource='sync', query_id=study, subcategory='users', **options)
417
+
389
418
  def variable_sets(self, study, **options):
390
419
  """
391
420
  Fetch variableSets from a study.
@@ -0,0 +1,471 @@
1
+ """
2
+ WARNING: AUTOGENERATED CODE
3
+
4
+ This code was generated by a tool.
5
+
6
+ Manual changes to this file may cause unexpected behavior in your application.
7
+ Manual changes to this file will be overwritten if the code is regenerated.
8
+ """
9
+
10
+ from pyxetabase.rest_clients._parent_rest_clients import _ParentRestClient
11
+
12
+
13
+ class UserTool(_ParentRestClient):
14
+ """
15
+ This class contains methods for the 'User Tools' webservices
16
+ PATH: /{apiVersion}/tools
17
+ """
18
+
19
+ def __init__(self, configuration, token=None, login_handler=None, *args, **kwargs):
20
+ super(UserTool, self).__init__(configuration, token, login_handler, *args, **kwargs)
21
+
22
+ def update_acl(self, members, action, data=None, **options):
23
+ """
24
+ Update the set of user tool permissions granted for the member.
25
+ PATH: /{apiVersion}/tools/acl/{members}/update
26
+
27
+ :param dict data: JSON containing the parameters to update the
28
+ permissions. (REQUIRED)
29
+ :param str action: Action to be performed [ADD, SET, REMOVE or RESET].
30
+ Allowed values: ['SET ADD REMOVE RESET'] (REQUIRED)
31
+ :param str members: Comma separated list of user or group ids.
32
+ (REQUIRED)
33
+ :param str study: Study [[organization@]project:]study where study and
34
+ project can be either the ID or UUID.
35
+ """
36
+
37
+ options['action'] = action
38
+ return self._post(category='tools', resource='update', subcategory='acl', second_query_id=members, data=data, **options)
39
+
40
+ def aggregation_stats(self, **options):
41
+ """
42
+ Fetch user tool stats.
43
+ PATH: /{apiVersion}/tools/aggregationStats
44
+
45
+ :param str study: Study [[organization@]project:]study where study and
46
+ project can be either the ID or UUID.
47
+ :param str id: Comma separated list of external tool IDs up to a
48
+ maximum of 100. Also admits basic regular expressions using the
49
+ operator '~', i.e. '~{perl-regex}' e.g. '~value' for case
50
+ sensitive, '~/value/i' for case insensitive search.
51
+ :param str name: Comma separated list of external tool names up to a
52
+ maximum of 100. Also admits basic regular expressions using the
53
+ operator '~', i.e. '~{perl-regex}' e.g. '~value' for case
54
+ sensitive, '~/value/i' for case insensitive search.
55
+ :param str uuid: Comma separated list of external tool UUIDs up to a
56
+ maximum of 100.
57
+ :param str tags: Comma separated list of tags.
58
+ :param bool draft: Boolean field indicating whether the workflow is a
59
+ draft or not.
60
+ :param str internal.registration_user_id: UserId that created the
61
+ workflow.
62
+ :param str type: External tool type. Allowed types: [CUSTOM_TOOL,
63
+ VARIANT_WALKER or WORKFLOW].
64
+ :param str scope: External tool scope. Allowed types:
65
+ [CLINICAL_INTERPRETATION, SECONDARY_ANALYSIS, RESEARCH or OTHER].
66
+ :param str workflow_repository_name: Workflow repository name.
67
+ :param str container_name: Container name.
68
+ :param str creation_date: Creation date. Format: yyyyMMddHHmmss.
69
+ Examples: >2018, 2017-2018, <201805.
70
+ :param str modification_date: Modification date. Format:
71
+ yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805.
72
+ :param str acl: Filter entries for which a user has the provided
73
+ permissions. Format: acl={user}:{permissions}. Example:
74
+ acl=john:WRITE,WRITE_ANNOTATIONS will return all entries for which
75
+ user john has both WRITE and WRITE_ANNOTATIONS permissions. Only
76
+ study owners or administrators can query by this field. .
77
+ :param str release: Release when it was created.
78
+ :param int snapshot: Snapshot value (Latest version of the entry in
79
+ the specified release).
80
+ :param bool deleted: Boolean to retrieve deleted entries.
81
+ :param str field: Field to apply aggregation statistics to (or a list
82
+ of fields separated by semicolons), e.g.:
83
+ studies;type;numSamples[0..10]:1;format:sum(size).
84
+ """
85
+
86
+ return self._get(category='tools', resource='aggregationStats', **options)
87
+
88
+ def run_custom_builder(self, data=None, **options):
89
+ """
90
+ Execute an analysis from a custom binary.
91
+ PATH: /{apiVersion}/tools/custom/builder/run
92
+
93
+ :param dict data: body. (REQUIRED)
94
+ :param str study: Study [[organization@]project:]study where study and
95
+ project can be either the ID or UUID.
96
+ :param str job_id: Job ID. It must be a unique string within the
97
+ study. An ID will be autogenerated automatically if not provided.
98
+ :param str job_description: Job description.
99
+ :param str job_depends_on: Comma separated list of existing job IDs
100
+ the job will depend on.
101
+ :param str job_tags: Job tags.
102
+ :param str job_scheduled_start_time: Time when the job is scheduled to
103
+ start.
104
+ :param str job_priority: Priority of the job.
105
+ :param bool job_dry_run: Flag indicating that the job will be executed
106
+ in dry-run mode. In this mode, OpenCGA will validate that all
107
+ parameters and prerequisites are correctly set for successful
108
+ execution, but the job will not actually run.
109
+ """
110
+
111
+ return self._post(category='tools', resource='run', subcategory='custom/builder', data=data, **options)
112
+
113
+ def create_custom(self, data=None, **options):
114
+ """
115
+ Register a new user tool of type CUSTOM_TOOL.
116
+ PATH: /{apiVersion}/tools/custom/create
117
+
118
+ :param dict data: JSON containing workflow information. (REQUIRED)
119
+ :param str include: Fields included in the response, whole JSON path
120
+ must be provided.
121
+ :param str exclude: Fields excluded in the response, whole JSON path
122
+ must be provided.
123
+ :param str study: Study [[organization@]project:]study where study and
124
+ project can be either the ID or UUID.
125
+ :param bool include_result: Flag indicating to include the created or
126
+ updated document result in the response.
127
+ """
128
+
129
+ return self._post(category='tools', resource='create', subcategory='custom', data=data, **options)
130
+
131
+ def run_custom_docker(self, data=None, **options):
132
+ """
133
+ Execute an analysis from a custom binary.
134
+ PATH: /{apiVersion}/tools/custom/run
135
+
136
+ :param dict data: Custom tool run parameters. (REQUIRED)
137
+ :param str study: Study [[organization@]project:]study where study and
138
+ project can be either the ID or UUID.
139
+ :param str job_id: Job ID. It must be a unique string within the
140
+ study. An ID will be autogenerated automatically if not provided.
141
+ :param str job_description: Job description.
142
+ :param str job_depends_on: Comma separated list of existing job IDs
143
+ the job will depend on.
144
+ :param str job_tags: Job tags.
145
+ :param str job_scheduled_start_time: Time when the job is scheduled to
146
+ start.
147
+ :param str job_priority: Priority of the job.
148
+ :param bool job_dry_run: Flag indicating that the job will be executed
149
+ in dry-run mode. In this mode, OpenCGA will validate that all
150
+ parameters and prerequisites are correctly set for successful
151
+ execution, but the job will not actually run.
152
+ """
153
+
154
+ return self._post(category='tools', resource='run', subcategory='custom', data=data, **options)
155
+
156
+ def update_custom(self, tool_id, data=None, **options):
157
+ """
158
+ Update some custom user tool attributes.
159
+ PATH: /{apiVersion}/tools/custom/{toolId}/update
160
+
161
+ :param str tool_id: Comma separated list of external tool IDs up to a
162
+ maximum of 100. Also admits basic regular expressions using the
163
+ operator '~', i.e. '~{perl-regex}' e.g. '~value' for case
164
+ sensitive, '~/value/i' for case insensitive search. (REQUIRED)
165
+ :param str include: Fields included in the response, whole JSON path
166
+ must be provided.
167
+ :param str exclude: Fields excluded in the response, whole JSON path
168
+ must be provided.
169
+ :param str study: Study [[organization@]project:]study where study and
170
+ project can be either the ID or UUID.
171
+ :param bool include_result: Flag indicating to include the created or
172
+ updated document result in the response.
173
+ :param dict data: body.
174
+ """
175
+
176
+ return self._post(category='tools', resource='update', subcategory='custom', second_query_id=tool_id, data=data, **options)
177
+
178
+ def distinct(self, field, **options):
179
+ """
180
+ User tool distinct method.
181
+ PATH: /{apiVersion}/tools/distinct
182
+
183
+ :param str field: Comma separated list of fields for which to obtain
184
+ the distinct values. (REQUIRED)
185
+ :param str study: Study [[organization@]project:]study where study and
186
+ project can be either the ID or UUID.
187
+ :param str id: Comma separated list of external tool IDs up to a
188
+ maximum of 100. Also admits basic regular expressions using the
189
+ operator '~', i.e. '~{perl-regex}' e.g. '~value' for case
190
+ sensitive, '~/value/i' for case insensitive search.
191
+ :param str name: Comma separated list of external tool names up to a
192
+ maximum of 100. Also admits basic regular expressions using the
193
+ operator '~', i.e. '~{perl-regex}' e.g. '~value' for case
194
+ sensitive, '~/value/i' for case insensitive search.
195
+ :param str uuid: Comma separated list of external tool UUIDs up to a
196
+ maximum of 100.
197
+ :param str tags: Comma separated list of tags.
198
+ :param bool draft: Boolean field indicating whether the workflow is a
199
+ draft or not.
200
+ :param str internal.registration_user_id: UserId that created the
201
+ workflow.
202
+ :param str type: External tool type. Allowed types: [CUSTOM_TOOL,
203
+ VARIANT_WALKER or WORKFLOW].
204
+ :param str scope: External tool scope. Allowed types:
205
+ [CLINICAL_INTERPRETATION, SECONDARY_ANALYSIS, RESEARCH or OTHER].
206
+ :param str workflow_repository_name: Workflow repository name.
207
+ :param str container_name: Container name.
208
+ :param str creation_date: Creation date. Format: yyyyMMddHHmmss.
209
+ Examples: >2018, 2017-2018, <201805.
210
+ :param str modification_date: Modification date. Format:
211
+ yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805.
212
+ :param str acl: Filter entries for which a user has the provided
213
+ permissions. Format: acl={user}:{permissions}. Example:
214
+ acl=john:WRITE,WRITE_ANNOTATIONS will return all entries for which
215
+ user john has both WRITE and WRITE_ANNOTATIONS permissions. Only
216
+ study owners or administrators can query by this field. .
217
+ :param str release: Release when it was created.
218
+ :param int snapshot: Snapshot value (Latest version of the entry in
219
+ the specified release).
220
+ :param bool deleted: Boolean to retrieve deleted entries.
221
+ """
222
+
223
+ options['field'] = field
224
+ return self._get(category='tools', resource='distinct', **options)
225
+
226
+ def search(self, **options):
227
+ """
228
+ User tool search method.
229
+ PATH: /{apiVersion}/tools/search
230
+
231
+ :param str include: Fields included in the response, whole JSON path
232
+ must be provided.
233
+ :param str exclude: Fields excluded in the response, whole JSON path
234
+ must be provided.
235
+ :param int limit: Number of results to be returned.
236
+ :param int skip: Number of results to skip.
237
+ :param bool count: Get the total number of results matching the query.
238
+ Deactivated by default.
239
+ :param str study: Study [[organization@]project:]study where study and
240
+ project can be either the ID or UUID.
241
+ :param str id: Comma separated list of external tool IDs up to a
242
+ maximum of 100. Also admits basic regular expressions using the
243
+ operator '~', i.e. '~{perl-regex}' e.g. '~value' for case
244
+ sensitive, '~/value/i' for case insensitive search.
245
+ :param str name: Comma separated list of external tool names up to a
246
+ maximum of 100. Also admits basic regular expressions using the
247
+ operator '~', i.e. '~{perl-regex}' e.g. '~value' for case
248
+ sensitive, '~/value/i' for case insensitive search.
249
+ :param str uuid: Comma separated list of external tool UUIDs up to a
250
+ maximum of 100.
251
+ :param str tags: Comma separated list of tags.
252
+ :param bool draft: Boolean field indicating whether the workflow is a
253
+ draft or not.
254
+ :param str internal.registration_user_id: UserId that created the
255
+ workflow.
256
+ :param str type: External tool type. Allowed types: [CUSTOM_TOOL,
257
+ VARIANT_WALKER or WORKFLOW].
258
+ :param str scope: External tool scope. Allowed types:
259
+ [CLINICAL_INTERPRETATION, SECONDARY_ANALYSIS, RESEARCH or OTHER].
260
+ :param str workflow_repository_name: Workflow repository name.
261
+ :param str container_name: Container name.
262
+ :param str creation_date: Creation date. Format: yyyyMMddHHmmss.
263
+ Examples: >2018, 2017-2018, <201805.
264
+ :param str modification_date: Modification date. Format:
265
+ yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805.
266
+ :param str acl: Filter entries for which a user has the provided
267
+ permissions. Format: acl={user}:{permissions}. Example:
268
+ acl=john:WRITE,WRITE_ANNOTATIONS will return all entries for which
269
+ user john has both WRITE and WRITE_ANNOTATIONS permissions. Only
270
+ study owners or administrators can query by this field. .
271
+ :param str release: Release when it was created.
272
+ :param int snapshot: Snapshot value (Latest version of the entry in
273
+ the specified release).
274
+ :param bool deleted: Boolean to retrieve deleted entries.
275
+ """
276
+
277
+ return self._get(category='tools', resource='search', **options)
278
+
279
+ def create_walker(self, data=None, **options):
280
+ """
281
+ Register a new user tool of type VARIANT_WALKER.
282
+ PATH: /{apiVersion}/tools/walker/create
283
+
284
+ :param dict data: JSON containing workflow information. (REQUIRED)
285
+ :param str include: Fields included in the response, whole JSON path
286
+ must be provided.
287
+ :param str exclude: Fields excluded in the response, whole JSON path
288
+ must be provided.
289
+ :param str study: Study [[organization@]project:]study where study and
290
+ project can be either the ID or UUID.
291
+ :param bool include_result: Flag indicating to include the created or
292
+ updated document result in the response.
293
+ """
294
+
295
+ return self._post(category='tools', resource='create', subcategory='walker', data=data, **options)
296
+
297
+ def run_walker(self, data=None, **options):
298
+ """
299
+ Execute an analysis from a custom binary.
300
+ PATH: /{apiVersion}/tools/walker/run
301
+
302
+ :param dict data: Variant walker params. (REQUIRED)
303
+ :param str project: Project [organization@]project where project can
304
+ be either the ID or the alias.
305
+ :param str study: Study [[organization@]project:]study where study and
306
+ project can be either the ID or UUID.
307
+ :param str job_id: Job ID. It must be a unique string within the
308
+ study. An ID will be autogenerated automatically if not provided.
309
+ :param str job_description: Job description.
310
+ :param str job_depends_on: Comma separated list of existing job IDs
311
+ the job will depend on.
312
+ :param str job_tags: Job tags.
313
+ :param str job_scheduled_start_time: Time when the job is scheduled to
314
+ start.
315
+ :param str job_priority: Priority of the job.
316
+ :param bool job_dry_run: Flag indicating that the job will be executed
317
+ in dry-run mode. In this mode, OpenCGA will validate that all
318
+ parameters and prerequisites are correctly set for successful
319
+ execution, but the job will not actually run.
320
+ """
321
+
322
+ return self._post(category='tools', resource='run', subcategory='walker', data=data, **options)
323
+
324
+ def update_walker(self, tool_id, data=None, **options):
325
+ """
326
+ Update some variant walker tool attributes.
327
+ PATH: /{apiVersion}/tools/walker/{toolId}/update
328
+
329
+ :param str tool_id: Comma separated list of external tool IDs up to a
330
+ maximum of 100. Also admits basic regular expressions using the
331
+ operator '~', i.e. '~{perl-regex}' e.g. '~value' for case
332
+ sensitive, '~/value/i' for case insensitive search. (REQUIRED)
333
+ :param str include: Fields included in the response, whole JSON path
334
+ must be provided.
335
+ :param str exclude: Fields excluded in the response, whole JSON path
336
+ must be provided.
337
+ :param str study: Study [[organization@]project:]study where study and
338
+ project can be either the ID or UUID.
339
+ :param bool include_result: Flag indicating to include the created or
340
+ updated document result in the response.
341
+ :param dict data: body.
342
+ """
343
+
344
+ return self._post(category='tools', resource='update', subcategory='walker', second_query_id=tool_id, data=data, **options)
345
+
346
+ def create_workflow(self, data=None, **options):
347
+ """
348
+ Register a new user tool of type WORKFLOW.
349
+ PATH: /{apiVersion}/tools/workflow/create
350
+
351
+ :param dict data: JSON containing workflow information. (REQUIRED)
352
+ :param str include: Fields included in the response, whole JSON path
353
+ must be provided.
354
+ :param str exclude: Fields excluded in the response, whole JSON path
355
+ must be provided.
356
+ :param str study: Study [[organization@]project:]study where study and
357
+ project can be either the ID or UUID.
358
+ :param bool include_result: Flag indicating to include the created or
359
+ updated document result in the response.
360
+ """
361
+
362
+ return self._post(category='tools', resource='create', subcategory='workflow', data=data, **options)
363
+
364
+ def import_workflow(self, data=None, **options):
365
+ """
366
+ Import a user tool of type WORKFLOW.
367
+ PATH: /{apiVersion}/tools/workflow/import
368
+
369
+ :param dict data: Repository parameters. (REQUIRED)
370
+ :param str study: Study [[organization@]project:]study where study and
371
+ project can be either the ID or UUID.
372
+ """
373
+
374
+ return self._post(category='tools', resource='import', subcategory='workflow', data=data, **options)
375
+
376
+ def run_workflow(self, data=None, **options):
377
+ """
378
+ Run a user tool of type WORKFLOW.
379
+ PATH: /{apiVersion}/tools/workflow/run
380
+
381
+ :param dict data: Workflow tool run parameters. (REQUIRED)
382
+ :param str study: Study [[organization@]project:]study where study and
383
+ project can be either the ID or UUID.
384
+ :param str job_id: Job ID. It must be a unique string within the
385
+ study. An ID will be autogenerated automatically if not provided.
386
+ :param str job_description: Job description.
387
+ :param str job_depends_on: Comma separated list of existing job IDs
388
+ the job will depend on.
389
+ :param str job_tags: Job tags.
390
+ :param str job_scheduled_start_time: Time when the job is scheduled to
391
+ start.
392
+ :param str job_priority: Priority of the job.
393
+ :param bool job_dry_run: Flag indicating that the job will be executed
394
+ in dry-run mode. In this mode, OpenCGA will validate that all
395
+ parameters and prerequisites are correctly set for successful
396
+ execution, but the job will not actually run.
397
+ """
398
+
399
+ return self._post(category='tools', resource='run', subcategory='workflow', data=data, **options)
400
+
401
+ def update_workflow(self, tool_id, data=None, **options):
402
+ """
403
+ Update some user tool attributes.
404
+ PATH: /{apiVersion}/tools/workflow/{toolId}/update
405
+
406
+ :param str tool_id: Comma separated list of external tool IDs up to a
407
+ maximum of 100. Also admits basic regular expressions using the
408
+ operator '~', i.e. '~{perl-regex}' e.g. '~value' for case
409
+ sensitive, '~/value/i' for case insensitive search. (REQUIRED)
410
+ :param str include: Fields included in the response, whole JSON path
411
+ must be provided.
412
+ :param str exclude: Fields excluded in the response, whole JSON path
413
+ must be provided.
414
+ :param str study: Study [[organization@]project:]study where study and
415
+ project can be either the ID or UUID.
416
+ :param bool include_result: Flag indicating to include the created or
417
+ updated document result in the response.
418
+ :param dict data: body.
419
+ """
420
+
421
+ return self._post(category='tools', resource='update', subcategory='workflow', second_query_id=tool_id, data=data, **options)
422
+
423
+ def acl(self, tools, **options):
424
+ """
425
+ Returns the acl of the user tools. If member is provided, it will only
426
+ return the acl for the member.
427
+ PATH: /{apiVersion}/tools/{tools}/acl
428
+
429
+ :param str tools: Comma separated of external tool ids. (REQUIRED)
430
+ :param str study: Study [[organization@]project:]study where study and
431
+ project can be either the ID or UUID.
432
+ :param str member: User or group id.
433
+ :param bool silent: Boolean to retrieve all possible entries that are
434
+ queried for, false to raise an exception whenever one of the
435
+ entries looked for cannot be shown for whichever reason.
436
+ """
437
+
438
+ return self._get(category='tools', resource='acl', query_id=tools, **options)
439
+
440
+ def delete(self, tools, **options):
441
+ """
442
+ Delete user tools.
443
+ PATH: /{apiVersion}/tools/{tools}/delete
444
+
445
+ :param str tools: Comma separated of external tool ids. (REQUIRED)
446
+ :param str study: Study [[organization@]project:]study where study and
447
+ project can be either the ID or UUID.
448
+ """
449
+
450
+ return self._delete(category='tools', resource='delete', query_id=tools, **options)
451
+
452
+ def info(self, tools, **options):
453
+ """
454
+ Get user tool information.
455
+ PATH: /{apiVersion}/tools/{tools}/info
456
+
457
+ :param str tools: Comma separated of external tool ids. (REQUIRED)
458
+ :param str include: Fields included in the response, whole JSON path
459
+ must be provided.
460
+ :param str exclude: Fields excluded in the response, whole JSON path
461
+ must be provided.
462
+ :param str study: Study [[organization@]project:]study where study and
463
+ project can be either the ID or UUID.
464
+ :param str version: Comma separated list of external tool versions.
465
+ 'all' to get all the external tool versions. Not supported if
466
+ multiple external tool ids are provided.
467
+ :param bool deleted: Boolean to retrieve deleted entries.
468
+ """
469
+
470
+ return self._get(category='tools', resource='info', query_id=tools, **options)
471
+
@@ -86,6 +86,32 @@ class VariantOperation(_ParentRestClient):
86
86
 
87
87
  return self._delete(category='operation', resource='delete', subcategory='variant/annotation', **options)
88
88
 
89
+ def variant_annotation_extension_configure(self, data=None, **options):
90
+ """
91
+ Install a variant annotation extension and configure the project to
92
+ use it.
93
+ PATH: /{apiVersion}/operation/variant/annotation/extension/configure
94
+
95
+ :param str job_id: Job ID. It must be a unique string within the
96
+ study. An ID will be autogenerated automatically if not provided.
97
+ :param str job_description: Job description.
98
+ :param str job_depends_on: Comma separated list of existing job IDs
99
+ the job will depend on.
100
+ :param str job_tags: Job tags.
101
+ :param str job_scheduled_start_time: Time when the job is scheduled to
102
+ start.
103
+ :param str job_priority: Priority of the job.
104
+ :param bool job_dry_run: Flag indicating that the job will be executed
105
+ in dry-run mode. In this mode, OpenCGA will validate that all
106
+ parameters and prerequisites are correctly set for successful
107
+ execution, but the job will not actually run.
108
+ :param str project: project.
109
+ :param dict data: Parameters to configure a variant annotation
110
+ extension.
111
+ """
112
+
113
+ return self._post(category='operation', resource='configure', subcategory='variant/annotation/extension', data=data, **options)
114
+
89
115
  def index_variant_annotation(self, data=None, **options):
90
116
  """
91
117
  Create and load variant annotations into the database.
@@ -601,33 +627,6 @@ class VariantOperation(_ParentRestClient):
601
627
 
602
628
  return self._post(category='operation', resource='secondaryIndex', subcategory='variant', data=data, **options)
603
629
 
604
- def delete_variant_secondary_index(self, **options):
605
- """
606
- Remove a secondary index from the search engine for a specific set of
607
- samples.
608
- PATH: /{apiVersion}/operation/variant/secondaryIndex/delete
609
-
610
- :param str job_id: Job ID. It must be a unique string within the
611
- study. An ID will be autogenerated automatically if not provided.
612
- :param str job_description: Job description.
613
- :param str job_depends_on: Comma separated list of existing job IDs
614
- the job will depend on.
615
- :param str job_tags: Job tags.
616
- :param str job_scheduled_start_time: Time when the job is scheduled to
617
- start.
618
- :param str job_priority: Priority of the job.
619
- :param bool job_dry_run: Flag indicating that the job will be executed
620
- in dry-run mode. In this mode, OpenCGA will validate that all
621
- parameters and prerequisites are correctly set for successful
622
- execution, but the job will not actually run.
623
- :param str study: Study [[organization@]project:]study where study and
624
- project can be either the ID or UUID.
625
- :param str samples: Samples to remove. Needs to provide all the
626
- samples in the secondary index.
627
- """
628
-
629
- return self._delete(category='operation', resource='delete', subcategory='variant/secondaryIndex', **options)
630
-
631
630
  def setup_variant(self, data=None, **options):
632
631
  """
633
632
  Execute Variant Setup to allow using the variant engine. This setup is
@@ -118,7 +118,7 @@ class Workflow(_ParentRestClient):
118
118
  Execute a workflow analysis.
119
119
  PATH: /{apiVersion}/workflows/run
120
120
 
121
- :param dict data: NextFlow run parameters. (REQUIRED)
121
+ :param dict data: Workflow tool run parameters. (REQUIRED)
122
122
  :param str study: Study [[organization@]project:]study where study and
123
123
  project can be either the ID or UUID.
124
124
  :param str job_id: Job ID. It must be a unique string within the
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyxetabase
3
- Version: 3.1.0.dev2
3
+ Version: 4.0.0.dev81
4
4
  Summary: A REST client for OpenCGA enterprise REST web services
5
5
  Author: Daniel Perez-Gil
6
6
  Author-email: daniel.perez@zettagenomics.com
@@ -33,6 +33,7 @@ pyxetabase/rest_clients/project_client.py
33
33
  pyxetabase/rest_clients/sample_client.py
34
34
  pyxetabase/rest_clients/study_client.py
35
35
  pyxetabase/rest_clients/user_client.py
36
+ pyxetabase/rest_clients/user_tool_client.py
36
37
  pyxetabase/rest_clients/variant_client.py
37
38
  pyxetabase/rest_clients/variant_operation_client.py
38
39
  pyxetabase/rest_clients/workflow_client.py
@@ -14,7 +14,7 @@ with open(path.join(here, 'README.rst'), encoding='utf-8') as f:
14
14
 
15
15
  setup(
16
16
  name='pyxetabase',
17
- version='3.1.0.dev2',
17
+ version='4.0.0.dev81',
18
18
  description='A REST client for OpenCGA enterprise REST web services',
19
19
  long_description=long_description,
20
20
  long_description_content_type='text/x-rst',