Spaces:
Sleeping
Sleeping
| import pickle as pkl | |
| import plotly.express as px | |
| import gradio as gr | |
| from pydantic import BaseModel, Field | |
| from typing import List | |
| class TechStack(BaseModel): | |
| GPU_Frameworks: List[str] = Field(..., alias="GPU Frameworks") | |
| Programming_Languages: List[str] = Field(..., alias="Programming Languages") | |
| Generative_AI_Frameworks: List[str] = Field(..., alias="Generative AI Frameworks") | |
| Databases: List[str] = Field(..., alias="Databases") | |
| Orchestration_Deployment: List[str] = Field(..., alias="Orchestration & Deployment") | |
| APIs_Web_Frameworks: List[str] = Field(..., alias="APIs & Web Frameworks") | |
| Big_Data_Technologies: List[str] = Field(..., alias="Big Data Technologies") | |
| Cloud_Platforms_Services: List[str] = Field(..., alias="Cloud Platforms & Services") | |
| Machine_Learning_Deep_Learning_Libraries: List[str] = Field(..., alias="Machine Learning & Deep Learning Libraries") | |
| Data_Visualization_Tools: List[str] = Field(..., alias="Data Visualization Tools") | |
| CI_CD_MLOps: List[str] = Field(..., alias="CI/CD & MLOps") | |
| Model_Formats_Optimization: List[str] = Field(..., alias="Model Formats & Optimization") | |
| Qualifications: List[str] = Field(..., alias="Qualifications") | |
| Machine_Learning_AI_Techniques: List[str] = Field(..., alias="Machine Learning & AI Techniques") | |
| Machine_Learning_AI_Models: List[str] = Field(..., alias="Machine Learning & AI Models") | |
| Tasks_Responsibilities: List[str] = Field(..., alias="Tasks & Responsibilities") | |
| Soft_Skills: List[str] = Field(..., alias="Soft Skills") | |
| Miscellaneous: List[str] = Field(..., alias="Miscellaneous") | |
| class Config: | |
| populate_by_name = True | |
| with open("job_stack_count.pkl", "rb") as f: | |
| job_stack_count = pkl.load(f) | |
| job_stack_count['Generative_AI_Frameworks']['Pydantic'] = 1 | |
| job_stack_count['Programming_Languages']['C#'] = 1 | |
| # Load the user's stack data | |
| with open("all_my_stacks.pkl", "rb") as f: | |
| mynew_stacks = pkl.load(f) | |
| def generate_treemap(category: str): | |
| """Generate a treemap visualization for the selected category.""" | |
| if category not in job_stack_count: | |
| return "Category not found" | |
| stat_dict = job_stack_count[category] | |
| stat_dict_keys = list(stat_dict.keys()) | |
| stat_dict_values = list(stat_dict.values()) | |
| total = len(mynew_stacks) | |
| stat_dict_perc = [val / total * 100 for val in stat_dict_values] | |
| hover_text = [f"{label}: Covers {p:.0f}% of Job Descriptions" for label, p in zip(stat_dict_keys, stat_dict_perc)] | |
| fig = px.treemap( | |
| names=stat_dict_keys, | |
| parents=["" for _ in stat_dict_keys], | |
| values=stat_dict_values, | |
| hover_name=hover_text | |
| ) | |
| fig.update_layout(title=category) | |
| return fig | |
| # Create a Gradio interface in vertical layout | |
| categories = list(job_stack_count.keys()) | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# Data Science Tech Stack Treemap Visualization") | |
| gr.Markdown("Select a category to visualize the distribution of job tech stacks.") | |
| with gr.Column(): # Ensures vertical layout | |
| category_input = gr.Dropdown(choices=categories, label="Select Category") | |
| output_plot = gr.Plot() | |
| category_input.change(generate_treemap, inputs=category_input, outputs=output_plot) | |
| demo.launch() | |
| # Launch the app | |
| demo.launch() | |