Analysis - Pipeline example (czech)¶
Tento dokument popisuje vytvoření ukázkové pipeline.
VariableGenerator¶
Vytvoříme akci VariableGenerator, která bude na svém výstupu poskytovat ensemble typu Float, obsahující tři hodnoty typu Float.
vg = VariableGenerator(Variable=Ensemble(Float(), Float(1.0), Float(2.0), Float(3.0)))
Workflow¶
Část pipeliny budeme chtít vykonávat opakovaně, vložíme ji tedy do akce Workflow.
w = Workflow()
Connector¶
Do workflow budou vstupovat položky typu Float, na vstupu FunctionAction musí být typ Struct, použijeme tedy konektor, který typ upraví.
c1 = Connector()
c1.set_inputs([w.input()])
c1.set_config(Convertor = Convertor(Struct(x=Input(0))))
FunctionAction¶
Uvnitř workflow umístíme akci FunctionAction. Jako vstup do této akce bude sloužit vstup do akce workflou. Pro akci FunctionAction definujeme vstupní parametry a vlastní předpis funkce.
f = FunctionAction(
Inputs=[c1],
Params=["x"],
Expressions=["y = 2 * x + 3"]
)
Connector¶
Budeme požadovat, aby na výstupu z workflou byl Struct s polozkou “z”, výstup z akce FunctionAction je Struct s polozkou y, použijeme tedy příslušný konvertor.
c2 = Connector()
c2.set_inputs([f])
c2.set_config(Convertor = Convertor(Struct(z=Input(0).y)))
Nastavíme vstup a výstup workflow.
w.set_config(
OutputAction=c2,
InputAction=c1
)
ForEach¶
Celý workflow budeme opakovaně vykonávat pomocí akce ForEach.
fe = ForEach(
Inputs=[vg],
WrappedAction=w
)
PrintDTTAction¶
Výstup budeme chtít uložit do souboru, použijeme tedy akci PrintDTTAction.
pa = PrintDTTAction(Inputs=[fe], OutputFile="output.txt")
Pipeline¶
Celá pipeline je umístěna v akci Pipeline.
p = Pipeline(ResultActions=[fe])
Výsledná pipeline¶
Zdrojový kód celé pipeliny vypadá tedy následovně.
vg = VariableGenerator(Variable=Ensemble(Float(), Float(1.0), Float(2.0), Float(3.0)))
w = Workflow()
c1 = Connector()
c1.set_inputs([w.input()])
c1.set_config(Convertor = Convertor(Struct(x=Input(0))))
f = FunctionAction(
Inputs=[c1],
Params=["x"],
Expressions=["y = 2 * x + 3"]
)
c2 = Connector()
c2.set_inputs([f])
c2.set_config(Convertor = Convertor(Struct(z=Input(0).y)))
w.set_config(
OutputAction=c2,
InputAction=c1
)
fe = ForEach(
Inputs=[vg],
WrappedAction=w
)
pa = PrintDTTAction(Inputs=[fe], OutputFile="output.txt")
p = Pipeline(ResultActions=[pa])