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
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)
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)
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
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
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
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
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)
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
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]
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
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])
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]
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])
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
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)
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
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__()
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
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)
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)
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)
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)
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)
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)
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
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)
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__()
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__()