
    tfL"                    |    d Z ddlmZ ddlZddlZddlmZmZ ddl	m
Z
mZmZ ddlmZ ddlmZmZ ddlmZ d	 Zd
 Zy)z Dataframe optimizations     )annotationsN)configcore)	Blockwise
fuse_rootsoptimize_blockwise)HighLevelGraph)cullfuse)ensure_dictc                2   t        |t        t        f      s|g}t        t        j                  |            }t        | t
              s"t        j                  t        |       | d      } n't        | |      } t        | |      } t        | |      } | j                  t        |            } t        j                  d      s| S | j                         }t        |       } t        j                  d      }|d}t!        | |||      \  } }t        | |      \  } }| S )N )dependencies)keyszoptimization.fuse.activezoptimization.fuse.subgraphsT)r   fuse_subgraphs)
isinstancelistsetr   flattenr	   from_collectionsidoptimize_dataframe_getitemr   r   r
   r   getget_all_dependenciesr   r   )dskr   kwargsr   r   _s         a/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/dask/dataframe/optimize.pyoptimizer      s    dT3K(vT"#Dc>*--bgsL )48 404(
((3t9
C
 ::01
++-L
c
CZZ =>N!%	FC #t_FCJ    c                    ddl m}  j                  j                         D cg c]  \  }}t	        ||      s| }}}d d } j                  j                          j                  j                         }|D ]   t               }t        fd|D              r$ j                     }	t         fd|	D              r*|	D ch c]  } | j                  |          c}dhddhfvrs|	D ch c]  } | j                  |         dk(  s| }
}|	|
z
  }t        |
      d	kD  rfd
|
r|
j                         }t         j                  |         d	k7  r j                  t         j                  |         d      } |      r? ||      dk(  r4|j                  d	   d   }|t        t	        |t              r|n|g      z  }nSt         fd|D              sj|D ]B  } j                  |   j                  d	   d   }|t        t	        |t              r|n|g      z  }D |	D ci c]  }| j                  |    }}   }|j                  |      }|j                   |j                   k7  rt        |      sJ |j                         D ]  \  }}|j                   |j                  d   d	   f|j                  d	   f}|j                   |j"                  |j                      i}t%        |j&                  |j(                  |j*                  |||j,                  |j.                        }||<   |j                   h||<    |j                        ||j                   <   ||j                   <   |j                   |j                   k7  s|j                   = # t1        |      }|S c c}}w c c}w c c}w c c}w )Nr   )DataFrameIOLayerc                    t        | t              sy| j                  | j                     d   t        j
                  k7  ryy)NFr   T)r   r   r   outputoperatorgetitem)layers    r   _is_selectionz1optimize_dataframe_getitem.<locals>._is_selection>   s9     %+ 99U\\"1%)9)99r    c                    | j                   d   \  }}|@t        |t        t        t        t
        j                  f      st        j                  |      ryy)N   column-selectionrow-selection)indicesr   tuplestrr   npndarrayisscalar)r'   keyinds      r   _kindz)optimize_dataframe_getitem.<locals>._kindK   sC     ==#S;#sD"**=>"++cBR)r    c              3  j   K   | ]*  }t        |t              s   j                  |d    k(   , yw)r   N)r   r.   name).0xio_layer_namelayerss     r   	<genexpr>z-optimize_dataframe_getitem.<locals>.<genexpr>a   s3      
34
1e@TF=!&&!A$.
s   33c              3  H   K   | ]  } j                   |           y wN)r;   )r8   kr(   r   s     r   r<   z-optimize_dataframe_getitem.<locals>.<genexpr>|   s     >A=A/>s   "r+   r,   r*   c                P     |k(  ry |   }|rt         fd|D              S y)NTc              3  2   K   | ]  } |        y wr>   r   )r8   dep
_walk_deps
dependentssuccesss     r   r<   zAoptimize_dataframe_getitem.<locals>._walk_deps.<locals>.<genexpr>   s      =@Jz38s   F)all)rD   r3   rE   depsrC   s   ` ` r   rC   z.optimize_dataframe_getitem.<locals>._walk_deps   s8    g~c?D DH   r    c              3  F   K   | ]  } j                   ||        y wr>   )rD   )r8   col_select_layerrC   r   s     r   r<   z-optimize_dataframe_getitem.<locals>.<genexpr>   s(      $ 3>>+;=MNs   !)dask.layersr"   r;   itemsr   copyr   r   anyrD   rF   lenpopr   r-   project_columnsr7   	numblocksr   r$   output_indicesr   concatenatenew_axesr	   )r   r   r"   r?   v	io_layersr5   r   columnsrG   row_select_layerscol_select_layersrow_select_layer_layer	selectionrI   rB   update_blocksoldnew	block_keyblocknew_indicesrQ   	new_blocknew_hlgr(   rC   r:   r;   s   `                         @@@@r   r   r   3   s   
 -  #zz//1Utq!ZCS5TUIU ZZ__F##((*L" N!%  
8<
 
  ~~m,* >>>*.C
%&E#**Q- C
   1
C
  )-X1cjjm0D0WQXX #44  !A%
		.   14463>>"2349ZZS^^4D%E Fq IJFV$v:L)L"NN1-a0	3!+It!<I9+    (9   !2 	V

#34<<Q?BIs
9d(C9)UUG	V :>>#cjjo->> ]#!!'*88sxx}%%%$1$7$7$9 5 	5 !$%--*:1*=>a@PQ XXusxx'@A	%LL((II%%NN	 %.y!+.88*Y'5  &2%5%5m%DL"sxx88sxxsxx ]N!` V\2GN[ V@C
 YB ?s"   N3N3N98N>N>6O)__doc__
__future__r   r%   numpyr0   daskr   r   dask.blockwiser   r   r   dask.highlevelgraphr	   dask.optimizationr
   r   
dask.utilsr   r   r   r   r    r   <module>rm      s/     "    D D . ( "!Hvr    