Exemplo n.º 1
0
def test_array_inequality():
    """Test equality error for different array values."""
    param1 = uvp.UVParameter(name="p1", value=np.array([0, 1, 3]))
    param2 = uvp.UVParameter(name="p2", value=np.array([0, 2, 4]))
    assert param1 != param2
    param3 = uvp.UVParameter(name="p3", value=np.array([0, 1]))
    assert param1 != param3
Exemplo n.º 2
0
def test_dict_inequality():
    """Test equality error for dict values."""
    param1 = uvp.UVParameter(name='p1', value={'v1': 1})
    param2 = uvp.UVParameter(name='p2', value={'v1': 2})
    nt.assert_not_equal(param1, param2)
    param3 = uvp.UVParameter(name='p3', value={'v3': 1})
    nt.assert_not_equal(param1, param3)
Exemplo n.º 3
0
def test_array_inequality():
    """Test equality error for different array values."""
    param1 = uvp.UVParameter(name='p1', value=np.array([0, 1, 3]))
    param2 = uvp.UVParameter(name='p2', value=np.array([0, 2, 4]))
    nt.assert_not_equal(param1, param2)
    param3 = uvp.UVParameter(name='p3', value=np.array([0, 1]))
    nt.assert_not_equal(param1, param3)
Exemplo n.º 4
0
def test_equality_check_fail():
    """Test equality error for non string, dict or array values."""
    param1 = uvp.UVParameter(name='p1',
                             value=uvp.UVParameter(name='p1', value='Alice'))
    param2 = uvp.UVParameter(name='p2',
                             value=uvp.UVParameter(name='p1', value='Bob'))
    assert param1 != param2
Exemplo n.º 5
0
def test_quantity_equality(atol, vals):
    """Test equality for different quantity values."""
    param1 = uvp.UVParameter(name="p1",
                             value=np.array([0, 1, 3]) * units.m,
                             tols=atol)
    param2 = uvp.UVParameter(name="p2", value=vals, tols=atol)
    assert param1 == param2
Exemplo n.º 6
0
def test_equality_check_fail():
    """Test equality error for non string, dict or array values."""
    param1 = uvp.UVParameter(name="p1",
                             value=uvp.UVParameter(name="p1", value="Alice"))
    param2 = uvp.UVParameter(name="p2",
                             value=uvp.UVParameter(name="p1", value="Bob"))
    assert param1 != param2
Exemplo n.º 7
0
def test_quantity_equality_nans():
    """Test array equality with nans present."""
    param1 = uvp.UVParameter(name="p1",
                             value=np.array([0, 1, np.nan] * units.m))
    param2 = uvp.UVParameter(name="p2",
                             value=np.array([0, 1, np.nan] * units.m))
    assert param1 == param2
Exemplo n.º 8
0
def test_value_class_inequality():
    """Test equality error for different uvparameter classes."""
    param1 = uvp.UVParameter(name='p1', value=3)
    param2 = uvp.UVParameter(name='p2', value=np.array([3, 4, 5]))
    nt.assert_not_equal(param1, param2)
    nt.assert_not_equal(param2, param1)
    param3 = uvp.UVParameter(name='p2', value='Alice')
    nt.assert_not_equal(param1, param3)
Exemplo n.º 9
0
def test_value_class_inequality():
    """Test equality error for different uvparameter classes."""
    param1 = uvp.UVParameter(name="p1", value=3)
    param2 = uvp.UVParameter(name="p2", value=np.array([3, 4, 5]))
    assert param1 != param2
    assert param2 != param1
    param3 = uvp.UVParameter(name="p2", value="Alice")
    assert param1 != param3
Exemplo n.º 10
0
def test_string_acceptability():
    """Test check_acceptability function with strings."""
    param1 = uvp.UVParameter(
        name="p1", value="Bob", form="str", acceptable_vals=["Alice", "Eve"]
    )
    assert not param1.check_acceptability()[0]
    param2 = uvp.UVParameter(
        name="p2", value="Eve", form="str", acceptable_vals=["Alice", "Eve"]
    )
    assert param2.check_acceptability()[0]
Exemplo n.º 11
0
def test_quantity_equality_error():
    """Test equality for different quantity values."""
    param1 = uvp.UVParameter(name="p1",
                             value=np.array([0, 1, 3]) * units.m,
                             tols=1 * units.mJy)
    param2 = uvp.UVParameter(
        name="p2",
        value=units.Quantity([0 * units.cm, 100 * units.cm, 3000 * units.mm]),
        tols=1 * units.mm,
    )
    with pytest.raises(units.UnitsError):
        assert param1 == param2
Exemplo n.º 12
0
def test_string_acceptability():
    """Test check_acceptability function with strings."""
    param1 = uvp.UVParameter(name='p1',
                             value='Bob',
                             form='str',
                             acceptable_vals=['Alice', 'Eve'])
    nt.assert_false(param1.check_acceptability()[0])
    param2 = uvp.UVParameter(name='p2',
                             value='Eve',
                             form='str',
                             acceptable_vals=['Alice', 'Eve'])
    nt.assert_true(param2.check_acceptability()[0])
Exemplo n.º 13
0
def test_acceptability():
    """Test check_acceptability function."""
    param1 = uvp.UVParameter(name="p1", value=1000, acceptable_range=(1, 10))
    assert not param1.check_acceptability()[0]

    param1 = uvp.UVParameter(
        name="p1", value=np.random.rand(100), acceptable_range=(0.1, 0.9)
    )
    assert param1.check_acceptability()[0]
    param1 = uvp.UVParameter(
        name="p1", value=np.random.rand(100) * 1e-4, acceptable_range=(0.1, 0.9)
    )
    assert not param1.check_acceptability()[0]

    param2 = uvp.UVParameter(name="p2", value=5, acceptable_range=(1, 10))
    assert param2.check_acceptability()[0]
    param2 = uvp.UVParameter(name="p2", value=5, acceptable_vals=[1, 10])
    assert not param2.check_acceptability()[0]
Exemplo n.º 14
0
def test_acceptability():
    """Test check_acceptability function."""
    param1 = uvp.UVParameter(name='p1', value=1000, acceptable_range=(1, 10))
    nt.assert_false(param1.check_acceptability()[0])

    param1 = uvp.UVParameter(name='p1',
                             value=np.random.rand(100),
                             acceptable_range=(.1, .9))
    nt.assert_true(param1.check_acceptability()[0])
    param1 = uvp.UVParameter(name='p1',
                             value=np.random.rand(100) * 1e-4,
                             acceptable_range=(.1, .9))
    nt.assert_false(param1.check_acceptability()[0])

    param2 = uvp.UVParameter(name='p2', value=5, acceptable_range=(1, 10))
    nt.assert_true(param2.check_acceptability()[0])
    param2 = uvp.UVParameter(name='p2', value=5, acceptable_vals=[1, 10])
    nt.assert_false(param2.check_acceptability()[0])
Exemplo n.º 15
0
def test_inequality_different_extras():
    """Basic equality test."""
    test_obj = UVTest()
    test_obj2 = copy.deepcopy(test_obj)
    test_obj2._optional_int3 = uvp.UVParameter(
        'optional_int3',
        description='optional integer value',
        expected_type=int,
        value=7,
        required=False)
    assert test_obj != test_obj2
Exemplo n.º 16
0
 def __init__(self,id):
     self.id=id #unique identifier. 
     radian_tol = 10 * 2 * np.pi * 1e-3 / (60.0 * 60.0 * 360.0)
     desc=('Array of boolean flags of data that was flagged for calibration'
          ' but not necessarily elsewhere in data reduction')
     self._flag_array=uvp.UVParameter('flag_array',description=desc,
                                      form=('Nblts','Nspws','Nfreqs','Npols'),
                                      expected_type=np.bool)
     desc=('Array of weights applied to data only in calibration.'
           'shape: (Nblts,Nspws,Nfreqs,Npols)')
     self._weights_array=uvp.UVParameter('weights_array',description=desc,
                                        form=('Nblts','Nspws','Nfreqs','Npols'),
                                         expected_type=np.float)        
     desc='unique string identifier associating calflagweights with cal file and meta file'
     self._id=uvp.UVParameter('id',description=desc,
                              expected_type=str)
     desc='array of times and flags representing antenna flags. These antennas will be entirely excluded from calibration'
     self._ant_flag_array=uvp.UVParameter('ant_flag_array',description=desc,
                                          form=('Nants_data,Ntimes','Nspws,Npols'),
                                          expected_type=np.bool)
Exemplo n.º 17
0
def test_inequality_different_extras():
    """Basic equality test."""
    test_obj = UVTest()
    test_obj2 = test_obj.copy()
    test_obj2._optional_int3 = uvp.UVParameter(
        "optional_int3",
        description="optional integer value",
        expected_type=int,
        value=7,
        required=False,
    )
    assert test_obj != test_obj2
Exemplo n.º 18
0
    def __init__(self):
        """ UVBase test object. """
        # add some test UVParameters to the class

        self._int1 = uvp.UVParameter('int1',
                                     description='integer value',
                                     expected_type=int,
                                     value=3)

        self._int2 = uvp.UVParameter('int2',
                                     description='integer value',
                                     expected_type=int,
                                     value=5)

        self._float1 = uvp.UVParameter('float1',
                                       description='float value',
                                       expected_type=np.float,
                                       value=18.2)

        self._string = uvp.UVParameter('string',
                                       description='string value',
                                       expected_type=str,
                                       value='test')

        self._floatarr = uvp.UVParameter('floatarr',
                                         description='float array',
                                         form=('int1', 'int2'),
                                         expected_type=np.float,
                                         value=np.random.rand(
                                             self._int1.value,
                                             self._int2.value))

        self._strlist = uvp.UVParameter(
            'strlist',
            description='string list',
            form=('int1', ),
            expected_type=str,
            value=['s' + str(i) for i in np.arange(self._int1.value)])

        self._intlist = uvp.UVParameter(
            'intlist',
            description='integer list',
            form=('int1', ),
            expected_type=int,
            value=[i for i in np.arange(self._int1.value)])
        super(UVTest, self).__init__()
Exemplo n.º 19
0
    def __init__(self):  #self,id,refant=0,n_phase_iter=5,
        #n_cycles=1,min_bl_per_ant=2,eps=1e-10,
        #min_ant_times=1,trim_neff=False,spw=0,
        #t_avg=1):

        desc = 'Number of different time steps in calibration'
        self._Ntime_steps = uvp.UVParameter('Ntime_steps',
                                            description=desc,
                                            expected_type=int)
        desc = 'Njones'
        self._Njones = uvp.UVParameter('Njones',
                                       description=desc,
                                       expected_type=int)

        desc = 'Reference antenna'
        self._refant = uvp.UVParameter('refant',
                                       description=desc,
                                       expected_type=int)

        #desc='If a visibility has a single flag in it (in freq axis) then flag all freqs'
        #self._flag_gaps=uvp.UVParameter('flag_gaps',description=desc,
        #expected_type=bool)
        desc = 'Number of iterations in which only the phase is fitted.'
        self._n_phase_iter = uvp.UVParameter('n_phase_iter',
                                             description=desc,
                                             expected_type=int)

        desc = 'minimum baselines per antenna for it to remain unflagged'
        self._min_bl_per_ant = uvp.UVParameter('min_bl_per_ant',
                                               description=desc,
                                               expected_type=int)

        desc = 'stopping criterion for stefcal'
        self._eps = uvp.UVParameter('eps', description=desc, expected_type=str)

        desc = 'minimum unflagged times or an antenna to not flag it'
        self._min_ant_times = uvp.UVParameter('min_ant_times',
                                              description=desc,
                                              expected_type=int)

        #desc='flag whether neff trimming was employed'
        #self._trim_neff=uvp.UVParameter('trim_neff',description=desc,
        #expected_type=bool)

        desc = 'unique identifier linking meta-data to calibration solutions and'
        'flag weights file'
        self._id = uvp.UVParameter('id', description=desc, expected_type=str)

        desc = 'file of flags and weights'
        self._flag_weights_file = uvp.UVParameter('flag_weights_file',
                                                  description=desc,
                                                  expected_type=str)

        desc = 'file of model visibilities',
        self._model_file = uvp.UVParameter('model_file',
                                           description=desc,
                                           expected_type=str)

        desc = 'file for measured visibilities'
        self._measurement_file = uvp.UVParameter('measurement_file',
                                                 description=desc,
                                                 expected_type=str)

        self._spw = uvp.UVParameter('spw',
                                    description='SPW calibrated',
                                    expected_type=int)

        desc = 'Number of time steps to average calibration over'
        self._t_avg = uvp.UVParameter('t_avg',
                                      description=desc,
                                      expected_type=int)

        self._n_cycles = uvp.UVParameter(
            'n_cycles',
            description='Number of cycles of stefcal performed',
            expected_type=int)

        self._Niterations = uvp.UVParameter(
            'Niterations',
            description='Number of iterations of stefcal performed',
            form=('Ntime_steps,n_cycles', 'Nfreqs', 'Njones'),
            expected_type=int)

        self._Ntimes = uvp.UVParameter('Ntimes',
                                       description='Number of times',
                                       expected_type=int)

        self._Nfreqs = uvp.UVParameter(
            'Nfreqs',
            description='Number of frequency channels',
            expected_type=int)
        desc = ('Number of antennas with data present (i.e. number of unique '
                'entries in ant_array). May be smaller ' +
                'than the number of antennas in the telescope')
        self._Nants_data = uvp.UVParameter('Nants_data',
                                           description=desc,
                                           expected_type=int)

        desc = ('Number of antennas in the array. May be larger ' +
                'than the number of antennas with data')
        self._Nants_telescope = uvp.UVParameter('Nants_telescope',
                                                description=desc,
                                                expected_type=int)

        desc = "Chi-Squares for each antenna gain solution."

        self._chi_square_per_ant = uvp.UVParameter('chi_square_per_ant',
                                                   description=desc,
                                                   form=('Nants_data',
                                                         'Nfreqs', 'Ntimes',
                                                         'Njones'),
                                                   expected_type=float,
                                                   required=False)
        desc = "Chi-Squares for each time step, frequency, and polarization."
        self._chi_square = uvp.UVParameter('chi_square',
                                           description=desc,
                                           form=('Nfreqs', 'Ntimes', 'Njones'),
                                           expected_type=float,
                                           required=False)

        desc = 'keeps track of degrees of freedom per gain solution.'
        self._dof_per_ant = uvp.UVParameter('dof_per_ant',
                                            description=desc,
                                            form=('Nants_data', 'Nfreqs',
                                                  'Ntimes', 'Njones'),
                                            expected_type=float)
        desc = "degrees of freedom per time, frequency, and polarization."
        self._dof = uvp.UVParameter('dof',
                                    description=desc,
                                    form=('Nfreqs', 'Ntimes', 'Njones'),
                                    expected_type=float)

        #self._noise_tavg=uvp.UVParameter('noise_tavg',
        #                                 description='noise levels in uncalibrated'
        #                                 'visibilities computed by taking differences'
        #                                 'in frequency and median over'
        #                                 ' all times',
        #                                 form=('Nbls','Nfreqs','Njones'),
        #                                 expected_type=np.float,required=False)

        #self._noise_favg=uvp.UVParameter('noise_favg',
        #                                 description='noise levels in uncalibrated'
        #                                 'visibilities computed by taking differences'
        #                                 'in time and median over'
        #                                 ' all frequency',
        #                                 form=('Nblts','Njones'),
        #                                 expected_type=np.float,required=False)

        self._noise_tblavg = uvp.UVParameter(
            'noise_tblavg',
            description='noise levels in uncalibrated'
            'visibilities computed by taking differences'
            'in time and and taking median over frequency'
            'baseline, polarization, and time',
            form=('Nfreqs'),
            expected_type=np.float,
            required=False)
        self.stefcal_version_str = (' Git origin: ' + stfversion.git_origin +
                                    '. Git hash: ' + stfversion.git_hash +
                                    '. Git branch: ' + stfversion.git_branch +
                                    '. Git description: ' +
                                    stfversion.git_description)
    nout = 1

#Import the sim and instrument settings from the file.
exec('from %s import sim_prms as _sim_params' % args[1].split('.')[0])
exec('from %s import instr_prms as _instr_params' % args[1].split('.')[0])

uvd = UVData()

default_attrs = [aa for aa in dir(uvd) if not aa.startswith('__')]
#default_attrs.append("delays")

for key, val in _sim_params.iteritems():
    if key in default_attrs:
        param = getattr(uvd, key)
    else:
        param = uvp.UVParameter(key, description=key)
    param = val
    setattr(uvd, key, param)

for key, val in _instr_params.iteritems():
    if key in default_attrs:
        param = getattr(uvd, key)
    else:
        param = uvp.UVParameter(key, description=key)
    param = val
    setattr(uvd, key, param)

# Generate an antenna array from a cal file.
aa = a.cal.get_aa(args[0].split('.')[0], uvd.channel_width / 1e9,
                  uvd.sfreq / 1e9, uvd.Nfreqs)  #Saved in Hz, AIPY expects GHz
Exemplo n.º 21
0
def test_close():
    """Test equality error for values within tols."""
    param1 = uvp.UVParameter(name='p1', value=1.0)
    param2 = uvp.UVParameter(name='p2', value=1.000001)
    nt.assert_equal(param1, param2)
Exemplo n.º 22
0
def test_equality_check_fail():
    """Test equality error for dict values."""
    param1 = uvp.UVParameter(name='p1', value=np.array([0, 1, 2]))
    param2 = uvp.UVParameter(name='p2', value={'v1': 2})
    nt.assert_not_equal(param1, param2)
Exemplo n.º 23
0
def test_dict_equality():
    """Test equality for dict values."""
    param1 = uvp.UVParameter(name='p1', value={'v1': 1})
    param2 = uvp.UVParameter(name='p2', value={'v1': 1})
    nt.assert_equal(param1, param2)
Exemplo n.º 24
0
def test_integer_inequality():
    """Test equality error for different non-array, non-string values."""
    param1 = uvp.UVParameter(name='p1', value=1)
    param2 = uvp.UVParameter(name='p2', value=2)
    nt.assert_not_equal(param1, param2)
Exemplo n.º 25
0
def test_string_equality():
    """Test equality error for different string values."""
    param1 = uvp.UVParameter(name='p1', value='Alice')
    param2 = uvp.UVParameter(name='p2', value='Alice')
    nt.assert_equal(param1, param2)
Exemplo n.º 26
0
def test_string_list_inequality():
    """Test equality error for different string values."""
    param1 = uvp.UVParameter(name='p1', value=['Alice', 'Eve'])
    param2 = uvp.UVParameter(name='p2', value=['Bob', 'Eve'])
    nt.assert_not_equal(param1, param2)
Exemplo n.º 27
0
def test_dict_inequality_keys():
    """Test equality error for different keys."""
    param1 = uvp.UVParameter(name="p1", value={"v1": 1, "s1": "test"})
    param3 = uvp.UVParameter(name="p3", value={"v3": 1, "s1": "test"})
    assert param1 != param3
Exemplo n.º 28
0
def test_class_inequality():
    """Test equality error for different uvparameter classes."""
    param1 = uvp.UVParameter(name='p1', value=1)
    param2 = uvp.AngleParameter(name='p2', value=1)
    nt.assert_not_equal(param1, param2)
Exemplo n.º 29
0
    def __init__(self):
        """ UVBase test object. """
        # add some test UVParameters to the class

        self._int1 = uvp.UVParameter(
            "int1", description="integer value", expected_type=int, value=3
        )

        self._int2 = uvp.UVParameter(
            "int2", description="integer value", expected_type=int, value=5
        )

        self._float1 = uvp.UVParameter(
            "float1", description="float value", expected_type=np.float, value=18.2
        )

        self._string1 = uvp.UVParameter(
            "string1", description="string value", form="str", value="test"
        )

        self._string2 = uvp.UVParameter(
            "string2", description="string value", expected_type="str", value="test"
        )

        self._floatarr = uvp.UVParameter(
            "floatarr",
            description="float array",
            form=("int1", "int2"),
            expected_type=np.float,
            value=np.random.rand(self._int1.value, self._int2.value),
        )

        self._floatarr2 = uvp.UVParameter(
            "floatarr2",
            description="float array",
            form=4,
            expected_type=np.float,
            value=np.random.rand(4),
        )

        self._strlist = uvp.UVParameter(
            "strlist",
            description="string list",
            form=("int1",),
            expected_type=str,
            value=["s" + str(i) for i in np.arange(self._int1.value)],
        )

        self._intlist = uvp.UVParameter(
            "intlist",
            description="integer list",
            form=("int1",),
            expected_type=int,
            value=list(range(self._int1.value)),
        )

        self._angle = uvp.AngleParameter(
            "angle", description="angle", expected_type=np.float, value=np.pi / 4.0
        )

        self._location = uvp.LocationParameter(
            "location", description="location", value=np.array(ref_xyz)
        )

        self._optional_int1 = uvp.UVParameter(
            "optional_int1",
            description="optional integer value",
            expected_type=int,
            value=3,
            required=False,
        )

        self._optional_int2 = uvp.UVParameter(
            "optional_int2",
            description="optional integer value",
            expected_type=int,
            value=5,
            required=False,
        )

        self._unset_int1 = uvp.UVParameter(
            "unset_int1",
            description="An unset parameter.",
            expected_type=int,
            value=None,
            required=False,
        )

        super(UVTest, self).__init__()
Exemplo n.º 30
0
 def __init__(self):
     self._p1 = uvp.UVParameter(name='p1', required=False)
     self._p2 = uvp.UVParameter(name='p2', form=('p1', ))
     self._p3 = uvp.UVParameter(name='p3', form=(2, ))
     super(TestUV, self).__init__()