ó
    pñ:i^}  ã                   óž   • S r SSKrSSKrSSKJrJrJrJrJrJ	r	J
r
JrJr  SSKJrJrJr  / SQrS rS rSS	.S
 jrSS jr " S S5      rS rg)z�
Matrix Market I/O in Python.
See http://math.nist.gov/MatrixMarket/formats.html
for information about the Matrix Market format.
é    N)	ÚasarrayÚrealÚimagÚconjÚzerosÚndarrayÚconcatenateÚonesÚcan_cast)Ú	coo_arrayÚissparseÚ
coo_matrix)ÚmminfoÚmmreadÚmmwriteÚMMFilec                 ód   • [        U [        5      (       a  U R                  S5      $ [        U 5      $ )NÚlatin1)Ú
isinstanceÚbytesÚdecodeÚstr)Úss    ÚQ/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/scipy/io/_mmio.pyÚasstrr      s'   € Ü�!”U×ÑØ�x‰x˜Ó!Ð!Üˆq‹6€Mó    c                 ó,   • [         R                  U 5      $ )a  
Return size and storage parameters from Matrix Market file-like 'source'.

Parameters
----------
source : str or file-like
    Matrix Market filename (extension .mtx) or open file-like object

Returns
-------
rows : int
    Number of matrix rows.
cols : int
    Number of matrix columns.
entries : int
    Number of non-zero entries of a sparse matrix
    or rows*cols for a dense matrix.
format : str
    Either 'coordinate' or 'array'.
field : str
    Either 'real', 'complex', 'pattern', or 'integer'.
symmetry : str
    Either 'general', 'symmetric', 'skew-symmetric', or 'hermitian'.

Examples
--------
>>> from io import StringIO
>>> from scipy.io import mminfo

>>> text = '''%%MatrixMarket matrix coordinate real general
...  5 5 7
...  2 3 1.0
...  3 4 2.0
...  3 5 3.0
...  4 1 4.0
...  4 2 5.0
...  4 3 6.0
...  4 4 7.0
... '''


``mminfo(source)`` returns the number of rows, number of columns,
format, field type and symmetry attribute of the source file.

>>> mminfo(StringIO(text))
(5, 5, 7, 'coordinate', 'real', 'general')
)r   Úinfo)Úsources    r   r   r      s   € ô` �;‰;�vÓÐr   T©Úspmatrixc                ó0   • [        5       R                  XS9$ )aH  
Reads the contents of a Matrix Market file-like 'source' into a matrix.

Parameters
----------
source : str or file-like
    Matrix Market filename (extensions .mtx, .mtz.gz)
    or open file-like object.
spmatrix : bool, optional (default: True)
    If ``True``, return sparse ``coo_matrix``. Otherwise return ``coo_array``.

Returns
-------
a : ndarray or coo_array or coo_matrix
    Dense or sparse array depending on the matrix format in the
    Matrix Market file.

Examples
--------
>>> from io import StringIO
>>> from scipy.io import mmread

>>> text = '''%%MatrixMarket matrix coordinate real general
...  5 5 7
...  2 3 1.0
...  3 4 2.0
...  3 5 3.0
...  4 1 4.0
...  4 2 5.0
...  4 3 6.0
...  4 4 7.0
... '''

``mmread(source)`` returns the data as sparse matrix in COO format.

>>> m = mmread(StringIO(text), spmatrix=False)
>>> m
<COOrdinate sparse array of dtype 'float64'
     with 7 stored elements and shape (5, 5)>
>>> m.toarray()
array([[0., 0., 0., 0., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 2., 3.],
       [4., 5., 6., 7., 0.],
       [0., 0., 0., 0., 0.]])
r    )r   Úread)r   r!   s     r   r   r   T   s   € ô^ ‹8�=‰=˜ˆ=Ð3Ð3r   c                 ó:   • [        5       R                  XX#XE5        g)aª	  
Writes the sparse or dense array `a` to Matrix Market file-like `target`.

Parameters
----------
target : str or file-like
    Matrix Market filename (extension .mtx) or open file-like object.
a : array like
    Sparse or dense 2-D array.
comment : str, optional
    Comments to be prepended to the Matrix Market file.
field : None or str, optional
    Either 'real', 'complex', 'pattern', or 'integer'.
precision : None or int, optional
    Number of digits to display for real or complex values.
symmetry : None or str, optional
    Either 'general', 'symmetric', 'skew-symmetric', or 'hermitian'.
    If symmetry is None the symmetry type of 'a' is determined by its
    values.

Returns
-------
None

Examples
--------
>>> from io import BytesIO
>>> import numpy as np
>>> from scipy.sparse import coo_array
>>> from scipy.io import mmwrite

Write a small NumPy array to a matrix market file.  The file will be
written in the ``'array'`` format.

>>> a = np.array([[1.0, 0, 0, 0], [0, 2.5, 0, 6.25]])
>>> target = BytesIO()
>>> mmwrite(target, a)
>>> print(target.getvalue().decode('latin1'))
%%MatrixMarket matrix array real general
%
2 4
1
0
0
2.5
0
0
0
6.25

Add a comment to the output file, and set the precision to 3.

>>> target = BytesIO()
>>> mmwrite(target, a, comment='\n Some test data.\n', precision=3)
>>> print(target.getvalue().decode('latin1'))
%%MatrixMarket matrix array real general
%
% Some test data.
%
2 4
1.00e+00
0.00e+00
0.00e+00
2.50e+00
0.00e+00
0.00e+00
0.00e+00
6.25e+00

Convert to a sparse matrix before calling ``mmwrite``.  This will
result in the output format being ``'coordinate'`` rather than
``'array'``.

>>> target = BytesIO()
>>> mmwrite(target, coo_array(a), precision=3)
>>> print(target.getvalue().decode('latin1'))
%%MatrixMarket matrix coordinate real general
%
2 4 3
1 1 1.00e+00
2 2 2.50e+00
2 4 6.25e+00

Write a complex Hermitian array to a matrix market file.  Note that
only six values are actually written to the file; the other values
are implied by the symmetry.

>>> z = np.array([[3, 1+2j, 4-3j], [1-2j, 1, -5j], [4+3j, 5j, 2.5]])
>>> z
array([[ 3. +0.j,  1. +2.j,  4. -3.j],
       [ 1. -2.j,  1. +0.j, -0. -5.j],
       [ 4. +3.j,  0. +5.j,  2.5+0.j]])

>>> target = BytesIO()
>>> mmwrite(target, z, precision=2)
>>> print(target.getvalue().decode('latin1'))
%%MatrixMarket matrix array complex hermitian
%
3 3
3.0e+00 0.0e+00
1.0e+00 -2.0e+00
4.0e+00 3.0e+00
1.0e+00 0.0e+00
0.0e+00 5.0e+00
2.5e+00 0.0e+00

N)r   Úwrite)ÚtargetÚaÚcommentÚfieldÚ	precisionÚsymmetrys         r   r   r   ˆ   s   € ôX ƒH‡N�N�6˜g¨iÕBr   c            
       óÄ  • \ rS rSrSr\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       rS
rSr\\4r\S 5       rSrSrSrSrSr\\\\\4r\S 5       rSrSrSrSr\\\\4r\S 5       r\S\S\S\S\S0r\ S 5       r!\ S 5       r"\S 5       r#\ S-S j5       r$\ S  5       r%\ S! 5       r&S" r'S#S$.S% jr(  S.S' jr)S( r*S) r+S* r,  S.S+ jr-S,r.g&)/r   éø   )Ú_rowsÚ_colsÚ_entriesÚ_formatÚ_fieldÚ	_symmetryc                 ó   • U R                   $ ©N)r.   ©Úselfs    r   ÚrowsÚMMFile.rows   ó   € à�z‰zÐr   c                 ó   • U R                   $ r5   )r/   r6   s    r   ÚcolsÚMMFile.cols  r:   r   c                 ó   • U R                   $ r5   )r0   r6   s    r   ÚentriesÚMMFile.entries  s   € à�}‰}Ðr   c                 ó   • U R                   $ r5   )r1   r6   s    r   ÚformatÚMMFile.format  s   € à�|‰|Ðr   c                 ó   • U R                   $ r5   )r2   r6   s    r   r)   ÚMMFile.field  s   € à�{‰{Ðr   c                 ó   • U R                   $ r5   )r3   r6   s    r   r+   ÚMMFile.symmetry  s   € à�~‰~Ðr   c                 ób   • U R                   U R                  U R                  U R                  4;   $ r5   )r3   ÚSYMMETRY_SYMMETRICÚSYMMETRY_SKEW_SYMMETRICÚSYMMETRY_HERMITIANr6   s    r   Úhas_symmetryÚMMFile.has_symmetry  s2   € à�~‰~ $×"9Ñ"9Ø"&×">Ñ">Ø"&×"9Ñ"9ð";ñ ;ð 	;r   Ú
coordinateÚarrayc                 ó\   • XR                   ;  a  SU SU R                    3n[        U5      eg )Nzunknown format type ú, must be one of )ÚFORMAT_VALUESÚ
ValueError)r7   rB   Úmsgs      r   Ú_validate_formatÚMMFile._validate_format#  s7   € à×+Ñ+Ó+Ø(¨¨Ð0AÀ$×BTÑBTÐAUÐVˆCÜ˜S“/Ð!ð ,r   Úintegerúunsigned-integerr   ÚcomplexÚpatternc                 ó\   • XR                   ;  a  SU SU R                    3n[        U5      eg )Nzunknown field type rQ   )ÚFIELD_VALUESrS   )r7   r)   rT   s      r   Ú_validate_fieldÚMMFile._validate_field2  s7   € à×)Ñ)Ó)Ø'¨ wÐ.?À×@QÑ@QÐ?RÐSˆCÜ˜S“/Ð!ð *r   ÚgeneralÚ	symmetriczskew-symmetricÚ	hermitianc                 óX   • XR                   ;  a  [        SU SU R                    35      eg )Nzunknown symmetry type rQ   )ÚSYMMETRY_VALUESrS   )r7   r+   s     r   Ú_validate_symmetryÚMMFile._validate_symmetry@  sA   € à×/Ñ/Ó/ÜÐ5°h°Zð @/Ø/3×/CÑ/CÐ.DðFó Gð Gð 0r   ÚintpÚuint64ÚdÚDc                  ó   • g r5   © rk   r   r   ÚreaderÚMMFile.readerM  ó   € àr   c                  ó   • g r5   rk   rk   r   r   ÚwriterÚMMFile.writerR  rn   r   c                 óŒ  • U R                  U5      u  p# UR                  5       nS UR                  5        5       u  pVpxn	UR                  S5      (       d  [	        S5      eUR                  5       S:X  d  [	        SU-   5      eUR                  5       S:X  a  U R                  nO UR                  5       S:X  a  U R                  nU(       aG  UR                  5       (       a(  UR                  5       S   S	;   a  UR                  5       nOO	U(       a  MG  UR                  5       (       d'  UR                  5       nUR                  5       (       d  M'  UR                  5       n
XpR                  :X  aC  [        U
5      S
:X  d  [	        SUR                  S5      -   5      e[        [        U
5      u  p¼X¼-  nO?[        U
5      S:X  d  [	        SUR                  S5      -   5      e[        [        U
5      u  p¼nX¼X×UR                  5       U	R                  5       4U(       a  UR                  5         $ $ ! U(       a  UR                  5         f f = f)aK  
Return size, storage parameters from Matrix Market file-like 'source'.

Parameters
----------
source : str or file-like
    Matrix Market filename (extension .mtx) or open file-like object

Returns
-------
rows : int
    Number of matrix rows.
cols : int
    Number of matrix columns.
entries : int
    Number of non-zero entries of a sparse matrix
    or rows*cols for a dense matrix.
format : str
    Either 'coordinate' or 'array'.
field : str
    Either 'real', 'complex', 'pattern', or 'integer'.
symmetry : str
    Either 'general', 'symmetric', 'skew-symmetric', or 'hermitian'.
c              3   óT   #   • U  H  n[        UR                  5       5      v •  M      g 7fr5   )r   Ústrip)Ú.0Úparts     r   Ú	<genexpr>ÚMMFile.info.<locals>.<genexpr>y  s   é € Ð>²¨”�t—z‘z“|×$Ð$²ùs   ‚&(z%%MatrixMarketz%source is not in Matrix Market formatÚmatrixzProblem reading file header: rO   rN   r   ©Ú%é%   é   zHeader line not of length 2: Úasciié   zHeader line not of length 3: )Ú_openÚreadlineÚsplitÚ
startswithrS   ÚlowerÚFORMAT_ARRAYÚFORMAT_COORDINATEÚlstriprt   Úlenr   ÚmapÚintÚclose)r7   r   ÚstreamÚclose_itÚlineÚmmidry   rB   r)   r+   Ú
split_liner8   r<   r?   s                 r   r   ÚMMFile.infoW  sè  € ð6  Ÿ:™: fÓ-Ñˆð/	ð —?‘?Ó$ˆDá>°·±´Ó>ñ 2ˆD˜&¨à—?‘?Ð#3×4Ñ4Ü Ð!HÓIÐIØ—<‘<“> XÓ-Ü Ð!@À4Ñ!GÓHÐHð �|‰|‹~ Ó(Ø×*Ñ*‘Ø—‘“ <Ó/Ø×/Ñ/�ö Ø—;‘;—=‘= T§[¡[£]°1Ñ%5¸Ó%BØ!Ÿ?™?Ó,‘Dà÷	 �$ð —j‘j—l‘lØ—‘Ó(�ð —j‘j—l“lð Ÿ™›ˆJØ×*Ñ*Ó*Ü˜:“¨!Ó+Ü$Ð%DØ%)§[¡[°Ó%9ñ&:ó ;ð ;ä ¤ jÓ1‘
�Ø™+‘ä˜:“¨!Ó+Ü$Ð%DØ%)§[¡[°Ó%9ñ&:ó ;ð ;ä&)¬#¨zÓ&:Ñ#�˜Gà °·±³Ø—N‘NÓ$ð&ö Ø—‘•ð øŽxØ—‘•ð ús   •C;H) Ä:H) ÅCH) È)Ic                 óØ  •  [         R                  " U 5      n US   S:X  Ga  [         R                  R	                  U 5      (       d†  [         R                  R	                  U S-   5      (       a  U S-   n OY[         R                  R	                  U S-   5      (       a  U S-   n O,[         R                  R	                  U S-   5      (       a  U S-   n U R                  S5      (       a  SSKnUR                  X5      nUS4$ U R                  S	5      (       a  SSKnUR                  U S
5      nUS4$ [        X5      n US4$ U SS S:w  a  U S-   n [        X5      nUS4$ ! [         a    U S4s $ f = f)a  Return an open file stream for reading based on source.

If source is a file name, open it (after trying to find it with mtx and
gzipped mtx extensions). Otherwise, just return source.

Parameters
----------
filespec : str or file-like
    String giving file name or file-like object
mode : str, optional
    Mode with which to open file, if `filespec` is a file name.

Returns
-------
fobj : file-like
    Open file-like object.
close_it : bool
    True if the calling function should close this file when done,
    false otherwise.
Fr   Úrz.mtxz.mtx.gzz.mtx.bz2z.gzNz.bz2ÚrbéüÿÿÿT)
ÚosÚfspathÚ	TypeErrorÚpathÚisfileÚendswithÚgzipÚopenÚbz2ÚBZ2File)ÚfilespecÚmoderœ   rŒ   rž   s        r   r€   ÚMMFile._open¦  s^  € ð4	#Ü—y’y Ó*ˆHð �‰7�cŒ>ô —7‘7—>‘> (×+Ñ+Ü—7‘7—>‘> (¨6¡/×2Ñ2Ø'¨&Ñ0‘HÜ—W‘W—^‘^ H¨YÑ$6×7Ñ7Ø'¨)Ñ3‘HÜ—W‘W—^‘^ H¨ZÑ$7×8Ñ8Ø'¨*Ñ4�Hà× Ñ  ×'Ñ'ÛØŸ™ 8Ó2�ð �tˆ|Ðð ×"Ñ" 6×*Ñ*ÛØŸ™ X¨tÓ4�ð �tˆ|Ðô ˜hÓ-‘ð �tˆ|Ðð	 ˜˜ˆ} Ó&Ø# fÑ,�Ü˜(Ó)ˆFà�tˆ|ÐøôA ó 	#Ø˜U�?Ò"ð	#ús   ‚E ÅE)Å(E)c                 óŒ  ^ ^• T R                   u  nmUT:w  a  [        R                  $ SnSnT R                  R                  S;   n[        T 5      (       ao  T R                  5       m T R                  5       u  pVXV:  R                  5       XV:„  R                  5       :w  a  [        R                  $ T R                  5       m U 4S jnOU U4S jnU" 5        HŠ  u  p‰n
U(       a  U
(       a	  US:w  a  SnORU(       a  X‰:w  a  Sn[        R                  " SS9   U(       a  X‰* :w  a  SnS S S 5        U(       a  U[        U	5      :w  a  SnU(       a  Mx  U(       a  M�  U(       a  MŠ    O   U(       a  [        R                  $ U(       a  [        R                  $ U(       a  [        R                  $ [        R                  $ ! , (       d  f       Nš= f)	NTÚFDc               3   ó†   >#   • TR                  5        H(  u  u  pnX:”  a  TX4   nX#S4v •  M  X:X  d  M"  X"S4v •  M*     g 7f)NFT)Úitems)ÚiÚjÚaijÚajir'   s       €r   Úsymm_iteratorÚ+MMFile._get_symmetry.<locals>.symm_iteratorú  sG   øé € Ø%&§W¡W¦Y‘M‘V�a˜SØ“uØ  ™g˜Ø"¨Ð/Ô/Ø�Ø"¨Ð.Ô.ò &/ùs
   ƒ/A¶Ac               3   ó†   >#   • [        T5       H-  n [        U T5       H  nTU   U    TU    U   p2X#X:H  4v •  M     M/     g 7fr5   )Úrange)r¨   r§   r©   rª   r'   Úns       €€r   r«   r¬     sH   øé € Ü˜qž�AÜ" 1 až[˜Ø#$ Q¡4¨¡7¨A¨a©D°©G˜SØ"¨©Ð0Ô0ó )ò "ùs   ƒ>Ar   FÚignore)Úover)Úshaper   ÚSYMMETRY_GENERALÚdtypeÚcharr   ÚtocooÚnonzeroÚsumÚtodokÚnpÚerrstater   rI   rJ   rK   )r'   ÚmÚissymmÚisskewÚishermÚrowÚcolr«   r©   rª   Úis_diagonalr¯   s   `          @r   Ú_get_symmetryÚMMFile._get_symmetryå  sX  ù€ à�w‰w‰ˆˆ1Ø�‹6Ü×*Ñ*Ð*ØˆØˆØ—‘—‘ Ñ%ˆô �A�;‰;ð —‘“	ˆAØŸ™›‰JˆSØ‘	�‰Ó  S¡Y§O¡OÓ$5Ó5Ü×.Ñ.Ð.ð —‘“	ˆAö/ö1ñ (5¦Ñ#ˆS�{Þž+¨#°«(Ø‘æ˜c›jØ"�FÜ—[’[ hÓ/æ #¨£+Ø!&˜÷ 0ö ˜c¤T¨#£YÓ.Ø"�Fß�FŸf˜f¯¨Ùñ (7ö  Ü×,Ñ,Ð,ÞÜ×1Ñ1Ð1ÞÜ×,Ñ,Ð,Ü×&Ñ&Ð&÷! 0Õ/ús   ÄF5Æ5
G	c           
      ó´   • [         R                  SU-  [         R                  S[         R                  S[         R                  SX4-  0R                  U S 5      $ )Nz%%.%ie
z%i
z%u
z%%.%ie %%.%ie
)r   Ú
FIELD_REALÚFIELD_INTEGERÚFIELD_UNSIGNEDÚFIELD_COMPLEXÚget)r)   r*   s     r   Ú_field_templateÚMMFile._field_template&  sW   € ä×!Ñ! :°	Ñ#9Ü×$Ñ$ fÜ×%Ñ% vÜ×$Ñ$Ð&7ØÐ*ñ'+ð÷
 ‘#�e˜TÓ"ð	#r   c                 ó(   • U R                   " S0 UD6  g )Nrk   )Ú_init_attrs)r7   Úkwargss     r   Ú__init__ÚMMFile.__init__0  s   € Ø×ÒÑ"˜6Ó"r   Tr    c                ó(  • U R                  U5      u  p4 U R                  U5        U R                  U5      nU(       a  UR                  5         U(       a   [	        U[
        5      (       a  [        U5      nU$ ! U(       a  UR                  5         f f = f)aÒ  
Reads the contents of a Matrix Market file-like 'source' into a matrix.

Parameters
----------
source : str or file-like
    Matrix Market filename (extensions .mtx, .mtz.gz)
    or open file object.
spmatrix : bool, optional (default: True)
    If ``True``, return sparse ``coo_matrix``. Otherwise return ``coo_array``.

Returns
-------
a : ndarray or coo_array or coo_matrix
    Dense or sparse array depending on the matrix format in the
    Matrix Market file.
)r€   Ú_parse_headerÚ_parse_bodyr‹   r   r   r   )r7   r   r!   rŒ   r�   Údatas         r   r#   ÚMMFile.read4  sy   € ð$  Ÿ:™: fÓ-Ñˆð	Ø×Ñ˜vÔ&Ø×#Ñ# FÓ+ˆDö Ø—‘”Þœ
 4¬×3Ñ3Ü˜dÓ#ˆDØˆøö	 Ø—‘•ð ús   •"A7 Á7BNc                 óþ   • U R                  US5      u  px U R                  XrX4XV5        U(       a  UR                  5         gUR                  5         g! U(       a  UR                  5         f UR                  5         f = f)a§  
Writes sparse or dense array `a` to Matrix Market file-like `target`.

Parameters
----------
target : str or file-like
    Matrix Market filename (extension .mtx) or open file-like object.
a : array like
    Sparse or dense 2-D array.
comment : str, optional
    Comments to be prepended to the Matrix Market file.
field : None or str, optional
    Either 'real', 'complex', 'pattern', or 'integer'.
precision : None or int, optional
    Number of digits to display for real or complex values.
symmetry : None or str, optional
    Either 'general', 'symmetric', 'skew-symmetric', or 'hermitian'.
    If symmetry is None the symmetry type of 'a' is determined by its
    values.
ÚwbN)r€   Ú_writer‹   Úflush)	r7   r&   r'   r(   r)   r*   r+   rŒ   r�   s	            r   r%   ÚMMFile.writeU  s\   € ð.  Ÿ:™: f¨dÓ3Ñˆð	Ø�K‰K˜ 7°9ÔGö Ø—‘•à—‘•øö Ø—‘•à—‘•ús   –A Á*A<c           
      ó>  • U R                   R                  nU Vs/ s H  o3SS PM	     nn[        UR                  5       5      [        U5      -
  nU(       a  [	        S[        U5       SU 35      eU H"  n[        XUR                  USS S5      5        M$     gs  snf )zZ
Initialize each attributes with the corresponding keyword arg value
or a default of None
é   Nzfound z, invalid keyword arguments, please only use )Ú	__class__Ú	__slots__ÚsetÚkeysrS   ÚtupleÚsetattrrÊ   )r7   rÏ   ÚattrsÚattrÚpublic_attrsÚinvalid_keyss         r   rÎ   ÚMMFile._init_attrsx  sŸ   € ð —‘×(Ñ(ˆÙ-2Ó3ªU T˜Q˜R›©UˆÐ3Ü˜6Ÿ;™;›=Ó)¬C°Ó,=Ñ=ˆæÜ˜v¤e¨LÓ&9Ð%:ð ;;Ø;G¸.ðJó Kð Kó ˆDÜ�D §
¡
¨4°°¨8°TÓ :Ö;ò ùò 4s   ›Bc           	      ód   • U R                   R                  U5      u  p#pEpgU R                  X#XEXgS9  g )N)r8   r<   r?   rB   r)   r+   )rÞ   r   rÎ   )r7   rŒ   r8   r<   r?   rB   r)   r+   s           r   rÓ   ÚMMFile._parse_headerŠ  s9   € à�N‰N×Ñ Ó'ñ 	5ˆ�G Uà×Ñ˜d°wØ$ð 	ò 	9r   c           	      óè  • U R                   U R                  U R                  U R                  U R                  U R
                  4u  p#pEpgU R                  R                  US 5      nU R                  n	X`R                  :H  n
X`R                  :H  nX`R                  :H  nXpR                  :H  nXpR                  :H  nX`R                  :H  nXPR                  :X  Ga•  [!        X#4US9nSnSu  nnU(       a  SUUU4'   UUS-
  :  a  US-  nU(       Ga  UR#                  5       nU(       a  US   S;   d  UR%                  5       (       d  M?  U
(       a  ['        U5      nOJU(       a  ['        U5      nO7U(       a%  [)        [+        [,        UR/                  5       5      6 nO[-        U5      nUUUU4'   U	(       a5  UU:w  a/  U(       a	  U* UUU4'   OU(       a  [1        U5      UUU4'   OUUUU4'   UUS-
  :  a  US-   nO-US-   nU	(       d  SnOUnU(       a  SUUU4'   UUS-
  :  a  US-  nU(       a  GM  U(       a  USU4;   a	  UUS-
  :X  d  [3        S5      e U$ USU4;   a  UU:X  d  [3        S5      e U$ XPR4                  :X  Gaï  US:X  a  [7        X#4US9$ [!        USS9n[!        USS9nU(       a  [9        USS9nO@U
(       a  [!        US	S9nO.U(       a  [!        US
S9nOU(       a  [!        USS9nO
[!        USS9nSnU HÝ  nU(       a  US   S;   d  UR%                  5       (       d  M*  US-   U:”  a  [3        S5      eUR/                  5       n[+        [&        US S 5      u  UU'   UU'   U(       dg  U
(       a  ['        US   5      UU'   ONU(       a  ['        US   5      UU'   O5U(       a  [)        [+        [,        USS  5      6 UU'   O[-        US   5      UU'   US-  nMß     UU:  a  [3        S5      eUS-  nUS-  nU	(       a_  UU:g  nUU   nUU   nUU   n[;        UU45      n[;        UU45      nU(       a  US-  nOU(       a  UR=                  5       n[;        UU45      n[7        UUU44X#4US9nU$ [?        U5      e)N)r´   rÝ   )r   r   r   rz   z$Parse error, did not read all lines.ÚintcÚint8rf   rg   rY   Úfloatz5'entries' in header is smaller than number of entriesr}   z4'entries' in header is larger than number of entrieséÿÿÿÿ)r²   r´   ) r8   r<   r?   rB   r)   r+   ÚDTYPES_BY_FIELDrÊ   rL   rÇ   rÈ   rÉ   rJ   rK   ÚFIELD_PATTERNr…   r   r�   rt   rŠ   rY   r‰   rî   r‚   r   rS   r†   r   r
   r	   Ú	conjugateÚNotImplementedError)r7   rŒ   r8   r<   r?   rB   r)   Úsymmr´   rL   Ú
is_integerÚis_unsigned_integerÚ
is_complexÚis_skewÚis_hermÚ
is_patternr'   rŽ   r§   r¨   r©   ÚIÚJÚVÚentry_numberÚlÚmaskÚod_IÚod_JÚod_Vs                                 r   rÔ   ÚMMFile._parse_body‘  s‡  € Ø48·I±I¸t¿y¹yØ48·L±LÀ$Ç+Á+Ø48·J±JÀÇÁð4OÑ0ˆ�G Uð ×$Ñ$×(Ñ(¨°Ó5ˆà×(Ñ(ˆØ×0Ñ0Ñ0ˆ
Ø#×':Ñ':Ñ:ÐØ×0Ñ0Ñ0ˆ
Ø×6Ñ6Ñ6ˆØ×1Ñ1Ñ1ˆØ×0Ñ0Ñ0ˆ
à×&Ñ&Ô&Ü�t�l¨%Ñ0ˆAØˆDØ‰DˆAˆqÞØ��!�Q�$‘Ø�t˜a‘x“<Ø˜‘F�AßØ—‘Ó(�æ˜t A™w¨)Ó3¸4¿:¹:¿<¹<ÙÞÜ˜d›)‘CÞ(Ü˜d›)‘CÞÜ!¤3¤u¨d¯j©j«lÓ#;Ð<‘Cä ›+�CØ��!�Q�$‘Þ A¨£FÞØ#& $˜˜!˜Q˜$šÞ Ü"& s£)˜˜!˜Q˜$šà"%˜˜!˜Q˜$™Ø�t˜A‘v“:Ø˜A™‘Aà˜A™�AÞ'Ø™à˜Þ"Ø&'˜A˜a ˜d™GØ  4¨¡6›zØ ! Q¡ ÷A ‘$öD Ø˜a ˜V›¨¨T°A©X«Ü$Ð%KÓLÐLð )6ðV ˆðQ ˜a ˜V›¨¨T«	Ü$Ð%KÓLÐLð )2ðP ˆðK ×-Ñ-Ô-ð ˜!‹|ä  $ °UÑ;Ð;ä�g VÑ,ˆAÜ�g VÑ,ˆAÞÜ˜¨Ñ/‘ÞÜ˜'¨Ñ0‘Þ$Ü˜'¨Ñ2‘ÞÜ˜'¨Ñ3‘ä˜'¨Ñ1�àˆLÛ�æ˜t A™w¨)Ó3¸4¿:¹:¿<¹<Ùà ‘> GÓ+Ü$ð &9ó :ð :à—J‘J“L�Ü36´s¸A¸b¸q¸E³?Ñ0��,‘  <¡æ!Þ!Ü*-¨a°©d«)˜˜,šÞ,Ü*-¨a°©d«)˜˜,šÞ#Ü*1´3´u¸aÀÀ¸eÓ3DÐ*E˜˜,šä*/°°!±«+˜˜,™Ø Ñ!’ñ) ð* ˜gÓ%Ü ð "5ó 6ð 6ð �‰FˆAØ�‰FˆAæØ˜Q™�Ø˜‘w�Ø˜‘w�Ø˜‘w�ä  D 	Ó*�Ü  D 	Ó*�æØ˜B‘J‘DÞØŸ>™>Ó+�Dä  D 	Ó*�ä˜1˜q !˜f˜+¨d¨\ÀÑGˆAð ˆô & fÓ-Ð-r   c                 ó   • [        U[        5      (       d<  [        U[        5      (       d'  [        U[        5      (       d  [	        US5      (       Ga	  U R
                  n[        U5      n[        UR                  5      S:w  a  [        S5      eUR                  u  p‰Ub¼  X@R                  :X  a8  [        UR                  S5      (       d  [        S5      eUR                  S5      nO­X@R                  :X  a,  UR                  R                   S;  a  UR                  S5      nOrX@R"                  :X  a+  UR                  R                   S;  a  UR                  S	5      nO7[%        U5      (       d  [        S
['        U5       35      eSnUR                  u  p‰UR                  R                   n
Uc  U
S;   a  SnOSnUcn  UR                  R(                  nUS:X  a)  [        UR                  S5      (       d  [        S5      eSnO)US:X  a  SnO US:X  a  SnOUS:X  a  SnO[+        SU-   5      eUc  U R-                  U5      nU R.                  R1                  U5        U R.                  R3                  U5        U R.                  R5                  U5        SU SU SU S3nUR7                  UR9                  S5      5        UR;                  S5       H)  nSU S3nUR7                  UR9                  S5      5        M+     U R=                  XE5      nXpR
                  :X  Gai  SX‰4-  nUR7                  UR9                  S5      5        X@R                  U R                  U R>                  4;   Ga  X`R@                  :X  aN  [C        U	5       H>  n[C        U5       H,  nXâUU4   -  nUR7                  UR9                  S5      5        M.     M@     g X`RD                  :X  aR  [C        U	5       HB  n[C        US-   U5       H,  nXâUU4   -  nUR7                  UR9                  S5      5        M.     MD     g [C        U	5       H>  n[C        Xø5       H,  nXâUU4   -  nUR7                  UR9                  S5      5        M.     M@     g X@R"                  :X  aÙ  X`R@                  :X  ae  [C        U	5       HU  n[C        U5       HC  nUUU4   nU[G        U5      [I        U5      4-  nUR7                  UR9                  S5      5        ME     MW     g [C        U	5       HU  n[C        Xø5       HC  nUUU4   nU[G        U5      [I        U5      4-  nUR7                  UR9                  S5      5        ME     MW     g X@RJ                  :X  a  [        S5      e[+        S U 35      eURM                  5       nX`R@                  :w  aX  URN                  URP                  :¬  n[S        URT                  U   URN                  U   URP                  U   44UR                  S!9nS"X‰URV                  4-  nUR7                  UR9                  S5      5        U R=                  XES-
  5      nX@RJ                  :X  aX  [Y        URN                  S-   URP                  S-   5       H-  u  nnSUU4-  nUR7                  UR9                  S5      5        M/     g X@R                  U R                  U R>                  4;   aj  [Y        URN                  S-   URP                  S-   URT                  5       H4  u  nnnS#UU4-  UU-  -   nUR7                  UR9                  S5      5        M6     g X@R"                  :X  a€  [Y        URN                  S-   URP                  S-   URT                  5       HJ  u  nnnS#UU4-  UURF                  URH                  4-  -   nUR7                  UR9                  S5      5        ML     g [+        S U 35      e)$NÚ	__array__r}   zExpected 2 dimensional arrayrf   zBmmwrite does not support integer dtypes larger than native 'intp'.Úfdrh   r¤   ri   zunknown matrix type: rN   ÚfFé   é   r§   rW   Úfr   ÚcrY   ÚurX   zunexpected dtype kind z%%MatrixMarket matrix Ú Ú
r   r{   z%i %i
rÝ   z*pattern type inconsisted with dense formatzUnknown field type )r²   z	%i %i %i
z%i %i )-r   Úlistr   râ   Úhasattrr…   r   rˆ   r²   rS   rÇ   r   r´   ÚOverflowErrorÚastyperÆ   rµ   rÉ   r   ÚtypeÚkindr˜   rÃ   rÞ   rU   r]   rd   r%   Úencoder‚   rË   rÈ   r³   r®   rJ   r   r   rñ   r¶   rÀ   rÁ   r   rÕ   ÚnnzÚzip)r7   rŒ   r'   r(   r)   r*   r+   Úrepr8   r<   Útypecoder  rÕ   rŽ   Útemplater¨   r§   r©   ÚcooÚlower_triangle_maskr“   r  rh   s                          r   rÙ   ÚMMFile._write  sÖ  € ä�aœ×Ñ¤*¨Q´×"8Ñ"8Ü�aœ×Ñ¤7¨1¨k×#:Ò#:Ø×#Ñ#ˆCÜ˜“
ˆAÜ�1—7‘7‹|˜qÓ Ü Ð!?Ó@Ð@ØŸ™‰JˆDàÑ à×.Ñ.Ó.Ü# A§G¡G¨V×4Ñ4Ü+ð -Pó Qð QàŸ™ Ó(‘AØŸo™oÓ-Ø—w‘w—|‘|¨4Ó/ØŸH™H S›M˜øØ×0Ñ0Ó0Ø—w‘w—|‘|¨4Ó/ØŸH™H S›M˜øô ˜A—;‘;Ü Ð#8¼¸a»¸	Ð!BÓCÐCàˆCØŸ™‰JˆDà—7‘7—<‘<ˆàÑØ˜4ÓØ‘	à�	Ø‰=Ø—7‘7—<‘<ˆDØ�s‹{Ü §¡¨×0Ñ0Ü'ð )Ló Mð Mà!‘Ø˜“Ø‘Ø˜“Ø!‘Ø˜“Ø*‘äÐ 8¸4Ñ ?Ó@Ð@àÑØ×)Ñ)¨!Ó,ˆHð 	�‰×'Ñ'¨Ô,Ø�‰×&Ñ& uÔ-Ø�‰×)Ñ)¨(Ô3ð (¨ u¨A¨e¨W°A°h°Z¸rÐBˆØ�‰�T—[‘[ Ó*Ô+ð —M‘M $Ö'ˆDØ�t�f˜B�<ˆDØ�L‰L˜Ÿ™ XÓ.Ö/ñ (ð ×'Ñ'¨Ó9ˆà×#Ñ#Ô#à ˜|Ñ+ˆDØ�L‰L˜Ÿ™ XÓ.Ô/à×+Ñ+¨T¯_©_Ø×,Ñ,ð.ô .à×4Ñ4Ó4Ü" 4ž[˜Ü!& t¦˜AØ#+°°1°©gÑ#5˜DØ"ŸL™L¨¯©°XÓ)>Ö?ó "-ò )ð
 ×!=Ñ!=Ó=Ü" 4ž[˜Ü!& q¨1¡u¨dÖ!3˜AØ#+°°1°©gÑ#5˜DØ"ŸL™L¨¯©°XÓ)>Ö?ó "4ò )ô # 4ž[˜Ü!& q¦˜AØ#+°°1°©gÑ#5˜DØ"ŸL™L¨¯©°XÓ)>Ö?ó "0ò )ð
 ×,Ñ,Ó,à×4Ñ4Ó4Ü" 4ž[˜Ü!& t¦˜AØ"# A q D¡'˜CØ#+¬t°C«y¼$¸s»)Ð.DÑ#D˜DØ"ŸL™L¨¯©°XÓ)>Ö?ó "-ò )ô # 4ž[˜Ü!& q¦˜AØ"# A q D¡'˜CØ#+¬t°C«y¼$¸s»)Ð.DÑ#D˜DØ"ŸL™L¨¯©°XÓ)>Ö?ó "0ò )ð ×,Ñ,Ó,Ü Ð!MÓNÐNô  Ð"5°e°WÐ =Ó>Ð>ð —'‘'“)ˆCð ×0Ñ0Ó0Ø&)§g¡g°·±Ñ&8Ð#Ü §¡Ð*=Ñ!>Ø!$§¡Ð)<Ñ!=Ø!$§¡Ð)<Ñ!=ð!?ð!@ð '*§i¡iñ1�ð   4¨s¯w©wÐ"7Ñ7ˆDØ�L‰L˜Ÿ™ XÓ.Ô/à×+Ñ+¨E¸Q±;Ó?ˆHà×*Ñ*Ó*Ü §¡¨¡	¨3¯7©7°1©9Ö5‘D�A�qØ$¨¨1 vÑ-�DØ—L‘L §¡¨XÓ!6Ö7ò 6ð ×-Ñ-¨t¯©Ø×.Ñ.ð0ó 0ä" 3§7¡7¨1¡9¨c¯g©g°a©i¸¿¹ÖB‘G�A�q˜!Ø$¨¨1 vÑ-°(¸Q±,Ñ?�DØ—L‘L §¡¨XÓ!6Ö7ò  Cð ×,Ñ,Ó,Ü" 3§7¡7¨1¡9¨c¯g©g°a©i¸¿¹ÖB‘G�A�q˜!Ø$¨¨1 vÑ-°(¸a¿f¹fÀaÇfÁfÐ=MÑ2MÑN�DØ—L‘L §¡¨XÓ!6Ö7ò  Cô  Ð"5°e°WÐ =Ó>Ð>r   rk   )r”   ©Ú NNN)/Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rß   Úpropertyr8   r<   r?   rB   r)   r+   rL   r†   r…   rR   ÚclassmethodrU   rÇ   rÈ   rÆ   rÉ   rñ   r\   r]   r³   rI   rJ   rK   rc   rd   rð   Ústaticmethodrl   rp   r   r€   rÃ   rË   rÐ   r#   r%   rÎ   rÓ   rÔ   rÙ   Ú__static_attributes__rk   r   r   r   r   ø   s$  † ð€Ið ñó ðð ñó ðð ñó ðð ñó ðð ñó ðð ñó ðð ñ;ó ð;ð %ÐØ€LØ&¨Ð5€Màñ"ó ð"ð €MØ'€NØ€JØ€MØ€MØ! >°:¸}Ø!ð#€Lð ñ"ó ð"ð !ÐØ$ÐØ.ÐØ$ÐØ'Ð);Ø.Ð0BðD€Oð ñGó ðGð
 % fØ% xØ! 3Ø$ cØ$ cð	+€Oð ñó ðð ñó ðð ñKó ðKð\ ó;ó ð;ð| ñ='ó ð='ð@ ñ#ó ð#ò#ð (,õ ðB BFØô òF<ò$9òEðP CGØ÷W?r   r   c                 óü   • / n SSK nUR                  UR                  5         SSKnUR                  UR
                  5        [        U5      n[        X5      (       + $ ! [         a     NGf = f! [         a     N7f = f)z‘
Check whether `stream` is compatible with numpy.fromfile.

Passing a gzipped file object to ``fromfile/fromstring`` doesn't work with
Python 3.
r   N)rœ   ÚappendÚGzipFileÚImportErrorrž   rŸ   râ   r   )rŒ   Úbad_clsrœ   rž   s       r   Ú_is_fromfile_compatibler.  ³  sy   € ð €GðÛØ�‰�t—}‘}Ô%ðÛØ�‰�s—{‘{Ô#ô �G‹n€GÜ˜&Ó*Ô*Ð*øô ó Ùðûô
 ó Ùðús"   „A ¤A. Á
A+Á*A+Á.
A;Á:A;r  )Ú__doc__r–   Únumpyrº   r   r   r   r   r   r   r	   r
   r   Úscipy.sparser   r   r   Ú__all__r   r   r   r   r   r.  rk   r   r   Ú<module>r3     s^   ðñó 
ã ÷#÷ #õ #÷ 9Ñ 8â
3€òò0ðj  $õ /4ôhlC÷`x
?ñ x
?óv+r   