File size: 1,415 Bytes
dab8252
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import gradio as gr
from umpire_decision import simulate_umpire_decision
from drs_review import analyze_drs
from final_decision import compare_decisions

def lbw_decision_app(pitch_zone, shot_offered, impact_zone, ball_tracking):
    # Step 1 - On-field
    onfield = simulate_umpire_decision(pitch_zone, shot_offered, impact_zone, ball_tracking)

    # Step 2 - DRS
    drs_result = analyze_drs(ball_tracking)

    # Step 3 - Final Comparison
    final = compare_decisions(onfield, drs_result)

    return f"""🏏 **On-field Decision**: {onfield['decision']}
πŸ“Œ Reason: {onfield['reason']}

πŸ§ͺ **DRS Verdict**: {'CONFIRMED βœ…' if final['confirmed'] else 'OVERTURNED ❌'}
πŸ“Œ DRS Analysis: {drs_result['reason']}

βœ… **Final Decision**: {final['final_decision']}"""

iface = gr.Interface(
    fn=lbw_decision_app,
    inputs=[
        gr.Radio(["In Line", "Outside Off", "Outside Leg"], label="Pitch Location"),
        gr.Radio(["Yes", "No"], label="Was Shot Offered?"),
        gr.Radio(["In Line", "Outside Off", "Outside Leg"], label="Impact Zone"),
        gr.Textbox(label="Ball Tracking Data (JSON format)", placeholder='{"pitching": "in line", "impact": "in line", "trajectory": "hitting"}'),
    ],
    outputs="markdown",
    title="Smart LBW Decision Review System",
    description="Simulates on-field umpire call and DRS-based final decision."
)

if __name__ == "__main__":
    iface.launch()