Пример #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)