
    |LeA                        d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	m
Z
 d dlmZ d dlZd dlZd dlZd dlmZmZ d dlmZ  e            Zd	d	d
dZd Zd	d	d
dZd	d	d
dZd	d	d
dZd	d	d
dedej        fdZ e                    e          e            e                    e          e            e                    e	          e            e                    e          e           dS )    )compile_components)
Dispatcher)LinesXarrayCommonX)QuadMeshRasterQuadMeshRectilinearQuadMeshCurvilinearbuild_scale_translate)applyN)tokenizecompute)overlapF	antialiascudac          	      2   t          | ||||||          \  }}t          j                                        p|j        }	|                                }
|j        }|                                }|                     |||
                      |	||          S )Nr   )	dask_glyph_dispatchdaskbaseget_scheduler__dask_scheduler____dask_keys____dask_optimize____dask_graph__update)glyphxr_dsschemacanvassummaryr   r   dskname	schedulerkeysoptimizegraphs                Elib/python3.11/site-packages/datashader/data_libraries/dask_xarray.pydask_xarray_pipeliner'      s    #uffgO O OIC
 	''))EU-EI  D&H  ""EJJxxt$$%%%9S$    c                    |j         r|j        s|                    |           \  }}nd\  }}|j         p|}|j        p|}t          ||z    x\  }}}	}
}||f|	|
f}}|j        }|j        }|j                            ||          }|j                            ||          }||z   }||f}|j        	                    ||          }|j        	                    ||          }t          |j        |f|j        |fg          }||||fS )N)NN)x_rangey_rangecompute_bounds_daskr   
plot_widthplot_heightx_axiscompute_scale_and_translatey_axiscompute_indexdictx_labely_label)r   r   r   	x_extents	y_extentsr*   r+   x_minx_maxy_miny_maxboundswidthheightx_sty_ststshaper/   r1   axiss                        r&   shape_bounds_st_and_axisrD       s,   > * *$88??	99)	9n)	Gn)	G*1Gg4E*GGE5%u~u~WGEF=44WeDDD=44WfEED	BUOE]((u55F]((v66F%-(5=&*ABCCD&"d""r(   c                    !"#$%&'()* t          |||           \  "#}t          ||| ||d          \  }}	}
}}}}|j        j        }|j        j        }|                     ||||	||           d d         }dd          }i |j                                        D ]-\  }}dgt          t          j
        |                    z   |<   .| j        &| j        )|| j                 j        t          j                                      &          '                    )          *t          |j                                                  d         $|&         j        }|)         j        }|                     |          %|                     |          ( "#$%&'()*fdt+          |                                || |          !d |                                d         D             }!fdt1          t3          |                    D             }t5          fdt7          ||          D                       }t8          ||
|fgt5          ||| j        | j        gt5          ||	          
          f|!<   |!fS )NTr   r   partitioned   r   c                    g }t          j                  D ][\  }}||         }t          |         |         |         |dz                      }|                    ||         |         g           \t	          |          }t          j        | |                                          }|         }	t                   |	                  |	dz            dz             }
|
         }|         }t                   |                  |dz            dz             }|         }           } ||||           |S )N   coordsdimsr!   x_breaksy_breaks	enumeraterM   sliceappendr3   xr	DataArray
to_dataset)np_arrindschunk_coords_listi
coord_namechunk_numbercoord_slicechunk_coordschunk_dsx_chunk_numberx_breaks_slicex_breaks_chunky_chunk_numbery_breaks_slicey_breaks_chunkaggsr<   
chunk_inds
coord_dimsrL   createextendrB   rA   var_namerO   x_namexdim_indrP   y_nameydim_inds                   r&   chunkzdask_rectilinear.<locals>.chunk[   s   &v{33 	T 	TMAz7L:&|4:&|a'78 K $$j&2D[2Q%RSSSS-..<<jx
 
 

*,, 	
 hv~.v~12Q6
 
 ".1hv~.v~12Q6
 
 ".1 ve}} 	tXr6&	A 	A 	A 	Ar(   c                     g | ]	}|D ]}|
S  rs   .0rowks      r&   
<listcomp>z$dask_rectilinear.<locals>.<listcomp>   %    ???#3??aA????r(   c                     g | ]}|fS rs   rs   ru   r[   r!   s     r&   rx   z$dask_rectilinear.<locals>.<listcomp>       1111dAY111r(   c              3   F   K   | ]\  }}|||d          |d         ffV  dS rJ   rH   Nrs   ru   k2rw   rq   s      r&   	<genexpr>z#dask_rectilinear.<locals>.<genexpr>   =      LLQUAqtQqT*+LLLLLLr(   r*   r+   r   rL   rM   attrs)rD   r   r/   mapperr1   _build_extendchunksitemslistnpcumsumxyr!   rL   rM   index	data_varsr#   valuesinfer_interval_breaksr   __dask_tokenize__r   rangelenr3   zipr
   r5   r4   )+r   r   r   r   r   r   r   rC   inforT   combinefinalizeantialias_stage_2antialias_stage_2_funcs_x_mappery_mapperr*   r+   rw   r   xsysr#   keys2r    r<   rq   rh   ri   rL   rj   rk   r!   rB   rA   rl   rO   rm   rn   rP   ro   rp   s+                             @@@@@@@@@@@@@@@@@r&   dask_rectilinearr   :   s   6ufeLLE62t 	7FEYT_cddd [FD&'8->@WYZ}#H}#H  (D&*;=TV VFRaRjGQRRjG J\'')) 6 6	6d29V#4#4555
1WFWF5:%Ffk""J''H''HEO((**++A.H 
v	B	v	B**2..H**2..H& & & & & & & & & & & & & & & & & & &P E++--vugFFD??,,..q1???D1111c$ii 0 0111E
LLLL3ud;K;KLLL
L
LCGU#3"44EM5=3Q 'BBBD D DECI 9r(   c                `   $%&'()*+,-./012345678 t          |           \  .$/}t          || ||d          \  )}}	}
}}}}|j        j        }|j        j        }                     ||||	||          *$d d         }$dd          }i &j                                        D ]-\  }}dgt          t          j
        |                    z   &|<   . j        3 j        6 j                 j        (t          (j                  ''                    3          5'                    6          8t          j                                                  d         2                     3dd          \  }}                     6dd          \  }}t)          3         d         3         d         z
            4t)          6         d         6         d         z
            7.\  }} fd85fD             \  }}$\  }}}} t+          ||| |||          \  -1t+          ||||||          \  ,0$&'()*,-./012345678fd	%t-                                          | |          +d
                                 d         D             }!+fdt3          t5          |!                    D             }"t7          %fdt9          |"|!          D                       }#t:          ||
|"fgt7          || j         j        gt7          ||                    f|#+<   |#+fS )NTrF   rH   r   F)maybe_expandorientrJ   c                 @    g | ]}j                  j        |         S rs   )r!   rB   )ru   r[   r   r   s     r&   rx   zdask_raster.<locals>.<listcomp>   s(    MMM1E%*%+A.MMMr(   c                    g }t          j                  D ][\  }}||         }t          |         |         |         |dz                      }|                    ||         |         g           \t	          |          }t          j        | |                                          }|         }	         |	         }
|          }         |         }           } |||
|           |S )NrJ   rK   )scale_xscale_ytranslate_xtranslate_yoffset_xoffset_ysrc_xbinsizesrc_ybinsizerQ   )!rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   r   rd   r   rg   r<   rh   ri   rL   rj   rk   r   r   rB   rA   r   r   rl   rm   xbinsizern   ro   ybinsizerp   s!                 r&   rq   zdask_raster.<locals>.chunk   s?   &v{33 	T 	TMAz7L:&|4:&|a'78 K $$j&2D[2Q%RSSSS-..<<jx
 
 

*,, 	
 hf%n5hf%n5 ve}} 	tXr6&K 8$8		= 	= 	= 	= r(   c                     g | ]	}|D ]}|
S rs   rs   rt   s      r&   rx   zdask_raster.<locals>.<listcomp>   ry   r(   c                     g | ]}|fS rs   rs   r{   s     r&   rx   zdask_raster.<locals>.<listcomp>   r|   r(   c              3   F   K   | ]\  }}|||d          |d         ffV  dS r~   rs   r   s      r&   r   zdask_raster.<locals>.<genexpr>   r   r(   r   r   ) rD   r   r/   r   r1   r   r   r   r   r   r   r   r   r!   rL   rM   r   r   r#   _compute_bounds_from_1d_centersfloatr	   r   r   r   r   r   r3   r   r
   r5   r4   )9r   r   r   r   r   r   r   rC   r   rT   r   r   r   r   r   r   r   r*   r+   rw   r   src_x0src_x1src_y0src_y1out_hout_wsrc_hsrc_wout_x0out_x1out_y0out_y1r#   r   r    r<   rq   rh   ri   rL   rj   rk   r!   r   r   rB   rA   r   r   rl   rm   r   rn   ro   r   rp   s9   ``                                  @@@@@@@@@@@@@@@@@@@@@r&   dask_rasterr      s   6ufeLLE62t 	7FEYT_cddd [FD&'8->@WYZ}#H}#H  (D&*;=TV VFRaRjGQRRjG J\'')) 6 6	6d29V#4#4555
1WFWF5:%Ffk""J''H''HEO((**++A.H ;;vE% <  NFF ::vE% ;  NFF U6]1%fa(8899HU6]1%fa(8899H LE5MMMMM88LMMMLE5%+"FFFF0vvuff G[ 1vvuff G[! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !F E++--vugFFD??,,..q1???D1111c$ii 0 0111E
LLLL3ud;K;KLLL
L
LCGU#3"44EM5=3Q 'BBBD D DECI 9r(   c                    !"#$%&'()*+ t          ||           \  %&}t          || ||d          \  !}}	}
}}}}|j        j        }|j        j        }                     ||||	||          #d d         }dd          } j        ) j        + j        }t          ||         j
                  "t          |)         j
                  (t          |+         j
                  *||         j        }| j                 j        }| j                 j        }t          |j                                                  d         'd}t          |t          j        j                  rL| j                 j
        | j                 j
        k    s&| j                 j        | j                 j        k    r.t'          |                     j         j                            t          |t          j        j                  rL| j                 j
        | j                 j
        k    s&| j                 j        | j                 j        k    r.t'          |                     j         j                            |j        j        dk    r|                    t0          j                  }|j        j        dk    r|                    t0          j                  }t5          |dt0          j        	          }t5          |dt0          j        	          }!"# %&'()*+fd
 t9          |                                | |          $d |                                D             }d |                                D             }d |                                D             }$fdt?          tA          |                    D             }tC           fdtE          ||||          D                       }tF          ||
|fgtC          || j$         j%        gtC          ||                    f|$<   |&                    |j                   |&                    |j                   |$fS )NTrF   rH   r   zDataArray {name} is backed by a Dask array, 
but coordinate {coord} is not backed by a Dask array with identical 
dimension order and chunks)r!   coordfrJ   )depthboundaryc                 ^   ||fD ]w}t          j        |dd d f                                                   r-|dd d f         |dd d f         |dd d f         z
  z
  |dd d f<   t          j        |dd d f                                                   r-|dd d f         |dd d f         |dd d f         z
  z   |dd d f<   t          j        |d d df                                                   r-|d d df         |d d df         |d d df         z
  z
  |d d df<   t          j        |d d df                                                   r-|d d df         |d d df         |d d df         z
  z   |d d df<   y                    |          }                    |          }|ddddf         }|ddddf         }|ddddf         f|ddddf         fi}t	          j        | |                                          } 
          } ||	||           |S )	Nr   rJ   rH   rK   rN   )r   isnanallr   rU   rV   rW   )np_zsnp_x_centersnp_y_centerscentersrc   rf   r_   r`   rg   r<   rj   data_dim_namesrk   r   rB   rA   rl   x_coord_dim_namesx_coord_namey_coord_dim_namesy_coord_names            r&   rq   zdask_curvilinear.<locals>.chunk  s    %l3 	T 	TGx111&&**,, P '111AAAAAA1N O111xAAA''++-- T!(QQQ72qqq5>GBPQPQPQEN3R!SAAAx1&&**,, P '1AA1N O1x2''++-- T!(B7111b5>GAAArEN3R!S2 44\BB44\BB ("ad
3'"ad
3 ,l1R42:.FG,l1R42:.FG
 <,^(
 
 

*,, 	
 ve}} 	tXr6&	A 	A 	A 	Ar(   c                     g | ]	}|D ]}|
S rs   rs   rt   s      r&   rx   z$dask_curvilinear.<locals>.<listcomp>G  s%    ;;;Cs;;!a;;;;r(   c                     g | ]	}|D ]}|
S rs   rs   rt   s      r&   rx   z$dask_curvilinear.<locals>.<listcomp>H  &    UUUCQTUUAaUUUUr(   c                     g | ]	}|D ]}|
S rs   rs   rt   s      r&   rx   z$dask_curvilinear.<locals>.<listcomp>I  r   r(   c                     g | ]}|fS rs   rs   )ru   r[   result_names     r&   rx   z$dask_curvilinear.<locals>.<listcomp>K  s    @@@K#@@@r(   c              3   2   K   | ]\  }}}}||||ffV  d S )Nrs   )ru   res_kz_kx_ky_krq   s        r&   r   z#dask_curvilinear.<locals>.<genexpr>M  sM        "UCc 
S#&'     r(   r   r   )'rD   r   r/   r   r1   r   r   r   r!   r   rM   datar   r#   
isinstancer   arrayArrayr   
ValueErrorformatdtypekindastyper   float64r   nanr   r   r   r   r   r3   r   r
   r5   r4   r   ),r   r   r   r   r   r   r   rC   r   rT   r   r   r   r   r   r   r   r*   r+   z_namezs	x_centers	y_centerserr_msgx_overlapped_centersy_overlapped_centersz_keysx_overlap_keysy_overlap_keysresult_keysr    r<   rq   rj   r   rk   r   rB   rA   rl   r   r   r   r   s,   `                              @@@@@@@@@@@@@r&   dask_curvilinearr      s   6ufeLLE62t 	7FEYT_cddd [FD&'8->@WYZ}#H}#H  (D&*;=TV VFRaRjGQRRjG7L7LZF%-,--NU<0566U<0566	v	Beg#Ieg#IEO((**++A.H	% 
 y$*"233 I%*"eEGn&999%*$eg(===UZuwGGHHHy$*"233 I%*"eEGn&999%*$eg(===UZuwGGHHH s""$$RZ00	s""$$RZ00	"9AGGG"9AGGG$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $L 52244feWMMK;;2++--;;;FUU#7#E#E#G#GUUUNUU#7#E#E#G#GUUUN@@@@U3v;;-?-?@@@K
    &)'
 '
    C 	x7K01$t5=%-*H999	; 	; 	;C JJ#()))JJ#()))r(   r   r   c                    !"#$%& t          ||           \  !"}t          ||| ||d          \  }}	}
}}}|j        j        }|j        j        }|                     ||||	||          d d         }dd          }| j        %| j        $d$z
  | j                 j	        j
                  %         &i j                                        D ]-\  }}dgt          t          j        |                    z   |<   .d}|                    ||          # !"#$%&fdt#                                          || |          d                                 d         D             }fdt)          t+          |                    D             }t-          fd	t/          ||          D                       }t0          ||
|fgt-          ||| j        | j        gt-          ||
                    f|<   |fS )NTrF   rH   rJ   r   c                               }         |                  }|| j                  z   }||         j        }         |                  }|| j                  z   }t          dk    rdfndf| f          }D ]}	|	         ||         j        }
|
f||	<   t          j        |t          d|ft          j        ||          f                    }r|}||j        d<   ||z
  |j        d<    ||           |S )Nr   r   )r!   )r   other_dim_name)r   rL   _datashader_row_offset_datashader_row_length)rB   r   r3   rU   Datasetr   aranger   )np_arraychunk_indicesrg   start_x_indexend_x_indexr   start_other_indexend_other_indexr   column_namer   r`   
row_offsetr<   chunk_offsetscolumn_namesrj   rk   other_dim_indexr   rB   rA   uses_row_indexx_dim_indexrm   r   r   s                r&   rq   z dask_xarray_lines.<locals>.chunk  sq   ve}}%f-mK.HI#hn[&AA}[()0).9-:XY+hn_.MM+6!+;+;3''.RUAVX`a
 
 
	 ( 	> 	>K;'(9/(IJQF&4f%=Ik"":( .	:K_0]0]^  
 
 
  	[*J7AHN347FIZ7ZHN34tXr6***r(   c                     g | ]	}|D ]}|
S rs   rs   rt   s      r&   rx   z%dask_xarray_lines.<locals>.<listcomp>  ry   r(   c                     g | ]}|fS rs   rs   r{   s     r&   rx   z%dask_xarray_lines.<locals>.<listcomp>  r|   r(   c              3   F   K   | ]\  }}|||d          |d         ffV  dS r~   rs   r   s      r&   r   z$dask_xarray_lines.<locals>.<genexpr>  r   r(   r   r   )rD   r   r/   r   r1   r   r   r  r   rL   rM   r   r   r   r   r   r  r   r   r   r   r   r3   r   r
   r5   r4   )'r   r   r   r   r   r   r   rC   r   rT   r   r   r   r   r   r   r*   r+   rw   r   rG   r#   r   r    r<   rq   r	  r
  rj   rk   r!   r  r   rB   rA   r  r  rm   r   s'    `                      @@@@@@@@@@@@@@@r&   dask_xarray_linesr  a  s    7ufeLLE62t *'65I\`6:< < <FD&'8->@W}#H}#H  (D&*;=TV VFRaRjGQRRjGWF#K+oO57^*/@N	vB M\'')) 9 9	63bi&7&7!8!88aK++D+>>N                                   D E++--vugFFD??,,..q1???D1111c$ii 0 0111E
LLLL3ud;K;KLLL
L
LCGU#3"44EM5=3Q 'BBBD D DECI 9r(   )datashader.compilerr   datashader.utilsr   datashader.glyphs.liner   datashader.glyphs.quadmeshr   r   r   r	   r
   r   numpyr   xarrayrU   	dask.baser   r   dask.array.overlapr   r   r'   rD   r   r   r   r   r  registerrs   r(   r&   <module>r     sY   2 2 2 2 2 2 ' ' ' ' ' ' 5 5 5 5 5 5            # " " " " "          ' ' ' ' ' ' ' ' & & & & & & jll  NSY^           # # #4 JOUZ P P P P Pf EJPU \ \ \ \ \~ JOUZ r r r r rn UH H HH&(jH H H HV 2   0 1 12B C C C ,   ^ , ,[ 9 9 9 1   0 1 12B C C C 0   / 0 01B C C C C Cr(   