pybioos 0.0.15__py3-none-any.whl → 0.0.19__py3-none-any.whl
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.
- bioos/__about__.py +1 -1
- bioos/bioos.py +32 -7
- bioos/bioos_workflow.py +99 -8
- bioos/bw_import.py +5 -24
- bioos/bw_import_status_check.py +7 -2
- bioos/bw_status_check.py +7 -2
- bioos/config.py +4 -1
- bioos/get_submission_logs.py +7 -2
- bioos/resource/__init__.py +1 -1
- bioos/resource/iesapp.py +806 -0
- bioos/resource/workflows.py +273 -6
- bioos/resource/workspaces.py +140 -0
- bioos/service/BioOsService.py +103 -0
- bioos/workflow_info.py +207 -0
- {pybioos-0.0.15.dist-info → pybioos-0.0.19.dist-info}/METADATA +1 -1
- {pybioos-0.0.15.dist-info → pybioos-0.0.19.dist-info}/RECORD +20 -18
- {pybioos-0.0.15.dist-info → pybioos-0.0.19.dist-info}/LICENSE +0 -0
- {pybioos-0.0.15.dist-info → pybioos-0.0.19.dist-info}/WHEEL +0 -0
- {pybioos-0.0.15.dist-info → pybioos-0.0.19.dist-info}/entry_points.txt +0 -0
- {pybioos-0.0.15.dist-info → pybioos-0.0.19.dist-info}/top_level.txt +0 -0
bioos/__about__.py
CHANGED
bioos/bioos.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from pandas import DataFrame
|
|
2
2
|
from volcengine.const.Const import REGION_CN_NORTH1
|
|
3
3
|
|
|
4
|
-
from bioos.config import Config
|
|
4
|
+
from bioos.config import Config,DEFAULT_ENDPOINT
|
|
5
5
|
from bioos.resource.utility import UtilityResource
|
|
6
6
|
from bioos.resource.workspaces import Workspace
|
|
7
7
|
|
|
@@ -20,9 +20,9 @@ def status() -> Config.LoginInfo:
|
|
|
20
20
|
return Config.login_info()
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
def login(
|
|
24
|
-
access_key: str,
|
|
23
|
+
def login(access_key: str,
|
|
25
24
|
secret_key: str,
|
|
25
|
+
endpoint: str = DEFAULT_ENDPOINT,
|
|
26
26
|
region: str = REGION_CN_NORTH1) -> bool:
|
|
27
27
|
"""Login to the given endpoint using specified account and password.
|
|
28
28
|
|
|
@@ -35,14 +35,16 @@ def login(endpoint: str,
|
|
|
35
35
|
*Example*:
|
|
36
36
|
::
|
|
37
37
|
|
|
38
|
-
bioos.login(
|
|
38
|
+
bioos.login(access_key="xxxxxxxx", secret_key="xxxxxxxx")
|
|
39
|
+
# or specify endpoint explicitly:
|
|
40
|
+
bioos.login(access_key="xxxxxxxx", secret_key="xxxxxxxx", endpoint="https://cloud.xxxxx.xxx.cn")
|
|
39
41
|
|
|
40
|
-
:param endpoint: The environment to be logged in
|
|
41
|
-
:type endpoint: str
|
|
42
42
|
:param access_key: The specified account's access key
|
|
43
43
|
:type access_key: str
|
|
44
44
|
:param secret_key: Corresponding secret key of the access key
|
|
45
45
|
:type secret_key: str
|
|
46
|
+
:param endpoint: The environment to be logged in (optional, defaults to Config._endpoint)
|
|
47
|
+
:type endpoint: str
|
|
46
48
|
:param region: The region to be logged in
|
|
47
49
|
:type region: str
|
|
48
50
|
:return: Login result
|
|
@@ -50,7 +52,8 @@ def login(endpoint: str,
|
|
|
50
52
|
"""
|
|
51
53
|
Config.set_access_key(access_key)
|
|
52
54
|
Config.set_secret_key(secret_key)
|
|
53
|
-
|
|
55
|
+
if endpoint is not None:
|
|
56
|
+
Config.set_endpoint(endpoint)
|
|
54
57
|
Config.set_region(region)
|
|
55
58
|
return Config.login_info().login_status == "Already logged in"
|
|
56
59
|
|
|
@@ -70,6 +73,28 @@ def list_workspaces() -> DataFrame:
|
|
|
70
73
|
}).get("Items"))
|
|
71
74
|
|
|
72
75
|
|
|
76
|
+
def create_workspace(name: str, description: str) -> dict:
|
|
77
|
+
"""Creates a new workspace in the login environment.
|
|
78
|
+
|
|
79
|
+
*Example*:
|
|
80
|
+
::
|
|
81
|
+
|
|
82
|
+
bioos.create_workspace(name="My Workspace", description="This is my new workspace")
|
|
83
|
+
|
|
84
|
+
:param name: Name of the workspace to create
|
|
85
|
+
:type name: str
|
|
86
|
+
:param description: Description of the workspace
|
|
87
|
+
:type description: str
|
|
88
|
+
:return: Creation result containing workspace information
|
|
89
|
+
:rtype: dict
|
|
90
|
+
"""
|
|
91
|
+
params = {
|
|
92
|
+
"Name": name,
|
|
93
|
+
"Description": description
|
|
94
|
+
}
|
|
95
|
+
return Config.service().create_workspace(params)
|
|
96
|
+
|
|
97
|
+
|
|
73
98
|
def workspace(id_: str) -> Workspace: # 这里是workspace的入口
|
|
74
99
|
"""Returns the workspace for the given name .
|
|
75
100
|
|
bioos/bioos_workflow.py
CHANGED
|
@@ -4,11 +4,77 @@ import logging
|
|
|
4
4
|
import os
|
|
5
5
|
import re
|
|
6
6
|
import time
|
|
7
|
+
from typing import Dict, Any
|
|
7
8
|
|
|
8
9
|
import pandas as pd
|
|
9
10
|
|
|
10
11
|
from bioos import bioos
|
|
11
12
|
from bioos.errors import NotFoundError, ParameterError
|
|
13
|
+
from bioos.config import DEFAULT_ENDPOINT
|
|
14
|
+
|
|
15
|
+
def uniquify_columns(cols: list[str]) -> list[str]:
|
|
16
|
+
seen, out = {}, []
|
|
17
|
+
for col in cols:
|
|
18
|
+
base = col.split(".")[-1]
|
|
19
|
+
if base not in seen:
|
|
20
|
+
seen[base] = 0
|
|
21
|
+
out.append(base)
|
|
22
|
+
else:
|
|
23
|
+
seen[base] += 1
|
|
24
|
+
out.append(f"{base}_{seen[base]}") # fastq → fastq_1 → fastq_2
|
|
25
|
+
return out
|
|
26
|
+
|
|
27
|
+
def handle_null_values(input_dict):
|
|
28
|
+
"""
|
|
29
|
+
处理输入字典中的null值,避免在通过pybioos后台传输时引发错误。
|
|
30
|
+
|
|
31
|
+
Args:
|
|
32
|
+
input_dict: 输入的字典,可能包含null值
|
|
33
|
+
|
|
34
|
+
Returns:
|
|
35
|
+
处理后的字典,null值已被适当处理
|
|
36
|
+
"""
|
|
37
|
+
if not isinstance(input_dict, dict):
|
|
38
|
+
return input_dict
|
|
39
|
+
|
|
40
|
+
result = {}
|
|
41
|
+
for key, value in input_dict.items():
|
|
42
|
+
if value is None:
|
|
43
|
+
|
|
44
|
+
key_lower = key.lower()
|
|
45
|
+
|
|
46
|
+
# 明显的文件路径或字符串相关
|
|
47
|
+
if any(keyword in key_lower for keyword in ["file", "path", "dir", "name", "str", "text", "url", "uri"]):
|
|
48
|
+
result[key] = ""
|
|
49
|
+
# 明显的数字相关
|
|
50
|
+
elif any(keyword in key_lower for keyword in ["num", "count", "size", "int", "float", "length", "depth", "width", "height"]):
|
|
51
|
+
continue
|
|
52
|
+
# 布尔值相关
|
|
53
|
+
elif any(keyword in key_lower for keyword in ["flag", "bool", "enable", "disable", "is_", "has_"]):
|
|
54
|
+
continue
|
|
55
|
+
# 数组或列表相关
|
|
56
|
+
elif any(keyword in key_lower for keyword in ["list", "array", "items", "samples"]):
|
|
57
|
+
# 对于数组,null通常表示空数组
|
|
58
|
+
result[key] = []
|
|
59
|
+
else:
|
|
60
|
+
# 默认情况下,替换为空字符串,因为这是最安全的处理方式
|
|
61
|
+
result[key] = ""
|
|
62
|
+
elif isinstance(value, dict):
|
|
63
|
+
result[key] = handle_null_values(value)
|
|
64
|
+
elif isinstance(value, list):
|
|
65
|
+
processed_list = []
|
|
66
|
+
for item in value:
|
|
67
|
+
if isinstance(item, dict):
|
|
68
|
+
processed_list.append(handle_null_values(item))
|
|
69
|
+
elif item is None:
|
|
70
|
+
continue
|
|
71
|
+
else:
|
|
72
|
+
processed_list.append(item)
|
|
73
|
+
result[key] = processed_list
|
|
74
|
+
else:
|
|
75
|
+
result[key] = value
|
|
76
|
+
|
|
77
|
+
return result
|
|
12
78
|
|
|
13
79
|
|
|
14
80
|
def recognize_files_from_input_json(workflow_input_json: dict) -> dict:
|
|
@@ -121,6 +187,8 @@ class Bioos_workflow:
|
|
|
121
187
|
# 处理provision,更新inputs_list
|
|
122
188
|
inputs_list_update = []
|
|
123
189
|
for input_dict in inputs_list:
|
|
190
|
+
# 处理null值
|
|
191
|
+
input_dict = handle_null_values(input_dict)
|
|
124
192
|
input_dict_update = self.input_provision(input_dict,
|
|
125
193
|
force_reupload)
|
|
126
194
|
inputs_list_update.append(input_dict_update)
|
|
@@ -165,12 +233,19 @@ class Bioos_workflow:
|
|
|
165
233
|
data_model_name: str = "dm",
|
|
166
234
|
submission_desc: str = "Submit by pybioos",
|
|
167
235
|
call_caching: bool = True,
|
|
168
|
-
force_reupload: bool = False
|
|
236
|
+
force_reupload: bool = False,
|
|
237
|
+
mount_tos: bool = False):
|
|
169
238
|
if not os.path.isfile(input_json_file):
|
|
170
239
|
raise ParameterError('Input_json_file is not found.')
|
|
240
|
+
#给每一个data_model加一个uuid,保证不重复
|
|
241
|
+
if data_model_name == "dm":
|
|
242
|
+
data_model_name = f"dm_{int(time.time())}"
|
|
171
243
|
|
|
172
244
|
input_json = json.load(open(input_json_file))
|
|
173
245
|
self.logger.info("Load json input successfully.")
|
|
246
|
+
|
|
247
|
+
# 处理null值
|
|
248
|
+
input_json = handle_null_values(input_json)
|
|
174
249
|
|
|
175
250
|
# putative files
|
|
176
251
|
input_json_str = json.dumps(input_json)
|
|
@@ -213,6 +288,7 @@ class Bioos_workflow:
|
|
|
213
288
|
"outputs": "{}",
|
|
214
289
|
"submission_desc": submission_desc,
|
|
215
290
|
"call_caching": call_caching,
|
|
291
|
+
"mount_tos": mount_tos,
|
|
216
292
|
}
|
|
217
293
|
|
|
218
294
|
# if the input json is a batch or singleton submission
|
|
@@ -231,7 +307,8 @@ class Bioos_workflow:
|
|
|
231
307
|
df[id_col] = [f"tmp_{x}" for x in list(range(len(df)))]
|
|
232
308
|
df = df.reindex(columns=columns)
|
|
233
309
|
columns = [key.split(".")[-1] for key in df.columns.to_list()]
|
|
234
|
-
df.columns = pd.Index(columns)
|
|
310
|
+
#df.columns = pd.Index(columns)
|
|
311
|
+
df.columns = pd.Index(uniquify_columns(df.columns.to_list()))
|
|
235
312
|
|
|
236
313
|
# write data models
|
|
237
314
|
self.ws.data_models.write({data_model_name: df.applymap(str)},
|
|
@@ -243,6 +320,7 @@ class Bioos_workflow:
|
|
|
243
320
|
for key, _ in unupdate_dict.items():
|
|
244
321
|
unupdate_dict[key] = f'this.{key.split(".")[-1]}'
|
|
245
322
|
|
|
323
|
+
|
|
246
324
|
self.params_submit["inputs"] = json.dumps(unupdate_dict)
|
|
247
325
|
self.params_submit["data_model_name"] = data_model_name
|
|
248
326
|
self.params_submit["row_ids"] = df[id_col].to_list()
|
|
@@ -254,7 +332,7 @@ class Bioos_workflow:
|
|
|
254
332
|
self.logger.info("Build params dict successfully.")
|
|
255
333
|
return self.params_submit
|
|
256
334
|
|
|
257
|
-
def postprocess(self, download=False):
|
|
335
|
+
def postprocess(self, download=False,download_dir="."):
|
|
258
336
|
# 假设全部执行完毕
|
|
259
337
|
# 对运行完成的目录进行下载
|
|
260
338
|
# 证实bioos包只能对文件的list进行下载,不支持文件夹
|
|
@@ -268,9 +346,10 @@ class Bioos_workflow:
|
|
|
268
346
|
|
|
269
347
|
files.append(file)
|
|
270
348
|
|
|
271
|
-
if download:
|
|
349
|
+
if download and files:
|
|
350
|
+
os.makedirs(download_dir, exist_ok=True)
|
|
272
351
|
try:
|
|
273
|
-
self.ws.files.download(files,
|
|
352
|
+
self.ws.files.download(files, download_dir, flatten=False)
|
|
274
353
|
except Exception as e:
|
|
275
354
|
print(f'Some file can not download. \n {e}')
|
|
276
355
|
|
|
@@ -305,7 +384,7 @@ def bioos_workflow():
|
|
|
305
384
|
parser.add_argument("--endpoint",
|
|
306
385
|
type=str,
|
|
307
386
|
help="Bio-OS instance platform endpoint",
|
|
308
|
-
default=
|
|
387
|
+
default=DEFAULT_ENDPOINT)
|
|
309
388
|
parser.add_argument(
|
|
310
389
|
"--ak",
|
|
311
390
|
type=str,
|
|
@@ -344,6 +423,12 @@ def bioos_workflow():
|
|
|
344
423
|
action='store_true',
|
|
345
424
|
help="Force reupolad tos existed files.")
|
|
346
425
|
|
|
426
|
+
parser.add_argument(
|
|
427
|
+
"--mount_tos",
|
|
428
|
+
action='store_true',
|
|
429
|
+
help="是否挂载tos",
|
|
430
|
+
default=False)
|
|
431
|
+
|
|
347
432
|
parser.add_argument(
|
|
348
433
|
"--monitor",
|
|
349
434
|
action='store_true',
|
|
@@ -357,6 +442,11 @@ def bioos_workflow():
|
|
|
357
442
|
"--download_results",
|
|
358
443
|
action='store_true',
|
|
359
444
|
help="Download the submission run result files to local current path.")
|
|
445
|
+
parser.add_argument(
|
|
446
|
+
"--download_dir",
|
|
447
|
+
type=str,
|
|
448
|
+
default=".",
|
|
449
|
+
help="本地保存下载结果的目录(默认当前目录)")
|
|
360
450
|
|
|
361
451
|
parsed_args = parser.parse_args()
|
|
362
452
|
|
|
@@ -370,7 +460,8 @@ def bioos_workflow():
|
|
|
370
460
|
data_model_name=parsed_args.data_model_name,
|
|
371
461
|
submission_desc=parsed_args.submission_desc,
|
|
372
462
|
call_caching=parsed_args.call_caching,
|
|
373
|
-
force_reupload=parsed_args.force_reupload
|
|
463
|
+
force_reupload=parsed_args.force_reupload,
|
|
464
|
+
mount_tos=parsed_args.mount_tos)
|
|
374
465
|
bw.submit_workflow_bioosapi()
|
|
375
466
|
|
|
376
467
|
# moniter
|
|
@@ -395,5 +486,5 @@ def bioos_workflow():
|
|
|
395
486
|
print(bw.runs)
|
|
396
487
|
|
|
397
488
|
bw.logger.info("Start to postprocess.")
|
|
398
|
-
bw.postprocess(download=parsed_args.download_results)
|
|
489
|
+
bw.postprocess(download=parsed_args.download_results,download_dir = parsed_args.download_dir)
|
|
399
490
|
bw.logger.info("Postprocess finished.")
|
bioos/bw_import.py
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# coding: utf-8
|
|
3
|
-
|
|
4
3
|
import argparse
|
|
5
4
|
import logging
|
|
6
5
|
import os
|
|
7
6
|
import sys
|
|
8
7
|
import time
|
|
9
|
-
|
|
10
8
|
from bioos import bioos
|
|
11
|
-
from bioos.config import Config
|
|
9
|
+
from bioos.config import Config, DEFAULT_ENDPOINT
|
|
12
10
|
from bioos.resource.workflows import WorkflowResource
|
|
13
|
-
|
|
14
|
-
|
|
15
11
|
def get_logger():
|
|
16
12
|
"""Setup logger"""
|
|
17
13
|
logger = logging.getLogger('bw_import')
|
|
@@ -23,14 +19,11 @@ def get_logger():
|
|
|
23
19
|
logger.addHandler(handler)
|
|
24
20
|
logger.setLevel(logging.INFO)
|
|
25
21
|
return logger
|
|
26
|
-
|
|
27
|
-
|
|
28
22
|
def bioos_workflow_import():
|
|
29
23
|
"""Command line entry point"""
|
|
30
24
|
parser = argparse.ArgumentParser(
|
|
31
25
|
description='Bio-OS Workflow Import Tool',
|
|
32
26
|
formatter_class=argparse.RawDescriptionHelpFormatter)
|
|
33
|
-
|
|
34
27
|
# 必需参数
|
|
35
28
|
parser.add_argument(
|
|
36
29
|
'--ak',
|
|
@@ -49,8 +42,10 @@ def bioos_workflow_import():
|
|
|
49
42
|
parser.add_argument('--workflow_source',
|
|
50
43
|
required=True,
|
|
51
44
|
help='Local WDL file path or git repository URL')
|
|
52
|
-
|
|
53
45
|
# 可选参数
|
|
46
|
+
parser.add_argument('--endpoint',
|
|
47
|
+
help='Bio-OS instance platform endpoint',
|
|
48
|
+
default=DEFAULT_ENDPOINT)
|
|
54
49
|
parser.add_argument('--workflow_desc',
|
|
55
50
|
help='Description for the workflow',
|
|
56
51
|
default='')
|
|
@@ -67,16 +62,13 @@ def bioos_workflow_import():
|
|
|
67
62
|
type=int,
|
|
68
63
|
default=60,
|
|
69
64
|
help='Time interval in seconds for checking workflow status')
|
|
70
|
-
|
|
71
65
|
args = parser.parse_args()
|
|
72
66
|
logger = get_logger()
|
|
73
|
-
|
|
74
67
|
try:
|
|
75
68
|
# 配置Bio-OS
|
|
76
69
|
Config.set_access_key(args.ak)
|
|
77
70
|
Config.set_secret_key(args.sk)
|
|
78
|
-
Config.set_endpoint(
|
|
79
|
-
|
|
71
|
+
Config.set_endpoint(args.endpoint)
|
|
80
72
|
# 获取workspace ID
|
|
81
73
|
workspaces = bioos.list_workspaces()
|
|
82
74
|
workspace_info = workspaces.query(f"Name=='{args.workspace_name}'")
|
|
@@ -84,10 +76,8 @@ def bioos_workflow_import():
|
|
|
84
76
|
logger.error(f"Workspace {args.workspace_name} not found")
|
|
85
77
|
sys.exit(1)
|
|
86
78
|
workspace_id = workspace_info["ID"].iloc[0]
|
|
87
|
-
|
|
88
79
|
# 创建WorkflowResource实例
|
|
89
80
|
workflow_resource = WorkflowResource(workspace_id)
|
|
90
|
-
|
|
91
81
|
# 导入workflow
|
|
92
82
|
try:
|
|
93
83
|
result = workflow_resource.import_workflow(
|
|
@@ -99,19 +89,15 @@ def bioos_workflow_import():
|
|
|
99
89
|
logger.info(
|
|
100
90
|
f"Successfully uploaded workflow: {result}, validating..., please wait..."
|
|
101
91
|
)
|
|
102
|
-
|
|
103
92
|
# 如果设置了monitor参数,则监控工作流状态
|
|
104
93
|
if args.monitor:
|
|
105
94
|
max_retries = 10 # 最大重试次数
|
|
106
95
|
retry_count = 0
|
|
107
|
-
|
|
108
96
|
while retry_count < max_retries:
|
|
109
97
|
df = workflow_resource.list()
|
|
110
98
|
workflow_info = df[df.Name == args.workflow_name]
|
|
111
|
-
|
|
112
99
|
if len(workflow_info) == 1:
|
|
113
100
|
status = workflow_info.iloc[0]["Status"]["Phase"]
|
|
114
|
-
|
|
115
101
|
if status == "Succeeded":
|
|
116
102
|
logger.info(
|
|
117
103
|
f"Workflow {args.workflow_name} validated successfully"
|
|
@@ -138,7 +124,6 @@ def bioos_workflow_import():
|
|
|
138
124
|
f"Workflow {args.workflow_name} not found after import"
|
|
139
125
|
)
|
|
140
126
|
sys.exit(1)
|
|
141
|
-
|
|
142
127
|
logger.error(
|
|
143
128
|
f"Workflow validation timeout after {max_retries} retries")
|
|
144
129
|
sys.exit(1)
|
|
@@ -148,15 +133,11 @@ def bioos_workflow_import():
|
|
|
148
133
|
f"Workflow {args.workflow_name} is still validating, {result}, please wait and check the status later."
|
|
149
134
|
)
|
|
150
135
|
sys.exit(0)
|
|
151
|
-
|
|
152
136
|
except Exception as e:
|
|
153
137
|
logger.error(f"Failed to import workflow: {str(e)}")
|
|
154
138
|
sys.exit(1)
|
|
155
|
-
|
|
156
139
|
except Exception as e:
|
|
157
140
|
logger.error(f"Error: {str(e)}")
|
|
158
141
|
sys.exit(1)
|
|
159
|
-
|
|
160
|
-
|
|
161
142
|
if __name__ == '__main__':
|
|
162
143
|
bioos_workflow_import()
|
bioos/bw_import_status_check.py
CHANGED
|
@@ -6,7 +6,7 @@ import logging
|
|
|
6
6
|
import sys
|
|
7
7
|
|
|
8
8
|
from bioos import bioos
|
|
9
|
-
from bioos.config import Config
|
|
9
|
+
from bioos.config import Config, DEFAULT_ENDPOINT
|
|
10
10
|
from bioos.resource.workflows import WorkflowResource
|
|
11
11
|
|
|
12
12
|
|
|
@@ -44,6 +44,11 @@ def bioos_workflow_status_check():
|
|
|
44
44
|
parser.add_argument('--workflow_id',
|
|
45
45
|
required=True,
|
|
46
46
|
help='ID of the workflow to check')
|
|
47
|
+
|
|
48
|
+
# 可选参数
|
|
49
|
+
parser.add_argument('--endpoint',
|
|
50
|
+
help='Bio-OS instance platform endpoint',
|
|
51
|
+
default=DEFAULT_ENDPOINT)
|
|
47
52
|
|
|
48
53
|
args = parser.parse_args()
|
|
49
54
|
logger = get_logger()
|
|
@@ -52,7 +57,7 @@ def bioos_workflow_status_check():
|
|
|
52
57
|
# 配置Bio-OS
|
|
53
58
|
Config.set_access_key(args.ak)
|
|
54
59
|
Config.set_secret_key(args.sk)
|
|
55
|
-
Config.set_endpoint(
|
|
60
|
+
Config.set_endpoint(args.endpoint)
|
|
56
61
|
|
|
57
62
|
# 获取workspace ID
|
|
58
63
|
workspaces = bioos.list_workspaces()
|
bioos/bw_status_check.py
CHANGED
|
@@ -6,7 +6,7 @@ import logging
|
|
|
6
6
|
import sys
|
|
7
7
|
|
|
8
8
|
from bioos import bioos
|
|
9
|
-
from bioos.config import Config
|
|
9
|
+
from bioos.config import Config, DEFAULT_ENDPOINT
|
|
10
10
|
from bioos.resource.workflows import WorkflowResource
|
|
11
11
|
|
|
12
12
|
|
|
@@ -44,6 +44,11 @@ def bioos_workflow_status_check():
|
|
|
44
44
|
parser.add_argument('--submission_id',
|
|
45
45
|
required=True,
|
|
46
46
|
help='ID of the submission to check')
|
|
47
|
+
|
|
48
|
+
# 可选参数
|
|
49
|
+
parser.add_argument('--endpoint',
|
|
50
|
+
help='Bio-OS instance platform endpoint',
|
|
51
|
+
default=DEFAULT_ENDPOINT)
|
|
47
52
|
|
|
48
53
|
args = parser.parse_args()
|
|
49
54
|
logger = get_logger()
|
|
@@ -52,7 +57,7 @@ def bioos_workflow_status_check():
|
|
|
52
57
|
# 配置Bio-OS
|
|
53
58
|
Config.set_access_key(args.ak)
|
|
54
59
|
Config.set_secret_key(args.sk)
|
|
55
|
-
Config.set_endpoint(
|
|
60
|
+
Config.set_endpoint(args.endpoint)
|
|
56
61
|
|
|
57
62
|
# 获取workspace ID
|
|
58
63
|
workspaces = bioos.list_workspaces()
|
bioos/config.py
CHANGED
|
@@ -7,6 +7,9 @@ from bioos.errors import ConfigurationError
|
|
|
7
7
|
from bioos.log import PyLogger
|
|
8
8
|
from bioos.service.BioOsService import BioOsService
|
|
9
9
|
|
|
10
|
+
# 默认的 Bio-OS endpoint
|
|
11
|
+
DEFAULT_ENDPOINT = "https://bio-top.miracle.ac.cn"
|
|
12
|
+
|
|
10
13
|
LOGIN_STATUS = Literal['Already logged in', 'Not logged in']
|
|
11
14
|
|
|
12
15
|
|
|
@@ -14,7 +17,7 @@ class Config:
|
|
|
14
17
|
_service: BioOsService = None
|
|
15
18
|
_access_key: str = os.environ.get('VOLC_ACCESSKEY')
|
|
16
19
|
_secret_key: str = os.environ.get('VOLC_SECRETKEY')
|
|
17
|
-
_endpoint: str = os.environ.get('BIOOS_ENDPOINT')
|
|
20
|
+
_endpoint: str = os.environ.get('BIOOS_ENDPOINT', DEFAULT_ENDPOINT)
|
|
18
21
|
_region: str = REGION_CN_NORTH1
|
|
19
22
|
Logger = PyLogger() # 这里是把类赋给了Logger变量
|
|
20
23
|
|
bioos/get_submission_logs.py
CHANGED
|
@@ -7,7 +7,7 @@ import os
|
|
|
7
7
|
import sys
|
|
8
8
|
|
|
9
9
|
from bioos import bioos
|
|
10
|
-
from bioos.config import Config
|
|
10
|
+
from bioos.config import Config, DEFAULT_ENDPOINT
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def get_logger():
|
|
@@ -48,6 +48,11 @@ def get_submission_logs():
|
|
|
48
48
|
'--output_dir',
|
|
49
49
|
default='.',
|
|
50
50
|
help='Local directory to save the logs (default: current directory)')
|
|
51
|
+
|
|
52
|
+
# 可选参数
|
|
53
|
+
parser.add_argument('--endpoint',
|
|
54
|
+
help='Bio-OS instance platform endpoint',
|
|
55
|
+
default=DEFAULT_ENDPOINT)
|
|
51
56
|
|
|
52
57
|
args = parser.parse_args()
|
|
53
58
|
logger = get_logger()
|
|
@@ -56,7 +61,7 @@ def get_submission_logs():
|
|
|
56
61
|
# 配置Bio-OS
|
|
57
62
|
Config.set_access_key(args.ak)
|
|
58
63
|
Config.set_secret_key(args.sk)
|
|
59
|
-
Config.set_endpoint(
|
|
64
|
+
Config.set_endpoint(args.endpoint)
|
|
60
65
|
|
|
61
66
|
# 获取workspace ID
|
|
62
67
|
workspaces = bioos.list_workspaces()
|
bioos/resource/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
from .iesapp import WebInstanceApp, WebInstanceAppResource
|