""" | |
This script runs the streamlit app for MHNfs | |
MHNfs: Few-shot method for drug discovery activity predictions | |
(https://openreview.net/pdf?id=XrMWUuEevr) | |
""" | |
# -------------------------------------------------------------------------------------- | |
# Imports | |
import streamlit as st | |
from src.app.layout import LayoutMaker | |
from src.app.prediction_utils import (create_prediction_df, | |
create_molecule_grid_plot) | |
from src.prediction_pipeline import ActivityPredictor | |
# -------------------------------------------------------------------------------------- | |
# Functions | |
class App(): | |
def __init__(self): | |
# Set page configration to wide | |
st.set_page_config(layout="wide", page_title="MHNfs", page_icon="🔬") | |
# Layout maker | |
self.layoutMaker = LayoutMaker() | |
# Load mhnfs model | |
self.predictor = ActivityPredictor() | |
def define_layout(self): | |
# Define Sidebar width | |
css = ''' | |
<style> | |
[data-testid="stSidebar"]{ | |
min-width: 500px; | |
max-width: 500px; | |
} | |
</style> | |
''' | |
st.markdown(css, unsafe_allow_html=True) | |
# Sidebar | |
self.inputs, self.buttons = self.layoutMaker.make_sidebar() | |
# Main page | |
# - header | |
self.layoutMaker.make_header() | |
# - main body | |
self.layoutMaker.make_main_content_area(self.predictor, | |
self.inputs, | |
self.buttons, | |
create_prediction_df, | |
create_molecule_grid_plot) | |
def run_app(): | |
app = App() | |
app.define_layout() | |
# -------------------------------------------------------------------------------------- | |
# Run script | |
if __name__ == "__main__": | |
run_app() | |