
    h                     N    d dl Zd dlmZ  G d d          Z G d d          ZdS )    N)
TW_Utilityc                   &    e Zd Zd Zd Zd Zd ZdS )TW_Pointc                 "    || _         || _        d S N)XY)selfr   r	   s      Hc:\Users\Fabien\Documents\Programmation\testPython\classes\TW_Segment.py__init__zTW_Point.__init__   s        c                     | j         S r   )r   r
   s    r   getXzTW_Point.getX	   	    vr   c                     | j         S r   )r	   r   s    r   getYzTW_Point.getY   r   r   c                 0   g }t          j        | j                  s|                    | j                   nEt	          dt          | j                            D ]"}|                    | j        |                    #|                    | j                   |S Nr   )r   is_arrayr   appendrangelenr	   )r
   pointis      r   getPointzTW_Point.getPoint   s    "46** 	(LL    1c$&kk** ( (TVAY''''TVr   N)__name__
__module____qualname__r   r   r   r    r   r   r   r      sP              
 
 
 
 
r   r   c                       e Zd ZdZdZg ZdZdZdZdZ	dZ
dZdZdZd	 Zd
 Zd Zd Zd Zd ZdefdZed             Zeefd            Zeefdefd            ZdS )
TW_SegmentNTREND_UPDARDTREND_DOWNARDTREND_STABLE	CUT_AFTER
CUT_BEFOREFIRST_POINT
LAST_POINTc                 Z    d | _         d | _        g | _        d | _        || _        d | _        d S r   )startendpoints
regression
identifiereuclidianDistance)r
   r/   s     r   r   zTW_Segment.__init__,   s3    
%!%r   c                     | j         S r   )r/   r   s    r   getIdentifierzTW_Segment.getIdentifier4   s
    r   c                 ,    t          j        ||          S r   )r   _euclidianDistance)r
   pointApointBs      r   getEuclidianDistancezTW_Segment.getEuclidianDistance7   s    ,VV<<<r   c                     g }t          dt          | j                            D ]'}|                    | j        |         j                   (|S r   )r   r   r-   r   r   )r
   r   r   s      r   r   zTW_Segment.getX:   M    q#dk**++ 	' 	'AHHT[^%&&&&r   c                     g }t          dt          | j                            D ]'}|                    | j        |         j                   (|S r   )r   r   r-   r   r	   )r
   r	   r   s      r   r   zTW_Segment.getYA   r9   r   c                    |                                  }|d         }|t          |          dz
           }||z
  t          |          z  dz  }| j        }t	          |          dk     r| j        }n|dk     r| j        }n| j        }||fS )Nr      d   
   )r   r   maxr%   absr$   TREND_UPWARD)r
   r	   YMinYMaxdifftrends         r   getTrendzTW_Segment.getTrendH   s    IIKKtQ|A&#-!t99r> 	&%EEBY 	&&EE%EU{r   r   c                    | j                             |           || _        t          j        |                                          }t          j        |          }|                     ||                                          | _	        d S r   )
r-   r   r,   r   np_number_columnsr   npzerosr7   r0   )r
   r   	nbrColumnorigins       r   addPointzTW_Segment.addPointY   sp    5!!!01A1ABB	)$$!%!:!:65>>CSCS!T!Tr   c                 .   t          |t          |                     D ]}d }d }t          dt          | |         j                            D ]}| |         j        |         }|                                }	|	|z   }	|                                }
|
|z   }
t          |	|
          | |         j        |<   |dk    rt          |	|
          }|| |         _        |t          | |         j                  dz
  k    rt          |	|
          }|| |         _        Ȍ| S Nr   r<   )r   r   r-   r   r   r   r+   r,   )segmentsindexdiffXdiffYr   minPointmaxPointjrebasedPointrebasedPointXrebasedPointYs              r   $rebaseSegmentsFromIndexAndCoordinatez/TW_Segment.rebaseSegmentsFromIndexAndCoordinatea   s'   uc(mm,, 	/ 	/AHH1c(1+"45566 / /'{1!4 , 1 1 3 3 - 5 , 1 1 3 3 - 5(0(N(N"1%6 /'}EEH(0HQK%%#hqk011144 /'}EEH&.HQKO/ r   c                    |t           j        k    ra| j        d         }|                                }||z   }|                                }||z   }t          ||          }|| j        d<   || _        n| j        t          | j                  dz
           }|                                }||z   }|                                }||z   }t          ||          }|| j        t          | j                  dz
  <   || _        | S rO   )	r"   r(   r-   r   r   r   r+   r   r,   )segmentrR   rS   pointToRebaserW   rX   rY   s          r   rebaseSegmentPointzTW_Segment.rebaseSegmentPointx   s    J22 	'">!,L(--//M)E1M(--//M)E1M#M=AAL ,GN1(GMM">#gn*=*=q*@AL(--//M)E1M(--//M)E1M#M=AAL5AGN3w~..12&GKr   intersectionPointc                 L   t          j        |          }t          j        | j        d                                                   }t          j        | j        d                                                   }t          j        | j        t          | j                  dz
                                                     }t          j        | j        t          | j                  dz
                                                     }|| j        k    rV|                                }|                                }t          ||          | j        t          | j                  dz
  <   n@|                                }|                                }t          ||          | j        d<   | S rO   )
r   rH   rI   arrayr-   r   r   r   r'   r   )r\   r_   cutModerK   segmentFirstPointXsegmentFirstPointYsegmentLastPointXsegmentLastPointYs           r   
cutSegmentzTW_Segment.cutSegment   s]   01BCC	XgnQ&7&<&<&>&>??XgnQ&7&<&<&>&>??HW^C4G4G4J%K%P%P%R%RSSHW^C4G4G4J%K%P%P%R%RSSg(( 	Q 1 6 6 8 8!2!7!7!9!95=>OQc5d5dGN3w~..122!2!7!7!9!9!2!7!7!9!9 ();=O P PGN1r   )r   r   r   r+   r,   r-   r.   rA   r$   r%   r&   r'   r(   r)   r   r2   r7   r   r   rF   r   rM   staticmethodrZ   r^   rg   r    r   r   r"   r"      s2       E
CFJ!L#M!LIJKJ& & &  = = =      "Uh U U U U   \, BM    \0 CM  x    \  r   r"   )numpyrI   classes.TW_Utilityr   r   r"   r    r   r   <module>rk      s        ) ) ) ) ) )       .G G G G G G G G G Gr   