
    ph78                        S SK r S SKrS SKrS SKrS SK7  S SK7  S SK7  S SKJ	r
Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SKrS SKr\R0                  " S5        S SKrS SKJrJrJr  S S	KJr  \R@                  RC                  S
S
SSSS.5         " S S\"5      r#\$S:X  aa  \" SSS9r%\%RM                  5       r'\(" \RR                  5      r*\#" 5       r+\+RY                  5         \RZ                  " \*R]                  5       5        gg)    N)*)FigureCanvasQTAggNavigationToolbar2QT)Figure)ArgumentParser)dateignore)PALETTES	SEQUENCEScolor_palette)set_palettez#434343white)zfigure.facecolorzaxes.facecolorzaxes.labelcolorzxtick.colorzytick.colorc                       \ rS rSrSS jrS rS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)MainGUI   Nc                     [         R                  X5        [        R                  " 5       S:  a  [        S5        [        eU R                  5         U R                  5         g )Ni|izKPlease download a new version from https://streubel.unl.edu/STARTSMART.html)QMainWindow__init__timeprint
SystemExitinitUIUpdateDataVisualization)selfparents     Harmonograph.pyr   MainGUI.__init__   sB    T*99;#_`$$&    c                 @   [        5       U l        U R                  [        S5      5        U R	                  S5        U R                  5         U R                  5         U R                  5         U R                  R                  S5        [        5       nUR                  U R                  5        UR                  U R                  5        U R                  R                  U5        U R                  S5        U R                  U R                  5        U R!                  SS5        g )Nzicon.pngzQTextEdit, QLineEdit {background: '#707070'; color: white;} QGroupBox {border: 1px solid gray; border-radius: 5px; margin-top: 8px;} QGroupBox:title { subcontrol-origin: margin; subcontrol-position: top center; padding: 0 3px 0 3px; }i,  u!   ⌘ Streubel Lab Harmonograph ⌘  i   )QWidgetMainsetWindowIconQIconsetStyleSheetinitParametersCreateParameterTabCreateDataVisualizationParameterTabsetFixedWidthQHBoxLayout	addWidgetDataVisualization	setLayoutsetWindowTitlesetCentralWidgetsetMinimumSize)r   hboxs     r   r   MainGUI.initUI   s    I	5,-  H  	I!$$&'',}t(()t--.		D!?@dii(D%r   c                 p   SS/U l         SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l	        SU l
        SU l        SU l        SU l        SU l        SU l        SU l        ["        S	   S
   [%        [&        R(                  R+                  S5      S
-  5         U l        g )Nr   r    
      gRQ?Z   g{Gz?   Spectral   )XA1F1P1D1A2F2P2D2A3F3P3D3A4F4P4D4r   intnprandomrandcolorr   s    r   r&   MainGUI.initParameters1   s    Dz*2.s299>>!3DR3G/HI
r   c                 %   [        5       U l        [        5       n[        S5      n[	        [        U R                  S   5      5      U l        U R                  R                  [        SS5      5        U R                  R                  S5        [        S5      n[	        [        U R                  S   5      5      U l        U R                  R                  [        SS5      5        U R                  R                  S5        UR                  U5        UR                  U R                  5        UR                  U5        UR                  U R                  5        [        5       n[        S	5      n[        [        R                  R                   5      U l        U R"                  R%                  SS
5        U R"                  R'                  U R(                  5        U R"                  R+                  S5        UR                  U5        UR                  U R"                  5        [        5       n[        S5      n[	        [        U R,                  5      5      U l        U R.                  R                  [1        SSS5      5        U R.                  R                  S5        UR                  U5        UR                  U R.                  5        [        5       n[        S5      n	[        [        R                  R                   5      U l        U R2                  R%                  SS5        U R2                  R'                  U R4                  5        U R2                  R+                  S5        UR                  U	5        UR                  U R2                  5        [        5       n
[        S5      n[        [        R                  R                   5      U l        U R6                  R%                  SS5        U R6                  R'                  U R8                  5        U R6                  R+                  S5        U
R                  U5        U
R                  U R6                  5        [        5       n[        S5      n[        [        R                  R                   5      U l        U R:                  R%                  SS
5        U R:                  R'                  U R<                  5        U R:                  R+                  S5        UR                  U5        UR                  U R:                  5        [        5       n[        S5      n[	        [        U R>                  5      5      U l         U R@                  R                  [1        SSS5      5        U R@                  R                  S5        UR                  U5        UR                  U R@                  5        [        5       n[        S5      n[        [        R                  R                   5      U l!        U RB                  R%                  SS5        U RB                  R'                  U RD                  5        U RB                  R+                  S5        UR                  U5        UR                  U RB                  5        [        5       n[        S5      n[        [        R                  R                   5      U l#        U RF                  R%                  SS5        U RF                  R'                  U RH                  5        U RF                  R+                  S5        UR                  U5        UR                  U RF                  5        [        5       n[        S5      n[        [        R                  R                   5      U l%        U RJ                  R%                  SS
5        U RJ                  R'                  U RL                  5        U RJ                  R+                  S5        UR                  U5        UR                  U RJ                  5        [        5       n[        S5      n[	        [        U RN                  5      5      U l(        U RP                  R                  [1        SSS5      5        U RP                  R                  S5        UR                  U5        UR                  U RP                  5        [        5       n[        S5      n[        [        R                  R                   5      U l)        U RR                  R%                  SS5        U RR                  R'                  U RT                  5        U RR                  R+                  S5        UR                  U5        UR                  U RR                  5        [        5       n[        S5      n[        [        R                  R                   5      U l+        U RV                  R%                  SS5        U RV                  R'                  U RX                  5        U RV                  R+                  S5        UR                  U5        UR                  U RV                  5        [        5       n[        S5      n[        [        R                  R                   5      U l-        U RZ                  R%                  SS
5        U RZ                  R'                  U R\                  5        U RZ                  R+                  S5        UR                  U5        UR                  U RZ                  5        [        5       n[        S5      n[	        [        U R^                  5      5      U l0        U R`                  R                  [1        SSS5      5        U R`                  R                  S5        UR                  U5        UR                  U R`                  5        [        5       n [        S5      n![        [        R                  R                   5      U l1        U Rb                  R%                  SS5        U Rb                  R'                  U Rd                  5        U Rb                  R+                  S5        U R                  U!5        U R                  U Rb                  5        [        5       n"[        S5      n#[        [        R                  R                   5      U l3        U Rf                  R%                  SS5        U Rf                  R'                  U Rh                  5        U Rf                  R+                  S5        U"R                  U#5        U"R                  U Rf                  5        [k        U R                  5      n$U$Rm                  U5        [        5       n%[k        5       n&U&Rm                  U5        U&Rm                  U5        U&Rm                  U5        U&Rm                  U
5        U%Ro                  U&5        U$R                  U%5        [        5       n'[k        5       n(U(Rm                  U5        U(Rm                  U5        U(Rm                  U5        U(Rm                  U5        U'Ro                  U(5        U$R                  U'5        [        5       n)[k        5       n*U*Rm                  U5        U*Rm                  U5        U*Rm                  U5        U*Rm                  U5        U)Ro                  U*5        U$R                  U)5        [        5       n+[k        5       n,U,Rm                  U5        U,Rm                  U5        U,Rm                  U 5        U,Rm                  U"5        U+Ro                  U,5        U$R                  U+5        U R                  Rp                  Rs                  U Rt                  5        U R                  Rp                  Rs                  U Rv                  5        U R"                  Rx                  Rs                  U Rz                  5        U R.                  Rp                  Rs                  U R|                  5        U R2                  Rx                  Rs                  U R~                  5        U R6                  Rx                  Rs                  U R                  5        U R:                  Rx                  Rs                  U R                  5        U R@                  Rp                  Rs                  U R                  5        U RB                  Rx                  Rs                  U R                  5        U RF                  Rx                  Rs                  U R                  5        U RJ                  Rx                  Rs                  U R                  5        U RP                  Rp                  Rs                  U R                  5        U RR                  Rx                  Rs                  U R                  5        U RV                  Rx                  Rs                  U R                  5        U RZ                  Rx                  Rs                  U R                  5        U R`                  Rp                  Rs                  U R                  5        U Rb                  Rx                  Rs                  U R                  5        U Rf                  Rx                  Rs                  U R                  5        g )NzFrom:r   ii  2   zTo:r6   i zA1:   zF1:g      ?   zP1:ih  zD1:   zA2:zF2:zP2:zD2:zA3:zF3:zP3:zD3:zA4:zF4:zP4:zD4:)M	QGroupBoxr)   r+   QLabel	QLineEditstrr;   X0EditsetValidatorQIntValidatorr*   X1Editr,   QSliderQtOrientation
HorizontalSliderA1setRangesetValuer<   setSingleStepr=   F1EditQDoubleValidatorSliderP1r>   SliderD1r?   SliderA2r@   rA   F2EditSliderP2rB   SliderD2rC   SliderA3rD   rE   F3EditSliderP3rF   SliderD3rG   SliderA4rH   rI   F4EditSliderP4rJ   SliderD4rK   QVBoxLayout	addLayoutr.   textChangedconnect
X0_changed
X1_changedvalueChanged
A1_changed
F1_changed
P1_changed
D1_changed
A2_changed
F2_changed
P2_changed
D2_changed
A3_changed
F3_changed
P3_changed
D3_changed
A4_changed
F4_changed
P4_changed
D4_changed)-r   hbox0X0LabelX1Labelhbox00A1Labelhbox01F1Labelhbox02P1Labelhbox03D1Labelhbox10A2Labelhbox11F2Labelhbox12P2Labelhbox13D2Labelhbox20A3Labelhbox21F3Labelhbox22P3Labelhbox23D3Labelhbox30A4Labelhbox31F4Labelhbox32P4Labelhbox33D4LabelvboxG1ghbox1G2ghbox2G3ghbox3G4ghbox4s-                                                r   r'   MainGUI.CreateParameterTabE   sO   %K/DFF1I/  tC!89!!"%-DFF1I/  q!89!!"% $ $- 9 9:q$tww'##A&!'-DGG-  !1!C!:;!!"%!%- 9 9:q%tww'##A&!'- 9 9:q%tww'##A&!'- 9 9:q$tww'##A&!'-DGG-  !1!C!:;!!"%!%- 9 9:q%tww'##A&!'- 9 9:q%tww'##A&!'- 9 9:q$tww'##A&!'-DGG-  !1!C!:;!!"%!%- 9 9:q%tww'##A&!'- 9 9:q%tww'##A&!'- 9 9:q$tww'##A&!'-DGG-  !1!C!:;!!"%!%- 9 9:q%tww'##A&!'- 9 9:q%tww'##A&!'4,,-u[    
Vr[    
Vr[    
Vr[    
Vr''8''8""**4??;''8""**4??;""**4??;""**4??;''8""**4??;""**4??;""**4??;''8""**4??;""**4??;""**4??;''8""**4??;""**4??;r   c           
      l   [        5       U l        [        5       n[        5       U l        U R                  R                  SSSSSSS9  U R                  R                  R                  S5        [        U R                  5      U l	        U R                  R                  U5        U R                  R                  / SQ5      U l        U R                  R                  / / [        S   S   [        [         R"                  R%                  S5      S-  5         S9u  U l        U R                  R)                  S	5        U R                  R+                  S
5        U R                  R-                  5         U R                  R/                  5         [1        U R                  5      nUR3                  U R                  5        g )Nr   r6   )leftbottomrighttopwspacehspacez#000)r   r   r6   r6   r9   r:   )coffequal)rX   r-   r!   r   figsubplots_adjustpatchset_facecolorFigureCanvascanvas	setParentadd_axesaxplotr   rL   rM   rN   rO   ax_dataaxis
set_aspecttight_layoutdrawrx   r,   )r   dVr   s      r   r(   MainGUI.CreateDataVisualization  s0   !*Y8  a!TU V$$V,"488,b!((##I.RYz-B2-Fs299>>Z[K\]_K_G`-abU7#4112t{{#r   c                 >   U R                  5       u  pU R                  R                  U5        U R                  R                  U5        U R                  R                  [        R                  " U5      S-  [        R                  " U5      S-  /5        U R                  R                  [        R                  " U5      S-  [        R                  " U5      S-  /5        U R                  R                  U R                  5        U R                  R                  5         g )Ng?)Harmonographr   	set_xdata	set_ydatar   set_xlimrM   minmaxset_ylim	set_colorrP   r   r   )r   xys      r   r   MainGUI.UpdateDataVisualization/  s    !q!q!"&&)C-q	#67"&&)C-q	#67tzz*r   c                    [         R                  " U R                  S   U R                  S   U R                  S   S-  5      nU R                  S-  U R                  U R
                  S-  [         R                  -  U R                  S-  /U R                  S-  U R                  U R                  S-  [         R                  -  U R                  S-  //nU R                  S-  U R                  U R                  S-  [         R                  -  U R                  S-  /U R                   S-  U R"                  U R$                  S-  [         R                  -  U R&                  S-  //n[         R(                  " U Vs/ s HH  oDS   [         R*                  " US   U-  US   -   5      -  [         R,                  " US   * U-  5      -  PMJ     snSS9n[         R(                  " U Vs/ s HH  oDS   [         R*                  " US   U-  US   -   5      -  [         R,                  " US   * U-  5      -  PMJ     snSS9nXV4$ s  snf s  snf )	Nr   r6   r5   r8   g     j@   rV   )r   )rM   linspacer;   r<   r=   r>   pir?   rD   rE   rF   rG   r@   rA   rB   rC   rH   rI   rJ   rK   sumsinexp)r   tp0p1pr   r   s          r   r   MainGUI.Harmonograph8  s   KKq	$&&)DFF1IbL9wwrz$''$''#+bee"3DGGCK@$''"*TWWUYU\U\]`U`acafafUfgkgngnorgrAstwwrz$''$''#+bee"3DGGCK@$''"*TWWUYU\U\]`U`acafafUfgkgngnorgrAstFFbIbaD!Qqt,,RVVQqTE!G_<bIqQFFbIbaD!Qqt,,RVVQqTE!G_<bIqQs
 JIs   7AH8 AH=c                 b    US;  a)  [        U5      U R                  S'   U R                  5         g g )N -.r   rL   r;   r   r   r   s     r   r|   MainGUI.X0_changed@  s,    L ADFF1I((* !r   c                     US;  aF  [        U5      U R                  S   :  a)  [        U5      U R                  S'   U R                  5         g g g )Nr   r   r6   r   r   s     r   r}   MainGUI.X1_changedE  sB    L SVdffQi%7ADFF1I((* &8 r   c                 b    U R                   R                  5       U l        U R                  5         g N)rd   valuer<   r   rQ   s    r   r   MainGUI.A1_changedJ  "    --%%'$$&r   c                 `    US:w  a(  US:w  a!  [        U5      U l        U R                  5         g g g Nr   r   )floatr=   r   r   s     r   r   MainGUI.F1_changedN  -    7qCxAhDG((*  7r   c                 b    U R                   R                  5       U l        U R                  5         g r   )rj   r   r>   r   rQ   s    r   r   MainGUI.P1_changedS  r   r   c                 b    U R                   R                  5       U l        U R                  5         g r   )rk   r   r?   r   rQ   s    r   r   MainGUI.D1_changedW  r   r   c                 b    U R                   R                  5       U l        U R                  5         g r   )rl   r   r@   r   rQ   s    r   r   MainGUI.A2_changed[  r   r   c                 `    US:w  a(  US:w  a!  [        U5      U l        U R                  5         g g g r   )r   rA   r   r   s     r   r   MainGUI.F2_changed_  r  r   c                 b    U R                   R                  5       U l        U R                  5         g r   )rn   r   rB   r   rQ   s    r   r   MainGUI.P2_changedd  r   r   c                 b    U R                   R                  5       U l        U R                  5         g r   )ro   r   rC   r   rQ   s    r   r   MainGUI.D2_changedh  r   r   c                 b    U R                   R                  5       U l        U R                  5         g r   )rp   r   rD   r   rQ   s    r   r   MainGUI.A3_changedl  r   r   c                 `    US:w  a(  US:w  a!  [        U5      U l        U R                  5         g g g r   )r   rE   r   r   s     r   r   MainGUI.F3_changedp  r  r   c                 b    U R                   R                  5       U l        U R                  5         g r   )rr   r   rF   r   rQ   s    r   r   MainGUI.P3_changedu  r   r   c                 b    U R                   R                  5       U l        U R                  5         g r   )rs   r   rG   r   rQ   s    r   r   MainGUI.D3_changedy  r   r   c                 b    U R                   R                  5       U l        U R                  5         g r   )rt   r   rH   r   rQ   s    r   r   MainGUI.A4_changed}  r   r   c                 `    US:w  a(  US:w  a!  [        U5      U l        U R                  5         g g g r   )r   rI   r   r   s     r   r   MainGUI.F4_changed  r  r   c                 b    U R                   R                  5       U l        U R                  5         g r   )rv   r   rJ   r   rQ   s    r   r   MainGUI.P4_changed  r   r   c                 b    U R                   R                  5       U l        U R                  5         g r   )rw   r   rK   r   rQ   s    r   r   MainGUI.D4_changed  r   r   c                     UR                  5       [        R                  R                  :X  aN  [        S   S   [        [        R                  R                  S5      S-  5         U l	        U R                  5         g g )Nr9   r:   r6   )keyra   KeyKey_Cr   rL   rM   rN   rO   rP   r   )r   es     r   keyPressEventMainGUI.keyPressEvent  sV    557bffll"":.r23ryy~~a7H7K3LMDJ((* #r   )+r<   r@   rD   rH   r?   rC   rG   rK   r-   r=   rh   rA   rm   rE   rq   rI   ru   r"   r>   rB   rF   rJ   r)   rd   rl   rp   rt   rk   ro   rs   rw   rj   rn   rr   rv   r;   r\   r_   r   r   r   rP   r   r   )__name__
__module____qualname____firstlineno__r   r   r&   r'   r(   r   r   r|   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r$  __static_attributes__ r   r   r   r      s    '&&J(U<n$&+
+
'+
'''+
'''+
'''+
''+r   r   __main__r   zUsage: %prog [options] files)descriptionusage)/ossysnumpyrM   
matplotlibPyQt6.QtGuiPyQt6.QtCorePyQt6.QtWidgets!matplotlib.backends.backend_qtaggr   r   r   NavigationToolbarmatplotlib.figurer   matplotlib.pyplotpyplotppargparser   datetimer   r   warningsfilterwarnings	itertoolsyellowbrick.style.palettesr
   r   r   yellowbrick.styler   rcParamsupdater   r   r&  r   
parse_argsargsQApplicationargvappformshowexitexecr+  r   r   <module>rN     s          | $  #       !  I I )   y9`gw~  OV  W  X|+k |+F z3-KLA<<>D
sxx
 C9DIIKHHSXXZ r   