/
lemut
/
cifranet
Обзор
Документация
Войти
/
lemut
/
cifranet
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
path_cb.py
101 строка
4 KB
lemut
commit
23 июл 2026, 16:45
23 июл 2026, 16:45
4a6eb2d
Код
Авторство
О чём код?
#path_cb.py #Построение пути import dash from dash import Dash, html, dcc, Input, ctx, Output, callback, State, no_update import dash_cytoscape as cyto import networkx as nx import pandas as pd from dash_cytoscape_elements import Elements import re FILIAL_LIST = ["center", "ug", "ural", "nwest", "sibir", "fareast","volga"] DATA_FAREAST='./data_connected/connected_objects_fareast.xlsx' DATA_URAL='./data_connected/connected_objects_summary_westsib.xlsx' DATA_URAL2='./data_connected/connected_objects_mesurala.xlsx' DATA_SIB='./data_connected/connected_objects_sib.xls' UG=pd.read_excel('./data_connected/connected_objects_summary_MES_UGA_v0.566.xlsx') CENTER_PD=pd.read_excel('./data_connected/connected_objects_center_v1.713.xlsx') NWEST_PD=pd.read_excel('./data_connected/connected_objects_nwest_v1.194.xlsx') FAREAST = pd.read_excel(DATA_FAREAST) URAL=pd.read_excel(DATA_URAL) URAL2=pd.read_excel(DATA_URAL2) SIB=pd.read_excel(DATA_SIB) DIR_DATA='./data_net/' DATA_URAL=DIR_DATA + 'ural_v0.3.xlsx' DATA_NWEST=DIR_DATA + 'nwest_v0.1.xlsx' DATA_SPD=DIR_DATA + 'spd_v03_with_fake.xlsx' ROUTER_DATA=pd.read_excel(DIR_DATA + 'nodes.xlsx') LOAD_INIT=[10000] VERTEX_INIT="crt2-ne20e.kostroma.center.etsse" #выборка подключенных объектов к УС СПД def unique_object_spd (object_id): unique_values = list() # формируем пустой список для вывода списка подключенных объктов data_list=object_id.replace("'", '"') ROUTER_SEARH="OBJECT == "+ "'"+data_list+"'" router_list= ROUTER_DATA.query(ROUTER_SEARH) unique_router_list = router_list['node name'].unique() for router_find_list in unique_router_list: #на основе найденных имен роутеров выбераем файл для подсчета OBJ match_FILIAL_FAREAST = re.search(r'fareast', router_find_list) match_FILIAL_URAL = re.search(r'westsib', router_find_list) match_FILIAL_URAL2 = re.search(r'ural', router_find_list) match_FILIAL_SIB = re.search(r'siberia', router_find_list) match_FILIAL_UG = re.search(r'south', router_find_list) match_FILIAL_CENTER = re.search(r'center', router_find_list) match_FILIAL_NWEST = re.search(r'nwest', router_find_list) US_SPD_SEARH="spd_router_name == "+ "'"+router_find_list+"'" if match_FILIAL_FAREAST: FILTRED = FAREAST.query(US_SPD_SEARH) unique_values.extend( FILTRED['object_name'].unique().tolist()) elif match_FILIAL_URAL: FILTRED = URAL.query(US_SPD_SEARH) unique_values.extend( FILTRED['object_name'].unique().tolist()) elif match_FILIAL_UG: FILTRED = UG.query(US_SPD_SEARH) unique_values.extend( FILTRED['object_name'].unique().tolist()) elif match_FILIAL_URAL2: FILTRED = URAL2.query(US_SPD_SEARH) unique_values.extend( FILTRED['object_name'].unique().tolist()) elif match_FILIAL_SIB: FILTRED = SIB.query(US_SPD_SEARH) unique_values.extend( FILTRED['object_name'].unique().tolist()) elif match_FILIAL_CENTER: FILTRED = CENTER_PD.query(US_SPD_SEARH) unique_values.extend( FILTRED['object_name'].unique().tolist()) elif match_FILIAL_NWEST: FILTRED = NWEST_PD.query(US_SPD_SEARH) unique_values.extend( FILTRED['object_name'].unique().tolist()) return unique_values test_value = 'УС СПД "Шахты"' print (unique_object_spd (test_value)) def register_cytoscape_callbacks(app): @callback(Output('cytoscape-callbacks-2', 'elements', allow_duplicate=True), Input('input-node-from', 'value'), Input('input-node-to', 'value'), State('cytoscape-callbacks-2', 'elements'), prevent_initial_call=True) def update_graph(node_from, node_to, elements): data_graph_change = Elements() elements=data_graph.to_dash() if node_to and node_from: data_path=load_graph (graf_out,node_from,node_to) print ("PATHO:", data_path) #Подсвечеваем путь на FrontEnd for ele in elements: if 'source' in ele['data']: for node in data_path: if node[0]==ele['data']['source'] and node[1]==ele['data']['target']: print (ele['data']['source'] , ";", ele['data']['target'],' ;',ele['data']['source-label'] ) ele['classes'] = "ROUTE" if node[0]==ele['data']['target'] and node[1]==ele['data']['source']: print (ele['data']['source'] , ";", ele['data']['target'],' ;',ele['data']['source-label'] ) ele['classes'] = "ROUTE" return elements #----------------------------------------------------------------------------