diff options
author | jcorgan | 2006-08-03 04:51:51 +0000 |
---|---|---|
committer | jcorgan | 2006-08-03 04:51:51 +0000 |
commit | 5d69a524f81f234b3fbc41d49ba18d6f6886baba (patch) | |
tree | b71312bf7f1e8d10fef0f3ac6f28784065e73e72 /gr-radio-astronomy/src/python/local_calibrator.py | |
download | gnuradio-5d69a524f81f234b3fbc41d49ba18d6f6886baba.tar.gz gnuradio-5d69a524f81f234b3fbc41d49ba18d6f6886baba.tar.bz2 gnuradio-5d69a524f81f234b3fbc41d49ba18d6f6886baba.zip |
Houston, we have a trunk.
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@3122 221aa14e-8319-0410-a670-987f0aec2ac5
Diffstat (limited to 'gr-radio-astronomy/src/python/local_calibrator.py')
-rwxr-xr-x | gr-radio-astronomy/src/python/local_calibrator.py | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/gr-radio-astronomy/src/python/local_calibrator.py b/gr-radio-astronomy/src/python/local_calibrator.py new file mode 100755 index 000000000..6c5fb4f1f --- /dev/null +++ b/gr-radio-astronomy/src/python/local_calibrator.py @@ -0,0 +1,149 @@ +#!/usr/bin/env python +# +# Copyright 2003,2004,2005 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 2, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# + +import Numeric +import math +import ephem +import time + +# +# Simple class for allowing local definition of a calibration function +# for raw samples coming from the RA detector chain. Each observatory +# is different, and rather than hacking up the main code in usrp_ra_receiver +# we define the appropriate function here. +# +# For example, one could calibrate the output in Janskys, rather than +# dB. +# +# + +def calib_default_total_power(data): + r = 10.0*math.log10(data) + return(r) + +def calib_numogate_ridge_observatory_total_power(data): + + me = ephem.Observer() + + # + # PyEphem wants lat/long as strings, rather than floats--took me quite + # a long time to figure that out. If they don't arrive as strings, + # the calculations for sidereal time are complete garbage + # + me.long = str(-76.043) + me.lat = str(44.967) + + me.date = ephem.now() + sidtime = me.sidereal_time() + + foo = time.localtime() + if not "calib_prefix" in globals(): + pfx = "./" + else: + pfx = globals()["calib_prefix"] + filenamestr = "%s/%04d%02d%02d%02d" % (pfx, foo.tm_year, + foo.tm_mon, foo.tm_mday, foo.tm_hour) + + rainbow_file = open (filenamestr+".tpdat","a") + + r = (math.sqrt(data) / 2048) * 1000.0 + #r = calib_default_total_power(data) + inter = globals()["calib_decln"] + rainbow_file.write(str(ephem.hours(sidtime))+" "+str(r)+" "+str(inter)+"\n") + rainbow_file.close() + return(r) + +def calib_numogate_ridge_observatory_fft(data,l): + + me = ephem.Observer() + + # + # PyEphem wants lat/long as strings, rather than floats--took me quite + # a long time to figure that out. If they don't arrive as strings, + # the calculations for sidereal time are complete garbage + # + me.long = str(-76.043) + me.lat = str(44.967) + + me.date = ephem.now() + sidtime = me.sidereal_time() + + foo = time.localtime() + + if not "calib_prefix" in globals(): + pfx = "./" + else: + pfx = globals()["calib_prefix"] + filenamestr = "%s/%04d%02d%02d%02d" % (pfx, foo.tm_year, + foo.tm_mon, foo.tm_mday, foo.tm_hour) + + now = time.time() + + if not "calib_then" in globals(): + globals()["calib_then"] = now + + delta = 5 + + if (now - globals()["calib_then"]) >= delta: + + globals()["calib_then"] = now + rainbow_file = open (filenamestr+".sdat","a") + + r = calib_default_fft(data,l) + inter = globals()["calib_decln"] + rainbow_file.write("data:"+str(ephem.hours(sidtime))+" "+str(inter)+" "+str(r)+"\n") + rainbow_file.close() + return(r) + + return(data) + +def calib_default_fft(db,l): + return(db) + +# +# We capture various parameters from the receive chain here, because +# they can affect the calibration equations. +# +# +def calib_set_gain(gain): + globals()["calib_gain_setting"] = gain + +def calib_set_integ(integ): + globals()["calib_integ_setting"] = integ + +def calib_set_bw(bw): + globals()["calib_bw_setting"] = bw + +def calib_set_freq(freq): + globals()["calib_freq_setting"] = freq + +def calib_set_avg_alpha(alpha): + globals()["calib_avg_alpha"] = alpha + +def calib_set_interesting(inter): + globals()["calib_is_interesting"] = inter + +def calib_set_decln(dec): + globals()["calib_decln"] = dec + +def calib_set_prefix(pfx): + globals()["calib_prefix"] = pfx |