|
- import ast
- import networkx as nx
- from utils import my
-
- from pylab import show
- from utils.scan import pre_scan, store_pre_visitor_item, change_scan, relationship_scan
-
- optim_keywords = ['torch.optim.Adadelta', 'torch.optim.Adagrad', 'torch.optim.Adam',
- 'torch.optim.AdamW', 'torch.optim.SparseAdam', 'torch.optim.Adamax', 'torch.optim.ASGD',
- 'torch.optim.LBFGS', 'torch.optim.NAdam', 'torch.optim.RAdam',
- 'torch.optim.RMSprop', 'torch.optim.Rprop', 'torch.optim.SGD']
-
- path_list = [
- r'D:\Project\repos\CNN-NLM-master',
- r'D:\Project\repos\ntire2021-sar-master\ntire2021',
- r'D:\Project\repos\SAR_specific_models-master\DSN_src',
- r'D:\Project\repos\sar_vessel_detect-main\src\xview3',
- r'D:\Project\repos\SarNet-master\Net',
- ]
-
-
- project_path = path_list[4]
- train_path = path_list[4]
- # 暂时用训练文件所在目录和项目文件所在目录作为syspath
- sys_path = [project_path, train_path]
-
-
- p = pre_scan(project_path, sys_path)
- pre_visitor_items = store_pre_visitor_item(p)
- change_tree_dict, project_call_func_dict = change_scan(project_path, sys_path, pre_visitor_items)
- v, r = relationship_scan(change_tree_dict, sys_path, project_call_func_dict)
-
-
-
- G = nx.DiGraph()
- G.add_edges_from(r)
- main_node_list = []
- for node in G.nodes.keys():
- if '| main code' in node:
- main_node_list.append(node)
- # print(main_node_list)
-
- sub_graph_list = []
- for node in main_node_list:
- sub_nodes = []
- # 判断子图中是否出现torch.optim.xxx
- flag = 0
- for n in my.traversal(G.adj, node):
- if n in optim_keywords:
- flag = 1
- sub_nodes.append(n)
- sub = G.subgraph(sub_nodes)
- nx.draw(sub, with_labels=True, front_size=3)
- show()
- if flag:
- sub_graph_list.append((node,sub))
-
- for sub_graph in sub_graph_list:
- print(sub_graph)
- # nx.draw_networkx_labels(G, with_labels=True, front_size=5)
- # nx.write_gexf(G, 't.gexf')
- # show()
- # atok = asttokens_file(r'D:\Project\newExc\utils\test.py')
|