python面板仪表板中的按钮触发事件

时间:2020-06-23 05:38:15

标签: python button callback panel

我对使用面板创建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')

0 个答案:

没有答案