|
import streamlit as st |
|
import pandas as pd |
|
import logging |
|
from deeploy import Client |
|
from utils import ChangeButtonColour |
|
from utils import get_input_values, get_texts, feature_texts, example_input, response, first_five_posneg_indices |
|
|
|
|
|
import plotly.io as pio |
|
|
|
pio.templates.default = "plotly" |
|
|
|
logging.basicConfig(level=logging.INFO) |
|
|
|
st.set_page_config(layout="wide") |
|
|
|
st.title("Observing potential fraudulent transactions") |
|
st.write( |
|
"Fill in left hand side and click on button to observe a potential fraudulent transaction" |
|
) |
|
|
|
st.divider() |
|
|
|
def get_model_url(): |
|
model_url = st.text_area( |
|
"Model URL (without the /explain endpoint, default is the demo deployment)", |
|
"https://api.app.deeploy.ml/workspaces/708b5808-27af-461a-8ee5-80add68384c7/deployments/dc8c359d-5f61-4107-8b0f-de97ec120289/", |
|
height=125, |
|
) |
|
elems = model_url.split("/") |
|
try: |
|
workspace_id = elems[4] |
|
deployment_id = elems[6] |
|
except IndexError: |
|
workspace_id = "" |
|
deployment_id = "" |
|
return model_url, workspace_id, deployment_id |
|
|
|
st.markdown(""" |
|
<style> |
|
[data-testid=stSidebar] { |
|
background-color: #E0E0E0; ##E5E6EA |
|
} |
|
</style> |
|
""", unsafe_allow_html=True) |
|
|
|
with st.sidebar: |
|
|
|
st.image("deeploy_logo.png", width=270) |
|
|
|
host = st.text_input("Host (Changing is optional)", "app.deeploy.ml") |
|
model_url, workspace_id, deployment_id = get_model_url() |
|
deployment_token = st.text_input("Deeploy Model Token", "my-secret-token") |
|
if deployment_token == "my-secret-token": |
|
button_clicked = st.button("Get suspicious transaction", key="get1", help="Click to get a suspicious transaction", use_container_width=True, on_click=lambda: st.experimental_rerun()) |
|
|
|
|
|
ChangeButtonColour("Get suspicious transaction", '#FFFFFF', "#00052D") |
|
|
|
|
|
positive_and_negative_indices = first_five_posneg_indices(response) |
|
positive_texts, negative_texts = get_texts(positive_and_negative_indices, feature_texts) |
|
positive_vals, negative_vals = get_input_values(positive_and_negative_indices, example_input) |
|
|
|
|
|
def create_table(texts, values, title): |
|
df = pd.DataFrame({"Feature Explanation": texts, 'Value': values}) |
|
st.markdown(f'### {title}') |
|
st.dataframe(df, hide_index=True) |
|
|
|
|
|
col1, col2 = st.columns(2) |
|
|
|
|
|
with col1: |
|
create_table(positive_texts, positive_vals, 'Important Suspicious Variables') |
|
|
|
with col2: |
|
create_table(negative_texts, negative_vals, 'Important Unsuspicious Variables') |
|
|
|
|