mailr13845 - in /1.3/test_suite/shared_data/model_free/sphere: ./ create_ri.py create_sphere.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by edward on July 25, 2011 - 10:07:
Author: bugman
Date: Mon Jul 25 10:07:31 2011
New Revision: 13845

URL: http://svn.gna.org/viewcvs/relax?rev=13845&view=rev
Log:
Added some old 2004 scripts for creating a uniform vector distribution and 
calculating relaxation data.

This will be used in the end to build a quick test for the dauvergne_protocol 
auto-analysis.


Added:
    1.3/test_suite/shared_data/model_free/sphere/
    1.3/test_suite/shared_data/model_free/sphere/create_ri.py
    1.3/test_suite/shared_data/model_free/sphere/create_sphere.py   (with 
props)

Added: 1.3/test_suite/shared_data/model_free/sphere/create_ri.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/test_suite/shared_data/model_free/sphere/create_ri.py?rev=13845&view=auto
==============================================================================
--- 1.3/test_suite/shared_data/model_free/sphere/create_ri.py (added)
+++ 1.3/test_suite/shared_data/model_free/sphere/create_ri.py Mon Jul 25 
10:07:31 2011
@@ -1,0 +1,62 @@
+# Script for generating relaxation data for the 400 bond vectors in 
'sphere.pdb'.
+# Each vector will have the model-free parameter values of S2 = 0.8, te = 20 
ns, Rex = 0 1/s.
+# The diffusion tensor is isotropic with a correlation time of 10 ns.
+
+# Create the run
+name = 'sphere'
+create_run(name, 'mf')
+
+# Set the nucleus type to nitrogen.
+nuclei('N')
+
+# Set the diffusion tensor to isotropic with tm set to 10 ns.
+diffusion_tensor.set(name, 10e-9)
+
+# Generate the sequence from the PDB file.
+pdb(name, 'sphere.pdb')
+
+# Set the CSA and bond lengths.
+value.set(name, value=-170e-6, data_type='CSA')
+value.set(name, value=1.02e-10, data_type='r')
+
+# Set the model-free parameters.
+value.set(name, value=0.8, data_type='S2')
+value.set(name, value=20e-12, data_type='te')
+
+# Select model-free model m2.
+model_free.select_model(name, model='m2')
+
+# Back calculate the relaxation data.
+relax_data.back_calc(name, ri_label='NOE', frq_label='600', frq=600e6)
+relax_data.back_calc(name, ri_label='R1', frq_label='600', frq=600e6)
+relax_data.back_calc(name, ri_label='R2', frq_label='600', frq=600e6)
+relax_data.back_calc(name, ri_label='NOE', frq_label='500', frq=500e6)
+relax_data.back_calc(name, ri_label='R1', frq_label='500', frq=500e6)
+relax_data.back_calc(name, ri_label='R2', frq_label='500', frq=500e6)
+
+# Generate the errors.
+for i in xrange(len(self.relax.data.res[name])):
+    # Loop over the relaxation data.
+    for j in xrange(len(self.relax.data.res[name][i].relax_data)):
+        # Alias.
+        data = self.relax.data.res[name][i]
+
+        # 600 MHz NOE.
+        if data.ri_labels[j] == 'NOE' and 
data.frq_labels[data.remap_table[j]] == '600':
+            data.relax_error[j] = 0.04
+
+        # 500 MHz NOE.
+        elif data.ri_labels[j] == 'NOE' and 
data.frq_labels[data.remap_table[j]] == '500':
+            data.relax_error[j] = 0.05
+
+        # All other data.
+        else:
+            data.relax_error[j] = data.relax_data[j] * 0.02
+
+# Write the relaxation data to file.
+relax_data.write(name, ri_label='NOE', frq_label='600', file='noe.600.out', 
force=1)
+relax_data.write(name, ri_label='R1', frq_label='600', file='r1.600.out', 
force=1)
+relax_data.write(name, ri_label='R2', frq_label='600', file='r2.600.out', 
force=1)
+relax_data.write(name, ri_label='NOE', frq_label='500', file='noe.500.out', 
force=1)
+relax_data.write(name, ri_label='R1', frq_label='500', file='r1.500.out', 
force=1)
+relax_data.write(name, ri_label='R2', frq_label='500', file='r2.500.out', 
force=1)

Added: 1.3/test_suite/shared_data/model_free/sphere/create_sphere.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/test_suite/shared_data/model_free/sphere/create_sphere.py?rev=13845&view=auto
==============================================================================
--- 1.3/test_suite/shared_data/model_free/sphere/create_sphere.py (added)
+++ 1.3/test_suite/shared_data/model_free/sphere/create_sphere.py Mon Jul 25 
10:07:31 2011
@@ -1,0 +1,118 @@
+#!/usr/bin/python
+
+# Copyright 2004, Edward d'Auvergne
+
+from math import acos, cos, pi, sin
+
+
+def pdb_line(file=None, atom_num=0, atom=None, res_num=0, res_name=None, 
vector=None):
+    """Function for adding a line to the PDB file."""
+
+    # ATOM.
+    file.write('%-4s' % 'ATOM')
+
+    # Atom number and type.
+    file.write('%7i' % atom_num)
+    file.write('  %-4s' % atom)
+
+    # Residue number and name.
+    file.write('%-4s' % res_name)
+    file.write('%5i    ' % res_num)
+
+    # Vector.
+    file.write('%8.3f' % vector[0])
+    file.write('%8.3f' % vector[1])
+    file.write('%8.3f' % vector[2])
+
+    # I don't know what.
+    file.write('%6.2f' % 1.0)
+    file.write('%6.2f' % 0.0)
+
+    # End of line.
+    file.write('\n')
+
+
+# Number of increments.
+number = 20
+
+# U and V.
+u = []
+val = 1.0 / float(number)
+for i in xrange(number):
+    u.append(float(i) * val)
+
+
+# Generate the spherical angles theta and phi.
+##############################################
+
+theta = []
+phi = []
+for i in xrange(len(u)):
+    theta.append(acos(2.0 * (u[i] + val/2.0) - 1.0))
+    phi.append(2.0 * pi * u[i])
+    print "\ni: " + `i`
+    print "u: " + `u[i]`
+    print "v: " + `u[i] + val/2.0`
+    print "theta: " + `theta[i]`
+    print "phi: " + `phi[i]`
+
+
+# Generate the vectors:
+#
+#                 | sin(theta) * cos(phi) |
+#      vector  =  | sin(theta) * sin(phi) |
+#                 |      cos(theta)       |
+#
+###########################################
+
+vectors = []
+for i in xrange(len(u)):
+    for j in xrange(len(u)):
+        # X coordinate.
+        x = sin(theta[i]) * cos(phi[j])
+
+        # Y coordinate.
+        y = sin(theta[i]) * sin(phi[j])
+
+        # Z coordinate.
+        z = cos(theta[i])
+
+        # Append the vector.
+        vectors.append([x, y, z])
+
+
+# Create the PDB file.
+######################
+
+# PDB file.
+file = open('sphere.pdb', 'w')
+
+# Atom number and residue number.
+atom_num = 1
+res_num = 1
+
+# Used vectors.
+used = []
+
+# Loop over the vectors. 
+for i in xrange(len(vectors)):
+    # Test if the vector has already been used.
+    if vectors[i] in used:
+        print "Vector " + `vectors[i]` + " already used."
+        continue
+
+    # Nitrogen line.
+    pdb_line(file=file, atom_num=atom_num, atom='N', res_num=res_num, 
res_name='GLY', vector=[0.0, 0.0, 0.0])
+
+    # Hydrogen line.
+    pdb_line(file=file, atom_num=atom_num+1, atom='H', res_num=res_num, 
res_name='GLY', vector=vectors[i])
+
+    # Increment the atom number and residue number.
+    atom_num = atom_num + 2
+    res_num = res_num + 1
+
+    # Add the vector to the used vector list.
+    used.append(vectors[i])
+
+# End of PDB.
+file.write('END\n')

Propchange: 1.3/test_suite/shared_data/model_free/sphere/create_sphere.py
------------------------------------------------------------------------------
    svn:executable = *




Related Messages


Powered by MHonArc, Updated Mon Jul 25 10:20:02 2011