§
    ¢éUg÷P  ã                   ó¤  — d 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mZmZmZmZ ddlmZmZ ddlmZ g d¢Zej        dk    ZdZdZd	Zd
ZdZdZededededededdg d¢ddiZeeeeeeeeeeedœZdZ dZ!d	Z"ddddddœZ#e de!de"diZ$ G d „ d!¦  «        Z% G d"„ d#¦  «        Z& G d$„ d%e	¦  «        Z'd,d'„Z( G d(„ d)¦  «        Z) G d*„ d+¦  «        Z*dS )-z1 Classes for read / write of matlab (TM) 4 files
é    Né   )ÚMatFileReaderÚ	docfillerÚmatdimsÚ
read_dtypeÚconvert_dtypesÚarr_to_charsÚarr_dtype_number)Úsqueeze_elementÚchars_to_strings)Úreduce)ÚMatFile4ReaderÚMatFile4WriterÚSYS_LITTLE_ENDIANÚ
VarHeader4Ú
VarReader4Ú
VarWriter4Ú	arr_to_2dÚmclass_infoÚmdtypes_templateÚmiDOUBLEÚmiINT16ÚmiINT32ÚmiSINGLEÚmiUINT16ÚmiUINT8ÚmxCHAR_CLASSÚmxFULL_CLASSÚmxSPARSE_CLASSÚnp_to_mtypesÚorder_codesÚlittleé   é   é   é   Úf8Úf4Úi4Úi2Úu2Úu1Úheader))Úmoptr)   )Úmrowsr)   )Úncolsr)   )Úimagfr)   )Únamlenr)   ÚU1)r'   Úc32Úc24Úc16r(   Úc8r)   r*   r+   r,   ÚS1ú<ú>zVAX D-floatzVAX G-floatÚCray)r   r   r#   r$   r%   ÚdoubleÚcharÚsparsec                   ó   — e Zd ZdZdZd„ ZdS )r   Fc                 óL   — || _         || _        || _        || _        || _        d S ©N)ÚnameÚdtypeÚmclassÚdimsÚ
is_complex)ÚselfrB   rC   rD   rE   rF   s         úT/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/io/matlab/_mio4.pyÚ__init__zVarHeader4.__init__Z   s+   € ð ˆŒ	ØˆŒ
ØˆŒØˆŒ	Ø$ˆŒˆˆó    N)Ú__name__Ú
__module__Ú__qualname__Ú
is_logicalÚ	is_globalrI   © rJ   rH   r   r   U   s-   € € € € € à€JØ€Ið
%ð 
%ð 
%ð 
%ð 
%rJ   r   c                   óF   — e Zd ZdZd„ Zd„ Zdd„Zdd„Zd„ Zd„ Z	d	„ Z
d
„ ZdS )r   z" Class to read matlab 4 variables c                 ót   — || _         |j        | _        |j        | _        |j        | _        |j        | _        d S rA   )Úfile_readerÚ
mat_streamÚdtypesÚchars_as_stringsÚ
squeeze_me)rG   rS   s     rH   rI   zVarReader4.__init__j   s7   € Ø&ˆÔØ%Ô0ˆŒØ!Ô(ˆŒØ +Ô <ˆÔØ%Ô0ˆŒˆˆrJ   c                 ó�  — t          | j        | j        d         ¦  «        }| j                             t	          |d         ¦  «        ¦  «                             d¦  «        }|d         dk     s|d         dk    rt          d¦  «        ‚t          |d         d¦  «        \  }}|d	vr*t          j	        d
t          |         z  t          d¬¦  «         t          |d¦  «        \  }}|dk    rt          d¦  «        ‚t          |d¦  «        \  }}|}|d         |d         f}|d         dk    }	| j        |         }
t          ||
|||	¦  «        S )z% Read and return header for variable r-   r2   ó    r.   r   éˆ  z.Mat 4 mopt wrong format, byteswapping problem?éè  )r   r   zBWe do not support byte ordering '%s'; returned data may be corruptr$   )Ú
stackleveléd   z,O in MOPT integer should be 0, wrong format?é
   r/   r0   r1   r   )r   rT   rU   ÚreadÚintÚstripÚ
ValueErrorÚdivmodÚwarningsÚwarnr!   ÚUserWarningr   )rG   ÚdatarB   ÚMÚrestÚOÚPÚTrE   rF   rC   s              rH   Úread_headerzVarReader4.read_headerq   sV  € å˜$œ/¨4¬;°xÔ+@ÑAÔAˆØŒ×#Ò#¥C¨¨X¬Ñ$7Ô$7Ñ8Ô8×>Ò>¸wÑGÔGˆØ�Œ<˜!ÒÐ˜t Fœ|¨dÒ2Ð2ÝÐMÑNÔNÐNÝ˜˜fœ tÑ,Ô,‰ˆˆ4Ø�Fˆ?ˆ?ÝŒMð 0Ý2=¸a´.ñAå%°!ð5ñ 5ô 5ð 5õ ˜˜sÑ#Ô#‰ˆˆ4Ø�Š6ˆ6ÝÐKÑLÔLÐLÝ˜˜rÑ"Ô"‰ˆˆ4ØˆØ�W”˜t Gœ}Ð-ˆØ˜'”] aÒ'ˆ
Ø”˜A”ˆÝØØØØØñô ð 	rJ   Tc                 ó\  — |j         }|t          k    r|                      |¦  «        }nk|t          k    r.|                      |¦  «        }|r| j        rt          |¦  «        }n2|t          k    r|                      |¦  «        S t          d|z  ¦  «        ‚|r| j
        rt          |¦  «        S |S )NúNo reader for class code %s)rD   r   Úread_full_arrayr   Úread_char_arrayrV   r   r   Úread_sparse_arrayÚ	TypeErrorrW   r   )rG   ÚhdrÚprocessrD   Úarrs        rH   Úarray_from_headerzVarReader4.array_from_header‹   s¾   € Ø”ˆØ•\Ò!Ð!Ø×&Ò& sÑ+Ô+ˆCˆCØ•|Ò#Ð#Ø×&Ò& sÑ+Ô+ˆCØð ,˜4Ô0ð ,Ý& sÑ+Ô+�øØ•~Ò%Ð%à×)Ò)¨#Ñ.Ô.Ð.åÐ9¸FÑBÑCÔCÐCØð 	(�t”ð 	(Ý" 3Ñ'Ô'Ð'Øˆ
rJ   c                 óB  — |j         }|j        }|j        }|D ]}||z  }Œ| j                             t          |¦  «        ¦  «        }t          |¦  «        |k    rt          d|j        z  ¦  «        ‚t          j
        |||d¬¦  «        }|r|                     ¦   «         }|S )aì   Mat4 read using header `hdr` dtype and dims

        Parameters
        ----------
        hdr : object
           object with attributes ``dtype``, ``dims``. dtype is assumed to be
           the correct endianness
        copy : bool, optional
           copies array before return if True (default True)
           (buffer is usually read only)

        Returns
        -------
        arr : ndarray
            of dtype given by `hdr` ``dtype`` and shape given by `hdr` ``dims``
        z¯Not enough bytes to read matrix '%s'; is this a badly-formed file? Consider listing matrices with `whosmat` and loading named matrices with `variable_names` kwarg to `loadmat`ÚF)ÚshaperC   ÚbufferÚorder)rC   rE   ÚitemsizerT   r_   r`   Úlenrb   rB   ÚnpÚndarrayÚcopy)	rG   rt   r�   ÚdtrE   Ú	num_bytesÚdr{   rv   s	            rH   Úread_sub_arrayzVarReader4.read_sub_arrayœ   sÈ   € ð" ŒYˆØŒxˆØ”Kˆ	Øð 	ð 	ˆAØ˜‰NˆIˆIØ”×%Ò%¥c¨)¡n¤nÑ5Ô5ˆÝˆv‰;Œ;˜)Ò#Ð#Ýð Cð FIÄXñNñ Oô Oð Oõ Œj˜tØ!Ø &Ø"ð$ñ $ô $ˆð ð 	Ø—(’(‘*”*ˆCØˆ
rJ   c                 ó¦   — |j         r6|                      |d¬¦  «        }|                      |d¬¦  «        }||dz  z   S |                      |¦  «        S )aM   Full (rather than sparse) matrix getter

        Read matrix (array) can be real or complex

        Parameters
        ----------
        hdr : ``VarHeader4`` instance

        Returns
        -------
        arr : ndarray
            complex array if ``hdr.is_complex`` is True, otherwise a real
            numeric array
        F)r�   y              ð?)rF   r…   )rG   rt   ÚresÚres_js       rH   rp   zVarReader4.read_full_arrayÀ   sa   € ð Œ>ð 	&à×%Ò% c°Ð%Ñ6Ô6ˆCØ×'Ò'¨°%Ð'Ñ8Ô8ˆEØ˜% "™*Ñ%Ð%Ø×"Ò" 3Ñ'Ô'Ð'rJ   c                 óX  — |                       |¦  «                             t          j        ¦  «        }|                     ¦   «                              d¦  «        }t          j        |j        t          j        d¦  «        t          j	        |¦  «        ¬¦  «         
                    ¦   «         S )zñ latin-1 text matrix (char matrix) reader

        Parameters
        ----------
        hdr : ``VarHeader4`` instance

        Returns
        -------
        arr : ndarray
            with dtype 'U1', shape given by `hdr` ``dims``
        úlatin-1r3   ©rz   rC   r{   )r…   Úastyper   Úuint8ÚtobytesÚdecoder€   rE   rC   Úarrayr�   )rG   rt   rv   ÚSs       rH   rq   zVarReader4.read_char_arrayÖ   s~   € ð ×!Ò! #Ñ&Ô&×-Ò-­b¬hÑ7Ô7ˆØ�KŠK‰MŒM× Ò  Ñ+Ô+ˆÝŒz ¤Ý "¤¨¡¤Ý!#¤¨!¡¤ð.ñ .ô .ç.2ªd©f¬fð	5rJ   c                 ó>  — |                       |¦  «        }|dd…dd…f         }t          |d         ¦  «        t          |d         ¦  «        f}t          j        |dd…df         d¬¦  «        }t          j        |dd…df         d¬¦  «        }|dz  }|dz  }|j        d         d	k    r!t          j        |dd…d
f         d¬¦  «        }n1t          j        |dd…d
f         d¬¦  «        }|dd…d	f         |_        t          j                             |||ff|¦  «        S )a¿   Read and return sparse matrix type

        Parameters
        ----------
        hdr : ``VarHeader4`` instance

        Returns
        -------
        arr : ``scipy.sparse.coo_matrix``
            with dtype ``float`` and shape read from the sparse matrix data

        Notes
        -----
        MATLAB 4 real sparse arrays are saved in a N+1 by 3 array format, where
        N is the number of non-zero values. Column 1 values [0:N] are the
        (1-based) row indices of the each non-zero value, column 2 [0:N] are the
        column indices, column 3 [0:N] are the (real) values. The last values
        [-1,0:2] of the rows, column indices are shape[0] and shape[1]
        respectively of the output matrix. The last value for the values column
        is a padding 0. mrows and ncols values from the header give the shape of
        the stored matrix, here [N+1, 3]. Complex data are saved as a 4 column
        matrix, where the fourth column contains the imaginary component; the
        last value is again 0. Complex sparse data do *not* have the header
        ``imagf`` field set to True; the fact that the data are complex is only
        detectable because there are 4 storage columns.
        Néÿÿÿÿ)r“   r   )r“   r   r   Úintc©rC   r   r$   r#   ÚfloatÚcomplex)	r…   r`   r   Úascontiguousarrayrz   ÚimagÚscipyr>   Ú
coo_matrix)rG   rt   r‡   ÚtmprE   ÚIÚJÚVs           rH   rr   zVarReader4.read_sparse_arrayè   s&  € ð6 ×!Ò! #Ñ&Ô&ˆØ�#�2�#�a�a�a�%Œjˆå�C˜”I‘”¥ C¨¤I¡¤Ð/ˆÝÔ   Q Q Q q S¤°Ð7Ñ7Ô7ˆÝÔ   Q Q Q q S¤°Ð7Ñ7Ô7ˆØ	ˆQ‰ˆØ	ˆQ‰ˆØŒ9�QŒ<˜1ÒÐÝÔ$ S¨¨¨¨1¨¤X°GÐ<Ñ<Ô<ˆAˆAåÔ$ S¨¨¨¨1¨¤X°IÐ>Ñ>Ô>ˆAØ˜˜˜˜1˜”XˆAŒFÝŒ|×&Ò&¨¨1¨Q¨% y°$Ñ7Ô7Ð7rJ   c                 ó¶  — |j         }|t          k    r)t          t          t          |j        ¦  «        ¦  «        }�n}|t          k    r:t          t          t          |j        ¦  «        ¦  «        }| j        r
|dd…         }�n8|t          k    �r|j	        }|j        }t          |¦  «        dk    r|d         dk    r|d         dk    sdS | j                             |j        |d         dz
  z  d¦  «         t          j        d|| j                             |j        ¦  «        ¬¦  «        }| j                             |j        |d         dz
  z  d¦  «         t          j        d|| j                             |j        ¦  «        ¬¦  «        }t	          |¦  «        t	          |¦  «        f}nt#          d|z  ¦  «        ‚| j        rt          d	„ |D ¦   «         ¦  «        }|S )
zwRead the shape of the array described by the header.
        The file position after this call is unspecified.
        Nr“   r#   r   r   rP   r‹   ro   c                 ó   — g | ]
}|d k    ¯|‘ŒS )r   rP   )Ú.0Úxs     rH   ú
<listcomp>z0VarReader4.shape_from_header.<locals>.<listcomp>1  s   € Ð6Ð6Ð6 ¨q°Aªv¨v˜1¨v¨v¨vrJ   )rD   r   ÚtupleÚmapr`   rE   r   rV   r   rC   r~   rT   Úseekr}   r   r€   r_   rs   rW   )rG   rt   rD   rz   r‚   rE   ÚrowsÚcolss           rH   Úshape_from_headerzVarReader4.shape_from_header  sÀ  € ð ”ˆØ•\Ò!Ð!Ý�#�c 3¤8Ñ,Ô,Ñ-Ô-ˆE‰EØ•|Ò#Ð#Ý�#�c 3¤8Ñ,Ô,Ñ-Ô-ˆEØÔ$ð #Ø˜c˜r˜cœ
�ùØ•~Ò%Ñ%Ø”ˆBØ”8ˆDå˜‘I”I ’N�N t¨A¤w°!¢| |¸¸Q¼À1º¸Ø�rð ŒO× Ò  ¤°°Q´¸!±Ñ!<¸aÑ@Ô@Ð@Ý”: B¨bØ%)¤_×%9Ò%9¸"¼+Ñ%FÔ%FðHñ Hô HˆDàŒO× Ò  ¤°°Q´¸!±Ñ!<¸aÑ@Ô@Ð@Ý”: B¨bØ%)¤_×%9Ò%9¸"¼+Ñ%FÔ%FðHñ Hô HˆDõ ˜‘Y”Y¥ D¡	¤	Ð*ˆEˆEåÐ9¸FÑBÑCÔCÐCàŒ?ð 	8ÝÐ6Ð6 eÐ6Ñ6Ô6Ñ7Ô7ˆEØˆrJ   N©T)rK   rL   rM   Ú__doc__rI   rm   rw   r…   rp   rq   rr   rª   rP   rJ   rH   r   r   g   sž   € € € € € Ø,Ð,ð1ð 1ð 1ðð ð ð4ð ð ð ð""ð "ð "ð "ðH(ð (ð (ð,5ð 5ð 5ð$(8ð (8ð (8ðT ð  ð  ð  ð  rJ   r   c                   óZ   ‡ — e Zd ZdZeˆ fd„¦   «         Zd„ Zd„ Zd„ Zdd„Z	dd	„Z
d
„ Zˆ xZS )r   z Reader for Mat4 files c                 óP   •—  t          ¦   «         j        |g|¢R i |¤Ž d| _        dS )zR Initialize matlab 4 file reader

    %(matstream_arg)s
    %(load_args)s
        N)ÚsuperrI   Ú_matrix_reader)rG   rT   ÚargsÚkwargsÚ	__class__s       €rH   rI   zMatFile4Reader.__init__7  s:   ø€ ð 	�‰ŒÔ˜Ð5 dÐ5Ð5Ð5¨fÐ5Ð5Ð5Ø"ˆÔÐÐrJ   c                 ó  — | j                              d¦  «         t          | j         t          j        d¦  «        ¦  «        }| j                              d¦  «         |dk    rdS |dk     s|dk    rt
          rdpdS t
          rdpdS )Nr   r)   r9   rZ   r:   )rT   r§   r   r   rC   r   )rG   r.   s     rH   Úguess_byte_orderzMatFile4Reader.guess_byte_orderA  s†   € ØŒ×Ò˜QÑÔÐÝ˜$œ/­2¬8°D©>¬>Ñ:Ô:ˆØŒ×Ò˜QÑÔÐØ�1Š9ˆ9Ø�3Ø�!Š8ˆ8�t˜d’{�{å$Ð,¨Ð3°Ð3å Ð( SÐ/¨CÐ/rJ   c                 ól   — t          t          | j        ¦  «        | _        t	          | ¦  «        | _        dS )za Run when beginning read of variables

        Sets up readers from parameters in `self`
        N)r   r   Ú
byte_orderrU   r   r°   )rG   s    rH   Úinitialize_readzMatFile4Reader.initialize_readM  s.   € õ
 %Õ%5°t´ÑGÔGˆŒÝ(¨Ñ.Ô.ˆÔÐÐrJ   c                 óø   — | j                              ¦   «         }t          d„ |j        d¦  «        }|j        j        |z  }|j        r|j        t          k    s|dz  }| j	         
                    ¦   «         |z   }||fS )ab   Read and return header, next position

        Parameters
        ----------
        None

        Returns
        -------
        header : object
           object that can be passed to self.read_var_array, and that
           has attributes ``name`` and ``is_global``
        next_position : int
           position in stream of next variable
        c                 ó   — | |z  S rA   rP   )r£   Úys     rH   ú<lambda>z0MatFile4Reader.read_var_header.<locals>.<lambda>e  s
   €   !¡€ rJ   r   r#   )r°   rm   r   rE   rC   r}   rF   rD   r   rT   Útell)rG   rt   ÚnÚremaining_bytesÚnext_positions        rH   Úread_var_headerzMatFile4Reader.read_var_headerU  s�   € ð Ô!×-Ò-Ñ/Ô/ˆÝÐ#Ð# S¤X¨qÑ1Ô1ˆØœ)Ô,¨qÑ0ˆØŒ>ð 	! #¤*µÒ">Ð">Ø˜qÑ ˆOØœ×,Ò,Ñ.Ô.°Ñ@ˆØ�MÐ!Ð!rJ   Tc                 ó8   — | j                              ||¦  «        S )a¥   Read array, given `header`

        Parameters
        ----------
        header : header object
           object with fields defining variable header
        process : {True, False}, optional
           If True, apply recursive post-processing during loading of array.

        Returns
        -------
        arr : array
           array with post-processing applied or not according to
           `process`.
        )r°   rw   )rG   r-   ru   s      rH   Úread_var_arrayzMatFile4Reader.read_var_arrayl  s   € ð  Ô"×4Ò4°V¸WÑEÔEÐErJ   Nc                 óz  — t          |t          ¦  «        r|g}n|�t          |¦  «        }| j                             d¦  «         |                      ¦   «          i }|                      ¦   «         sÌ|                      ¦   «         \  }}|j        €dn|j         	                    d¦  «        }|�||vr| j                             |¦  «         Œo|  
                    |¦  «        ||<   | j                             |¦  «         |�)|                     |¦  «         t          |¦  «        dk    rn|                      ¦   «         ¯Ì|S )a,   get variables from stream as dictionary

        Parameters
        ----------
        variable_names : None or str or sequence of str, optional
            variable name, or sequence of variable names to get from Mat file /
            file stream. If None, then get all variables in file.
        Nr   ÚNoneÚlatin1)Ú
isinstanceÚstrÚlistrT   r§   r¸   Úend_of_streamrÁ   rB   r�   rÃ   Úremover~   )rG   Úvariable_namesÚmdictrt   rÀ   rB   s         rH   Úget_variableszMatFile4Reader.get_variables~  sK  € õ �n¥cÑ*Ô*ð 	2Ø,Ð-ˆNˆNØÐ'Ý! .Ñ1Ô1ˆNØŒ×Ò˜QÑÔÐà×ÒÑÔÐØˆØ×$Ò$Ñ&Ô&ð 	Ø!%×!5Ò!5Ñ!7Ô!7ÑˆC�Ø œXÐ-�6�6°3´8·?²?À8Ñ3LÔ3LˆDØÐ)¨d¸.Ð.HÐ.HØ”×$Ò$ ]Ñ3Ô3Ð3ØØ×-Ò-¨cÑ2Ô2ˆE�$‰KØŒO× Ò  Ñ/Ô/Ð/ØÐ)Ø×%Ò% dÑ+Ô+Ð+Ý�~Ñ&Ô&¨!Ò+Ð+Øð ×$Ò$Ñ&Ô&ð 	ð ˆrJ   c                 ó  — | j                              d¦  «         |                      ¦   «          g }|                      ¦   «         sº|                      ¦   «         \  }}|j        €dn|j                             d¦  «        }| j                             |¦  «        }t           
                    |j        d¦  «        }|                     |||f¦  «         | j                              |¦  «         |                      ¦   «         ¯º|S )z list variables from stream r   NrÅ   rÆ   Úunknown)rT   r§   r¸   rÊ   rÁ   rB   r�   r°   rª   r   ÚgetrD   Úappend)rG   Úvarsrt   rÀ   rB   rz   Úinfos          rH   Úlist_variableszMatFile4Reader.list_variables�  sî   € àŒ×Ò˜QÑÔÐà×ÒÑÔÐØˆØ×$Ò$Ñ&Ô&ð 	0Ø!%×!5Ò!5Ñ!7Ô!7ÑˆC�Ø œXÐ-�6�6°3´8·?²?À8Ñ3LÔ3LˆDØÔ'×9Ò9¸#Ñ>Ô>ˆEÝ—?’? 3¤:¨yÑ9Ô9ˆDØ�KŠK˜˜u dÐ+Ñ,Ô,Ð,àŒO× Ò  Ñ/Ô/Ð/ð ×$Ò$Ñ&Ô&ð 	0ð ˆrJ   r«   rA   )rK   rL   rM   r¬   r   rI   rµ   r¸   rÁ   rÃ   rÎ   rÕ   Ú__classcell__)r³   s   @rH   r   r   5  s°   ø€ € € € € Ø!Ð!Øð#ð #ð #ð #ñ „Yð#ð
0ð 
0ð 
0ð/ð /ð /ð"ð "ð "ð.Fð Fð Fð Fð$ð ð ð ð>ð ð ð ð ð ð rJ   r   Úrowc                 ó�   — t          | |¦  «        }t          |¦  «        dk    rt          d¦  «        ‚|                      |¦  «        S )aŒ   Make ``arr`` exactly two dimensional

    If `arr` has more than 2 dimensions, raise a ValueError

    Parameters
    ----------
    arr : array
    oned_as : {'row', 'column'}, optional
       Whether to reshape 1-D vectors as row vectors or column vectors.
       See documentation for ``matdims`` for more detail

    Returns
    -------
    arr2d : array
       2-D version of the array
    r#   z=Matlab 4 files cannot save arrays with more than 2 dimensions)r   r~   rb   Úreshape)rv   Úoned_asrE   s      rH   r   r   ®  sK   € õ" �3˜Ñ Ô €DÝ
ˆ4�y„y�1‚}€}Ýð (ñ )ô )ð 	)à�;Š;�tÑÔÐrJ   c                   óF   — e Zd Zd„ Zd„ Zd„ Zeedfd„Zd„ Z	d„ Z
d„ Zd	„ Zd
S )r   c                 ó6   — |j         | _         |j        | _        d S rA   )Úfile_streamrÚ   )rG   Úfile_writers     rH   rI   zVarWriter4.__init__Ç  s   € Ø&Ô2ˆÔØ"Ô*ˆŒˆˆrJ   c                 ób   — | j                              |                     d¬¦  «        ¦  «         d S )Nry   )r|   )rÝ   ÚwriterŽ   )rG   rv   s     rH   Úwrite_byteszVarWriter4.write_bytesË  s-   € ØÔ×Ò˜sŸ{š{°˜{Ñ5Ô5Ñ6Ô6Ð6Ð6Ð6rJ   c                 ó:   — | j                              |¦  «         d S rA   )rÝ   rà   )rG   Úss     rH   Úwrite_stringzVarWriter4.write_stringÎ  s   € ØÔ×Ò˜qÑ!Ô!Ð!Ð!Ð!rJ   r   c                 ól  — t          j        dt          d         ¦  «        }t           }d}|dz  |dz  z   |dz  z   |z   |d<   |d         |d<   |d	         |d
<   ||d<   t	          |¦  «        d	z   |d<   |                      |¦  «         |dz   }	|                      |	                     d¦  «        ¦  «         dS )a)   Write header for given data options

        Parameters
        ----------
        name : str
            name of variable
        shape : sequence
            Shape of array as it will be read in matlab
        P : int, optional
            code for mat4 data type, one of ``miDOUBLE, miSINGLE, miINT32,
            miINT16, miUINT16, miUINT8``
        T : int, optional
            code for mat4 matrix class, one of ``mxFULL_CLASS, mxCHAR_CLASS,
            mxSPARSE_CLASS``
        imagf : int, optional
            flag indicating complex
        rP   r-   r   r[   r]   r^   r.   r/   r   r0   r1   r2   ú rÆ   N)r   Úemptyr   r   r~   rá   rä   Úencode)
rG   rB   rz   rk   rl   r1   r-   rh   rj   rg   s
             rH   Úwrite_headerzVarWriter4.write_headerÑ  sÓ   € õ$ ”˜"Õ.¨xÔ8Ñ9Ô9ˆÝ!Ð!ˆØˆØ˜d™(Ø˜c™'ñ"à˜b™&ñ!ð ñˆˆv‰ð   œ(ˆˆw‰Ø œ(ˆˆw‰Øˆˆw‰Ý˜t™9œ9 q™=ˆˆxÑØ×Ò˜Ñ Ô Ð Ø�d‰{ˆØ×Ò˜$Ÿ+š+ hÑ/Ô/Ñ0Ô0Ð0Ð0Ð0rJ   c                 ó  — t           j                             |¦  «        r|                      ||¦  «         dS t	          j        |¦  «        }|j        }|j        s(|                     | 	                    d¦  «        ¦  «        }|j
        }|t          j        u rt          d¦  «        ‚|t          j        u rt          d¦  «        ‚|t          j        t          j        fv r|                      ||¦  «         dS |                      ||¦  «         dS )z¿ Write matrix `arr`, with name `name`

        Parameters
        ----------
        arr : array_like
           array to write
        name : str
           name in matlab workspace
        Nú=z!Cannot save object arrays in Mat4zCannot save void type arrays)rš   r>   ÚissparseÚwrite_sparser   ÚasarrayrC   ÚisnativerŒ   ÚnewbyteorderÚtypeÚobject_rs   ÚvoidÚstr_Úbytes_Ú
write_charÚwrite_numeric)rG   rv   rB   r‚   Údtts        rH   rà   zVarWriter4.writeò  sø   € õ Œ<× Ò  Ñ%Ô%ð 	Ø×Ò˜c 4Ñ(Ô(Ð(ØˆFÝŒj˜‰oŒoˆØŒYˆØŒ{ð 	3Ø—*’*˜RŸ_š_¨SÑ1Ô1Ñ2Ô2ˆCØŒgˆØ•"”*ÐÐÝÐ?Ñ@Ô@Ð@Ø•B”Gˆ^ˆ^ÝÐ:Ñ;Ô;Ð;Ø•R”W�bœiÐ(Ð(Ð(Ø�OŠO˜C Ñ&Ô&Ð&ØˆFØ×Ò˜3 Ñ%Ô%Ð%Ð%Ð%rJ   c                 óü  — t          || j        ¦  «        }|j        j        dk    }	 t          |j        j        dd …                  }nD# t          $ r7 |r|                     d¦  «        }n|                     d¦  «        }t          }Y nw xY w|  	                    ||j
        |t          |¬¦  «         |r6|                      |j        ¦  «         |                      |j        ¦  «         d S |                      |¦  «         d S )NÚcr   Úc128r'   )rk   rl   r1   )r   rÚ   rC   Úkindr    rÈ   ÚKeyErrorrŒ   r   ré   rz   r   rá   Úrealr™   )rG   rv   rB   r1   rk   s        rH   r÷   zVarWriter4.write_numeric  s  € Ý˜˜Tœ\Ñ*Ô*ˆØ”	” #Ò%ˆð	Ý˜SœYœ]¨1¨2¨2Ô.Ô/ˆAˆAøÝð 	ð 	ð 	Øð 'Ø—j’j Ñ(Ô(��à—j’j Ñ&Ô&�ÝˆAˆAˆAð	øøøð 	×Ò˜$Øœ)ØÝ(Ø %ð	 	ñ 	'ô 	'ð 	'ð
 ð 	"Ø×Ò˜SœXÑ&Ô&Ð&Ø×Ò˜SœXÑ&Ô&Ð&Ð&Ð&à×Ò˜SÑ!Ô!Ð!Ð!Ð!s   §A Á>BÂBc                 ó\  — |j         j        t          j        k    r6|j         j        t          j         d¦  «        j        k    rt          |¦  «        }t          || j        ¦  «        }|j        }|  	                    ||t          t          ¬¦  «         |j         j        dk    rwt          j        |¦  «        }t          j        dt!          ||¦  «        |¬¦  «        }|                     ¦   «                              d¦  «        }t          j        |d|¬¦  «        }|                      |¦  «         d S )Nr3   ©rk   rl   ÚUrP   r‹   rŠ   r8   )rC   rñ   r   rô   r}   r	   r   rÚ   rz   ré   r   r   rü   ÚmathÚprodr€   r
   Úitemrè   rá   )rG   rv   rB   rE   Ún_charsÚst_arrÚsts          rH   rö   zVarWriter4.write_char%  s  € ØŒ9Œ>�RœWÒ$Ð$¨¬Ô);½r¼xÈ¹~¼~Ô?VÒ)VÐ)VÝ˜sÑ#Ô#ˆCÝ˜˜Tœ\Ñ*Ô*ˆØŒyˆØ×ÒØØÝÝð	 	ñ 	ô 	ð 	ð
 Œ9Œ>˜SÒ Ð å”i ‘o”oˆGÝ”Z bÝ&6°s¸GÑ&DÔ&DØ'*ð,ñ ,ô ,ˆFð —’‘”×%Ò% iÑ0Ô0ˆBÝ”* 4¨t¸BÐ?Ñ?Ô?ˆCØ×Ò˜ÑÔÐÐÐrJ   c                 óü  — |                      ¦   «         }|j        j        dk    }t          j        |j        dz   d|z   fd¬¦  «        }|j        |dd…df<   |j        |dd…df<   |dd…dd	…fxx         dz  cc<   |r'|j        j	        |dd…d	f<   |j        j
        |dd…df<   n|j        |dd…d	f<   |j        |ddd	…f<   |                      ||j        t          t          ¬
¦  «         |                      |¦  «         dS )zY Sparse matrices are 2-D

        See docstring for VarReader4.read_sparse_array
        rú   r   r$   r'   r•   Nr“   r   r#   r   )ÚtocoorC   rü   r   ÚzerosÚnnzr×   Úcolrg   rþ   r™   rz   ré   r   r   rá   )rG   rv   rB   ÚAr1   Úijvs         rH   rí   zVarWriter4.write_sparse9  s+  € ð
 �IŠI‰KŒKˆØ”” Ò#ˆÝŒh˜œ ™	 1 U¡7Ð+°4Ð8Ñ8Ô8ˆØ”UˆˆCˆRˆC�ˆE‰
Ø”UˆˆCˆRˆC�ˆE‰
ØˆCˆRˆC��!�ˆGˆˆŒ˜Ñˆˆ‰Øð 	 ØœœˆC����A�‰JØœœˆC����A�‰JˆJàœˆC����A�‰JØ”gˆˆBˆq�ˆsˆF‰Ø×ÒØØŒIÝÝð	 	ñ 	ô 	ð 	ð
 	×Ò˜ÑÔÐÐÐrJ   N)rK   rL   rM   rI   rá   rä   r   r   ré   rà   r÷   rö   rí   rP   rJ   rH   r   r   Æ  s›   € € € € € ð+ð +ð +ð7ð 7ð 7ð"ð "ð "ð +3°lÈ!ð 1ð 1ð 1ð 1ðB&ð &ð &ð:"ð "ð "ð,ð ð ð(ð ð ð ð rJ   r   c                   ó"   — e Zd ZdZdd„Zdd„ZdS )r   z) Class for writing matlab 4 format files Nc                 ó8   — || _         |€d}|| _        d | _        d S )Nr×   )rÝ   rÚ   Ú_matrix_writer)rG   rÝ   rÚ   s      rH   rI   zMatFile4Writer.__init__T  s)   € Ø&ˆÔØˆ?ØˆGØˆŒØ"ˆÔÐÐrJ   c                 ó˜   — t          | ¦  «        | _        |                     ¦   «         D ] \  }}| j                             ||¦  «         Œ!dS )aç   Write variables in `mdict` to stream

        Parameters
        ----------
        mdict : mapping
           mapping with method ``items`` return name, contents pairs
           where ``name`` which will appeak in the matlab workspace in
           file load, and ``contents`` is something writeable to a
           matlab file, such as a NumPy array.
        write_header : {None, True, False}
           If True, then write the matlab file header before writing the
           variables. If None (the default) then write the file header
           if we are at position 0 in the stream. By setting False
           here, and setting the stream position to the end of the file,
           you can append variables to a matlab file
        N)r   r  Úitemsrà   )rG   rÍ   ré   rB   Úvars        rH   Úput_variableszMatFile4Writer.put_variables[  sU   € õ( )¨Ñ.Ô.ˆÔØŸš™œð 	1ð 	1‰IˆD�#ØÔ×%Ò% c¨4Ñ0Ô0Ð0Ð0ð	1ð 	1rJ   rA   )rK   rL   rM   r¬   rI   r  rP   rJ   rH   r   r   R  sB   € € € € € Ø3Ð3ð#ð #ð #ð #ð1ð 1ð 1ð 1ð 1ð 1rJ   r   )r×   )+r¬   Úsysrd   r  Únumpyr   Úscipy.sparserš   Ú_miobaser   r   r   r   r   r	   r
   Ú
_mio_utilsr   r   Ú	functoolsr   Ú__all__Ú	byteorderr   r   r   r   r   r   r   r   r    r   r   r   r!   r   r   r   r   r   r   r   rP   rJ   rH   ú<module>r     sÑ  ððð à 
€
€
€
Ø €€€Ø €€€à Ð Ð Ð à Ð Ð Ð ðFð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð :Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø Ð Ð Ð Ð Ð ðð ð €ð ”M XÒ-Ð à€Ø€Ø
€Ø
€Ø€Ø
€ð ˆdØˆdØˆTØˆTØˆdØˆTØð !ð !ð !ð
 	ˆ$ðÐ ð  ØØØØ
Ø
Ø
Ø
Ø
Ø
Ø
ðð €ð €Ø€Ø€ð Ø
ØØØðð €ð �(Ø�&Ø�Hð€ð%ð %ð %ð %ð %ñ %ô %ð %ð$Kð Kð Kð Kð Kñ Kô Kð Kð\vð vð vð vð v�]ñ vô vð vðrð ð ð ð0Ið Ið Ið Ið Iñ Iô Ið IðX1ð 1ð 1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1rJ   