1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 """The grace user function definitions for controlling the Grace data viewing software."""
24
25
26 import dep_check
27 if dep_check.wx_module:
28 from wx import FD_OPEN, FD_SAVE
29 else:
30 FD_OPEN = -1
31 FD_SAVE = -1
32
33
34 from graphics import WIZARD_IMAGE_PATH
35 from pipe_control import grace
36 from pipe_control.plotting import write_xy
37 from specific_analyses.consistency_tests.parameter_object import Consistency_tests_params; consistency_test_params = Consistency_tests_params()
38 from specific_analyses.jw_mapping.parameter_object import Jw_mapping_params; jw_mapping_params = Jw_mapping_params()
39 from specific_analyses.model_free.parameter_object import Model_free_params; model_free_params = Model_free_params()
40 from specific_analyses.noe.parameter_object import Noe_params; noe_params = Noe_params()
41 from specific_analyses.relax_disp.parameter_object import Relax_disp_params; relax_disp_params = Relax_disp_params()
42 from specific_analyses.relax_fit.parameter_object import Relax_fit_params; relax_fit_params = Relax_fit_params()
43 from user_functions.data import Uf_info; uf_info = Uf_info()
44 from user_functions.objects import Desc_container
45 from user_functions.wildcards import WILDCARD_GRACE_ALL
46
47
48
49 uf_class = uf_info.add_class('grace')
50 uf_class.title = "Class for interfacing with Grace."
51 uf_class.menu_text = "&grace"
52 uf_class.gui_icon = "relax.grace_icon"
53
54
55
56 uf = uf_info.add_uf('grace.view')
57 uf.title = "Visualise the file within Grace."
58 uf.title_short = "Grace execution."
59 uf.add_keyarg(
60 name = "file",
61 py_type = "str",
62 arg_type = "file sel",
63 desc_short = "file name",
64 desc = "The name of the file.",
65 wiz_filesel_wildcard = WILDCARD_GRACE_ALL,
66 wiz_filesel_style = FD_OPEN
67 )
68 uf.add_keyarg(
69 name = "dir",
70 default = "grace",
71 py_type = "str",
72 arg_type = "dir",
73 desc_short = "directory name",
74 desc = "The directory name.",
75 can_be_none = True
76 )
77 uf.add_keyarg(
78 name = "grace_exe",
79 default = "xmgrace",
80 py_type = "str",
81 arg_type = "file sel",
82 desc_short = "Grace executable file",
83 desc = "The Grace executable file.",
84 wiz_filesel_style = FD_OPEN,
85 wiz_filesel_preview = False
86 )
87
88 uf.desc.append(Desc_container())
89 uf.desc[-1].add_paragraph("This can be used to view the specified Grace '*.agr' file by opening it with the Grace program.")
90
91 uf.desc.append(Desc_container("Prompt examples"))
92 uf.desc[-1].add_paragraph("To view the file 's2.agr' in the directory 'grace', type:")
93 uf.desc[-1].add_prompt("relax> grace.view(file='s2.agr')")
94 uf.desc[-1].add_prompt("relax> grace.view(file='s2.agr', dir='grace')")
95 uf.backend = grace.view
96 uf.menu_text = "&view"
97 uf.gui_icon = "relax.grace_icon"
98 uf.wizard_size = (900, 500)
99 uf.wizard_image = WIZARD_IMAGE_PATH + 'grace.png'
100
101
102
103 uf = uf_info.add_uf('grace.write')
104 uf.title = "Create a grace '.agr' file to visualise the 2D data."
105 uf.title_short = "Grace file creation."
106 uf.add_keyarg(
107 name = "x_data_type",
108 default = "res_num",
109 py_type = "str",
110 desc_short = "x data type",
111 desc = "The data type for the X-axis (no regular expression is allowed).",
112 wiz_element_type = 'combo',
113 wiz_combo_iter = grace.get_data_types
114 )
115 uf.add_keyarg(
116 name = "y_data_type",
117 py_type = "str",
118 desc_short = "y data type",
119 desc = "The data type for the Y-axis (no regular expression is allowed).",
120 wiz_element_type = 'combo',
121 wiz_combo_iter = grace.get_data_types
122 )
123 uf.add_keyarg(
124 name = "spin_id",
125 py_type = "str",
126 desc_short = "spin ID string",
127 desc = "The spin ID string.",
128 can_be_none = True
129 )
130 uf.add_keyarg(
131 name = "plot_data",
132 default = "value",
133 py_type = "str",
134 desc_short = "plot data",
135 desc = "The data to use for the plot.",
136 wiz_element_type = "combo",
137 wiz_combo_choices = [
138 "Values",
139 "Errors",
140 "Simulation values"
141 ],
142 wiz_combo_data = [
143 "value",
144 "error",
145 "sims"
146 ],
147 wiz_read_only = True
148 )
149 uf.add_keyarg(
150 name = "norm_type",
151 default = "first",
152 py_type = "str",
153 desc_short = "normalisation point",
154 desc = "How the graph should be normalised, if the norm flag is set.",
155 wiz_element_type = "combo",
156 wiz_combo_choices = [
157 "First point normalisation",
158 "Last point normalisation"
159 ],
160 wiz_combo_data = [
161 "first",
162 "last"
163 ],
164 wiz_read_only = True
165 )
166 uf.add_keyarg(
167 name = "file",
168 py_type = "str",
169 arg_type = "file sel",
170 desc_short = "file name",
171 desc = "The name of the file.",
172 wiz_filesel_wildcard = WILDCARD_GRACE_ALL,
173 wiz_filesel_style = FD_SAVE
174 )
175 uf.add_keyarg(
176 name = "dir",
177 default = "grace",
178 py_type = "str",
179 arg_type = "dir",
180 desc_short = "directory name",
181 desc = "The directory name.",
182 can_be_none = True
183 )
184 uf.add_keyarg(
185 name = "force",
186 default = False,
187 py_type = "bool",
188 desc_short = "force flag",
189 desc = "A flag which, if set to True, will cause the file to be overwritten."
190 )
191 uf.add_keyarg(
192 name = "norm",
193 default = False,
194 py_type = "bool",
195 desc_short = "normalisation flag",
196 desc = "A flag which, if set to True, will cause all graphs to be normalised to 1. This is for the normalisation of series type data. The point for normalisation is set with the norm_type argument."
197 )
198
199 uf.desc.append(Desc_container())
200 uf.desc[-1].add_paragraph("This is designed to be as flexible as possible so that any combination of data can be plotted. The output is in the format of a Grace plot (also known as ACE/gr, Xmgr, and xmgrace) which only supports two dimensional plots. Three types of information can be used to create various types of plot. These include the x-axis and y-axis data types, the spin ID string, and the type of data plot.")
201 uf.desc[-1].add_paragraph("The x-axis and y-axis data types should be plain strings, regular expression is not allowed. The two axes of the Grace plot can be any of the data types listed in the tables below. The only limitation is that the data must belong to the same data pipe.")
202 uf.desc[-1].add_paragraph("If the x-axis data type is not given, the plot will default to having the residue numbering along the x-axis.Two special data types for the axes are:")
203 uf.desc[-1].add_item_list_element("'res_num'", "The axis will consist of the residue numbering.")
204 uf.desc[-1].add_item_list_element("'spin_num'", "The axis will consist of the spin numbering.")
205 uf.desc[-1].add_paragraph("The spin ID string can be used to limit which spins are used in the plot. The default is that all spins will be used, however, the ID string can be used to select a subset of all spins, or a single spin for plots of Monte Carlo simulations, etc.")
206 uf.desc[-1].add_paragraph("The property which is actually plotted can be controlled by the plot data setting. This can be one of the following:")
207 uf.desc[-1].add_item_list_element("'value'", "Plot values (with errors if they exist).")
208 uf.desc[-1].add_item_list_element("'error'", "Plot errors.")
209 uf.desc[-1].add_item_list_element("'sims'", "Plot the simulation values.")
210 uf.desc[-1].add_paragraph("Normalisation is only allowed for series type data, for example the R2 exponential curves, and will be ignored for all other data types. If the norm flag is set to True then the y-value of the first point of the series will be set to 1. This normalisation is useful for highlighting errors in the data sets.")
211 uf.desc.append(relax_fit_params.uf_doc(label="table: curve-fit parameters and min stats"))
212 uf.desc.append(noe_params.uf_doc(label="table: NOE parameters"))
213 uf.desc.append(model_free_params.uf_doc(label="table: model-free parameters and min stats"))
214 uf.desc.append(jw_mapping_params.uf_doc(label="table: J(w) parameters"))
215 uf.desc.append(consistency_test_params.uf_doc(label="table: consistency testing parameters"))
216 uf.desc.append(relax_disp_params.uf_doc(label="table: dispersion parameters and min stats"))
217
218 uf.desc.append(Desc_container("Prompt examples"))
219 uf.desc[-1].add_paragraph("To write the NOE values for all spins to the Grace file 'noe.agr', type one of:")
220 uf.desc[-1].add_prompt("relax> grace.write('res_num', 'noe', file='noe.agr')")
221 uf.desc[-1].add_prompt("relax> grace.write(y_data_type='noe', file='noe.agr')")
222 uf.desc[-1].add_prompt("relax> grace.write(x_data_type='res_num', y_data_type='noe', file='noe.agr')")
223 uf.desc[-1].add_prompt("relax> grace.write(y_data_type='noe', file='noe.agr', force=True)")
224 uf.desc[-1].add_paragraph("To create a Grace file of 's2' vs. 'te' for all spins, type one of:")
225 uf.desc[-1].add_prompt("relax> grace.write('s2', 'te', file='s2_te.agr')")
226 uf.desc[-1].add_prompt("relax> grace.write(x_data_type='s2', y_data_type='te', file='s2_te.agr')")
227 uf.desc[-1].add_prompt("relax> grace.write(x_data_type='s2', y_data_type='te', file='s2_te.agr', force=True)")
228 uf.desc[-1].add_paragraph("To create a Grace file of the Monte Carlo simulation values of 'rex' vs. 'te' for residue 123, type one of:")
229 uf.desc[-1].add_prompt("relax> grace.write('rex', 'te', spin_id=':123', plot_data='sims', file='s2_te.agr')")
230 uf.desc[-1].add_prompt("relax> grace.write(x_data_type='rex', y_data_type='te', spin_id=':123', plot_data='sims', file='s2_te.agr')")
231 uf.desc[-1].add_paragraph("By plotting the peak intensities, the integrity of exponential relaxation curves can be checked and anomalies searched for prior to model-free analysis or reduced spectral density mapping. For example the normalised average peak intensities can be plotted verses the relaxation time periods for the relaxation curves of all residues of a protein. The normalisation, whereby the initial peak intensity of each residue I(0) is set to 1, emphasises any problems. To produce this Grace file, type:")
232 uf.desc[-1].add_prompt("relax> grace.write(x_data_type='relax_times', y_data_type='ave_int', file='intensities_norm.agr', force=True, norm=True)")
233 uf.backend = write_xy
234 uf.menu_text = "&write"
235 uf.gui_icon = "oxygen.actions.document-save"
236 uf.wizard_size = (1000, 700)
237 uf.wizard_image = WIZARD_IMAGE_PATH + 'grace.png'
238