Eldon, Would you be able to help me with a few questions about the Tensor save frame that I am about to create? Sorry for the length :S This save frame, from memory, was a general save frame for all types of rank-2 tensors, was it not? It could therefore hold diffusion tensors, alignment tensors, Saupe order matrices, CS tensors, etc.? This appears to be an expansion of shielding tensor save frame. Below are a few suggestions for additions and some mock ups that I will code relax (http://nmr-relax.com) and bmrblib (http://gna.org/projects/bmrblib/) to produce.
_Tensor.Reduceable_matrix_1_1_val _Tensor.Reduceable_matrix_1_2_val _Tensor.Reduceable_matrix_1_3_val _Tensor.Reduceable_matrix_2_1_val _Tensor.Reduceable_matrix_2_2_val _Tensor.Reduceable_matrix_2_3_val _Tensor.Reduceable_matrix_3_1_val _Tensor.Reduceable_matrix_3_2_val _Tensor.Reduceable_matrix_3_3_val
Firstly, I'm guessing this matrix is in the structure frame (the PDB frame). But how should we specify the PDB frame? For example I could be analysing CaM using Ad Bax's high quality, yet different PDB structures for each domain separately, i.e. model 2 of 1J7P and model 3 of 1J7O. Should I specify PDBs and model numbers, or dump all coordinate info of the structures? This information is needed because the diffusion tensor is attached to a structure and the structures are in random orientations within the PDB frame. One problem I see is how do we specify the tensor type? Maybe a tag such as _Tensor_list.Tensor_type with fixed enumerations such as 'diffusion', 'CS', 'shielding', and 'alignment'? These tensors are often described quite differently - though the _Tensor.Reduceable_matrix_* form applies to all. For example the total information content of a spheroidal diffusion tensor from relax in XML form looks like: <diff_tensor desc="Diffusion tensor" type="spheroid"> <Da ieee_754_byte_array="[213, 118, 248, 246, 40, 53, 91, 65]"> 7132323.85892 </Da> <fixed> False </fixed> <phi ieee_754_byte_array="[224, 227, 53, 166, 165, 212, 3, 64]"> 2.47883157589 </phi> <spheroid_type> 'prolate' </spheroid_type> <theta ieee_754_byte_array="[147, 6, 168, 205, 63, 251, 238, 63]"> 0.968170072243 </theta> <tm ieee_754_byte_array="[78, 9, 5, 238, 170, 132, 67, 62]"> 9.08888558914e-09 </tm> </diff_tensor> Note that in this axially symmetric case there are, in fact, infinite matrix forms. Therefore just an axis and tm and Da are used to specify this. But multiple parameters can be used to specify a diffusion tensor, and different definitions/equations of properties such as rhombicity are used all over the place. Therefore the _Tensor save frame will require a little refinement, or that this is used as a template for specific tensor save frames. Below are some mock ups of diffusion tensors using the _Tensor save frame, with a few additional tags. I think I can use a separate save frame for each diffusion tensor, so maybe 2 saveframes for a 2 domain system? It could probably all go into one frame, but might be nicer to group these into individual frames, especially if tensors overlap! I've added the _Tensor_list.*_val_type tags to handle different definitions of anisotropy and rhombicity as these can be defined in many different ways! This is the minimal information I need to deposit and then re-read the data. # Spherical diffusion mock up (unused tags removed). save_diff_tensor _Tensor_list.Sf_category tensor _Tensor_list.Sf_framecode spherical_tensor_1 _Tensor_list.ID 1 _Tensor_list.Tensor_type diffusion # New. _Tensor_list.Matrix_val_units s-1 # New (this is the units of the matrix form, and could be ppm for CS, etc.). _Tensor_list.Isotropic_val_type "Diso = 1/(6.tm)" # New. _Tensor_list.Details "spherical diffusion" loop_ _Tensor.ID _Tensor.Entity_ID _Tensor.Comp_index_ID _Tensor.Comp_ID _Tensor.Atom_ID _Tensor.Atom_type _Tensor.Atom_isotope_number _Tensor.Isotropic_val _Tensor.Anisotropic_val _Tensor.Rhombic_val _Tensor.Tensor_list_ID 1 1 9 Gln N N 15 12985705.377075171 0.0 0.0 1 2 1 10 Gln N N 15 12985705.377075171 0.0 0.0 1 stop_ save_ # Spheroidal diffusion mock up (unused tags removed). # Note that _Tensor_list.Spheroid_type can be determined by the sign of Da (_Tensor.Anisotropic_val) when using Da = Dpar - Dper. # Also note that the polar (theta) and azimuthal angle (phi) are in this example, as in most cases, defined as 0 <= theta <= pi; 0 <= phi <= 2pi. save_diff_tensor _Tensor_list.Sf_category tensor _Tensor_list.Sf_framecode spheroidal_tensor_1 _Tensor_list.ID 1 _Tensor_list.Tensor_type diffusion # New. _Tensor_list.Matrix_val_units s-1 # New (this is the units of the matrix form, and could be ppm for CS, etc.). _Tensor_list.Spheroid_type prolate # New. _Tensor_list.Angle_units rad # New (for polar and azimuthal angles, as well as the 3 Euler angles). _Tensor_list.Isotropic_val_formula "Diso = 1/(6.tm)" # New. _Tensor_list.Anisotropic_val_formula "Da = Dpar - Dper" # New. _Tensor_list.Details "spheroidal diffusion" loop_ _Tensor.ID _Tensor.Entity_ID _Tensor.Comp_index_ID _Tensor.Comp_ID _Tensor.Atom_ID _Tensor.Atom_type _Tensor.Atom_isotope_number _Tensor.Axial_sym_axis_polar_angle # New. _Tensor.Axial_sym_axis_azimuthal_angle # New. _Tensor.Isotropic_val _Tensor.Anisotropic_val _Tensor.Rhombic_val _Tensor.Tensor_list_ID 1 1 9 Gln N N 15 0.96817007224326956 2.4788315758892034 18337414.970415145 7132323.8589150626 0.0 1 2 1 10 Gln N N 15 0.96817007224326956 2.4788315758892034 18337414.970415145 7132323.8589150626 0.0 1 stop_ save_ # Ellipsoidal diffusion mock up (unused tags removed). save_diff_tensor _Tensor_list.Sf_category tensor _Tensor_list.Sf_framecode ellipsoidal_tensor_1 _Tensor_list.ID 1 _Tensor_list.Tensor_type diffusion # New. _Tensor_list.Matrix_val_units s-1 # New (this is the units of the matrix form, and could be ppm for CS, etc.). _Tensor_list.Angle_units rad # New (for polar and azimuthal angles, as well as the 3 Euler angles). _Tensor_list.Euler_angle_type zyz # New. _Tensor_list.Isotropic_val_formula "Diso = 1/(6.tm)" # New. _Tensor_list.Anisotropic_val_formula "Da = Dpar - Dper" # New. _Tensor_list.Rhombic_val_formula "Dr = (Dy - Dx)/2Da" # New. _Tensor_list.Details "ellipsoidal diffusion" loop_ _Tensor.ID _Tensor.Entity_ID _Tensor.Comp_index_ID _Tensor.Comp_ID _Tensor.Atom_ID _Tensor.Atom_type _Tensor.Atom_isotope_number _Tensor.Euler_angle_alpha _Tensor.Euler_angle_beta _Tensor.Euler_angle_gamma _Tensor.Isotropic_val _Tensor.Anisotropic_val _Tensor.Rhombic_val _Tensor.Tensor_list_ID 1 1 9 Gln N N 15 1.22079138007 2.61076471643 0.632663091701 39314097.38005387 235884584.281 9.58992200396e-17 1 2 1 10 Gln N N 15 1.22079138007 2.61076471643 0.632663091701 39314097.38005387 235884584.281 9.58992200396e-17 1 stop_ save_ Ok, that should be hopefully it for this save frame. When I can work on it, I'll get relax and bmrblib to produce these mock ups. Cheers, Edward