我对使用面板创建python仪表板不熟悉。我有一个函数,该函数取决于要通过单击按钮触发的两个小部件参数值。我尝试了以下操作,但均未成功(如果我对与窗口小部件相关的值进行硬编码,则触发函数将起作用)。我不确定是否需要另一个回调函数来更新两个依赖于小部件的变量?谢谢
def delete_ASVs(event):
remove_ASVs_unique_to_controls
@pn.depends(rel_abun_slider.param.value, extraction_checkbox.param.value)
def remove_ASVs_unique_to_controls(rel_abun, extraction):
#rel_abun = 0.01
#extraction = ['1','2']
ASV_remove = []
ASV_experimental = []
control_ASV = list((df[df['type'].str.contains('control') & (df['rel_abun']>rel_abun) & (df['extraction'].isin(extraction))])['ASV'].unique())
Experimental_ASV = list((df[df['type'].str.contains('experimental') & (df['rel_abun']>rel_abun) & (df['extraction'].isin(extraction))])['ASV'].unique())
for ASV in control_ASV:
if ASV in Experimental_ASV:
ASV_experimental.append(ASV)
else:
ASV_remove.append(ASV)
ASV_unique_to_controls_removed = df[~df['ASV'].isin(ASV_remove)]
ASV_remove_df = pd.DataFrame(ASV_remove)
ASV_experimental_df = pd.DataFrame(ASV_experimental)
return ASV_unique_to_controls_removed.to_csv("{}_ext_{}_{}%_rel_abun_control_ASVs_removed.csv".format(project_name, extraction, rel_abun))
remove_control_ASVs_button = pn.widgets.Button(name='remove ASVs observed only in controls')
remove_control_ASVs_button.param.watch(delete_ASVs, 'clicks')