
     hg                     F   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
 d dlmZmZmZmZ d dlZd dlmZ d dlZd dlmZmZmZ ddgZ G d	 d
          Z G d de          ZdZdZdZdZdZ dZ!dZ"dZ# G d d          Z$dZ%dZ&dZ'dZ(dZ)dZ* G d d          Z+d Z,dS )     )mkdtempN)array	transposepi)assert_equalassert_allcloseassert_array_equalassert_array_almost_equal)raises)mminfommreadmmwrite)integerint)unsigned-integeruintc                   $   e Zd Zd Zd Zd Zd Zej        	                    de
          d             Zej        	                    de
          d             Zd Zd	 Zej        	                    de
          d
             Zej        	                    de
          d             Zej        	                    de
          d             Zd Zd Zd Zej        	                    de
          d             Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestMMIOArrayc                     t                      | _        t          j                            | j        d          | _        d S Nztestfile.mtxr   tmpdirospathjoinfnselfs    T/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/scipy/io/tests/test_mmio.pysetup_methodzTestMMIOArray.setup_method   *    ii',,t{N;;    c                 8    t          j        | j                   d S Nshutilrmtreer   r   s    r   teardown_methodzTestMMIOArray.teardown_method       dk"""""r"   c                     t          | j        |           t          t          | j                  |           t	          | j                  }t          ||           d S r$   )r   r   r   r   r   r
   r   ainfobs       r   checkzTestMMIOArray.check   sO    VDG__d+++47OO!!Q'''''r"   c                     t          | j        |           t          t          | j                  |           t	          | j                  }t          ||           d S r$   )r   r   r   r   r   r+   s       r   check_exactzTestMMIOArray.check_exact#   sO    VDG__d+++47OOQr"   typeval, dtypec           	      h    |                      t          ddgddgg|          dddd|df           d S )N            dtyper   generalr1   r   r   typevalr9   s      r   test_simple_integerz!TestMMIOArray.test_simple_integer)   U    AA/u===Q7GY?	A 	A 	A 	A 	Ar"   c           	      l    t          ddgddgg|          }|                     |dddd|d	f           d S )
Nr8   r5   r7   r   r:   )r   r1   )r   r=   r9   r,   s       r   test_32bit_integerz TestMMIOArray.test_32bit_integer.   sL    GW%'9:%HHHQ1gw	BCCCCCr"   c                     t          ddgddggt          j                  }t          j        d          j        dk     r#t          t          t          | j        |           d S | 	                    |d           d S )	N                        r8   r      r5   r5   r7   r   r   r:   )
r   npint64intpitemsizeassert_raisesOverflowErrorr   r   r1   r   r,   s     r   test_64bit_integerz TestMMIOArray.test_64bit_integer3   ss    E5>GW#56bhGGGGAJJ!##-$'1=====Q HIIIIIr"   c                 t    t          ddgddggt          j                  }|                     |d           d S )NrG   rH           r8   )r5   r5   r7   r   r   r:   )r   rM   uint64r1   rS   s     r   test_64bit_unsigned_integerz)TestMMIOArray.test_64bit_unsigned_integer:   sA    E5>GW#56biHHHMNNNNNr"   c           	      h    |                      t          ddgddgg|          dddd|df           d S Nr   r4   r8   r5   r7   r   r:   r;   r<   s      r   "test_simple_upper_triangle_integerz0TestMMIOArray.test_simple_upper_triangle_integer>   r?   r"   c           	      h    |                      t          ddgddgg|          dddd|df           d S r[   r;   r<   s      r   "test_simple_lower_triangle_integerz0TestMMIOArray.test_simple_lower_triangle_integerC   r?   r"   c           	      h    |                      t          g dg dg|          dddd|df           d S )	Nr4   r5   r6   r7         r8   r5   r6   rc   r   r:   r;   r<   s      r   test_simple_rectangular_integerz-TestMMIOArray.test_simple_rectangular_integerH   sU    			9995UCCCQ7GY?	A 	A 	A 	A 	Ar"   c                 D    |                      ddgddgddggd           d S )Nr4   r5         @r7   rb   rc   )r6   r5   rc   r   realr:   r/   r   s    r   test_simple_rectangular_floatz+TestMMIOArray.test_simple_rectangular_floatM   s:    

QFS!Hq!f-8	: 	: 	: 	: 	:r"   c                 >    |                      ddgddggd           d S )Nr4   r5   r6         @r5   r5   r7   r   rg   r:   rh   r   s    r   test_simple_floatzTestMMIOArray.test_simple_floatQ   s4    

QFQH%8	: 	: 	: 	: 	:r"   c                 >    |                      ddgddggd           d S )Nr4   r5   r6                 @)r5   r5   r7   r   complexr:   rh   r   s    r   test_simple_complexz!TestMMIOArray.test_simple_complexU   s4    

QFQG$;	= 	= 	= 	= 	=r"   c           	      h    |                      t          ddgddgg|          dddd|df           d S )Nr4   r5   r7   r8   r   	symmetricr;   r<   s      r   test_simple_symmetric_integerz+TestMMIOArray.test_simple_symmetric_integerY   sU    AA/u===Q7G[A	C 	C 	C 	C 	Cr"   c                 >    |                      ddgddggd           d S )Nr   r5   )r5   r5   r7   r   r   skew-symmetric)r1   r   s    r   "test_simple_skew_symmetric_integerz0TestMMIOArray.test_simple_skew_symmetric_integer^   s;    1a&2q'*H	J 	J 	J 	J 	Jr"   c                 Z    |                      t          ddgddggd          d           d S )Nr   r5          g        f)r5   r5   r7   r   rg   rw   )r/   r   r   s    r    test_simple_skew_symmetric_floatz.TestMMIOArray.test_simple_skew_symmetric_floatb   sC    

51a&4+.44?	A 	A 	A 	A 	Ar"   c                 >    |                      ddgddggd           d S )Nr4          @      @       @      r7   )r5   r5   r7   r   rp   	hermitianrh   r   s    r   test_simple_hermitian_complexz+TestMMIOArray.test_simple_hermitian_complexf   s4    

QIay)=	? 	? 	? 	? 	?r"   c                     d}t           j                            |          }|t          |          z   }|                     |d           d S )N   r   )r   r   i  r   rg   rs   )rM   randomr   r/   r   szr,   s      r   test_random_symmetric_floatz)TestMMIOArray.test_random_symmetric_floatj   sG    IR  	!

1ABBBBBr"   c                 t    d}t           j                            |          }|                     |d           d S )Nr      )r   r   ,  r   rg   r:   )rM   r   r/   r   s      r   test_random_rectangular_floatz+TestMMIOArray.test_random_rectangular_floatp   s7    IR  

1?@@@@@r"   c                 "   d}t          j        |                              d          }t          j        t
          d          5  t          j                            t          j	        |                     d d d            d S # 1 swxY w Y   d S )Nz            %%MatrixMarket matrix array real general
              3  3 999
            1.0
            2.0
            3.0
            4.0
            5.0
            6.0
            7.0
            8.0
            9.0
            asciiznot of length 2match
textwrapdedentencodepytestr   
ValueErrorscipyior   BytesIOr   stexts      r   &test_bad_number_of_array_header_fieldsz4TestMMIOArray.test_bad_number_of_array_header_fieldsu   s     q!!((11]:->??? 	. 	.HOOBJt,,---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.   2BBBc                 p    |                      t          ddgddggt          j                  d           d S )Nr4   r5   rv   c   r8   rL   )r1   r   rM   int32r   s    r   #test_gh13634_non_skew_symmetric_intz1TestMMIOArray.test_gh13634_non_skew_symmetric_int   sJ    AR1BBBA	C 	C 	C 	C 	Cr"   c                 p    |                      t          ddgddggt          j                  d           d S )Nr4   r5   rv        X@r8   rl   )r/   r   rM   float32r   s    r   %test_gh13634_non_skew_symmetric_floatz3TestMMIOArray.test_gh13634_non_skew_symmetric_float   sC    

51a&2s),BJ???8	: 	: 	: 	: 	:r"   N)__name__
__module____qualname__r    r(   r/   r1   r   markparametrizeparametrize_argsr>   rE   rT   rY   r\   r^   rd   ri   rm   rq   rt   rx   r|   r   r   r   r   r   r    r"   r   r   r      s`       < < <# # #( ( (   [-/?@@A A A@A [-/?@@D D A@DJ J JO O O [-/?@@A A A@A [-/?@@A A A@A [-/?@@A A A@A: : :: : := = = [-/?@@C C A@CJ J JA A A? ? ?C C CA A A
. . .$C C C: : : : :r"   r   c                      e Zd Zd Zd Zd Zd Zej        	                    de
          d             Zd Zd Zd	 Zd
 Zej        	                    de
          d             Zej        	                    de
          d             Zej        	                    de
          d             Zd Zd Zd Zej        	                    de
          d             Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestMMIOSparseCSRc                     t                      | _        t          j                            | j        d          | _        d S r   r   r   s    r   r    zTestMMIOSparseCSR.setup_method   r!   r"   c                 8    t          j        | j                   d S r$   r%   r   s    r   r(   z!TestMMIOSparseCSR.teardown_method   r)   r"   c                    t          | j        |           t          t          | j                  |           t	          | j                  }t          |                                |                                           d S r$   )r   r   r   r   r   r
   toarrayr+   s       r   r/   zTestMMIOSparseCSR.check   s_    VDG__d+++47OO!!))++qyy{{;;;;;r"   c                    t          | j        |           t          t          | j                  |           t	          | j                  }t          |                                |                                           d S r$   )r   r   r   r   r   r   r+   s       r   r1   zTestMMIOSparseCSR.check_exact   s_    VDG__d+++47OOQYY[[!))++.....r"   r2   c           	          |                      t          j                            ddgddgg|          dddd|df           d S )Nr4   r5   r6   r7   r8   
coordinater:   r1   r   sparse
csr_matrixr<   s      r   r>   z%TestMMIOSparseCSR.test_simple_integer   ]    001a&1a&1A0OOQ<)D	F 	F 	F 	F 	Fr"   c                     t           j                            t          ddgddggt          j                            }|                     |d           d S )NrA   i  rC   rD   r8   r5   r5   r7   r   r   r:   )r   r   r   r   rM   r   r1   rS   s     r   rE   z$TestMMIOSparseCSR.test_32bit_integer   sb    L##EGX+>,3W+=+?02%: %: %: ; ; 	IJJJJJr"   c                 .   t           j                            t          ddgddggt          j                            }t	          j        d          j        dk     r#t          t          t          | j        |           d S |                     |d           d S )N        rI   r8   r   rK   r   )r   r   r   r   rM   rN   rO   rP   rQ   rR   r   r   r1   rS   s     r   rT   z$TestMMIOSparseCSR.test_64bit_integer   s    L##EGW+=,4g+>+@02%: %: %: ; ; GAJJ!##-$'1=====Q MNNNNNr"   c                     t           j                            t          ddgddggt          j                            }|                     |d           d S )NrA   rB   rC   rD   r8   r5   r5   r7   r   r   r:   )r   r   r   r   rM   uint32r1   rS   s     r   test_32bit_unsigned_integerz-TestMMIOSparseCSR.test_32bit_unsigned_integer   b    L##EGW+=,3W+=+?02	%; %; %; < < 	RSSSSSr"   c                     t           j                            t          ddgddggt          j                            }|                     |d           d S )Nr   rV   rW   r8   r   )r   r   r   r   rM   rX   r1   rS   s     r   rY   z-TestMMIOSparseCSR.test_64bit_unsigned_integer   r   r"   c           	          |                      t          j                            ddgddgg|          dddd|df           d S Nr   r4   r8   r5   r   r:   r   r<   s      r   r\   z4TestMMIOSparseCSR.test_simple_upper_triangle_integer   r   r"   c           	          |                      t          j                            ddgddgg|          dddd|df           d S r   r   r<   s      r   r^   z4TestMMIOSparseCSR.test_simple_lower_triangle_integer   r   r"   c           	          |                      t          j                            g dg dg|          dddd|df           d S )	Nr`   ra   r8   r5   r6   rc   r   r:   r   r<   s      r   rd   z1TestMMIOSparseCSR.test_simple_rectangular_integer   s]    00)))YYY1Gu0UUQ<)D	F 	F 	F 	F 	Fr"   c                 ~    |                      t          j                            ddgddgddgg          d           d S )Nr4   r5   rf   r7   rb   rc   )r6   r5   rc   r   rg   r:   r/   r   r   r   r   s    r   ri   z/TestMMIOSparseCSR.test_simple_rectangular_float   sJ    

5<**QFS!Hq!f+EFF=	? 	? 	? 	? 	?r"   c                 x    |                      t          j                            ddgddgg          d           d S )Nr4   r5   r6   rk   r5   r5   r7   r   rg   r:   r   r   s    r   rm   z#TestMMIOSparseCSR.test_simple_float   sD    

5<**QFQH+=>>=	? 	? 	? 	? 	?r"   c                 x    |                      t          j                            ddgddgg          d           d S )Nr4   r5   r6   ro   )r5   r5   r7   r   rp   r:   r   r   s    r   rq   z%TestMMIOSparseCSR.test_simple_complex   sI    

5<**QFQG+<==@	B 	B 	B 	B 	Br"   c           	          |                      t          j                            ddgddgg|          dddd|df           d S )Nr4   r5   r7   r8   r6   r   rs   r   r<   s      r   rt   z/TestMMIOSparseCSR.test_simple_symmetric_integer   s]    001a&1a&1A0OOQ<+F	H 	H 	H 	H 	Hr"   c                 x    |                      t          j                            ddgddgg          d           d S )Nr   r5   rv   )r5   r5   r4   r   r   rw   r   r   s    r   rx   z4TestMMIOSparseCSR.test_simple_skew_symmetric_integer   sK    001a&2q'1BCCM	O 	O 	O 	O 	Or"   c           	          |                      t          j                            t	          ddgddggd                    d           d S )Nr   r5   rz   r{   )r5   r5   r4   r   rg   rw   )r/   r   r   r   r   r   s    r   r|   z2TestMMIOSparseCSR.test_simple_skew_symmetric_float   sS    

5<**51a&4)1Dc+J+JKKD	F 	F 	F 	F 	Fr"   c                 x    |                      t          j                            ddgddgg          d           d S )Nr4   r~   r   r7   )r5   r5   r6   r   rp   r   r   r   s    r   r   z/TestMMIOSparseCSR.test_simple_hermitian_complex   sI    

5<**QIay+ABBB	D 	D 	D 	D 	Dr"   c                     d}t           j                            |          }|t          |          z   }t          j                            |          }|                     |d           d S )Nr   )r   r      r   rg   rs   )rM   r   r   r   r   r   r/   r   s      r   r   z-TestMMIOSparseCSR.test_random_symmetric_float   s\    IR  	!L##A&&

1FGGGGGr"   c                     d}t           j                            |          }t          j                            |          }|                     |d           d S )Nr   )r   r   r   r   rg   r:   )rM   r   r   r   r   r/   r   s      r   r   z/TestMMIOSparseCSR.test_random_rectangular_float   sL    IR  L##A&&

1DEEEEEr"   c                    t           j                            ddgddgg          }t          j        |                                          }d||                                dk    <   d}t          | j        |d           t          t          | j                  |           t          | j                  }t          ||                                           d S )	Nr   g      ?g      @g      @r4   )r5   r5   r6   r   patternr:   r   )field)r   r   r   rM   
zeros_liker   r   r   r   r   r   r
   )r   r,   pr-   r.   s        r   test_simple_patternz%TestMMIOSparseCSR.test_simple_pattern   s    L##aXSz$:;;M!))++&&!))++/<),,,,VDG__d+++47OO!!QYY[[11111r"   c                     t           j                            ddgddggt          j                  }|                     |d           d S )Nr4   r5   rv   r   r8   r   )r   r   r   rM   r   r1   rS   s     r   r   z5TestMMIOSparseCSR.test_gh13634_non_skew_symmetric_int  sH    L##aVb"X$6bh#GGIJJJJJr"   c                     t           j                            ddgddggt          j                  }|                     |d           d S )Nr4   r5   rv   r   r8   r   )r   r   r   rM   r   r/   rS   s     r   r   z7TestMMIOSparseCSR.test_gh13634_non_skew_symmetric_float  sF    L##aVb#Y$7rz#JJ

1@AAAAAr"   N)r   r   r   r    r(   r/   r1   r   r   r   r   r>   rE   rT   r   rY   r\   r^   rd   ri   rm   rq   rt   rx   r|   r   r   r   r   r   r   r   r"   r   r   r      s[       < < <# # #< < </ / / [-/?@@F F A@FK K KO O OT T TT T T [-/?@@F F A@F [-/?@@F F A@F [-/?@@F F A@F? ? ?? ? ?B B B [-/?@@H H A@HO O OF F FD D DH H HF F F2 2 2K K KB B B B Br"   r   z]%%MatrixMarket matrix array integer general
2  2
2147483647
2147483646
2147483647
2147483646
z]%%MatrixMarket matrix coordinate integer symmetric
2  2  2
1  1  2147483647
2  2  2147483646
z%%MatrixMarket matrix array integer general
2  2
          2147483648
-9223372036854775806
         -2147483648
 9223372036854775807
z%%MatrixMarket matrix coordinate integer general
2  2  3
1  1           2147483648
1  2  9223372036854775807
2  2  9223372036854775807
z%%MatrixMarket matrix coordinate integer symmetric
2  2  3
1  1            2147483648
1  2  -9223372036854775807
2  2   9223372036854775807
z%%MatrixMarket matrix coordinate integer skew-symmetric
2  2  3
1  1            2147483648
1  2  -9223372036854775807
2  2   9223372036854775807
z%%MatrixMarket matrix array integer general
2  2
         2147483648
9223372036854775807
         2147483648
9223372036854775808
zq%%MatrixMarket matrix coordinate integer symmetric
2  2  2
1  1            2147483648
2  2  19223372036854775808
c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestMMIOReadLargeIntegersc                     t                      | _        t          j                            | j        d          | _        d S r   r   r   s    r   r    z&TestMMIOReadLargeIntegers.setup_methodS  r!   r"   c                 8    t          j        | j                   d S r$   r%   r   s    r   r(   z)TestMMIOReadLargeIntegers.teardown_methodW  r)   r"   c                    t          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   t          t	          | j                  |           |rt          j        d          j        dk     s|r"t          t          t          | j                   d S t          | j                  }|s|                                }t          ||           d S )Nwr   rK   )openr   writer   r   rM   rO   rP   rQ   rR   r   r   )	r   exampler,   r-   denseover32over64r{   r.   s	            r   
check_readz$TestMMIOReadLargeIntegers.check_readZ  s   $'3 	1GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	VDG__d+++ 	

+a//V/-99999twA  IIKKAs   8<<c                     t          ddgddggt          j                  }|                     t          |dddd           d S )NrA   rB   r8   rL   TFr   r   r   )r   rM   rN   r   _32bit_integer_dense_examplerS   s     r   test_read_32bit_integer_densez7TestMMIOReadLargeIntegers.test_read_32bit_integer_densef  sf    GW%W%'.0h8 8 84@"$$ 	 	& 	& 	& 	& 	&r"   c                     t          ddgddggt          j                  }|                     t          |dddd           d S )NrA   r   rB   r8   r5   r5   r5   r   r   rs   Fr   )r   rM   rN   r   _32bit_integer_sparse_examplerS   s     r   test_read_32bit_integer_sparsez8TestMMIOReadLargeIntegers.test_read_32bit_integer_sparsep  sd    GQ<w<!(*2 2 25G#$$ 	 	& 	& 	& 	& 	&r"   c                     t          ddgddggt          j                  }|                     t          |dddd	           d S )
NrG   i   r   rJ   r8   rL   TFr   )r   rM   rN   r   _64bit_integer_dense_examplerS   s     r   test_read_64bit_integer_densez7TestMMIOReadLargeIntegers.test_read_64bit_integer_densez  se    E6?g&(/1x9 9 94@"#$ 	 	& 	& 	& 	& 	&r"   c                     t          ddgddggt          j                  }|                     t          |dddd           d S )	NrG   rJ   r   r8   )r5   r5   r6   r   r   r:   FTr   )r   rM   rN   r   %_64bit_integer_sparse_general_examplerS   s     r   &test_read_64bit_integer_sparse_generalz@TestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_general  se    E7#w<!(*2 2 2=E##$ 	 	& 	& 	& 	& 	&r"   c                     t          ddgddggt          j                  }|                     t          |dddd           d S )	NrG    rJ   r8   )r5   r5   r6   r   r   rs   FTr   )r   rM   rN   r   '_64bit_integer_sparse_symmetric_examplerS   s     r   (test_read_64bit_integer_sparse_symmetriczBTestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_symmetric  sf    E8$g&(/1x9 9 9?G##$ 	 	& 	& 	& 	& 	&r"   c                     t          ddgddggt          j                  }|                     t          |dddd           d S )	NrG   r   rJ   r8   )r5   r5   r6   r   r   rw   FTr   )r   rM   rN   r   "_64bit_integer_sparse_skew_examplerS   s     r   #test_read_64bit_integer_sparse_skewz=TestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_skew  sf    E8$W%'.0h8 8 8:L##$ 	 	& 	& 	& 	& 	&r"   c                 F    |                      t          d dddd           d S )NrL   Tr   )r    _over64bit_integer_dense_exampler   s    r   !test_read_over64bit_integer_densez;TestMMIOReadLargeIntegers.test_read_over64bit_integer_dense  s9    8@"## 	 	% 	% 	% 	% 	%r"   c                 F    |                      t          d dddd           d S )Nr   FTr   )r   !_over64bit_integer_sparse_exampler   s    r   "test_read_over64bit_integer_sparsez<TestMMIOReadLargeIntegers.test_read_over64bit_integer_sparse  s9    9G### 	 	% 	% 	% 	% 	%r"   N)r   r   r   r    r(   r   r   r   r   r   r   r   r  r  r   r"   r   r   r   R  s        < < <# # #
 
 
& & && & && & && & && & && & &% % %% % % % %r"   r   a&  %%MatrixMarket matrix coordinate real general
%=================================================================================
%
% This ASCII file represents a sparse MxN matrix with L
% nonzeros in the following Matrix Market format:
%
% +----------------------------------------------+
% |%%MatrixMarket matrix coordinate real general | <--- header line
% |%                                             | <--+
% |% comments                                    |    |-- 0 or more comment lines
% |%                                             | <--+
% |    M  N  L                                   | <--- rows, columns, entries
% |    I1  J1  A(I1, J1)                         | <--+
% |    I2  J2  A(I2, J2)                         |    |
% |    I3  J3  A(I3, J3)                         |    |-- L lines
% |        . . .                                 |    |
% |    IL JL  A(IL, JL)                          | <--+
% +----------------------------------------------+
%
% Indices are 1-based, i.e. A(1,1) is the first element.
%
%=================================================================================
  5  5  8
    1     1   1.000e+00
    2     2   1.050e+01
    3     3   1.500e-02
    1     4   6.000e+00
    4     2   2.505e+02
    4     4  -2.800e+02
    4     5   3.332e+01
    5     5   1.200e+01
a   %%MatrixMarket matrix coordinate complex hermitian
  5  5  7
    1     1     1.0      0
    2     2    10.5      0
    4     2   250.5     22.22
    3     3     1.5e-2   0
    4     4    -2.8e2    0
    5     5    12.       0
    5     4     0       33.32
z%%MatrixMarket matrix coordinate real skew-symmetric
  5  5  7
    1     1     1.0
    2     2    10.5
    4     2   250.5
    3     3     1.5e-2
    4     4    -2.8e2
    5     5    12.
    5     4     0
z%%MatrixMarket matrix coordinate real symmetric
  5  5  7
    1     1     1.0
    2     2    10.5
    4     2   250.5
    3     3     1.5e-2
    4     4    -2.8e2
    5     5    12.
    5     4     8
z%%MatrixMarket matrix coordinate pattern symmetric
  5  5  7
    1     1
    2     2
    4     2
    3     3
    4     4
    5     5
    5     4
a  %%MatrixMarket  MATRIX    Coordinate    Real General

   5  5         8

1 1  1.0
2 2       10.5
3 3             1.5e-2
4 4                     -2.8E2
5 5                              12.
     1      4      6
     4      2      250.5
     4      5      33.32

c                   t    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd ZdS )TestMMIOCoordinatec                     t                      | _        t          j                            | j        d          | _        d S r   r   r   s    r   r    zTestMMIOCoordinate.setup_method  r!   r"   c                 8    t          j        | j                   d S r$   r%   r   s    r   r(   z"TestMMIOCoordinate.teardown_method  r)   r"   c                 2   t          | j        d          }|                    |           |                                 t	          t          | j                  |           t          | j                                                  }t          ||           d S )Nr   )	r   r   r   closer   r   r   r   r
   )r   r   r,   r-   r{   r.   s         r   r   zTestMMIOCoordinate.check_read   sy    #					VDG__d+++47OO##%%!!Q'''''r"   c                 `    g dg dg dg dg dg}|                      t          |d           d S N)r4   r   r   rc   r   )r         %@r   r   r   r   r   Q?r   r   )r        Po@r   )\@@r   r   r   r      rb   rb   rK   r   rg   r:   )r   _general_examplerS   s     r   test_read_generalz$TestMMIOCoordinate.test_read_general(  sc    __'''	
 	(!B	D 	D 	D 	D 	Dr"   c                 `    g dg dg dg dg dg}|                      t          |d           d S )Nr4   r   r   r   r   )r   r  r   y     Po@Q86r   r  )r   y     Po@Q86@r   r  y       )\@)r   r   r   y        )\@@r  )rb   rb      r   rp   r   )r   _hermitian_examplerS   s     r   test_read_hermitianz&TestMMIOCoordinate.test_read_hermitian1  sc    __,,,222"""	$
 	*AG	I 	I 	I 	I 	Ir"   c                 `    g dg dg dg dg dg}|                      t          |d           d S )Nr  )r   r  r   g     Por   r  )r   r  r   r  r   r  )rb   rb   r  r   rg   rw   )r   _skew_examplerS   s     r   test_read_skewz!TestMMIOCoordinate.test_read_skew:  sb    __$$$###	
 	qI	K 	K 	K 	K 	Kr"   c                 `    g dg dg dg dg dg}|                      t          |d           d S )Nr  )r   r  r   r  r   r  )r   r  r   r  rK   )r   r   r   rK   r  )rb   rb   r  r   rg   rs   )r   _symmetric_examplerS   s     r   test_read_symmetricz&TestMMIOCoordinate.test_read_symmetricC  sc    __######	
 	*AD	F 	F 	F 	F 	Fr"   c                 `    g dg dg dg dg dg}|                      t          |d           d S )Nr  )r   r4   r   r4   r   )r   r   r4   r   r   )r   r4   r   r4   r4   )r   r   r   r4   r4   )rb   rb   r  r   r   rs   )r   _symmetric_pattern_examplerS   s     r   test_read_symmetric_patternz.TestMMIOCoordinate.test_read_symmetric_patternL  s[    __________	
 	2AG	I 	I 	I 	I 	Ir"   c                 `    g dg dg dg dg dg}|                      t          |d           d S r  )r   _empty_lines_examplerS   s     r   test_read_empty_linesz(TestMMIOCoordinate.test_read_empty_linesU  sc    __'''	
 	,aB	D 	D 	D 	D 	Dr"   c                 F   t           j                            d          }t          | j        |           t          t          | j                  d           |                                }t          | j                                                  }t          ||           d S )N)
   r,  )r,  r,  r   r   rg   rs   )
r   r   
coo_matrixr   r   r   r   r   r   r
   )r   r.   r,   s      r   test_empty_write_readz(TestMMIOCoordinate.test_empty_write_read^  s     L##H--VDG__C	E 	E 	EIIKK47OO##%%!!Q'''''r"   c                    	 dd l }n# t          $ r Y d S w xY wt          g d          }t          g d          }t          g d          }t          j                            |||ffd          }t          | j        |           d| j        z  }t          | j        d          5 }|	                    |d	          }|
                    |                                           |                                 d d d            n# 1 swxY w Y   t          |                                          }	t          |	|                                           d S )
Nr   r   r   r4   r5   r6   r6   r6   r7   r   r6   r4   r5   r4   r6   r7   r7   g      ?g      @r  r  r  g     qr  g      (@rb   rb   shapez%s.bz2rbwb)bz2ImportErrorr   r   r   r-  r   r   r   BZ2Filer   readr  r   r   r
   )
r   r8  IJVr.   fn_bzip2f_inf_outr,   s
             r   test_bzip2_py3z!TestMMIOCoordinate.test_bzip2_py3j  s   	JJJJ 	 	 	FF	***++***++EEEFFL##QAKv#>>dg%$'4   	DKK$//EKK		$$$KKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 8$$&&!!QYY[[11111    
$ADD	Dc                    	 dd l }n# t          $ r Y d S w xY wt          g d          }t          g d          }t          g d          }t          j                            |||ffd          }t          | j        |           d| j        z  }t          | j        d          5 }|                    |d	          }|	                    |
                                           |                                 d d d            n# 1 swxY w Y   t          |                                          }	t          |	|                                           d S )
Nr   r0  r1  r2  r3  r4  z%s.gzr6  r7  )gzipr9  r   r   r   r-  r   r   r   r   r;  r  r   r   r
   )
r   rE  r<  r=  r>  r.   fn_gzipr@  rA  r,   s
             r   test_gzip_py3z TestMMIOCoordinate.test_gzip_py3  s   	KKKK 	 	 	FF	***++***++EEEFFL##QAKv#>>DG#$'4   	DIIgt,,EKK		$$$KKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 7OO##%%!!QYY[[11111rC  c                    t          g d          }t          g d          }t          g d          }t          j                            |||ffd          }t	          | j        |           t          t          | j                  d           |                                }t          | j                                                  }t          ||           d S )Nr0  r1  r2  r3  r4  r  r   r   r   r-  r   r   r   r   r   r   r
   r   r<  r=  r>  r.   r,   s         r   test_real_write_readz'TestMMIOCoordinate.test_real_write_read  s    ***++***++EEEFFL##QAKv#>>VDG__?	A 	A 	AIIKK47OO##%%!!Q'''''r"   c                    t          g d          }t          g d          }t          g d          }t          j                            |||ffd          }t	          | j        |           t          t          | j                  d           |                                }t          | j                                                  }t          ||           d S )Nr0  r1  y      ?      @y      @       @y      %@?yQ?y     Po@        y     q      @y)\@@@y      (@?r3  r4  )rb   rb   rK   r   rp   r:   rI  rJ  s         r   test_complex_write_readz*TestMMIOCoordinate.test_complex_write_read  s    ***++***++ H H H I I L##QAKv#>>VDG__B	D 	D 	DIIKK47OO##%%!!Q'''''r"   c                    |dz  }|                                  g }t          g d          }t          g d          }t          g d          }|                    t          j                            |||ffd                     t          g d          }|                    t          j                            |||ffd                     |D ]w}|                                }dD ]^}	||	d	z   z  }
t          |
|                    |	                     t          |
                                          }t          ||           _xd S )
Nsparse_formatsr0  r1  r2  r3  r4  rM  )csrcsccooz.mtx)mkdirr   appendr   r   r-  r   r   asformatr   r
   )r   tmp_pathr   matsr<  r=  r>  matexpectedfmtfnameresults               r   test_sparse_formatsz&TestMMIOCoordinate.test_sparse_formats  sj   ,,***++***++EEEFFEL++QAKv+FFGGG H H H I IEL++QAKv+FFGGG 	< 	<C{{}}H, < <#,/s||C00111..00)&(;;;;	<	< 	<r"   c           	         t           gd t          ddd          D             z   }t          dd          }|D ]}|D ]}d|z  dz   }t          j                            ||f          }|||dz
  |dz
  f<   t          | j        ||           t          j                            | j                  }t          |j
        |dz
  g           t          |j        |dz
  g           t          |j        t          d|z  |z            g           όd S )	Nc                     g | ]}d |z  S )r,  r   ).0is     r   
<listcomp>z5TestMMIOCoordinate.test_precision.<locals>.<listcomp>  s    AAA!b1gAAAr"   r   ir4   r,  )	precisionz%%.%dg)r   ranger   r   
dok_matrixr   r   r   r   r	   rowcolr   datafloat)r   test_valuestest_precisionsvaluere  nAs          r   test_precisionz!TestMMIOCoordinate.test_precision  s,   dAAuQR/@/@AAAA2,,  	O 	OE, O O		MA%L++QF33#!A#qs(i8888HOODG,,"151Q3%000"151Q3%000x)/Ce/K)L)L(MNNNNO	O 	Or"   c                 "   d}t          j        |                              d          }t          j        t
          d          5  t          j                            t          j	        |                     d d d            d S # 1 swxY w Y   d S )Na              %%MatrixMarket matrix coordinate real general
              5  5  8 999
                1     1   1.000e+00
                2     2   1.050e+01
                3     3   1.500e-02
                1     4   6.000e+00
                4     2   2.505e+02
                4     4  -2.800e+02
                4     5   3.332e+01
                5     5   1.200e+01
            r   znot of length 3r   r   r   s      r   +test_bad_number_of_coordinate_header_fieldsz>TestMMIOCoordinate.test_bad_number_of_coordinate_header_fields  s     q!!((11]:->??? 	. 	.HOOBJt,,---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.r   N)r   r   r   r    r(   r   r  r  r!  r$  r'  r*  r.  rB  rG  rK  rN  r^  rq  rs  r   r"   r   r  r    s(       < < <# # #( ( (D D DI I IK K KF F FI I ID D D
( 
( 
(2 2 202 2 20( ( (( ( ( < < <0O O O". . . . .r"   r  c                  H    t          t          j        d                     d S )Nzg%%MatrixMarket matrix coordinate complex symmetric
 1 1 1
1 1 -2.1846000000000e+02  0.0000000000000e+00)r   r   StringIOr   r"   r   test_gh11389rv    s9    
2; G H H I I I I Ir"   )-tempfiler   r   r   r&   r   numpyrM   r   r   r   numpy.testingr   r   r	   r
   r   r   rQ   scipy.sparser   scipy.ior   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r  r  r   r#  r&  r)  r  rv  r   r"   r   <module>r|     s\         				 				       & & & & & & & & & &J J J J J J J J J J J J  * * * * * *     , , , , , , , , , ,&02 x: x: x: x: x: x: x: x:v}B }B }B }B }B }B }B }B@  !   ) %+ '& "$  % !^% ^% ^% ^% ^% ^% ^% ^%B  D
 

 
  "Y. Y. Y. Y. Y. Y. Y. Y.xI I I I Ir"   