PipeGraphPy 2.0.6__py3-none-win_amd64.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.
- PipeGraphPy/__init__.py +10 -0
- PipeGraphPy/common.py +4 -0
- PipeGraphPy/config/__init__.py +276 -0
- PipeGraphPy/config/custom.py +6 -0
- PipeGraphPy/config/default_settings.py +125 -0
- PipeGraphPy/constants.py +421 -0
- PipeGraphPy/core/__init__.py +2 -0
- PipeGraphPy/core/anchor.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/edge.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/graph.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/graph_base.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/__init__.py +3 -0
- PipeGraphPy/core/modcls/base.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/branchselect.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/classifier.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/cluster.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/datacharts.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/deeplearning.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/endscript.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/ensemble.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/evaluate.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/exportdata.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/handlescript.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/importdata.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/merge.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/mergescript.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/metrics.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/postprocessor.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/preprocessor.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/pythonscript.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/regressor.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/selector.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/selectscript.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/special.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/split.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/splitscript.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/startscript.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modcls/transformer.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/module.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/modules/__init__.py +65 -0
- PipeGraphPy/core/modules/classifier/__init__.py +2 -0
- PipeGraphPy/core/modules/cluster/__init__.py +0 -0
- PipeGraphPy/core/modules/custom/__init__.py +0 -0
- PipeGraphPy/core/modules/custom/classifier/__init__.py +0 -0
- PipeGraphPy/core/modules/datacharts/__init__.py +5 -0
- PipeGraphPy/core/modules/datacharts/dataview.py +28 -0
- PipeGraphPy/core/modules/deeplearning/__init__.py +0 -0
- PipeGraphPy/core/modules/ensemble/__init__.py +0 -0
- PipeGraphPy/core/modules/evaluate/__init__.py +0 -0
- PipeGraphPy/core/modules/exportdata/__init__.py +0 -0
- PipeGraphPy/core/modules/importdata/__init__.py +0 -0
- PipeGraphPy/core/modules/merge/__init__.py +0 -0
- PipeGraphPy/core/modules/model_selector/__init__.py +3 -0
- PipeGraphPy/core/modules/postprocessor/__init__.py +0 -0
- PipeGraphPy/core/modules/preprocessor/__init__.py +0 -0
- PipeGraphPy/core/modules/pythonscript/__init__.py +0 -0
- PipeGraphPy/core/modules/regressor/__init__.py +0 -0
- PipeGraphPy/core/modules/selector/__init__.py +0 -0
- PipeGraphPy/core/modules/special/__init__.py +0 -0
- PipeGraphPy/core/modules/split/__init__.py +0 -0
- PipeGraphPy/core/modules/transformer/__init__.py +0 -0
- PipeGraphPy/core/node.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/core/pipegraph.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/db/__init__.py +2 -0
- PipeGraphPy/db/models.cp39-win_amd64.pyd +0 -0
- PipeGraphPy/db/utils.py +106 -0
- PipeGraphPy/decorators.py +42 -0
- PipeGraphPy/logger.py +170 -0
- PipeGraphPy/plot/__init__.py +0 -0
- PipeGraphPy/plot/draw.py +424 -0
- PipeGraphPy/storage/__init__.py +10 -0
- PipeGraphPy/storage/base.py +2 -0
- PipeGraphPy/storage/dict_backend.py +102 -0
- PipeGraphPy/storage/file_backend.py +342 -0
- PipeGraphPy/storage/redis_backend.py +183 -0
- PipeGraphPy/tools.py +388 -0
- PipeGraphPy/utils/__init__.py +1 -0
- PipeGraphPy/utils/check.py +179 -0
- PipeGraphPy/utils/core.py +295 -0
- PipeGraphPy/utils/examine.py +259 -0
- PipeGraphPy/utils/file_operate.py +101 -0
- PipeGraphPy/utils/format.py +303 -0
- PipeGraphPy/utils/functional.py +422 -0
- PipeGraphPy/utils/handle_graph.py +31 -0
- PipeGraphPy/utils/lock.py +1 -0
- PipeGraphPy/utils/mq.py +54 -0
- PipeGraphPy/utils/osutil.py +29 -0
- PipeGraphPy/utils/redis_operate.py +195 -0
- PipeGraphPy/utils/str_handle.py +122 -0
- PipeGraphPy/utils/version.py +108 -0
- PipeGraphPy-2.0.6.dist-info/METADATA +17 -0
- PipeGraphPy-2.0.6.dist-info/RECORD +94 -0
- PipeGraphPy-2.0.6.dist-info/WHEEL +5 -0
- PipeGraphPy-2.0.6.dist-info/top_level.txt +1 -0
PipeGraphPy/constants.py
ADDED
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
# coding: utf8
|
|
2
|
+
from PipeGraphPy.config import settings
|
|
3
|
+
|
|
4
|
+
class ENUMSBASE:
|
|
5
|
+
@classmethod
|
|
6
|
+
def values(cls):
|
|
7
|
+
if hasattr(cls, "_values"):
|
|
8
|
+
return getattr(cls, "_values")
|
|
9
|
+
_values = [
|
|
10
|
+
getattr(cls, i) for i in list(cls.__dict__.keys()) if str(i).isupper()
|
|
11
|
+
]
|
|
12
|
+
setattr(cls, "_values", _values)
|
|
13
|
+
return _values
|
|
14
|
+
|
|
15
|
+
@classmethod
|
|
16
|
+
def keys(cls):
|
|
17
|
+
if hasattr(cls, "_keys"):
|
|
18
|
+
return getattr(cls, "_keys")
|
|
19
|
+
_keys = [i for i in list(cls.__dict__.keys()) if str(i).isupper()]
|
|
20
|
+
setattr(cls, "_keys", _keys)
|
|
21
|
+
return _keys
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class DB:
|
|
25
|
+
dbPipeGraphPy = settings.DBPOOL_SERVER_NAME
|
|
26
|
+
|
|
27
|
+
@classmethod
|
|
28
|
+
def tolist(cls):
|
|
29
|
+
return [cls.dbPipeGraphPy]
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# 场站类型:
|
|
33
|
+
|
|
34
|
+
class GRAPH_VAR(object):
|
|
35
|
+
graph_predict_type = 1 # 1:预测,2:评估,3:回测,4:回算
|
|
36
|
+
|
|
37
|
+
class GRAPH_PREDICT_TYPE():
|
|
38
|
+
PREDICT = 1
|
|
39
|
+
EVALUATE = 2
|
|
40
|
+
BACKTEST = 3
|
|
41
|
+
CAL = 4
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class FARMTYPE(object):
|
|
45
|
+
WIND = "W"
|
|
46
|
+
PV = "S"
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class MTYPE(object):
|
|
50
|
+
NON_CUSTOM = 0 # 非自定义类
|
|
51
|
+
CUSTOM = 1 # 自定义类
|
|
52
|
+
INNER_NON_CUSTOM = 10 # 内部不可自定义组件
|
|
53
|
+
INNER_CUSTOM = 11 # 内部可自定义组件
|
|
54
|
+
OUTER = 20 # 外部组件
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
# 模块类型
|
|
58
|
+
class MODULES(object):
|
|
59
|
+
IMPORT = "ImportData"
|
|
60
|
+
EXPORT = "ExportData"
|
|
61
|
+
PREPROCESSOR = "Preprocessor"
|
|
62
|
+
SELECTOR = "Selector"
|
|
63
|
+
TRANSFORMER = "Transformer"
|
|
64
|
+
REGRESSOR = "Regressor"
|
|
65
|
+
CLASSIFIER = "Classifier"
|
|
66
|
+
DEEPLEARNING = "DeepLearning"
|
|
67
|
+
DATACHART = "DataCharts"
|
|
68
|
+
POSTPROCESSOR = "Postprocessor"
|
|
69
|
+
SPECIAL = "Special"
|
|
70
|
+
ENSEMBLE = "Ensemble"
|
|
71
|
+
METRICS = "Metrics"
|
|
72
|
+
EVALUATE = "Evaluate"
|
|
73
|
+
MERGE = "Merge"
|
|
74
|
+
SPLIT = "Split"
|
|
75
|
+
THEORYDATA = "TheoryData"
|
|
76
|
+
BRANCHSELECT = "BranchSelect"
|
|
77
|
+
GRAPH_MOD = "GraphMod"
|
|
78
|
+
PYTHONSCRIPT = "PythonScript"
|
|
79
|
+
CLUSTER = "Cluster"
|
|
80
|
+
STARTSCRIPT = "StartScript"
|
|
81
|
+
HANDLESCRIPT = "HandleScript"
|
|
82
|
+
SPLITSCRIPT = "SplitScript"
|
|
83
|
+
MERGESCRIPT = "MergeScript"
|
|
84
|
+
SELECTSCRIPT = "SelectScript"
|
|
85
|
+
ENDSCRIPT = "EndScript"
|
|
86
|
+
|
|
87
|
+
MODULES_ID = {
|
|
88
|
+
MODULES.IMPORT : 1,
|
|
89
|
+
MODULES.EXPORT : 2,
|
|
90
|
+
MODULES.PREPROCESSOR : 3,
|
|
91
|
+
MODULES.SELECTOR : 4,
|
|
92
|
+
MODULES.TRANSFORMER : 5,
|
|
93
|
+
MODULES.REGRESSOR : 6,
|
|
94
|
+
MODULES.CLASSIFIER : 7,
|
|
95
|
+
MODULES.CLUSTER : 8,
|
|
96
|
+
MODULES.POSTPROCESSOR : 9,
|
|
97
|
+
MODULES.DATACHART : 10,
|
|
98
|
+
MODULES.ENSEMBLE : 11,
|
|
99
|
+
MODULES.DEEPLEARNING : 12,
|
|
100
|
+
MODULES.SPECIAL : 13,
|
|
101
|
+
MODULES.METRICS : 14,
|
|
102
|
+
MODULES.MERGE : 15,
|
|
103
|
+
MODULES.SPLIT : 16,
|
|
104
|
+
MODULES.EVALUATE : 17,
|
|
105
|
+
MODULES.BRANCHSELECT : 18,
|
|
106
|
+
MODULES.PYTHONSCRIPT : 19,
|
|
107
|
+
MODULES.STARTSCRIPT : 20,
|
|
108
|
+
MODULES.HANDLESCRIPT : 21,
|
|
109
|
+
MODULES.SPLITSCRIPT : 22,
|
|
110
|
+
MODULES.MERGESCRIPT : 23,
|
|
111
|
+
MODULES.SELECTSCRIPT : 24,
|
|
112
|
+
MODULES.ENDSCRIPT : 25,
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
ESTIMATOR_MODULES = [MODULES.CLASSIFIER, MODULES.REGRESSOR, MODULES.DEEPLEARNING]
|
|
117
|
+
TRANSFORMER_MODULES = [MODULES.PREPROCESSOR, MODULES.SELECTOR, MODULES.TRANSFORMER]
|
|
118
|
+
RUN_CUSTOM_MODULES = [MODULES.IMPORT, MODULES.ENSEMBLE,
|
|
119
|
+
MODULES.MERGE, MODULES.SPLIT, MODULES.BRANCHSELECT, MODULES.EXPORT]
|
|
120
|
+
RUN_MODULES = [MODULES.EVALUATE, MODULES.PYTHONSCRIPT, MODULES.STARTSCRIPT, MODULES.HANDLESCRIPT,
|
|
121
|
+
MODULES.SPLITSCRIPT, MODULES.MERGESCRIPT, MODULES.SELECTSCRIPT, MODULES.ENDSCRIPT]
|
|
122
|
+
|
|
123
|
+
# 自定义模块
|
|
124
|
+
CUSTOM_MODULES = [
|
|
125
|
+
MODULES.IMPORT,
|
|
126
|
+
MODULES.PREPROCESSOR,
|
|
127
|
+
MODULES.SELECTOR,
|
|
128
|
+
MODULES.TRANSFORMER,
|
|
129
|
+
MODULES.REGRESSOR,
|
|
130
|
+
MODULES.CLASSIFIER,
|
|
131
|
+
MODULES.DEEPLEARNING,
|
|
132
|
+
MODULES.POSTPROCESSOR,
|
|
133
|
+
MODULES.ENSEMBLE,
|
|
134
|
+
MODULES.METRICS,
|
|
135
|
+
MODULES.EVALUATE,
|
|
136
|
+
MODULES.BRANCHSELECT,
|
|
137
|
+
]
|
|
138
|
+
CUSTOM_MODULES.extend(ESTIMATOR_MODULES)
|
|
139
|
+
CUSTOM_MODULES.extend(TRANSFORMER_MODULES)
|
|
140
|
+
CUSTOM_MODULES.extend(RUN_CUSTOM_MODULES)
|
|
141
|
+
CUSTOM_MODULES.extend(RUN_MODULES)
|
|
142
|
+
|
|
143
|
+
# 图模型
|
|
144
|
+
GRAPH_MOD = "GraphMod"
|
|
145
|
+
MODEL_SELECTOR = "ModelSelector"
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
# 节点状态
|
|
149
|
+
class STATUS(object):
|
|
150
|
+
NONE = 0 # 无状态
|
|
151
|
+
RUNNING = 1 # 正在运行
|
|
152
|
+
SUCCESS = 2 # 运行成功
|
|
153
|
+
WARNING = 3 # 运行告警
|
|
154
|
+
ERROR = 4 # 错误
|
|
155
|
+
WAITRUN = 5 # 未发送任务等待运行
|
|
156
|
+
WAITEXE = 6 # 已发送任务等待运行
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
# 模型状态
|
|
160
|
+
class MODELSTATUS(object):
|
|
161
|
+
NONE = 0 # 无模型
|
|
162
|
+
NORMAL = 1 # 模型正常
|
|
163
|
+
LOAD_ERROR = 11 # 模型载入报错
|
|
164
|
+
PREDICT_ERROR = 12 # 模型预测过程报错
|
|
165
|
+
ERROR = 4 # 错误
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
# 图类型
|
|
169
|
+
class GRAPHTYPE(object):
|
|
170
|
+
TRAIN = 1 # 训练图
|
|
171
|
+
EVALUATE = 2 # 评估图
|
|
172
|
+
SCHEDULE = 3 # 调度任务
|
|
173
|
+
WIND_EVAL_TEMPLATE = 100 # 风电场评估图模板
|
|
174
|
+
PV_EVAL_TEMPLATE = 101 # 光伏电场评估图模板
|
|
175
|
+
WIND_TEMPLATE = 110 # 风电场训练图模板
|
|
176
|
+
PV_TEMPLATE = 111 # 光伏电场训练图模板
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
# 组件输入输出类型
|
|
180
|
+
class DATATYPE(object):
|
|
181
|
+
DATAFRAME = "DataFrame"
|
|
182
|
+
DATAFRAME_LIST = "list(DataFrame)"
|
|
183
|
+
OBJECT = "object"
|
|
184
|
+
OBJECT_LIST = "list(object)"
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
NODE_STATUS_KEY = "node_status_{graph_id}_{node_id}"
|
|
188
|
+
NODE_OUTPUT_KEY = "node_output_{graph_id}_{node_id}_{anchor}"
|
|
189
|
+
GRAPH_STATUS_KEY = "graph_status_{graph_id}"
|
|
190
|
+
GRAPH_KEY = "graph_{graph_id}"
|
|
191
|
+
MOD_RETURN_RESULT = "mod_result_{graph_id}"
|
|
192
|
+
PREDICT_RABBITMQ_KEY = "PipeGraphPy_predict"
|
|
193
|
+
RABBITMQ_EXCHANGE = "PipeGraphPy-2"
|
|
194
|
+
|
|
195
|
+
EVALUATE_RECORD_RESERVE_NUM = 10
|
|
196
|
+
|
|
197
|
+
UID_NUM = 10
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
class BIZ_TYPE(ENUMSBASE):
|
|
201
|
+
WFID = "wfid"
|
|
202
|
+
WEATHER = "weather"
|
|
203
|
+
CUSTOM = "custom"
|
|
204
|
+
MLT = "mlt"
|
|
205
|
+
ALERT = "alert"
|
|
206
|
+
MLT_MONTH = "mlt_month"
|
|
207
|
+
MLT_HOUR = "mlt_hour"
|
|
208
|
+
MONTH_CURVE = "month_curve"
|
|
209
|
+
PRICE_PREDICT = "price_predict"
|
|
210
|
+
LOAD_PREDICT = "load_predict"
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
# class JUPYTER_TYPE(ENUMSBASE):
|
|
214
|
+
# LAB = NotebookType.JUPYTER_LAB
|
|
215
|
+
# NOTEBOOK = NotebookType.JUPYTER_NOTEBOOK
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
# 算法所使用的外部库
|
|
219
|
+
class ALGO_MOD_TYPE(ENUMSBASE):
|
|
220
|
+
SKLEARN = "sklearn"
|
|
221
|
+
XGBOOST = "xgboost"
|
|
222
|
+
TENSORFLOW = "tensorflow"
|
|
223
|
+
KERAS = "keras"
|
|
224
|
+
PYTORCH = "torch"
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
# graph使用场景
|
|
228
|
+
class SCENETYPE(ENUMSBASE):
|
|
229
|
+
SDKTEST = "sdk_test" # sdk测试场景,不使用sql
|
|
230
|
+
SDKSQL = "sdk_sql" # sdk线下运行,使用sql
|
|
231
|
+
ONLINE = "online" # 线上运行
|
|
232
|
+
|
|
233
|
+
class ONLINE_ENV(ENUMSBASE):
|
|
234
|
+
AWS = 'aws'
|
|
235
|
+
LOCAL = 'local'
|
|
236
|
+
|
|
237
|
+
NODE_DATA_RESERVE = 20
|
|
238
|
+
NOT_CUT_MODULES = []
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
GRAPH_DICT_FORMAT = {
|
|
242
|
+
"id": {
|
|
243
|
+
"required": True,
|
|
244
|
+
"type": str,
|
|
245
|
+
"dest": "",
|
|
246
|
+
"help": "必传,不能包含中文",
|
|
247
|
+
},
|
|
248
|
+
"name": {
|
|
249
|
+
"required": False,
|
|
250
|
+
"type": str,
|
|
251
|
+
"dest": "",
|
|
252
|
+
"help": "非必传,不传参时,使用id的值",
|
|
253
|
+
"fillnone": "id",
|
|
254
|
+
},
|
|
255
|
+
"version": {
|
|
256
|
+
"required": False,
|
|
257
|
+
"default": "v0.0.1",
|
|
258
|
+
"type": str,
|
|
259
|
+
"dest": "",
|
|
260
|
+
"help": "非必传, 版本号",
|
|
261
|
+
},
|
|
262
|
+
"author": {
|
|
263
|
+
"required": False,
|
|
264
|
+
"default": "",
|
|
265
|
+
"type": str,
|
|
266
|
+
"dest": "username",
|
|
267
|
+
"help": "非必传,作者",
|
|
268
|
+
},
|
|
269
|
+
"update_time": {
|
|
270
|
+
"required": False,
|
|
271
|
+
"type": str,
|
|
272
|
+
"dest": "utime",
|
|
273
|
+
"help": "非必传,更新时间",
|
|
274
|
+
},
|
|
275
|
+
"params": {
|
|
276
|
+
"required": False,
|
|
277
|
+
"default": {},
|
|
278
|
+
"type": dict,
|
|
279
|
+
"dest": "run_params",
|
|
280
|
+
"help": "非必传,模型全局传参",
|
|
281
|
+
},
|
|
282
|
+
"nodes":{
|
|
283
|
+
"required": True,
|
|
284
|
+
"type": list,
|
|
285
|
+
"dest": "",
|
|
286
|
+
"help": "模型节点列表",
|
|
287
|
+
"elements": {
|
|
288
|
+
"required": True,
|
|
289
|
+
"type": dict,
|
|
290
|
+
"elements": {
|
|
291
|
+
"id": {
|
|
292
|
+
"required": True,
|
|
293
|
+
"type": str,
|
|
294
|
+
"dest": "",
|
|
295
|
+
"help": "必传,不能包含中文",
|
|
296
|
+
},
|
|
297
|
+
"name": {
|
|
298
|
+
"required": False,
|
|
299
|
+
"type": str,
|
|
300
|
+
"dest": "",
|
|
301
|
+
"help": "非必传,不传参时,使用id的值",
|
|
302
|
+
"fillnone": "id",
|
|
303
|
+
},
|
|
304
|
+
"module_classification": {
|
|
305
|
+
"required": True,
|
|
306
|
+
"type": str,
|
|
307
|
+
# "dest": "parent_cls_name",
|
|
308
|
+
"help": "必传,多级时用‘/’分割",
|
|
309
|
+
},
|
|
310
|
+
"module_cls_name": {
|
|
311
|
+
"required": True,
|
|
312
|
+
"type": str,
|
|
313
|
+
# "dest": "cls_name",
|
|
314
|
+
"help": "必传,节点入口类的类名, 文件名为类名的小写",
|
|
315
|
+
},
|
|
316
|
+
"params": {
|
|
317
|
+
"required": False,
|
|
318
|
+
"default": {},
|
|
319
|
+
"type": dict,
|
|
320
|
+
"help": "必传,节点传参",
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
},
|
|
325
|
+
"edges":{
|
|
326
|
+
"required": False,
|
|
327
|
+
"default": [],
|
|
328
|
+
"type": list,
|
|
329
|
+
"dest": "",
|
|
330
|
+
"help": "模型连线列表",
|
|
331
|
+
"elements": {
|
|
332
|
+
"required": True,
|
|
333
|
+
"type": dict,
|
|
334
|
+
"elements": {
|
|
335
|
+
"source": {
|
|
336
|
+
"required": True,
|
|
337
|
+
"type": str,
|
|
338
|
+
"dest": "source_id",
|
|
339
|
+
"alias": "source_id",
|
|
340
|
+
"help": "必传,起始节点id, 必须在nodes能找到对应id",
|
|
341
|
+
},
|
|
342
|
+
"target": {
|
|
343
|
+
"required": True,
|
|
344
|
+
"type": str,
|
|
345
|
+
"dest": "target_id",
|
|
346
|
+
"alias": "target_id",
|
|
347
|
+
"help": "必传,目标节点id, 必须在nodes能找到对应id",
|
|
348
|
+
},
|
|
349
|
+
"source_anchor": {
|
|
350
|
+
"required": False,
|
|
351
|
+
"default": 1,
|
|
352
|
+
"type": str,
|
|
353
|
+
"dest": "",
|
|
354
|
+
"help": "必传,起始节点锚点,默认是1",
|
|
355
|
+
},
|
|
356
|
+
"target_anchor": {
|
|
357
|
+
"required": False,
|
|
358
|
+
"default": 1,
|
|
359
|
+
"type": str,
|
|
360
|
+
"dest": "",
|
|
361
|
+
"help": "必传,目标节点锚点,默认是1",
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
},
|
|
366
|
+
"objects":{
|
|
367
|
+
"required": True,
|
|
368
|
+
"dest": "object_infos",
|
|
369
|
+
"type": list,
|
|
370
|
+
"help": "模型对象信息",
|
|
371
|
+
"elements": {
|
|
372
|
+
"required": True,
|
|
373
|
+
"type": dict,
|
|
374
|
+
"elements": {
|
|
375
|
+
"id": {
|
|
376
|
+
"required": True,
|
|
377
|
+
"type": str,
|
|
378
|
+
"dest": "",
|
|
379
|
+
"help": "必传,不能包含中文",
|
|
380
|
+
},
|
|
381
|
+
"name": {
|
|
382
|
+
"required": False,
|
|
383
|
+
"type": str,
|
|
384
|
+
"dest": "",
|
|
385
|
+
"help": "非必传,不传参时,使用id的值",
|
|
386
|
+
"fillnone": "id",
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
EXECUTOR_DICT_FORMAT = {
|
|
395
|
+
"executor":{
|
|
396
|
+
"required": False, # 没有执行器的时候模型安顺序执行
|
|
397
|
+
"default": [],
|
|
398
|
+
"type": list,
|
|
399
|
+
"help": "执行器,标识模型执行顺序",
|
|
400
|
+
"elements": {
|
|
401
|
+
"required": True,
|
|
402
|
+
"type": dict,
|
|
403
|
+
"elements": {
|
|
404
|
+
"source": {
|
|
405
|
+
"required": True,
|
|
406
|
+
"type": str,
|
|
407
|
+
"dest": "source_graph_id",
|
|
408
|
+
"alias": "source_id",
|
|
409
|
+
"help": "必传,起始模型id",
|
|
410
|
+
},
|
|
411
|
+
"target": {
|
|
412
|
+
"required": True,
|
|
413
|
+
"type": str,
|
|
414
|
+
"dest": "target_graph_id",
|
|
415
|
+
"alias": "target_id",
|
|
416
|
+
"help": "必传,目标模型id",
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
|
|
4
|
+
from datetime import datetime, timedelta
|
|
5
|
+
from PipeGraphPy.utils.str_handle import filter_fields
|
|
6
|
+
from PipeGraphPy.utils.handle_graph import stop_running_with_exception
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class Base(object):
|
|
10
|
+
pass
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class MBase(object):
|
|
14
|
+
params_rules = {}
|
|
15
|
+
|
|
16
|
+
def __init__(self, **kwargs):
|
|
17
|
+
self.params = kwargs
|
|
18
|
+
|
|
19
|
+
def stop_run(self, err):
|
|
20
|
+
"""停止运行"""
|
|
21
|
+
stop_running_with_exception(self.params.graph_info["id"], err=err)
|
|
22
|
+
|
|
23
|
+
def get_X_y(self, df):
|
|
24
|
+
"""获取X和y值从df中"""
|
|
25
|
+
if self.params.get("feature_columns"):
|
|
26
|
+
X = df[filter_fields(df.columns, self.params.get("feature_columns"))]
|
|
27
|
+
else:
|
|
28
|
+
X = df
|
|
29
|
+
# 取出要传递的y值
|
|
30
|
+
if self.params.get("label_columns"):
|
|
31
|
+
y = df[filter_fields(df.columns, self.params.get("label_columns"))]
|
|
32
|
+
else:
|
|
33
|
+
y = None
|
|
34
|
+
return X, y
|
|
35
|
+
|
|
36
|
+
def check_params(self):
|
|
37
|
+
params = self.params
|
|
38
|
+
if self.params_rules:
|
|
39
|
+
for k, v in self.params_rules.items():
|
|
40
|
+
if v.get("need") and params.get(k) is None:
|
|
41
|
+
raise Exception("(%s)值必传" % v["name"])
|
|
42
|
+
if (
|
|
43
|
+
v.get("type")
|
|
44
|
+
and params.get(k)
|
|
45
|
+
and not isinstance(params[k], v["type"])
|
|
46
|
+
):
|
|
47
|
+
raise Exception("(%s)值类型错误, 必须为(%s)型" % (v["name"], str(v["type"])))
|
|
48
|
+
if (
|
|
49
|
+
v.get("range")
|
|
50
|
+
and params.get(k)
|
|
51
|
+
and not params[k] >= v["range"][0]
|
|
52
|
+
and not params[k] <= v["range"][1]
|
|
53
|
+
):
|
|
54
|
+
raise Exception(
|
|
55
|
+
"(%s)取值范围错误, 必须在(%s)之间" % (v["name"], str(v["range"]))
|
|
56
|
+
)
|
|
57
|
+
if v.get("source") and params.get(k):
|
|
58
|
+
v_lst = params[k] if isinstance(params[k], list) else [params[k]]
|
|
59
|
+
for i in v_lst:
|
|
60
|
+
if i not in v["source"]:
|
|
61
|
+
raise Exception(
|
|
62
|
+
"(%s)取值错误,必须在(%s)之间选值" % (v["name"], str(v["source"]))
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from PipeGraphPy.constants import DATATYPE
|
|
2
|
+
from . import DatachartsBase
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class DataView(DatachartsBase):
|
|
6
|
+
INPUT = [DATATYPE.DATAFRAME]
|
|
7
|
+
OUTPUT = []
|
|
8
|
+
TEMPLATE = [{
|
|
9
|
+
"key": "selected_columns",
|
|
10
|
+
"name": "选择的列",
|
|
11
|
+
"type": "string",
|
|
12
|
+
"plugin": "input",
|
|
13
|
+
"need": False,
|
|
14
|
+
"value": "",
|
|
15
|
+
"desc": "要传递的列(多选)"
|
|
16
|
+
}]
|
|
17
|
+
|
|
18
|
+
def run(self, df):
|
|
19
|
+
# 获取要传递的X值
|
|
20
|
+
if self.params.get('selected_columns'):
|
|
21
|
+
X = df[self.params.get('selected_columns')]
|
|
22
|
+
else:
|
|
23
|
+
X = df
|
|
24
|
+
df = X
|
|
25
|
+
return df
|
|
26
|
+
|
|
27
|
+
def predict(self, df):
|
|
28
|
+
return df
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
Binary file
|
|
Binary file
|
|
Binary file
|