U
    rh*                     @  sH   d dl mZ d dlZd dlZd dlmZ d dlmZ G dd deZ	dS )    )annotationsN)Base)expectc                   @  sT   e Zd Zedd Zedd Zedd Zedd Zed	d
 Zedd Z	dS )SequenceMapc               
   C  s   t jt jddgdggdt jdt jjdggt jdt jjdgg} t jjddgd	g| d
}dd tdD }|}t jt j	t jjdgg}t jt j	t jjdgg}t
||g|g||dd d S )NIdentityin0out0seq_map_bodyNMr   xyinputsoutputsbodyc                 S  s$   g | ]}t jd ddt jqS               ?
   nprandomuniformastypefloat32.0_ r   L/tmp/pip-unpacked-wheel-xnis5xre/onnx/backend/test/case/node/sequence_map.py
<listcomp>   s     zGSequenceMap.export_sequence_map_identity_1_sequence.<locals>.<listcomp>   Z%test_sequence_map_identity_1_sequencer   r   input_type_protosoutput_type_protosnameonnxhelper
make_graph	make_nodemake_tensor_value_infoTensorProtoFLOATrangemake_sequence_type_protomake_tensor_type_protor   )r   noder   r   r$   r%   r   r   r    'export_sequence_map_identity_1_sequence   s<       z3SequenceMap.export_sequence_map_identity_1_sequencec                  C  s^  t jt jddgdgt jddgdggdt jdt jjdgt jdt jjdggt jdt jjdgt jdt jjdgg} t jjd	d
dgddg| d}dd tdD }dd tdD }|}|}t jt j	t jjdgt jt j	t jjdgg}t jt j	t jjdgt jt j	t jjdgg}t
|||g||g||dd d S )Nr   r   r   in1out1r	   r
   r   r   x0x1y0y1r   c              
   S  s.   g | ]&}t jd dt jddt jqS r   r      r   r   r   r   randintr   r   r   r   r   r    r!   N   s   zHSequenceMap.export_sequence_map_identity_2_sequences.<locals>.<listcomp>r"   c              
   S  s.   g | ]&}t jd dt jddt jqS r:   r<   r   r   r   r    r!   R   s   Z&test_sequence_map_identity_2_sequencesr#   r'   )r   r2   r6   r7   r8   r9   r$   r%   r   r   r    (export_sequence_map_identity_2_sequences0   s        	       	z4SequenceMap.export_sequence_map_identity_2_sequencesc                    sx  t jt jddgdgt jddgdggdt jdt jjdgt jdt jjdggt jdt jjdgt jdt jjdgg} t jjd	d
dgddg| d}dd tdD }tj	
ddtj	ddtj |} fddtdD }t jt jt jjdgt jt jjdgg}t jt jt jjdgt jt jt jjdgg}t|| g||g||dd d S )Nr   r   r   r4   r5   r	   r
   r   r   r6   r7   r8   r9   r   c              
   S  s.   g | ]&}t jd dt jddt jqS r:   r<   r   r   r   r    r!      s   zPSequenceMap.export_sequence_map_identity_1_sequence_1_tensor.<locals>.<listcomp>r"   r   r   r;   r   c                   s   g | ]} qS r   r   r   r7   r   r    r!      s     Z.test_sequence_map_identity_1_sequence_1_tensorr#   )r(   r)   r*   r+   r,   r-   r.   r/   r   r   r   r=   r   r   r0   r1   r   )r   r2   r6   r8   r9   r$   r%   r   r?   r    0export_sequence_map_identity_1_sequence_1_tensorq   sx        	       "z<SequenceMap.export_sequence_map_identity_1_sequence_1_tensorc               
     sF  t jt jdddgdggdt jdt jjdgt jdt jjdggt jdt jjdgg} t jjddd	gd
g| d}dd tdD   fddtdD  fddtdD fddtdD }t jt j	t jjdgt jt j	t jjdgg}t jt j	t jjdgg}t
|g|g||dd d S )NAddr   r4   r   r	   r
   r   r6   r7   r8   r   c                 S  s   g | ]}t jd dqS )r;   r   )r   r   r=   r   r   r   r    r!      s     zCSequenceMap.export_sequence_map_add_2_sequences.<locals>.<listcomp>r"   c                   s(   g | ] }t jd d | t jqS r   r   r   r   kr
   r   r    r!      s     c                   s(   g | ] }t jd d | t jqS rB   r   rC   rE   r   r    r!      s     c                   s   g | ]} | |  qS r   r   rC   r6   r7   r   r    r!      s     Z!test_sequence_map_add_2_sequencesr#   r'   r   r2   r8   r$   r%   r   )r
   r6   r7   r    #export_sequence_map_add_2_sequences   sZ           	z/SequenceMap.export_sequence_map_add_2_sequencesc               
     s*  t jt jdddgdggdt jdt jjdgt jdt jjdggt jdt jjdgg} t jjddd	gd
g| d}dd tdD  tj	
dddtj fddtdD }t jt jt jjdgt jt jjdgg}t jt jt jjdgg}t| g|g||dd d S )NrA   r   r4   r   r	   r
   r   r6   r7   r8   r   c                 S  s$   g | ]}t jd ddt jqS r   r   rC   r   r   r    r!      s     zKSequenceMap.export_sequence_map_add_1_sequence_1_tensor.<locals>.<listcomp>r"   r   r   r   c                   s   g | ]} |  qS r   r   )r   irF   r   r    r!      s     Z)test_sequence_map_add_1_sequence_1_tensorr#   )r(   r)   r*   r+   r,   r-   r.   r/   r   r   r   r   r   r0   r1   r   rG   r   rF   r    +export_sequence_map_add_1_sequence_1_tensor   sT           z7SequenceMap.export_sequence_map_add_1_sequence_1_tensorc                  C  s  t jt jddgdggdt jdt jjdddggt jdt jjdgg} t jjd	d
gdg| d}tj	dddgtj
dtj	dddgtj
dtj	dddgtj
dg}dd |D }t jt jt jjdddgg}t jt jt jjdgg}t||g|g||dd d S )NZShaper   shaper	   HWCr"   r   Zin_seqshapesr   (      Zdtype   r      c                 S  s   g | ]}t j|t jd qS )rR   )r   zerosr   )r   rK   r   r   r    r!     s     zBSequenceMap.export_sequence_map_extract_shapes.<locals>.<listcomp>Z test_sequence_map_extract_shapesr#   )r(   r)   r*   r+   r,   r-   r.   ZINT64r   arrayZint64r0   r1   r   )r   r2   rO   r6   r$   r%   r   r   r    "export_sequence_map_extract_shapes  sR          z.SequenceMap.export_sequence_map_extract_shapesN)
__name__
__module____qualname__staticmethodr3   r>   r@   rH   rJ   rW   r   r   r   r    r      s   
!
@
;
-
*r   )

__future__r   Znumpyr   r(   Zonnx.backend.test.case.baser   Zonnx.backend.test.case.noder   r   r   r   r   r    <module>   s
   