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 = *