§
    fŠtjR  ã                   óä  — d Z ddlZddlZddlZddlm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& ej'        ej(        ¦  «        j)        Z* G d!„ d"¦  «        Z+ G d#„ d$¦  «        Z, G d%„ d&e¦  «        Z-d-d(„Z. G d)„ d*¦  «        Z/ G d+„ d,¦  «        Z0dS ).z1 Classes for read / write of matlab (TM) 4 files
é    N)Úmulé   )Ú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)ÚselfrC   rD   rE   rF   rG   s         úS/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/io/matlab/_mio4.pyÚ__init__zVarHeader4.__init__^   s+   € ð ˆŒ	ØˆŒ
ØˆŒØˆŒ	Ø$ˆŒˆˆó    N)Ú__name__Ú
__module__Ú__qualname__Ú
is_logicalÚ	is_globalrJ   © rK   rI   r   r   Y   s-   € € € € € à€JØ€Ið
%ð 
%ð 
%ð 
%ð 
%rK   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 rB   )Úfile_readerÚ
mat_streamÚdtypesÚchars_as_stringsÚ
squeeze_me)rH   rT   s     rI   rJ   zVarReader4.__init__n   s7   € Ø&ˆÔØ%Ô0ˆŒØ!Ô(ˆŒØ +Ô <ˆÔØ%Ô0ˆŒˆˆrK   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          |         › d�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.   r3   ó    r/   r   éˆ  z.Mat 4 mopt wrong format, byteswapping problem?éè  )r   r   z!We do not support byte ordering 'z'; returned data may be corruptr%   )Ú
stackleveléd   z,O in MOPT integer should be 0, wrong format?é
   r0   r1   r2   r   )r   rU   rV   ÚreadÚintÚstripÚ
ValueErrorÚdivmodÚwarningsÚwarnr"   ÚUserWarningr   )rH   ÚdatarC   ÚMÚrestÚOÚPÚTrF   rG   rD   s              rI   Úread_headerzVarReader4.read_headeru   s^  € å˜$œ/¨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ð :½kÈ!¼nð :ð :ð :å%°!ð5ñ 5ô 5ð 5õ ˜˜sÑ#Ô#‰ˆˆ4Ø�Š6ˆ6ÝÐKÑLÔLÐLÝ˜˜rÑ"Ô"‰ˆˆ4ØˆØ�W”˜t Gœ}Ð-ˆØ˜'”] aÒ'ˆ
Ø”˜A”ˆÝØØØØØñô ð 	rK   Tc                 ó\  — |j         }|t          k    r|                      |¦  «        }nk|t          k    r.|                      |¦  «        }|r| j        rt          |¦  «        }n2|t          k    r|                      |¦  «        S t          d|› �¦  «        ‚|r| j
        rt          |¦  «        S |S )NúNo reader for class code )rE   r   Úread_full_arrayr   Úread_char_arrayrW   r   r    Úread_sparse_arrayÚ	TypeErrorrX   r   )rH   ÚhdrÚprocessrE   Úarrs        rI   Úarray_from_headerzVarReader4.array_from_header�   sÁ   € Ø”ˆØ•\Ò!Ð!Ø×&Ò& sÑ+Ô+ˆCˆCØ•|Ò#Ð#Ø×&Ò& sÑ+Ô+ˆCØð ,˜4Ô0ð ,Ý& sÑ+Ô+�øØ•~Ò%Ð%à×)Ò)¨#Ñ.Ô.Ð.åÐ@¸Ð@Ð@ÑAÔAÐAØð 	(�t”ð 	(Ý" 3Ñ'Ô'Ð'Øˆ
rK   c                 óú  — |j         }t          t          |j        t	          j        |j        ¦  «        ¦  «        }|t          k    r+t          d|j	         
                    d¦  «        › d�¦  «        ‚| j                             |¦  «        }t          |¦  «        |k    r+t          d|j	         
                    d¦  «        › d�¦  «        ‚t	          j        |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
Variable 'Úlatin1zL' has byte length longer than largest possible NumPy array on this platform.z!Not enough bytes to read matrix 'zŒ'; is this a badly-formed file? Consider listing matrices with `whosmat` and loading named matrices with `variable_names` kwarg to `loadmat`ÚF)ÚshaperD   ÚbufferÚorder)rD   r   r   rF   ÚnpÚint64ÚitemsizeÚ	_MAX_INTPrc   rC   ÚdecoderU   r`   ÚlenÚndarrayÚcopy)rH   ru   r†   ÚdtÚ	num_bytesr}   rw   s          rI   Úread_sub_arrayzVarReader4.read_sub_array    s  € ð" ŒYˆå�3 ¤­"¬(°2´;Ñ*?Ô*?Ñ@Ô@ˆ	Ø•yÒ Ð ÝðN˜SœXŸ_š_¨XÑ6Ô6ð Nð Nð NñOô Oð Oð ”×%Ò% iÑ0Ô0ˆÝˆv‰;Œ;˜)Ò#Ð#ÝðEØ”H—O’O HÑ-Ô-ðEð Eð EñFô Fð Fõ
 Œj˜sœxØ!Ø &Ø"ð$ñ $ô $ˆð ð 	Ø—(’(‘*”*ˆCØˆ
rK   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              ð?)rG   r‰   )rH   ru   ÚresÚres_js       rI   rq   zVarReader4.read_full_arrayÇ   sa   € ð Œ>ð 	&à×%Ò% c°Ð%Ñ6Ô6ˆCØ×'Ò'¨°%Ð'Ñ8Ô8ˆEØ˜% "™*Ñ%Ð%Ø×"Ò" 3Ñ'Ô'Ð'rK   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-1r4   ©r|   rD   r}   )r‰   Úastyper   Úuint8Útobytesrƒ   r…   rF   rD   Úarrayr†   )rH   ru   rw   ÚSs       rI   rr   zVarReader4.read_char_arrayÝ   s~   € ð ×!Ò! #Ñ&Ô&×-Ò-­b¬hÑ7Ô7ˆØ�KŠK‰MŒM× Ò  Ñ+Ô+ˆÝŒz ¤Ý "¤¨¡¤Ý!#¤¨!¡¤ð.ñ .ô .ç.2ªd©f¬fð	5rK   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 : coo_array
            with dtype ``float`` and shape read from the sparse array 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©rD   r   r%   r$   ÚfloatÚcomplex)	r‰   ra   r   Úascontiguousarrayr|   ÚimagÚscipyr?   Ú	coo_array)rH   ru   r‹   ÚtmprF   ÚIÚJÚVs           rI   rs   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ÝŒ|×%Ò% q¨!¨A¨ i°Ñ6Ô6Ð6rK   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|› �¦  «        ‚| 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   rQ   r�   rp   c                 ó   — g | ]
}|d k    ¯|‘ŒS )r   rQ   )Ú.0Úxs     rI   ú
<listcomp>z0VarReader4.shape_from_header.<locals>.<listcomp>8  s   € Ð6Ð6Ð6 ¨q°Aªv¨v˜1¨v¨v¨vrK   )rE   r   ÚtupleÚmapra   rF   r   rW   r    rD   r„   rU   Úseekr�   r   r…   r`   rt   rX   )rH   ru   rE   r|   r‡   rF   ÚrowsÚcolss           rI   Ú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åÐ@¸Ð@Ð@ÑAÔAÐAàŒ?ð 	8ÝÐ6Ð6 eÐ6Ñ6Ô6Ñ7Ô7ˆEØˆrK   N©T)rL   rM   rN   Ú__doc__rJ   rn   rx   r‰   rq   rr   rs   r­   rQ   rK   rI   r   r   k   sž   € € € € € Ø,Ð,ð1ð 1ð 1ðð ð ð4ð ð ð ð"%ð %ð %ð %ðN(ð (ð (ð,5ð 5ð 5ð$(7ð (7ð (7ðT ð  ð  ð  ð  rK   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)ÚsuperrJ   Ú_matrix_reader)rH   rU   ÚargsÚkwargsÚ	__class__s       €rI   rJ   zMatFile4Reader.__init__>  s:   ø€ ð 	�‰ŒÔ˜Ð5 dÐ5Ð5Ð5¨fÐ5Ð5Ð5Ø"ˆÔÐÐrK   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*   r:   r[   r;   )rU   rª   r   r   rD   r   )rH   r/   s     rI   Úguess_byte_orderzMatFile4Reader.guess_byte_orderH  s†   € ØŒ×Ò˜QÑÔÐÝ˜$œ/­2¬8°D©>¬>Ñ:Ô:ˆØŒ×Ò˜QÑÔÐØ�1Š9ˆ9Ø�3Ø�!Š8ˆ8�t˜d’{�{å$Ð,¨Ð3°Ð3å Ð( SÐ/¨CÐ/rK   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_orderrV   r   r³   )rH   s    rI   Úinitialize_readzMatFile4Reader.initialize_readT  s.   € õ
 %Õ%5°t´ÑGÔGˆŒÝ(¨Ñ.Ô.ˆÔÐÐrK   c                 ó  — | j                              ¦   «         }t          t          |j        t          j        |j        j        ¦  «        ¦  «        }|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
        r$   )r³   rn   r   r   rF   r   r€   rD   r�   rG   rE   r    rU   Útell)rH   ru   Úremaining_bytesÚnext_positions       rI   Úread_var_headerzMatFile4Reader.read_var_header\  s}   € ð Ô!×-Ò-Ñ/Ô/ˆå ¥ c¤hµ´¸¼Ô9KÑ0LÔ0LÑMÔMˆØŒ>ð 	! #¤*µÒ">Ð">Ø˜qÑ ˆOØœ×,Ò,Ñ.Ô.°Ñ@ˆØ�MÐ!Ð!rK   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³   rx   )rH   r.   rv   s      rI   Úread_var_arrayzMatFile4Reader.read_var_arrays  s   € ð  Ô"×4Ò4°V¸WÑEÔEÐErK   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   ÚNonerz   )Ú
isinstanceÚstrÚlistrU   rª   r»   Úend_of_streamrÀ   rC   rƒ   rÂ   Úremover„   )rH   Úvariable_namesÚmdictru   r¿   rC   s         rI   Ú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Ñ+Ô+Ð+Ý�~Ñ&Ô&¨!Ò+Ð+Øð ×$Ò$Ñ&Ô&ð 	ð ˆrK   c                 ó  — | j                              d¦  «         |                      ¦   «          g }|                      ¦   «         sº|                      ¦   «         \  }}|j        €dn|j                             d¦  «        }| j                             |¦  «        }t           
                    |j        d¦  «        }|                     |||f¦  «         | j                              |¦  «         |                      ¦   «         ¯º|S )z list variables from stream r   NrÄ   rz   Úunknown)rU   rª   r»   rÈ   rÀ   rC   rƒ   r³   r­   r   ÚgetrE   Úappend)rH   Úvarsru   r¿   rC   r|   Úinfos          rI   Ú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ð ˆrK   r®   rB   )rL   rM   rN   r¯   r   rJ   r¸   r»   rÀ   rÂ   rÌ   rÓ   Ú__classcell__)r¶   s   @rI   r   r   <  s°   ø€ € € € € Ø!Ð!Øð#ð #ð #ð #ñ „Yð#ð
0ð 
0ð 
0ð/ð /ð /ð"ð "ð "ð.Fð Fð Fð Fð$ð ð ð ð>ð ð ð ð ð ð rK   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„   rc   Úreshape)rw   Úoned_asrF   s      rI   r   r   µ  sK   € õ" �3˜Ñ Ô €DÝ
ˆ4�y„y�1‚}€}Ýð (ñ )ô )ð 	)à�;Š;�tÑÔÐrK   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 rB   )Úfile_streamrØ   )rH   Úfile_writers     rI   rJ   zVarWriter4.__init__Î  s   € Ø&Ô2ˆÔØ"Ô*ˆŒˆˆrK   c                 ób   — | j                              |                     d¬¦  «        ¦  «         d S )Nr{   )r~   )rÛ   Úwriter’   )rH   rw   s     rI   Úwrite_byteszVarWriter4.write_bytesÒ  s-   € ØÔ×Ò˜sŸ{š{°˜{Ñ5Ô5Ñ6Ô6Ð6Ð6Ð6rK   c                 ó:   — | j                              |¦  «         d S rB   )rÛ   rÞ   )rH   Úss     rI   Úwrite_stringzVarWriter4.write_stringÕ  s   € ØÔ×Ò˜qÑ!Ô!Ð!Ð!Ð!rK   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
        rQ   r.   r   r\   r^   r_   r/   r0   r   r1   r2   r3   ú rz   N)r   Úemptyr   r   r„   rß   râ   Úencode)
rH   rC   r|   rl   rm   r2   r.   ri   rk   rh   s
             rI   Ú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Ð0rK   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   ÚasarrayrD   Úisnativer�   ÚnewbyteorderÚtypeÚobject_rt   ÚvoidÚstr_Úbytes_Ú
write_charÚwrite_numeric)rH   rw   rC   r‡   Údtts        rI   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 Ñ%Ô%Ð%Ð%Ð%rK   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(   )rl   rm   r2   )r   rØ   rD   Úkindr!   rÆ   ÚKeyErrorr�   r   rç   r|   r   rß   Úrealrœ   )rH   rw   rC   r2   rl   s        rI   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 )Nr4   ©rl   rm   ÚUrQ   r�   rŽ   r9   )rD   rï   r   rò   r�   r
   r   rØ   r|   rç   r   r   rú   ÚmathÚprodr…   r   Úitemræ   rß   )rH   rw   rC   rF   Ún_charsÚst_arrÚsts          rI   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Ø×Ò˜ÑÔÐÐÐrK   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þ   )ÚtocoorD   rú   r   ÚzerosÚnnzrÕ   Úcolrh   rü   rœ   r|   rç   r   r    rß   )rH   rw   rC   ÚAr2   Úijvs         rI   rë   zVarWriter4.write_sparse@  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ÝÝð	 	ñ 	ô 	ð 	ð
 	×Ò˜ÑÔÐÐÐrK   N)rL   rM   rN   rJ   rß   râ   r   r   rç   rÞ   rõ   rô   rë   rQ   rK   rI   r   r   Í  s›   € € € € € ð+ð +ð +ð7ð 7ð 7ð"ð "ð "ð +3°lÈ!ð 1ð 1ð 1ð 1ðB&ð &ð &ð:"ð "ð "ð,ð ð ð(ð ð ð ð rK   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)rH   rÛ   rØ   s      rI   rJ   zMatFile4Writer.__init__[  s)   € Ø&ˆÔØˆ?ØˆGØˆŒØ"ˆÔÐÐrK   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Þ   )rH   rË   rç   rC   Úvars        rI   Úput_variableszMatFile4Writer.put_variablesb  sU   € õ( )¨Ñ.Ô.ˆÔØŸš™œð 	1ð 	1‰IˆD�#ØÔ×%Ò% c¨4Ñ0Ô0Ð0Ð0ð	1ð 	1rK   rB   )rL   rM   rN   r¯   rJ   r  rQ   rK   rI   r   r   Y  sB   € € € € € Ø3Ð3ð#ð #ð #ð #ð1ð 1ð 1ð 1ð 1ð 1rK   r   )rÕ   )1r¯   Úsysre   r   Úoperatorr   Ú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   ÚiinfoÚintpÚmaxr‚   r   r   r   r   r   r   rQ   rK   rI   ú<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ð€ð ˆBŒH�R”WÑÔÔ!€	ð%ð %ð %ð %ð %ñ %ô %ð %ð$Nð Nð Nð Nð Nñ Nô Nð Nðb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ð 1rK   