commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] gr-radio-astronomy/src/python usrp_psr_receiver...


From: Marcus D. Leech
Subject: [Commit-gnuradio] gr-radio-astronomy/src/python usrp_psr_receiver...
Date: Sat, 01 Jul 2006 01:08:40 +0000

CVSROOT:        /sources/gnuradio
Module name:    gr-radio-astronomy
Changes by:     Marcus D. Leech <mleech>        06/07/01 01:08:40

Modified files:
        src/python     : usrp_psr_receiver.py ra_fftsink.py 
                         ra_stripchartsink.py 

Log message:
        Added autoscaling to both ra_fftsink and ra_stripchartsink.  
Autoscaling is
          only meaningful in ra_stripchartsink when in "parallel" mode, used for
          pulsar display.
        
        Also, changed the default sizes for the plots to be about 100 pixels 
smaller.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gr-radio-astronomy/src/python/usrp_psr_receiver.py?cvsroot=gnuradio&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/gr-radio-astronomy/src/python/ra_fftsink.py?cvsroot=gnuradio&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/gr-radio-astronomy/src/python/ra_stripchartsink.py?cvsroot=gnuradio&r1=1.1&r2=1.2

Patches:
Index: usrp_psr_receiver.py
===================================================================
RCS file: /sources/gnuradio/gr-radio-astronomy/src/python/usrp_psr_receiver.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- usrp_psr_receiver.py        30 Jun 2006 20:11:43 -0000      1.5
+++ usrp_psr_receiver.py        1 Jul 2006 01:08:40 -0000       1.6
@@ -208,15 +208,12 @@
         input_rate = self.folder_input_rate
         output_rate = int(self.pulse_freq * save_i)
 
-        print "folder sample rate ", output_rate
-
         # Compute new interp and decim, based on best candidate
         interp = gru.lcm(input_rate, output_rate) / input_rate
         decim = gru.lcm(input_rate, output_rate) / output_rate
 
         # Save optimized folding parameters, used later
         self.folding = save_i
-        print "self.folding ", self.folding
         self.interp = int(interp)
         self.decim = int(decim)
 
@@ -497,8 +494,8 @@
             return self.set_doppler(kv['Doppler'])
 
         # Position the FFT or Waterfall
-        vbox.Add(self.scope.win, 10, wx.EXPAND)
-        vbox.Add(self.chart.win, 10, wx.EXPAND)
+        vbox.Add(self.scope.win, 5, wx.EXPAND)
+        vbox.Add(self.chart.win, 5, wx.EXPAND)
 
         # add control area at the bottom
         self.myform = myform = form.form()
@@ -1092,7 +1089,7 @@
         return(int(ntaps))
 
 def main ():
-    app = stdgui.stdapp(app_flow_graph, "RADIO ASTRONOMY PULSAR RECEIVER: 
$Revision: 1.5 $", nstatus=1)
+    app = stdgui.stdapp(app_flow_graph, "RADIO ASTRONOMY PULSAR RECEIVER: 
$Revision: 1.6 $", nstatus=1)
     app.MainLoop()
 
 if __name__ == '__main__':

Index: ra_fftsink.py
===================================================================
RCS file: /sources/gnuradio/gr-radio-astronomy/src/python/ra_fftsink.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- ra_fftsink.py       23 May 2006 00:35:10 -0000      1.1
+++ ra_fftsink.py       1 Jul 2006 01:08:40 -0000       1.2
@@ -29,7 +29,7 @@
 import math    
 import random
 
-default_ra_fftsink_size = (640,240)
+default_ra_fftsink_size = (640,140)
 
 
 def default_cfunc(db,l):
@@ -47,6 +47,7 @@
         self.y_per_div=y_per_div
         self.sc_y_per_div=sc_y_per_div
         self.ref_level = ref_level
+        self.autoscale = False
         self.sc_ref_level = sc_ref_level
         self.sample_rate = sample_rate
         self.fft_size = fft_size
@@ -86,6 +87,9 @@
             self.set_average(False)
         self.win.set_peak_hold(enable)
 
+    def set_autoscale(self, auto):
+        self.autoscale = auto
+
     def set_avg_alpha(self, avg_alpha):
         self.avg_alpha = avg_alpha
 
@@ -237,9 +241,14 @@
 
             
     def set_data (self, evt):
+        calc_min = 99e10
+        calc_max = -99e10
         dB = evt.data
         L = len (dB)
 
+        calc_min = min(dB)
+        calc_max = max(dB)
+        
         dB = self.ra_fftsink.cfunc(dB, L)
 
         if self.peak_hold:
@@ -285,6 +294,11 @@
                                       xLabel = units, yLabel = "dB")
 
         self.Draw (graphics, xAxis=None, yAxis=self.y_range)
+        d = calc_max - calc_min
+        d *= 0.1
+        if self.ra_fftsink.autoscale == True:
+            self.y_range = self._axisInterval ('min', calc_min-d, calc_max+d)
+        else:
         self.update_y_range ()
 
     def set_peak_hold(self, enable):
@@ -304,6 +318,9 @@
         # print "on_peak_hold"
         self.ra_fftsink.set_peak_hold(evt.IsChecked())
 
+    def on_autoscale(self, evt):
+        self.ra_fftsink.set_autoscale(evt.IsChecked())
+
     def on_incr_ref_level(self, evt):
         # print "on_incr_ref_level"
         self.ra_fftsink.set_ref_level(self.ra_fftsink.ref_level
@@ -357,6 +374,7 @@
     def build_popup_menu(self):
         self.id_incr_ref_level = wx.NewId()
         self.id_decr_ref_level = wx.NewId()
+        self.id_autoscale = wx.NewId()
         self.id_incr_y_per_div = wx.NewId()
         self.id_decr_y_per_div = wx.NewId()
         self.id_y_per_div_1 = wx.NewId()
@@ -369,6 +387,7 @@
 
         self.Bind(wx.EVT_MENU, self.on_average, id=self.id_average)
         self.Bind(wx.EVT_MENU, self.on_peak_hold, id=self.id_peak_hold)
+        self.Bind(wx.EVT_MENU, self.on_autoscale, id=self.id_autoscale)
         self.Bind(wx.EVT_MENU, self.on_incr_ref_level, 
id=self.id_incr_ref_level)
         self.Bind(wx.EVT_MENU, self.on_decr_ref_level, 
id=self.id_decr_ref_level)
         self.Bind(wx.EVT_MENU, self.on_incr_y_per_div, 
id=self.id_incr_y_per_div)
@@ -391,6 +410,7 @@
         # menu.Append(self.id_decr_y_per_div, "Decr dB/div")
         menu.AppendSeparator()
         # we'd use RadioItems for these, but they're not supported on Mac
+        menu.AppendCheckItem(self.id_autoscale, "Autoscale")
         menu.AppendCheckItem(self.id_y_per_div_1, "0.5 dB/div")
         menu.AppendCheckItem(self.id_y_per_div_2, "1.0 dB/div")
         menu.AppendCheckItem(self.id_y_per_div_5, "2.0 dB/div")
@@ -400,6 +420,7 @@
         self.checkmarks = {
             self.id_average : lambda : self.ra_fftsink.average,
             self.id_peak_hold : lambda : self.ra_fftsink.peak_hold,
+            self.id_autoscale : lambda : self.ra_fftsink.autoscale,
             self.id_y_per_div_1 : lambda : self.ra_fftsink.y_per_div == 0.5,
             self.id_y_per_div_2 : lambda : self.ra_fftsink.y_per_div == 1.0,
             self.id_y_per_div_5 : lambda : self.ra_fftsink.y_per_div == 2.0,

Index: ra_stripchartsink.py
===================================================================
RCS file: /sources/gnuradio/gr-radio-astronomy/src/python/ra_stripchartsink.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- ra_stripchartsink.py        23 May 2006 00:35:57 -0000      1.1
+++ ra_stripchartsink.py        1 Jul 2006 01:08:40 -0000       1.2
@@ -30,7 +30,7 @@
 import ephem
 import time
 
-default_stripchartsink_size = (640,240)
+default_stripchartsink_size = (640,140)
 global_yvalues = []
 
 def default_cfunc(datum):
@@ -43,9 +43,10 @@
                  cfunc=default_cfunc, parallel=False, scaling=1.0):
 
         # initialize common attributes
-        self.y_divs = 10
+        self.y_divs = 8
         self.y_per_div=y_per_div
         self.ref_level = ref_level
+        self.autoscale = False
         self.sample_rate = sample_rate
         self.parallel = parallel
         self.title = title
@@ -67,6 +68,9 @@
     def set_ref_level(self, ref_level):
         self.ref_level = ref_level
 
+    def set_autoscale(self, auto):
+        self.autoscale = auto
+
 class stripchart_sink_f(gr.hier_block, stripchart_sink_base):
     def __init__(self, fg, parent,
                  y_per_div=10, ref_level=50, sample_rate=1,
@@ -174,6 +178,13 @@
         indata = evt.data
         L = len (indata)
 
+        calc_min = min(indata)
+        calc_max = max(indata)
+        d = calc_max - calc_min
+        d *= 0.1
+        if self.stripchartsink.autoscale == True and 
self.stripchartsink.parallel == True:
+            self.y_range = self._axisInterval ('min', calc_min-d, calc_max+d)
+
         if (self.stripchartsink.parallel != True):
             indata = self.stripchartsink.cfunc(indata)
 
@@ -193,6 +204,10 @@
             for i in range(0,self.stripchartsink.stripsize):
                 if self.stripchartsink.vector[i] > 0:
                     avg += self.stripchartsink.vector[i]
+                if self.stripchartsink.vector[i] < calc_min:
+                    calc_min = self.stripchartsink.vector[i]
+                if self.stripchartsink.vector[i] > calc_max:
+                    calc_max = self.stripchartsink.vector[i]
 
             avg /= self.stripchartsink.stripsize
             markers = []
@@ -235,6 +250,8 @@
                                       xLabel = xlab, yLabel = ylab)
 
         self.Draw (graphics, xAxis=None, yAxis=self.y_range)
+
+        if self.stripchartsink.autoscale == False or 
self.stripchartsink.parallel == False:
         self.update_y_range ()
 
 
@@ -253,6 +270,9 @@
         self.stripchartsink.set_ref_level(self.stripchartsink.ref_level
                                    - self.stripchartsink.y_per_div)
 
+    def on_autoscale(self, evt):
+        self.stripchartsink.set_autoscale(evt.IsChecked())
+
     def on_incr_y_per_div(self, evt):
         divbase = self.stripchartsink.divbase
         x1 = 1 * divbase
@@ -301,6 +321,7 @@
         divbase=self.stripchartsink.divbase
         self.id_incr_ref_level = wx.NewId()
         self.id_decr_ref_level = wx.NewId()
+        self.id_autoscale = wx.NewId()
         self.id_incr_y_per_div = wx.NewId()
         self.id_decr_y_per_div = wx.NewId()
         self.id_y_per_div_1 = wx.NewId()
@@ -311,6 +332,7 @@
 
         self.Bind(wx.EVT_MENU, self.on_incr_ref_level, 
id=self.id_incr_ref_level)
         self.Bind(wx.EVT_MENU, self.on_decr_ref_level, 
id=self.id_decr_ref_level)
+        self.Bind(wx.EVT_MENU, self.on_autoscale, id=self.id_autoscale)
         self.Bind(wx.EVT_MENU, self.on_incr_y_per_div, 
id=self.id_incr_y_per_div)
         self.Bind(wx.EVT_MENU, self.on_decr_y_per_div, 
id=self.id_decr_y_per_div)
         self.Bind(wx.EVT_MENU, self.on_y_per_div, id=self.id_y_per_div_1)
@@ -326,6 +348,7 @@
         menu.Append(self.id_incr_ref_level, "Incr Ref Level")
         menu.Append(self.id_decr_ref_level, "Decr Ref Level")
         menu.AppendSeparator()
+        menu.AppendCheckItem(self.id_autoscale, "Auto Scale")
         # we'd use RadioItems for these, but they're not supported on Mac
         v = 1.0*divbase
         s = "%.3f" % v
@@ -344,6 +367,7 @@
         menu.AppendCheckItem(self.id_y_per_div_20, s)
 
         self.checkmarks = {
+            self.id_autoscale : lambda : self.stripchartsink.autoscale,
             self.id_y_per_div_1 : lambda : self.stripchartsink.y_per_div == 
1*divbase,
             self.id_y_per_div_2 : lambda : self.stripchartsink.y_per_div == 
2*divbase,
             self.id_y_per_div_5 : lambda : self.stripchartsink.y_per_div == 
4*divbase,




reply via email to

[Prev in Thread] Current Thread [Next in Thread]