File size: 6,628 Bytes
69777eb
4d8b8e1
297a56e
4d8b8e1
297a56e
4d8b8e1
297a56e
8c61e72
 
 
 
 
 
 
e7d4b75
8c61e72
f09f258
8c61e72
f09f258
4d8b8e1
cdc8845
 
 
 
 
f4742fd
cdc8845
 
978439f
 
 
 
 
 
cdc8845
2ebdd7c
 
ea656ff
2ebdd7c
cdc8845
594ac32
d4408a4
 
 
 
cdc8845
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69d9579
978439f
 
 
 
cdc8845
 
 
 
 
 
 
 
 
 
 
 
 
2ebdd7c
 
 
f4742fd
 
 
2ebdd7c
 
 
 
cdc8845
2ebdd7c
 
 
cdc8845
f4742fd
cdc8845
 
 
 
d4408a4
2ebdd7c
 
 
cdc8845
 
 
f15cc8e
cdc8845
 
 
 
 
 
 
 
 
2ebdd7c
 
 
9ce2e26
f4742fd
 
2ebdd7c
 
 
 
cdc8845
2ebdd7c
 
 
cdc8845
 
 
 
 
 
 
d68c359
cdc8845
64ba046
 
978439f
cdc8845
 
 
594ac32
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
from datasets import load_dataset
#LOINC
datasetLOINC = load_dataset("awacke1/LOINC-CodeSet-Value-Description.csv")
#SNOMED:
datasetSNOMED = load_dataset("awacke1/SNOMED-CT-Code-Value-Semantic-Set.csv")
#eCQM:
dataseteCQM = load_dataset("awacke1/eCQM-Code-Value-Semantic-Set.csv")
print(datasetLOINC)
print(datasetSNOMED)
print(dataseteCQM)

# play with some dataset tools before the show:
start_with_ar = datasetLOINC.filter(lambda example: example["Description"].startswith("Mental health"))
len(start_with_ar)
#print(start_with_ar["Description"])

#---
#Main Stage - Begin!
#---

import os
import json
import numpy as np
import gradio as gr

CHOICES = ["SNOMED", "LOINC", "CQM"]
JSONOBJ = """{"items":{"item":[{"id": "0001","type": null,"is_good": false,"ppu": 0.55,"batters":{"batter":[{ "id": "1001", "type": "Regular" },{ "id": "1002", "type": "Chocolate" },{ "id": "1003", "type": "Blueberry" },{ "id": "1004", "type": "Devil's Food" }]},"topping":[{ "id": "5001", "type": "None" },{ "id": "5002", "type": "Glazed" },{ "id": "5005", "type": "Sugar" },{ "id": "5007", "type": "Powdered Sugar" },{ "id": "5006", "type": "Chocolate with Sprinkles" },{ "id": "5003", "type": "Chocolate" },{ "id": "5004", "type": "Maple" }]}]}}"""

def lowercase_title(example):
    return {"title": example[title].lower()}

# demonstrate map function of dataset
JSONOBJ_MAP=datasetLOINC.map(lowercase_title)


#def fn(    text1,    text2,    num,    slider1,    slider2,    single_checkbox,    checkboxes,    radio,    dropdown,    im1,    im2,    im3,    im4,
#    video,    audio1,    audio2,    file,    df1,    df2,):
def fn(    text1,    text2,    single_checkbox,    checkboxes,    radio,    im4,  file,    df1,    df2,):
    
    return (
        (text1 if single_checkbox else text2)        + ", selected:"        + ", ".join(checkboxes),  # Text
#        {"positive": num / (num + slider1 + slider2),"negative": slider1 / (num + slider1 + slider2),"neutral": slider2 / (num + slider1 + slider2),},  # Label
#        (audio1[0], np.flipud(audio1[1])) if audio1 is not None  else os.path.join(os.path.dirname(__file__), "files/cantina.wav"),  # Audio
#        np.flipud(im1) if im1 is not None  else os.path.join(os.path.dirname(__file__), "files/cheetah1.jpg"),  # Image
#        video if video is not None  else os.path.join(os.path.dirname(__file__), "files/world.mp4"),  # Video
        [
            ("The", "art"),
            ("quick brown", "adj"),
            ("fox", "nn"),
            ("jumped", "vrb"),
            ("testing testing testing", None),
            ("over", "prp"),
            ("the", "art"),
            ("testing", None),
            ("lazy", "adj"),
            ("dogs", "nn"),
            (".", "punc"),
        ]   + [(f"test {x}", f"test {x}") for x in range(10)],  # HighlightedText        
        [
            ("The testing testing testing", None),
            ("over", 0.6),
            ("the", 0.2),
            ("testing", None),
            ("lazy", -0.1),
            ("dogs", 0.4),
            (".", 0),
        ]   + [(f"test", x / 10) for x in range(-10, 10)],  # HighlightedText
              

        #json.loads(JSONOBJ),  # JSON
        json.loads(JSONOBJ_MAP),  # JSONOBJ_MAP
        
        "<button style='background-color: red'>Click Me: " + radio + "</button>",  # HTML
        os.path.join(os.path.dirname(__file__), "files/titanic.csv"),
        df1,  # Dataframe
        np.random.randint(0, 10, (4, 4)),  # Dataframe
        df2,  # Timeseries
    )


demo = gr.Interface(
    fn,
    inputs=[
        gr.Textbox(value="Lorem ipsum", label="Textbox"),
        gr.Textbox(lines=3, placeholder="Type here..", label="Textbox 2"),
        #gr.Number(label="Number", value=42),
        #gr.Slider(10, 20, value=15, label="Slider: 10 - 20"),
        #gr.Slider(maximum=20, step=0.04, label="Slider: step @ 0.04"),
        gr.Checkbox(label="Check for NER Match on Submit"),
        gr.CheckboxGroup(label="Clinical Terminology to Check", choices=CHOICES, value=CHOICES[0:2]),
        gr.Radio(label="Preferred Terminology Output", choices=CHOICES, value=CHOICES[2]),
        #gr.Dropdown(label="Dropdown", choices=CHOICES),
        #gr.Image(label="Image"),
        #gr.Image(label="Image w/ Cropper", tool="select"),
        #gr.Image(label="Sketchpad", source="canvas"),
        gr.Image(label="Webcam", source="webcam"),
        #gr.Video(label="Video"),
        #gr.Audio(label="Audio"),
        #gr.Audio(label="Microphone", source="microphone"),
        gr.File(label="File"),
        gr.Dataframe(label="Filters", headers=["Name", "Age", "Gender"]),
        gr.Timeseries(x="time", y=["price", "value"], colors=["pink", "purple"]),
    ],
    outputs=[
        gr.Textbox(label="Textbox"),
        #gr.Label(label="Label"),
        #gr.Audio(label="Audio"),
        #gr.Image(label="Image"),
        #gr.Video(label="Video"),
        gr.HighlightedText(label="HighlightedText", color_map={"punc": "pink", "test 0": "blue"}),
        gr.HighlightedText(label="HighlightedText", show_legend=True),
        gr.JSON(label="JSON"),
        gr.HTML(label="HTML"),
        gr.File(label="File"),
        gr.Dataframe(label="Dataframe"),
        gr.Dataframe(label="Numpy"),
        gr.Timeseries(x="time", y=["price", "value"], label="Timeseries"),
    ],
    examples=[
        [
            "the quick brown fox",
            "jumps over the lazy dog",
            #10,
            #12,
            #4,
            True,
            ["SNOMED", "LOINC", "CQM"],
            "SNOMED",
            #"bar",
            #os.path.join(os.path.dirname(__file__), "files/cheetah1.jpg"),
            #os.path.join(os.path.dirname(__file__), "files/cheetah1.jpg"),
            #os.path.join(os.path.dirname(__file__), "files/cheetah1.jpg"),
            os.path.join(os.path.dirname(__file__), "files/cheetah1.jpg"),
            #os.path.join(os.path.dirname(__file__), "files/world.mp4"),
            #os.path.join(os.path.dirname(__file__), "files/cantina.wav"),
            #os.path.join(os.path.dirname(__file__), "files/cantina.wav"),
            os.path.join(os.path.dirname(__file__), "files/titanic.csv"),
            [[1, 2, 3], [3, 4, 5]],
            os.path.join(os.path.dirname(__file__), "files/time.csv"),
        ]
    ]
    * 3,
    theme="default",
    title="⚗️🧠🔬🧬 Clinical Terminology Auto Mapper AI 👩‍⚕️🩺⚕️🙋",
    cache_examples=False,
    description="Clinical Terminology Auto Mapper AI",
    article="Learn more at [Yggdrasil](https://github.com/AaronCWacker/Yggdrasil)",
    live=True,
)

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