File size: 7,864 Bytes
b61c416
2e88125
d14c18c
 
9eff8c1
db741c8
2e88125
 
 
 
 
d14c18c
 
fdc7bcd
d14c18c
 
 
 
658485c
d14c18c
 
 
 
 
658485c
2e88125
b61c416
c3ebcce
7b64d1a
 
36e092b
 
b61c416
dc54ab3
7b64d1a
 
 
 
 
 
 
 
db741c8
b61c416
 
74bc027
7b64d1a
1e012c1
1bd1714
 
4727ea5
6e5ebdb
 
 
1bd1714
 
 
 
 
 
 
 
3517598
02107f0
4727ea5
d620477
 
972abe5
 
 
6acf4f9
f57bc74
1ef2976
d14c18c
c721e0e
d14c18c
dc54ab3
 
 
 
 
 
 
 
 
972abe5
 
 
 
 
 
9508f6d
12a0dd5
 
 
9508f6d
 
2761d63
9508f6d
bc044e2
972abe5
 
 
 
 
 
 
 
bc044e2
c721e0e
bbff065
1bd1714
 
 
 
 
 
 
2c8859a
c6d3e59
252c545
2c8859a
 
 
 
1ef2976
d14c18c
2c8859a
 
2e88125
 
ea91c1b
2e88125
2c8859a
 
 
2e88125
2c8859a
6e5ebdb
2e88125
 
6e5ebdb
b61c416
1bd1714
02107f0
4727ea5
c55a531
252c545
1bd1714
4727ea5
 
 
d461ae3
1bd1714
7b64d1a
252c545
5bd7198
 
 
95e6877
5bd7198
 
 
 
 
 
 
 
 
 
2e88125
 
5bd7198
2e88125
 
6e5ebdb
 
 
fcfbdc8
 
 
 
 
 
 
 
6e5ebdb
 
 
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
207
208
209
import streamlit as st 
import requests
import os
from gliner import GLiNER
#from auth import authenticator

tok=os.getenv("TOK")




def Target_Identification(userinput):
    

    model = GLiNER.from_pretrained("Ihor/gliner-biomed-bi-small-v1.0")
    labels = ["Protein"]
    
    entities = model.predict_entities(text, labels, threshold=0.5)

    
    result={}
    for entity in entities:
        if entity["label"] =="Protein":
            return entity["text"]


def APP():
            
        tab_map = {
                    
                    0: "BIO ENGINEERING LAB @newMATTER",
                    1: "EXECUTED OPERATIONS @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: "@OriginAI  Nanobody Engineering:",
                    1: "@OriginAI Ops",
                    2: "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:")
                        projects=None
                        projectname=None
                    
                        with st.form("bio",border=False):

                            #project_name=None
                           

                            

                            def scan_for_project_availability(user_id):
                                request_url=f"https://thexforce-combat-backend.hf.space/{user_id}/projects"
                                
                                response=requests.get(request_url,headers={
                    
                                            "Content-Type":"application/json",
                                            "Authorization":f"Bearer {tok}"
                                            })
                                response_json=response.json()
                                projects=response_json.get("projects")
                                

                                
                                
                                
                                #project_details=response.json()
                                #if project_details.get("projectname") !=None or project_details.get("projectname") !="":
                                 #   st.session_state.projectname = project_details.get("projectname")


                            scan_for_project_availability(st.user.email)


                            if projects !=None or if projects != "":
                                
                                
                                projectname = st.session_state.get("projectname", "")  # safe default

                                if projectname == "":
                                    with st.expander("Set up the project before proceeding."):
                                        projectname = st.text_input("Provide project name > ")
        
                                                        
                    
                            bio_input = st.text_area(
                                "Protein Engineering Query",
                                placeholder="Type your query here."
                            )
                            execute_button=st.form_submit_button("execute")
                    
                            if execute_button:

                                    if not projectname:
                                        st.markdown(":orange-badge[⚠️ Set Projectname]")
                                    else:
                                        
                                        payload={
                                            "uid":st.user.email ,
                                            "pid":projectname,
                                            "target":Target_Identification(bio_input) or None,
                                            "high_level_bio_query":bio_input
                                        }

                            
                                        response=requests.post("https://thexforce-combat-backend.hf.space/application_layer_agent",json=payload,headers={
                    
                                            "Content-Type":"application/json",
                                            "Authorization":f"Bearer {tok}"
                                            })
                            
                                        plan_response=response.json()
                                        
                                
                                
                                        st.markdown(f"## {plan_response}")


                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("",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 tab_selection == 1:
                st.markdown("### ORIGINAI 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)
                
                
           
                '''  
                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()