"same thing with '_lat_lon_alt' and \n'_lat_lon_alt_degrees' appended " "through which you can get or set the values using \nlatitude, longitude and " "altitude values in radians or degrees and meters.\n\n") out += 'Required\n----------------\n' out += ('These parameters are required to have a sensible UVData object and \n' 'are required for most kinds of uv data files.') out += "\n\n" for thing in UV.required(): obj = getattr(UV, thing) out += '**{name}**\n'.format(name=obj.name) out += ' {desc}\n'.format(desc=obj.description) out += "\n" out += 'Optional\n----------------\n' out += ('These parameters are defined by one or more file standard but are not ' 'always required.\nSome of them are required depending on the ' 'phase_type (as noted below).') out += "\n\n" for thing in UV.extra(): obj = getattr(UV, thing) out += '**{name}**\n'.format(name=obj.name) out += ' {desc}\n'.format(desc=obj.description) out += "\n" t = Time.now() t.out_subfmt = 'date' out += "last updated: {date}".format(date=t.iso) F = open('parameters.rst', 'w') F.write(out) print "wrote parameters.rst"
class TestUVDataInit(object): def setUp(self): """Setup for basic parameter, property and iterator tests.""" self.required_parameters = ['_data_array', '_nsample_array', '_flag_array', '_Ntimes', '_Nbls', '_Nblts', '_Nfreqs', '_Npols', '_Nspws', '_uvw_array', '_time_array', '_ant_1_array', '_ant_2_array', '_lst_array', '_baseline_array', '_freq_array', '_polarization_array', '_spw_array', '_integration_time', '_channel_width', '_object_name', '_telescope_name', '_instrument', '_telescope_location', '_history', '_vis_units', '_Nants_data', '_Nants_telescope', '_antenna_names', '_antenna_numbers', '_phase_type'] self.required_properties = ['data_array', 'nsample_array', 'flag_array', 'Ntimes', 'Nbls', 'Nblts', 'Nfreqs', 'Npols', 'Nspws', 'uvw_array', 'time_array', 'ant_1_array', 'ant_2_array', 'lst_array', 'baseline_array', 'freq_array', 'polarization_array', 'spw_array', 'integration_time', 'channel_width', 'object_name', 'telescope_name', 'instrument', 'telescope_location', 'history', 'vis_units', 'Nants_data', 'Nants_telescope', 'antenna_names', 'antenna_numbers', 'phase_type'] self.extra_parameters = ['_extra_keywords', '_antenna_positions', '_gst0', '_rdate', '_earth_omega', '_dut1', '_timesys', '_uvplane_reference_time', '_phase_center_ra', '_phase_center_dec', '_phase_center_epoch', '_zenith_ra', '_zenith_dec'] self.extra_properties = ['extra_keywords', 'antenna_positions', 'gst0', 'rdate', 'earth_omega', 'dut1', 'timesys', 'uvplane_reference_time', 'phase_center_ra', 'phase_center_dec', 'phase_center_epoch', 'zenith_ra', 'zenith_dec'] self.other_properties = ['telescope_location_lat_lon_alt', 'telescope_location_lat_lon_alt_degrees', 'phase_center_ra_degrees', 'phase_center_dec_degrees', 'zenith_ra_degrees', 'zenith_dec_degrees'] self.uv_object = UVData() def teardown(self): """Test teardown: delete object.""" del(self.uv_object) def test_parameter_iter(self): "Test expected parameters." all = [] for prop in self.uv_object: all.append(prop) for a in self.required_parameters + self.extra_parameters: nt.assert_true(a in all, msg='expected attribute ' + a + ' not returned in object iterator') def test_required_parameter_iter(self): "Test expected required parameters." required = [] for prop in self.uv_object.required(): required.append(prop) for a in self.required_parameters: nt.assert_true(a in required, msg='expected attribute ' + a + ' not returned in required iterator') def test_extra_parameter_iter(self): "Test expected optional parameters." extra = [] for prop in self.uv_object.extra(): extra.append(prop) for a in self.extra_parameters: nt.assert_true(a in extra, msg='expected attribute ' + a + ' not returned in extra iterator') def test_unexpected_attributes(self): "Test for extra attributes." expected_attributes = self.required_properties + \ self.extra_properties + self.other_properties attributes = [i for i in self.uv_object.__dict__.keys() if i[0] != '_'] for a in attributes: nt.assert_true(a in expected_attributes, msg='unexpected attribute ' + a + ' found in UVData') def test_properties(self): "Test that properties can be get and set properly." prop_dict = dict(zip(self.required_properties + self.extra_properties, self.required_parameters + self.extra_parameters)) for k, v in prop_dict.iteritems(): rand_num = np.random.rand() setattr(self.uv_object, k, rand_num) this_param = getattr(self.uv_object, v) try: nt.assert_equal(rand_num, this_param.value) except: print('setting {prop_name} to a random number failed'.format(prop_name=k)) raise(AssertionError)