1 /* 2 * Copyright (c) 2019-2021, The OSKAR Developers. 3 * See the LICENSE file at the top-level directory of this distribution. 4 */ 5 6 #include "utility/oskar_get_binary_tag_string.h" 7 8 #include "binary/oskar_binary.h" 9 #include "splines/oskar_splines.h" 10 #include "sky/oskar_sky.h" 11 #include "telescope/station/element/oskar_element.h" 12 #include "vis/oskar_vis_header.h" 13 #include "vis/oskar_vis_block.h" 14 15 #ifdef __cplusplus 16 extern "C" { 17 #endif 18 oskar_get_binary_tag_string(char group,char tag)19const char* oskar_get_binary_tag_string(char group, char tag) 20 { 21 switch (group) 22 { 23 case OSKAR_TAG_GROUP_METADATA: 24 { 25 switch (tag) 26 { 27 case OSKAR_TAG_METADATA_DATE_TIME_STRING: 28 return "Date"; 29 case OSKAR_TAG_METADATA_OSKAR_VERSION_STRING: 30 return "OSKAR version"; 31 case OSKAR_TAG_METADATA_USERNAME: return "Username"; 32 case OSKAR_TAG_METADATA_CWD: return "Working directory"; 33 default: 34 return "Unknown metadata group tag"; 35 } 36 break; 37 } 38 case OSKAR_TAG_GROUP_SETTINGS: 39 { 40 switch (tag) 41 { 42 case OSKAR_TAG_SETTINGS_PATH: return "Settings file path"; 43 case OSKAR_TAG_SETTINGS: return "Settings file"; 44 default: 45 return "Unknown settings group tag"; 46 } 47 break; 48 } 49 case OSKAR_TAG_GROUP_RUN: 50 { 51 switch (tag) 52 { 53 case OSKAR_TAG_RUN_LOG: return "Run log"; 54 default: 55 return "Unknown run group tag"; 56 } 57 break; 58 } 59 case OSKAR_TAG_GROUP_SKY_MODEL: 60 { 61 switch (tag) 62 { 63 case OSKAR_SKY_TAG_NUM_SOURCES: return "Number of sources"; 64 case OSKAR_SKY_TAG_DATA_TYPE: return "Data type"; 65 case OSKAR_SKY_TAG_RA: return "Right Ascension values"; 66 case OSKAR_SKY_TAG_DEC: return "Declination values"; 67 case OSKAR_SKY_TAG_STOKES_I: return "Stokes I values"; 68 case OSKAR_SKY_TAG_STOKES_Q: return "Stokes Q values"; 69 case OSKAR_SKY_TAG_STOKES_U: return "Stokes U values"; 70 case OSKAR_SKY_TAG_STOKES_V: return "Stokes V values"; 71 case OSKAR_SKY_TAG_REF_FREQ: 72 return "Reference frequency values"; 73 case OSKAR_SKY_TAG_SPECTRAL_INDEX: 74 return "Spectral index values"; 75 case OSKAR_SKY_TAG_ROTATION_MEASURE: 76 return "Rotation measure values"; 77 case OSKAR_SKY_TAG_FWHM_MAJOR: 78 return "Gaussian FWHM (major) values"; 79 case OSKAR_SKY_TAG_FWHM_MINOR: 80 return "Gaussian FWHM (minor) values"; 81 case OSKAR_SKY_TAG_POSITION_ANGLE: 82 return "Gaussian position angle values"; 83 default: 84 return "Unknown sky model group tag"; 85 } 86 break; 87 } 88 case OSKAR_TAG_GROUP_SPLINE_DATA: 89 { 90 switch (tag) 91 { 92 case OSKAR_SPLINES_TAG_NUM_KNOTS_X_THETA: 93 return "Number of knots in X or theta"; 94 case OSKAR_SPLINES_TAG_NUM_KNOTS_Y_PHI: 95 return "Number of knots in Y or phi"; 96 case OSKAR_SPLINES_TAG_KNOTS_X_THETA: 97 return "Knot positions in X or theta"; 98 case OSKAR_SPLINES_TAG_KNOTS_Y_PHI: 99 return "Knot positions in Y or phi"; 100 case OSKAR_SPLINES_TAG_COEFF: 101 return "Spline coefficient data"; 102 case OSKAR_SPLINES_TAG_SMOOTHING_FACTOR: 103 return "Smoothing factor"; 104 default: 105 return "Unknown spline data group tag"; 106 } 107 break; 108 } 109 case OSKAR_TAG_GROUP_ELEMENT_DATA: 110 { 111 switch (tag) 112 { 113 case OSKAR_ELEMENT_TAG_SURFACE_TYPE: 114 return "Surface type"; 115 case OSKAR_ELEMENT_TAG_COORD_SYS: 116 return "Coordinate system"; 117 default: 118 return "Unknown element data group tag"; 119 } 120 break; 121 } 122 case OSKAR_TAG_GROUP_VIS_HEADER: 123 { 124 switch (tag) 125 { 126 case OSKAR_VIS_HEADER_TAG_TELESCOPE_PATH: 127 return "Telescope model path"; 128 case OSKAR_VIS_HEADER_TAG_NUM_TAGS_PER_BLOCK: 129 return "Number of tags per block"; 130 case OSKAR_VIS_HEADER_TAG_WRITE_AUTO_CORRELATIONS: 131 return "Auto-correlations present"; 132 case OSKAR_VIS_HEADER_TAG_WRITE_CROSS_CORRELATIONS: 133 return "Cross-correlations present"; 134 case OSKAR_VIS_HEADER_TAG_AMP_TYPE: 135 return "Visibility amplitude type"; 136 case OSKAR_VIS_HEADER_TAG_COORD_PRECISION: 137 return "Coordinate precision"; 138 case OSKAR_VIS_HEADER_TAG_MAX_TIMES_PER_BLOCK: 139 return "Maximum number of times per block"; 140 case OSKAR_VIS_HEADER_TAG_NUM_TIMES_TOTAL: 141 return "Number of times total"; 142 case OSKAR_VIS_HEADER_TAG_MAX_CHANNELS_PER_BLOCK: 143 return "Maximum number of channels per block"; 144 case OSKAR_VIS_HEADER_TAG_NUM_CHANNELS_TOTAL: 145 return "Number of channels total"; 146 case OSKAR_VIS_HEADER_TAG_NUM_STATIONS: 147 return "Number of stations"; 148 case OSKAR_VIS_HEADER_TAG_POL_TYPE: 149 return "Polarisation type"; 150 case OSKAR_VIS_HEADER_TAG_PHASE_CENTRE_COORD_TYPE: 151 return "Phase centre coordinate type"; 152 case OSKAR_VIS_HEADER_TAG_PHASE_CENTRE_DEG: 153 return "Phase centre [deg]"; 154 case OSKAR_VIS_HEADER_TAG_FREQ_START_HZ: 155 return "Frequency start [Hz]"; 156 case OSKAR_VIS_HEADER_TAG_FREQ_INC_HZ: 157 return "Frequency inc [Hz]"; 158 case OSKAR_VIS_HEADER_TAG_CHANNEL_BANDWIDTH_HZ: 159 return "Channel bandwidth [Hz]"; 160 case OSKAR_VIS_HEADER_TAG_TIME_START_MJD_UTC: 161 return "Start time [MJD, UTC]"; 162 case OSKAR_VIS_HEADER_TAG_TIME_INC_SEC: 163 return "Time inc [s]"; 164 case OSKAR_VIS_HEADER_TAG_TIME_AVERAGE_SEC: 165 return "Time average integration [s]"; 166 case OSKAR_VIS_HEADER_TAG_TELESCOPE_REF_LON_DEG: 167 return "Telescope longitude [deg]"; 168 case OSKAR_VIS_HEADER_TAG_TELESCOPE_REF_LAT_DEG: 169 return "Telescope latitude [deg]"; 170 case OSKAR_VIS_HEADER_TAG_TELESCOPE_REF_ALT_M: 171 return "Telescope altitude [m]"; 172 case OSKAR_VIS_HEADER_TAG_STATION_X_OFFSET_ECEF: 173 return "Station X coordinates (offset ECEF) [m]"; 174 case OSKAR_VIS_HEADER_TAG_STATION_Y_OFFSET_ECEF: 175 return "Station Y coordinates (offset ECEF) [m]"; 176 case OSKAR_VIS_HEADER_TAG_STATION_Z_OFFSET_ECEF: 177 return "Station Z coordinates (offset ECEF) [m]"; 178 case OSKAR_VIS_HEADER_TAG_ELEMENT_X_ENU: 179 return "Element X coordinates (ENU) [m]"; 180 case OSKAR_VIS_HEADER_TAG_ELEMENT_Y_ENU: 181 return "Element Y coordinates (ENU) [m]"; 182 case OSKAR_VIS_HEADER_TAG_ELEMENT_Z_ENU: 183 return "Element Z coordinates (ENU) [m]"; 184 default: 185 return "Unknown visibility header group tag"; 186 } 187 break; 188 } 189 case OSKAR_TAG_GROUP_VIS_BLOCK: 190 { 191 switch (tag) 192 { 193 case OSKAR_VIS_BLOCK_TAG_DIM_START_AND_SIZE: 194 return "Dimension start and size"; 195 case OSKAR_VIS_BLOCK_TAG_AUTO_CORRELATIONS: 196 return "Auto-correlation data"; 197 case OSKAR_VIS_BLOCK_TAG_CROSS_CORRELATIONS: 198 return "Cross-correlation data"; 199 case OSKAR_VIS_BLOCK_TAG_BASELINE_UU: 200 return "Baseline UU coordinates [m]"; 201 case OSKAR_VIS_BLOCK_TAG_BASELINE_VV: 202 return "Baseline VV coordinates [m]"; 203 case OSKAR_VIS_BLOCK_TAG_BASELINE_WW: 204 return "Baseline WW coordinates [m]"; 205 case OSKAR_VIS_BLOCK_TAG_STATION_U: 206 return "Station U coordinates [m]"; 207 case OSKAR_VIS_BLOCK_TAG_STATION_V: 208 return "Station V coordinates [m]"; 209 case OSKAR_VIS_BLOCK_TAG_STATION_W: 210 return "Station W coordinates [m]"; 211 default: 212 return "Unknown visibility block group tag"; 213 } 214 break; 215 } 216 default: 217 break; 218 } 219 return "Unknown tag group"; 220 } 221 222 #ifdef __cplusplus 223 } 224 #endif 225