def _update_histo( virus_name, mumps, dengue, lassa, avian_opt1, avian_opt2, flu_opt1, flu_opt2, flu_opt3, id_year, ): virus_name = virus_name.lower() if virus_name == "ebola" or virus_name == "zika" or virus_name == "measles": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1="", level2="", level3="") elif virus_name == "mumps": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=mumps, level2="", level3="") elif virus_name == "dengue": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=dengue, level2="", level3="") elif virus_name == "lassa": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=lassa, level2="", level3="") elif virus_name == "avian": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=avian_opt1, level2=avian_opt2, level3="") elif virus_name == "flu": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=flu_opt1, level2=flu_opt2, level3=flu_opt3) df = pd.read_csv(metadata_file_stat_filtred) min_date, max_date = id_year # To select only the data between min_date and max_date df = df[df["Year"] >= min_date] df = df[df["Year"] <= max_date] # Count the number of viruses by Country df_group_by_country = df.groupby(["Country"])["Value"].sum() # Translate groupby object in dataframe df_group_by_country = df_group_by_country.to_frame() # Rename the first column in Value df_group_by_country.columns = ["Value"] # Move the index values (i.e. Country column) in column and reset index df_group_by_country = df_group_by_country.reset_index() return { "data": [{ "x": df_group_by_country["Country"], "y": df_group_by_country["Value"], "type": "bar", "marker": dict(color="#8380ff"), }], "layout": { "autosize": True, "margin": dict(l=30, r=30, b=70, t=40), "title": "<br>Distribution of {} <br>Between {} and {}".format( virus_name.title(), min_date, max_date), "font": dict(family="Open Sans"), }, }
def _update_curve( virus_name, mumps, dengue, lassa, avian_opt1, avian_opt2, flu_opt1, flu_opt2, flu_opt3, id_year, ): virus_name = virus_name.lower() if virus_name == "ebola" or virus_name == "zika" or virus_name == "measles": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1="", level2="", level3="") elif virus_name == "mumps": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=mumps, level2="", level3="") elif virus_name == "dengue": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=dengue, level2="", level3="") elif virus_name == "lassa": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=lassa, level2="", level3="") elif virus_name == "avian": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=avian_opt1, level2=avian_opt2, level3="") elif virus_name == "flu": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=flu_opt1, level2=flu_opt2, level3=flu_opt3) df = pd.read_csv(metadata_file_stat_filtred) min_date, max_date = id_year # To select only the data between min_date and max_date df = df[df["Year"] >= min_date] df = df[df["Year"] <= max_date] return create_curve_line(df, virus_name, min_date, max_date)
def update_phylogeny_tree( virus_name, mumps, dengue, lassa, avian_opt1, avian_opt2, flu_opt1, flu_opt2, flu_opt3, ): virus_name = virus_name.lower() ord_by_elt = "Country" if virus_name == "ebola" or virus_name == "zika" or virus_name == "measles": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1="", level2="", level3="") elif virus_name == "mumps": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=mumps, level2="", level3="") elif virus_name == "dengue": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat, ) = create_paths_file(virus_name, level1=dengue, level2="", level3="") elif virus_name == "lassa": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=lassa, level2="", level3="") elif virus_name == "avian": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=avian_opt1, level2=avian_opt2, level3="") elif virus_name == "flu": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=flu_opt1, level2=flu_opt2, level3=flu_opt3) if tree_file_filtred in tree_fig: fig = tree_fig[tree_file_filtred] else: if ord_by_elt == "Country" or ord_by_elt == "Division" or ord_by_elt == "Date": fig = create_tree(virus_name, tree_file_filtred, metadata_file_filtred, ord_by_elt) tree_fig[tree_file_filtred] = fig return fig
def _update_slicer( virus_name, mumps, dengue, lassa, avian_opt1, avian_opt2, flu_opt1, flu_opt2, flu_opt3, ): virus_name = virus_name.lower() if virus_name == "ebola" or virus_name == "zika" or virus_name == "measles": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1="", level2="", level3="") elif virus_name == "mumps": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=mumps, level2="", level3="") elif virus_name == "dengue": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=dengue, level2="", level3="") elif virus_name == "lassa": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=lassa, level2="", level3="") elif virus_name == "avian": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=avian_opt1, level2=avian_opt2, level3="") elif virus_name == "flu": ( tree_file_filtred, metadata_file_filtred, metadata_file_stat_filtred, ) = create_paths_file(virus_name, level1=flu_opt1, level2=flu_opt2, level3=flu_opt3) df = pd.read_csv(metadata_file_stat_filtred) min_date, max_date = min_max_date(df) # create the dictionary of slider marks_data = slicer(min_date, max_date) min_max_date_value = [min_date, max_date] # To select only the data between min_date and max_date df = df[df["Year"] >= min_date] df = df[df["Year"] <= max_date] return dcc.RangeSlider( id="id-year", min=min_date, max=max_date, step=1, marks=marks_data, value=min_max_date_value, )
slicer, create_tree, create_map_bubble_year, create_curve_line, ) app = dash.Dash(__name__) server = app.server virus_name = "measles" species = ["Avian", "Ebola", "Lassa", "Measles", "Mumps", "Zika"] tree_fig = {} mapbox_access_token = "pk.eyJ1IjoicGxvdGx5bWFwYm94IiwiYSI6ImNrOWJqb2F4djBnMjEzbG50amg0dnJieG4ifQ.Zme1-Uzoi75IaFbieBDl3A" tree_file, metadata_file, metadata_file_stat = create_paths_file(virus_name, level1="", level2="", level3="") # To know the minimum and the maximum values of date for slicer df_stat_metadata = pd.read_csv(metadata_file_stat) min_date, max_date = min_max_date(df_stat_metadata) # create the dictionary of slider marks_data = slicer(min_date, max_date) min_max_date_value = [min_date, max_date] fig = create_tree(virus_name, tree_file, metadata_file, "Country") tree_fig[tree_file] = fig fig_map_bubble = create_map_bubble_year(virus_name, metadata_file_stat, 2, min_date, max_date)