示例#1
0
 def setUp(self):
     
     self.n_ports = 1
     self.wg = rf.RectangularWaveguide(rf.F(75,100,NPTS), a=100*rf.mil,z0=50)
     wg = self.wg
     
     self.E = wg.random(n_ports =2, name = 'E')
     
     ideals = [
             wg.short( name='short'),
             wg.delay_short( 45.,'deg',name='ew'),
             wg.delay_short( 90.,'deg',name='qw'),
             wg.match( name='load'),
             ]
     actuals = [
             wg.short( name='short'),
             wg.delay_short( 10.,'deg',name='ew'),
             wg.delay_short( 80.,'deg',name='qw'),
             wg.match(name='load'),
             ]
     measured = [self.measure(k) for k in actuals]
     
     self.cal = rf.SDDL(
         is_reciprocal = True, 
         ideals = ideals, 
         measured = measured,
         )
示例#2
0
    def setUp(self):
        self.n_ports = 2
        self.wg = rf.RectangularWaveguide(rf.F(75, 100, 3),
                                          a=100 * rf.mil,
                                          z0=50)
        wg = self.wg
        wg.frequency = rf.F.from_f([100])

        self.X = wg.random(n_ports=2, name='X')
        self.Y = wg.random(n_ports=2, name='Y')
        self.gamma_f = wg.random(n_ports=1, name='gamma_f')
        self.gamma_r = wg.random(n_ports=1, name='gamma_r')

        ideals = [
            wg.short(nports=2, name='short'),
            wg.open(nports=2, name='open'),
            wg.match(nports=2, name='load'),
            wg.thru(name='thru'),
        ]

        measured_sets = []
        for ideal in ideals:
            ns = rf.NetworkSet([self.measure(ideal) for k in range(3)])
            measured_sets.append(ns)

        self.calset = Dot(cal_class=EightTerm,
                          ideals=ideals,
                          measured_sets=measured_sets,
                          switch_terms=(self.gamma_f, self.gamma_r))
示例#3
0
 def setUp(self):
     self.n_ports = 2
     self.wg = rf.RectangularWaveguide(rf.F(75,100,NPTS), a=100*rf.mil,z0=50)
     wg  = self.wg
     self.Xf = wg.random(n_ports =2, name = 'Xf')
     self.Xr = wg.random(n_ports =2, name = 'Xr')
     self.Yf = wg.random(n_ports =2, name='Yf')
     self.Yr = wg.random(n_ports =2, name='Yr')
    
     ideals = [
         wg.short(nports=2, name='short'),
         wg.open(nports=2, name='open'),
         wg.match(nports=2, name='load'),
         wg.attenuator(-20,name='atten'),
         wg.line(45,'deg',name = 'line') ,          
         ]
     
 
     measured = [ self.measure(k) for k in ideals]
     
     
     self.cal= TwelveTerm(
         ideals = NetworkSet(ideals).to_dict(), 
         measured = NetworkSet(measured).to_dict(),
         n_thrus=None,
         )
示例#4
0
 def setUp(self):
     raise SkipTest()
     self.n_ports = 2
     self.wg = rf.RectangularWaveguide(rf.F(75,100,NPTS), a=100*rf.mil,z0=50)
     wg= self.wg
     
     
     self.X = wg.random(n_ports =2, name = 'X')
     self.Y = wg.random(n_ports =2, name='Y')
     
     
     ideals = [
         wg.short(nports=2, name='short'),
         wg.open(nports=2, name='open'),
         wg.match(nports=2, name='load'),
         wg.thru(name='thru'),
         ]
         
     measured = [self.measure(k) for k in ideals]
     
     cal1 = rf.TwelveTerm(
         ideals = ideals,
         measured = measured,
         n_thrus=1, 
         )
     #coefs = rf.convert_12term_2_8term(cal1.coefs)
     #gamma_f = wg.load(coefs['forward switch term'])
     gamma_f, gamma_r = (cal1.coefs_ntwks['forward switch term'],
                        cal1.coefs_ntwks['reverse switch term'])
     self.cal = rf.EightTerm(
         ideals = ideals,
         measured = measured,
         switch_terms = [gamma_f, gamma_r], 
         )
示例#5
0
 def setUp(self):
     raise SkipTest()
     self.n_ports = 2
     self.wg = rf.RectangularWaveguide(rf.F(75,100,NPTS), a=100*rf.mil,z0=50)
     wg  = self.wg
     self.Xf = wg.random(n_ports =2, name = 'Xf')
     
     self.Yf = wg.random(n_ports =2, name='Yf')
     
    
     ideals = [
         wg.short(nports=2, name='short'),
         wg.open(nports=2, name='open'),
         wg.match(nports=2, name='load'),
         wg.random(2,name='rand1'),
         wg.random(2,name='rand2'),
         ]
     
 
     measured = [ self.measure(k) for k in ideals]
     
     self.cal = rf.TwelveTerm(
         ideals = ideals,
         measured = measured,
         n_thrus=2, 
         )
示例#6
0
 def setUp(self):
     self.n_ports = 2
     self.wg = rf.RectangularWaveguide(rf.F(75,100,11), a=100*rf.mil,z0=50)
     wg  = self.wg
     wg.frequency = rf.F.from_f([100])
     self.wg = wg
     self.Xf = wg.random(n_ports =2, name = 'Xf')
     self.Xr = wg.random(n_ports =2, name = 'Xr')
     self.Yf = wg.random(n_ports =2, name='Yf')
     self.Yr = wg.random(n_ports =2, name='Yr')
    
     ideals = [
         wg.short(nports=2, name='short'),
         wg.open(nports=2, name='open'),
         wg.match(nports=2, name='load'),
         wg.thru(name='thru'),
         ]
     
 
     measured = [ self.measure(k) for k in ideals]
     
     self.cal = rf.SOLT(
         ideals = ideals,
         measured = measured,
         )
示例#7
0
 def setUp(self):
     self.n_ports = 2
     self.wg = rf.RectangularWaveguide(rf.F(75,100,NPTS), a=100*rf.mil,z0=50)
     wg= self.wg
     
     
     self.X = wg.random(n_ports =2, name = 'X')
     self.Y = wg.random(n_ports =2, name='Y')
     self.gamma_f = wg.random(n_ports =1, name='gamma_f')
     self.gamma_r = wg.random(n_ports =1, name='gamma_r')
     
     
     ideals = [
         wg.short(nports=2, name='short'),
         wg.open(nports=2, name='open'),
         wg.match(nports=2, name='load'),
         wg.thru(name='thru'),
         ]
         
     measured = [self.measure(k) for k in ideals]
     
     self.cal = rf.EightTerm(
         ideals = ideals,
         measured = measured,
         switch_terms = (self.gamma_f, self.gamma_r)
         )
示例#8
0
 def setUp(self):
     #raise SkipTest('Doesnt work yet')
     self.n_ports = 1
     self.wg = rf.RectangularWaveguide(rf.F(75,100,NPTS), a=100*rf.mil,z0=50)
     wg = self.wg
     self.E = wg.random(n_ports =2, name = 'E')
     #self.E.s[0,:,:] = npy.array([[.1j,1],[1j,1j+2]])
     #print self.E.s[0]
     
     ideals = [
             wg.short( name='short'),
             wg.delay_short( 45.,'deg',name='ew'),
             wg.delay_short( 90.,'deg',name='qw'),
             wg.load(.2+.2j, name='load'),
             ]
     actuals = [
             wg.short( name='short'),
             wg.delay_short( 10.,'deg',name='ew'),
             wg.delay_short( 80.,'deg',name='qw'),
             wg.load(.2+.2j, name='load'),
             ]
     measured = [self.measure(k) for k in actuals]
     
     self.cal = rf.SDDLWeikle(
         is_reciprocal = True, 
         ideals = ideals, 
         measured = measured,
         )
示例#9
0
 def setUp(self):
     self.n_ports = 2
     self.wg = rf.RectangularWaveguide(rf.F(75,100,NPTS), a=100*rf.mil,z0=50)
     wg  = self.wg
     self.Xf = wg.random(n_ports =2, name = 'Xf')
     self.Yf = wg.random(n_ports =2, name='Yf')
     
     ideals = [
         wg.short(nports=2, name='short'),
         wg.open(nports=2, name='open'),
         wg.match(nports=2, name='load'),
         wg.thru(name='thru'),
         ]
     
 
     measured = [ self.measure(k) for k in ideals]
     
     self.cal = TwoPortOnePath(
         ideals = ideals,
         measured = measured,
         source_port=1,
         )
     self.cal2 = EnhancedResponse(
         ideals = ideals,
         measured = measured,
         source_port=1,
         )
示例#10
0
    def setUp(self):
        self.n_ports = 2
        self.wg = rf.RectangularWaveguide(rf.F(75, 100, NPTS),
                                          a=100 * rf.mil,
                                          z0=50)
        wg = self.wg

        self.X = wg.random(n_ports=2, name='X')
        self.Y = wg.random(n_ports=2, name='Y')
        self.gamma_f = wg.random(n_ports=1, name='gamma_f')
        self.gamma_r = wg.random(n_ports=1, name='gamma_r')
        # make error networks have s21,s12 >> s11,s22 so that TRL
        # can guess at line length
        #self.X.s[:,0,0] *=1e-1
        #self.Y.s[:,0,0] *=1e-1
        #self.X.s[:,1,1] *=1e-1
        #self.Y.s[:,1,1] *=1e-1

        ideals = None

        actuals = [
            wg.thru(name='thru'),
            wg.short(nports=2, name='short'),
            wg.attenuator(-3, True, 45, 'deg')
        ]
        self.actuals = actuals

        measured = [self.measure(k) for k in actuals]

        self.cal = rf.TRL(ideals=ideals,
                          measured=measured,
                          switch_terms=(self.gamma_f, self.gamma_r))
示例#11
0
    def setUp(self):
        
        self.n_ports = 2
        self.wg = rf.RectangularWaveguide(rf.F(75,100,NPTS), a=100*rf.mil,z0=50)
        wg= self.wg 
        self.X = wg.random(n_ports =2, name = 'X')
        self.Y = wg.random(n_ports =2, name='Y')
        self.gamma_f = wg.random(n_ports =1, name='gamma_f')
        self.gamma_r = wg.random(n_ports =1, name='gamma_r')
        
        
        actuals = [
            wg.short(nports=2, name='short'),
            wg.open(nports=2, name='open'),
            wg.match(nports=2, name='match'),
            wg.impedance_mismatch(50,45)**wg.line(20,'deg',name='line')**wg.impedance_mismatch(45,50)

            ]
        
        ideals = [
            wg.short(nports=2, name='short'),
            wg.open(nports=2, name='open'),
            wg.match(nports=2, name='match'),
            wg.thru(name='thru'),
            ]
            
        measured = [self.measure(k) for k in actuals]
        
        self.cal = rf.UnknownThru(
            ideals = ideals,
            measured = measured,
            switch_terms = [self.gamma_f, self.gamma_r]
            )
示例#12
0
    def setUp(self):
        raise SkipTest()
        self.n_ports = 2
        self.wg = rf.RectangularWaveguide(rf.F(75, 100, NPTS),
                                          a=100 * rf.mil,
                                          z0=50)
        wg = self.wg

        self.X = wg.random(n_ports=2, name='X')
        self.Y = wg.random(n_ports=2, name='Y')

        ideals = [
            wg.short(nports=2, name='short'),
            wg.open(nports=2, name='open'),
            wg.match(nports=2, name='load'),
            wg.thru(name='thru'),
        ]

        measured = [self.measure_std(k) for k in ideals]

        cal1 = rf.TwoPortOnePath(ideals=ideals, measured=measured)
        switch_terms = (cal1.coefs_ntwks['forward switch term'],
                        cal1.coefs_ntwks['reverse switch term'])

        measured = [self.measure(k) for k in ideals]
        self.cal = rf.EightTerm(
            ideals=ideals,
            measured=measured,
            switch_terms=switch_terms,
        )
        raise ValueError()
示例#13
0
 def setUp(self):
     self.n_ports = 2
     self.wg = rf.RectangularWaveguide(rf.F(75,100,NPTS), a=100*rf.mil,z0=50)
     wg  = self.wg
     self.Xf = wg.random(n_ports =2, name = 'Xf')
     self.Xr = wg.random(n_ports =2, name = 'Xr')
     self.Yf = wg.random(n_ports =2, name='Yf')
     self.Yr = wg.random(n_ports =2, name='Yr')
    
     ideals = [
         wg.short(nports=2, name='short'),
         wg.open(nports=2, name='open'),
         wg.match(nports=2, name='load'),
         None,            
         ]
     actuals = [
         wg.short(nports=2, name='short'),
         wg.open(nports=2, name='open'),
         wg.match(nports=2, name='load'),
         wg.thru(),            
         ]
 
     measured = [ self.measure(k) for k in actuals]
     
     self.cal = SOLT(
         ideals = ideals,
         measured = measured,
         n_thrus=1,
         )
示例#14
0
 def setUp(self):
     
     self.n_ports = 1
     self.wg = rf.RectangularWaveguide(rf.F(75,100,NPTS), a=100*rf.mil,z0=50)
     wg = self.wg
     
     self.E = wg.random(n_ports =2, name = 'E')
     known1 = wg.short()#wg.load(0)#wg.random()
     known2 = wg.load(rand() + rand()*1j) #wg.random()
     
     ideals = [
             wg.delay_short( 45.,'deg',name='ideal ew'),
             wg.delay_short( 90.,'deg',name='ideal qw'),
             known1,
             known2,
             ]
     actuals = [
             wg.delay_short( 20.,'deg',name='true ew'),
             wg.delay_short( 110.,'deg',name='true qw'),
             known1,
             known2,
             ]
     measured = [self.measure(k) for k in actuals]
     self.actuals = actuals 
     
     self.cal = PHN(
         is_reciprocal = True, 
         ideals = ideals, 
         measured = measured,
         )
示例#15
0
 def setUp(self):
     '''       
     '''
     self.test_dir = os.path.dirname(os.path.abspath(__file__)) + '/'
     self.pickle_file = os.path.join(self.test_dir, 'pickled.p')
     self.hfss_oneport_file = os.path.join(self.test_dir,
                                           'hfss_oneport.s1p')
     self.hfss_twoport_file = os.path.join(self.test_dir,
                                           'hfss_twoport.s2p')
     self.ntwk1 = rf.Network(os.path.join(self.test_dir, 'ntwk1.s2p'))
     self.ntwk2 = rf.Network(os.path.join(self.test_dir, 'ntwk2.s2p'))
     self.ntwk3 = rf.Network(os.path.join(self.test_dir, 'ntwk3.s2p'))
     self.short = rf.Network(os.path.join(self.test_dir, 'short.s1p'))
     self.match = rf.Network(os.path.join(self.test_dir, 'match.s1p'))
     self.open = rf.Network(os.path.join(self.test_dir, 'open.s1p'))
     self.embeding_network = rf.Network(
         os.path.join(self.test_dir, 'embedingNetwork.s2p'))
     self.freq = rf.F(75, 110, 101)
示例#16
0
    def setUp(self):
        
        self.n_ports = 2
        self.wg = rf.RectangularWaveguide(rf.F(75,100,2), a=100*rf.mil,z0=50)
        wg= self.wg 
        #wg.frequency = rf.F.from_f([100])
        
        self.X = wg.random(n_ports =2, name = 'X')
        self.Y = wg.random(n_ports =2, name='Y')
        self.gamma_f = wg.random(n_ports =1, name='gamma_f')
        self.gamma_r = wg.random(n_ports =1, name='gamma_r')
        
        
        def delay_shorts(d1,d2):
            ds1 = wg.delay_short(d1,'deg')
            ds2 = wg.delay_short(d2,'deg')
            return rf.two_port_reflect(ds1,ds2)
        
        actuals = [
            wg.short(nports=2, name='short'),
            delay_shorts(65,130),
            delay_shorts(120,75),
            wg.load(.2+.2j,nports=2, name='match'),
            wg.impedance_mismatch(50,45)**wg.line(20,'deg',name='line')**wg.impedance_mismatch(45,50)

            ]
        
        ideals = [
            wg.short(nports=2, name='short'),
            delay_shorts(45,90),
            delay_shorts(90,45),
            wg.load(.2+.2j,nports=2, name='match'),
            wg.thru(name='thru'),
            ]
            
        measured = [self.measure(k) for k in actuals]
        
        self.cal = rf.MRC(
            ideals = ideals,
            measured = measured,
            switch_terms = [self.gamma_f, self.gamma_r]
            )
示例#17
0
 def setUp(self):
     self.n_ports = 1
     self.wg = rf.RectangularWaveguide(rf.F(75,100,11), a=100*rf.mil,z0=50)
     wg = self.wg
     wg.frequency = rf.F.from_f([100])
     
     self.E = wg.random(n_ports =2, name = 'E')
     
     ideals = [
             wg.short( name='short'),
             wg.delay_short( 45.,'deg',name='ew'),
             wg.delay_short( 90.,'deg',name='qw'),
             wg.match( name='load'),
             ]
     measured = [self.measure(k) for k in ideals]
     
     self.cal = rf.OnePort(
         is_reciprocal = True, 
         ideals = ideals, 
         measured = measured,
         )
示例#18
0
    def setUp(self):
        self.wg = rf.RectangularWaveguide(rf.F(75, 100, 11),
                                          a=100 * rf.mil,
                                          z0=50)
        wg = self.wg
        self.n_ports = 1
        self.E = wg.random(n_ports=2, name='E')

        ideals = [
            wg.short(name='short'),
            wg.delay_short(45., 'deg', name='ew'),
            wg.delay_short(90., 'deg', name='qw'),
            wg.match(name='load'),
        ]
        measured_sets = []
        for ideal in ideals:
            ns = rf.NetworkSet([self.measure(ideal) for k in range(3)])
            measured_sets.append(ns)

        self.calset = Dot(cal_class=OnePort,
                          ideals=ideals,
                          measured_sets=measured_sets,
                          is_reciprocal=True)
示例#19
0
 def setUp(self):
     self.n_ports = 2
     self.wg = rf.RectangularWaveguide(rf.F(75,100,11), a=100*rf.mil,z0=50)
     wg= self.wg
     wg.frequency = rf.F.from_f([100])
     
     self.X = wg.random(n_ports =2, name = 'X')
     self.Y = wg.random(n_ports =2, name='Y')
     self.gamma_f = wg.random(n_ports =1, name='gamma_f')
     self.gamma_r = wg.random(n_ports =1, name='gamma_r')
     # make error networks have s21,s12 >> s11,s22 so that TRL
     # can guess at line length
     self.X.s[:,0,0] *=1e-1
     self.Y.s[:,0,0] *=1e-1
     self.X.s[:,1,1] *=1e-1 
     self.Y.s[:,1,1] *=1e-1 
     
     actuals = [
         wg.thru( name='thru'),
         wg.short(nports=2, name='short'),
         wg.line(45,'deg',name='line'),
         ]
     
     ideals = [
         wg.thru( name='thru'),
         wg.short(nports=2, name='short'),
         wg.line(90,'deg',name='line'),
         ]
         
     measured = [self.measure(k) for k in actuals]
     
     self.cal = rf.TRL(
         ideals = ideals,
         measured = measured,
         switch_terms = (self.gamma_f, self.gamma_r)
         )
示例#20
0
 def test_frequency(self):
     self.assertEqual(self.acsv.frequency, rf.F(750e9, 1100e9, 2, 'hz'))
示例#21
0
import numpy as npy
from numpy.random import rand
from nose.tools import nottest
from nose.plugins.skip import SkipTest

from skrf.calibration import OnePort, PHN, SDDL, TRL, SOLT, UnknownThru, EightTerm, TwoPortOnePath, EnhancedResponse, TwelveTerm, terminate

from skrf.networkSet import NetworkSet

# number of frequency points to test calibration at
# i choose 1 for speed, but given that many tests employ *random*
# networks values >100 are better for  initialy verification
global NPTS
NPTS = 1

WG = rf.RectangularWaveguide(rf.F(75, 100, NPTS), a=100 * rf.mil, z0=50)


class CalibrationTest(object):
    '''
    This is the generic Calibration test case which all Calibration 
    Subclasses should be able to pass. They must implement
    '''
    def test_accuracy_of_dut_correction(self):
        a = self.wg.random(n_ports=self.n_ports, name='actual')
        m = self.measure(a)
        c = self.cal.apply_cal(m)
        c.name = 'corrected'
        self.assertEqual(c, a)

    def test_error_ntwk(self):
示例#22
0
from numpy.random import rand, uniform
from nose.tools import nottest
from nose.plugins.skip import SkipTest

from skrf.calibration import OnePort, PHN, SDDL, TRL, SOLT, UnknownThru, EightTerm, TwoPortOnePath, EnhancedResponse, TwelveTerm, SixteenTerm, LMR16, terminate, determine_line, determine_reflect, NISTMultilineTRL

from skrf import two_port_reflect
from skrf.networkSet import NetworkSet

# number of frequency points to test calibration at .
# i choose 1 for speed, but given that many tests employ *random*
# networks values >100 are better for  initialy verification
global NPTS
NPTS = 1

WG_lossless = rf.RectangularWaveguide(rf.F(75, 100, NPTS),
                                      a=100 * rf.mil,
                                      z0=50)
WG = rf.RectangularWaveguide(rf.F(75, 100, NPTS),
                             a=100 * rf.mil,
                             z0=50,
                             rho='gold')


class DetermineTest(unittest.TestCase):
    def setUp(self):
        self.wg = WG
        wg = self.wg
        self.X = wg.random(n_ports=2, name='X')
        self.Y = wg.random(n_ports=2, name='Y')
示例#23
0
 def test_frequency(self):
     """ 
     This tests the reading of frequency from the test file
     """
     self.assertEqual(self.acsv.frequency, rf.F(750e9, 1100e9, 2, 'hz'))
示例#24
0
from numpy.random  import rand, uniform
from nose.tools import nottest
from nose.plugins.skip import SkipTest

from skrf.calibration import OnePort, PHN, SDDL, TRL, SOLT, UnknownThru, EightTerm, TwoPortOnePath, EnhancedResponse,TwelveTerm, SixteenTerm, LMR16, terminate, determine_line, determine_reflect, NISTMultilineTRL

from skrf import two_port_reflect
from skrf.networkSet import NetworkSet

# number of frequency points to test calibration at 
# i choose 1 for speed, but given that many tests employ *random* 
# networks values >100 are better for  initialy verification
global NPTS  
NPTS = 1

WG_lossless =  rf.RectangularWaveguide(rf.F(75,100,NPTS), a=100*rf.mil, z0=50)
WG =  rf.RectangularWaveguide(rf.F(75,100,NPTS), a=100*rf.mil, z0=50, rho='gold')



class DetermineTest(unittest.TestCase):
    def setUp(self):
        self.wg = WG
        wg = self.wg
        self.X = wg.random(n_ports =2, name = 'X')
        self.Y = wg.random(n_ports =2, name='Y')  
        
        
        #thru
        self.T = wg.thru()
        self.T_m = self.embed(self.T)