mailRe: r26790 - in /branches/nmrglue: lib/software/nmrglue.py pipe_control/nmrglue.py test_suite/system_tests/nmrglue.py


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

Header


Content

Posted by Edward d'Auvergne on November 27, 2014 - 18:00:
Hi Troels,

Unfortunately you committed too much here.  It should only be the
system test, but it includes changes to the relax library and the pipe
control package.  Could you revert and try again?

Cheers,

Edward



On 27 November 2014 at 17:57,  <tlinnet@xxxxxxxxxxxxx> wrote:
Author: tlinnet
Date: Thu Nov 27 17:57:00 2014
New Revision: 26790

URL: http://svn.gna.org/viewcvs/relax?rev=26790&view=rev
Log:
Added systemtest Nmrglue.xtest_plot_contour to test the functionality of 
contour plotting.

Task #7873 (https://gna.org/task/index.php?7873): Write wrapper function to 
nmrglue, to read .ft2 files and process them.
Homepage: http://www.nmrglue.com/
Link to nmrglue discussion: 
https://groups.google.com/forum/#!forum/nmrglue-discuss
The code is develop at Github: https://github.com/jjhelmus/nmrglue/
Google code: https://code.google.com/p/nmrglue/
Documentation: http://nmrglue.readthedocs.org/en/latest/index.html

Modified:
    branches/nmrglue/lib/software/nmrglue.py
    branches/nmrglue/pipe_control/nmrglue.py
    branches/nmrglue/test_suite/system_tests/nmrglue.py

Modified: branches/nmrglue/lib/software/nmrglue.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/nmrglue/lib/software/nmrglue.py?rev=26790&r1=26789&r2=26790&view=diff
==============================================================================
--- branches/nmrglue/lib/software/nmrglue.py    (original)
+++ branches/nmrglue/lib/software/nmrglue.py    Thu Nov 27 17:57:00 2014
@@ -23,13 +23,90 @@
 """Module for the wrapper functions around the nmrglue module."""

 # Python module imports.
-from re import search, split
+from numpy import arange
+import matplotlib.pyplot as plt
+import matplotlib.cm

 # relax module imports.
 from extern import nmrglue
 from lib.errors import RelaxError
 from lib.io import get_file_path
 from lib.spectrum.objects import Nmrglue_data
+
+
+def contour_plot(spectrum_id=None, contour_start=30000., contour_num=20, 
contour_factor=1.20, ppm=True, show=False):
+    """Plot the spectrum as contour plot.
+
+    @keyword spectrum_id:       The spectrum identification string.
+    @type spectrum_id:          str or list of str
+    @keyword contour_start:     Contour level start value
+    @type contour_start:        float
+    @keyword contour_num:       Number of contour levels
+    @type contour_num:          int
+    @keyword contour_factor:    Scaling factor between contour levels
+    @type contour_factor:       float
+    @keyword ppm:               A flag which if True will make the plot in 
ppm scale. Else it is in points.
+    @type ppm:                  bool
+    @keyword show:              A flag which if True will make a call to 
matplotlib.pyplot.show().
+    @type show:                 bool
+    @return:                    The matplotlib.axes.AxesSubplot class, 
which can be manipulated to add additional text to the axis.
+    @rtype:                     matplotlib.axes.AxesSubplot
+    """
+
+    # Extract the data.
+    dic  = cdp.ngdata[spectrum_id].dic
+    udic  = cdp.ngdata[spectrum_id].udic
+    data = cdp.ngdata[spectrum_id].data
+
+    # Setup plot parameters
+    # contour map (colors to use for contours)
+    cmap = matplotlib.cm.Blues_r
+
+    # Calculate contour levels
+    cl = contour_start * contour_factor ** arange(contour_num)
+
+    # Create the figure
+    fig = plt.figure()
+    ax = fig.add_subplot(111)
+
+    # Plot the contours
+
+    # Plot in ppm scale
+    if ppm:
+        # make ppm scales
+        uc_dim1 = nmrglue.pipe.make_uc(dic, data, dim=1)
+        ppm_dim1 = uc_dim1.ppm_scale()
+        ppm_dim1_0, ppm_dim1_1 = uc_dim1.ppm_limits()
+        uc_dim0 = nmrglue.pipe.make_uc(dic, data, dim=0)
+        ppm_dim0 = uc_dim0.ppm_scale()
+        ppm_dim0_0, ppm_dim0_1 = uc_dim0.ppm_limits()
+
+        ax.contour(data, cl, cmap=cmap, extent=(ppm_dim1_0, ppm_dim1_1, 
ppm_dim0_0, ppm_dim0_1))
+
+        # Decorate
+        ax.set_ylabel("%s (ppm)"%udic[0]['label'])
+        ax.set_xlabel("%s (ppm)"%udic[1]['label'])
+        ax.set_title("Spectrum")
+        lim_dim1 = [ppm_dim1_0, ppm_dim1_1]
+        lim_dim0 = [ppm_dim0_0, ppm_dim0_1]
+        ax.set_xlim(max(lim_dim1), min(lim_dim1))
+        ax.set_ylim(max(lim_dim0), min(lim_dim0))
+
+    else:
+        # Plot in points.
+        ax.contour(data, cl, cmap=cmap, extent=(0, data.shape[1] - 1, 0, 
data.shape[0] - 1))
+
+        # Decorate
+        ax.set_ylabel("%s (points)"%udic[0]['label'])
+        ax.set_xlabel("%s (points)"%udic[1]['label'])
+        ax.set_title("Spectrum")
+
+    # If show.
+    if show:
+        plt.show()
+
+    # Return ax
+    return ax


 def read_spectrum(file=None, dir=None):

Modified: branches/nmrglue/pipe_control/nmrglue.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/nmrglue/pipe_control/nmrglue.py?rev=26790&r1=26789&r2=26790&view=diff
==============================================================================
--- branches/nmrglue/pipe_control/nmrglue.py    (original)
+++ branches/nmrglue/pipe_control/nmrglue.py    Thu Nov 27 17:57:00 2014
@@ -24,7 +24,7 @@

 # relax module imports.
 from lib.errors import RelaxError
-from lib.software.nmrglue import read_spectrum
+from lib.software.nmrglue import contour_plot, read_spectrum
 from pipe_control.pipes import check_pipe
 from pipe_control.spectrum import add_spectrum_id, check_spectrum_id, 
delete

@@ -72,3 +72,29 @@

     # Store the data.
     add_nmrglue_data(spectrum_id=spectrum_id, nmrglue_data=nmrglue_data)
+
+
+def plot_contour(spectrum_id=None, contour_start=30000., contour_num=20, 
contour_factor=1.20, ppm=True, show=False):
+    """Plot the spectrum as contour plot.
+
+    @keyword spectrum_id:       The spectrum identification string.
+    @type spectrum_id:          str or list of str
+    @keyword contour_start:     Contour level start value
+    @type contour_start:        float
+    @keyword contour_num:       Number of contour levels
+    @type contour_num:          int
+    @keyword contour_factor:    Scaling factor between contour levels
+    @type contour_factor:       float
+    @keyword ppm:               A flag which if True will make the plot in 
ppm scale. Else it is in points.
+    @type ppm:                  bool
+    @keyword show:              A flag which if True will make a call to 
matplotlib.pyplot.show().
+    @type show:                 bool
+    @return:                    The matplotlib.axes.AxesSubplot class, 
which can be manipulated to add additional text to the axis.
+    @rtype:                     matplotlib.axes.AxesSubplot
+    """
+
+    # Call the contour plot.
+    ax = contour_plot(spectrum_id=spectrum_id, 
contour_start=contour_start, contour_num=contour_num, 
contour_factor=contour_factor, ppm=ppm, show=show)
+
+    return ax
+

Modified: branches/nmrglue/test_suite/system_tests/nmrglue.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/nmrglue/test_suite/system_tests/nmrglue.py?rev=26790&r1=26789&r2=26790&view=diff
==============================================================================
--- branches/nmrglue/test_suite/system_tests/nmrglue.py (original)
+++ branches/nmrglue/test_suite/system_tests/nmrglue.py Thu Nov 27 17:57:00 
2014
@@ -26,6 +26,7 @@

 # relax module imports.
 from data_store import Relax_data_store; ds = Relax_data_store()
+from pipe_control.nmrglue import plot_contour
 from status import Status; status = Status()
 from test_suite.system_tests.base_classes import SystemTestCase
 from extern import nmrglue
@@ -82,3 +83,27 @@

         # Assert the version to be 0.4.
         self.assertEqual(ng_vers, '0.4')
+
+
+    def xtest_plot_contour(self):
+        """Test the plot_contour function in pipe_control.
+        This is from the 
U{tutorial<http://jjhelmus.github.io/nmrglue/current/examples/plot_2d_spectrum.html>}."""
+
+        # Read the spectrum.
+        fname = 'freq_real.ft2'
+        sp_id = 'test'
+        self.interpreter.spectrum.nmrglue_read(file=fname, dir=ds.ng_test, 
spectrum_id=sp_id)
+
+        # Call the pipe_control function and get the return axis.
+        ax = plot_contour(spectrum_id=sp_id, ppm=True, show=False)
+
+        # Set new limits.
+        ax.set_xlim(30, 0)
+        ax.set_ylim(15, -20)
+
+        # add some labels
+        ax.text(25.0, 0.0, "Test", size=8, color='r')
+
+        # Now show
+        import matplotlib.pyplot as plt
+        plt.show()


_______________________________________________
relax (http://www.nmr-relax.com)

This is the relax-commits mailing list
relax-commits@xxxxxxx

To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-commits



Related Messages


Powered by MHonArc, Updated Fri Nov 28 14:20:26 2014