
    q]zi&                        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        \R2                  R5                  SSS	S	S	S
.5         " S S\5      r\S:X  aa  \" SSS9r\R?                  5       r \!" \RD                  5      r#\" 5       r$\$RK                  5         \RL                  " \#RO                  5       5        gg)    N)*)FigureCanvasQTAggNavigationToolbar2QT)Figure)ArgumentParser)dateignorez#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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g)MainGUI   Nc                     [         R                  X5        [        R                  " 5       S:  a  [        S5        [        eU R                  5         U R                  5         U R                  5         g )Ni `kzKPlease download a new version from https://streubel.unl.edu/STARTSMART.html)QMainWindow__init__timeprint
SystemExitinitUI	GreenFuncUpdateDataVisualization)selfparents     ChladniPlate.pyr   MainGUI.__init__   sL    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; }P   u"   ⌘ Streubel Lab Chladni Plate ⌘i  i  )QWidgetMainsetWindowIconQIconsetStyleSheetinitParametersCreateParameterTabCreateDataVisualizationParameterTabsetFixedHeightQVBoxLayout	addWidgetDataVisualization	setLayoutsetWindowTitlesetCentralWidgetsetMinimumSize)r   vboxs     r   r   MainGUI.initUI   s    I	5,-  H  	I!$$&((,}t(()t--.		D!@Adii(D%r   c                 2   SS/U l         [        R                  " SU R                   S   U R                   S   -   U R                   S   5      U l        SU l        SU l        SU l        SU l        / SQU l        [        R                  " S	S	/5      U l
        S
U l        [        R                  " [        R                  " SU R
                  U R                  5      [        R                  " SU R
                  U R                  5      5      U l        SU l        / U l        g )N   gMbP?r      
      z:1.363,1.672,1.816,1.942,2.368,2.55,2.643,2.739,2.931,3.315)
g+?gn?guV?gOn?gl@gffffff@g/$@gx@g r@gQ
@g      ?i  )XnparangetindexLN
kListInputkListarrayr0Nrmeshgridlinspacer
SliderStepGFr   s    r   r#   MainGUI.initParameters/   s    d1TVVAYtvvay0;
VQ
((Br7#R[[466$'':2;;qPTPWPW;XYr   c                 	   [        5       U l        [        5       n[        S5      U l        U R                  R                  S5        U R                  R                  S5        UR                  U R                  5        [        5       n[        S5      n[        [        U R                  5      5      U l        U R                  R                  S5        UR                  U5        UR                  U R                  5        [        5       n[        S5      n[        [        U R                  S   5      5      U l        U R                  R!                  [#        SSS	5      5        U R                  R                  S
5        [        [        U R                  S   5      5      U l        U R$                  R!                  [#        SSS	5      5        U R$                  R                  S
5        UR                  U5        UR                  U R                  5        UR                  U R$                  5        [        5       n[        S5      n[        [        U R&                  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                  5      nUR-                  U5        UR/                  [1        SS[2        R4                  R6                  [2        R4                  R8                  5      5        UR-                  U5        UR/                  [1        SS[2        R4                  R6                  [2        R4                  R8                  5      5        UR-                  U5        UR/                  [1        SS[2        R4                  R6                  [2        R4                  R8                  5      5        UR-                  U5        U R                  R:                  R=                  U R>                  5        U R                  R@                  R=                  U RB                  5        U R                  R@                  R=                  U RD                  5        U R$                  R@                  R=                  U RF                  5        U R(                  R@                  R=                  U RH                  5        g )N	Calculated   Tz(Eigenvalue series, e.g. (1.3, 3.5, 0.2):r2   z"Excitation at [center: (0.5,0.5)]:r   r3      (   zNumber of eigenfunctions:r4      )%	QGroupBoxr&   QHBoxLayoutQPushButton	RunButtonsetMaximumWidthsetCheckabler)   QLabel	QLineEditstrr=   	kListEditsetFixedWidthr@   r0xEditsetValidatorQDoubleValidatorr0yEditr<   NEditQIntValidator	addLayoutaddSpacerItemQSpacerItemQSizePolicyPolicyMinimum	ExpandingclickedconnectRuntextChangedkList_changedr0x_changedr0y_changed	N_changed)	r   hbox0hbox2kLabelhbox3r0Labelhbox5NLabelhboxs	            r   r$   MainGUI.CreateParameterTab=   sH   %K$[1&&s+##D)'BC"3t#78$$S)'=> TWWQZ1!!"21Qq"9:""2& TWWQZ1!!"21Qq"9:""2& %% 34s466{+


a 45

  $

#4,,-u;r"k.@.@.H.H+J\J\JfJfghu;r"k.@.@.H.H+J\J\JfJfghu;r"k.@.@.H.H+J\J\JfJfgh 	u&&txx0""**4+=+=>  (()9)9:  (()9)9:

&&t~~6r   c           	         [        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5      U R                  R                  S5      /U l        U R                  S   R                  SS/SS//SS[        R                  " S5      S	9U l        U R                  S   R                  SS/SS//SSS
9U l        U R                  S   R                  S5        U R                  S   R                  S5        U R                  S   R%                  S5        U R                  S   R%                  S5        U R                  S   R'                  S5        U R                  S   R'                  S5        U R                  R)                  5         U R                  S   R+                  SSSSSSS9U l        U R                  R/                  5         [1        [2        R4                  R6                  U5      U l        U R8                  R;                  S[=        [?        U R@                  5      S-
  S5      5        U R8                  RC                  S5        U R8                  RE                  S5        [G        U R                  5      nU R8                  RH                  [J           RM                  U RN                  5        URQ                  U R                  5        URQ                  U R8                  5        g )Nr   r3   )leftbottomrighttopwspacehspacez#000y   z   g?plasma)vminvmaxcmap)r   r   offequalg?g      HELLOrz   centerr
   )vahacolor))rO   r*   r   r   figsubplots_adjustpatchset_facecolorFigureCanvascanvas	setParentadd_subplotaximshowppget_cmapax_data1ax_data2axis
set_aspecttight_layouttextinfoDisplaydrawQSliderQtOrientation
HorizontalSlidersetRangemaxlenrF   setValuesetSingleStepr(   valueChangedintrh   Index_changedr)   )r   dVr/   s      r   r%   MainGUI.CreateDataVisualization{   s   !*Y8  a!TU V$$V,"488,b!88'',TXX-A-A#-FG
))Aa5!A-RQbkkZbNc)d
))Aa5!A-QA)F
  (
  (


g&
g&771:??4Gx8Za?bbnn77<Qs3tww<>!45Q!!!$4112  %--d.@.@At{{#t{{#r   c                 n   US:X  a  U R                   nU R                  R                  SU R                  U   -
  5        U R                  R                  U R                  U   5        [
        R                  " U R                  U R                  U R                      S9  U R                  R                  5         g )Nr3   )r   )r:   r   set_datarF   r   r   setpr   r>   r   r   )r   r:   s     r   r   MainGUI.UpdateDataVisualization   s|    B;JJEq/0twwu~.
  djj&<=r   c                    SU R                   -  [        R                  " U[        R                  -  U R                   -  US   -  5      -  [        R                  " U[        R                  -  U R                   -  US   -  5      -  $ N   r   r3   )r;   r7   cospi)r   rD   nms       r   EigenFMainGUI.EigenF   s^    xqwtvv~ad233BFF1RUU7466>!A$;N4OOOr   c                    [         R                  " [         R                  " U R                  5      [         R                  " U R                  5      5      u  pUR	                  5       nUR	                  5       n/ U l        U R                   H  n[         R                  " [         R                  " [        X5       VVs/ s H  u  pEU R                  U R                  XE5      U R                  U R                  U R                  -  XE5      -  US-  US-  US-  -   [         R                  S-  -  U R                  S-  -  -
  -  PM     snnS5      5      nU[         R                  " U5      -  nU R
                  R!                  U5        M     U R"                  R%                  S[        ['        U R
                  5      S-
  S5      5        g s  snnf r   )r7   rB   r8   r<   flattenrF   r>   abssumzipr   rD   r@   r;   r   r   appendr   r   r   )r   nnmmkr   r   gfs          r   r   MainGUI.GreenFunc   s   BIIdff-bii.?@ZZ\ZZ\A  JM  NP  JT   U  JT  CF  CDDFF1 7DGGDFFNST8W WYZ\]Y]_`bc_cdeghdh_hjljojoqrjr^rswsysy{|s|^|Y| }  JT   U  VW  X  YB"&&*BGGNN2	  	Qs3tww<>!45	  Us   :BGc                     U R                   R                  5       (       aW  U R                  R                  S5        U R	                  5         U R                   R                  S5        U R                  5         g g )Nr   F)rR   	isCheckedr   r   r   
setCheckedr   rG   s    r   ri   MainGUI.Run   sT    >>##%%KK  #NNNN%%e,((*	 &r   c                     UR                  SS5      nUR                  S5      S:X  aF  UR                  S5      S:X  a1  UR                  S5       Vs/ s H  n[        U5      PM     snU l        g UR                  SS5      R                  SS5      R                  S5       Vs/ s H"  o"R                  S5      R                  S5      PM$     nn/ nU H#  nUR                  UR                  S	5      5        M%     U Vs/ s HC  o"R                  S5      S
:  a(  UR                  S5      S
   UR                  S5      S   /OUS/PME     nn/ U l        U Hp  n[        SUS
   -   S-   5      US   R                  S5      R                  S5      R                  S5       Vs/ s H  owS:w  d  M
  [        U5      PM     sn-   U l        Mr     g s  snf s  snf s  snf s  snf !    g = f)N  (r   ),z)(z),(z,(r   r3   z.list(np.append(self.kList,np.around(np.arange(z),4))))	replacefindsplitfloatr>   lstriprstripextendeval)r   r9   r   rD   rrr   lws           r   rk   MainGUI.kList_changed   s   			#b!Asr!sr(901=1eAh=
89		#b8I8Q8QRVW\8]8c8cdi8jk8j1XXc]))#.8jkAIIaggdm, ]_`]_XY&&+a-aggcl1oaggcl1o6aPRVS]_`
A!%&VWXYZW[&[\d&d!eyz{|y}  zE  zE  FI  zJ  zQ  zQ  RU  zV  z\  z\  ]`  za  gm  zatu  jl  elgoglmngo  za  gm  "mDJ  >k a gm	sP   AG G&G /3G ")G1G <A
GAG 	G(G7G G Gc                 $    [        U5      U l        g N)r   r   r   r9   s     r   	k_changedMainGUI.k_changed   s    qr   c                 B    US;  a  [        U5      U R                  S'   g g )Nr   .r   r   r@   r   s     r   rl   MainGUI.r0x_changed        HqDGGAJ r   c                 B    US;  a  [        U5      U R                  S'   g g )Nr   r3   r   r   s     r   rm   MainGUI.r0y_changed   r   r   c                 $    [        U5      U l        g r   )r   r;   r   s     r   	L_changedMainGUI.L_changed       Qr   c                 $    [        U5      U l        g r   )r   r<   r   s     r   rn   MainGUI.N_changed   r   r   c                 b    U R                   R                  5       U l        U R                  5         g r   )r   valuer:   r   rG   s    r   r   MainGUI.Index_changed   s"    [[&&(
$$&r   c                 d   UR                  5       [        R                  R                  :X  at  [	        U R
                  5      S:  aZ  U R                  U R                  -   [	        U R
                  5      -  U l        U R                  R                  U R                  5        g g UR                  5       [        R                  R                  :X  at  [	        U R
                  5      S:  aZ  U R                  U R                  -
  [	        U R
                  5      -  U l        U R                  R                  U R                  5        g g UR                  5       [        R                  R                  :X  d,  UR                  5       [        R                  R                  :X  a.  U R                  S:X  a  SU l        g U =R                  S-  sl        g UR                  5       [        R                  R                  :X  a>  U R                  S:  a  U =R                  S-  sl        U R                  S:X  a  SU l        g g g )Nr   r3   r   )keyr   Key
Key_Periodr   rF   r:   rE   r   r   	Key_CommaKey_Plus	Key_Equal	Key_Minus)r   es     r   keyPressEventMainGUI.keyPressEvent   sk   557bff'''477|a"jj$//93tww<G
$$TZZ0   UUW(((477|a"jj$//93tww<G
$$TZZ0   eeg(AEEGrvv7G7G,G!#"#1$UUW(((!#1$!#"# $ )r   )r*   rF   r;   r   r<   r^   rA   r&   rR   r   rE   r6   r   r   r   r   r   r:   r   r   r>   rX   r=   rD   r@   rZ   r]   r9   r   )r   )__name__
__module____qualname____firstlineno__r   r   r#   r$   r%   r   r   r   ri   rk   r   rl   rm   r   rn   r   r   __static_attributes__ r   r   r   r      sZ    '&&<7|$@P6+"""'$r   r   __main__r   zUsage: %prog [options] files)descriptionusage)(ossysnumpyr7   
matplotlibPyQt6.QtGuiPyQt6.QtCorePyQt6.QtWidgets!matplotlib.backends.backend_qtaggr   r   r   NavigationToolbarmatplotlib.figurer   matplotlib.pyplotpyplotr   argparser   datetimer   r   warningsfilterwarningsrcParamsupdater   r   r   p
parse_argsargsQApplicationargvappformshowexitexecr  r   r   <module>r$     s          | $  #       !   y9`gw~  OV  W  Xb$k b$H z3-KLA<<>D
sxx
 C9DIIKHHSXXZ r   