1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 """The model_free user function definitions for model-free analysis."""
24
25
26 from os import sep
27
28
29 from graphics import ANALYSIS_IMAGE_PATH
30 from specific_fns.setup import model_free_obj
31 from user_functions.data import Uf_info; uf_info = Uf_info()
32 from user_functions.objects import Desc_container
33
34
35
36 uf_class = uf_info.add_class('model_free')
37 uf_class.title = "Class for model-free analysis."
38 uf_class.menu_text = "&model_free"
39 uf_class.gui_icon = "relax.model-free"
40
41
42
43 uf = uf_info.add_uf('model_free.create_model')
44 uf.title = "Create a model-free model."
45 uf.title_short = "Model-free model creation."
46 uf.display = True
47 uf.add_keyarg(
48 name = "model",
49 py_type = "str",
50 desc_short = "model name",
51 desc = "The new name of the model-free model."
52 )
53 uf.add_keyarg(
54 name = "equation",
55 py_type = "str",
56 desc_short = "model-free equation",
57 desc = "The model-free equation.",
58 wiz_element_type = "combo",
59 wiz_combo_choices = [
60 "Original model-free equation {S2, te}",
61 "Extended model-free equation {S2f, tf, S2, ts}",
62 "Extended model-free equation {S2f, tf, S2s, ts}"
63 ],
64 wiz_combo_data = [
65 "mf_orig",
66 "mf_ext",
67 "mf_ext2"
68 ],
69 wiz_read_only = True
70 )
71 uf.add_keyarg(
72 name = "params",
73 py_type = "str_list",
74 desc_short = "model-free parameters",
75 desc = "The array of parameter names of the model.",
76 wiz_element_type = "combo_list",
77 wiz_combo_choices = [
78 "S2 - generalised order parameter (single motion)",
79 "te - effective correlation time (single motion)",
80 "S2f - generalised order parameter (faster motion)",
81 "S2s - generalised order parameter (slower motion)",
82 "tf - effective correlation time (faster motion)",
83 "ts - effective correlation time (slower motion)",
84 "Rex - chemical exchange relaxation",
85 "r - average bond length <r>",
86 "CSA - chemical shift anisotropy"
87 ],
88 wiz_combo_data = [
89 "s2",
90 "te",
91 "s2f",
92 "s2s",
93 "tf",
94 "ts",
95 "rex",
96 "r",
97 "csa"
98 ],
99 wiz_read_only = True
100 )
101 uf.add_keyarg(
102 name = "spin_id",
103 py_type = "str",
104 desc_short = "spin identification string",
105 desc = "The spin identification string.",
106 can_be_none = True
107 )
108
109 uf.desc.append(Desc_container())
110 uf.desc[-1].add_paragraph("This user function should almost never be used. It is provided for academic reasons for the study of old analyses and published results. If you are looking for a normal model-free model, use the model_free.select_model user function instead.")
111
112 uf.desc.append(Desc_container("Model-free equation"))
113 uf.desc[-1].add_paragraph("The model-free equation can be one of the following:")
114 uf.desc[-1].add_list_element("'mf_orig' selects the original model-free equations with parameters {S2, te}.")
115 uf.desc[-1].add_list_element("'mf_ext' selects the extended model-free equations with parameters {S2f, tf, S2, ts}.")
116 uf.desc[-1].add_list_element("'mf_ext2' selects the extended model-free equations with parameters {S2f, tf, S2s, ts}.")
117
118 uf.desc.append(Desc_container("Model-free parameters"))
119 uf.desc[-1].add_paragraph("The following parameters are accepted for the original model-free equation:")
120 uf.desc[-1].add_item_list_element("'s2'", " The square of the generalised order parameter.")
121 uf.desc[-1].add_item_list_element("'te'", " The effective correlation time.")
122 uf.desc[-1].add_paragraph("The following parameters are accepted for the extended model-free equation:")
123 uf.desc[-1].add_item_list_element("'s2f'", "The square of the generalised order parameter of the faster motion.")
124 uf.desc[-1].add_item_list_element("'tf'", " The effective correlation time of the faster motion.")
125 uf.desc[-1].add_item_list_element("'s2'", " The square of the generalised order parameter S2 = S2f * S2s.")
126 uf.desc[-1].add_item_list_element("'ts'", " The effective correlation time of the slower motion.")
127 uf.desc[-1].add_paragraph("The following parameters are accepted for the extended 2 model-free equation:")
128 uf.desc[-1].add_item_list_element("'s2f'", "The square of the generalised order parameter of the faster motion.")
129 uf.desc[-1].add_item_list_element("'tf'", " The effective correlation time of the faster motion.")
130 uf.desc[-1].add_item_list_element("'s2s'", "The square of the generalised order parameter of the slower motion.")
131 uf.desc[-1].add_item_list_element("'ts'", " The effective correlation time of the slower motion.")
132 uf.desc[-1].add_paragraph("The following parameters are accepted for all equations:")
133 uf.desc[-1].add_item_list_element("'rex'", "The chemical exchange relaxation.")
134 uf.desc[-1].add_item_list_element("'r'", " The average bond length <r>.")
135 uf.desc[-1].add_item_list_element("'csa'", "The chemical shift anisotropy.")
136
137 uf.desc.append(Desc_container("Spin identification string"))
138 uf.desc[-1].add_paragraph("If 'spin_id' is supplied then the model will only be created for the corresponding spins. Otherwise the model will be created for all spins.")
139
140 uf.desc.append(Desc_container("Prompt examples"))
141 uf.desc[-1].add_paragraph("The following commands will create the model-free model 'm1' which is based on the original model-free equation and contains the single parameter 's2'.")
142 uf.desc[-1].add_prompt("relax> model_free.create_model('m1', 'mf_orig', ['s2'])")
143 uf.desc[-1].add_prompt("relax> model_free.create_model(model='m1', params=['s2'], equation='mf_orig')")
144 uf.desc[-1].add_paragraph("The following commands will create the model-free model 'large_model' which is based on the extended model-free equation and contains the seven parameters 's2f', 'tf', 's2', 'ts', 'rex', 'csa', 'r'.")
145 uf.desc[-1].add_prompt("relax> model_free.create_model('large_model', 'mf_ext', ['s2f', 'tf', 's2', 'ts', 'rex', 'csa', 'r'])")
146 uf.desc[-1].add_prompt("relax> model_free.create_model(model='large_model', params=['s2f', 'tf', 's2', 'ts', 'rex', 'csa', 'r'], equation='mf_ext')")
147 uf.backend = model_free_obj._create_model
148 uf.menu_text = "&create_model"
149 uf.gui_icon = "oxygen.actions.list-add-relax-blue"
150 uf.wizard_height_desc = 450
151 uf.wizard_size = (1000, 750)
152 uf.wizard_apply_button = False
153 uf.wizard_image = ANALYSIS_IMAGE_PATH + 'model_free' + sep + 'model_free_200x200.png'
154
155
156
157 uf = uf_info.add_uf('model_free.delete')
158 uf.title = "Delete all model-free data from the current data pipe."
159 uf.title_short = "Model-free data deletion."
160 uf.display = True
161
162 uf.desc.append(Desc_container())
163 uf.desc[-1].add_paragraph("This will delete all of the model-free data - parameters, model, etc. - from the current data pipe.")
164
165 uf.desc.append(Desc_container("Prompt examples"))
166 uf.desc[-1].add_paragraph("To delete all model-free data, type:")
167 uf.desc[-1].add_prompt("relax> model_free.delete()")
168 uf.backend = model_free_obj._delete
169 uf.menu_text = "&delete"
170 uf.gui_icon = "oxygen.actions.list-remove"
171 uf.wizard_size = (600, 300)
172 uf.wizard_apply_button = False
173 uf.wizard_image = ANALYSIS_IMAGE_PATH + 'model_free' + sep + 'model_free_200x200.png'
174
175
176
177 uf = uf_info.add_uf('model_free.remove_tm')
178 uf.title = "Remove the local tm parameter from a model."
179 uf.title_short = "Local tm parameter removal."
180 uf.display = True
181 uf.add_keyarg(
182 name = "spin_id",
183 py_type = "str",
184 desc_short = "spin ID string",
185 desc = "The spin identification string.",
186 can_be_none = True
187 )
188
189 uf.desc.append(Desc_container())
190 uf.desc[-1].add_paragraph("This function will remove the local tm parameter from the model-free parameter set. If there is no local tm parameter within the set nothing will happen.")
191 uf.desc[-1].add_paragraph("If no spin identification string is given, then the function will apply to all spins.")
192
193 uf.desc.append(Desc_container("Prompt examples"))
194 uf.desc[-1].add_paragraph("The following command will remove the parameter 'tm':")
195 uf.desc[-1].add_prompt("relax> model_free.remove_tm()")
196 uf.backend = model_free_obj._remove_tm
197 uf.menu_text = "&remove_tm"
198 uf.gui_icon = "oxygen.actions.list-remove"
199 uf.wizard_height_desc = 300
200 uf.wizard_size = (700, 400)
201 uf.wizard_apply_button = False
202 uf.wizard_image = ANALYSIS_IMAGE_PATH + 'model_free' + sep + 'model_free_200x200.png'
203
204
205
206 uf = uf_info.add_uf('model_free.select_model')
207 uf.title = "Select a preset model-free model."
208 uf.title_short = "Model-free model choice."
209 uf.display = True
210 uf.add_keyarg(
211 name = "model",
212 py_type = "str",
213 desc_short = "preset model name",
214 desc = "The name of the preset model.",
215 wiz_element_type = "combo",
216 wiz_combo_choices = [
217 "m0: {}",
218 "m1: {S2}",
219 "m2: {S2, te}",
220 "m3: {S2, Rex}",
221 "m4: {S2, te, Rex}",
222 "m5: {S2f, S2, ts}",
223 "m6: {S2f, tf, S2, ts}",
224 "m7: {S2f, S2, ts, Rex}",
225 "m8: {S2f, tf, S2, ts, Rex}",
226 "m9: {Rex}",
227 "",
228 "tm0: {tm}",
229 "tm1: {tm, S2}",
230 "tm2: {tm, S2, te}",
231 "tm3: {tm, S2, Rex}",
232 "tm4: {tm, S2, te, Rex}",
233 "tm5: {tm, S2f, S2, ts}",
234 "tm6: {tm, S2f, tf, S2, ts}",
235 "tm7: {tm, S2f, S2, ts, Rex}",
236 "tm8: {tm, S2f, tf, S2, ts, Rex}",
237 "tm9: {tm, Rex}",
238 "",
239 "m10: {CSA}",
240 "m11: {CSA, S2}",
241 "m12: {CSA, S2, te}",
242 "m13: {CSA, S2, Rex}",
243 "m14: {CSA, S2, te, Rex}",
244 "m15: {CSA, S2f, S2, ts}",
245 "m16: {CSA, S2f, tf, S2, ts}",
246 "m17: {CSA, S2f, S2, ts, Rex}",
247 "m18: {CSA, S2f, tf, S2, ts, Rex}",
248 "m19: {CSA, Rex}",
249 "",
250 "tm10: {tm, CSA}",
251 "tm11: {tm, CSA, S2}",
252 "tm12: {tm, CSA, S2, te}",
253 "tm13: {tm, CSA, S2, Rex}",
254 "tm14: {tm, CSA, S2, te, Rex}",
255 "tm15: {tm, CSA, S2f, S2, ts}",
256 "tm16: {tm, CSA, S2f, tf, S2, ts}",
257 "tm17: {tm, CSA, S2f, S2, ts, Rex}",
258 "tm18: {tm, CSA, S2f, tf, S2, ts, Rex}",
259 "tm19: {tm, CSA, Rex}",
260 "",
261 "m20: {r}",
262 "m21: {r, S2}",
263 "m22: {r, S2, te}",
264 "m23: {r, S2, Rex}",
265 "m24: {r, S2, te, Rex}",
266 "m25: {r, S2f, S2, ts}",
267 "m26: {r, S2f, tf, S2, ts}",
268 "m27: {r, S2f, S2, ts, Rex}",
269 "m28: {r, S2f, tf, S2, ts, Rex}",
270 "m29: {r, CSA, Rex}",
271 "",
272 "tm20: {tm, r}",
273 "tm21: {tm, r, S2}",
274 "tm22: {tm, r, S2, te}",
275 "tm23: {tm, r, S2, Rex}",
276 "tm24: {tm, r, S2, te, Rex}",
277 "tm25: {tm, r, S2f, S2, ts}",
278 "tm26: {tm, r, S2f, tf, S2, ts}",
279 "tm27: {tm, r, S2f, S2, ts, Rex}",
280 "tm28: {tm, r, S2f, tf, S2, ts, Rex}",
281 "tm29: {tm, r, CSA, Rex}",
282 "",
283 "m30: {r, CSA}",
284 "m31: {r, CSA, S2}",
285 "m32: {r, CSA, S2, te}",
286 "m33: {r, CSA, S2, Rex}",
287 "m34: {r, CSA, S2, te, Rex}",
288 "m35: {r, CSA, S2f, S2, ts}",
289 "m36: {r, CSA, S2f, tf, S2, ts}",
290 "m37: {r, CSA, S2f, S2, ts, Rex}",
291 "m38: {r, CSA, S2f, tf, S2, ts, Rex}",
292 "m39: {r, CSA, Rex}",
293 "",
294 "tm30: {tm, r, CSA}",
295 "tm31: {tm, r, CSA, S2}",
296 "tm32: {tm, r, CSA, S2, te}",
297 "tm33: {tm, r, CSA, S2, Rex}",
298 "tm34: {tm, r, CSA, S2, te, Rex}",
299 "tm35: {tm, r, CSA, S2f, S2, ts}",
300 "tm36: {tm, r, CSA, S2f, tf, S2, ts}",
301 "tm37: {tm, r, CSA, S2f, S2, ts, Rex}",
302 "tm38: {tm, r, CSA, S2f, tf, S2, ts, Rex}",
303 "tm39: {tm, r, CSA, Rex}"
304 ],
305 wiz_combo_data = [
306 "m0",
307 "m1",
308 "m2",
309 "m3",
310 "m4",
311 "m5",
312 "m6",
313 "m7",
314 "m8",
315 "m9",
316 None,
317 "tm0",
318 "tm1",
319 "tm2",
320 "tm3",
321 "tm4",
322 "tm5",
323 "tm6",
324 "tm7",
325 "tm8",
326 "tm9",
327 None,
328 "m10",
329 "m11",
330 "m12",
331 "m13",
332 "m14",
333 "m15",
334 "m16",
335 "m17",
336 "m18",
337 "m19",
338 None,
339 "tm10",
340 "tm11",
341 "tm12",
342 "tm13",
343 "tm14",
344 "tm15",
345 "tm16",
346 "tm17",
347 "tm18",
348 "tm19",
349 None,
350 "m20",
351 "m21",
352 "m22",
353 "m23",
354 "m24",
355 "m25",
356 "m26",
357 "m27",
358 "m28",
359 "m29",
360 None,
361 "tm20",
362 "tm21",
363 "tm22",
364 "tm23",
365 "tm24",
366 "tm25",
367 "tm26",
368 "tm27",
369 "tm28",
370 "tm29",
371 None,
372 "m30",
373 "m31",
374 "m32",
375 "m33",
376 "m34",
377 "m35",
378 "m36",
379 "m37",
380 "m38",
381 "m39",
382 None,
383 "tm30",
384 "tm31",
385 "tm32",
386 "tm33",
387 "tm34",
388 "tm35",
389 "tm36",
390 "tm37",
391 "tm38",
392 "tm39"
393 ],
394 wiz_read_only = True
395 )
396 uf.add_keyarg(
397 name = "spin_id",
398 py_type = "str",
399 desc_short = "spin ID string",
400 desc = "The spin identification string.",
401 can_be_none = True
402 )
403
404 uf.desc.append(Desc_container())
405 uf.desc[-1].add_paragraph("This allows a standard model-free model to be selected from a long list of models.")
406
407 uf.desc.append(Desc_container("The preset models"))
408 uf.desc[-1].add_paragraph("The standard preset model-free models are")
409 uf.desc[-1].add_item_list_element("'m0'", "{},")
410 uf.desc[-1].add_item_list_element("'m1'", "{S2},")
411 uf.desc[-1].add_item_list_element("'m2'", "{S2, te},")
412 uf.desc[-1].add_item_list_element("'m3'", "{S2, Rex},")
413 uf.desc[-1].add_item_list_element("'m4'", "{S2, te, Rex},")
414 uf.desc[-1].add_item_list_element("'m5'", "{S2f, S2, ts},")
415 uf.desc[-1].add_item_list_element("'m6'", "{S2f, tf, S2, ts},")
416 uf.desc[-1].add_item_list_element("'m7'", "{S2f, S2, ts, Rex},")
417 uf.desc[-1].add_item_list_element("'m8'", "{S2f, tf, S2, ts, Rex},")
418 uf.desc[-1].add_item_list_element("'m9'", "{Rex}.")
419 uf.desc[-1].add_paragraph("The preset model-free models with optimisation of the CSA value are")
420 uf.desc[-1].add_item_list_element("'m10'", "{CSA},")
421 uf.desc[-1].add_item_list_element("'m11'", "{CSA, S2},")
422 uf.desc[-1].add_item_list_element("'m12'", "{CSA, S2, te},")
423 uf.desc[-1].add_item_list_element("'m13'", "{CSA, S2, Rex},")
424 uf.desc[-1].add_item_list_element("'m14'", "{CSA, S2, te, Rex},")
425 uf.desc[-1].add_item_list_element("'m15'", "{CSA, S2f, S2, ts},")
426 uf.desc[-1].add_item_list_element("'m16'", "{CSA, S2f, tf, S2, ts},")
427 uf.desc[-1].add_item_list_element("'m17'", "{CSA, S2f, S2, ts, Rex},")
428 uf.desc[-1].add_item_list_element("'m18'", "{CSA, S2f, tf, S2, ts, Rex},")
429 uf.desc[-1].add_item_list_element("'m19'", "{CSA, Rex}.")
430 uf.desc[-1].add_paragraph("The preset model-free models with optimisation of the bond length are")
431 uf.desc[-1].add_item_list_element("'m20'", "{r},")
432 uf.desc[-1].add_item_list_element("'m21'", "{r, S2},")
433 uf.desc[-1].add_item_list_element("'m22'", "{r, S2, te},")
434 uf.desc[-1].add_item_list_element("'m23'", "{r, S2, Rex},")
435 uf.desc[-1].add_item_list_element("'m24'", "{r, S2, te, Rex},")
436 uf.desc[-1].add_item_list_element("'m25'", "{r, S2f, S2, ts},")
437 uf.desc[-1].add_item_list_element("'m26'", "{r, S2f, tf, S2, ts},")
438 uf.desc[-1].add_item_list_element("'m27'", "{r, S2f, S2, ts, Rex},")
439 uf.desc[-1].add_item_list_element("'m28'", "{r, S2f, tf, S2, ts, Rex},")
440 uf.desc[-1].add_item_list_element("'m29'", "{r, CSA, Rex}.")
441 uf.desc[-1].add_paragraph("The preset model-free models with both optimisation of the bond length and CSA are")
442 uf.desc[-1].add_item_list_element("'m30'", "{r, CSA},")
443 uf.desc[-1].add_item_list_element("'m31'", "{r, CSA, S2},")
444 uf.desc[-1].add_item_list_element("'m32'", "{r, CSA, S2, te},")
445 uf.desc[-1].add_item_list_element("'m33'", "{r, CSA, S2, Rex},")
446 uf.desc[-1].add_item_list_element("'m34'", "{r, CSA, S2, te, Rex},")
447 uf.desc[-1].add_item_list_element("'m35'", "{r, CSA, S2f, S2, ts},")
448 uf.desc[-1].add_item_list_element("'m36'", "{r, CSA, S2f, tf, S2, ts},")
449 uf.desc[-1].add_item_list_element("'m37'", "{r, CSA, S2f, S2, ts, Rex},")
450 uf.desc[-1].add_item_list_element("'m38'", "{r, CSA, S2f, tf, S2, ts, Rex},")
451 uf.desc[-1].add_item_list_element("'m39'", "{r, CSA, Rex}.")
452 uf.desc[-1].add_paragraph("Warning: The models in the thirties range fail when using standard R1, R2, and NOE relaxation data. This is due to the extreme flexibly of these models where a change in the parameter 'r' is compensated by a corresponding change in the parameter 'csa' and vice versa.")
453 uf.desc.append(Desc_container("The preset local tm models"))
454 uf.desc[-1].add_paragraph("Additional preset model-free models, which are simply extensions of the above models with the addition of a local tm parameter are:")
455 uf.desc[-1].add_item_list_element("'tm0'", "{tm},")
456 uf.desc[-1].add_item_list_element("'tm1'", "{tm, S2},")
457 uf.desc[-1].add_item_list_element("'tm2'", "{tm, S2, te},")
458 uf.desc[-1].add_item_list_element("'tm3'", "{tm, S2, Rex},")
459 uf.desc[-1].add_item_list_element("'tm4'", "{tm, S2, te, Rex},")
460 uf.desc[-1].add_item_list_element("'tm5'", "{tm, S2f, S2, ts},")
461 uf.desc[-1].add_item_list_element("'tm6'", "{tm, S2f, tf, S2, ts},")
462 uf.desc[-1].add_item_list_element("'tm7'", "{tm, S2f, S2, ts, Rex},")
463 uf.desc[-1].add_item_list_element("'tm8'", "{tm, S2f, tf, S2, ts, Rex},")
464 uf.desc[-1].add_item_list_element("'tm9'", "{tm, Rex}.")
465 uf.desc[-1].add_paragraph("The preset model-free models with optimisation of the CSA value are")
466 uf.desc[-1].add_item_list_element("'tm10'", "{tm, CSA},")
467 uf.desc[-1].add_item_list_element("'tm11'", "{tm, CSA, S2},")
468 uf.desc[-1].add_item_list_element("'tm12'", "{tm, CSA, S2, te},")
469 uf.desc[-1].add_item_list_element("'tm13'", "{tm, CSA, S2, Rex},")
470 uf.desc[-1].add_item_list_element("'tm14'", "{tm, CSA, S2, te, Rex},")
471 uf.desc[-1].add_item_list_element("'tm15'", "{tm, CSA, S2f, S2, ts},")
472 uf.desc[-1].add_item_list_element("'tm16'", "{tm, CSA, S2f, tf, S2, ts},")
473 uf.desc[-1].add_item_list_element("'tm17'", "{tm, CSA, S2f, S2, ts, Rex},")
474 uf.desc[-1].add_item_list_element("'tm18'", "{tm, CSA, S2f, tf, S2, ts, Rex},")
475 uf.desc[-1].add_item_list_element("'tm19'", "{tm, CSA, Rex}.")
476 uf.desc[-1].add_paragraph("The preset model-free models with optimisation of the bond length are")
477 uf.desc[-1].add_item_list_element("'tm20'", "{tm, r},")
478 uf.desc[-1].add_item_list_element("'tm21'", "{tm, r, S2},")
479 uf.desc[-1].add_item_list_element("'tm22'", "{tm, r, S2, te},")
480 uf.desc[-1].add_item_list_element("'tm23'", "{tm, r, S2, Rex},")
481 uf.desc[-1].add_item_list_element("'tm24'", "{tm, r, S2, te, Rex},")
482 uf.desc[-1].add_item_list_element("'tm25'", "{tm, r, S2f, S2, ts},")
483 uf.desc[-1].add_item_list_element("'tm26'", "{tm, r, S2f, tf, S2, ts},")
484 uf.desc[-1].add_item_list_element("'tm27'", "{tm, r, S2f, S2, ts, Rex},")
485 uf.desc[-1].add_item_list_element("'tm28'", "{tm, r, S2f, tf, S2, ts, Rex},")
486 uf.desc[-1].add_item_list_element("'tm29'", "{tm, r, CSA, Rex}.")
487 uf.desc[-1].add_paragraph("The preset model-free models with both optimisation of the bond length and CSA are")
488 uf.desc[-1].add_item_list_element("'tm30'", "{tm, r, CSA},")
489 uf.desc[-1].add_item_list_element("'tm31'", "{tm, r, CSA, S2},")
490 uf.desc[-1].add_item_list_element("'tm32'", "{tm, r, CSA, S2, te},")
491 uf.desc[-1].add_item_list_element("'tm33'", "{tm, r, CSA, S2, Rex},")
492 uf.desc[-1].add_item_list_element("'tm34'", "{tm, r, CSA, S2, te, Rex},")
493 uf.desc[-1].add_item_list_element("'tm35'", "{tm, r, CSA, S2f, S2, ts},")
494 uf.desc[-1].add_item_list_element("'tm36'", "{tm, r, CSA, S2f, tf, S2, ts},")
495 uf.desc[-1].add_item_list_element("'tm37'", "{tm, r, CSA, S2f, S2, ts, Rex},")
496 uf.desc[-1].add_item_list_element("'tm38'", "{tm, r, CSA, S2f, tf, S2, ts, Rex},")
497 uf.desc[-1].add_item_list_element("'tm39'", "{tm, r, CSA, Rex}.")
498
499 uf.desc.append(Desc_container("Spin identification string"))
500 uf.desc[-1].add_paragraph("If 'spin_id' is supplied then the model will only be selected for the corresponding spins. Otherwise the model will be selected for all spins.")
501
502 uf.desc.append(Desc_container("Prompt examples"))
503 uf.desc[-1].add_paragraph("To pick model 'm1' for all selected spins, type:")
504 uf.desc[-1].add_prompt("relax> model_free.select_model('m1')")
505 uf.desc[-1].add_prompt("relax> model_free.select_model(model='m1')")
506 uf.backend = model_free_obj._select_model
507 uf.menu_text = "&select_model"
508 uf.gui_icon = "oxygen.actions.list-add"
509 uf.wizard_height_desc = 450
510 uf.wizard_size = (1000, 750)
511 uf.wizard_apply_button = False
512 uf.wizard_image = ANALYSIS_IMAGE_PATH + 'model_free' + sep + 'model_free_200x200.png'
513