
    ni                     (    S SK r S SKr " S S5      rg)    Nc                   D    \ rS rSrS	S jrS rS
S jrS r\S 5       r	Sr
g)Output   Nc                 8    Xl         X l        S U l        S U l        g N)	timestamp
clause_maprule_trace_noderule_trace_edge)selfr   r	   s      W/home/james-whalen/.local/lib/python3.13/site-packages/pyreason/scripts/utils/output.py__init__Output.__init__   s    "$##    c                    / SQn/ nSn[        UR                  5       GH  u  pVUS   US   US   US   R                  SUS   R                  5       S/nUR                  (       a  UR
                  U   u  ppU
R                  5       US'   XS	'   [        [        U5      5       Hl  n[        X5      n[        X   5      S:X  a  UR                  [        X   5      5        M=  [        X   5      S:X  d  MP  UR                  [        X   5      5        Mn     UR                  U5        GM     UR                  (       a0  US:w  a*  [        SUS-   5       H  nUR                  S
U 35        M     [        R                  " X2S9U l        / SQn/ nSn[        UR                  5       GH  u  pVUS   US   US   US   R                  SUS   R                  5       S/nUR                  (       a  UR                  U   u  ppU
R                  5       US'   XS	'   [        [        U5      5       Hl  n[        X5      n[        X   5      S:X  a  UR                  [        X   5      5        M=  [        X   5      S:X  d  MP  UR                  [        X   5      5        Mn     UR                  U5        GM     UR                  (       a0  US:w  a*  [        SUS-   5       H  nUR                  S
U 35        M     [        R                  " X=S9U l        U R                  bu  SnX.S  nXS  nU R                  R!                  U R"                  SU R                  US9U l        U R                  R!                  U R"                  SU R                  US9U l        g g )N)TimeFixed-Point-OperationNodeLabel	Old Bound	New BoundOccurred Due Tor            -      zClause-)columns)r   r   Edger   r   r   r      )axismap_dictcolumns_to_reorder)	enumerater
   _valueto_str
atom_tracerule_trace_node_atomsrangelenmaxappendlistpd	DataFramer   rule_trace_edge_atomsr	   apply_reorder_row)r   interpretationheader_nodedatamax_jirrowqnqeold_bndnamejheader_edgeoffsetcolumns_to_reorder_nodecolumns_to_reorder_edges                    r   _parse_internal_rule_trace!Output._parse_internal_rule_trace   s,   u n<<=DAQ41qtQqT[[#qt{{}cJC(((6(L(LQ(O% )A A s2wAME25zQ

4;/RUq

4;/ ( KK' >, $$"1eai(""WQC=1 )  "||DFu n<<=DAQ41qtQqT[[#qt{{}cJC(((6(L(LQ(O% )A A s2wAME25zQ

4;/RUq

4;/ ( KK' >, $$"1eai(""WQC=1 )  "||DF ??&F&1'&:#&1'&:##'#7#7#=#=d>O>OVWbfbqbq  G^#=  $_D #'#7#7#=#=d>O>OVWbfbqbq  G^#=  $_D  'r   c                 z   U R                   c  U R                  c  U R                  U5        [        R                  R                  USU R                   S35      n[        R                  R                  USU R                   S35      nU R                   R                  USS9  U R                  R                  USS9  g )Nrule_trace_nodes_z.csvrule_trace_edges_F)index)r
   r   rE   ospathjoinr   to_csv)r   r5   folder
path_nodes
path_edgess        r   save_rule_traceOutput.save_rule_trace[   s    'D,@,@,H++N;WW\\&,=dnn=MT*RS
WW\\&,=dnn=MT*RS
##Je#<##Je#<r   c                     U R                   c  U R                  c  U R                  U5        U R                   U R                  4$ r   )r
   r   rE   )r   r5   s     r   get_rule_traceOutput.get_rule_traced   s>    'D,@,@,H++N;##T%9%999r   c                     U S   U;   a[  X   R                   nS /[        U5      -  nXS      R                  5        H  u  pVX5   XF'   M     [        U5       H  u  pxXG   X'   M     U $ )Nr   )valuesr,   itemsr&   )	r;   r$   r%   original_values
new_valuesorig_pos
target_posr9   cols	            r   r4   Output._reorder_rowj   s{     !X-!5<<O#&8"99J(05F1G(H(N(N(P$)8)B
& )Q#$67%= 8
r   )r	   r   r
   r   r   )z./)__name__
__module____qualname____firstlineno__r   rE   rR   rU   staticmethodr4   __static_attributes__ r   r   r   r      s-    $M_^=:  r   r   )rK   pandasr0   r   rf   r   r   <module>rh      s    	 n nr   