Spaces:
Build error
Build error
chore: update
Browse files
app.py
CHANGED
|
@@ -115,12 +115,12 @@ def get_features_fn(*checked_symptoms: Tuple[str]) -> Dict:
|
|
| 115 |
print("Provide at least 5 symptoms.")
|
| 116 |
return {
|
| 117 |
error_box1: gr.update(visible=True, value="⚠️ Provide at least 5 symptoms"),
|
| 118 |
-
|
| 119 |
}
|
| 120 |
|
| 121 |
return {
|
| 122 |
error_box1: gr.update(visible=False),
|
| 123 |
-
|
| 124 |
visible=False,
|
| 125 |
value=get_user_symptoms_from_checkboxgroup(pretty_print(checked_symptoms)),
|
| 126 |
),
|
|
@@ -217,7 +217,7 @@ def encrypt_fn(user_symptoms: np.ndarray, user_id: str) -> None:
|
|
| 217 |
|
| 218 |
return {
|
| 219 |
error_box3: gr.update(visible=False),
|
| 220 |
-
|
| 221 |
enc_vect_box: gr.update(visible=True, value=encrypted_quantized_user_symptoms_shorten_hex),
|
| 222 |
}
|
| 223 |
|
|
@@ -418,7 +418,7 @@ def decrypt_fn(
|
|
| 418 |
"- the server processed the encrypted data \n"
|
| 419 |
"- the Client received the data from the Server before decrypting the prediction",
|
| 420 |
),
|
| 421 |
-
|
| 422 |
}
|
| 423 |
|
| 424 |
# Load the encrypted output as bytes
|
|
@@ -456,7 +456,7 @@ def decrypt_fn(
|
|
| 456 |
|
| 457 |
return {
|
| 458 |
error_box7: gr.update(visible=False),
|
| 459 |
-
|
| 460 |
submit_btn: gr.update(value="Submit")
|
| 461 |
}
|
| 462 |
|
|
@@ -467,10 +467,10 @@ def reset_fn():
|
|
| 467 |
clean_directory()
|
| 468 |
|
| 469 |
return {
|
| 470 |
-
|
| 471 |
submit_btn: gr.update(value="Submit"),
|
| 472 |
user_id_box: gr.update(visible=False, value=None, interactive=False),
|
| 473 |
-
|
| 474 |
default_symptoms: gr.update(visible=True, value=None),
|
| 475 |
disease_box: gr.update(visible=True, value=None),
|
| 476 |
quant_vect_box: gr.update(visible=False, value=None, interactive=False),
|
|
@@ -478,7 +478,7 @@ def reset_fn():
|
|
| 478 |
key_box: gr.update(visible=True, value=None, interactive=False),
|
| 479 |
key_len_box: gr.update(visible=False, value=None, interactive=False),
|
| 480 |
fhe_execution_time_box: gr.update(visible=True, value=None, interactive=False),
|
| 481 |
-
|
| 482 |
error_box7: gr.update(visible=False),
|
| 483 |
error_box1: gr.update(visible=False),
|
| 484 |
error_box2: gr.update(visible=False),
|
|
@@ -572,7 +572,7 @@ if __name__ == "__main__":
|
|
| 572 |
label="Related Symptoms:", interactive=False, visible=False,
|
| 573 |
)
|
| 574 |
# User vector symptoms encoded in oneHot representation
|
| 575 |
-
|
| 576 |
# Submit botton
|
| 577 |
submit_btn = gr.Button("Submit")
|
| 578 |
# Clear botton
|
|
@@ -584,7 +584,7 @@ if __name__ == "__main__":
|
|
| 584 |
submit_btn.click(
|
| 585 |
fn=get_features_fn,
|
| 586 |
inputs=[*check_boxes],
|
| 587 |
-
outputs=[
|
| 588 |
)
|
| 589 |
|
| 590 |
# ------------------------- Step 2 -------------------------
|
|
@@ -607,7 +607,7 @@ if __name__ == "__main__":
|
|
| 607 |
|
| 608 |
gen_key_btn.click(
|
| 609 |
key_gen_fn,
|
| 610 |
-
inputs=
|
| 611 |
outputs=[
|
| 612 |
key_box,
|
| 613 |
user_id_box,
|
|
@@ -624,15 +624,15 @@ if __name__ == "__main__":
|
|
| 624 |
|
| 625 |
with gr.Row():
|
| 626 |
with gr.Column():
|
| 627 |
-
|
| 628 |
with gr.Column():
|
| 629 |
enc_vect_box = gr.Textbox(label="Encrypted Vector:", max_lines=10)
|
| 630 |
|
| 631 |
encrypt_btn.click(
|
| 632 |
encrypt_fn,
|
| 633 |
-
inputs=[
|
| 634 |
outputs=[
|
| 635 |
-
|
| 636 |
enc_vect_box,
|
| 637 |
error_box3,
|
| 638 |
],
|
|
@@ -651,7 +651,7 @@ if __name__ == "__main__":
|
|
| 651 |
|
| 652 |
send_input_btn.click(
|
| 653 |
send_input_fn,
|
| 654 |
-
inputs=[user_id_box,
|
| 655 |
outputs=[error_box4, srv_resp_send_data_box],
|
| 656 |
)
|
| 657 |
|
|
@@ -666,10 +666,7 @@ if __name__ == "__main__":
|
|
| 666 |
|
| 667 |
run_fhe_btn = gr.Button("Run the FHE evaluation")
|
| 668 |
error_box5 = gr.Textbox(label="Error ❌", visible=False)
|
| 669 |
-
fhe_execution_time_box = gr.Textbox(
|
| 670 |
-
label="Total FHE Execution Time:", interactive=False, visible=True
|
| 671 |
-
)
|
| 672 |
-
|
| 673 |
run_fhe_btn.click(
|
| 674 |
run_fhe_fn,
|
| 675 |
inputs=[user_id_box],
|
|
@@ -684,6 +681,7 @@ if __name__ == "__main__":
|
|
| 684 |
|
| 685 |
error_box6 = gr.Textbox(label="Error ❌", visible=False)
|
| 686 |
|
|
|
|
| 687 |
with gr.Row().style(equal_height=True):
|
| 688 |
with gr.Column(scale=4):
|
| 689 |
get_output_btn = gr.Button("Get data")
|
|
@@ -694,21 +692,20 @@ if __name__ == "__main__":
|
|
| 694 |
|
| 695 |
get_output_btn.click(
|
| 696 |
get_output_fn,
|
| 697 |
-
inputs=[user_id_box,
|
| 698 |
outputs=[srv_resp_retrieve_data_box, error_box6],
|
| 699 |
)
|
| 700 |
|
|
|
|
| 701 |
gr.Markdown("### Decrypt the output")
|
| 702 |
-
|
| 703 |
-
decrypt_target_btn = gr.Button("Decrypt the output using the private secret key")
|
| 704 |
-
|
| 705 |
error_box7 = gr.Textbox(label="Error ❌", visible=False)
|
| 706 |
-
|
| 707 |
|
| 708 |
-
|
| 709 |
decrypt_fn,
|
| 710 |
-
inputs=[user_id_box,
|
| 711 |
-
outputs=[
|
| 712 |
)
|
| 713 |
|
| 714 |
# ------------------------- End -------------------------
|
|
@@ -729,8 +726,8 @@ if __name__ == "__main__":
|
|
| 729 |
clear_button.click(
|
| 730 |
reset_fn,
|
| 731 |
outputs=[
|
| 732 |
-
|
| 733 |
-
|
| 734 |
submit_btn,
|
| 735 |
# disease_box,
|
| 736 |
error_box1,
|
|
@@ -750,7 +747,7 @@ if __name__ == "__main__":
|
|
| 750 |
srv_resp_send_data_box,
|
| 751 |
srv_resp_retrieve_data_box,
|
| 752 |
fhe_execution_time_box,
|
| 753 |
-
|
| 754 |
*check_boxes,
|
| 755 |
],
|
| 756 |
)
|
|
|
|
| 115 |
print("Provide at least 5 symptoms.")
|
| 116 |
return {
|
| 117 |
error_box1: gr.update(visible=True, value="⚠️ Provide at least 5 symptoms"),
|
| 118 |
+
one_hot_vector: None,
|
| 119 |
}
|
| 120 |
|
| 121 |
return {
|
| 122 |
error_box1: gr.update(visible=False),
|
| 123 |
+
one_hot_vector: gr.update(
|
| 124 |
visible=False,
|
| 125 |
value=get_user_symptoms_from_checkboxgroup(pretty_print(checked_symptoms)),
|
| 126 |
),
|
|
|
|
| 217 |
|
| 218 |
return {
|
| 219 |
error_box3: gr.update(visible=False),
|
| 220 |
+
one_hot_vector_box: gr.update(visible=True, value=user_symptoms),
|
| 221 |
enc_vect_box: gr.update(visible=True, value=encrypted_quantized_user_symptoms_shorten_hex),
|
| 222 |
}
|
| 223 |
|
|
|
|
| 418 |
"- the server processed the encrypted data \n"
|
| 419 |
"- the Client received the data from the Server before decrypting the prediction",
|
| 420 |
),
|
| 421 |
+
decrypt_box: None,
|
| 422 |
}
|
| 423 |
|
| 424 |
# Load the encrypted output as bytes
|
|
|
|
| 456 |
|
| 457 |
return {
|
| 458 |
error_box7: gr.update(visible=False),
|
| 459 |
+
decrypt_box: out,
|
| 460 |
submit_btn: gr.update(value="Submit")
|
| 461 |
}
|
| 462 |
|
|
|
|
| 467 |
clean_directory()
|
| 468 |
|
| 469 |
return {
|
| 470 |
+
one_hot_vector_box: None,
|
| 471 |
submit_btn: gr.update(value="Submit"),
|
| 472 |
user_id_box: gr.update(visible=False, value=None, interactive=False),
|
| 473 |
+
one_hot_vector: None,
|
| 474 |
default_symptoms: gr.update(visible=True, value=None),
|
| 475 |
disease_box: gr.update(visible=True, value=None),
|
| 476 |
quant_vect_box: gr.update(visible=False, value=None, interactive=False),
|
|
|
|
| 478 |
key_box: gr.update(visible=True, value=None, interactive=False),
|
| 479 |
key_len_box: gr.update(visible=False, value=None, interactive=False),
|
| 480 |
fhe_execution_time_box: gr.update(visible=True, value=None, interactive=False),
|
| 481 |
+
decrypt_box: None,
|
| 482 |
error_box7: gr.update(visible=False),
|
| 483 |
error_box1: gr.update(visible=False),
|
| 484 |
error_box2: gr.update(visible=False),
|
|
|
|
| 572 |
label="Related Symptoms:", interactive=False, visible=False,
|
| 573 |
)
|
| 574 |
# User vector symptoms encoded in oneHot representation
|
| 575 |
+
one_hot_vector = gr.Textbox(visible=False)
|
| 576 |
# Submit botton
|
| 577 |
submit_btn = gr.Button("Submit")
|
| 578 |
# Clear botton
|
|
|
|
| 584 |
submit_btn.click(
|
| 585 |
fn=get_features_fn,
|
| 586 |
inputs=[*check_boxes],
|
| 587 |
+
outputs=[one_hot_vector, error_box1, submit_btn],
|
| 588 |
)
|
| 589 |
|
| 590 |
# ------------------------- Step 2 -------------------------
|
|
|
|
| 607 |
|
| 608 |
gen_key_btn.click(
|
| 609 |
key_gen_fn,
|
| 610 |
+
inputs=one_hot_vector,
|
| 611 |
outputs=[
|
| 612 |
key_box,
|
| 613 |
user_id_box,
|
|
|
|
| 624 |
|
| 625 |
with gr.Row():
|
| 626 |
with gr.Column():
|
| 627 |
+
one_hot_vector_box = gr.Textbox(label="User Symptoms Vector:", max_lines=10)
|
| 628 |
with gr.Column():
|
| 629 |
enc_vect_box = gr.Textbox(label="Encrypted Vector:", max_lines=10)
|
| 630 |
|
| 631 |
encrypt_btn.click(
|
| 632 |
encrypt_fn,
|
| 633 |
+
inputs=[one_hot_vector, user_id_box],
|
| 634 |
outputs=[
|
| 635 |
+
one_hot_vector_box,
|
| 636 |
enc_vect_box,
|
| 637 |
error_box3,
|
| 638 |
],
|
|
|
|
| 651 |
|
| 652 |
send_input_btn.click(
|
| 653 |
send_input_fn,
|
| 654 |
+
inputs=[user_id_box, one_hot_vector],
|
| 655 |
outputs=[error_box4, srv_resp_send_data_box],
|
| 656 |
)
|
| 657 |
|
|
|
|
| 666 |
|
| 667 |
run_fhe_btn = gr.Button("Run the FHE evaluation")
|
| 668 |
error_box5 = gr.Textbox(label="Error ❌", visible=False)
|
| 669 |
+
fhe_execution_time_box = gr.Textbox(label="Total FHE Execution Time:", visible=True)
|
|
|
|
|
|
|
|
|
|
| 670 |
run_fhe_btn.click(
|
| 671 |
run_fhe_fn,
|
| 672 |
inputs=[user_id_box],
|
|
|
|
| 681 |
|
| 682 |
error_box6 = gr.Textbox(label="Error ❌", visible=False)
|
| 683 |
|
| 684 |
+
# Step 4.1: Data transmission
|
| 685 |
with gr.Row().style(equal_height=True):
|
| 686 |
with gr.Column(scale=4):
|
| 687 |
get_output_btn = gr.Button("Get data")
|
|
|
|
| 692 |
|
| 693 |
get_output_btn.click(
|
| 694 |
get_output_fn,
|
| 695 |
+
inputs=[user_id_box, one_hot_vector],
|
| 696 |
outputs=[srv_resp_retrieve_data_box, error_box6],
|
| 697 |
)
|
| 698 |
|
| 699 |
+
# Step 4.1: Data transmission
|
| 700 |
gr.Markdown("### Decrypt the output")
|
| 701 |
+
decrypt_btn = gr.Button("Decrypt the output using the private secret key")
|
|
|
|
|
|
|
| 702 |
error_box7 = gr.Textbox(label="Error ❌", visible=False)
|
| 703 |
+
decrypt_box = gr.Textbox(label="Decrypted Output:", interactive=False)
|
| 704 |
|
| 705 |
+
decrypt_btn.click(
|
| 706 |
decrypt_fn,
|
| 707 |
+
inputs=[user_id_box, one_hot_vector, *check_boxes],
|
| 708 |
+
outputs=[decrypt_box, error_box7, submit_btn],
|
| 709 |
)
|
| 710 |
|
| 711 |
# ------------------------- End -------------------------
|
|
|
|
| 726 |
clear_button.click(
|
| 727 |
reset_fn,
|
| 728 |
outputs=[
|
| 729 |
+
one_hot_vector_box,
|
| 730 |
+
one_hot_vector,
|
| 731 |
submit_btn,
|
| 732 |
# disease_box,
|
| 733 |
error_box1,
|
|
|
|
| 747 |
srv_resp_send_data_box,
|
| 748 |
srv_resp_retrieve_data_box,
|
| 749 |
fhe_execution_time_box,
|
| 750 |
+
decrypt_box,
|
| 751 |
*check_boxes,
|
| 752 |
],
|
| 753 |
)
|