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}.