rework concurrency logic
Browse files
    	
        app.py
    CHANGED
    
    | 
         @@ -14,6 +14,8 @@ from datasets import load_dataset 
     | 
|
| 14 | 
         
             
            import tempfile
         
     | 
| 15 | 
         
             
            from loguru import logger
         
     | 
| 16 | 
         
             
            from about import ENDPOINTS, LB_COLS, LB_AVG, LB_DTYPES
         
     | 
| 
         | 
|
| 
         | 
|
| 17 | 
         | 
| 18 | 
         | 
| 19 | 
         | 
| 
         @@ -53,20 +55,33 @@ def build_leaderboard(df_results): 
     | 
|
| 53 | 
         
             
            # Initialize global dataframe
         
     | 
| 54 | 
         
             
            current_df = fetch_dataset_df()
         
     | 
| 55 | 
         | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 56 | 
         
             
            def gradio_interface():
         
     | 
| 57 | 
         | 
| 58 | 
         
             
                with gr.Blocks(title="OpenADMET ADMET Challenge", fill_height=False,
         
     | 
| 59 | 
         
             
                               theme=gr.themes.Default(text_size=sizes.text_lg)) as demo:
         
     | 
| 60 | 
         
            -
                    timer = gr.Timer(30)  # Run every 30 seconds 
     | 
| 61 | 
         
             
                    data_version = gr.State(0)  # Track data changes
         
     | 
| 62 | 
         
            -
                    def  
     | 
| 63 | 
         
            -
                         
     | 
| 64 | 
         
            -
             
     | 
| 65 | 
         
            -
             
     | 
| 66 | 
         
            -
                            current_df = new_df
         
     | 
| 67 | 
         
            -
                            return v + 1
         
     | 
| 68 | 
         
            -
                        return v
         
     | 
| 69 | 
         
            -
                    timer.tick(fn=update_current_dataframe, inputs=[data_version], outputs=data_version)
         
     | 
| 70 | 
         | 
| 71 | 
         
             
                    ### Header
         
     | 
| 72 | 
         
             
                    with gr.Row():
         
     | 
| 
         @@ -247,8 +262,6 @@ def gradio_interface(): 
     | 
|
| 247 | 
         
             
                            gr.Markdown("""
         
     | 
| 248 | 
         
             
                                        View the leaderboard for each ADMET endpoint by selecting the appropiate tab.
         
     | 
| 249 | 
         | 
| 250 | 
         
            -
                                        **THE RESULTS ON THE LEADERBOARD ARE CURRENTLY PLACEHOLDERS AND DO NOT REPRESENT ACTUAL SUBMISSIONS.**
         
     | 
| 251 | 
         
            -
                                        Actual results will be available once the challenge is open.
         
     | 
| 252 | 
         
             
                                        """)
         
     | 
| 253 | 
         
             
                            # Make separate leaderboards in separate tabs  
         
     | 
| 254 | 
         
             
                            #per_ep = build_leaderboard()
         
     | 
| 
         | 
|
| 14 | 
         
             
            import tempfile
         
     | 
| 15 | 
         
             
            from loguru import logger
         
     | 
| 16 | 
         
             
            from about import ENDPOINTS, LB_COLS, LB_AVG, LB_DTYPES
         
     | 
| 17 | 
         
            +
            import time
         
     | 
| 18 | 
         
            +
            import threading
         
     | 
| 19 | 
         | 
| 20 | 
         | 
| 21 | 
         | 
| 
         | 
|
| 55 | 
         
             
            # Initialize global dataframe
         
     | 
| 56 | 
         
             
            current_df = fetch_dataset_df()
         
     | 
| 57 | 
         | 
| 58 | 
         
            +
            # Initialize global counter
         
     | 
| 59 | 
         
            +
            data_version_counter = 0
         
     | 
| 60 | 
         
            +
             
     | 
| 61 | 
         
            +
             
     | 
| 62 | 
         
            +
             
     | 
| 63 | 
         
            +
            def update_current_dataframe():
         
     | 
| 64 | 
         
            +
                global current_df # ugly but works
         
     | 
| 65 | 
         
            +
                while True:
         
     | 
| 66 | 
         
            +
                    logger.info("Fetching latest dataset for leaderboard...")
         
     | 
| 67 | 
         
            +
                    current_df = fetch_dataset_df()
         
     | 
| 68 | 
         
            +
                    logger.debug(f"Dataset version updated")
         
     | 
| 69 | 
         
            +
                    time.sleep(30)  # Check for updates every 30 seconds
         
     | 
| 70 | 
         
            +
             
     | 
| 71 | 
         
            +
            threading.Thread(target=update_current_dataframe, daemon=True).start()
         
     | 
| 72 | 
         
            +
             
     | 
| 73 | 
         
            +
             
     | 
| 74 | 
         
            +
             
     | 
| 75 | 
         
             
            def gradio_interface():
         
     | 
| 76 | 
         | 
| 77 | 
         
             
                with gr.Blocks(title="OpenADMET ADMET Challenge", fill_height=False,
         
     | 
| 78 | 
         
             
                               theme=gr.themes.Default(text_size=sizes.text_lg)) as demo:
         
     | 
| 79 | 
         
            +
                    timer = gr.Timer(30)  # Run every 30 seconds
         
     | 
| 80 | 
         
             
                    data_version = gr.State(0)  # Track data changes
         
     | 
| 81 | 
         
            +
                    def increment_data_version(current_version):
         
     | 
| 82 | 
         
            +
                        return current_version + 1
         
     | 
| 83 | 
         
            +
                    
         
     | 
| 84 | 
         
            +
                    timer.tick(fn=increment_data_version, inputs=[data_version], outputs=data_version)
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 85 | 
         | 
| 86 | 
         
             
                    ### Header
         
     | 
| 87 | 
         
             
                    with gr.Row():
         
     | 
| 
         | 
|
| 262 | 
         
             
                            gr.Markdown("""
         
     | 
| 263 | 
         
             
                                        View the leaderboard for each ADMET endpoint by selecting the appropiate tab.
         
     | 
| 264 | 
         | 
| 
         | 
|
| 
         | 
|
| 265 | 
         
             
                                        """)
         
     | 
| 266 | 
         
             
                            # Make separate leaderboards in separate tabs  
         
     | 
| 267 | 
         
             
                            #per_ep = build_leaderboard()
         
     |