Hi,
I'll go through the new BMRB saveframes and tags from your MS .doc
file one by one below. But my first question is, is this version 3.1
of the NMR-STAR dictionary? For the BMRB API package I'm writing, it
would be useful to know if I should put this into the v3.1 code, or
put it into a layer higher into v3.2 code?
save_general_relaxation_list_1
_General_relaxation_list.Sf_category
_General_relaxation_list.Sf_framecode
_General_relaxation_list.ID
_General_relaxation_list.Sample_condition_list_ID
_General_relaxation_list.Sample_condition_list_label
_General_relaxation_list.Temp_calibration_method
Can _General_relaxation_list.Temp_calibration_method be limited to a
set number of strings with fixed capitalisation? I.e. 'MeOH' for
methanol, 'MEG' for monoethylene glycol, etc? And would this not be
more logical in _General_relaxation_experiment? How would you
indicate that no temp calibration was performed?
_General_relaxation_list.Temp_control_method
Could the _General_relaxation_list.Temp_control_method tag be split
into 2, i.e.
| _General_relaxation_list.Temp_single_scan_interleaving
| _General_relaxation_list.Temp_compensation_block
where both are boolean types (True-False, 0-1, yes-no, etc.)? Again,
would this not be more logical in _General_relaxation_experiment?
_General_relaxation_list.Spectrometer_frequency_1H
_General_relaxation_list.Relaxation_coherence_type
Could a list of allowable values (or recommended) be placed in the tag
details frame of the NMR-STAR docs? I'll generate and parse whatever
you wish this to be.
_General_relaxation_list.Relaxation_type_common_name
Is this for human readability, i.e. a VARCHAR such as 'R1'?
_General_relaxation_list.Relaxation_val_units
_General_relaxation_list.Rex_units
_General_relaxation_list.Details
loop_
_General_relaxation_experiment.Experiment_ID
_General_relaxation_experiment.Experiment_name
_General_relaxation_experiment.Sample_ID
_General_relaxation_experiment.Sample_label
_General_relaxation_experiment.Sample_state
_General_relaxation_experiment.Sf_ID
_General_relaxation_experiment.Entry_ID
_General_relaxation_experiment.General_relaxation_list_ID
stop_
loop_
_General_relaxation_software.Software_ID
_General_relaxation_software.Software_label
_General_relaxation_software.Method_ID
_General_relaxation_software.Method_label
_General_relaxation_software.Sf_ID
_General_relaxation_software.Entry_ID
_General_relaxation_software.General_relaxation_list_ID
stop_
This all seems to be sufficient, for relax's needs anyway. Maybe
something will come up later.
loop_
_General_relaxation.ID
_General_relaxation.Assembly_atom_ID
_General_relaxation.Entity_assembly_ID
_General_relaxation.Entity_ID
_General_relaxation.Comp_index_ID
_General_relaxation.Seq_ID
_General_relaxation.Comp_ID
_General_relaxation.Atom_ID
_General_relaxation.Atom_type
_General_relaxation.Atom_isotope_number
_General_relaxation.General_relaxation_val
_General_relaxation.General_relaxation_val_err
_General_relaxation.Rex_val
_General_relaxation.Rex_err
Here there is a '*_val', '*_val_err', and '*_err'. For consistency,
should this be 'Rex_val_err' or 'General_relaxation_err'?
_General_relaxation.General_relaxation_list_ID
stop_
save_
On question about this general relaxation saveframe, is this supposed
to cover standard relaxation together with cross-correlated
relaxation? I've recently noticed:
http://www.bmrb.wisc.edu/dictionary/3.1html_frame/frame_SaveFramePage.html#dipole_CSA_cross_correlations
http://www.bmrb.wisc.edu/dictionary/3.1html_frame/frame_SaveFramePage.html#dipole_dipole_cross_correlations
How will these saveframes be handled in this new design? Will thez be
absorbed into General_relaxation or will they be redesigned to match
General_relaxation?
The Order_parameter saveframe naming obviously matches the v3.1
convention, but this might be problematic. There is a competing
theory to model-free analysis called SRLS (slowly relaxing local
structure). Due to implementation difficulties for end users,
history, and politics this is not used anywhere near as much as
model-free, but maybe it would be useful to accommodate this theory in
the BMRB. Another is the Jens Meiler et al. 2000, model-free analysis
of RDC data. Here there are again order parameters. I would assume
that the chance of order parameters appearing in future theories is
also extremely high. So maybe this saveframe would be better named as
Model_free, and having other theories in saveframes such as
Slowly_relaxing_local_structure, RDC_model_free, etc.?
save_order_parameter_list_1
_Order_parameter_list.Sf_category
_Order_parameter_list.Sf_framecode
_Order_parameter_list.ID
_Order_parameter_list.Sample_condition_list_ID
_Order_parameter_list.Sample_condition_list_label
_Order_parameter_list.Tau_e_val_units
_Order_parameter_list.Tau_s_val_units
_Order_parameter_list.Details
Here _Order_parameter_list.Tau_f_val_units is missing!
loop_
_Order_parameter_input.Sf_category
_Order_parameter_input.Sf_category_ID
What is the Order_parameter_input tag category?
_Order_parameter_experiment.Order_parameter_list_ID
stop_
loop_
_Order_parameter_software.Software_ID
I'm guessing that the software version, etc. is in a separate software
saveframe that this tag is referring to?
_Order_parameter_software.Software_label
_Order_parameter_software.Method_ID
_Order_parameter_software.Method_label
_Order_parameter_software.Sf_ID
_Order_parameter_software.Entry_ID
_Order_parameter_software.Order_parameter_list_ID
stop_
loop_
_Order_param.ID
_Order_param.Entity_assembly_ID
_Order_param.Entity_ID
_Order_param.Comp_index_ID
_Order_param.Comp_ID
_Order_param.Obs_atom_ID
_Order_param.Attached_atom_ID
_Order_param.Bond_vector_x_val
_Order_param.Bond_vector_y_val
_Order_param.Bond_vector_z_val
Unit vectors are used in calculations, but I guess it doesn't matter
what the units or length of this vector are as it can always be
converted to unit length. One issue here is a future extension I am
considering. In an NMR ensemble, or MD simulation, there are multiple
vectors available for a single spin. Currently you pick one, or the
average (should this be recorded?). But an option might be to use a
set of vectors, although implementation is not clear. But maybe it
would be useful to have the flexibility to handle this?
_Order_param.Bond_length_val
_Order_param.Bond_length_val_err
The _Order_param.Bond_length_val_err will only be used if bond length
r is an optimised parameter.
_Order_param.CSA_val
_Order_param.CSA_val_err
Same here. In addition, people might start to use the full CS tensor,
hence 5 parameters are generally needed (e.g. anistropic part, rhombic
part, and 3 Euler angles).
I'm currently placing these CSA values into the Chem_shift_anisotropy
saveframe. Do these need to be placing into the model-free saveframe
or would it be better to stay with the current BMRB convention of
storing these in their own frame (as well as the Bond_length and
Bond_vector)?
_Order_param.S2_val
_Order_param.S2_val_err
_Order_param.Sf2_val
_Order_param.Sf2_val_err
_Order_param.Ss2_val
_Order_param.Ss2_val_err
In relax and Modelfree4 (and many other places), these params are
written as S2f and S2s. Maybe this is because the 2 and f and super
and subscripts respectively, and you usually put the superscript
first?
_Order_param.Tau_m_val
To avoid confusion, maybe Local_tau_m_val (and _val_err) would be
better? People might think this is the global correlation time tau_m
and not the isolated spin specific parameter. Note that some people
will argue that Local_tau_c_val and Local_tau_c_val_err would be
better.
_Order_param.Tau_e_val
_Order_param.Tau_e_val_err
_Order_param.Tau_f_val
_Order_param.Tau_f_val_err
_Order_param.Tau_s_val
_Order_param.Tau_s_val_err
_Order_param.Rex_val
_Order_param.Rex_val_err
_Order_param.Chi_squared_val
When optimising the global model (model-free models of all spins +
diffusion tensor), or simply optimising the diffusion tensor, there
will be no spin specific chi-squared values. Is there a way of
storing this global chi-squared value?
_Order_param.Model_fit
Here I would suggest 2 options. The first would be like you
suggested, have a string such as 'S2, te' or 'S2s, tf, S2s, ts, Rex',
etc. covering all possible parameter combinations. But I would have
this limited to a small set of fixed strings to allow parsing by
model-free programs. The other would be to use a set of predefined
names as aliases for these parameters (if so, it would be good to have
them in the NMR-STAR dictionary documentation), so for example in
relax the following names are used:
The standard preset model-free models are
'm0' = {},
'm1' = {S2},
'm2' = {S2, te},
'm3' = {S2, Rex},
'm4' = {S2, te, Rex},
'm5' = {S2f, S2, ts},
'm6' = {S2f, tf, S2, ts},
'm7' = {S2f, S2, ts, Rex},
'm8' = {S2f, tf, S2, ts, Rex},
'm9' = {Rex}.
Additional preset model-free models, which are simply extensions
of the above models with
the addition of a local tm parameter are:
'tm0' = {tm},
'tm1' = {tm, S2},
'tm2' = {tm, S2, te},
'tm3' = {tm, S2, Rex},
'tm4' = {tm, S2, te, Rex},
'tm5' = {tm, S2f, S2, ts},
'tm6' = {tm, S2f, tf, S2, ts},
'tm7' = {tm, S2f, S2, ts, Rex},
'tm8' = {tm, S2f, tf, S2, ts, Rex},
'tm9' = {tm, Rex}.
More models are detailed at the end. Although not tested, they may
appear in the future. Note that you can either optimise S2+S2f or
S2s+S2f as S2=S2f*S2s. But I've shown in papers that S2+S2f
optimisation is much, much more reliable. The point is, if someone
optimises S2s and S2f together, they have made a mistake - but this
doesn't need to be an excuse for a second set of models with S2s! Oh,
note that model 'm0' might be problematic for the 'S2, te' type
representation. Which method is chosen makes no difference from my
perspective, as long as these models are limited to an array of
allowable values.
_Order_param.Order_parameter_list_ID
stop_
save_
I think that covers most things.
Regards,
Edward
P.S. All the models currently accepted in relax (cut and paste from
the documentation):
The standard preset model-free models are
'm0' = {},
'm1' = {S2},
'm2' = {S2, te},
'm3' = {S2, Rex},
'm4' = {S2, te, Rex},
'm5' = {S2f, S2, ts},
'm6' = {S2f, tf, S2, ts},
'm7' = {S2f, S2, ts, Rex},
'm8' = {S2f, tf, S2, ts, Rex},
'm9' = {Rex}.
The preset model-free models with optimisation of the CSA value are
'm10' = {CSA},
'm11' = {CSA, S2},
'm12' = {CSA, S2, te},
'm13' = {CSA, S2, Rex},
'm14' = {CSA, S2, te, Rex},
'm15' = {CSA, S2f, S2, ts},
'm16' = {CSA, S2f, tf, S2, ts},
'm17' = {CSA, S2f, S2, ts, Rex},
'm18' = {CSA, S2f, tf, S2, ts, Rex},
'm19' = {CSA, Rex}.
The preset model-free models with optimisation of the bond length are
'm20' = {r},
'm21' = {r, S2},
'm22' = {r, S2, te},
'm23' = {r, S2, Rex},
'm24' = {r, S2, te, Rex},
'm25' = {r, S2f, S2, ts},
'm26' = {r, S2f, tf, S2, ts},
'm27' = {r, S2f, S2, ts, Rex},
'm28' = {r, S2f, tf, S2, ts, Rex},
'm29' = {r, CSA, Rex}.
The preset model-free models with both optimisation of the bond
length and CSA are
'm30' = {r, CSA},
'm31' = {r, CSA, S2},
'm32' = {r, CSA, S2, te},
'm33' = {r, CSA, S2, Rex},
'm34' = {r, CSA, S2, te, Rex},
'm35' = {r, CSA, S2f, S2, ts},
'm36' = {r, CSA, S2f, tf, S2, ts},
'm37' = {r, CSA, S2f, S2, ts, Rex},
'm38' = {r, CSA, S2f, tf, S2, ts, Rex},
'm39' = {r, CSA, Rex}.
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.
Additional preset model-free models, which are simply extensions
of the above models with
the addition of a local tm parameter are:
'tm0' = {tm},
'tm1' = {tm, S2},
'tm2' = {tm, S2, te},
'tm3' = {tm, S2, Rex},
'tm4' = {tm, S2, te, Rex},
'tm5' = {tm, S2f, S2, ts},
'tm6' = {tm, S2f, tf, S2, ts},
'tm7' = {tm, S2f, S2, ts, Rex},
'tm8' = {tm, S2f, tf, S2, ts, Rex},
'tm9' = {tm, Rex}.
The preset model-free models with optimisation of the CSA value are
'tm10' = {tm, CSA},
'tm11' = {tm, CSA, S2},
'tm12' = {tm, CSA, S2, te},
'tm13' = {tm, CSA, S2, Rex},
'tm14' = {tm, CSA, S2, te, Rex},
'tm15' = {tm, CSA, S2f, S2, ts},
'tm16' = {tm, CSA, S2f, tf, S2, ts},
'tm17' = {tm, CSA, S2f, S2, ts, Rex},
'tm18' = {tm, CSA, S2f, tf, S2, ts, Rex},
'tm19' = {tm, CSA, Rex}.
The preset model-free models with optimisation of the bond length are
'tm20' = {tm, r},
'tm21' = {tm, r, S2},
'tm22' = {tm, r, S2, te},
'tm23' = {tm, r, S2, Rex},
'tm24' = {tm, r, S2, te, Rex},
'tm25' = {tm, r, S2f, S2, ts},
'tm26' = {tm, r, S2f, tf, S2, ts},
'tm27' = {tm, r, S2f, S2, ts, Rex},
'tm28' = {tm, r, S2f, tf, S2, ts, Rex},
'tm29' = {tm, r, CSA, Rex}.
The preset model-free models with both optimisation of the bond
length and CSA are
'tm30' = {tm, r, CSA},
'tm31' = {tm, r, CSA, S2},
'tm32' = {tm, r, CSA, S2, te},
'tm33' = {tm, r, CSA, S2, Rex},
'tm34' = {tm, r, CSA, S2, te, Rex},
'tm35' = {tm, r, CSA, S2f, S2, ts},
'tm36' = {tm, r, CSA, S2f, tf, S2, ts},
'tm37' = {tm, r, CSA, S2f, S2, ts, Rex},
'tm38' = {tm, r, CSA, S2f, tf, S2, ts, Rex},
'tm39' = {tm, r, CSA, Rex}.