File size: 7,737 Bytes
b61c416
2e88125
 
db741c8
 
 
 
 
 
 
2e88125
 
 
 
 
 
 
 
 
 
 
 
 
 
db741c8
 
 
2e88125
 
 
 
b61c416
 
8a0150f
 
 
c3ebcce
b60b17e
318ecf5
c3ebcce
8a0150f
d461ae3
8a0150f
b61c416
 
 
db741c8
b61c416
 
 
 
1e012c1
1bd1714
 
4727ea5
1bd1714
 
d461ae3
 
1bd1714
 
 
 
 
 
 
 
 
3517598
02107f0
4727ea5
d620477
 
6acf4f9
 
f57bc74
6acf4f9
 
 
2f97a7e
d461ae3
 
 
f57bc74
 
c55a531
1bd1714
 
d0ae7ed
 
bbff065
1bd1714
 
 
 
 
 
 
 
 
 
2e88125
1bd1714
 
 
 
 
2e88125
 
1bd1714
2e88125
1bd1714
 
 
2e88125
1bd1714
 
2e88125
 
c6b95e4
1bd1714
 
b61c416
1bd1714
d0ae7ed
1bd1714
 
02107f0
4727ea5
c55a531
 
1bd1714
4727ea5
 
 
d461ae3
 
 
 
1bd1714
 
 
b61c416
2e88125
5bd7198
 
 
 
 
 
 
 
 
 
 
 
 
 
2e88125
 
5bd7198
2e88125
 
b61c416
2e88125
81fcd16
 
 
fcfbdc8
 
 
 
 
 
 
 
 
81fcd16
 
b61c416
db741c8
 
 
 
 
 
 
 
 
 
 
 
 
2642c3c
db741c8
 
 
 
b61c416
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
210
import streamlit as st 
import requests
import os 
from login import LOGIN 
from register import REGISTER 






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():

        col1,col2=st.columns(2)
    
        with col1:
            st.markdown("""
            <h2>new <i style='color:red'>MATTER</i> </h2>
            """,unsafe_allow_html=True)
            
        with col2:
            st.image("https://pub-e4d20ff4ef334a2894d440ac56d680db.r2.dev/flask.gif",width=80)
            
    
        tab1, tab2, tab3 = st.tabs(["PROTEIN ENGINEERING LAB", "EXECUTED OPERATIONS", "LAB OUTPUT"])
    
        
        def SHOWTABS():
            
            
            with tab1:


                option_map = {
                    
                    0: ":material/pill:",
                    1: ":material/vaccines:",
                    2: ":material/labresearch:",
                    3: ":material/warning:"
    
                    }

                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):

                           
                            uid=None
                            project_name=None
                            with st.expander("settings",icon=":material/settings:"):
                            
                                uid=st.text_input("enter username")
                                project_name=st.text_input("enter project name ")

                            
                            
                            if not uid or not project_name:
                                st.markdown(":orange-badge[⚠️ Set Username and Projectname]")

                        
                    
                            bio_input = st.text_area(
                                "Protein Engineering Query",
                                placeholder="Type your query here."
                            )
                            execute_button=st.form_submit_button("execute")
                    
                            if execute_button:
                                if uid and project_name:  # Only process if fields are filled
                                    st.session_state.projectname = project_name
                                    st.session_state.username = uid 
                            
                                    payload={
                                        "uid":uid,
                                        "pid":project_name,
                                        "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.code(f"{plan_response.get('plan')}", language="python")
                                    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)
                    
                        

            
            with tab2:
                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.session_state.get('username')}",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)
                
                
            with tab3:
                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)




        base_option_map = {
                    
                    0: ":material/login:",
                    1: ":material/personadd:",
    
                    }

        selection = st.pills(
                "ACCESS",
                options=option_map.keys(),
                format_func=lambda option: base_option_map[option],
                selection_mode="single",
                )
        if selection==0:
            logged_in_object=LOGIN()
            
            if logged_in_object.get("loggedin")==True :
                
        
                SHOWTABS()

            elif logged_in_object.get("loggedin")==False:
                 st.write("login failed , try again")

        if selection==1:
            REGISTER()