
    z	iv                         S r S/rSSKrSSKrSSKrSSKrSSKrSSKJ	r
  SSKJr  SSKJrJr  SSKJr  SSKJr  S	r\R*                  " \\R,                  \R.                  -  5      r " S
 S\\5      r " S S5      rS rg)zBloch sphereBloch    N)FancyArrowPatch)Axes3Dproj3d)Patch3D   )matplotlib_close_if_inlinea  ^
    v?
    (?:
        (?:(?P<epoch>[0-9]+)!)?                           # epoch
        (?P<release>[0-9]+(?:\.[0-9]+)*)                  # release segment
        (?P<pre>                                          # pre-release
            [-_\.]?
            (?P<pre_l>(a|b|c|rc|alpha|beta|pre|preview))
            [-_\.]?
            (?P<pre_n>[0-9]+)?
        )?
        (?P<post>                                         # post release
            (?:-(?P<post_n1>[0-9]+))
            |
            (?:
                [-_\.]?
                (?P<post_l>post|rev|r)
                [-_\.]?
                (?P<post_n2>[0-9]+)?
            )
        )?
        (?P<dev>                                          # dev release
            [-_\.]?
            (?P<dev_l>dev)
            [-_\.]?
            (?P<dev_n>[0-9]+)?
        )?
    )
    (?:\+(?P<local>[a-z0-9]+(?:[-_\.][a-z0-9]+)*))?       # local version
$c                   ,    \ rS rSrSrSrSS jrS rSrg)	Arrow3Di   zMakes a fancy arrowzmpl_toolkits.mplot3d.art3dc                     [         R                  " U SS40 UD6  U R                  [        [	        X5      5      X45        S U l        g )N)r   r   )r   __init__set_3d_propertiestuplezip_path2d)selfxsyszszdirkwargss         T/home/james-whalen/.local/lib/python3.13/site-packages/qiskit/visualization/bloch.pyr   Arrow3D.__init__x   s;     	  vv@@uS[12<    c                 l   [        U R                  6 u  p#n[        R                  " X#X@R                  R
                  5      u  pVn[        R                  R                  [        R                  " XV/5      5      U l        U R                  US   US   4US   US   45        [        R                  " X5        g )Nr   r   )r   
_segment3dr   proj_transformaxesM
matplotlibpathPathnpcolumn_stackr   set_positionsr   draw)r   rendererxs3dys3dzs3dx_sy_s_s           r   r'   Arrow3D.draw   s    0D++DiikkJ!!++BOOSJ,GHCFCF+c!fc!f-=>T,r   )r   N)z)__name__
__module____qualname____firstlineno____doc__r   r'   __static_attributes__ r   r   r   r   i   s     .J	-r   r   c                       \ rS rSrSr SS jrS rS rS rSS jr	S	 r
S
 rS rSS jrS rS rS rS rS rS rS rSS jrSS jrSrg)r      aU  Class for plotting data on the Bloch sphere.  Valid data can be
either points or vectors.

Attributes:
    axes (instance):
        User supplied Matplotlib axes for Bloch sphere animation.
    fig (instance):
        User supplied Matplotlib Figure instance for plotting Bloch sphere.
    font_color (str):
        Color of font used for Bloch sphere labels.
    font_size (int):
        Size of font used for Bloch sphere labels.
    frame_alpha (float):
        Sets transparency of Bloch sphere frame.
    frame_color (str):
        Color of sphere wireframe.
    frame_width (int):
        Width of wireframe.
    point_color (list):
        List of colors for Bloch sphere point markers to cycle through.
        i.e. By default, points 0 and 4 will both be blue ('b').
    point_marker (list):
        List of point marker shapes to cycle through.
    point_size (list):
        List of point marker sizes. Note, not all point markers look
        the same size when plotted!
    sphere_alpha (float):
        Transparency of Bloch sphere itself.
    sphere_color (str):
        Color of Bloch sphere.
    figsize (list):
        Figure size of Bloch sphere plot.  Best to have both numbers the same;
        otherwise you will have a Bloch sphere that looks like a football.
    vector_color (list):
        List of vector colors to cycle through.
    vector_width (int):
        Width of displayed vectors.
    vector_style (str):
        Vector arrowhead style (from matplotlib's arrow style).
    vector_mutation (int):
        Width of vectors arrowhead.
    view (list):
        Azimuthal and Elevation viewing angles.
    xlabel (list):
        List of strings corresponding to +x and -x axes labels, respectively.
    xlpos (list):
        Positions of +x and -x labels respectively.
    ylabel (list):
        List of strings corresponding to +y and -y axes labels, respectively.
    ylpos (list):
        Positions of +y and -y labels respectively.
    zlabel (list):
        List of strings corresponding to +z and -z axes labels, respectively.
    zlpos (list):
        Positions of +z and -z labels respectively.
Nc                 v   SU l         Ub  SU l         Xl        SU l        Ub  SU l         SU l        X l        XPl        U(       a  UOSS/U l        U(       a  UOSS/U l        SU l        SU l        SU l	        S	U l
        SU l        S
S/U l        SS/U l        SS/U l        SS/U l        SS/U l        SS/U l        [$        R&                  S   U l        X`l        / SQU l        SU l        SU l        SU l        / SQU l        / SQU l        / SQU l        / U l        / U l        / U l        SU l         / U l!        SU l"        g )NFT   i   z#FFDDDDg?grayr   $x$ g333333?g333333$y$$\left|0\right>$$\left|1\right>$zaxes.labelcolor)z#dc267fz#648fffz#fe6100z#785ef0z#ffb000z-|>   )brgz#CC6600)       #   -   )osd^r   )#_ext_figfig	_ext_axesr   
backgroundfigsizeviewsphere_colorsphere_alphaframe_colorframe_widthframe_alphaxlabelxlposylabelylposzlabelzlpospltrcParams
font_color	font_sizevector_colorvector_widthvector_stylevector_mutationpoint_color
point_sizepoint_markerpointsvectorsannotationssavenumpoint_style	_rendered)r   rP   r   rT   rS   rR   rc   s          r   r   Bloch.__init__   sQ   
 ? DM DM!DN	$")w1v DsBi	%!bk4[
bk4[
 +,?@4[
 ,,'89" T!! 6*0  r   c                 @   SnUS:X  a  SS/U l         SS/U l        SS/U l        g%US:X  a  SS/U l         SS/U l        S	S/U l        g%US
:X  a  SS/U l         SS/U l        SS/U l        g%US:X  a  SS/U l         SS/U l        SS/U l        g%US:X  a.  US-  US-  /U l         US-  US-  /U l        US-  US-  /U l        g%US:X  a.  US-  US-  /U l         US-  US-  /U l        US-  US-  /U l        g%US:X  a  SS/U l        S S!/U l        S"S#/U l         g%[        S$5      e)&a  Set x, y and z labels according to one of conventions.

Args:
    convention (str):
        One of the following:
            - "original"
            - "xyz"
            - "sx sy sz"
            - "01"
            - "polarization jones"
            - "polarization jones letters"
            see also: http://en.wikipedia.org/wiki/Jones_calculus
            - "polarization stokes"
            see also: http://en.wikipedia.org/wiki/Stokes_parameters
Raises:
    Exception: If convention is not valid.
z$\left.|%s\right\rangle$originalr>   r?   r@   rA   rB   xyzz$z$zsx sy szz$s_x$z$s_y$z$s_z$01zpolarization jonesz\nearrow\hspace{-1.46}\swarrowz\nwarrow\hspace{-1.46}\searrowz\circlearrowleftz\circlearrowrightz\leftrightarrowz\updownarrowzpolarization jones lettersDALRHVzpolarization stokesz $\nearrow\hspace{-1.46}\swarrow$z $\nwarrow\hspace{-1.46}\searrow$z$\circlearrowleft$z$\circlearrowright$z$\leftrightarrow$z$\updownarrow$zNo such convention.N)rZ   r\   r^   
ValueError)r   
conventionketexs      r   set_label_conventionBloch.set_label_convention  s   $ . # "+DK "+DK/1EFDK5  "+DK "+DK "+DK:%"B-DK"B-DK"B-DK4r(DKr(DK/1EFDK//;;;;DK !#66@T8TUDK #55u7NODK77 3;4DK 3;4DK 3;4DK0055DK 12HIDK/1BCDK233r   c                     SnUS-  nUS-  nUS[        [        U R                  5      5      -   S-   -  nUS[        [        U R                  5      5      -   S-   -  nUS-  nUS-  nUS-  nUS	[        U R                  5      -   S-   -  nUS
[        U R
                  5      -   S-   -  nUS[        U R                  5      -   S-   -  nUS[        U R                  5      -   S-   -  nUS[        U R                  5      -   S-   -  nUS[        U R                  5      -   S-   -  nUS[        U R                  5      -   S-   -  nUS[        U R                  5      -   S-   -  nUS[        U R                  5      -   S-   -  nUS[        U R                  5      -   S-   -  nUS[        U R                  5      -   S-   -  nUS[        U R                  5      -   S-   -  nUS[        U R                   5      -   S-   -  nUS[        U R"                  5      -   S-   -  nUS[        U R$                  5      -   S-   -  nUS[        U R&                  5      -   S-   -  nUS[        U R(                  5      -   S-   -  nUS[        U R*                  5      -   S-   -  nUS[        U R,                  5      -   S-   -  nUS[        U R.                  5      -   S-   -  nUS[        U R0                  5      -   S-   -  nUS[        U R2                  5      -   S-   -  nU$ )Nr?   zBloch data:
z-----------
zNumber of points:  
zNumber of vectors: zBloch sphere properties:
z------------------------
zfont_color:      zfont_size:       zframe_alpha:     zframe_color:     zframe_width:     zpoint_color:     zpoint_marker:    zpoint_size:      zsphere_alpha:    zsphere_color:    zfigsize:         zvector_color:    zvector_width:    zvector_style:    zvector_mutation: zview:            zxlabel:          zxlpos:           zylabel:          zylpos:           zzlabel:          zzlpos:           )strlenrk   rl   rb   rc   rY   rW   rX   rh   rj   ri   rV   rU   rS   rd   re   rf   rg   rT   rZ   r[   r\   r]   r^   r_   )r   strings     r   __str__Bloch.__str__Q  s+   /!/!'#c$++.>*??$FF'#c$,,.?*@@4GG$....%DOO(<<tCC%DNN(;;dBB%D,<,<(==DD%D,<,<(==DD%D,<,<(==DD%D,<,<(==DD%D,=,=(>>EE%DOO(<<tCC%D,=,=(>>EE%D,=,=(>>EE%DLL(99D@@%D,=,=(>>EE%D,=,=(>>EE%D,=,=(>>EE%D,@,@(AADHH%DII6==%DKK(884??%DJJ7$>>%DKK(884??%DJJ7$>>%DKK(884??%DJJ7$>>r   c                 <    / U l         / U l        / U l        / U l        g)z'Resets Bloch sphere data sets to empty.N)rk   rl   ro   rm   r   s    r   clearBloch.clearr  s     r   c                    [        US   [        [        R                  45      (       d  US   /US   /US   //n[        R                  " U5      nUS:X  a  [        US   5      S:X  aD  [        R                  " US   S   /US   S   /US   S   //5      n[        R                  " X1SS9nOUnU R                  R                  U5        U R                  R                  S5        gUS:X  a7  U R                  R                  U5        U R                  R                  S5        gU R                  R                  U5        U R                  R                  S5        g)	zAdd a list of data points to Bloch sphere.

Args:
    points (array_like):
        Collection of data points.
    meth (str):
        Type of points to plot, use 'm' for multicolored, 'l' for points
        connected with a line.
r   r      rL   )axislmN)	
isinstancelistr$   ndarrayarrayr   appendrk   ro   )r   rk   methpntss       r   
add_pointsBloch.add_pointsy  s"    &)dBJJ%788aykF1I;<F&!3;6!9~"xx&)A,&)A,&)A, PQyyA6KKt$##C(S[KKv&##C(KKv&##C(r   c                     [        US   [        [        R                  45      (       a%  U H  nU R                  R                  U5        M      gU R                  R                  U5        g)z~Add a list of vectors to Bloch sphere.

Args:
    vectors (array_like):
        Array with vectors of unit length or smaller.
r   N)r   r   r$   r   rl   r   )r   rl   vecs      r   add_vectorsBloch.add_vectors  sN     gaj4"455##C(  LL(r   c                     [        U[        [        R                  [        45      (       a  [        U5      S:X  a  UnO[        S5      eU R                  R                  XBUS.5        g)ag  Add a text or LaTeX annotation to Bloch sphere,
parameterized by a qubit state or a vector.

Args:
    state_or_vector (array_like):
        Position for the annotation.
        Qobj of a qubit or a vector of 3 elements.
    text (str):
        Annotation text.
        You can use LaTeX, but remember to use raw string
        e.g. r"$\langle x \rangle$"
        or escape backslashes
        e.g. "$\\langle x \\rangle$".
    **kwargs:
        Options as for mplot3d.axes3d.text, including:
        fontsize, color, horizontalalignment, verticalalignment.
Raises:
    Exception: If input not array_like or tuple.
   z?Position needs to be specified by a qubit state or a 3D vector.)positiontextoptsN)	r   r   r$   r   r   r   	TypeErrorrm   r   )r   state_or_vectorr   r   r   s        r   add_annotationBloch.add_annotation  sS    ( objj%'@AAc/FZ^_F_!C]^^S OPr   c                 $    U R                  5         g)z#
Plots Bloch sphere and data sets.
N)renderr   s    r   make_sphereBloch.make_sphere  s     	r   c                 d   U R                   (       a  U R                  R                  5         SU l         U R                  (       d#  [        R
                  " U R                  S9U l        U R                  (       d  [        R                  [        R                  5      n[        S UR                  S5      R                  S5       5       5      S:  a[  [!        U R                  U R"                  S   U R"                  S   S	S
9U l        U R                  R%                  U R                  5        O4[!        U R                  U R"                  S   U R"                  S   S9U l        U R&                  (       ao  U R                  R                  5         U R                  R)                  SS5        U R                  R+                  SS5        U R                  R-                  SS5        O~U R/                  5         U R                  R1                  5         U R                  R)                  SS5        U R                  R+                  SS5        U R                  R-                  SS5        [3        U R                  S5      (       a  U R                  R5                  S5        U R                  R7                  S	5        U R9                  5         U R;                  5         U R=                  5         U R?                  5         U RA                  5         U RC                  5         U R                  RE                  XRF                  SS9  g)zH
Render the Bloch sphere and its data sets in on given figure and axes.
T)rS   c              3   8   #    U  H  n[        U5      v   M     g 7f)N)int).0xs     r   	<genexpr>Bloch.render.<locals>.<genexpr>  s     O%NSVV%Ns   release.)r      r   r   r   F)azimelevauto_add_to_figure)r   r   gg?gffffffgffffff?set_box_aspect)r   r   r   gHzG?)fontsizeyN)$rp   r   r   rO   r`   figurerS   rP   rQ   VERSION_PATTERN_REGEXsearchr!   __version__r   groupsplitr   rT   add_axesrR   
set_xlim3d
set_ylim3d
set_zlim3d	plot_axesset_axis_offhasattrr   grid	plot_backplot_pointsplot_vectors
plot_frontplot_axes_labelsplot_annotations	set_titlerc   )r   titleversion_matchs      r   r   Bloch.render  s-    >>IIOO }}zz$,,7DH~~1889O9OPMO]%8%8%C%I%I#%NOOS\\"HH499Q<diilW\	 !!$)),"HH11	 ??IIOOII  s+II  s+II  s+NNII""$II  s+II  s+II  s+ 499.//II$$Y/		u		ENNdCr   c                 ~   [         R                  " S[         R                  S5      n[         R                  " S[         R                  S5      n[         R                  " [         R                  " U5      [         R
                  " U5      5      n[         R                  " [         R
                  " U5      [         R
                  " U5      5      n[         R                  " [         R                  " UR                  S   5      [         R                  " U5      5      nU R                  R                  UUUSSU R                  SU R                  S9  U R                  R                  UUUSSU R                  U R                  S9  U R                  R                  S[         R                  " U5      -  S[         R
                  " U5      -  SSU R                   U R                  S	9  U R                  R                  S[         R                  " U5      -  S[         R
                  " U5      -  SS
U R                   U R                  S	9  g)zback half of spherer   rG   r   rstridecstridecolor	linewidthalphar;   r   r   r   r         ?r0   r   r   lwr   r   Nr$   linspacepioutercossinonesshaper   plot_surfacerU   rV   plot_wireframerW   rY   plotrX   r   u_anglev_anglex_diry_dirz_dirs         r   r   Bloch.plot_back  s   ++a+++a+"&&/:"&&/:q!12BFF7OD		#### 	 		
 			  """" 	! 	
 			"&&/!"&&/!"" 	 	
 			"&&/!"&&/!"" 	 	
r   c                    [         R                  " [         R                  * SS5      n[         R                  " S[         R                  S5      n[         R                  " [         R                  " U5      [         R
                  " U5      5      n[         R                  " [         R
                  " U5      [         R
                  " U5      5      n[         R                  " [         R                  " UR                  S   5      [         R                  " U5      5      nU R                  R                  UUUSSU R                  SU R                  S9  U R                  R                  UUUSSU R                  U R                  S9  U R                  R                  S[         R                  " U5      -  S[         R
                  " U5      -  SSU R                   U R                  S	9  U R                  R                  S[         R                  " U5      -  S[         R
                  " U5      -  SS
U R                   U R                  S	9  g)zfront half of spherer   rG   r   r   r;   r   r   r0   r   r   Nr   r   s         r   r   Bloch.plot_front$  s   ++ruufa,++a+"&&/:"&&/:q!12BFF7OD		#### 	 		
 			  """" 	! 	
 			"&&/!"&&/!"" 	 	
 			"&&/!"&&/!"" 	 	
r   c           
      x   [         R                  " SSS5      nU R                  R                  USU-  SSSU R                  U R
                  S9  U R                  R                  SU-  USSSU R                  U R
                  S9  U R                  R                  SU-  USS	S
U R                  U R
                  S9  g)r   g      r   r   r   r0   Xr   r   labelr   r   Yr   ZN)r$   r   r   r   rX   rW   )r   spans     r   r   Bloch.plot_axesQ  s    {{4a(		!d(qs#$:J:JRVRbRb 	 	
 			Hdqs#$:J:JRVRbRb 	 	
 			Hdqs#$:J:JRVRbRb 	 	
r   c                 <   U R                   U R                  SSS.nU R                  R                  " SU R                  S   * SU R
                  S   40 UD6  U R                  R                  " SU R                  S   * SU R
                  S   40 UD6  U R                  R                  " U R                  S   SSU R                  S   40 UD6  U R                  R                  " U R                  S   SSU R                  S   40 UD6  U R                  R                  " SSU R                  S   U R                  S   40 UD6  U R                  R                  " SSU R                  S   U R                  S   40 UD6  U R                  R                  R                  5       U R                  R                  R                  5       -    H  nUR                  S5        M     U R                  R                  R                  5       U R                  R                  R                  5       -    H  nUR                  S5        M     U R                  R                  R                  5       U R                  R                  R                  5       -    H  nUR                  S5        M     g)zaxes labelscenterr   r   horizontalalignmentverticalalignmentr   r   FN)rc   rb   r   r   r[   rZ   r]   r\   r_   r^   xaxisget_ticklinesget_ticklabelsset_visibleyaxiszaxis)r   r   items      r   r   Bloch.plot_axes_labels^  s    __#+!)	
 			q4::a=.!T[[^DtD		q4::a=.!T[[^DtD		tzz!}aDKKNCdC		tzz!}aDKKNCdC		q!TZZ]DKKNCdC		q!TZZ]DKKNCdCIIOO113diioo6T6T6VVDU# WIIOO113diioo6T6T6VVDU# WIIOO113diioo6T6T6VVDU# Wr   c                 n   [        U R                  5       GH  u  pUS   [        R                  " SS/5      -  nUS   * [        R                  " SS/5      -  nUS   [        R                  " SS/5      -  nU R                  [        R
                  " U[        U R                  5      5         nU R                  S:X  a+  U R                  R                  X4USSSU R                  US9  M  [        UUUU R                  U R                  U R                  US9nU R                  R                  U5        GM     g	)
zPlot vectorr   r   r   r?   r0   r   r   )mutation_scaler   
arrowstyler   N)	enumeraterl   r$   r   rd   modr   rf   r   r   re   r   rg   
add_artist)r   kvectorr)   r*   r+   r   arrs           r   r   Bloch.plot_vectorsv  s    #4<<0IA!9rxxA//D1I:!Q 00D!9rxxA//D%%bffQD4E4E0F&GHE  B&		CDDUDU]b  
 #'#7#7((#00 		$$S)3 1r   c                 x   [        U R                  5       GH  u  p[        US   5      n[        U5       Vs/ s H:  n[        R
                  " US   U   S-  US   U   S-  -   US   U   S-  -   5      PM<     nn[        [        XUS   -
  5      US   -  S:  5      (       aO  [        [        U[        U5      5      5      nUR                  5         [        U6 u  pW[        R                  " U5      nO[        R                  " U5      nU R                  U   S:X  Ga  U R                  R                  [        R                   " US   U   5      [        R                   " US   U   5      * [        R                   " US   U   5      U R"                  [        R$                  " U[        U R"                  5      5         SSSU R&                  [        R$                  " U[        U R&                  5      5         U R(                  [        R$                  " U[        U R(                  5      5         S9	  GM  U R                  U   S	:X  Ga@  [        R                  " U R&                  [*        R,                  " U[        U R&                  5      -  5      -  5      nUSU n[        X   5      nU R(                  [        R$                  " U[        U R(                  5      5         n	U R"                  [        R$                  " U[        U R"                  5      5         n
U R                  R                  [        R                   " US   U   5      [        R                   " US   U   5      * [        R                   " US   U   5      U
SSSUU	S9	  GMj  U R                  U   S
:X  d  GM  U R&                  [        R$                  " U[        U R&                  5      5         nU R                  R/                  [        R                   " US   5      [        R                   " US   5      * [        R                   " US   5      SSUS9  GM     gs  snf )zPlot pointsr   r   r   g-q=rL   Nr0   )rL   r   	edgecolorr   r   markerr   r   g      ?)r   r   r   )r
  rk   r   ranger$   sqrtanyabsr   r   sortr   arangero   r   scatterrealri   r  rh   rj   mathceilr   )r   r  pointnumjdistzippedindperm
pnt_colorsr  pnt_sizer   s               r   r   Bloch.plot_points  sp    "$++.HAeAh-CY^_bYcYcTUaq(58A;!+;;eAhqkQ>NNOYc   3t1g~&a05899c$c
34 #V((7+))C."c)		!!GGE!HW-.WWU1Xg.//GGE!HW-.oobffQDOO0D&EF"**266!S9I9I5J+KL,,RVVAs4;L;L7M-NO " 
 !!!$+XXd&6&63TM]M]I^C^9_&_`
'#.
!*"56
**266!S9J9J5K+LM??266!S5I+JK		!!GGE!HW-.WWU1Xg.//GGE!HW-."$! " 
 !!!$+((3t7G7G3H)IJ		GGE!H%WWU1X&&GGE!H%  _ /s   AP7c                     U R                    Hd  nUS   nU R                  U R                  SSS.nUR                  US   5        U R                  R
                  " US   US   * US   US   40 UD6  Mf     g	)
zPlot annotationsr   r   r   r   r   r   r   r   N)rm   rc   rb   updater   r   )r   
annotationr   r   s       r   r   Bloch.plot_annotations  sz     **JZ(C NN'/%-	D KK
6*+IINN3q6CF7CFJv4FO$O +r   c                     U R                  US9  U R                  (       a!  [        R                  " U R                  5        gg)z3
Display Bloch sphere and corresponding data sets.
)r   N)r   rP   r`   show)r   r   s     r   r,  
Bloch.show  s.     	% 88HHTXX r   c                 F   U R                  5         U(       a~  [        R                  R                  [        R                  " 5       S-   [        U5      -   5      (       d8  [        R                  " [        R                  " 5       S-   [        U5      -   5        Uc  U(       a]  U R                  R                  [        R                  " 5       S-   [        U5      -   S-   [        U R                  5      -   S-   U-   5        OiU R                  R                  [        R                  " 5       S-   [        U R                  5      -   S-   U-   5        OU R                  R                  U5        U =R                  S-  sl	        U R                  (       a  [        U R                  5        gg)a  Saves Bloch sphere to file of type ``format`` in directory ``dirc``.

Args:
    name (str):
        Name of saved image. Must include path and format as well.
        i.e. '/Users/Paul/Desktop/bloch.png'
        This overrides the 'format' and 'dirc' arguments.
    output (str):
        Format of output image.
    dirc (str):
        Directory for output images. Defaults to current working directory.
/Nz/bloch_r   r   )r   osr"   isdirgetcwdr   makedirsrP   savefigrn   r	   )r   nameoutputdircs       r   save
Bloch.save  s    	77==s!2SY!>??BIIK#-D	9:<  IIK#%D	1I=DLL@QQTWWZ``   y!83t||;L!Ls!RU[![\HHT"88&txx0 r   )!rQ   rO   rp   rm   r   rR   rP   rS   rb   rc   rY   rW   rX   rh   rj   ri   ro   rk   rn   rV   rU   rd   rg   rf   re   rl   rT   rZ   r[   r\   r]   r^   r_   )NNNNFrC   )rL   )r?   )NpngN)r1   r2   r3   r4   r5   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r,  r8  r6   r7   r   r   r   r      st    7t Y[Pd84tB)8)Q43Dj+
Z+
Z
$0*<9vP1r   c                 v    U R                  5       U R                  5       -    H  nUR                  S5        M     g)zF
Set visible property of ticklines and ticklabels of an axis to False
FN)r   r  r  )r   r  s     r   _hide_tick_lines_and_labelsr<    s3     ""$t':':'<< =r   )r5   __all__r  r0  renumpyr$   r!   matplotlib.pyplotpyplotr`   matplotlib.patchesr   mpl_toolkits.mplot3dr   r   mpl_toolkits.mplot3d.art3dr   utilsr	   VERSION_PATTERNcompileVERBOSE
IGNORECASEr   r   r   r<  r7   r   r   <module>rJ     s|   ^ )  	 	    . / . -
 D 

?BJJ4NO -g -Dw	1 w	1t r   