physics_in_parallel 3.0.3

High-performance infrastructure for numerical simulations in physics
Documentation
�

8�in���dZddlmZddlZddlmZddlZhd�Zdd�Z	dd�Z
dd�Zdd	�Zdd
�Z
dd�Zdd�Zdd
�Zdd�Zdd�Zdd�Zd�Zd�Zdd�Zy)z+NumPy helpers for reading PiP JSON outputs.�)�annotationsN)�Path>�grid�matrix�tensor�	tensor_2d�vector_list�grid_clamped�
grid_periodic�
tensor_sparsec�p�tjt|�j��}t	|�S)a�
    Read one PiP JSON output file into a NumPy array.

    Behavior:
    - Flat PiP payloads (`kind` + `shape` + `data`) are converted to numeric
      ndarrays using the provided shape.
    - Legacy PiP payloads are supported for backward compatibility.
    - Composite PiP payloads such as `PhysObj` are returned as 0-D object
      arrays containing recursively converted Python/NumPy content.
    )�json�loadsr�	read_text�_payload_to_ndarray)�path�payloads  �python/numpy_support.py�
to_ndarrayrs*���j�j��d��-�-�/�0�G��w�'�'�c�0�t|t�r�|jd�}|tvr,ddhj	|j��rt
|�S|dk(rd|vrt|�S|dk(rd|vrt|�S|dk(rd|vrt|�St|�rt|�Stt|��St|t�r2tj |D�cgc]
}t|���c}t"��Stj |�Scc}w)	N�kind�shape�datar�storager	r��dtype)�
isinstance�dict�get�_FLAT_PAYLOAD_KINDS�issubset�keys�_flat_payload_to_ndarray�!_legacy_tensor_payload_to_ndarray�&_legacy_vector_list_payload_to_ndarray�_legacy_grid_payload_to_ndarray�_looks_like_legacy_compact_grid�'_legacy_compact_grid_payload_to_ndarray�_object_scalar_array�_json_to_python�list�np�asarray�object)rr�items   rrr&s����'�4� ��{�{�6�"���&�&�G�V�+<�+E�+E�g�l�l�n�+U�+�G�4�4��8��	�W� 4�4�W�=�=��=� �Y�'�%9�9�'�B�B��6�>�i�7�2�2�7�;�;�*�7�3�:�7�C�C�#�O�G�$<�=�=��'�4� ��z�z�W�E�W�T�?�4�0�W�E�V�T�T�
�:�:�g����Fs�Dc�<�t|ddh�t|d�}tj|d�}t	tj
|tj���}|j|k7rtd|�d|j����|j|�S)Nrrrz,flat payload data length mismatch: expected �, got )
�
_require_keys�_normalize_shaper-r.�int�prod�int64�size�
ValueError�reshape)rr�array�
expected_sizes    rr$r$@s����'�G�V�,�-��W�W�-�.�E��J�J�w�v��'�E������R�X�X�6�7�M��z�z�]�"��:�=�/��PU�PZ�PZ�|�\�
�	
��=�=���rc�t�t|hd��t|d�}|d}|dk(r)tj|d�}|j	|�S|dk(rW|dd}t|j
d��}tj||�	�}|D]}|d
|j|d<�|Std|����)
N>rrrrr�denser�sparse�entries�scalar_typer�value�indexz'unsupported legacy PiP tensor storage: )
r3r4r-r.r:�_numpy_dtype_from_scalar_typer �zeros�flatr9)rrrr;r@r�entrys       rr%r%Ns����'�7�8��W�W�-�.�E��i� �G��'���
�
�7�6�?�+���}�}�U�#�#��(���&�/�)�,��-�g�k�k�-�.H�I������e�,���E�).�w��E�J�J�u�W�~�&����
�>�w�k�J�
K�Krc���t|ddh�t|d�\}}tj|d�}|j||fk7rtd||f�d|j����|jS)Nrrz9legacy vector_list payload data shape mismatch: expected r2)r3r4r-r.rr9�T)r�dim�nr;s    rr&r&bs{���'�G�V�,�-�
�g�g�.�
/�F�C���J�J�w�v��'�E��{�{�q�#�h���G��C��z�QW�X]�Xc�Xc�Wd�e�
�	
��7�7�Nrc�B�t|ddh�t|d|d�S�Nrr)r3�_reshape_legacy_grid_data�rs rr'r'ns'���'�G�V�,�-�$�W�W�%5�w�v��G�Grc�&�t|d|d�SrM)rNrOs rr)r)ss��$�W�W�%5�w�v��G�Grc�r�t|�\}}tj|�}|j|f|z�S�N)r4r-r.r:)�shape_metadatar�d�lr;s     rrNrNws3���N�+�D�A�q��J�J�t��E��=�=�!����"�"rc��t|j��ddhk7ry|d}t|t�xr"t	|�dk(xrtd�|D��S)NrrF�c3�<K�|]}t|t����y�wrR�rr5)�.0rBs  r�	<genexpr>z2_looks_like_legacy_compact_grid.<locals>.<genexpr>�s����:�E�5�
�5�#�&�E���)�setr#rr,�len�all)rrs  rr(r(}sY��
�7�<�<�>��w��/�/���G��E��5�$��	;���J�!�O�	;��:�E�:�:�rc��t|t�r|rtd�|D��std|����t	d�|D��rtd|����t|�S)Nc3�<K�|]}t|t����y�wrRrY�rZrJs  rr[z#_normalize_shape.<locals>.<genexpr>�s����:a�[`�TW�:�c�3�;O�[`�r\zinvalid PiP shape metadata: c3�&K�|]	}|dk���y�w)rN�rbs  rr[z#_normalize_shape.<locals>.<genexpr>�s����
%�u��3�!�8�u�s�z"PiP shape dimensions must be > 0: )rr,r_r9�any�tuple)rs rr4r4�sZ���e�T�"�%�s�:a�[`�:a�7a��7��y�A�B�B�
�
%�u�
%�%��=�e�Y�G�H�H���<�rc�t�|j|j��}|rtdt|�����y)Nz#missing required PiP payload keys: )�
differencer#r9�sorted)r�
required_keys�missings   rr3r3�s8���&�&�w�|�|�~�6�G���>�v�g��>O�P�Q�Q�rc�B�|dvrtjS|dvrtjS|dvrtjS|dvrtjS|dvrtj
S|dvrtjS|dvrtjS|dvrtjS|d	vrtjS|d
vrtjSt|t�rd|vrtjSt|t�rd|vrtjStjS)
N>�f32>�f64>�i8>�i16>�i32>�i64�isize>�u8>�u16>�u32>�u64�usizezComplex<f32>zComplex<f64>)r-�float32�float64�int8�int16�int32r7�uint8�uint16�uint32�uint64r�str�	complex64�
complex128)rAs rrDrD�s����g���z�z���g���z�z���f���w�w���g���x�x���g���x�x���&�&��x�x���f���x�x���g���y�y���g���y�y���&�&��y�y���+�s�#��+�(E��|�|���+�s�#��+�(E��}�}��
�:�:�rc���t|t�r-|j�D��cic]\}}|t|���c}}St|t�r|D�cgc]
}t|���c}S|Scc}}wcc}wrR)rr�itemsr+r,)rB�keyr0s   rr+r+�sg���%���<A�K�K�M�J�M�y�s�D��_�T�*�*�M�J�J��%���27�8�%�$���%�%�8�8��L��K��8s�A)�A/c�F�tjdt��}||d<|S)Nrdr)r-�emptyr/)rBr;s  rr*r*�s ���H�H�R�v�&�E��E�"�I��Lr)�returnz
np.ndarray)r��bool)r�ztuple[int, ...])r��None)�__doc__�
__future__rr�pathlibr�numpyr-r!rrr$r%r&r'r)rNr(r4r3rDr+r*rdrr�<module>r�sf��1�"����	��(��4 �L�(	�H�
H�#���R��8�r