From b06d553f7551be9e1548d649d563b906325b7114 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 26 Sep 2023 21:03:35 +0200 Subject: [PATCH] Extracted Data-Extraction Metrhods into separate Files --- .../ui/networkx_dash.py | 27 ---------- .../ui/pages/home.py | 52 +++---------------- .../utils/networkx/__init__.py | 1 + .../utils/networkx/networkx_data.py | 48 +++++++++++++++++ 4 files changed, 56 insertions(+), 72 deletions(-) create mode 100644 src/aki_prj23_transparenzregister/utils/networkx/__init__.py create mode 100644 src/aki_prj23_transparenzregister/utils/networkx/networkx_data.py diff --git a/src/aki_prj23_transparenzregister/ui/networkx_dash.py b/src/aki_prj23_transparenzregister/ui/networkx_dash.py index 4eb961a..bdddc57 100644 --- a/src/aki_prj23_transparenzregister/ui/networkx_dash.py +++ b/src/aki_prj23_transparenzregister/ui/networkx_dash.py @@ -109,22 +109,6 @@ def networkGraph(company_id: int) -> go.Figure: # figure return go.Figure(data=[edge_trace, node_trace], layout=layout) - -# Dash App - - -# app = Dash(__name__) - -# app.title = "Dash Networkx" - -# app.layout = html.Div( -# [ -# html.I("Write your EDGE_VAR"), -# html.Br(), -# dcc.Input(id="EGDE_VAR", type="text", value="K", debounce=True), -# dcc.Graph(id="my-graph"), -# ] -# ) def networkx_component(company_id: int): layout = html.Div( @@ -135,14 +119,3 @@ def networkx_component(company_id: int): ) return layout -# callback( -# Output("my-graph", "figure", allow_duplicate=True), -# [Input("EGDE_VAR", "value")], -# prevent_initial_call=True, -# ) -# def update_output() -> None: -# return networkGraph() - - -# if __name__ == "__main__": -# app.run(debug=True) diff --git a/src/aki_prj23_transparenzregister/ui/pages/home.py b/src/aki_prj23_transparenzregister/ui/pages/home.py index ad0489b..b8200df 100644 --- a/src/aki_prj23_transparenzregister/ui/pages/home.py +++ b/src/aki_prj23_transparenzregister/ui/pages/home.py @@ -4,9 +4,10 @@ from dash import html import pandas as pd import networkx as nx import plotly.graph_objects as go -from dash import Dash, Input, Output, dcc, html, callback +from dash import Dash, Input, Output, dcc, html, callback, dash_table from aki_prj23_transparenzregister.config.config_providers import JsonFileConfigProvider from aki_prj23_transparenzregister.utils.sql import connector, entities +from aki_prj23_transparenzregister.utils.networkx.networkx_data import find_top_companies, find_all_company_relations dash.register_page( __name__, @@ -20,37 +21,6 @@ dash.register_page( ], ) -def find_all_company_relations() -> pd.DataFrame: - session = connector.get_session(JsonFileConfigProvider("./secrets.json")) - query_companies = session.query(entities.Company) #.all() - query_relations = session.query(entities.CompanyRelation) # .all() - - companies_df: pd.DataFrame = pd.read_sql(str(query_companies), session.bind) # type: ignore - companies_relations_df: pd.DataFrame = pd.read_sql(str(query_relations), session.bind) # type: ignore - # print(companies_relations_df) - companies_relations_df = companies_relations_df[["relation_id","company_relation_company2_id"]] - # print(companies_relations_df) - company_name = [] - connected_company_name = [] - - companies_relations_df = companies_relations_df.head() - # print(companies_relations_df) - - for _, row in companies_relations_df.iterrows(): - # print(companies_df.loc[companies_df["company_id"] == row["relation_id"]]["company_name"].values[0]) - # print("TEst") - company_name.append(companies_df.loc[companies_df["company_id"] == row["relation_id"]]["company_name"].values[0]) - - connected_company_name.append(companies_df.loc[companies_df["company_id"] == row["company_relation_company2_id"]]["company_name"].values[0]) - # print(connected_company_name) - - # print(company_name) - companies_relations_df["company_name"] = company_name - companies_relations_df["connected_company_name"] = connected_company_name - # print("Test") - # print(companies_relations_df) - return companies_relations_df - # Plotly figure def networkGraph(EGDE_VAR: None) -> go.Figure: # find_all_company_relations() @@ -58,10 +28,6 @@ def networkGraph(EGDE_VAR: None) -> go.Figure: edges = [] for index, row in find_all_company_relations().iterrows(): edges.append([row["company_name"], row["connected_company_name"]]) - # print(row["company_name"], row["connected_company_name"]) - # print(edges) - # edges = df[["relation_id","company_relation_company2_id"]] - # edges = [[EGDE_VAR, "B"], ["B", "C"], ["B", "D"]] network_graph = nx.Graph() network_graph.add_edges_from(edges) pos = nx.spring_layout(network_graph) @@ -154,14 +120,7 @@ def networkGraph(EGDE_VAR: None) -> go.Figure: # figure return go.Figure(data=[edge_trace, node_trace], layout=layout) - -# Dash App - - -# app = Dash(__name__) - -# app.title = "Dash Networkx" - +df = find_top_companies() layout = html.Div( children = html.Div( @@ -169,12 +128,14 @@ layout = html.Div( html.Div( className="top_companytable_style", children=[ - html.I("Write your EDGE_VAR") + html.I("Write your EDGE_VAR"), + dash_table.DataTable(df.to_dict('records'), [{"name": i, "id": i} for i in df.columns]) ] ), html.Div( className="networkx_style", children=[ + dcc.Dropdown(['eigenvector', 'degree', 'betweeness', 'closeness'], 'eigenvector', id='demo-dropdown'), html.I("Write your EDGE_VAR"), html.Br(), # dcc.Dropdown(['eigenvector', 'degree', 'betweeness', 'closeness'], 'eigenvector', id='metric-dropdown'), @@ -193,4 +154,5 @@ layout = html.Div( [Input("EGDE_VAR", "value")], ) def update_output(EGDE_VAR: None) -> None: + find_top_companies() return networkGraph(EGDE_VAR) \ No newline at end of file diff --git a/src/aki_prj23_transparenzregister/utils/networkx/__init__.py b/src/aki_prj23_transparenzregister/utils/networkx/__init__.py new file mode 100644 index 0000000..4d6d454 --- /dev/null +++ b/src/aki_prj23_transparenzregister/utils/networkx/__init__.py @@ -0,0 +1 @@ +"""Everything regarding data extraction for NetworkX Graphs.""" diff --git a/src/aki_prj23_transparenzregister/utils/networkx/networkx_data.py b/src/aki_prj23_transparenzregister/utils/networkx/networkx_data.py new file mode 100644 index 0000000..4fe3c0e --- /dev/null +++ b/src/aki_prj23_transparenzregister/utils/networkx/networkx_data.py @@ -0,0 +1,48 @@ +from aki_prj23_transparenzregister.utils.sql import connector, entities +from aki_prj23_transparenzregister.config.config_providers import JsonFileConfigProvider +import pandas as pd + +def find_all_company_relations() -> pd.DataFrame: + """_summary_ + + Returns: + pd.DataFrame: _description_ + """ + session = connector.get_session(JsonFileConfigProvider("./secrets.json")) + query_companies = session.query(entities.Company) #.all() + query_relations = session.query(entities.CompanyRelation) # .all() + + companies_df: pd.DataFrame = pd.read_sql(str(query_companies), session.bind) # type: ignore + companies_relations_df: pd.DataFrame = pd.read_sql(str(query_relations), session.bind) # type: ignore + companies_relations_df = companies_relations_df[["relation_id","company_relation_company2_id"]] + company_name = [] + connected_company_name = [] + + companies_relations_df = companies_relations_df.head() + + for _, row in companies_relations_df.iterrows(): + company_name.append(companies_df.loc[companies_df["company_id"] == row["relation_id"]]["company_name"].values[0]) + connected_company_name.append(companies_df.loc[companies_df["company_id"] == row["company_relation_company2_id"]]["company_name"].values[0]) + + companies_relations_df["company_name"] = company_name + companies_relations_df["connected_company_name"] = connected_company_name + + return companies_relations_df + +def find_top_companies() -> pd.DataFrame: + """_summary_ + + Returns: + pd.DataFrame: _description_ + """ + session = connector.get_session(JsonFileConfigProvider("./secrets.json")) + query_companies = session.query(entities.Company) #.all() + + companies_df: pd.DataFrame = pd.read_sql(str(query_companies), session.bind) # type: ignore + companies_df = companies_df.head() + companies_df = companies_df[["company_name"]] + companies_df["Platzierung"] = [1,2,3,4,5] + companies_df["Umsatz M€"] = [1,2,3,4,5] + companies_df = companies_df[['Platzierung', 'company_name', 'Umsatz M€']] + print(companies_df) + return companies_df \ No newline at end of file