vancauwe commited on
Commit
b493bab
·
1 Parent(s): cb23aba

feat: use json config for first level of death/wound cause

Browse files
app/assets/dropdowns/dropdown_config.json ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Collision with a means of transport":
3
+ {
4
+ "road vehicle":
5
+ {
6
+ "road type": {"Options" : ["highway", "main road", "secondary road", "local road/path/trail", "parking lot", "other", "unknown"]},
7
+ "infrastructure number": "Open"
8
+ },
9
+ "train":
10
+ {
11
+ "infrastructure number": "Open"
12
+ },
13
+ "aircraft": {},
14
+ "boat": {},
15
+ "other": {},
16
+ "unknown": {}
17
+ },
18
+ "Destruction / Deliberatly removed" :
19
+ {
20
+ "hunting":
21
+ {
22
+ "Options": ["shooting", "bow", "falconry", "hounds hunting", "digging up", "other", "unknown"]
23
+ },
24
+ "trap":
25
+ {
26
+ "Options": ["killing trap", "pole trap", "trap cage", "corvids nasse", "net", "cage trap", "fall-trap", "glue trap", "insect trap", "other", "unknown"]
27
+ },
28
+ "poisoning": {},
29
+ "removal or direct capture":
30
+ {
31
+ "Options": ["gassing", "raptor captured at nest", "brood destruction", "traffic/trade", "capture accident", "scientific sample", "other", "unknown"]
32
+ },
33
+ "fishing":
34
+ {
35
+ "Options": ["drowned/tangled", "beached with capture indications", "other", "unknown"]
36
+ },
37
+ "other": {},
38
+ "unknown": {}
39
+ },
40
+ "Indirect destruction":
41
+ {
42
+ "pylone and electric grid":
43
+ {
44
+ "object":
45
+ {
46
+ "Options": ["electric line", "pole/pylon", "other", "unknown"]
47
+ },
48
+ "cause":
49
+ {
50
+ "Options": ["collision", "electrocution", "unknown"]
51
+ }
52
+ },
53
+ "windfarm": {},
54
+ "other collision":
55
+ {
56
+ "Object":
57
+ {
58
+ "Options": ["window", "building", "lighthouse", "cable", "wire fence/barbed wire", "other crash", "unknown"]
59
+ }
60
+ },
61
+ "fall":
62
+ {
63
+ "Object":
64
+ {
65
+ "Options": ["chimney", "empty pole", "hole/well", "other", "unknown"]
66
+ }
67
+ },
68
+ "development work":
69
+ {
70
+ "Type":
71
+ {
72
+ "Options": ["transport infrastructure", "building", "other", "unknown"]
73
+ }
74
+ },
75
+ "pollution / contamination":
76
+ {
77
+ "Type":
78
+ {
79
+ "Options": ["oil pollution", "chemical pollution", "heavy metals", "light", "noise", "plastic ingestion", "other", "unknown"]
80
+ }
81
+ },
82
+ "agricultural net protection": {},
83
+ "vegetal / forest work":
84
+ {
85
+ "Type":
86
+ {
87
+ "Options": ["clearing/mowing/plowing", "tree felling/pruning", "other", "unknown"]
88
+ }
89
+ },
90
+ "other": {},
91
+ "unknown": {}
92
+ },
93
+ "Natural cause":
94
+ {
95
+ "predation":
96
+ {
97
+ "responsible":
98
+ {
99
+ "Options": ["cat", "dog", "rooster/hen", "other domestic animal", "wild birds", "wild mammal", "other", "unknown"]
100
+ }
101
+ },
102
+ "weather":
103
+ {
104
+ "Type":
105
+ {
106
+ "Options": ["cold wave", "drought", "hail", "lightening", "storm", "other", "unknown"]
107
+ }
108
+ },
109
+ "natural disaster":
110
+ {
111
+ "Type":
112
+ {
113
+ "Options": ["fire", "avalanche", "rock fall", "mudslide", "volcanic eruption/ashes", "other", "unknown"]
114
+ }
115
+ },
116
+ "nest fall": {},
117
+ "strading due to exhaustion": {},
118
+ "disease/parasite": {},
119
+ "accidental drowing":
120
+ {
121
+ "Container":
122
+ {
123
+ "Options": ["drinking trough", "pool", "storm pool", "irrigation pool", "natural pool", "flood", "other container", "unknown"]
124
+ }
125
+ },
126
+ "other": {},
127
+ "unknown": {}
128
+ },
129
+ "Unknown": {}
130
+ }
app/assets/dropdowns/submit_config.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Event follow-up":
3
+ {
4
+ "Animal collected": {
5
+ "Options": ["Yes", "No"]
6
+ },
7
+ "Recipient": {
8
+ "Options": ["Veterinary", "Care center", "Local Museum", "National Museum", "Other"]
9
+ },
10
+ "Radiography": {
11
+ "Options": ["Yes", "No", "Unknown"]
12
+ },
13
+ "Given answer": {
14
+ "Options": ["Nothing", "Complaint against X", "Complaint", "Police call", "Discussion with the speaker", "Press release", "Unknown"]
15
+ },
16
+ "Name of recipient / museum": {
17
+ "Open": {}
18
+ },
19
+ "Collection reference": {
20
+ "Open": {}
21
+ }
22
+ }
23
+ }
app/dropdowns.py CHANGED
@@ -1,32 +1,37 @@
1
  import gradio as gr
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
  def dropdown_collision():
4
- return gr.Dropdown(choices=["Road vehicle", "Train", "Aircraft", "Boat", "Other", "Unknown"], label="Collision with a means of transport", interactive=True)
 
 
5
 
6
  def dropdown_deliberate_destruction():
7
- return gr.Dropdown(choices=["Hunting", "Trap", "Poisoning", "Removal or direct capture", "Fishing", "Other", "Unkown"], label="Destruction / Deliberatly removed", interactive=True)
 
 
8
 
9
  def dropdown_indirect_destruction():
10
- return gr.Dropdown(choices=["pylone and electric grid",
11
- "windfarm",
12
- "other collision",
13
- "fall",
14
- "development work",
15
- "pollution / contamination",
16
- "agricultural net protection",
17
- "vegetal / forest work",
18
- "other",
19
- "unknown"
20
- ], label="Indirect destruction", interactive=True)
21
 
22
  def dropdown_natural_cause():
23
- return gr.Dropdown(choices=["predation",
24
- "weather",
25
- "natural disaster",
26
- "nest fall",
27
- "stranding due to exhaustion",
28
- "disease/parasite",
29
- "accidental drowning",
30
- "other",
31
- "unknown"
32
- ], label="Indirect destruction", interactive=True)
 
1
  import gradio as gr
2
+ import json
3
+ import os
4
+
5
+ def load_config(file_path):
6
+ with open(file_path) as f:
7
+ config = json.load(f)
8
+ return config
9
+
10
+ def retrieve_config_options(label):
11
+ path = os.getcwd()
12
+ dropdown_config_path = path + "/assets/dropdowns/dropdown_config.json"
13
+ dropdown_config = load_config(dropdown_config_path)
14
+ options = list(dropdown_config[label].keys())
15
+ options = [option.title() for option in options]
16
+ return options
17
+
18
 
19
  def dropdown_collision():
20
+ label = "Collision with a means of transport"
21
+ options = retrieve_config_options(label)
22
+ return gr.Dropdown(choices=options, label=label, interactive=True)
23
 
24
  def dropdown_deliberate_destruction():
25
+ label = "Destruction / Deliberatly removed"
26
+ options = retrieve_config_options(label)
27
+ return gr.Dropdown(choices=options, label=label, interactive=True)
28
 
29
  def dropdown_indirect_destruction():
30
+ label = "Indirect destruction"
31
+ options = retrieve_config_options(label)
32
+ return gr.Dropdown(choices=options, label=label, interactive=True)
 
 
 
 
 
 
 
 
33
 
34
  def dropdown_natural_cause():
35
+ label = "Natural cause"
36
+ options = retrieve_config_options(label)
37
+ return gr.Dropdown(choices=options, label=label, interactive=True)
 
 
 
 
 
 
 
app/main.py CHANGED
@@ -42,38 +42,44 @@ with gr.Blocks() as demo:
42
  butt_wounded = gr.Button("Wounded")
43
 
44
  # Initiate sections
45
- section_dead, button_collision, button_deliberate_destruction, button_indirect_destruction, button_natural_cause, dropdown = show_section_dead(False)
46
- section_wounded, button_collision, button_deliberate_destruction, button_indirect_destruction, button_natural_cause, dropdown = show_section_wounded(False)
47
 
48
  # Dead Button Logic
49
  partial_show_section_dead = partial(show_section_dead, True)
50
  partial_hide_section_wounded = partial(show_section_wounded, False)
51
  butt_dead.click(partial_show_section_dead, inputs=None, outputs=[section_dead,
52
- button_collision, button_deliberate_destruction, button_indirect_destruction, button_natural_cause,
53
- dropdown
54
  ])
55
  butt_dead.click(partial_hide_section_wounded, inputs=None, outputs=[section_wounded,
56
- button_collision, button_deliberate_destruction, button_indirect_destruction, button_natural_cause,
57
- dropdown
58
  ])
59
 
60
  # Wounded Button Logic
61
  partial_show_section_wounded = partial(show_section_wounded, True)
62
  partial_hide_section_dead = partial(show_section_dead, False)
63
  butt_wounded.click(partial_show_section_wounded, inputs=None, outputs=[section_wounded,
64
- button_collision, button_deliberate_destruction, button_indirect_destruction, button_natural_cause,
65
- dropdown
66
  ])
67
  butt_wounded.click(partial_hide_section_dead, inputs=None, outputs=[section_dead,
68
- button_collision, button_deliberate_destruction, button_indirect_destruction, button_natural_cause,
69
- dropdown
70
  ])
71
 
72
- # Dropdowns
73
- button_collision.click(dropdown_collision, outputs=dropdown)
74
- button_deliberate_destruction.click(dropdown_deliberate_destruction, outputs=dropdown)
75
- button_indirect_destruction.click(dropdown_indirect_destruction, outputs=dropdown)
76
- button_natural_cause.click(dropdown_natural_cause, outputs=dropdown)
 
 
 
 
 
 
77
 
78
 
79
  with gr.Column(scale=1):
 
42
  butt_wounded = gr.Button("Wounded")
43
 
44
  # Initiate sections
45
+ section_dead, button_collision_dead, button_deliberate_destruction_dead, button_indirect_destruction_dead, button_natural_cause_dead, dropdown_dead = show_section_dead(False)
46
+ section_wounded, button_collision_wounded, button_deliberate_destruction_wounded, button_indirect_destruction_wounded, button_natural_cause_wounded, dropdown_wounded = show_section_wounded(False)
47
 
48
  # Dead Button Logic
49
  partial_show_section_dead = partial(show_section_dead, True)
50
  partial_hide_section_wounded = partial(show_section_wounded, False)
51
  butt_dead.click(partial_show_section_dead, inputs=None, outputs=[section_dead,
52
+ button_collision_dead, button_deliberate_destruction_dead, button_indirect_destruction_dead, button_natural_cause_dead,
53
+ dropdown_dead
54
  ])
55
  butt_dead.click(partial_hide_section_wounded, inputs=None, outputs=[section_wounded,
56
+ button_collision_wounded, button_deliberate_destruction_wounded, button_indirect_destruction_wounded, button_natural_cause_wounded,
57
+ dropdown_wounded
58
  ])
59
 
60
  # Wounded Button Logic
61
  partial_show_section_wounded = partial(show_section_wounded, True)
62
  partial_hide_section_dead = partial(show_section_dead, False)
63
  butt_wounded.click(partial_show_section_wounded, inputs=None, outputs=[section_wounded,
64
+ button_collision_wounded, button_deliberate_destruction_wounded, button_indirect_destruction_wounded, button_natural_cause_wounded,
65
+ dropdown_wounded
66
  ])
67
  butt_wounded.click(partial_hide_section_dead, inputs=None, outputs=[section_dead,
68
+ button_collision_dead, button_deliberate_destruction_dead, button_indirect_destruction_dead, button_natural_cause_dead,
69
+ dropdown_dead
70
  ])
71
 
72
+ # Dropdowns Dead
73
+ button_collision_dead.click(dropdown_collision, outputs=dropdown_dead)
74
+ button_deliberate_destruction_dead.click(dropdown_deliberate_destruction, outputs=dropdown_dead)
75
+ button_indirect_destruction_dead.click(dropdown_indirect_destruction, outputs=dropdown_dead)
76
+ button_natural_cause_dead.click(dropdown_natural_cause, outputs=dropdown_dead)
77
+
78
+ # Dropdwons Wounded
79
+ button_collision_wounded.click(dropdown_collision, outputs=dropdown_wounded)
80
+ button_deliberate_destruction_wounded.click(dropdown_deliberate_destruction, outputs=dropdown_wounded)
81
+ button_indirect_destruction_wounded.click(dropdown_indirect_destruction, outputs=dropdown_wounded)
82
+ button_natural_cause_wounded.click(dropdown_natural_cause, outputs=dropdown_wounded)
83
 
84
 
85
  with gr.Column(scale=1):