holoviz / param

Param: Make your Python code clearer and more reliable by declaring Parameters
https://param.holoviz.org
BSD 3-Clause "New" or "Revised" License
430 stars 73 forks source link

pipeline @param.output usage #349

Open kcpevey opened 5 years ago

kcpevey commented 5 years ago

This is a little strangeness. I'm not sure if this is anticipated behavior. If so, then it should be documented.

this works (passes the anticipated owi_obj):

@param.output(owi_obj=winds.OWI)
def output(self):  
        return self.execute()

This doesn't work (passes owi_obj as None):

@param.output(owi_obj=winds.OWI)
def owi_obj(self):  
        return self.execute()

And this doesn't work (passes owi_obj as None):

@param.output()
def owi_obj(self):  
        return self.execute()
philippjfr commented 5 years ago

@param.output(owi_obj=winds.OWI)

Could you briefly explain what winds.OWI is? Is it a type?

kcpevey commented 5 years ago

winds.OWI is the class, owi_obj is an instantiated instance of that class (hope I got that language correct)

kcpevey commented 5 years ago

that class is defined in es_workflows/winds.py. I dont think you'll need it, but just in case.

philippjfr commented 5 years ago

Okay makes sense, thanks. Could you do me one more favor and provide the output of:

class.param.outputs()

on the class where this output is declared.

kcpevey commented 5 years ago

I switched to panel master. All of my original statements are still valid and I also discovered that this works (passes the correct owi_obj):

    @param.output(owi_obj=winds.OWI)
    def foo(self):  
        return self.execute()

From code that works pipeline._state.param.outputs() (not sure if that's what you were going for)

{'output': (<param.parameterized.Parameter at 0x120575210>,
  <bound method AdhView.output of HurricaneView(annot=AdhAnnotator(aggregator=<datashader.reductions.mean object at 0x122f0db00>, extent=(nan, nan, nan, nan), height=500, name='AdhAnnotator08918', num_points=1, num_polys=2, path_type=<class 'geoviews.element.geo.Path'>, point_columns=['Pressure', 'Max_Wind_Speed'], points=:Points   [Longitude,Latitude]   (Datetime,Pressure,Max_Wind_Speed,Radius,Direction_Degrees,Direction_Speed), poly_columns=['Group'], polys=:Path   [Longitude,Latitude]   (Group,Datetime,Pressure,Max_Wind_Speed,Radius,Direction_Degrees,Direction_Speed), resolution=1000, result_label='Depth', table_height=150, table_width=400, tile_url='https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{Z}/{Y}/{X}', time=0.0, vertex_columns=[], width=900), cmap_opts=ColormapOpts(colormap=['#2050da', '#2551db', '#2952db', '#2d53db', '#3155db', '#3456db', '#3857dc', '#3b58dc', '#3d59dc', '#405adc', '#435bdd', '#455cdd', '#485ddd', '#4a5fdd', '#4d60dd', '#4f61de', '#5162de', '#5363de', '#5664de', '#5865de', '#5a67df', '#5c68df', '#5e69df', '#606adf', '#616be0', '#636ce0', '#656ee0', '#676fe0', '#6970e0', '#6b71e1', '#6c72e1', '#6e74e1', '#7075e1', '#7176e1', '#7377e2', '#7578e2', '#7679e2', '#787be2', '#7a7ce2', '#7b7de2', '#7d7ee3', '#7e7fe3', '#8081e3', '#8282e3', '#8383e3', '#8584e4', '#8686e4', '#8887e4', '#8988e4', '#8b89e4', '#8c8ae5', '#8e8ce5', '#8f8de5', '#908ee5', '#928fe5', '#9391e5', '#9592e6', '#9693e6', '#9894e6', '#9996e6', '#9a97e6', '#9c98e7', '#9d99e7', '#9e9be7', '#a09ce7', '#a19de7', '#a39ee7', '#a4a0e8', '#a5a1e8', '#a7a2e8', '#a8a3e8', '#a9a5e8', '#aba6e8', '#aca7e9', '#ada8e9', '#afaae9', '#b0abe9', '#b1ace9', '#b2aee9', '#b4afea', '#b5b0ea', '#b6b1ea', '#b8b3ea', '#b9b4ea', '#bab5ea', '#bbb7ea', '#bdb8eb', '#beb9eb', '#bfbaeb', '#c0bceb', '#c2bdeb', '#c3beeb', '#c4c0ec', '#c5c1ec', '#c7c2ec', '#c8c4ec', '#c9c5ec', '#cac6ec', '#ccc8ec', '#cdc9ec', '#cecaed', '#cfcbed', '#d1cded', '#d2ceed', '#d3cfed', '#d4d1ed', '#d5d2ed', '#d7d3ee', '#d8d5ee', '#d9d6ee', '#dad7ee', '#dbd9ee', '#dddaee', '#dedbee', '#dfddee', '#e0deee', '#e1dfee', '#e3e0ee', '#e4e1ee', '#e5e2ee', '#e6e3ee', '#e7e4ee', '#e8e5ed', '#e9e6ed', '#eae6ec', '#ebe7ec', '#ece7eb', '#ece7ea', '#ede7e9', '#eee6e8', '#eee6e6', '#efe5e5', '#efe5e4', '#f0e4e2', '#f0e3e0', '#f0e2df', '#f1e0dd', '#f1dfdb', '#f1ded9', '#f1dcd7', '#f1dbd6', '#f1d9d4', '#f1d8d2', '#f1d6d0', '#f1d5ce', '#f1d3cc', '#f1d2ca', '#f1d0c8', '#f1cfc6', '#f1cdc4', '#f1ccc2', '#f1cac0', '#f1c9bf', '#f1c7bd', '#f1c5bb', '#f1c4b9', '#f0c2b7', '#f0c1b5', '#f0bfb3', '#f0beb1', '#f0bcaf', '#f0bbad', '#efb9ac', '#efb7aa', '#efb6a8', '#efb4a6', '#efb3a4', '#eeb1a2', '#eeb0a0', '#eeae9e', '#eead9d', '#edab9b', '#eda999', '#eda897', '#eda695', '#eca593', '#eca391', '#eca290', '#eba08e', '#eb9f8c', '#eb9d8a', '#ea9b88', '#ea9a87', '#ea9885', '#e99783', '#e99581', '#e9947f', '#e8927d', '#e8907c', '#e88f7a', '#e78d78', '#e78c76', '#e68a75', '#e68973', '#e58771', '#e5856f', '#e5846d', '#e4826c', '#e4816a', '#e37f68', '#e37d66', '#e27c65', '#e27a63', '#e17961', '#e1775f', '#e0755e', '#e0745c', '#df725a', '#df7158', '#de6f57', '#de6d55', '#dd6c53', '#dd6a52', '#dc6850', '#db674e', '#db654c', '#da634b', '#da6249', '#d96047', '#d95e46', '#d85d44', '#d75b42', '#d75940', '#d6573f', '#d5563d', '#d5543b', '#d4523a', '#d45038', '#d34e36', '#d24d35', '#d24b33', '#d14931', '#d04730', '#d0452e', '#cf432c', '#ce412a', '#ce3f29', '#cd3d27', '#cc3b25', '#cb3924', '#cb3722', '#ca3420', '#c9321e', '#c9301d', '#c82d1b', '#c72b19', '#c62817', '#c62515', '#c52214', '#c41f12', '#c31c10', '#c3180e', '#c2140c', '#c10f09', '#c00907', '#bf0205'], name='ColormapOpts09053'), display_range=DisplayRangeOpts(color_range=(0.0, 10), name='DisplayRangeOpts09052'), grid_width=OwiGridWidth(grid_width='Match AdH grid', name='OwiGridWidth08035'), hurricane_params=HurricaneParameters(date_start=datetime.datetime(2019, 4, 12, 9, 5, 5, 282811), date_stop=datetime.datetime(2019, 4, 12, 14, 5, 5, 282886), foo='/Users/rdchlkcp/ers/gitHub/es-workflows/container_reformat', hurricane_path_file='/Users/rdchlkcp/ers/gitHub/es-workflows/container_reformat/data/hurricane/hurricane_path_long.txt', name='HurricaneParameters08034'), name='HurricaneView09056', proj_widget=Projection(UTM_zone_hemi='North', UTM_zone_num=52, crs_label='Geographic', name='Projection08033'), resolution=1000, view_analysis=False, wireframe=ShowElements(mesh_elements=False, name='ShowElements09055'), wmts_widget=WMTS(name='WMTS09054', tile_server='https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{Z}/{Y}/{X}'))>,
  None),
 'owi_obj': (<param.ClassSelector at 0x102cb8f60>,
  <bound method HurricaneView.foo of HurricaneView(annot=AdhAnnotator(aggregator=<datashader.reductions.mean object at 0x122f0db00>, extent=(nan, nan, nan, nan), height=500, name='AdhAnnotator08918', num_points=1, num_polys=2, path_type=<class 'geoviews.element.geo.Path'>, point_columns=['Pressure', 'Max_Wind_Speed'], points=:Points   [Longitude,Latitude]   (Datetime,Pressure,Max_Wind_Speed,Radius,Direction_Degrees,Direction_Speed), poly_columns=['Group'], polys=:Path   [Longitude,Latitude]   (Group,Datetime,Pressure,Max_Wind_Speed,Radius,Direction_Degrees,Direction_Speed), resolution=1000, result_label='Depth', table_height=150, table_width=400, tile_url='https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{Z}/{Y}/{X}', time=0.0, vertex_columns=[], width=900), cmap_opts=ColormapOpts(colormap=['#2050da', '#2551db', '#2952db', '#2d53db', '#3155db', '#3456db', '#3857dc', '#3b58dc', '#3d59dc', '#405adc', '#435bdd', '#455cdd', '#485ddd', '#4a5fdd', '#4d60dd', '#4f61de', '#5162de', '#5363de', '#5664de', '#5865de', '#5a67df', '#5c68df', '#5e69df', '#606adf', '#616be0', '#636ce0', '#656ee0', '#676fe0', '#6970e0', '#6b71e1', '#6c72e1', '#6e74e1', '#7075e1', '#7176e1', '#7377e2', '#7578e2', '#7679e2', '#787be2', '#7a7ce2', '#7b7de2', '#7d7ee3', '#7e7fe3', '#8081e3', '#8282e3', '#8383e3', '#8584e4', '#8686e4', '#8887e4', '#8988e4', '#8b89e4', '#8c8ae5', '#8e8ce5', '#8f8de5', '#908ee5', '#928fe5', '#9391e5', '#9592e6', '#9693e6', '#9894e6', '#9996e6', '#9a97e6', '#9c98e7', '#9d99e7', '#9e9be7', '#a09ce7', '#a19de7', '#a39ee7', '#a4a0e8', '#a5a1e8', '#a7a2e8', '#a8a3e8', '#a9a5e8', '#aba6e8', '#aca7e9', '#ada8e9', '#afaae9', '#b0abe9', '#b1ace9', '#b2aee9', '#b4afea', '#b5b0ea', '#b6b1ea', '#b8b3ea', '#b9b4ea', '#bab5ea', '#bbb7ea', '#bdb8eb', '#beb9eb', '#bfbaeb', '#c0bceb', '#c2bdeb', '#c3beeb', '#c4c0ec', '#c5c1ec', '#c7c2ec', '#c8c4ec', '#c9c5ec', '#cac6ec', '#ccc8ec', '#cdc9ec', '#cecaed', '#cfcbed', '#d1cded', '#d2ceed', '#d3cfed', '#d4d1ed', '#d5d2ed', '#d7d3ee', '#d8d5ee', '#d9d6ee', '#dad7ee', '#dbd9ee', '#dddaee', '#dedbee', '#dfddee', '#e0deee', '#e1dfee', '#e3e0ee', '#e4e1ee', '#e5e2ee', '#e6e3ee', '#e7e4ee', '#e8e5ed', '#e9e6ed', '#eae6ec', '#ebe7ec', '#ece7eb', '#ece7ea', '#ede7e9', '#eee6e8', '#eee6e6', '#efe5e5', '#efe5e4', '#f0e4e2', '#f0e3e0', '#f0e2df', '#f1e0dd', '#f1dfdb', '#f1ded9', '#f1dcd7', '#f1dbd6', '#f1d9d4', '#f1d8d2', '#f1d6d0', '#f1d5ce', '#f1d3cc', '#f1d2ca', '#f1d0c8', '#f1cfc6', '#f1cdc4', '#f1ccc2', '#f1cac0', '#f1c9bf', '#f1c7bd', '#f1c5bb', '#f1c4b9', '#f0c2b7', '#f0c1b5', '#f0bfb3', '#f0beb1', '#f0bcaf', '#f0bbad', '#efb9ac', '#efb7aa', '#efb6a8', '#efb4a6', '#efb3a4', '#eeb1a2', '#eeb0a0', '#eeae9e', '#eead9d', '#edab9b', '#eda999', '#eda897', '#eda695', '#eca593', '#eca391', '#eca290', '#eba08e', '#eb9f8c', '#eb9d8a', '#ea9b88', '#ea9a87', '#ea9885', '#e99783', '#e99581', '#e9947f', '#e8927d', '#e8907c', '#e88f7a', '#e78d78', '#e78c76', '#e68a75', '#e68973', '#e58771', '#e5856f', '#e5846d', '#e4826c', '#e4816a', '#e37f68', '#e37d66', '#e27c65', '#e27a63', '#e17961', '#e1775f', '#e0755e', '#e0745c', '#df725a', '#df7158', '#de6f57', '#de6d55', '#dd6c53', '#dd6a52', '#dc6850', '#db674e', '#db654c', '#da634b', '#da6249', '#d96047', '#d95e46', '#d85d44', '#d75b42', '#d75940', '#d6573f', '#d5563d', '#d5543b', '#d4523a', '#d45038', '#d34e36', '#d24d35', '#d24b33', '#d14931', '#d04730', '#d0452e', '#cf432c', '#ce412a', '#ce3f29', '#cd3d27', '#cc3b25', '#cb3924', '#cb3722', '#ca3420', '#c9321e', '#c9301d', '#c82d1b', '#c72b19', '#c62817', '#c62515', '#c52214', '#c41f12', '#c31c10', '#c3180e', '#c2140c', '#c10f09', '#c00907', '#bf0205'], name='ColormapOpts09053'), display_range=DisplayRangeOpts(color_range=(0.0, 10), name='DisplayRangeOpts09052'), grid_width=OwiGridWidth(grid_width='Match AdH grid', name='OwiGridWidth08035'), hurricane_params=HurricaneParameters(date_start=datetime.datetime(2019, 4, 12, 9, 5, 5, 282811), date_stop=datetime.datetime(2019, 4, 12, 14, 5, 5, 282886), foo='/Users/rdchlkcp/ers/gitHub/es-workflows/container_reformat', hurricane_path_file='/Users/rdchlkcp/ers/gitHub/es-workflows/container_reformat/data/hurricane/hurricane_path_long.txt', name='HurricaneParameters08034'), name='HurricaneView09056', proj_widget=Projection(UTM_zone_hemi='North', UTM_zone_num=52, crs_label='Geographic', name='Projection08033'), resolution=1000, view_analysis=False, wireframe=ShowElements(mesh_elements=False, name='ShowElements09055'), wmts_widget=WMTS(name='WMTS09054', tile_server='https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{Z}/{Y}/{X}'))>,
  None)}
kcpevey commented 5 years ago

pipeline._state.param.outputs() from code that doesn't work:

{'output': (<param.parameterized.Parameter at 0x128bf7210>,
  <bound method AdhView.output of HurricaneView(annot=AdhAnnotator(aggregator=<datashader.reductions.mean object at 0x12afae6a0>, extent=(nan, nan, nan, nan), height=500, name='AdhAnnotator04408', num_points=1, num_polys=2, path_type=<class 'geoviews.element.geo.Path'>, point_columns=['Pressure', 'Max_Wind_Speed'], points=:Points   [Longitude,Latitude]   (Datetime,Pressure,Max_Wind_Speed,Radius,Direction_Degrees,Direction_Speed), poly_columns=['Group'], polys=:Path   [Longitude,Latitude]   (Group,Datetime,Pressure,Max_Wind_Speed,Radius,Direction_Degrees,Direction_Speed), resolution=1000, result_label='Depth', table_height=150, table_width=400, tile_url='https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{Z}/{Y}/{X}', time=0.0, vertex_columns=[], width=900), cmap_opts=ColormapOpts(colormap=['#2050da', '#2551db', '#2952db', '#2d53db', '#3155db', '#3456db', '#3857dc', '#3b58dc', '#3d59dc', '#405adc', '#435bdd', '#455cdd', '#485ddd', '#4a5fdd', '#4d60dd', '#4f61de', '#5162de', '#5363de', '#5664de', '#5865de', '#5a67df', '#5c68df', '#5e69df', '#606adf', '#616be0', '#636ce0', '#656ee0', '#676fe0', '#6970e0', '#6b71e1', '#6c72e1', '#6e74e1', '#7075e1', '#7176e1', '#7377e2', '#7578e2', '#7679e2', '#787be2', '#7a7ce2', '#7b7de2', '#7d7ee3', '#7e7fe3', '#8081e3', '#8282e3', '#8383e3', '#8584e4', '#8686e4', '#8887e4', '#8988e4', '#8b89e4', '#8c8ae5', '#8e8ce5', '#8f8de5', '#908ee5', '#928fe5', '#9391e5', '#9592e6', '#9693e6', '#9894e6', '#9996e6', '#9a97e6', '#9c98e7', '#9d99e7', '#9e9be7', '#a09ce7', '#a19de7', '#a39ee7', '#a4a0e8', '#a5a1e8', '#a7a2e8', '#a8a3e8', '#a9a5e8', '#aba6e8', '#aca7e9', '#ada8e9', '#afaae9', '#b0abe9', '#b1ace9', '#b2aee9', '#b4afea', '#b5b0ea', '#b6b1ea', '#b8b3ea', '#b9b4ea', '#bab5ea', '#bbb7ea', '#bdb8eb', '#beb9eb', '#bfbaeb', '#c0bceb', '#c2bdeb', '#c3beeb', '#c4c0ec', '#c5c1ec', '#c7c2ec', '#c8c4ec', '#c9c5ec', '#cac6ec', '#ccc8ec', '#cdc9ec', '#cecaed', '#cfcbed', '#d1cded', '#d2ceed', '#d3cfed', '#d4d1ed', '#d5d2ed', '#d7d3ee', '#d8d5ee', '#d9d6ee', '#dad7ee', '#dbd9ee', '#dddaee', '#dedbee', '#dfddee', '#e0deee', '#e1dfee', '#e3e0ee', '#e4e1ee', '#e5e2ee', '#e6e3ee', '#e7e4ee', '#e8e5ed', '#e9e6ed', '#eae6ec', '#ebe7ec', '#ece7eb', '#ece7ea', '#ede7e9', '#eee6e8', '#eee6e6', '#efe5e5', '#efe5e4', '#f0e4e2', '#f0e3e0', '#f0e2df', '#f1e0dd', '#f1dfdb', '#f1ded9', '#f1dcd7', '#f1dbd6', '#f1d9d4', '#f1d8d2', '#f1d6d0', '#f1d5ce', '#f1d3cc', '#f1d2ca', '#f1d0c8', '#f1cfc6', '#f1cdc4', '#f1ccc2', '#f1cac0', '#f1c9bf', '#f1c7bd', '#f1c5bb', '#f1c4b9', '#f0c2b7', '#f0c1b5', '#f0bfb3', '#f0beb1', '#f0bcaf', '#f0bbad', '#efb9ac', '#efb7aa', '#efb6a8', '#efb4a6', '#efb3a4', '#eeb1a2', '#eeb0a0', '#eeae9e', '#eead9d', '#edab9b', '#eda999', '#eda897', '#eda695', '#eca593', '#eca391', '#eca290', '#eba08e', '#eb9f8c', '#eb9d8a', '#ea9b88', '#ea9a87', '#ea9885', '#e99783', '#e99581', '#e9947f', '#e8927d', '#e8907c', '#e88f7a', '#e78d78', '#e78c76', '#e68a75', '#e68973', '#e58771', '#e5856f', '#e5846d', '#e4826c', '#e4816a', '#e37f68', '#e37d66', '#e27c65', '#e27a63', '#e17961', '#e1775f', '#e0755e', '#e0745c', '#df725a', '#df7158', '#de6f57', '#de6d55', '#dd6c53', '#dd6a52', '#dc6850', '#db674e', '#db654c', '#da634b', '#da6249', '#d96047', '#d95e46', '#d85d44', '#d75b42', '#d75940', '#d6573f', '#d5563d', '#d5543b', '#d4523a', '#d45038', '#d34e36', '#d24d35', '#d24b33', '#d14931', '#d04730', '#d0452e', '#cf432c', '#ce412a', '#ce3f29', '#cd3d27', '#cc3b25', '#cb3924', '#cb3722', '#ca3420', '#c9321e', '#c9301d', '#c82d1b', '#c72b19', '#c62817', '#c62515', '#c52214', '#c41f12', '#c31c10', '#c3180e', '#c2140c', '#c10f09', '#c00907', '#bf0205'], name='ColormapOpts04543'), display_range=DisplayRangeOpts(color_range=(0.0, 10), name='DisplayRangeOpts04542'), grid_width=OwiGridWidth(grid_width='Match AdH grid', name='OwiGridWidth03525'), hurricane_params=HurricaneParameters(date_start=datetime.datetime(2019, 4, 12, 9, 16, 20, 307668), date_stop=datetime.datetime(2019, 4, 12, 14, 16, 20, 307744), foo='/Users/rdchlkcp/ers/gitHub/es-workflows/container_reformat', hurricane_path_file='/Users/rdchlkcp/ers/gitHub/es-workflows/container_reformat/data/hurricane/hurricane_path_long.txt', name='HurricaneParameters03524'), name='HurricaneView04546', proj_widget=Projection(UTM_zone_hemi='North', UTM_zone_num=52, crs_label='Geographic', name='Projection03523'), resolution=1000, view_analysis=False, wireframe=ShowElements(mesh_elements=False, name='ShowElements04545'), wmts_widget=WMTS(name='WMTS04544', tile_server='https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{Z}/{Y}/{X}'))>,
  None)}
jbednar commented 5 years ago

This doesn't work (passes owi_obj as None):

@param.output(owi_obj=winds.OWI)
def owi_obj(self):  
return self.execute()

Shouldn't this be the same as the following, and if so, does that work?

@param.output(winds.OWI)
def owi_obj(self):  
return self.execute()
ppwadhwa commented 3 years ago

@kcpevey Can you summarize what changes we should include in the docs? Thank you!