1   
  2   
  3   
  4   
  5   
  6   
  7   
  8   
  9   
 10   
 11   
 12   
 13   
 14   
 15   
 16   
 17   
 18   
 19   
 20   
 21   
 22   
 23  import sys 
 24   
 25  import help 
 26   
 27   
 30           
 31          self.__relax_help__ = \ 
 32          """Class for manipulating sequence data.""" 
 33   
 34           
 35          self.__relax_help__ = self.__relax_help__ + "\n" + help.relax_class_help 
 36   
 37           
 38          self.__relax__ = relax 
  39   
 40   
 41 -    def add(self, run=None, res_num=None, res_name=None, select=1): 
  42          """Function for adding a residue onto the sequence. 
 43   
 44          Keyword Arguments 
 45          ~~~~~~~~~~~~~~~~~ 
 46   
 47          run:  The name of the run. 
 48   
 49          res_num:  The residue number. 
 50   
 51          res_name:  The name of the residue. 
 52   
 53          select:  A flag specifying if the residue should be selected. 
 54   
 55   
 56          Description 
 57          ~~~~~~~~~~~ 
 58   
 59          Using this function a new sequence can be generated without having to load the sequence from 
 60          a file.  However if the sequence already exists, the new residue will be added to the end. 
 61          The same residue number cannot be used more than once. 
 62   
 63   
 64          Examples 
 65          ~~~~~~~~ 
 66   
 67          The following sequence of commands will generate the sequence 1 ALA, 2 GLY, 3 LYS and assign 
 68          it to the run 'm3': 
 69   
 70          relax> run = 'm3' 
 71          relax> sequence.add(run, 1, 'ALA') 
 72          relax> sequence.add(run, 2, 'GLY') 
 73          relax> sequence.add(run, 3, 'LYS') 
 74          """ 
 75   
 76           
 77          if self.__relax__.interpreter.intro: 
 78              text = sys.ps3 + "sequence.add(" 
 79              text = text + "run=" + `run` 
 80              text = text + ", res_num=" + `res_num` 
 81              text = text + ", res_name=" + `res_name` 
 82              text = text + ", select=" + `select` + ")" 
 83              print text 
 84   
 85           
 86          if type(run) != str: 
 87              raise RelaxStrError, ('run', run) 
 88   
 89           
 90          if type(res_num) != int: 
 91              raise RelaxIntError, ('residue number', res_num) 
 92   
 93           
 94          if type(res_name) != str: 
 95              raise RelaxStrError, ('residue name', res_name) 
 96   
 97           
 98          if type(select) != int or (select != 0 and select != 1): 
 99              raise RelaxBinError, ('select', select) 
100   
101           
102          self.__relax__.generic.sequence.add(run=run, res_num=res_num, res_name=res_name, select=select) 
 103   
104   
105 -    def copy(self, run1=None, run2=None): 
 106          """Function for copying the sequence from run1 to run2. 
107   
108          Keyword Arguments 
109          ~~~~~~~~~~~~~~~~~ 
110   
111          run1:  The name of the run to copy the sequence from. 
112   
113          run2:  The name of the run to copy the sequence to. 
114   
115   
116          Description 
117          ~~~~~~~~~~~ 
118   
119          This function will copy the sequence from 'run1' to 'run2'.  'run1' must contain sequence 
120          information, while 'run2' must have no sequence loaded. 
121   
122   
123          Examples 
124          ~~~~~~~~ 
125   
126          To copy the sequence from the run 'm1' to the run 'm2', type: 
127   
128          relax> sequence.copy('m1', 'm2') 
129          relax> sequence.copy(run1='m1', run2='m2') 
130          """ 
131   
132           
133          if self.__relax__.interpreter.intro: 
134              text = sys.ps3 + "sequence.copy(" 
135              text = text + "run1=" + `run1` 
136              text = text + ", run2=" + `run2` + ")" 
137              print text 
138   
139           
140          if type(run1) != str: 
141              raise RelaxStrError, ('run1', run1) 
142   
143           
144          if type(run2) != str: 
145              raise RelaxStrError, ('run2', run2) 
146   
147           
148          self.__relax__.generic.sequence.copy(run1=run1, run2=run2) 
 149   
150   
152          """Function for deleting the sequence. 
153   
154          Keyword Arguments 
155          ~~~~~~~~~~~~~~~~~ 
156   
157          run:  The name of the run. 
158   
159   
160          Description 
161          ~~~~~~~~~~~ 
162   
163          This function has the same effect as using the 'delete' function to delete all residue 
164          specific data. 
165          """ 
166   
167           
168          if self.__relax__.interpreter.intro: 
169              text = sys.ps3 + "sequence.delete(" 
170              text = text + "run=" + `run` + ")" 
171              print text 
172   
173           
174          if type(run) != str: 
175              raise RelaxStrError, ('run', run) 
176   
177           
178          self.__relax__.generic.sequence.delete(run=run) 
 179   
180   
182          """Function for displaying the sequence. 
183   
184          Keyword Arguments 
185          ~~~~~~~~~~~~~~~~~ 
186   
187          run:  The name of the run. 
188          """ 
189   
190           
191          if self.__relax__.interpreter.intro: 
192              text = sys.ps3 + "sequence.display(" 
193              text = text + "run=" + `run` + ")" 
194              print text 
195   
196           
197          if type(run) != str: 
198              raise RelaxStrError, ('run', run) 
199   
200           
201          self.__relax__.generic.sequence.display(run=run) 
 202   
203   
204 -    def read(self, run=None, file=None, dir=None, num_col=0, name_col=1, sep=None): 
 205          """Function for reading sequence data. 
206   
207          Keyword Arguments 
208          ~~~~~~~~~~~~~~~~~ 
209   
210          run:  The name of the run. 
211   
212          file:  The name of the file containing the sequence data. 
213   
214          dir:  The directory where the file is located. 
215   
216          num_col:  The residue number column (the default is 0, ie the first column). 
217   
218          name_col:  The residue name column (the default is 1). 
219   
220          sep:  The column separator (the default is white space). 
221   
222   
223          Description 
224          ~~~~~~~~~~~ 
225   
226          If no directory is given, the file will be assumed to be in the current working directory. 
227   
228   
229          Examples 
230          ~~~~~~~~ 
231   
232          The following commands will read the sequence data out of a file called 'seq' where the 
233          residue numbers and names are in the first and second columns respectively and assign it to 
234          the run 'm1'. 
235   
236          relax> sequence.read('m1', 'seq') 
237          relax> sequence.read('m1', 'seq', num_col=0, name_col=1) 
238          relax> sequence.read(run='m1', file='seq', num_col=0, name_col=1, sep=None) 
239   
240   
241          The following commands will read the sequence out of the file 'noe.out' which also contains 
242          the NOE values. 
243   
244          relax> sequence.read('m1', 'noe.out') 
245          relax> sequence.read('m1', 'noe.out', num_col=0, name_col=1) 
246          relax> sequence.read(run='m1', file='noe.out', num_col=0, name_col=1) 
247   
248   
249          The following commands will read the sequence out of the file 'noe.600.out' where the 
250          residue numbers are in the second column, the names are in the sixth column and the columns 
251          are separated by commas and assign it to the run 'm5'. 
252   
253          relax> sequence.read('m5', 'noe.600.out', num_col=1, name_col=5, sep=',') 
254          relax> sequence.read(run='m5', file='noe.600.out', num_col=1, name_col=5, sep=',') 
255          """ 
256   
257           
258          if self.__relax__.interpreter.intro: 
259              text = sys.ps3 + "sequence.read(" 
260              text = text + "run=" + `run` 
261              text = text + ", file=" + `file` 
262              text = text + ", dir=" + `dir` 
263              text = text + ", num_col=" + `num_col` 
264              text = text + ", name_col=" + `name_col` 
265              text = text + ", sep=" + `sep` + ")" 
266              print text 
267   
268           
269          if type(run) != str: 
270              raise RelaxStrError, ('run', run) 
271   
272           
273          if type(file) != str: 
274              raise RelaxStrError, ('file name', file) 
275   
276           
277          if dir != None and type(dir) != str: 
278              raise RelaxNoneStrError, ('directory name', dir) 
279   
280           
281          if type(num_col) != int: 
282              raise RelaxIntError, ('residue number column', num_col) 
283   
284           
285          if type(name_col) != int: 
286              raise RelaxIntError, ('residue name column', name_col) 
287   
288           
289          if sep != None and type(sep) != str: 
290              raise RelaxNoneStrError, ('column separator', sep) 
291   
292           
293          self.__relax__.generic.sequence.read(run=run, file=file, dir=dir, num_col=num_col, name_col=name_col, sep=sep) 
 294   
295   
296 -    def sort(self, run=None): 
 297          """Function for numerically sorting the sequence by residue number. 
298   
299          Keyword Arguments 
300          ~~~~~~~~~~~~~~~~~ 
301   
302          run:  The name of the run. 
303          """ 
304   
305           
306          if self.__relax__.interpreter.intro: 
307              text = sys.ps3 + "sequence.sort(" 
308              text = text + "run=" + `run` + ")" 
309              print text 
310   
311           
312          if type(run) != str: 
313              raise RelaxStrError, ('run', run) 
314   
315           
316          self.__relax__.generic.sequence.sort(run=run) 
 317   
318   
319 -    def write(self, run=None, file=None, dir=None, force=0): 
 320          """Function for writing the sequence to a file. 
321   
322          Keyword Arguments 
323          ~~~~~~~~~~~~~~~~~ 
324   
325          run:  The name of the run. 
326   
327          file:  The name of the file. 
328   
329          dir:  The directory name. 
330   
331          force:  A flag which, if set to 1, will cause the file to be overwritten. 
332   
333   
334          Description 
335          ~~~~~~~~~~~ 
336   
337          If no directory name is given, the file will be placed in the current working directory. 
338          """ 
339   
340           
341          if self.__relax__.interpreter.intro: 
342              text = sys.ps3 + "sequence.write(" 
343              text = text + "run=" + `run` 
344              text = text + ", file=" + `file` 
345              text = text + ", dir=" + `dir` 
346              text = text + ", force=" + `force` + ")" 
347              print text 
348   
349           
350          if type(run) != str: 
351              raise RelaxStrError, ('run', run) 
352   
353           
354          if type(file) != str: 
355              raise RelaxStrError, ('file name', file) 
356   
357           
358          if dir != None and type(dir) != str: 
359              raise RelaxNoneStrError, ('directory name', dir) 
360   
361           
362          if type(force) != int or (force != 0 and force != 1): 
363              raise RelaxBinError, ('force flag', force) 
364   
365           
366          self.__relax__.generic.sequence.write(run=run, file=file, dir=dir, force=force)