libokj's picture
Upload 110 files
c0ec7e6
raw
history blame
3.2 kB
from pathlib import Path
import gradio as gr
# Use this in a notebook
root = Path.cwd()
drug_encoder_list = [f.stem for f in root.parent.joinpath("configs/model/drug_encoder").iterdir() if f.suffix == ".yaml"]
drug_featurizer_list = [f.stem for f in root.parent.joinpath("configs/model/drug_featurizer").iterdir() if f.suffix == ".yaml"]
protein_encoder_list = [f.stem for f in root.parent.joinpath("configs/model/protein_encoder").iterdir() if f.suffix == ".yaml"]
protein_featurizer_list = [f.stem for f in root.parent.joinpath("configs/model/protein_featurizer").iterdir() if f.suffix == ".yaml"]
classifier_list = [f.stem for f in root.parent.joinpath("configs/model/classifier").iterdir() if f.suffix == ".yaml"]
preset_list = [f.stem for f in root.parent.joinpath("configs/model/preset").iterdir() if f.suffix == ".yaml"]
from typing import Optional
def drug_target_interaction(
binary: bool,
drug_encoder,
drug_featurizer,
protein_encoder,
protein_featurizer,
classifier,
preset,) -> Optional[float]:
return 1
def drug_encoder(
binary: bool,
drug_encoder,
drug_featurizer,
protein_encoder,
protein_featurizer,
classifier,
preset,):
return
def protein_encoder(
binary: bool,
drug_encoder,
drug_featurizer,
protein_encoder,
protein_featurizer,
classifier,
preset,):
return
# demo = gr.Interface(
# fn=drug_target_interaction,
# inputs=[
# gr.Radio(["True", "False"]),
# gr.Dropdown(drug_encoder_list),
# gr.Dropdown(drug_featurizer_list),
# gr.Dropdown(protein_encoder_list),
# gr.Dropdown(protein_featurizer_list),
# gr.Dropdown(classifier_list),
# gr.Dropdown(preset_list),
# ],
# outputs=["number"],
# show_error=True,
#
# )
#
# demo.launch()
from omegaconf import DictConfig, OmegaConf
type_to_component_map = {list: gr.Text, int: gr.Number, float: gr.Number}
def get_config_choices(config_path: str):
return [f.stem for f in Path("../../configs/", config_path).iterdir() if f.suffix == ".yaml"]
def create_blocks_from_config(cfg: DictConfig):
with gr.Blocks() as blocks:
for key, value in cfg.items():
if type(value) in [int, float]:
component = gr.Number(value=value, label=key, interactive=True)
if type(value) in [dict, DictConfig]:
with gr.Tab(label=key):
component = create_blocks_from_config(value)
else:
component = gr.Text(value=value, label=key, interactive=True)
return blocks
def create_interface_from_config(fn: callable, cfg: DictConfig):
inputs = []
for key, value in OmegaConf.to_object(cfg).items():
component = type_to_component_map.get(type(value), gr.Text)
inputs.append(component(value=value, label=key, interactive=True))
interface = gr.Interface(fn=fn, inputs=inputs, outputs="label")
return interface
import hydra
with hydra.initialize(version_base=None, config_path="../../configs/"):
cfg = hydra.compose("train")