import streamlit as st from collections import namedtuple as NamedTuple from math import floor import joblib central_gpu = joblib.load("centralGPU") central_ssd = joblib.load("centralSSD") gpu = NamedTuple("GPU_SPECS", ["transistors", "base_clock", "mem_clock", "mem_size", "shading_units", "TMUs", "ROPs", "mem_type_GDDR5", "mem_type_GDDR5X", "mem_type_GDDR6", "mem_type_GDDR6X", "mem_type_GDDR7"]) ssd = NamedTuple("SSD_SPECS", [ "seq_read_write", "endurance", "type_MLC", "type_QLC", "type_SLC", "type_TLC", "interface_PCIe_3_0_x4", "interface_PCIe_4_0_x4", "interface_PCIe_5_0_x4", "interface_SATA_6_Gbps", "protocol_AHCI", "protocol_NVMe", "protocol_NVMe_1_2", "protocol_NVMe_1_3", "protocol_NVMe_1_4", "protocol_NVMe_2_0" ]) st.write("" "
welcome to central !
" "
", unsafe_allow_html=True) radio_buttons = st.radio("Select component : ", ("GPU", "SSD")) if radio_buttons == "GPU": transistors = st.text_input("the number of transistors in million") base_clock = st.text_input("the base clock in MHz") mem_clock = st.text_input("the memory clock in MHz") mem_size = st.text_input("the memory size") shading_units = st.text_input("the number of shading units") TMUs = st.text_input("the number of TMUs") ROPs = st.text_input("the number of ROPs") mem_type = st.radio("select the memory type", ("GDDR5", "GDDR5X", "GDDR6", "GDDR6X", "GDDR7")) predict = st.button("predict the price") if predict and transistors and base_clock and mem_clock and mem_size and shading_units and TMUs and ROPs and mem_type: try: GPU_SPECS = gpu( # memory and graphics related specs transistors=int(transistors), # million transistor base_clock=int(base_clock), # in MHz mem_clock=int(mem_clock), # in MHz mem_size=int(mem_size), # in GBs shading_units=int(shading_units), TMUs=int(TMUs), ROPs=int(ROPs), # memory type mem_type_GDDR5=mem_type == "GDDR5", mem_type_GDDR5X=mem_type == "GDDR5X", mem_type_GDDR6=mem_type == "GDDR6", mem_type_GDDR6X=mem_type == "GDDR6X", mem_type_GDDR7=mem_type == "GDDR7" ) st.write("> the predicted launch price for this GPU is : $%s"%(floor(*central_gpu.predict([*[GPU_SPECS]])))) except: st.write("some inputs are with wrong types") else: st.write("you need to fill all the inputs") elif radio_buttons == "SSD": seq_read = st.text_input("the sequential read in MB/s") seq_write = st.text_input("the sequential write in MB/s") endurance = st.text_input("the endurance in TBW") ssd_type = st.radio("give the SSD type", ("MLC", "QLC", "SLC", "TLC")) interface = st.radio("give the SSD interface", ("PCIe 3.0 x4", "PCIe 4.0 x4", "PCIe 5.0 x4", "SATA 6GBps")) protocol = st.radio("give the protocol : ", ("AHCI", "NVMe", "NVMe 1.2", "NVMe 1.3", "NVMe 1.4", "NVMe 2.0")) predict = st.button("predict the price") if predict and seq_read and seq_write and endurance and ssd_type and interface and protocol: try: SSD_SPECS = ssd( seq_read_write=int(seq_read) + int(seq_write), # in MB/s (sequential read + sequential write) endurance=int(endurance), # in TBW # SSD types type_MLC=ssd_type == "MLC", type_QLC=ssd_type == "QLC", type_SLC=ssd_type == "SLC", type_TLC=ssd_type == "TLC", # SSD interfaces interface_PCIe_3_0_x4=interface == "PCIe 3.0 x4", interface_PCIe_4_0_x4=interface == "PCIe 4.0 x4", interface_PCIe_5_0_x4=interface == "PCIe 5.0 x4", interface_SATA_6_Gbps=interface == "SATA 6GBps", # SSD protocols protocol_AHCI=protocol == "AHCI", protocol_NVMe=protocol == "NVMe", protocol_NVMe_1_2=protocol == "NVMe 1.2", protocol_NVMe_1_3=protocol == "NVMe 1.3", protocol_NVMe_1_4=protocol == "NVMe 1.4", protocol_NVMe_2_0=protocol == "NVMe 2.0" ) st.write("> the predicted launch price for this SSD is : $%s"%(floor(*central_ssd.predict([*[SSD_SPECS]])))) except: st.write("some inputs are with wrong types") else: st.write("you need to fill all the inputs")