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