Commit 7197fcd5 authored by Federico Asara's avatar Federico Asara

Bugfixes and GPL adoption.

parent acbdb473
from Utilities import * __author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from Utilities import *
from Item import * from Item import *
"""This class manages a generic waveform generator.""" """This class manages a generic ADC.
Please implement all its methods when you are subclassing it. In particular,
you must provide a way to select the sampling frequency among a list of them, a
property with the number of bits and a function that reads data from the ADC."""
class ADC(Item): class ADC(Item):
def get(self, what): def get(self, what):
"""Get an attribute value. Supports Pyro4.""" """Get an attribute value. Supports Pyro4."""
...@@ -13,7 +24,7 @@ class ADC(Item): ...@@ -13,7 +24,7 @@ class ADC(Item):
self.__setattr__(what, how) self.__setattr__(what, how)
def clockFrequency(): def clockFrequency():
doc = "Clock frequency used by the ADC" doc = "Clock frequency used by the ADC."
def fget(self): return 0 def fget(self): return 0
def fset(self, value): return def fset(self, value): return
...@@ -21,7 +32,7 @@ class ADC(Item): ...@@ -21,7 +32,7 @@ class ADC(Item):
@Property @Property
def clockFrequencies(): def clockFrequencies():
doc = "Clock frequencies" doc = "Clock frequencies, in a tuple."
def fget(self): return tuple() def fget(self): return tuple()
def fset(self, value): return def fset(self, value): return
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from Generator import * from Generator import *
from SineWaveform import SineWaveform from SineWaveform import SineWaveform
from TTWaveform import TTWaveform from TTWaveform import TTWaveform
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from Utilities import * from Utilities import *
from Item import * from Item import *
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
"""This class just represent an API item. An item is configurable and has two """This class just represent an API item. An item is configurable and has two
methods, get and set, which actually wrap getattribute and setattr.""" methods, get and set, which actually wrap getattribute and setattr."""
class Item(object): class Item(object):
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
import sys import sys
import Pyro4 import Pyro4
import Item import Item
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
import Waveform import Waveform
from Utilities import * from Utilities import *
from numpy import * from numpy import *
......
# __author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from ctypes import * from ctypes import *
from ADC import * from ADC import *
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
import Waveform import Waveform
from Utilities import * from Utilities import *
from numpy import * from numpy import *
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
def Property(func): def Property(func):
return property(**func()) return property(**func())
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from numpy import array from numpy import array
from Item import * from Item import *
"""This class represent a generic waveform.""" """This class represent a generic waveform.
You must implement the generate and generatePeriod methods in order to subclass
this. Refer to their docstrings."""
class Waveform(Item): class Waveform(Item):
def get(self, what): def get(self, what):
"""Get an attribute value. Supports Pyro4.""" """Get an attribute value. Supports Pyro4."""
......
__author__="Federico" __author__ = "Federico Asara"
__date__ ="$Aug 17, 2011 4:43:08 PM$" __copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
# PAGE: Python ADC and GEnerators API # PAGE: Python ADC and GEnerators API
......
# To change this template, choose Tools | Templates __author__ = "Federico Asara"
# and open the template in the editor. __copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__author__="Federico Asara" __license__ = "GPL2"
__date__ ="$Jul 11, 2011 2:39:38 PM$" __version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
__doc__= """This module offers the Signal class, which simply store the output __doc__= """This module offers the Signal class, which simply store the output
signal of an ADC, fed with a sinewave, with some other useful informations. signal of an ADC, fed with a sinewave, with some other useful informations.
It is also capable to reverse incoherent sampling, in order to get more accurate It is also capable to reverse incoherent sampling, in order to get more accurate
......
# To change this template, choose Tools | Templates __author__ = "Federico Asara"
# and open the template in the editor. __copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__author__="federico" __license__ = "GPL2"
__date__ ="$Jul 11, 2011 2:40:18 PM$" __version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from numpy import * from numpy import *
from scipy import optimize from scipy import optimize
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from Signal import * from Signal import *
# For frequency detection and unit-testin # For frequency detection and unit-testin
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from Signal import * from Signal import *
def gcd(a, b): def gcd(a, b):
...@@ -90,8 +99,37 @@ class TwoToneSignal(Signal): ...@@ -90,8 +99,37 @@ class TwoToneSignal(Signal):
N2 = floor(0.5 + 2*pi*self.rate/self.w2) N2 = floor(0.5 + 2*pi*self.rate/self.w2)
N0 = lcm(N1, N2) N0 = lcm(N1, N2)
N = N -(N%N0) N = self.nsamples -(self.nsamples%N0)
# while (N0 % 2) == 1 and N
if N0 % 2:
print N0, 'is odd'
while ((N/N1 -N/N2) % 2) == 1:
print (N/N1 -N/N2), 'is odd'
N -= N0
else:
print N0, 'is even'
ff = abs(fft.fft(self.fulldata))
lbnd = max(ff) * 10e-12
self.fft = ff = where(ff < lbnd, 10e-12, ff)
hff = ff[:len(ff)/2]
self.lfft = lff = 10*log10(ff)
self.m1 = m1 = argmax(hff);
self.m2 = m2 = argmax(hstack([hff[:m1-1], array([0, 0, 0]), hff[m1+2:]]))
self.tow1 = tow1 = 2*pi*self.rate*float(m1)/self.nsamples
self.tow2 = tow2 = 2*pi*self.rate*float(m2)/self.nsamples
(self.w1, self.a1, self.b1), (self.w2, self.a2, self.b2), self.c0 = \
Sinefit.doubleSinefit4matrix(self.fulldata, self.rate**-1, tow1, tow2)
self.amplitude1 = hypot(self.a1, self.b1)
self.amplitude2 = hypot(self.a2, self.b2)
self.phase1 = arctan2(self.b1, self.a1)
self.phase2 = arctan2(self.b2, self.a2)
delta = abs(self.w1 - self.w2) delta = abs(self.w1 - self.w2)
...@@ -111,20 +149,4 @@ class TwoToneSignal(Signal): ...@@ -111,20 +149,4 @@ class TwoToneSignal(Signal):
self.imd = 10*log10(meaningful/interferences) self.imd = 10*log10(meaningful/interferences)
# fix incoherency
# self.report()
fd = abs(self.w1 + self.w2)/4./pi
print "fd is", fd
wModIndex = self.nsamples * fd / self.rate
print "wModIndex is", wModIndex
factor = (wModIndex -(wModIndex % 2))/wModIndex
limit = floor(self.nsamples*factor)
print "limit is", limit
return
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from ConfigParser import RawConfigParser from ConfigParser import RawConfigParser
from numpy import max, abs, sum, sqrt, log10 from numpy import max, abs, sum, sqrt, log10
from time import time from time import time
......
# To change this template, choose Tools | Templates __author__ = "Federico Asara"
# and open the template in the editor. __copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__author__="federico" __license__ = "GPL2"
__date__ ="$Jul 11, 2011 2:42:12 PM$" __version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from numpy import ones, bartlett, blackman, hamming, hanning, kaiser from numpy import ones, bartlett, blackman, hamming, hanning, kaiser
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from numpy import * from numpy import *
class WindowedSignal: class WindowedSignal:
......
__author__="federico" __author__ = "Federico Asara"
__date__ ="$Jul 11, 2011 2:39:08 PM$" __copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
import qtGUI as GUI import qtGUI as GUI
GUI.start() GUI.start()
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from PyQt4.QtCore import * from PyQt4.QtCore import *
from PyQt4.QtGui import * from PyQt4.QtGui import *
from PyQt4.Qwt5 import * from PyQt4.Qwt5 import *
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from PyQt4.QtCore import * from PyQt4.QtCore import *
from PyQt4.QtGui import * from PyQt4.QtGui import *
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from PyQt4.QtCore import * from PyQt4.QtCore import *
from PyQt4.QtGui import * from PyQt4.QtGui import *
......
__author__="Federico Asara" __author__ = "Federico Asara"
__date__ ="$Jul 11, 2011 5:22:02 PM$" __copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
def start(): def start():
import sys import sys
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
import sys import sys
import commands import commands
import PAGE import PAGE
import PAGE.Agilent33250A, PAGE.Sis33, PAGE.SineWaveform import PAGE.Agilent33250A, PAGE.Sis33, PAGE.SineWaveform
import Pyro4 import Pyro4
print 'Agilent' agSerial = sys.argv[1]
agilent = PAGE.Agilent33250A.target() sis33Device = int(sys.argv[2])
agilent.device = sys.argv[1] agName, sis33name, sineName = 'agilent', 'sis33', 'sine'
print 'Agilent 33250A, via %s: %s' % (agSerial, agName)
agilent = PAGE.Agilent33250A.target(device = agSerial)
agilent.connect() agilent.connect()
print 'Sis33' print 'SiS 33xx, via %s: %s' % (sis33Device, sis33Name)
sis33 = PAGE.Sis33.target(sys.argv[2]) sis33 = PAGE.Sis33.target(index = sis33Device)
print 'Sine' print 'SineWaveform:', sineName
sine = PAGE.SineWaveform.target() sine = PAGE.SineWaveform.target()
print 'Daemon' print 'Daemon'
...@@ -24,7 +36,7 @@ uris = map(daemon.register, (agilent, sis33, sine)) ...@@ -24,7 +36,7 @@ uris = map(daemon.register, (agilent, sis33, sine))
print 'Nameserver' print 'Nameserver'
ns = Pyro4.locateNS() ns = Pyro4.locateNS()
map(ns.register, ('agilent', 'sis33', 'sine'), uris) map(ns.register, (agName, sis33Name, sineName), uris)
print 'Run' print 'Run'
daemon.requestLoop() daemon.requestLoop()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment