コード例 #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
ファイル: test_calibration.py プロジェクト: sdurant/scikit-rf
 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
ファイル: test_io.py プロジェクト: sdurant/scikit-rf
 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
ファイル: test_calibration.py プロジェクト: sdurant/scikit-rf
    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
ファイル: test_calibration.py プロジェクト: sdurant/scikit-rf
 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
ファイル: test_calibration.py プロジェクト: sdurant/scikit-rf
 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
ファイル: test_csv.py プロジェクト: sdurant/scikit-rf
 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)