File size: 7,857 Bytes
b61c416
2e88125
 
9eff8c1
db741c8
2e88125
 
 
 
 
 
 
 
 
 
 
 
fdc7bcd
 
db741c8
2e88125
06d0d70
2e88125
fdc7bcd
658485c
 
 
2e88125
b61c416
 
7b64d1a
b60b17e
318ecf5
c3ebcce
7b64d1a
 
36e092b
 
 
b61c416
7b64d1a
 
 
 
 
 
 
 
 
db741c8
b61c416
 
74bc027
7b64d1a
1e012c1
1bd1714
 
4727ea5
52ecac8
 
 
 
1bd1714
 
 
 
 
 
 
 
 
3517598
02107f0
4727ea5
d620477
 
6acf4f9
 
f57bc74
6acf4f9
86f7430
6acf4f9
86f7430
 
d461ae3
86f7430
d461ae3
86f7430
f57bc74
2c8859a
86f7430
bbff065
1bd1714
 
 
 
 
 
 
2c8859a
 
 
 
 
 
 
 
 
 
 
 
 
 
2e88125
 
2c8859a
2e88125
2c8859a
 
 
2e88125
2c8859a
 
2e88125
 
2c8859a
 
 
b61c416
d364137
 
1bd1714
 
02107f0
4727ea5
c55a531
 
1bd1714
4727ea5
 
 
d461ae3
 
 
 
1bd1714
 
 
7b64d1a
2e88125
5bd7198
 
 
95e6877
5bd7198
 
 
 
 
 
 
 
 
 
2e88125
 
5bd7198
2e88125
 
7b64d1a
2e88125
81fcd16
 
 
fcfbdc8
 
 
 
 
 
 
 
 
81fcd16
 
b61c416
db741c8
 
06d0d70
 
 
611f0a6
06d0d70
 
 
 
 
 
611f0a6
06d0d70
 
 
 
 
 
db741c8
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
import streamlit as st 
import requests
import os 
#from auth import authenticator

tok=os.getenv("TOK")



def InitSession():
    
    if "username" not  in st.session_state:
        st.session_state.username=""

    if "projectname" not in st.session_state:
        st.session_state.projectname=""

    #if "loggedin" not in st.session_state:
     #   st.session_state.loggedin=False
        

#InitSession()




               

def APP():

        st.markdown("""
            <h2>new <i style='color:red'>MATTER</i> </h2>
            """,unsafe_allow_html=True)
            
        tab_map = {
                    
                    0: "BIO ENGINEERING LAB @newMATTER",
                    1: "EXECUTED OPERATIONS @newMATTER",
                    2: "LAB OUTPUT @newMATTER"
    
                    }

        tab_selection=st.pills(
            "TABS",
            options=tab_map.keys(),
            format_func=lambda option:tab_map[option],
            selection_mode="single"
            
        )
        
        def SHOWTABS():
            
            
            if tab_selection == 0 :


                option_map = {
                    
                    0: " @newMATTER Nanobody Engineering:",
                    1: "@newMATTER Vaccine Engineering:",
                    2: "Research",
                    3: "Information"
    
                    }

                selection = st.pills(
                    "BIOLOGICS",
                    options=option_map.keys(),
                    format_func=lambda option: option_map[option],
                    selection_mode="single",
                    )
                #match selection:
                if selection == 0:
                        st.markdown("<p style='color:white;background-color:orange;font-weight:bold'> Nanobody [CANCER targeted]</p>",unsafe_allow_html=True)
                        #with st.expander("info"):
                            #st.info("This Interface lets u specify a high level biological query (Protein Engineering Query) and execute the pipeline for the end product i.e Engineered Nanobody",icon=":material/info:")
                        
                        with st.form("bio",border=False):

                           
                            
                            project_name=None
                            target=None
                            
                            
                            with st.expander("project settings",icon=":material/settings:"):
                                project_name=st.text_input("enter project name ")
                                target=st.text_input("Set up the target antigen ")
                            
                           
                                                        
                    
                            bio_input = st.text_area(
                                "Protein Engineering Query",
                                placeholder="Type your query here."
                            )
                            execute_button=st.form_submit_button("execute")
                    
                            if execute_button:

                                
                                    ##st.session_state.projectname = project_name
                                    #st.session_state.username = uid 
                                    if not project_name or not target:
                                        st.markdown(":orange-badge[⚠️ Set Projectname and Target Antigen before proceeding]")
                                    else:
                                        
                                        payload={
                                            "uid":st.user.email ,
                                            "pid":project_name,
                                            "target":target,
                                            "high_level_bio_query":bio_input
                                        }

                            
                                        response=requests.post("https://thexforce-combat-backend.hf.space/bio_context_language_plan",json=payload,headers={
                    
                                            "Content-Type":"application/json",
                                            "Authorization":f"Bearer {tok}"
                                            })
                            
                                        plan_response=response.json()
                                        if plan_response.get("status")=="active":
                                
                                
                                            st.markdown(f"## {plan_response.get('plan')}")
                                        else:
                                            st.warning(">>>Error")

                                    #else:
                                       # st.error("Please fill in both username and project name before submitting")


                if selection == 1:
                        st.markdown("<p style='color:white;background-color:orange;font-weight:bold'>Vaccine [Supported] </p>",unsafe_allow_html=True)
                        with st.expander("info"):
                            st.info("This Interface lets u specify a high level biological query  and execute the pipeline for the end product i.e Vaccine",icon=":material/info:")
                        st.code("coming soon")

                if selection ==2:
                    st.markdown("<p style='color:white;background-color:orange;font-weight:bold'>Operation Details </p>",unsafe_allow_html=True)

                if selection==3:
                    st.markdown("<p style='color:white;background-color:orange;font-weight:bold'> This system is running in trial phase </p>",unsafe_allow_html=True)
                    
                        

            
            if tab_selection == 1:
                st.markdown("### newMATTER Bio Lab Operations")

                @st.cache_data(ttl=10)
                def fetch_ops():
                    response=requests.get(f"https://thexforce-combat-backend.hf.space/user/operations/{st.user.email}",headers={
                    
                        "Content-Type":"application/json",
                        "Authorization":f"Bearer {tok}"
                    })
                    useroperations_json=response.json()
                    return useroperations_json

                    

                userops=fetch_ops()
                    
                with st.expander("operations"):
                    st.json(userops)
                
                
            if tab_selection == 2:
                st.markdown("### newMATTER Bio Lab Outputs")
                projectname=st.text_input("projectname to look the results for ")
                if st.button("lookup"):
                    
                    response=requests.get(
                        
                        f"https://thexforce-combat-backend.hf.space/{st.session_state.get('username')}/{projectname}/individual/experiment",
                        headers={
                    
                        "Content-Type":"application/json",
                        "Authorization":f"Bearer {tok}"
                    })
                    
                    ie=response.json()
                    st.json(ie)




    
    
        if st.user.is_logged_in:
            
            if st.button("🚪 Logout"):
                st.logout()
                st.rerun()
    
            #Then show the main UI
            SHOWTABS()
        else:
            #Show login when NOT logged in
            st.info("Please log in to access the Bio Lab")
            if st.button("Log in"):
                st.login("auth0")
                st.stop()