U
    vIÀdÕo  ã                   @  sÌ  d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlm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mZmZ d dlmZ d dlmZ d dlmZ d dl m!Z! d dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dl)m*Z*m+Z+m,Z, d dl-m.Z. d dl"m/Z/ ddl0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 ej7Z8ej9Z:ej;Z<e1 =e<e2ddƒ¡e1 =e:e2ddƒ¡e1 =e8e2ddƒ¡dd„ ƒƒƒZ>e1 =e$e2ddƒ¡e1 =e#e2ddƒ¡dd„ ƒƒZ?dd„ Z@eAdƒeAdƒddddddddddœddd œd!d"„ZBdeAdƒeAdƒfd#œd$d%„ZCe1 De$ee2d&d'ƒ¡e1 De:ee2d&d'ƒ¡ei ƒfd(d)„ƒƒZEe1 =e:e2d&d'ƒ¡e1 =e:e2d*d'ƒ¡e1 =e<e2d&d'ƒ¡e1 =e<e2d*d'ƒ¡e1 =e$e2d&d'ƒ¡e1 =e$e2d*d'ƒ¡d+d,„ ƒƒƒƒƒƒZFe1 De:ee2d*d'ƒ¡e1 De$ee2d*d'ƒ¡ei ƒfd-d.„ƒƒZGe1 =e:e2d/d'ƒ¡e1 =e$e2d/d'ƒ¡d0d1„ ƒƒZHe1 De:eIe2d/d'ƒ¡e1 De$eIe2d/d'ƒ¡ei ƒfd2d3„ƒƒZJe1 De:eKe2d4d5ƒ¡e1 De$eKe2d4d5ƒ¡ei ƒfd6d7„ƒƒZLe1 De:e!jMe2d4d5ƒ¡e1 De:ejNe2d4d5ƒ¡e1 De:ej7e2d4d5ƒ¡e1 De:ejOjPe2d4d5ƒ¡e1 De$e!jMe2d4d5ƒ¡e1 De$ejNe2d4d5ƒ¡e1 De$ej7e2d4d5ƒ¡e1 De$ejOjPe2d4d5ƒ¡ei ƒfd8d9„ƒƒƒƒƒƒƒƒZQe1 De$e%e2d4d5ƒ¡e1 De:e%e2d4d5ƒ¡ei ƒfd:d;„ƒƒZRe1 =e8e2d4d5ƒ¡e1 =e#e2d4d5ƒ¡e1 =e#e2d<d5ƒ¡d=d>„ ƒƒƒZSe1 Te8e2d4d5ƒ¡e1 Te#e2d<d5ƒ¡deAddƒd#œd?d@„ƒƒZUe1 Te#e2d4d5ƒ¡deAddƒd#œdAdB„ƒZVe1 =e8e2d<d5ƒ¡dCdD„ ƒZWe1 Te8e2d<d5ƒ¡deAdƒfdEdF„ƒZXe1 De:e!jMdGfe2d<d5ƒ¡e1 De:e!jMdHfe2d<d5ƒ¡e1 De:ejNdGfe2d<d5ƒ¡e1 De:ejNdHfe2d<d5ƒ¡ei ƒfdIdJ„ƒƒƒƒZYe1 De$e!jMdGfe2d<d5ƒ¡e1 De$e!jMdHfe2d<d5ƒ¡e1 De$ejNdGfe2d<d5ƒ¡e1 De$ejNdHfe2d<d5ƒ¡ei ƒfdKdL„ƒƒƒƒZZdMdMdNœdOdP„Z[e1 =e8e2dQd5ƒ¡e1 =e#e2dQd5ƒ¡dRdS„ ƒƒZ\e1 De:ejNdTfe2dQd5ƒ¡e1 De:ej]e2dQd5ƒ¡ei ƒfdUdV„ƒƒZ^e1 De$ejNdTfe2dQd5ƒ¡e1 De$ej]e2dQd5ƒ¡ei ƒfdWdX„ƒƒZ_ei ƒfdYdZœd[d\„Z`ee`d]dZ�Zaee`d^dZ�Zbe1 De:ejce2d_d'ƒ¡eaƒ e1 De:e!jde2d_d'ƒ¡eaƒ e1 De:ejee2d`d'ƒ¡ebƒ e1 De:e!jfe2d`d'ƒ¡ebƒ e1 De$ejce2d_d'ƒ¡eaƒ e1 De$e!jde2d_d'ƒ¡eaƒ e1 De$ejee2d`d'ƒ¡ebƒ e1 De$e!jfe2d`d'ƒ¡ebƒ e1 De:ee2dd'ƒ¡e1 De$ee2dd'ƒ¡ei ƒfdadb„ƒƒZge1 =e:e2d`d'ƒ¡e1 =e:e2d_d'ƒ¡e1 =e$e2d`d'ƒ¡e1 =e$e2d_d'ƒ¡dcdd„ ƒƒƒƒZhe1 Te:e2d`d'ƒ¡e1 Te:e2d_d'ƒ¡e1 Te$e2d`d'ƒ¡e1 Te$e2d_d'ƒ¡deAdƒeAdƒfd#œdedf„ƒƒƒƒZie1 De:e/e2dgd'ƒ¡e1 De$e/e2dgd'ƒ¡e1 De:e!jje2dgd'ƒ¡e1 De$e!jje2dgd'ƒ¡ei ƒfdhdi„ƒƒƒƒZke1 =e:e2dgd'ƒ¡e1 =e$e2dgd'ƒ¡djdk„ ƒƒZle1 De:e!jme2dld5ƒ¡e1 De:ejne2dld5ƒ¡e1 De$e!jme2dld5ƒ¡e1 De$ejne2dld5ƒ¡ei ƒfdmdn„ƒƒƒƒZoe1 =e:e2dld5ƒ¡e1 =e$e2dld5ƒ¡dodp„ ƒƒZpe1 Te:e2dld5ƒ¡e1 Te$e2dld5ƒ¡deAddƒeAddƒfd#œdqdr„ƒƒZqe1 =e:e2dld'ƒ¡e1 =e$e2dld'ƒ¡dsdt„ ƒƒZrdudvdwœdxdy„Zse1 Te:e2dld'ƒ¡e1 Te$e2dld'ƒ¡deAdƒeAdƒfd#œdzd{„ƒƒZte1 De:ejue2d|d5ƒ¡e1 De$ejue2d|d5ƒ¡ei ƒfd}d~„ƒƒZve1 =e:e2d|d5ƒ¡e1 =e$e2d|d5ƒ¡dd€„ ƒƒZwe1 Te:e2d|d5ƒ¡e1 Te$e2d|d5ƒ¡deAdƒfd#œd�d‚„ƒƒZxe1 De:ejyjze2dƒd'ƒ¡e1 De$ejyjze2dƒd'ƒ¡e1 De:ejyj{e2d„d'ƒ¡e1 De$ejyj{e2d„d'ƒ¡ei ƒfd…d†„ƒƒƒƒZ|e1 =e:e2dƒd'ƒ¡e1 =e$e2dƒd'ƒ¡d‡dˆ„ ƒƒZ}e1 =e:e2d„d'ƒ¡e1 =e$e2d„d'ƒ¡d‰dŠ„ ƒƒZ~e1 =e8e2d‹d5ƒ¡e1 =e#e2d‹d5ƒ¡dŒd�„ ƒƒZei ƒfdŽd�„Z€ei ƒfd�d‘„Z�e‚ejƒej„ej…ej†ej‡eˆej‰ejŠej‹ejŒe�fejŽ �¡ ej� �¡ •D ]6Z‘e1 De:e‘e2d‹d5ƒ¡e�ƒ e1 De$e‘e2d‹d5ƒ¡e€ƒ �qÌe1 De$e’e2d’d5ƒ¡e€ƒ e1 De$ej“e2d’d5ƒ¡e€ƒ e1 =e8e2d’d5ƒ¡d“d”„ ƒZ”e1 =e#e2d’d5ƒ¡d•d–„ ƒZ•e1 =e8e2d—d5ƒ¡eƒ e1 =e#e2d—d5ƒ¡eƒ e1 De:ej“e2d’d5ƒ¡e1 De:e’e2d’d5ƒ¡d˜d™„ ƒƒZ–dS )šé    )Úannotations)ÚPathLike)ÚMapping)Úpartial)ÚUnionÚLiteral)ÚMappingProxyType)ÚwarnN)Úsparse)ÚAnnDataÚRaw)Ú_normalize_indices)Úintersect_keys©ÚSparseDataset)Úviews)Ú	ZarrArrayÚ	ZarrGroupÚ	DaskArrayÚ
_read_attrÚ_from_fixed_length_stringsÚ_decode_structured_array)Úreport_write_key_on_errorÚ	check_keyÚH5PY_V3)ÚOldFormatWarning)ÚAwkArrayé   )Ú	_REGISTRYÚIOSpecÚget_specÚ	read_elemÚread_elem_partialÚ
write_elemÚ c                   st   ddl m} td| j› d�tdd� t| tƒrZd| jkrDt| ƒ 	¡ S ‡ fdd	„|  
¡ D ƒS t| tjƒrp| | ¡S d S )
Nr   )Úh5adú	Element 'ú(' was written without encoding metadata.é   ©Ú
stacklevelÚh5sparse_formatc                   s   i | ]\}}|ˆ   |¡“qS © ©r!   ©Ú.0ÚkÚv©Ú_readerr,   úR/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/anndata/_io/specs/methods.pyÚ
<dictcomp>^   s      zread_basic.<locals>.<dictcomp>)Úanndata._ior%   r	   Únamer   Ú
isinstancer   Úattrsr   Ú	to_memoryÚitemsÚh5pyÚDatasetÚread_dataset)Úelemr3   r%   r,   r2   r4   Ú
read_basicN   s    ý

r@   c                   sr   ddl m} td| j› d�tdd� t| tƒrZd| jkrDt| ƒ 	¡ S ‡ fdd	„|  
¡ D ƒS t| tƒrn| | ¡S d S )
Nr   )Úzarrr&   r'   r(   r)   r+   c                   s   i | ]\}}|ˆ   |¡“qS r,   r-   r.   r2   r,   r4   r5   r   s      z#read_basic_zarr.<locals>.<dictcomp>)r6   rA   r	   r7   r   r8   r   r9   r   r:   r;   r   r>   )r?   r3   rA   r,   r2   r4   Úread_basic_zarrc   s    ý


rB   c                 C  sH   | d }|t |jdƒ }t|ƒ}| d }|t |jdƒ }t|ƒ}||fS )NÚobsÚ_indexÚvar)r   r9   r!   )ÚgroupZ	obs_groupZobs_idx_elemÚobs_idxZ	var_groupZvar_idx_elemÚvar_idxr,   r,   r4   Úread_indices†   s    rI   T)rG   rH   ÚXrC   rE   ÚobsmÚvarmÚobspÚvarpÚlayersÚunsr   z
ad.AnnData)ÚpthÚreturnc             	   C  s–  i }t  | d¡��r}t||fft|ƒžŽ \}}t|d ||td ƒfd�|d< t|d ||td ƒfd�|d< |rˆt|d ||fd�|d< n"t t|d ƒt|d ƒf¡|d< d|krÐt	|d ||td ƒfd�|d< d|kröt	|d ||td ƒfd�|d< d	|k�rt	|d	 |||fd�|d	< d
|k�r>t	|d
 |	||fd�|d
< d|k�rbt	|d |
||fd�|d< d|k�r€t	|d |d�|d< W 5 Q R X t
jf |ŽS )NÚrrC   ©r;   ÚindicesrE   rJ   ©rU   rK   rL   rM   rN   rO   rP   ©r;   )r<   ÚFiler   rI   r"   Úslicer
   Ú
csr_matrixÚlenÚ_read_partialÚadr   )rQ   rG   rH   rJ   rC   rE   rK   rL   rM   rN   rO   rP   ÚresultÚfr,   r,   r4   Úread_partial�   sb      
ÿ
  
ÿ
"  
ÿ
  
ÿ

  ÿ

  ÿ

  ÿ

r`   rT   c                C  sp   | d krd S |d kr t | fƒ}nt | |fƒ}i }|D ]6}t|tƒrP| |d ¡}nd }t| | ||d�||< q4|S ©NrT   )r   r8   r   Úgetr"   )rF   r;   rU   Úkeysr^   r0   Z
next_itemsr,   r,   r4   r\   Æ   s    
r\   Úanndataú0.1.0c                 C  sî   |   |¡}|j|d|j|d� |j|d|j|d� |j|d|j|d� |j|dt|jƒ|d� |j|dt|jƒ|d� |j|dt|jƒ|d� |j|dt|j	ƒ|d� |j|d	t|j
ƒ|d� |j|d
t|jƒ|d� |j|d|j|d� d S )NrJ   ©Údataset_kwargsrC   rE   rK   rL   rM   rN   rO   rP   Úraw)Zrequire_groupr#   rJ   rC   rE   ÚdictrK   rL   rM   rN   rO   rP   rh   )r_   r0   ZadataÚ_writerrg   Úgr,   r,   r4   Úwrite_anndata×   s    
rl   rh   c                 C  s2   i }dD ]}|| kr|  | | ¡||< qtf |ŽS )N)
rJ   rC   rE   rK   rL   rM   rN   rO   rP   rh   )r!   r   )r?   r3   Údr0   r,   r,   r4   Úread_anndataç   s
    rn   c                 C  sN   |   |¡}|j|d|j|d� |j|d|j|d� |j|dt|jƒ|d� d S )NrJ   rf   rE   rL   )Úcreate_groupr#   rJ   rE   ri   rL   )r_   r0   rh   rj   rg   rk   r,   r,   r4   Ú	write_raw   s    
rp   ri   c                   s   ‡ fdd„|   ¡ D ƒS )Nc                   s   i | ]\}}|ˆ   |¡“qS r,   r-   r.   r2   r,   r4   r5     s      z read_mapping.<locals>.<dictcomp>rW   ©r?   r3   r,   r2   r4   Úread_mapping  s    rr   c                 C  s2   |   |¡}| ¡ D ]\}}|j||||d� qd S ©Nrf   )ro   r;   r#   )r_   r0   r1   rj   rg   rk   Zsub_kZsub_vr,   r,   r4   Úwrite_mapping  s    
rt   Úarrayz0.2.0c                 C  s   |j | |t |¡|d� d S rs   )r#   Únpru   ©r_   r0   r?   rj   rg   r,   r,   r4   Ú
write_list!  s    rx   c                 C  s   | j |fd|i|—Ž dS )z8Write methods which underlying library handles natively.ÚdataN)Úcreate_datasetrw   r,   r,   r4   Úwrite_basic)  s    
r{   c                 C  s8   dd l m} | j|f|j|jdœ|—Ž}| ||¡ d S )Nr   )ÚshapeÚdtype)Z
dask.arrayru   Zrequire_datasetr|   r}   Ústore)r_   r0   r?   rj   rg   Údark   r,   r,   r4   Úwrite_basic_dask6  s    r€   zstring-arrayc                 C  s   | d S ©Nr,   r,   rq   r,   r,   r4   Ú
read_array?  s    r‚   c                C  s   | | S ©Nr,   ©r?   r;   rU   r,   r,   r4   Úread_array_partialF  s    r…   c                C  s
   | j | S rƒ   )Zoindexr„   r,   r,   r4   Úread_zarr_array_partialL  s    r†   c                 C  s   t |  ¡ |d�S )Nr2   )r‚   Úasstr)rm   r3   r,   r,   r4   Úread_string_arrayR  s    rˆ   c                 C  s   t |  ¡ ||d�S ra   )r…   r‡   )rm   r;   rU   r,   r,   r4   Úread_string_array_partialW  s    r‰   ÚUÚOc                 C  s.   t jtd�}| j|f| |¡|dœ|—Ž dS )z8Write methods which underlying library handles nativley.©Zvlen)ry   r}   N)r<   Úspecial_dtypeÚstrrz   Úastype)r_   r0   r?   rj   rg   Z	str_dtyper,   r,   r4   Úwrite_vlen_string_array\  s    
r�   c                 C  s<   dd l }| j|f|jt| ¡ dœ|—Ž || | d d …< d S )Nr   )r|   r}   Zobject_codec)Ú	numcodecsrz   r|   ÚobjectZVLenUTF8)r_   r0   r?   rj   rg   r‘   r,   r,   r4   Úwrite_vlen_string_array_zarrj  s    ÿüûr“   z
np.ndarray)ÚvaluerR   c                 C  sX   g }| j j ¡ D ]<\}\}}|jdkr>| |tjtd�f¡ q| ||f¡ q|  |¡S )z6This corrects compound dtypes to work with hdf5 files.)rŠ   r‹   rŒ   )	r}   Úfieldsr;   ÚkindÚappendr<   r�   rŽ   r�   )r”   Z	new_dtypeZdt_nameZdt_typeÚ_r,   r,   r4   Ú_to_hdf5_vlen_strings†  s    
r™   z	rec-arrayc                 C  s*   | d }|j }t|ƒ}tr&t||d�}|S )Nr,   ©r}   )r}   r   r   r   )rm   r3   r”   r}   r,   r,   r4   Úread_recarray‘  s    r›   ÚVc                 C  s   | j |fdt|ƒi|—Ž d S ©Nry   )rz   r™   rw   r,   r,   r4   Úwrite_recarrayœ  s    rž   c                 C  s*   ddl m} | j|fd||ƒi|—Ž d S )Nr   )Ú_to_fixed_length_stringsry   )Úanndata.compatrŸ   rz   )r_   r0   r?   rj   rg   rŸ   r,   r,   r4   Úwrite_recarray_zarr¢  s    r¡   zLiteral[('csr', 'csc')])Úfmtc                 C  s€   |   |¡}|j|jd< t| tƒr:d|kr:tf ddi|—Ž}|jdd|ji|—Ž |jdd|ji|—Ž |jd	d|j	i|—Ž d S )
Nr|   Zmaxshaperƒ   ry   rU   Úindptr)ry   )rU   )r£   )
ro   r|   r9   r8   ÚH5Groupri   rz   ry   rU   r£   )r_   Úkeyr”   rj   r¢   rg   rk   r,   r,   r4   Úwrite_sparse_compressed¯  s    
r¦   ZcsrZcscrZ   Ú
csc_matrixc                 C  sB   t | || ¡ ||j|d� |j› d�| | jd< d| | jd< d S )N)r¢   rg   Z_matrixzencoding-typere   zencoding-version)r¦   Z	to_backedÚ
format_strr9   rw   r,   r,   r4   Úwrite_sparse_datasetß  s    ú	r©   c                 C  s   t | ƒ ¡ S rƒ   )r   r:   rq   r,   r,   r4   Úread_sparseï  s    rª   c                C  s   t | ƒ| S rƒ   r   r„   r,   r,   r4   Úread_sparse_partial÷  s    r«   zawkward-arrayc           
      C  sl   ddl m} |  |¡}| | |¡¡\}}}	||jd< | ¡ |jd< |	 ¡ D ]\}}|j||||d� qLd S )Nr   ©ÚawkwardÚlengthÚformrf   )	r    r­   ro   Z
to_buffersZ	to_packedr9   Úto_jsonr;   r#   )
r_   r0   r1   rj   rg   ÚakrF   r¯   r®   Ú	containerr,   r,   r4   Úwrite_awkward  s    	

r³   c                   sJ   ddl m} tˆjdƒ}tˆjdƒ}‡ ‡fdd„ˆ ¡ D ƒ}| |||¡S )Nr   r¬   r¯   r®   c                   s   i | ]}|ˆ   ˆ| ¡“qS r,   r-   ©r/   r0   ©r3   r?   r,   r4   r5     s      z read_awkward.<locals>.<dictcomp>)r    r­   r   r9   rc   Zfrom_buffers)r?   r3   r±   r¯   r®   r²   r,   rµ   r4   Úread_awkward  s
    r¶   Z	dataframec                 C  s®   dD ]}||j krt|›d�ƒ‚q|  |¡}dd„ |j D ƒ}||jd< |jjd k	r\|jj}nd}t|ƒ|jd< |j|||jj|d� | 	¡ D ]\}	}
|j||	|
j|d� qŒd S )N)rD   z* is a reserved name for dataframe columns.c                 S  s   g | ]}t |ƒ‘qS r,   )r   )r/   Úcr,   r,   r4   Ú
<listcomp>2  s     z#write_dataframe.<locals>.<listcomp>úcolumn-orderrD   rf   )
ÚcolumnsÚ
ValueErrorro   r9   Úindexr7   r   r#   Ú_valuesr;   )r_   r¥   Údfrj   rg   ÚreservedrF   Z	col_namesZ
index_nameZcolnameZseriesr,   r,   r4   Úwrite_dataframe(  s.    



   ÿ   ÿrÀ   c                   sf   t tˆjdƒƒ}tˆjdƒ}tj‡ ‡fdd„|D ƒˆ  ˆ| ¡t|ƒrJ|nd d�}|dkrb||j_|S )Nr¹   rD   c                   s   i | ]}|ˆ   ˆ| ¡“qS r,   r-   r´   rµ   r,   r4   r5   N  s      z"read_dataframe.<locals>.<dictcomp>©r¼   rº   )	Úlistr   r9   ÚpdÚ	DataFramer!   r[   r¼   r7   ©r?   r3   rº   Úidx_keyr¾   r,   rµ   r4   Úread_dataframeH  s    ýrÇ   c                  s�   ˆd k	r$‡fdd„t ˆ jdƒD ƒ}ntt ˆ jdƒƒ}t ˆ jdƒ}tj‡ ‡fdd„|D ƒtˆ | ˆd d�t|ƒrt|nd d	�}|dkrŒ||j_|S )
Nc                   s   g | ]}|ˆ kr|‘qS r,   r,   )r/   ÚcolrW   r,   r4   r¸   ^  s     z*read_dataframe_partial.<locals>.<listcomp>r¹   rD   c                   s"   i | ]}|t ˆ | ˆd  d�“qS )r   rV   )r"   r´   )r?   rU   r,   r4   r5   e  s      z*read_dataframe_partial.<locals>.<dictcomp>r   rV   rÁ   )	r   r9   rÂ   rÃ   rÄ   r"   r[   r¼   r7   )r?   r;   rU   rº   rÆ   r¾   r,   )r?   rU   r;   r4   Úread_dataframe_partialX  s    

ÿýrÉ   c                   s^   t ˆ jdƒ}t ˆ jdƒ}tj‡ fdd„|D ƒtˆ | ƒt|ƒrB|nd d�}|dkrZ||j_|S )Nr¹   rD   c                   s   i | ]}|t ˆ | ƒ“qS r,   )Úread_seriesr´   ©r?   r,   r4   r5   w  s      z(read_dataframe_0_1_0.<locals>.<dictcomp>rÁ   )r   r9   rÃ   rÄ   rÊ   r[   r¼   r7   rÅ   r,   rË   r4   Úread_dataframe_0_1_0q  s    
ýrÌ   zh5py.Datasetz!Union[np.ndarray, pd.Categorical])ÚdatasetrR   c                 C  sŽ   d| j kr‚t| tƒr<dd l}| j | j¡}| | j¡| }n| j	}|t
| j dƒ }t|ƒ}tt
|j ddƒƒ}tjjt| ƒ||d�S t| ƒS d S )NÚ
categoriesr   ÚorderedF)rÏ   )r9   r8   r   rA   r7   ÚrstripÚbasenameÚopenr~   Úparentr   r!   ÚboolrÃ   ÚCategoricalÚ
from_codes)rÍ   rA   Úparent_namerÓ   Zcategories_dsetrÎ   rÏ   r,   r,   r4   rÊ   €  s    

  ÿrÊ   c                C  s0   |d krt d ƒ}nt|ƒ}t| ƒ| j|d  S )Nr   )rY   rÂ   r!   Zilocr„   r,   r,   r4   Úread_partial_dataframe_0_1_0”  s    
rØ   Zcategoricalc                 C  sH   |   |¡}t|jƒ|jd< |j|d|j|d� |j|d|jj|d� d S )NrÏ   Úcodesrf   rÎ   )ro   rÔ   rÏ   r9   r#   rÙ   rÎ   r½   ©r_   r0   r1   rj   rg   rk   r,   r,   r4   Úwrite_categorical¥  s    
   ÿrÛ   c                 C  s2   t jj| | d ¡| | d ¡tt| jdƒƒd�S )NrÙ   rÎ   rÏ   ©rÙ   rÎ   rÏ   )rÃ   rÕ   rÖ   r!   rÔ   r   r9   rq   r,   r,   r4   Úread_categorical±  s
    ýrÝ   c                C  s2   t jjt| d |d�t| d ƒtt| jdƒƒd�S )NrÙ   rV   rÎ   rÏ   rÜ   )rÃ   rÕ   rÖ   r"   r!   rÔ   r   r9   r„   r,   r,   r4   Úread_partial_categorical»  s
    
ýrÞ   znullable-integerznullable-booleanc                 C  s@   |   |¡}|jd k	r(|j|d|j|d� |j|d|j|d� d S )NÚmaskrf   Úvalues)ro   Z_maskr#   Ú_datarÚ   r,   r,   r4   Úwrite_nullable_integerÊ  s    

râ   c                 C  sD   d| kr,t jj| | d ¡| | d ¡d�S t  | | d ¡¡S d S ©Nrß   rà   )rß   )rÃ   ÚarraysÚIntegerArrayr!   ru   rq   r,   r,   r4   Úread_nullable_integerÝ  s     ÿræ   c                 C  sD   d| kr,t jj| | d ¡| | d ¡d�S t  | | d ¡¡S d S rã   )rÃ   rä   ÚBooleanArrayr!   ru   rq   r,   r,   r4   Úread_nullable_booleanè  s     ÿrè   znumeric-scalarc                 C  s   | d S r�   r,   rq   r,   r,   r4   Úread_scalarø  s    ré   c                 C  s   | j |fdt |¡i|—ŽS r�   )rz   rv   ru   ©r_   r¥   r”   rj   rg   r,   r,   r4   Úwrite_scalarþ  s    rë   c                 C  s@   |  ¡ }| dd ¡ | dd ¡ | j|fdt |¡i|—Ž d S )NÚcompressionÚcompression_optsry   )ÚcopyÚpoprz   rv   ru   rê   r,   r,   r4   Úwrite_hdf5_scalar  s    rð   Ústringc                 C  s   |   ¡ d S r�   )r‡   rq   r,   r,   r4   Úread_hdf5_string  s    rò   c                 C  s   t | d ƒS r�   )rŽ   rq   r,   r,   r4   Úread_zarr_string  s    ró   Úbytesc                 C  sL   |  ¡ }| dd ¡ | dd ¡ | j|fdtj|tjdd�d�i|—Ž d S )Nrì   rí   ry   zutf-8)Úencodingrš   )rî   rï   rz   rv   ru   r<   Zstring_dtype)r_   r0   r1   rj   rg   r,   r,   r4   Úwrite_string(  s    ÿÿÿrö   )—Ú
__future__r   Úosr   Úcollections.abcr   Ú	functoolsr   Útypingr   r   Útypesr   Úwarningsr	   r<   Únumpyrv   ZpandasrÃ   Zscipyr
   rd   r]   r   r   Zanndata._core.indexr   Zanndata._core.merger   Zanndata._core.sparse_datasetr   Zanndata._corer   r    r   r   r   r   r   r   Zanndata._io.utilsr   r   r   Zanndata._warningsr   r   Úregistryr   r   r    r!   r"   r#   r=   ZH5ArrayÚGroupr¤   rX   ZH5FileZregister_readr@   rB   rI   rY   r`   r\   Zregister_writerl   rn   rp   rr   ri   rt   rÂ   rx   Z	ArrayViewZndarrayÚmaZMaskedArrayr{   r€   r‚   Zregister_read_partialr…   r†   rˆ   r‰   r�   r“   r™   r›   Zrecarrayrž   r¡   r¦   Z	write_csrZ	write_cscrZ   ZSparseCSRViewr§   ZSparseCSCViewr©   rª   r«   ZAwkwardArrayViewr³   r¶   ZDataFrameViewrÄ   rÀ   rÇ   rÉ   rÌ   rÊ   rØ   rÕ   rÛ   rÝ   rÞ   rä   rå   rç   râ   ræ   rè   ré   rë   rð   rÔ   Zbool_Zuint8Zuint16Zuint32Zuint64ÚintZint8Zint16Zint32Zint64ÚfloatZfloatingÚ__subclasses__ZcomplexfloatingZnumeric_scalar_typerŽ   Zstr_rò   ró   rö   r,   r,   r,   r4   Ú<module>   s,    	"!ó6 
  ÿ  ÿ  ÿ  ÿÿ	úÿÿÿÿÿÿÿÿ$	  ÿ  ÿ ÿ ÿ
  ÿ  ÿ  ÿ  ÿ	
        üû

