mailr19069 - in /trunk: generic_fns/__init__.py generic_fns/noesy.py generic_fns/xplor.py lib/__init__.py lib/xplor.py


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

Header


Content

Posted by edward on March 23, 2013 - 18:08:
Author: bugman
Date: Sat Mar 23 18:08:56 2013
New Revision: 19069

URL: http://svn.gna.org/viewcvs/relax?rev=19069&view=rev
Log:
Shifted the generic_fns.xplor module to lib.xplor.


Added:
    trunk/lib/xplor.py
      - copied unchanged from r19067, trunk/generic_fns/xplor.py
Removed:
    trunk/generic_fns/xplor.py
Modified:
    trunk/generic_fns/__init__.py
    trunk/generic_fns/noesy.py
    trunk/lib/__init__.py

Modified: trunk/generic_fns/__init__.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/generic_fns/__init__.py?rev=19069&r1=19068&r2=19069&view=diff
==============================================================================
--- trunk/generic_fns/__init__.py (original)
+++ trunk/generic_fns/__init__.py Sat Mar 23 18:08:56 2013
@@ -64,6 +64,5 @@
             'sys_info',
             'temperature',
             'value',
-            'vmd',
-            'xplor'
+            'vmd'
 ]

Modified: trunk/generic_fns/noesy.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/generic_fns/noesy.py?rev=19069&r1=19068&r2=19069&view=diff
==============================================================================
--- trunk/generic_fns/noesy.py (original)
+++ trunk/generic_fns/noesy.py Sat Mar 23 18:08:56 2013
@@ -29,7 +29,7 @@
 # relax module imports.
 from generic_fns import pipes
 from generic_fns.mol_res_spin import exists_mol_res_spin_data, return_spin, 
tokenise
-from generic_fns import xplor
+from lib import xplor
 from lib.errors import RelaxError, RelaxNoSequenceError
 from lib.io import open_read_file
 from lib.warnings import RelaxWarning

Removed: trunk/generic_fns/xplor.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/generic_fns/xplor.py?rev=19068&view=auto
==============================================================================
--- trunk/generic_fns/xplor.py (original)
+++ trunk/generic_fns/xplor.py (removed)
@@ -1,306 +1,0 @@
-###############################################################################
-#                                                                            
 #
-# Copyright (C) 2009-2013 Edward d'Auvergne                                  
 #
-#                                                                            
 #
-# This file is part of the program relax (http://www.nmr-relax.com).         
 #
-#                                                                            
 #
-# This program is free software: you can redistribute it and/or modify       
 #
-# it under the terms of the GNU General Public License as published by       
 #
-# the Free Software Foundation, either version 3 of the License, or          
 #
-# (at your option) any later version.                                        
 #
-#                                                                            
 #
-# This program is distributed in the hope that it will be useful,            
 #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of             
 #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the              
 #
-# GNU General Public License for more details.                               
 #
-#                                                                            
 #
-# You should have received a copy of the GNU General Public License          
 #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.      
 #
-#                                                                            
 #
-###############################################################################
-
-# Module docstring.
-"""Module containing functions for the parsing and creation of Xplor 
formatted files."""
-
-# Python module imports.
-from re import search
-
-# relax module imports.
-from lib.errors import RelaxError
-
-
-def __convert_to_id(string):
-    """Convert the string into a relax atom id representation.
-
-    @param string:  The Xplor atom string.
-    @type string:   str
-    @return:        The relax atom id.
-    @rtype:         str
-    """
-
-    # Split up the string by the 'and' statements.
-    data = string.split('and')
-
-    # Loop over the data.
-    relax_id = ''
-    for i in range(len(data)):
-        # Split by whitespace.
-        info = data[i].split()
-
-        # Don't know what this is!
-        if len(info) != 2:
-            raise RelaxError("Cannot convert the Xplor atom string '%s' to 
relax format." % string)
-
-        # A molecule identifier.
-        if info[0] == 'segid':
-            relax_id = relax_id + '#' + info[1]
-
-        # A residue identifier.
-        elif info[0] == 'resid':
-            relax_id = relax_id + ':' + info[1]
-
-        # An atom identifier.
-        elif info[0] == 'name':
-            relax_id = relax_id + '@' + info[1]
-
-    # Return the relax id.
-    return relax_id
-
-
-def parse_noe_restraints(lines):
-    """Parse and return the NOE restraints from the Xplor lines.
-
-    @param lines:   The Xplor formatted file, or file fragment, split into 
lines.
-    @type lines:    list of str
-    @return:        The NOE restraint list in the format of two atom 
identification strings (or list
-                    of str for pseudoatoms) and the lower and upper 
restraints.
-    @rtype:         list of lists of str, str, float, float
-    """
-
-    # Strip all comments from the data.
-    lines = strip_comments(lines)
-
-    # Init.
-    data = []
-
-    # First level pass (assign statements).
-    for id1, id2, noe, lower, upper in first_parse(lines):
-        # Second parse (pseudoatoms).
-        id1 = second_parse(id1)
-        id2 = second_parse(id2)
-
-        # Convert to relax spin IDs.
-        if isinstance(id1, list):
-            relax_id1 = []
-            for i in range(len(id1)):
-                relax_id1.append(__convert_to_id(id1[i]))
-        else:
-            relax_id1 = __convert_to_id(id1)
-
-        if isinstance(id2, list):
-            relax_id2 = []
-            for i in range(len(id2)):
-                relax_id2.append(__convert_to_id(id2[i]))
-        else:
-            relax_id2 = __convert_to_id(id2)
-
-        # Convert to upper and lower bounds.
-        lower_bound = noe - lower
-        upper_bound = noe + upper
-
-        # Add the data to the list.
-        data.append([relax_id1, relax_id2, lower_bound, upper_bound])
-
-    # Return the data.
-    return data
-
-
-def first_parse(lines):
-    """Generator function to parse and extract the 2 atom IDs and NOE info 
from the lines.
-
-    The first parse loops over and returns the data from assign statements, 
returning pseudo atoms
-    as single strings.  The second parse splits the pseudoatoms.
-
-    @param lines:   The Xplor formatted file, or file fragment, split into 
lines.
-    @type lines:    list of str
-    @return:        The 2 atom IDs, and NOE info (NOE, upper, and lower 
bounds).
-    @rtype:         str, str, float, float, float
-    """
-
-    # Extract the data.
-    line_index = 0
-    while True:
-        # Break out!
-        if line_index >= len(lines):
-            break
-
-        # Find the assign statements.
-        if search('^assign', lines[line_index]):
-            # Init.
-            char_index = -1
-
-            # Extract the atom ID strings.
-            id = ['', '']
-            id_index = 0
-            inside = 0
-            while True:
-                # Inc the character index.
-                char_index = char_index + 1
-
-                # Break out!
-                if line_index >= len(lines):
-                    break
-
-                # Check if we need to go to the next line.
-                if char_index >= len(lines[line_index]):
-                    line_index = line_index + 1
-                    char_index = -1
-                    continue
-
-                # A starting bracket, so increment the inside counter.
-                if lines[line_index][char_index] == '(':
-                    inside = inside + 1
-
-                    # Don't include the first bracket in the ID string.
-                    if inside == 1:
-                        continue
-
-                # Not inside, so jump to the next character.
-                if not inside:
-                    continue
-
-                # An ending bracket.
-                elif lines[line_index][char_index] == ')':
-                    inside = inside - 1
-
-                # A logical test (debugging).
-                if inside < 0:
-                    raise RelaxError("Improperly formatted Xplor file, 
unmatched ')'.")
-
-                # Append the character.
-                if inside:
-                    id[id_index] = id[id_index] + 
lines[line_index][char_index]
-
-                # Go to the second id_index, or break.
-                if inside == 0:
-                    if id_index == 1:
-                        break
-                    else:
-                        id_index = 1
-
-            # The rest of the data (NOE restraint info).
-            info = lines[line_index][char_index+1:].split()
-
-            # NOE dist, lower, upper.
-            noe = float(info[0])
-            lower = float(info[1])
-            upper = float(info[2])
-
-        # Non-data line.
-        else:
-            # Line index.
-            line_index = line_index + 1
-
-            # Skip to the next line without yielding.
-            continue
-
-        # Line index.
-        line_index = line_index + 1
-
-        # Return the data.
-        yield id[0], id[1], noe, lower, upper
-
-
-def second_parse(id):
-    """Split up pseudoatoms.
-
-    @param id:  The Xplor atom id without outer brackets, i.e. a single atom 
or a list of atoms in
-                the case of pseudoatoms.
-    @type id:   str
-    @return:    For normal atoms, the id string is returned unmodified.  For 
pseudoatoms, a list of
-                strings, with brackets removed, is returned.
-    @rtype:     str or list of str
-    """
-
-    # Loop over the characters.
-    atoms = ['']
-    index = -1
-    inside = False
-    while True:
-        # Inc the character index.
-        index = index + 1
-
-        # Break out.
-        if index >= len(id):
-            break
-
-        # A starting bracket, so flip the inside flag.
-        if id[index] == '(':
-            # 2 brackets?!?
-            if inside:
-                raise RelaxError("The Xplor pseudoatom ID string '%s' is 
invalid." % id)
-
-            # The flag.
-            inside = True
-
-            # Don't include the first bracket in the ID string.
-            continue
-
-        # Not inside, so jump to the next character.
-        if not inside:
-            continue
-
-        # An ending bracket.
-        if id[index] == ')':
-            inside = False
-
-        # Append the character.
-        if inside:
-            atoms[-1] = atoms[-1] + id[index]
-
-        # Add another atom.
-        if not inside:
-            atoms.append('')
-
-    # Remove the last empty atom string.
-    if atoms[0] and atoms[-1] == '':
-        atoms = atoms[:-1]
-
-    # Return the data.
-    if not atoms[0]:
-        return id
-    else:
-        return atoms
-
-
-def strip_comments(lines):
-    """Remove all Xplor comments from the data.
-
-    @param lines:   The Xplor formatted file, or file fragment, split into 
lines.
-    @type lines:    list of str
-    @return:        The file data with all comments removed.
-    @rtype:         list of str
-    """
-
-    # Loop over the lines.
-    new_lines = []
-    for line in lines:
-        # Comment lines.
-        if search('^!', line):
-            continue
-
-        # Partial comment lines.
-        new_line = ''
-        for char in line:
-            # Comment - so skip the rest of the line.
-            if char == '!':
-                continue
-
-            # Build the new line.
-            new_line = new_line + char
-
-        # Add the new line.
-        new_lines.append(new_line)
-
-    # Return the stripped data.
-    return new_lines

Modified: trunk/lib/__init__.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/lib/__init__.py?rev=19069&r1=19068&r2=19069&view=diff
==============================================================================
--- trunk/lib/__init__.py (original)
+++ trunk/lib/__init__.py Sat Mar 23 18:08:56 2013
@@ -39,5 +39,6 @@
     'spectral_densities',
     'structure',
     'text',
-    'warnings'
+    'warnings',
+    'xplor'
 ]




Related Messages


Powered by MHonArc, Updated Sat Mar 23 18:20:03 2013