param_digits.py 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Fri Mar 15 11:47:02 2024
  4. @author: zilya
  5. """
  6. import tkinter as tk
  7. import tkinter.filedialog
  8. from types import SimpleNamespace
  9. from math import ceil
  10. import json
  11. def param_set_lim(M0_dj,param_list,lim,param):
  12. if 'sl_nb' in param_list:
  13. M0_dj.label_sl_nb_min.configure(text = str(ceil(lim.sl_nb_min)))
  14. M0_dj.label_sl_nb_max.configure(text = str(ceil(lim.sl_nb_max)))
  15. if 'sl_thkn' in param_list:
  16. M0_dj.label_sl_thkn_min.configure(text = str(ceil(lim.sl_thkn_min*1000)/1000))
  17. M0_dj.label_sl_thkn_max.configure(text = str(ceil(lim.sl_thkn_max*1000)/1000))
  18. if 'sl_gap' in param_list:
  19. M0_dj.label_sl_gap_min.configure(text = str(ceil(lim.sl_gap_min)))
  20. M0_dj.label_sl_gap_max.configure(text = str(ceil(lim.sl_gap_max)))
  21. if 'slab_thkn' in param_list:
  22. M0_dj.label_slab_thkn_min.configure(text = str(ceil(lim.slab_thkn_min*1000)/1000))
  23. M0_dj.label_slab_thkn_max.configure(text = str(ceil(lim.slab_thkn_max*1000)/1000))
  24. if 'FoV_f' in param_list:
  25. M0_dj.label_FoV_f_min.configure(text = str(ceil(lim.FoV_f_min*1000)/1000))
  26. M0_dj.label_FoV_f_max.configure(text = str(ceil(lim.FoV_f_max*1000)/1000))
  27. if 'FoV_p_image' in param_list:
  28. M0_dj.label_FoV_p_image_min.configure(text = str(ceil(lim.FoV_p_image_min*1000)/1000))
  29. M0_dj.label_FoV_p_image_max.configure(text = str(ceil(lim.FoV_p_image_max*1000)/1000))
  30. if 'Nf' in param_list:
  31. M0_dj.label_Nf_min.configure(text = str(ceil(lim.Nf_min)))
  32. M0_dj.label_Nf_max.configure(text = str(ceil(lim.Nf_max)))
  33. if 'Np_image' in param_list:
  34. M0_dj.label_Np_image_min.configure(text = str(ceil(lim.Np_image_min)))
  35. M0_dj.label_Np_image_max.configure(text = str(ceil(lim.Np_image_max)))
  36. M0_dj.label_Acq_matrix_v.configure(text = str(ceil(param.Nf)) + "x" + str(ceil(param.Np)))
  37. if 'Nss' in param_list:
  38. M0_dj.label_Nss_min.configure(text = str(ceil(lim.Nss_min)))
  39. M0_dj.label_Nss_max.configure(text = str(ceil(lim.Nss_max)))
  40. if 'BW_pixel' in param_list:
  41. M0_dj.label_BW_pixel_min.configure(text = str(ceil(lim.BW_pixel_min)))
  42. M0_dj.label_BW_pixel_max.configure(text = str(ceil(lim.BW_pixel_max)))
  43. if 'TE' in param_list:
  44. M0_dj.label_TE_min.configure(text = str(ceil(lim.TE_min*1000)/1000))
  45. M0_dj.label_TE_max.configure(text = str(ceil(lim.TE_max*1000)/1000))
  46. if 'N_TE' in param_list:
  47. M0_dj.label_N_TE_min.configure(text = str(ceil(lim.N_TE_min)))
  48. M0_dj.label_N_TE_max.configure(text = str(ceil(lim.N_TE_max)))
  49. M0_dj.label_N_TE_1v.configure(text = str(ceil(param.ES*1000)/1000))
  50. M0_dj.label_N_TE_2v.configure(text = str(ceil(param.TE*1000)/1000))
  51. if 'IE' in param_list:
  52. M0_dj.label_IE_min.configure(text = str(ceil(lim.IE_min*1000)/1000))
  53. M0_dj.label_IE_max.configure(text = str(ceil(lim.IE_max*10000)/10000))
  54. if 'ETL' in param_list:
  55. M0_dj.label_ETL_min.configure(text = str(lim.ETL_min))
  56. M0_dj.label_ETL_max.configure(text = str(lim.ETL_max))
  57. if 'contrasts' in param_list:
  58. M0_dj.label_contrasts_min.configure(text = str(ceil(lim.contrasts_min)))
  59. M0_dj.label_contrasts_max.configure(text = str(lim.contrasts_max))
  60. if 'concats' in param_list:
  61. M0_dj.label_concats_min.configure(text = str(lim.concats_min))
  62. M0_dj.label_concats_max.configure(text = str(lim.concats_max))
  63. if 'TR' in param_list:
  64. M0_dj.label_TR_min.configure(text = str(ceil(lim.TR_min*100)/100))
  65. M0_dj.label_TR_max.configure(text = str(ceil(lim.TR_max*100)/100))
  66. if 'TD' in param_list:
  67. M0_dj.label_TD_min.configure(text = str(ceil(lim.TD_min*100)/100))
  68. M0_dj.label_TD_max.configure(text = str(ceil(lim.TD_max*100)/100))
  69. if 'FA' in param_list:
  70. M0_dj.label_FA_min.configure(text = str(ceil(lim.FA_min)))
  71. M0_dj.label_FA_max.configure(text = str(ceil(lim.FA_max)))
  72. if 'RA' in param_list:
  73. M0_dj.label_RA_min.configure(text = str(ceil(lim.RA_min)))
  74. M0_dj.label_RA_max.configure(text = str(ceil(lim.RA_max)))
  75. if 'spoil_strenght' in param_list:
  76. M0_dj.label_spoil_strenght_min.configure(text = str(ceil(lim.spoil_strenght_min)))
  77. M0_dj.label_spoil_strenght_max.configure(text = str(ceil(lim.spoil_strenght_max)))
  78. if 'RF_spoil' in param_list:
  79. M0_dj.label_RF_spoil_min.configure(text = str(ceil(lim.RF_spoil_min)))
  80. M0_dj.label_RF_spoil_max.configure(text = str(ceil(lim.RF_spoil_max)))
  81. if 'average' in param_list:
  82. M0_dj.label_average_min.configure(text = str(ceil(lim.average_min)))
  83. M0_dj.label_average_max.configure(text = str(ceil(lim.average_max)))
  84. if 'D_scans' in param_list:
  85. M0_dj.label_D_scans_min.configure(text = str(ceil(lim.D_scans_min)))
  86. M0_dj.label_D_scans_max.configure(text = str(ceil(lim.D_scans_max)))
  87. if 'ph_over_phase' in param_list:
  88. M0_dj.label_ph_over_phase_min.configure(text = str(ceil(lim.ph_over_phase_min)))
  89. M0_dj.label_ph_over_phase_max.configure(text = str(ceil(lim.ph_over_phase_max)))
  90. if 'ph_over_slice' in param_list:
  91. M0_dj.label_ph_over_slice_min.configure(text = str(ceil(lim.ph_over_slice_min)))
  92. M0_dj.label_ph_over_slice_max.configure(text = str(ceil(lim.ph_over_slice_max)))
  93. if 'TI' in param_list:
  94. M0_dj.label_TI_min.configure(text = str(ceil(lim.TI_min*100)/100))
  95. M0_dj.label_TI_max.configure(text = str(ceil(lim.TI_max*100)/100))
  96. if 'N_TI' in param_list:
  97. M0_dj.label_N_TI_min.configure(text = str(ceil(lim.N_TI_min)))
  98. M0_dj.label_N_TI_max.configure(text = str(ceil(lim.N_TI_max*1000)/1000))
  99. M0_dj.label_TI_eff_v.configure(text = str(ceil(param.TI_eff*1000)/1000))
  100. if 'b' in param_list:
  101. M0_dj.label_b_min.configure(text = str(ceil(lim.b_min)))
  102. M0_dj.label_b_max.configure(text = str(ceil(lim.b_max)))
  103. if 'sat_sl_thkn' in param_list:
  104. M0_dj.label_sat_sl_thkn_min.configure(text = str(ceil(lim.sat_sl_thkn_min*10000)/10000))
  105. M0_dj.label_sat_sl_thkn_max.configure(text = str(ceil(lim.sat_sl_thkn_max*10000)/10000))
  106. if 'distance_ex_sat' in param_list:
  107. M0_dj.label_distance_ex_sat_min.configure(text = str(ceil(lim.distance_ex_sat_min)))
  108. M0_dj.label_distance_ex_sat_max.configure(text = str(ceil(lim.distance_ex_sat_max)))
  109. def param_dj_get(M0_dj,param_list):
  110. param_get = SimpleNamespace()
  111. if 'sl_nb' in param_list:
  112. param_get.sl_nb = int(M0_dj.textBox_sl_nb.get())
  113. if 'sl_thkn' in param_list:
  114. param_get.sl_thkn = float(M0_dj.textBox_sl_thkn.get())
  115. if 'sl_gap' in param_list:
  116. param_get.sl_gap = float(M0_dj.textBox_sl_gap.get())
  117. if 'slab_thkn' in param_list:
  118. param_get.slab_thkn = float(M0_dj.textBox_slab_thkn.get())
  119. if 'FoV_f' in param_list:
  120. param_get.FoV_f = float(M0_dj.textBox_FoV_f.get())
  121. if 'FoV_p_image' in param_list:
  122. param_get.FoV_p_image = float(M0_dj.textBox_FoV_p_image.get())
  123. if 'Nf' in param_list:
  124. param_get.Nf = float(M0_dj.textBox_Nf.get())
  125. if 'Np_image' in param_list:
  126. param_get.Np_image = float(M0_dj.textBox_Np_image.get())
  127. if 'Nss' in param_list:
  128. param_get.Nss = float(M0_dj.textBox_Nss.get())
  129. if 'BW_pixel' in param_list:
  130. param_get.BW_pixel = float(M0_dj.textBox_BW_pixel.get())
  131. if 'TE' in param_list:
  132. param_get.TE = float(M0_dj.textBox_TE.get())
  133. if 'N_TE' in param_list:
  134. param_get.N_TE = float(M0_dj.textBox_N_TE.get())
  135. if 'IE' in param_list:
  136. param_get.IE = float(M0_dj.textBox_IE.get())
  137. if 'ETL' in param_list:
  138. param_get.ETL = float(M0_dj.textBox_ETL.get())
  139. if 'contrasts' in param_list:
  140. param_get.contrasts = int(M0_dj.textBox_contrasts.get())
  141. if 'concats' in param_list:
  142. param_get.concats = int(M0_dj.textBox_concats.get())
  143. if 'TR' in param_list:
  144. param_get.TR = float(M0_dj.textBox_TR.get())
  145. if 'TD' in param_list:
  146. param_get.TD = float(M0_dj.textBox_TD.get())
  147. if 'FA' in param_list:
  148. param_get.FA = float(M0_dj.textBox_FA.get())
  149. if 'RA' in param_list:
  150. param_get.RA = float(M0_dj.textBox_RA.get())
  151. if 'spoil_strenght' in param_list:
  152. param_get.spoil_strenght = float(M0_dj.textBox_spoil_strenght.get())
  153. if 'RF_spoil' in param_list:
  154. param_get.RF_spoil = float(M0_dj.textBox_RF_spoil.get())
  155. if 'average' in param_list:
  156. param_get.average = int(M0_dj.textBox_average.get())
  157. if 'D_scans' in param_list:
  158. param_get.D_scans = int(M0_dj.textBox_D_scans.get())
  159. if 'ph_over_phase' in param_list:
  160. param_get.ph_over_phase = float(M0_dj.textBox_ph_over_phase.get())
  161. if 'ph_over_slice' in param_list:
  162. param_get.ph_over_slice = float(M0_dj.textBox_ph_over_slice.get())
  163. if 'part_fourier_factor_phase' in param_list:
  164. param_get.part_fourier_factor_phase = float(M0_dj.textBox_part_fourier_factor_phase.get())
  165. if 'part_fourier_factor_slice' in param_list:
  166. param_get.part_fourier_factor_slice = float(M0_dj.textBox_part_fourier_factor_slice.get())
  167. param_get.ZF = False
  168. if M0_dj.radio_ZF.get() == 2:
  169. param_get.ZF = True
  170. param_get.FS = False
  171. param_get.SPAIR = False
  172. param_get.WS = False
  173. param_get.WE = False
  174. param_get.IR = False
  175. param_get.DIR = False
  176. param_get.TIR = False
  177. param_get.SR = False
  178. param_get.T2_prep_IR = False
  179. if M0_dj.radio_f_w.get() == 11:
  180. param_get.FS = True
  181. if M0_dj.radio_f_w.get() == 12:
  182. param_get.SPAIR = True
  183. if M0_dj.radio_f_w.get() == 13:
  184. param_get.WS = True
  185. if M0_dj.radio_f_w.get() == 14:
  186. param_get.WE = True
  187. if M0_dj.radio_m_p.get() == 21:
  188. param_get.IR = True
  189. if M0_dj.radio_m_p.get() == 22:
  190. param_get.DIR = True
  191. if M0_dj.radio_m_p.get() == 23:
  192. param_get.TIR = True
  193. if M0_dj.radio_m_p.get() == 24:
  194. param_get.SR = True
  195. if M0_dj.radio_m_p.get() == 25:
  196. param_get.T2_prep_IR = True
  197. if 'TI' in param_list:
  198. param_get.TI = float(M0_dj.textBox_TI.get())
  199. if 'N_TI' in param_list:
  200. param_get.N_TI = float(M0_dj.textBox_N_TI.get())
  201. if 'b' in param_list:
  202. param_get.b = float(M0_dj.textBox_b.get())
  203. if 'sat_sl_thkn' in param_list:
  204. param_get.sat_sl_thkn = float(M0_dj.textBox_sat_sl_thkn.get())
  205. if 'distance_ex_sat' in param_list:
  206. param_get.distance_ex_sat = float(M0_dj.textBox_distance_ex_sat.get())
  207. param_get.flow_comp_fr = False
  208. param_get.flow_comp_sl = False
  209. if 'flow_comp' in param_list:
  210. if M0_dj.radio_flow_comp.get() == 2:
  211. param_get.flow_comp_fr = True
  212. if M0_dj.radio_flow_comp.get() == 3:
  213. param_get.flow_comp_sl = True
  214. if M0_dj.radio_flow_comp.get() == 4:
  215. param_get.flow_comp_fr = True
  216. param_get.flow_comp_sl = True
  217. param_get.recomb = False
  218. if 'recomb' in param_list:
  219. if M0_dj.radio_recomb.get() == 2:
  220. param_get.recomb = True
  221. return param_get
  222. def read_json(Main,M0_dj,param_list):
  223. filepath = tk.filedialog.askopenfilename()
  224. if filepath != "":
  225. with open(filepath, "r") as file:
  226. params_j = json.load(file)
  227. if 'sl_nb' in param_list:
  228. M0_dj.textBox_sl_nb.delete(0, 'end'); M0_dj.textBox_sl_nb.insert(0, params_j['sl_nb'])
  229. if 'sl_thkn' in param_list:
  230. M0_dj.textBox_sl_thkn.delete(0, 'end'); M0_dj.textBox_sl_thkn.insert(0, params_j['sl_thkn'])
  231. if 'sl_gap' in param_list:
  232. M0_dj.textBox_sl_gap.delete(0, 'end'); M0_dj.textBox_sl_gap.insert(0, params_j['sl_gap'])
  233. if 'slab_thkn' in param_list:
  234. M0_dj.textBox_slab_thkn.delete(0, 'end'); M0_dj.textBox_slab_thkn.insert(0, params_j['slab_thkn'])
  235. if 'FoV_f' in param_list:
  236. M0_dj.textBox_FoV_f.delete(0, 'end'); M0_dj.textBox_FoV_f.insert(0, params_j['FoV_f'])
  237. if 'FoV_p_image' in param_list:
  238. M0_dj.textBox_FoV_p_image.delete(0, 'end'); M0_dj.textBox_FoV_p_image.insert(0, params_j['FoV_p_image'])
  239. if 'Nf' in param_list:
  240. M0_dj.textBox_Nf.delete(0, 'end'); M0_dj.textBox_Nf.insert(0, params_j['Nf'])
  241. if 'Np_image' in param_list:
  242. M0_dj.textBox_Np_image.delete(0, 'end'); M0_dj.textBox_Np_image.insert(0, params_j['Np_image'])
  243. if 'Nss' in param_list:
  244. M0_dj.textBox_Nss.delete(0, 'end'); M0_dj.textBox_Nss.insert(0, params_j['Nss'])
  245. if 'BW_pixel' in param_list:
  246. M0_dj.textBox_BW_pixel.delete(0, 'end'); M0_dj.textBox_BW_pixel.insert(0, params_j['BW_pixel'])
  247. if 'TE' in param_list:
  248. M0_dj.textBox_TE.delete(0, 'end'); M0_dj.textBox_TE.insert(0, params_j['TE'])
  249. if 'N_TE' in param_list:
  250. M0_dj.textBox_N_TE.delete(0, 'end'); M0_dj.textBox_N_TE.insert(0, params_j['N_TE'])
  251. if 'IE' in param_list:
  252. M0_dj.textBox_IE.delete(0, 'end'); M0_dj.textBox_IE.insert(0, params_j['IE'])
  253. if 'ETL' in param_list:
  254. M0_dj.textBox_ETL.delete(0, 'end'); M0_dj.textBox_ETL.insert(0, params_j['ETL'])
  255. if 'contrasts' in param_list:
  256. M0_dj.textBox_contrasts.delete(0, 'end'); M0_dj.textBox_contrasts.insert(0, params_j['contrasts'])
  257. if 'concats' in param_list:
  258. M0_dj.textBox_concats.delete(0, 'end'); M0_dj.textBox_concats.insert(0, params_j['concats'])
  259. if 'TR' in param_list:
  260. M0_dj.textBox_TR.delete(0, 'end'); M0_dj.textBox_TR.insert(0, params_j['TR'])
  261. if 'TD' in param_list:
  262. M0_dj.textBox_TD.delete(0, 'end'); M0_dj.textBox_TD.insert(0, params_j['TD'])
  263. if 'FA' in param_list:
  264. M0_dj.textBox_FA.delete(0, 'end'); M0_dj.textBox_FA.insert(0, params_j['FA'])
  265. if 'RA' in param_list:
  266. M0_dj.textBox_RA.delete(0, 'end'); M0_dj.textBox_RA.insert(0, params_j['RA'])
  267. if 'spoil_strenght' in param_list:
  268. M0_dj.textBox_spoil_strenght.delete(0, 'end'); M0_dj.textBox_spoil_strenght.insert(0, params_j['spoil_strenght'])
  269. if 'RF_spoil' in param_list:
  270. M0_dj.textBox_RF_spoil.delete(0, 'end'); M0_dj.textBox_RF_spoil.insert(0, params_j['RF_spoil'])
  271. if 'average' in param_list:
  272. M0_dj.textBox_average.delete(0, 'end'); M0_dj.textBox_average.insert(0, params_j['average'])
  273. if 'D_scans' in param_list:
  274. M0_dj.textBox_D_scans.delete(0, 'end'); M0_dj.textBox_D_scans.insert(0, params_j['D_scans'])
  275. if 'ph_over_phase' in param_list:
  276. M0_dj.textBox_ph_over_phase.delete(0, 'end'); M0_dj.textBox_ph_over_phase.insert(0, params_j['ph_over_phase'])
  277. if 'ph_over_slice' in param_list:
  278. M0_dj.textBox_ph_over_slice.delete(0, 'end'); M0_dj.textBox_ph_over_slice.insert(0, params_j['ph_over_slice'])
  279. if 'TI' in param_list:
  280. M0_dj.textBox_TI.delete(0, 'end'); M0_dj.textBox_TI.insert(0, params_j['TI'])
  281. if 'N_TI' in param_list:
  282. M0_dj.textBox_N_TI.delete(0, 'end'); M0_dj.textBox_N_TI.insert(0, params_j['N_TI'])
  283. if 'b' in param_list:
  284. M0_dj.textBox_b.delete(0, 'end'); M0_dj.textBox_b.insert(0, params_j['b'])
  285. if 'sat_sl_thkn' in param_list:
  286. M0_dj.textBox_sat_sl_thkn.delete(0, 'end'); M0_dj.textBox_sat_sl_thkn.insert(0, params_j['sat_sl_thkn'])
  287. if 'distance_ex_sat' in param_list:
  288. M0_dj.textBox_distance_ex_sat.delete(0, 'end'); M0_dj.textBox_distance_ex_sat.insert(0, params_j['distance_ex_sat'])
  289. def param_digits_create(Main,M0_dj,param_list,default):
  290. row = 0
  291. M0_dj.label_min = tk.Label(Main, text = "min", width = 10)
  292. M0_dj.label_min.grid(row=row, column=2)
  293. M0_dj.label_max = tk.Label(Main, text = "max", width = 10)
  294. M0_dj.label_max.grid(row=row, column=3)
  295. row += 1
  296. M0_dj.label_1 = tk.Label(Main, text = 'Slice', font="Helvetica 10 bold")
  297. M0_dj.label_1.grid(row=row , column=0,sticky = "E")
  298. row += 1
  299. if 'sl_nb' in param_list:
  300. M0_dj.label_sl_nb = tk.Label(Main, text = 'Slice number')
  301. M0_dj.label_sl_nb.grid(row=row , column=0,sticky = "E")
  302. M0_dj.textBox_sl_nb = tk.Entry(Main,width = 6)
  303. M0_dj.textBox_sl_nb.insert(0, default.sl_nb)
  304. M0_dj.textBox_sl_nb.grid(row=row, column=1)
  305. M0_dj.label_sl_nb_min = tk.Label(Main)
  306. M0_dj.label_sl_nb_min.grid(row=row, column=2)
  307. M0_dj.label_sl_nb_max = tk.Label(Main)
  308. M0_dj.label_sl_nb_max.grid(row=row, column=3)
  309. row += 1
  310. if 'sl_thkn' in param_list:
  311. M0_dj.label_sl_thkn = tk.Label(Main, text = 'Slice thickness, m')
  312. M0_dj.label_sl_thkn.grid(row=row , column=0,sticky = "E")
  313. M0_dj.textBox_sl_thkn = tk.Entry(Main,width = 6)
  314. M0_dj.textBox_sl_thkn.insert(0, default.sl_thkn)
  315. M0_dj.textBox_sl_thkn.grid(row=row, column=1)
  316. M0_dj.label_sl_thkn_min = tk.Label(Main)
  317. M0_dj.label_sl_thkn_min.grid(row=row, column=2)
  318. M0_dj.label_sl_thkn_max = tk.Label(Main)
  319. M0_dj.label_sl_thkn_max.grid(row=row, column=3)
  320. row += 1
  321. if 'sl_gap' in param_list:
  322. M0_dj.label_sl_gap = tk.Label(Main, text = 'Slice gap, %')
  323. M0_dj.label_sl_gap.grid(row=row , column=0,sticky = "E")
  324. M0_dj.textBox_sl_gap = tk.Entry(Main,width = 6)
  325. M0_dj.textBox_sl_gap.insert(0, default.sl_gap)
  326. M0_dj.textBox_sl_gap.grid(row=row, column=1)
  327. M0_dj.label_sl_gap_min = tk.Label(Main)
  328. M0_dj.label_sl_gap_min.grid(row=row, column=2)
  329. M0_dj.label_sl_gap_max = tk.Label(Main)
  330. M0_dj.label_sl_gap_max.grid(row=row, column=3)
  331. row += 1
  332. if 'slab_thkn' in param_list:
  333. M0_dj.label_slab_thkn = tk.Label(Main, text = 'Slab thickness, m')
  334. M0_dj.label_slab_thkn.grid(row=row, column=0,sticky = "E")
  335. M0_dj.textBox_slab_thkn = tk.Entry(Main,width = 6)
  336. M0_dj.textBox_slab_thkn.insert(0, default.slab_thkn)
  337. M0_dj.textBox_slab_thkn.grid(row=row, column=1)
  338. M0_dj.label_slab_thkn_min = tk.Label(Main)
  339. M0_dj.label_slab_thkn_min.grid(row=row, column=2)
  340. M0_dj.label_slab_thkn_max = tk.Label(Main)
  341. M0_dj.label_slab_thkn_max.grid(row=row, column=3)
  342. row += 1
  343. M0_dj.label_2 = tk.Label(Main, text = 'Resolution', font="Helvetica 10 bold")
  344. M0_dj.label_2.grid(row=row , column=0,sticky = "E")
  345. row += 1
  346. if 'FoV_f' in param_list:
  347. M0_dj.label_FoV_f = tk.Label(Main, text = 'FoV freq, m')
  348. M0_dj.label_FoV_f.grid(row=row, column=0,sticky = "E")
  349. M0_dj.textBox_FoV_f = tk.Entry(Main,width = 6)
  350. M0_dj.textBox_FoV_f.insert(0, default.FoV_f)
  351. M0_dj.textBox_FoV_f.grid(row=row, column=1)
  352. M0_dj.label_FoV_f_min = tk.Label(Main)
  353. M0_dj.label_FoV_f_min.grid(row=row, column=2)
  354. M0_dj.label_FoV_f_max = tk.Label(Main)
  355. M0_dj.label_FoV_f_max.grid(row=row, column=3)
  356. row += 1
  357. if 'FoV_p_image' in param_list:
  358. M0_dj.label_FoV_p_image = tk.Label(Main, text = 'FoV phase, m')
  359. M0_dj.label_FoV_p_image.grid(row=row, column=0,sticky = "E")
  360. M0_dj.textBox_FoV_p_image = tk.Entry(Main,width = 6)
  361. M0_dj.textBox_FoV_p_image.insert(0, default.FoV_p_image)
  362. M0_dj.textBox_FoV_p_image.grid(row=row, column=1)
  363. M0_dj.label_FoV_p_image_min = tk.Label(Main)
  364. M0_dj.label_FoV_p_image_min.grid(row=row, column=2)
  365. M0_dj.label_FoV_p_image_max = tk.Label(Main)
  366. M0_dj.label_FoV_p_image_max.grid(row=row, column=3)
  367. row += 1
  368. if 'Nf' in param_list:
  369. M0_dj.label_Nf = tk.Label(Main, text = 'Read resolution')
  370. M0_dj.label_Nf.grid(row=row, column=0,sticky = "E")
  371. M0_dj.textBox_Nf = tk.Entry(width = 6)
  372. M0_dj.textBox_Nf.insert(0, default.Nf)
  373. M0_dj.textBox_Nf.grid(row=row, column=1)
  374. M0_dj.label_Nf_min = tk.Label(Main)
  375. M0_dj.label_Nf_min.grid(row=row, column=2)
  376. M0_dj.label_Nf_max = tk.Label(Main)
  377. M0_dj.label_Nf_max.grid(row=row, column=3)
  378. row += 1
  379. if 'Np_image' in param_list:
  380. M0_dj.label_Np_image = tk.Label(Main, text = 'Phase resolution')
  381. M0_dj.label_Np_image.grid(row=row, column=0,sticky = "E")
  382. M0_dj.textBox_Np_image = tk.Entry(width = 6)
  383. M0_dj.textBox_Np_image.insert(0, default.Np_image)
  384. M0_dj.textBox_Np_image.grid(row=row, column=1)
  385. M0_dj.label_Np_image_min = tk.Label(Main)
  386. M0_dj.label_Np_image_min.grid(row=row, column=2)
  387. M0_dj.label_Np_image_max = tk.Label(Main)
  388. M0_dj.label_Np_image_max.grid(row=row, column=3)
  389. row += 1
  390. M0_dj.label_Acq_matrix = tk.Label(Main, text = 'Acquisition matrix (NfxNp)')
  391. M0_dj.label_Acq_matrix.grid(row=row, column=0,sticky = "E")
  392. M0_dj.label_Acq_matrix_v = tk.Label(Main)
  393. M0_dj.label_Acq_matrix_v.grid(row=row, column=1)
  394. row += 1
  395. if 'Nss' in param_list:
  396. M0_dj.label_Nss = tk.Label(Main, text = 'Number of slices')
  397. M0_dj.label_Nss.grid(row=row, column=0,sticky = "E")
  398. M0_dj.textBox_Nss = tk.Entry(width = 6)
  399. M0_dj.textBox_Nss.insert(0, default.Nss)
  400. M0_dj.textBox_Nss.grid(row=row, column=1)
  401. M0_dj.label_Nss_min = tk.Label(Main)
  402. M0_dj.label_Nss_min.grid(row=row, column=2)
  403. M0_dj.label_Nss_max = tk.Label(Main)
  404. M0_dj.label_Nss_max.grid(row=row, column=3)
  405. row += 1
  406. if 'BW_pixel' in param_list:
  407. M0_dj.label_BW_pixel = tk.Label(Main, text = 'BW per pixel')
  408. M0_dj.label_BW_pixel.grid(row=row, column=0,sticky = "E")
  409. M0_dj.textBox_BW_pixel = tk.Entry(width = 6)
  410. M0_dj.textBox_BW_pixel.insert(0, default.BW_pixel)
  411. M0_dj.textBox_BW_pixel.grid(row=row, column=1)
  412. M0_dj.label_BW_pixel_min = tk.Label(Main)
  413. M0_dj.label_BW_pixel_min.grid(row=row, column=2)
  414. M0_dj.label_BW_pixel_max = tk.Label(Main)
  415. M0_dj.label_BW_pixel_max.grid(row=row, column=3)
  416. row += 1
  417. M0_dj.label_3 = tk.Label(Main, text = 'Contrast', font="Helvetica 10 bold")
  418. M0_dj.label_3.grid(row=row , column=0,sticky = "E")
  419. row += 1
  420. if 'TE' in param_list:
  421. M0_dj.label_TE = tk.Label(Main, text = 'TE, s')
  422. M0_dj.label_TE.grid(row=row, column=0,sticky = "E")
  423. M0_dj.textBox_TE = tk.Entry(Main,width = 6)
  424. M0_dj.textBox_TE.insert(0, default.TE)
  425. M0_dj.textBox_TE.grid(row=row, column=1)
  426. M0_dj.label_TE_min = tk.Label(Main)
  427. M0_dj.label_TE_min.grid(row=row, column=2)
  428. M0_dj.label_TE_max = tk.Label(Main)
  429. M0_dj.label_TE_max.grid(row=row, column=3)
  430. row += 1
  431. if 'N_TE' in param_list:
  432. M0_dj.label_N_TE = tk.Label(Main, text = 'N_TE, s')
  433. M0_dj.label_N_TE.grid(row=row, column=0,sticky = "E")
  434. M0_dj.textBox_N_TE = tk.Entry(Main,width = 6)
  435. M0_dj.textBox_N_TE.insert(0, default.N_TE)
  436. M0_dj.textBox_N_TE.grid(row=row, column=1)
  437. M0_dj.label_N_TE_min = tk.Label(Main)
  438. M0_dj.label_N_TE_min.grid(row=row, column=2)
  439. M0_dj.label_N_TE_max = tk.Label(Main)
  440. M0_dj.label_N_TE_max.grid(row=row, column=3)
  441. row += 1
  442. M0_dj.label_N_TE_1 = tk.Label(Main, text = 'ES, s')
  443. M0_dj.label_N_TE_1.grid(row=row, column=0,sticky = "E")
  444. M0_dj.label_N_TE_1v = tk.Label(Main)
  445. M0_dj.label_N_TE_1v.grid(row=row, column=1)
  446. row += 1
  447. M0_dj.label_N_TE_2 = tk.Label(Main, text = 'TE, s')
  448. M0_dj.label_N_TE_2.grid(row=row, column=0,sticky = "E")
  449. M0_dj.label_N_TE_2v = tk.Label(Main)
  450. M0_dj.label_N_TE_2v.grid(row=row, column=1)
  451. row += 1
  452. if 'IE' in param_list:
  453. M0_dj.label_IE = tk.Label(Main, text = 'Inter echo, s')
  454. M0_dj.label_IE.grid(row=row, column=0,sticky = "E")
  455. M0_dj.textBox_IE = tk.Entry(width = 6)
  456. M0_dj.textBox_IE.insert(0, default.IE)
  457. M0_dj.textBox_IE.grid(row=row, column=1)
  458. M0_dj.label_IE_min = tk.Label(Main)
  459. M0_dj.label_IE_min.grid(row=row, column=2)
  460. M0_dj.label_IE_max = tk.Label(Main)
  461. M0_dj.label_IE_max.grid(row=row, column=3)
  462. row += 1
  463. if 'ETL' in param_list:
  464. M0_dj.label_ETL = tk.Label(Main, text = 'ETL (Np multiples of ETL)')
  465. M0_dj.label_ETL.grid(row=row, column=0,sticky = "E")
  466. M0_dj.textBox_ETL = tk.Entry(width = 6)
  467. M0_dj.textBox_ETL.insert(0, default.ETL)
  468. M0_dj.textBox_ETL.grid(row=row, column=1)
  469. M0_dj.label_ETL_min = tk.Label(Main)
  470. M0_dj.label_ETL_min.grid(row=row, column=2)
  471. M0_dj.label_ETL_max = tk.Label(Main)
  472. M0_dj.label_ETL_max.grid(row=row, column=3)
  473. row += 1
  474. if 'contrasts' in param_list:
  475. M0_dj.label_contrasts = tk.Label(Main, text = 'Number of contrasts')
  476. M0_dj.label_contrasts.grid(row=row, column=0,sticky = "E")
  477. M0_dj.textBox_contrasts = tk.Entry(width = 6)
  478. M0_dj.textBox_contrasts.insert(0, default.contrasts)
  479. M0_dj.textBox_contrasts.grid(row=row, column=1)
  480. M0_dj.label_contrasts_min = tk.Label(Main)
  481. M0_dj.label_contrasts_min.grid(row=row, column=2)
  482. M0_dj.label_contrasts_max = tk.Label(Main)
  483. M0_dj.label_contrasts_max.grid(row=row, column=3)
  484. row += 1
  485. if 'concats' in param_list:
  486. M0_dj.label_concats = tk.Label(Main, text = 'Concatination')
  487. M0_dj.label_concats.grid(row=row, column=0,sticky = "E")
  488. M0_dj.textBox_concats = tk.Entry(width = 6)
  489. M0_dj.textBox_concats.insert(0, default.concats)
  490. M0_dj.textBox_concats.grid(row=row, column=1)
  491. M0_dj.label_concats_min = tk.Label(Main)
  492. M0_dj.label_concats_min.grid(row=row, column=2)
  493. M0_dj.label_concats_max = tk.Label(Main)
  494. M0_dj.label_concats_max.grid(row=row, column=3)
  495. row += 1
  496. if 'TR' in param_list:
  497. M0_dj.label_TR = tk.Label(Main, text = 'TR, s')
  498. M0_dj.label_TR.grid(row=row, column=0,sticky = "E")
  499. M0_dj.textBox_TR = tk.Entry(Main,width = 6)
  500. M0_dj.textBox_TR.insert(0, default.TR)
  501. M0_dj.textBox_TR.grid(row=row, column=1)
  502. M0_dj.label_TR_min = tk.Label(Main)
  503. M0_dj.label_TR_min.grid(row=row, column=2)
  504. M0_dj.label_TR_max = tk.Label(Main)
  505. M0_dj.label_TR_max.grid(row=row, column=3)
  506. row += 1
  507. if 'TD' in param_list:
  508. M0_dj.label_TD = tk.Label(Main, text = 'TD, s')
  509. M0_dj.label_TD.grid(row=row, column=0,sticky = "E")
  510. M0_dj.textBox_TD = tk.Entry(width = 6)
  511. M0_dj.textBox_TD.insert(0, default.TD)
  512. M0_dj.textBox_TD.grid(row=row, column=1)
  513. M0_dj.label_TD_min = tk.Label(Main)
  514. M0_dj.label_TD_min.grid(row=row, column=2)
  515. M0_dj.label_TD_max = tk.Label(Main)
  516. M0_dj.label_TD_max.grid(row=row, column=3)
  517. row += 1
  518. M0_dj.label_4 = tk.Label(Main, text = 'RF and gradients', font="Helvetica 10 bold")
  519. M0_dj.label_4.grid(row=row , column=0,sticky = "E")
  520. row += 1
  521. if 'FA' in param_list:
  522. M0_dj.label_FA = tk.Label(Main, text = 'Excitation pulse, degree')
  523. M0_dj.label_FA.grid(row=row, column=0,sticky = "E")
  524. M0_dj.textBox_FA = tk.Entry(width = 6)
  525. M0_dj.textBox_FA.insert(0, default.FA)
  526. M0_dj.textBox_FA.grid(row=row, column=1)
  527. M0_dj.label_FA_min = tk.Label(Main)
  528. M0_dj.label_FA_min.grid(row=row, column=2)
  529. M0_dj.label_FA_max = tk.Label(Main)
  530. M0_dj.label_FA_max.grid(row=row, column=3)
  531. row += 1
  532. if 'RA' in param_list:
  533. M0_dj.label_RA = tk.Label(Main, text = 'Refocusing pulse, degree')
  534. M0_dj.label_RA.grid(row=row, column=0,sticky = "E")
  535. M0_dj.textBox_RA = tk.Entry(width = 6)
  536. M0_dj.textBox_RA.insert(0, default.RA)
  537. M0_dj.textBox_RA.grid(row=row, column=1)
  538. M0_dj.label_RA_min = tk.Label(Main)
  539. M0_dj.label_RA_min.grid(row=row, column=2)
  540. M0_dj.label_RA_max = tk.Label(Main)
  541. M0_dj.label_RA_max.grid(row=row, column=3)
  542. row += 1
  543. if 'spoil_strenght' in param_list:
  544. M0_dj.label_spoil_strenght = tk.Label(Main, text = 'Spoil strenght')
  545. M0_dj.label_spoil_strenght.grid(row=row, column=0,sticky = "E")
  546. M0_dj.textBox_spoil_strenght = tk.Entry(width = 6)
  547. M0_dj.textBox_spoil_strenght.insert(0, default.spoil_strenght)
  548. M0_dj.textBox_spoil_strenght.grid(row=row, column=1)
  549. M0_dj.label_spoil_strenght_min = tk.Label(Main)
  550. M0_dj.label_spoil_strenght_min.grid(row=row, column=2)
  551. M0_dj.label_spoil_strenght_max = tk.Label(Main)
  552. M0_dj.label_spoil_strenght_max.grid(row=row, column=3)
  553. row += 1
  554. if 'RF_spoil' in param_list:
  555. M0_dj.label_RF_spoil = tk.Label(Main, text = 'Spoil strenght')
  556. M0_dj.label_RF_spoil.grid(row=row, column=0,sticky = "E")
  557. M0_dj.textBox_RF_spoil = tk.Entry(width = 6)
  558. M0_dj.textBox_RF_spoil.insert(0, default.RF_spoil)
  559. M0_dj.textBox_RF_spoil.grid(row=row, column=1)
  560. M0_dj.label_RF_spoil_min = tk.Label(Main)
  561. M0_dj.label_RF_spoil_min.grid(row=row, column=2)
  562. M0_dj.label_RF_spoil_max = tk.Label(Main)
  563. M0_dj.label_RF_spoil_max.grid(row=row, column=3)
  564. row += 1
  565. M0_dj.label_5 = tk.Label(Main, text = 'Image',font="Helvetica 10 bold")
  566. M0_dj.label_5.grid(row=row , column=0,sticky = "E")
  567. row += 1
  568. if 'average' in param_list:
  569. M0_dj.label_average = tk.Label(Main, text = 'Averages')
  570. M0_dj.label_average.grid(row=row, column=0,sticky = "E")
  571. M0_dj.textBox_average = tk.Entry(width = 6)
  572. M0_dj.textBox_average.insert(0, default.average)
  573. M0_dj.textBox_average.grid(row=row, column=1)
  574. M0_dj.label_average_min = tk.Label(Main)
  575. M0_dj.label_average_min.grid(row=row, column=2)
  576. M0_dj.label_average_max = tk.Label(Main)
  577. M0_dj.label_average_max.grid(row=row, column=3)
  578. row += 1
  579. if 'D_scans' in param_list:
  580. M0_dj.label_D_scans = tk.Label(Main, text = 'Dummy scans')
  581. M0_dj.label_D_scans.grid(row=row, column=0,sticky = "E")
  582. M0_dj.textBox_D_scans = tk.Entry(width = 6)
  583. M0_dj.textBox_D_scans.insert(0, default.average)
  584. M0_dj.textBox_D_scans.grid(row=row, column=1)
  585. M0_dj.label_D_scans_min = tk.Label(Main)
  586. M0_dj.label_D_scans_min.grid(row=row, column=2)
  587. M0_dj.label_D_scans_max = tk.Label(Main)
  588. M0_dj.label_D_scans_max.grid(row=row, column=3)
  589. row += 1
  590. if 'ph_over_phase' in param_list:
  591. M0_dj.label_ph_over_phase = tk.Label(Main, text = 'Phase oversampling, %')
  592. M0_dj.label_ph_over_phase.grid(row=row, column=0,sticky = "E")
  593. M0_dj.textBox_ph_over_phase = tk.Entry(width = 6)
  594. M0_dj.textBox_ph_over_phase.insert(0, default.ph_over_phase)
  595. M0_dj.textBox_ph_over_phase.grid(row=row, column=1)
  596. M0_dj.label_ph_over_phase_min = tk.Label(Main)
  597. M0_dj.label_ph_over_phase_min.grid(row=row, column=2)
  598. M0_dj.label_ph_over_phase_max = tk.Label(Main)
  599. M0_dj.label_ph_over_phase_max.grid(row=row, column=3)
  600. row += 1
  601. if 'ph_over_slice' in param_list:
  602. M0_dj.label_ph_over_slice = tk.Label(Main, text = 'Phase oversampling slice, %')
  603. M0_dj.label_ph_over_slice.grid(row=row, column=0,sticky = "E")
  604. M0_dj.textBox_ph_over_slice = tk.Entry(width = 6)
  605. M0_dj.textBox_ph_over_slice.insert(0, default.ph_over_slice)
  606. M0_dj.textBox_ph_over_slice.grid(row=row, column=1)
  607. M0_dj.label_ph_over_slice_min = tk.Label(Main)
  608. M0_dj.label_ph_over_slice_min.grid(row=row, column=2)
  609. M0_dj.label_ph_over_slice_max = tk.Label(Main)
  610. M0_dj.label_ph_over_slice_max.grid(row=row, column=3)
  611. row += 1
  612. if 'part_fourier_factor_phase' in param_list:
  613. M0_dj.label_part_fourier_factor_phase= tk.Label(Main, text = 'Partial fourier phase')
  614. M0_dj.label_part_fourier_factor_phase.grid(row=row, column=0,sticky = "E")
  615. spinbox_var = tk.StringVar()
  616. PF=[1, 0.75, 0.55]
  617. M0_dj.textBox_part_fourier_factor_phase = tk.Spinbox(Main, textvariable=spinbox_var, values=PF,width = 4)
  618. M0_dj.textBox_part_fourier_factor_phase.grid(row=row, column=1)
  619. row += 1
  620. if 'part_fourier_factor_slice' in param_list:
  621. M0_dj.label_part_fourier_factor_slice= tk.Label(Main, text = 'Partial fourier slice')
  622. M0_dj.label_part_fourier_factor_slice.grid(row=row, column=0,sticky = "E")
  623. spinbox_var = tk.StringVar()
  624. PF=[1, 0.75, 0.55]
  625. M0_dj.textBox_part_fourier_factor_slice = tk.Spinbox(Main, textvariable=spinbox_var, values=PF,width = 4)
  626. M0_dj.textBox_part_fourier_factor_slice.grid(row=row, column=1)
  627. row += 1
  628. if 'ZF' in param_list:
  629. M0_dj.radio_ZF = tk.IntVar()
  630. M0_dj.radio_ZF.set(1)
  631. M0_dj.label_ZF = tk.Label(Main, text = "ZIP:", width = 10)
  632. M0_dj.label_ZF.grid(row=row, column=0, sticky = "E")
  633. M0_dj.R_ZF = tk.Radiobutton(Main, text="Off", variable=M0_dj.radio_ZF, value=1)
  634. M0_dj.R_ZF.grid(row=row, column=1)
  635. M0_dj.R_ZF = tk.Radiobutton(Main, text="On", variable=M0_dj.radio_ZF, value=2)
  636. M0_dj.R_ZF.grid(row=row, column=2)
  637. row = 0
  638. M0_dj.radio_f_w = tk.IntVar()
  639. M0_dj.radio_f_w.set(10)
  640. M0_dj.labelR_1 = tk.Label(Main, text = "f/w contrast:", width = 10)
  641. M0_dj.labelR_1.grid(row=row, column=4)
  642. M0_dj.R10_off = tk.Radiobutton(Main, text="off", variable=M0_dj.radio_f_w, value=10)
  643. M0_dj.R10_off.grid(row=row, column=5)
  644. if 'FS' in param_list:
  645. M0_dj.R11 = tk.Radiobutton(Main, text="FS(+)", variable=M0_dj.radio_f_w, value=11)
  646. M0_dj.R11.grid(row=row, column=6)
  647. if 'SPAIR' in param_list:
  648. M0_dj.R12 = tk.Radiobutton(Main, text="SPAIR(+)", variable=M0_dj.radio_f_w, value=12)
  649. M0_dj.R12.grid(row=row, column=7)
  650. row += 1
  651. if 'WS' in param_list:
  652. M0_dj.R13 = tk.Radiobutton(Main, text="WS", variable=M0_dj.radio_f_w, value=13)
  653. M0_dj.R13.grid(row=row, column=5)
  654. if 'WE' in param_list:
  655. M0_dj.R14 = tk.Radiobutton(Main, text="WE", variable=M0_dj.radio_f_w, value=14)
  656. M0_dj.R14.grid(row=row, column=6)
  657. row += 1
  658. M0_dj.radio_m_p = tk.IntVar()
  659. M0_dj.radio_m_p.set(20)
  660. M0_dj.labelR_2 = tk.Label(Main, text = "magn. prep.:", width = 10)
  661. M0_dj.labelR_2.grid(row=row, column=4)
  662. M0_dj.R20_off = tk.Radiobutton(Main, text="off", variable=M0_dj.radio_m_p, value=20)
  663. M0_dj.R20_off.grid(row=row, column=5)
  664. if 'IR' in param_list:
  665. M0_dj.R21 = tk.Radiobutton(Main, text="IR(+)", variable=M0_dj.radio_m_p, value=21)
  666. M0_dj.R21.grid(row=row, column=6)
  667. if 'DIR' in param_list:
  668. M0_dj.R22 = tk.Radiobutton(Main, text="DIR", variable=M0_dj.radio_m_p, value=22)
  669. M0_dj.R22.grid(row=row, column=7)
  670. row += 1
  671. if 'TIR' in param_list:
  672. M0_dj.R23 = tk.Radiobutton(Main, text="TIR", variable=M0_dj.radio_m_p, value=23)
  673. M0_dj.R23.grid(row=row, column=5)
  674. if 'SR' in param_list:
  675. M0_dj.R24 = tk.Radiobutton(Main, text="SR", variable=M0_dj.radio_m_p, value=24)
  676. M0_dj.R24.grid(row=row, column=6)
  677. if 'T2_prep_IR' in param_list:
  678. M0_dj.R25 = tk.Radiobutton(Main, text="T2 prep IR", variable=M0_dj.radio_m_p, value=25)
  679. M0_dj.R25.grid(row=row, column=7)
  680. row += 1
  681. M0_dj.label_min = tk.Label(Main, text = "min", width = 10)
  682. M0_dj.label_min.grid(row=row, column=6)
  683. M0_dj.label_max = tk.Label(Main, text = "max", width = 10)
  684. M0_dj.label_max.grid(row=row, column=7)
  685. row += 1
  686. if 'TI' in param_list:
  687. M0_dj.label_TI = tk.Label(Main, text = 'TI, s')
  688. M0_dj.label_TI.grid(row=row, column=4,sticky = "E")
  689. M0_dj.textBox_TI = tk.Entry(width = 6)
  690. M0_dj.textBox_TI.insert(0, default.TI)
  691. M0_dj.textBox_TI.grid(row=row, column=5)
  692. M0_dj.label_TI_min = tk.Label(Main)
  693. M0_dj.label_TI_min.grid(row=row, column=6)
  694. M0_dj.label_TI_max = tk.Label(Main)
  695. M0_dj.label_TI_max.grid(row=row, column=7)
  696. row += 1
  697. if 'N_TI' in param_list:
  698. M0_dj.label_N_TI = tk.Label(Main, text = 'N_TI effective')
  699. M0_dj.label_N_TI.grid(row=row, column=4,sticky = "E")
  700. M0_dj.textBox_N_TI = tk.Entry(width = 6)
  701. M0_dj.textBox_N_TI.insert(0, default.N_TI)
  702. M0_dj.textBox_N_TI.grid(row=row, column=5)
  703. M0_dj.label_N_TI_min = tk.Label(Main)
  704. M0_dj.label_N_TI_min.grid(row=row, column=6)
  705. M0_dj.label_N_TI_max = tk.Label(Main)
  706. M0_dj.label_N_TI_max.grid(row=row, column=7)
  707. row += 1
  708. M0_dj.label_TI_eff = tk.Label(Main, text = 'TI eff, s')
  709. M0_dj.label_TI_eff.grid(row=row, column=4,sticky = "E")
  710. M0_dj.label_TI_eff_v = tk.Label(Main)
  711. M0_dj.label_TI_eff_v.grid(row=row, column=5)
  712. row += 1
  713. if 'b' in param_list:
  714. M0_dj.label_b = tk.Label(Main, text = 'b')
  715. M0_dj.label_b.grid(row=row, column=4,sticky = "E")
  716. M0_dj.textBox_b = tk.Entry(width = 6)
  717. M0_dj.textBox_b.insert(0, default.b)
  718. M0_dj.textBox_b.grid(row=row, column=5)
  719. M0_dj.label_b_min = tk.Label(Main)
  720. M0_dj.label_b_min.grid(row=row, column=6)
  721. M0_dj.label_b_max = tk.Label(Main)
  722. M0_dj.label_b_max.grid(row=row, column=7)
  723. row += 1
  724. if 'sat_sl_thkn' in param_list:
  725. M0_dj.label_sat_sl_thkn = tk.Label(Main, text = 'Sat slice thkn, m')
  726. M0_dj.label_sat_sl_thkn.grid(row=row, column=4,sticky = "E")
  727. M0_dj.textBox_sat_sl_thkn = tk.Entry(width = 6)
  728. M0_dj.textBox_sat_sl_thkn.insert(0, default.sat_sl_thkn)
  729. M0_dj.textBox_sat_sl_thkn.grid(row=row, column=5)
  730. M0_dj.label_sat_sl_thkn_min = tk.Label(Main)
  731. M0_dj.label_sat_sl_thkn_min.grid(row=row, column=6)
  732. M0_dj.label_sat_sl_thkn_max = tk.Label(Main)
  733. M0_dj.label_sat_sl_thkn_max.grid(row=row, column=7)
  734. row += 1
  735. if 'distance_ex_sat' in param_list:
  736. M0_dj.label_distance_ex_sat = tk.Label(Main, text = 'Sat slice gap (!= 0), m')
  737. M0_dj.label_distance_ex_sat.grid(row=row, column=4,sticky = "E")
  738. M0_dj.textBox_distance_ex_sat = tk.Entry(width = 6)
  739. M0_dj.textBox_distance_ex_sat.insert(0, default.distance_ex_sat)
  740. M0_dj.textBox_distance_ex_sat.grid(row=row, column=5)
  741. M0_dj.label_distance_ex_sat_min = tk.Label(Main)
  742. M0_dj.label_distance_ex_sat_min.grid(row=row, column=6)
  743. M0_dj.label_distance_ex_sat_max = tk.Label(Main)
  744. M0_dj.label_distance_ex_sat_max.grid(row=row, column=7)
  745. row += 1
  746. if 'flow_comp' in param_list:
  747. M0_dj.radio_flow_comp = tk.IntVar()
  748. M0_dj.radio_flow_comp.set(1)
  749. M0_dj.label_flow_comp = tk.Label(Main, text = "Flow-comp.:", width = 10)
  750. M0_dj.label_flow_comp.grid(row=row, column=4, sticky = "E")
  751. M0_dj.R1_flow_comp = tk.Radiobutton(Main, text="Off", variable=M0_dj.radio_flow_comp, value=1)
  752. M0_dj.R1_flow_comp.grid(row=row, column=5 )
  753. M0_dj.R2_flow_comp = tk.Radiobutton(Main, text="On (freq)", variable=M0_dj.radio_flow_comp, value=2)
  754. M0_dj.R2_flow_comp.grid(row=row, column=6 )
  755. row += 1
  756. M0_dj.R3_flow_comp = tk.Radiobutton(Main, text="On (slice)", variable=M0_dj.radio_flow_comp, value=3)
  757. M0_dj.R3_flow_comp.grid(row=row, column=5 )
  758. M0_dj.R4_flow_comp = tk.Radiobutton(Main, text="Off (freq/slice)", variable=M0_dj.radio_flow_comp, value=4)
  759. M0_dj.R4_flow_comp.grid(row=row, column=6 )
  760. row += 1
  761. if 'recomb' in param_list:
  762. M0_dj.radio_recomb = tk.IntVar()
  763. M0_dj.radio_recomb.set(1)
  764. M0_dj.label_recomb = tk.Label(Main, text = "Recomb-ion:", width = 10)
  765. M0_dj.label_recomb.grid(row=row, column=4, sticky = "E")
  766. M0_dj.R1_recomb = tk.Radiobutton(Main, text="Off", variable=M0_dj.radio_recomb, value=1)
  767. M0_dj.R1_recomb.grid(row=row, column=5 )
  768. M0_dj.R2_recomb = tk.Radiobutton(Main, text="On", variable=M0_dj.radio_recomb, value=2)
  769. M0_dj.R2_recomb.grid(row=row, column=6 )
  770. row += 1
  771. return M0_dj