Untitled
unknown
plain_text
5 months ago
2.4 kB
1
Indexable
def get_edges(self, idx, data): """ Function to get pairs of statement which has edge between them Input: idx : idx of statement data : DataFrame Returns: List of tuples """ st,ed = self.get_block_idx(idx, data) df = data.iloc[st:ed+1] edges_pair = [] for i,d in df.iterrows(): if pd.notna(d.Conditional_Seq): from_node = tuple(df[df['Sequence'].astype('int')==int(float(d.Conditional_Seq))].iloc[0]) to_node = tuple(d) edges_pair.append((from_node, to_node)) return edges_pair data = pd.DataFrame(result['data'], dtype=str) # st.title("BRE Target Flow") nodes = [] edges = [] input_param_idx = data[data['Sequence'].astype(str) == str(st.query_params['seq_id'])].index.item() result = bre_utils.get_edges(input_param_idx, data) cond = [str(i) for i in data['Conditional_Seq'].to_list()] # Create a Graphviz graph object with a tree layout graph = graphviz.Digraph(format='png') graph.attr(rankdir='TB', splines='ortho') # TB = Top-Bottom, splines='ortho' for orthogonal edges graph.attr(size='30,30') graph.attr(nodesep='0.5', ranksep='0.7') # Increase spacing between nodes and ranks graph.attr(margin='1') graph.attr(dpi='70') for node in result: graph.node( str(node[0][0]), label=str(node[0][1]), shape='box', width='3', height='1', fontsize='15pt' ) if st.query_params['var_name'] in str(node[1]): graph.node( str(node[1][0]), label=str(node[1][1]), shape='box', style="filled", fillcolor="green", width='5', height='1', fontsize='15pt' ) else: graph.node( str(node[1][0]), label=str(node[1][1]), shape='box', # Use square boxes width='3', height='1', fontsize='15pt' # Increase font size ) graph.edge(str(node[0][0]), str(node[1][0]), edge_type='straight') graph.format = 'png' graph.render(filename='graph') image = Image.open('graph.png') with Image.open('graph.png') as img: img_width, img_height = img.size st.image(image, width=img_width)
Editor is loading...
Leave a Comment