import%20marimo%0A%0A__generated_with%20%3D%20%220.23.9%22%0Aapp%20%3D%20marimo.App()%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20%23%20%E3%81%93%E3%81%AE%E6%95%99%E6%9D%90%E3%81%A7%E4%BD%BF%E3%81%86%E5%85%AC%E9%96%8BAPI%E3%81%A8%E6%A4%9C%E8%A8%BC%E7%94%A8%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%82%80%0A%20%20%20%20import%20json%0A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20import%20wandas%20as%20wd%0A%20%20%20%20from%20wandas%20import%20pipeline%20as%20pipeline_api%0A%0A%20%20%20%20return%20json%2C%20mo%2C%20np%2C%20pipeline_api%2C%20wd%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%20%E5%90%8C%E3%81%98%E4%BF%A1%E5%8F%B7%E5%87%A6%E7%90%86%E3%82%92Recipe%E3%81%A8%E3%81%97%E3%81%A6%E5%86%8D%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%0A%0A%20%20%20%20%E8%A4%87%E6%95%B0%E3%81%AE%E9%8C%B2%E9%9F%B3%E3%81%B8%E5%90%8C%E3%81%98%E5%89%8D%E5%87%A6%E7%90%86%E3%82%92%E9%81%A9%E7%94%A8%E3%81%99%E3%82%8B%E3%81%A8%E3%81%8D%E3%80%81%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E3%82%92%E5%90%84%E6%89%80%E3%81%B8%E3%82%B3%E3%83%94%E3%83%BC%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81%0A%20%20%20%20%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E5%A4%89%E6%9B%B4%E3%82%84%E5%87%A6%E7%90%86%E9%A0%86%E3%81%AE%E7%A2%BA%E8%AA%8D%E3%81%8C%E9%9B%A3%E3%81%97%E3%81%8F%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%60RecipePlan%60%20%E3%81%AF%E3%80%81%E9%80%9A%E5%B8%B8%E3%81%AEFrame%E6%93%8D%E4%BD%9C%E3%81%8B%E3%82%89%0A%20%20%20%20%E3%80%8C%E3%81%A9%E3%81%AE%E5%85%AC%E9%96%8B%E6%93%8D%E4%BD%9C%E3%82%92%E3%80%81%E3%81%A9%E3%81%AE%E9%A0%86%E7%95%AA%E3%81%A8%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%A7%E9%81%A9%E7%94%A8%E3%81%99%E3%82%8B%E3%81%8B%E3%80%8D%E3%82%92%E5%8F%96%E3%82%8A%E5%87%BA%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20Recipe%E3%81%AF%E6%B3%A2%E5%BD%A2%E3%83%87%E3%83%BC%E3%82%BF%E3%81%9D%E3%81%AE%E3%82%82%E3%81%AE%E3%82%92%E4%BF%9D%E5%AD%98%E3%81%97%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%E5%88%A5%E3%81%AEFrame%E3%82%92%E5%90%8D%E5%89%8D%E4%BB%98%E3%81%8D%E5%85%A5%E5%8A%9B%E3%81%A8%E3%81%97%E3%81%A6%E6%B8%A1%E3%81%99%E3%81%A8%E3%80%81%0A%20%20%20%20%E5%90%8C%E3%81%98%E5%87%A6%E7%90%86%E3%82%92lazy%E3%81%AAFrame%E3%82%B0%E3%83%A9%E3%83%95%E3%81%A8%E3%81%97%E3%81%A6%E7%B5%84%E3%81%BF%E7%AB%8B%E3%81%A6%E7%9B%B4%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%E3%81%93%E3%81%AE%E6%95%99%E6%9D%90%E3%81%A7%E3%81%AF%E6%AC%A1%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%201.%20%E9%80%9A%E5%B8%B8%E3%81%AEFrame%E6%93%8D%E4%BD%9C%E3%81%8B%E3%82%89Recipe%E3%82%92%E4%BD%9C%E3%82%8B%0A%20%20%20%202.%20JSON%E3%81%A8%E3%81%97%E3%81%A6%E4%BF%9D%E5%AD%98%E3%81%A7%E3%81%8D%E3%82%8Bschema%E3%81%B8%E5%A4%89%E6%8F%9B%E3%81%97%E3%80%81%E8%AA%AD%E3%81%BF%E6%88%BB%E3%81%99%0A%20%20%20%203.%20%E5%88%A5%E3%81%AEFrame%E3%81%B8%E9%81%A9%E7%94%A8%E3%81%97%E3%80%81%E7%9B%B4%E6%8E%A5%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%97%E3%81%9F%E7%B5%90%E6%9E%9C%E3%81%A8%E4%B8%80%E8%87%B4%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E7%A2%BA%E3%81%8B%E3%82%81%E3%82%8B%0A%20%20%20%204.%20%E8%A4%87%E6%95%B0Frame%E3%82%92%E4%BD%BF%E3%81%86%E5%87%A6%E7%90%86%E3%81%A7%E3%82%82%E5%85%A5%E5%8A%9B%E5%90%8D%E3%81%8C%E6%98%8E%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E7%A2%BA%E3%81%8B%E3%82%81%E3%82%8B%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%201.%20%E6%99%AE%E9%80%9A%E3%81%AEFrame%E6%93%8D%E4%BD%9C%E3%82%92%E8%A8%98%E9%8C%B2%E3%81%99%E3%82%8B%0A%0A%20%20%20%20Recipe%E5%B0%82%E7%94%A8%E3%81%AEbuilder%E3%81%AF%E4%BD%BF%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%E4%BB%A3%E8%A1%A8%E5%85%A5%E5%8A%9B%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E3%80%81%E5%86%8D%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9F%E3%81%84%E5%85%AC%E9%96%8BFrame%E6%93%8D%E4%BD%9C%E3%82%92%0A%20%20%20%20%E3%81%9D%E3%81%AE%E3%81%BE%E3%81%BE%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%81%93%E3%81%A7%E3%81%AFDC%E6%88%90%E5%88%86%E3%82%92%E9%99%A4%E3%81%8D%E3%80%81%E6%8C%AF%E5%B9%85%E3%82%92%E6%AD%A3%E8%A6%8F%E5%8C%96%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np%2C%20wd)%3A%0A%20%20%20%20%23%20%E5%86%8D%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9F%E3%81%84%E5%89%8D%E5%87%A6%E7%90%86%E3%82%92%E3%80%81%E4%BB%A3%E8%A1%A8%E3%81%A8%E3%81%AA%E3%82%8B%E5%B0%8F%E3%81%95%E3%81%AA%E4%BF%A1%E5%8F%B7%E3%81%B8%E9%81%A9%E7%94%A8%E3%81%99%E3%82%8B%0A%20%20%20%20template_signal%20%3D%20wd.from_numpy(%0A%20%20%20%20%20%20%20%20np.array(%5B%5B1.0%2C%202.0%2C%204.0%2C%207.0%5D%5D)%2C%0A%20%20%20%20%20%20%20%20sampling_rate%3D8_000%2C%0A%20%20%20%20%20%20%20%20ch_labels%3D%5B%22sensor%22%5D%2C%0A%20%20%20%20)%0A%20%20%20%20template_result%20%3D%20template_signal.remove_dc().normalize()%0A%0A%20%20%20%20print(%22%E4%BB%A3%E8%A1%A8%E5%85%A5%E5%8A%9B%E3%81%AE%E5%B1%A5%E6%AD%B4%3A%22%2C%20%5Brecord%5B%22operation%22%5D%20for%20record%20in%20template_result.operation_history%5D)%0A%20%20%20%20return%20(template_result%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%60RecipePlan.from_frame()%60%20%E3%81%AF%E7%B5%90%E6%9E%9CFrame%E3%81%AEsemantic%20lineage%E3%82%92%E8%AA%AD%E3%81%BF%E3%81%BE%E3%81%99%E3%80%82%E5%85%AC%E9%96%8B%E6%93%8D%E4%BD%9C1%E5%9B%9E%E3%81%8C%0A%20%20%20%20Recipe%20node%201%E4%BB%B6%E3%81%AB%E3%81%AA%E3%82%8A%E3%80%81%E5%85%83%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E5%80%A4%E3%81%AFplan%E3%81%B8%E5%85%A5%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%60input_names%60%20%E3%81%AF%E3%80%81%E3%81%82%E3%81%A8%E3%81%A7%0A%20%20%20%20runtime%20data%E3%82%92%E6%B8%A1%E3%81%99%E3%81%9F%E3%82%81%E3%81%AE%E5%90%8D%E5%89%8D%E3%81%A7%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(pipeline_api%2C%20template_result)%3A%0A%20%20%20%20%23%20semantic%20lineage%E3%82%92%E5%90%8D%E5%89%8D%E4%BB%98%E3%81%8D%E5%85%A5%E5%8A%9B%E3%82%92%E6%8C%81%E3%81%A4Recipe%E3%81%B8%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B%0A%20%20%20%20recipe_plan%20%3D%20pipeline_api.RecipePlan.from_frame(template_result%2C%20input_names%3D(%22signal%22%2C))%0A%20%20%20%20recipe_payload%20%3D%20recipe_plan.to_dict()%0A%20%20%20%20_operation_ids%20%3D%20%5Bnode%5B%22operation%22%5D%20for%20node%20in%20recipe_payload%5B%22nodes%22%5D%5D%0A%0A%20%20%20%20print(%22%E5%85%A5%E5%8A%9B%E5%90%8D%3A%22%2C%20recipe_payload%5B%22inputs%22%5D%5B0%5D%5B%22name%22%5D)%0A%20%20%20%20print(%22Recipe%20operations%3A%22%2C%20_operation_ids)%0A%20%20%20%20return%20(recipe_payload%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%202.%20JSON%E3%81%A7%E4%BF%9D%E5%AD%98%E3%81%A7%E3%81%8D%E3%82%8B%E5%BD%A2%E3%81%B8%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B%0A%0A%20%20%20%20%60to_dict()%60%20%E3%81%AE%E7%B5%90%E6%9E%9C%E3%81%AFschema%20version%E4%BB%98%E3%81%8D%E3%81%AEJSON-compatible%20value%E3%81%A7%E3%81%99%E3%80%82%0A%20%20%20%20payload%E3%81%AFlive%E3%81%AAPython%20operation%20object%E3%82%92%E4%BF%9D%E5%AD%98%E3%81%9B%E3%81%9A%E3%80%81stable%20operation%20ID%E3%82%92%E4%BF%9D%E6%8C%81%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%60RecipePlan.from_dict()%60%20%E3%81%AFID%E3%82%92built-in%20registry%E3%81%A7%E8%A7%A3%E6%B1%BA%E3%81%97%E3%80%81%E6%9C%AA%E7%9F%A5%E3%81%AEfield%E3%80%81operation%E3%80%81version%E3%80%81%0A%20%20%20%20%E4%B8%8D%E6%AD%A3%E3%81%AAgraph%E3%82%92%E6%8B%92%E5%90%A6%E3%81%97%E3%81%BE%E3%81%99%E3%80%82extension%E3%81%A7%E3%81%AFextract%2Fload%2Fapply%E3%81%AB%E5%90%8C%E3%81%98registry%E3%82%92%E6%B8%A1%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(json%2C%20pipeline_api%2C%20recipe_payload)%3A%0A%20%20%20%20%23%20schema%E3%82%92JSON%E6%96%87%E5%AD%97%E5%88%97%E3%81%AB%E3%81%97%E3%80%81runtime%20object%E3%82%92%E5%85%B1%E6%9C%89%E3%81%9B%E3%81%9A%E3%81%ABplan%E3%82%92%E8%AA%AD%E3%81%BF%E6%88%BB%E3%81%99%0A%20%20%20%20recipe_json%20%3D%20json.dumps(recipe_payload)%0A%20%20%20%20loaded_recipe%20%3D%20pipeline_api.RecipePlan.from_dict(json.loads(recipe_json))%0A%0A%20%20%20%20print(%22Schema%3A%22%2C%20recipe_payload%5B%22schema%22%5D%2C%20recipe_payload%5B%22version%22%5D)%0A%20%20%20%20print(%22JSON%20size%3A%22%2C%20len(recipe_json.encode(%22utf-8%22))%2C%20%22bytes%22)%0A%20%20%20%20return%20(loaded_recipe%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%203.%20%E5%88%A5%E3%81%AEFrame%E3%81%B8%E9%81%A9%E7%94%A8%E3%81%99%E3%82%8B%0A%0A%20%20%20%20plan%E3%81%AB%E8%A8%98%E9%8C%B2%E3%81%95%E3%82%8C%E3%82%8B%E3%81%AE%E3%81%AF%E6%93%8D%E4%BD%9Cintent%E3%81%A7%E3%81%99%E3%80%82%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%80%81metadata%E3%80%81label%E3%80%81sampling%20rate%E3%81%AF%0A%20%20%20%20%60apply()%60%20%E3%81%B8%E6%B8%A1%E3%81%99runtime%20Frame%E3%81%8C%E6%89%80%E6%9C%89%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%60apply()%60%20%E8%87%AA%E4%BD%93%E3%81%AFlazy%20graph%E3%82%92%E4%BD%9C%E3%82%8B%E3%81%A0%E3%81%91%E3%81%A7%E3%80%81%0A%20%20%20%20%E3%81%93%E3%81%AE%E3%82%BB%E3%83%AB%E3%81%A7%E3%81%AF%E6%A4%9C%E8%A8%BC%E3%81%AE%E3%81%9F%E3%82%81%E6%9C%80%E5%BE%8C%E3%81%AB%20%60frame.data%60%20%E3%81%8B%E3%82%89NumPy%E5%80%A4%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(loaded_recipe%2C%20np%2C%20wd)%3A%0A%20%20%20%20%23%20Recipe%20replay%E3%81%A8%E5%90%8C%E3%81%98Frame%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%AE%E7%9B%B4%E6%8E%A5%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%97%E3%82%92%E6%AF%94%E8%BC%83%E3%81%99%E3%82%8B%0A%20%20%20%20runtime_signal%20%3D%20wd.from_numpy(%0A%20%20%20%20%20%20%20%20np.array(%5B%5B2.0%2C%205.0%2C%208.0%2C%2014.0%5D%5D)%2C%0A%20%20%20%20%20%20%20%20sampling_rate%3D8_000%2C%0A%20%20%20%20%20%20%20%20metadata%3D%7B%22recording%22%3A%20%22next%22%7D%2C%0A%20%20%20%20%20%20%20%20ch_labels%3D%5B%22sensor%22%5D%2C%0A%20%20%20%20)%0A%20%20%20%20replayed_signal%20%3D%20loaded_recipe.apply(%7B%22signal%22%3A%20runtime_signal%7D)%0A%20%20%20%20direct_signal%20%3D%20runtime_signal.remove_dc().normalize()%0A%0A%20%20%20%20_replayed_values%20%3D%20replayed_signal.data%0A%20%20%20%20_direct_values%20%3D%20direct_signal.data%0A%20%20%20%20np.testing.assert_allclose(_replayed_values%2C%20_direct_values)%0A%20%20%20%20assert%20replayed_signal.metadata%20%3D%3D%20%7B%22recording%22%3A%20%22next%22%7D%0A%20%20%20%20assert%20runtime_signal.operation_history%20%3D%3D%20%5B%5D%0A%0A%20%20%20%20print(%22%E7%9B%B4%E6%8E%A5%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%97%E3%81%A8%E4%B8%80%E8%87%B4%3A%20yes%22)%0A%20%20%20%20print(%22runtime%20metadata%3A%22%2C%20replayed_signal.metadata)%0A%20%20%20%20print(%22%E5%85%83%E3%81%AEruntime%20Frame%E3%81%AE%E5%B1%A5%E6%AD%B4%3A%22%2C%20runtime_signal.operation_history)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%204.%20%E8%A4%87%E6%95%B0%E5%85%A5%E5%8A%9B%E3%82%82%E5%90%8D%E5%89%8D%E3%81%A7%E5%8C%BA%E5%88%A5%E3%81%99%E3%82%8B%0A%0A%20%20%20%20Frame%E5%90%8C%E5%A3%AB%E3%81%AE%E6%BC%94%E7%AE%97%E3%80%81%60mix()%60%E3%80%81NumPy%2FDask%20operand%E3%81%AF%E3%80%81%E8%BF%BD%E5%8A%A0%E3%81%AEruntime%20input%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%E5%80%A4%E3%82%84NumPy%2FDask%E3%81%A8%E3%81%84%E3%81%86container%E7%A8%AE%E5%88%A5%E3%81%AFschema%E3%81%B8%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BE%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%0A%0A%20%20%20%20%E6%AC%A1%E3%81%AE%E4%BE%8B%E3%81%A7%E3%81%AF%20%60base%60%20%E3%81%A8%20%60other%60%20%E3%82%92%E6%98%8E%E7%A4%BA%E3%81%97%E3%80%81%E5%88%A5%E3%81%AE2%E3%81%A4%E3%81%AEFrame%E3%81%B8mix%20Recipe%E3%82%92%E9%81%A9%E7%94%A8%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%60mix()%60%20%E3%81%AFsource%20time%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8F%E7%8F%BE%E5%9C%A8%E3%81%AEarray%20index%E3%81%A7%E4%BF%A1%E5%8F%B7%E3%82%92%E9%87%8D%E3%81%AD%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np%2C%20pipeline_api%2C%20wd)%3A%0A%20%20%20%20%23%202%E3%81%A4%E3%81%AEFrame%E5%85%A5%E5%8A%9B%E3%82%92%E6%8C%81%E3%81%A4mix%20Recipe%E3%82%92%E4%BD%9C%E3%82%8A%E3%80%81%E5%88%A5%E3%81%AE%E5%85%A5%E5%8A%9B%E3%83%9A%E3%82%A2%E3%81%B8%E9%81%A9%E7%94%A8%E3%81%99%E3%82%8B%0A%20%20%20%20base_template%20%3D%20wd.from_numpy(np.array(%5B%5B1.0%2C%201.0%2C%201.0%2C%201.0%5D%5D)%2C%20sampling_rate%3D8_000)%0A%20%20%20%20other_template%20%3D%20wd.from_numpy(np.array(%5B%5B2.0%2C%202.0%2C%202.0%2C%202.0%5D%5D)%2C%20sampling_rate%3D8_000)%0A%20%20%20%20mix_template_result%20%3D%20base_template.mix(other_template)%0A%20%20%20%20mix_recipe%20%3D%20pipeline_api.RecipePlan.from_frame(mix_template_result%2C%20input_names%3D(%22base%22%2C%20%22other%22))%0A%0A%20%20%20%20next_base%20%3D%20wd.from_numpy(np.array(%5B%5B3.0%2C%203.0%2C%203.0%2C%203.0%5D%5D)%2C%20sampling_rate%3D8_000)%0A%20%20%20%20next_other%20%3D%20wd.from_numpy(np.array(%5B%5B4.0%2C%204.0%2C%204.0%2C%204.0%5D%5D)%2C%20sampling_rate%3D8_000)%0A%20%20%20%20mixed_replay%20%3D%20mix_recipe.apply(%7B%22base%22%3A%20next_base%2C%20%22other%22%3A%20next_other%7D)%0A%20%20%20%20_mix_values%20%3D%20mixed_replay.data%0A%20%20%20%20np.testing.assert_allclose(_mix_values%2C%207.0)%0A%0A%20%20%20%20print(%22mix%E5%85%A5%E5%8A%9B%3A%22%2C%20%5Bitem.name%20for%20item%20in%20mix_recipe.inputs%5D)%0A%20%20%20%20print(%22replay%E7%B5%90%E6%9E%9C%3A%22%2C%20_mix_values.tolist())%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E3%81%BE%E3%81%A8%E3%82%81%0A%0A%20%20%20%20-%20%E3%81%84%E3%81%A4%E3%82%82%E3%81%A9%E3%81%8A%E3%82%8AFrame%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92%E5%91%BC%E3%81%B3%E3%80%81%E7%B5%90%E6%9E%9C%E3%81%8B%E3%82%89%60RecipePlan%60%E3%82%92%E4%BD%9C%E3%82%8B%0A%20%20%20%20-%20Recipe%E3%81%AF%E6%93%8D%E4%BD%9Cintent%E3%81%A8graph%E3%81%A0%E3%81%91%E3%82%92%E6%8C%81%E3%81%A1%E3%80%81%E6%B3%A2%E5%BD%A2%E3%82%84Dask%20graph%E3%82%92%E4%BF%9D%E5%AD%98%E3%81%97%E3%81%AA%E3%81%84%0A%20%20%20%20-%20%E5%AE%9F%E8%A1%8C%E6%99%82%E3%81%AEoperation%20behavior%E3%81%AFstable%20ID%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%99%E3%82%8Bregistry%20handler%E3%81%8C%E4%BE%9B%E7%B5%A6%E3%81%99%E3%82%8B%0A%20%20%20%20-%20%60to_dict()%60%20%2F%20%60from_dict()%60%20%E3%81%A7strict%E3%81%AAschema%E3%82%92%E5%BE%80%E5%BE%A9%E3%81%99%E3%82%8B%0A%20%20%20%20-%20%60apply()%60%20%E3%81%A7%E3%81%AF%E6%8A%BD%E5%87%BA%E6%99%82%E3%81%AB%E6%B1%BA%E3%82%81%E3%81%9F%E5%90%8D%E5%89%8D%E3%81%A7runtime%20input%E3%82%92%E6%B8%A1%E3%81%99%0A%20%20%20%20-%20replay%E5%BE%8C%E3%82%82runtime%20Frame%E3%81%AEmetadata%E3%82%92%E4%BF%9D%E6%8C%81%E3%81%97%E3%80%81%E5%85%A5%E5%8A%9BFrame%E3%81%AF%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%AA%E3%81%84%0A%20%20%20%20-%20%E4%BB%BB%E6%84%8F%E3%81%AE%60Frame.apply(callable)%60%E3%81%AFruntime-only%E3%81%A7%E3%80%81portable%20Recipe%E3%81%AB%E3%81%AF%E3%81%AA%E3%82%89%E3%81%AA%E3%81%84%0A%0A%20%20%20%20%E8%A9%B3%E7%B4%B0%E3%81%AA%E5%85%A5%E5%8A%9B%E5%BD%A2%E7%8A%B6%E3%81%A8%E5%88%B6%E7%B4%84%E3%81%AF%0A%20%20%20%20%5BRecipePlan%20how-to%5D(..%2Fhow-to%2Fpipeline-recipes%2F)%20%E3%82%92%E3%80%81API%20signature%E3%81%AF%0A%20%20%20%20%5BPipeline%20API%20reference%5D(..%2Fapi%2Fpipeline%2F)%20%E3%82%92%E5%8F%82%E7%85%A7%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
137d051726fb191a868d31fa4b357077