github.com/astrogo/fitsio@v0.3.0/common_test.go (about) 1 // Copyright 2015 The astrogo Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package fitsio 6 7 type any interface{} 8 9 var g_tables = []struct { 10 fname string 11 hdus []HDU 12 tuple [][][]any 13 maps []map[string]any 14 types []interface{} 15 }{ 16 { 17 fname: "testdata/swp06542llg.fits", 18 hdus: []HDU{ 19 &primaryHDU{imageHDU{ 20 hdr: *newHeader( 21 []Card{ 22 { 23 Name: "SIMPLE", 24 Value: true, 25 Comment: "Standard FITS format", 26 }, 27 { 28 Name: "BITPIX", 29 Value: 8, 30 Comment: "", 31 }, 32 { 33 Name: "NAXIS", 34 Value: 0, 35 Comment: "no data in main file", 36 }, 37 { 38 Name: "EXTEND", 39 Value: true, 40 Comment: "Extensions may exist", 41 }, 42 { 43 Name: "FILENAME", 44 Value: "swp06542llg", 45 Comment: "original name of input file", 46 }, 47 { 48 Name: "TELESCOP", 49 Value: "IUE", 50 Comment: "International Ultraviolet Explorer", 51 }, 52 { 53 Name: "ORIGIN", 54 Value: "GODDARD", 55 Comment: "Tape writing location", 56 }, 57 { 58 Name: "CAMERA", 59 Value: 3, 60 Comment: "IUE camera number", 61 }, 62 { 63 Name: "IMAGE", 64 Value: 6542, 65 Comment: "IUE image sequence number", 66 }, 67 { 68 Name: "APERTURE", 69 Value: "", 70 Comment: "Aperture", 71 }, 72 { 73 Name: "DISPERSN", 74 Value: "LOW", 75 Comment: "IUE spectrograph dispersion", 76 }, 77 { 78 Name: "DATE-OBS", 79 Value: "nn/nn/nn", 80 Comment: "Observation date (dd/mm/yy)", 81 }, 82 { 83 Name: "DATE-PRO", 84 Value: "nn/nn/nn", 85 Comment: "Processing date (dd/mm/yy)", 86 }, 87 { 88 Name: "DATE", 89 Value: "18-Feb-1993", 90 Comment: "Date file was written (dd/mm/yy)", 91 }, 92 { 93 Name: "RA", 94 Value: 0.0, 95 Comment: "Right Ascension in degrees", 96 }, 97 { 98 Name: "DEC", 99 Value: 0.0, 100 Comment: "Declination in degrees", 101 }, 102 { 103 Name: "EQUINOX", 104 Value: 1950.0, 105 Comment: "Epoch for coordinates (years)", 106 }, 107 { 108 Name: "THDA-RES", 109 Value: 0.0, 110 Comment: "THDA at time of read", 111 }, 112 { 113 Name: "THDA-SPE", 114 Value: 0.0, 115 Comment: "THDA at end of exposure", 116 }, 117 }, 118 IMAGE_HDU, 119 8, 120 []int{}, 121 ), 122 }}, 123 &Table{ 124 hdr: *newHeader( 125 []Card{ 126 { 127 Name: "XTENSION", 128 Value: "BINTABLE", 129 Comment: "Extension type", 130 }, 131 { 132 Name: "BITPIX", 133 Value: 8, 134 Comment: "binary data", 135 }, 136 { 137 Name: "NAXIS", 138 Value: 2, 139 Comment: "Number of Axes", 140 }, 141 { 142 Name: "NAXIS1", 143 Value: 7532, 144 Comment: "width of table in bytes", 145 }, 146 { 147 Name: "NAXIS2", 148 Value: 1, 149 Comment: "Number of entries in table", 150 }, 151 { 152 Name: "PCOUNT", 153 Value: 0, 154 Comment: "Number of parameters/group", 155 }, 156 { 157 Name: "GCOUNT", 158 Value: 1, 159 Comment: "Number of groups", 160 }, 161 { 162 Name: "TFIELDS", 163 Value: 9, 164 Comment: "Number of fields in each row", 165 }, 166 { 167 Name: "EXTNAME", 168 Value: "IUE MELO", 169 Comment: "name of table (?)", 170 }, 171 { 172 Name: "TFORM1", 173 Value: "1I", 174 Comment: "Count and data type of field 1", 175 }, 176 { 177 Name: "TTYPE1", 178 Value: "ORDER", 179 Comment: "spectral order (low dispersion = 1)", 180 }, 181 { 182 Name: "TUNIT1", 183 Value: "", 184 Comment: "unitless", 185 }, 186 { 187 Name: "TFORM2", 188 Value: "1I", 189 Comment: "field 2 has one 2-byte integer", 190 }, 191 { 192 Name: "TTYPE2", 193 Value: "NPTS", 194 Comment: "number of non-zero points in each vector", 195 }, 196 { 197 Name: "TUNIT2", 198 Value: "", 199 Comment: "unitless", 200 }, 201 { 202 Name: "TFORM3", 203 Value: "1E", 204 Comment: "Count and data type of field 3", 205 }, 206 { 207 Name: "TTYPE3", 208 Value: "LAMBDA", 209 Comment: "3rd field is starting wavelength", 210 }, 211 { 212 Name: "TUNIT3", 213 Value: "ANGSTROM", 214 Comment: "unit is angstrom", 215 }, 216 { 217 Name: "TFORM4", 218 Value: "1E", 219 Comment: "Count and Type of 4th field", 220 }, 221 { 222 Name: "TTYPE4", 223 Value: "DELTAW", 224 Comment: "4th field is wavelength increment", 225 }, 226 { 227 Name: "TUNIT4", 228 Value: "ANGSTROM", 229 Comment: "unit is angstrom", 230 }, 231 { 232 Name: "TFORM5", 233 Value: "376E", 234 Comment: "Count and Type of 5th field", 235 }, 236 { 237 Name: "TTYPE5", 238 Value: "GROSS", 239 Comment: "5th field is gross flux array", 240 }, 241 { 242 Name: "TUNIT5", 243 Value: "FN", 244 Comment: "unit is IUE FN", 245 }, 246 { 247 Name: "TFORM6", 248 Value: "376E", 249 Comment: "Count and Type of 6th field", 250 }, 251 { 252 Name: "TTYPE6", 253 Value: "BACK", 254 Comment: "6th field is background flux array", 255 }, 256 { 257 Name: "TUNIT6", 258 Value: "FN", 259 Comment: "unit is IUE FN", 260 }, 261 { 262 Name: "TFORM7", 263 Value: "376E", 264 Comment: "Count and Type of 7th field", 265 }, 266 { 267 Name: "TTYPE7", 268 Value: "NET", 269 Comment: "7th field is net flux array", 270 }, 271 { 272 Name: "TUNIT7", 273 Value: "ERGS", 274 Comment: "unit is IUE FN", 275 }, 276 { 277 Name: "TFORM8", 278 Value: "376E", 279 Comment: "Count and Type of 8th field", 280 }, 281 { 282 Name: "TTYPE8", 283 Value: "ABNET", 284 Comment: "absolutely calibrated net flux array", 285 }, 286 { 287 Name: "TUNIT8", 288 Value: "ERGS", 289 Comment: "unit is ergs/cm2/sec/angstrom", 290 }, 291 { 292 Name: "TFORM9", 293 Value: "376E", 294 Comment: "Count and Type of 9th field", 295 }, 296 { 297 Name: "TTYPE9", 298 Value: "EPSILONS", 299 Comment: "9th field is epsilons", 300 }, 301 { 302 Name: "TUNIT9", 303 Value: "", 304 Comment: "unitless", 305 }, 306 }, 307 BINARY_TBL, 308 8, 309 []int{}, 310 ), 311 }, 312 }, 313 tuple: [][][]any{ 314 nil, 315 { 316 // row-0 317 { 318 int16(1), 319 int16(376), float32(1000.8), float32(2.6515958), g_data_gross, 320 g_data_back, g_data_net, g_data_abnet, 321 g_data_epsilons, 322 }, 323 }, 324 }, 325 maps: []map[string]any{ 326 {}, 327 { 328 "ORDER": int16(1), 329 "NPTS": int16(376), 330 "LAMBDA": float32(1000.8), 331 "DELTAW": float32(2.6515958), 332 "GROSS": g_data_gross, 333 "BACK": g_data_back, 334 "NET": g_data_net, 335 "ABNET": g_data_abnet, 336 "EPSILONS": g_data_epsilons, 337 }, 338 }, 339 types: []interface{}{ 340 nil, 341 struct { 342 Order int16 `fits:"ORDER"` 343 Npts int16 `fits:"NPTS"` 344 DeltaW float32 `fits:"DELTAW"` // switch order of deltaw w/ lambda 345 Lambda float32 `fits:"LAMBDA"` 346 Gross [376]float32 `fits:"GROSS"` 347 Back [376]float32 `fits:"BACK"` 348 Net [376]float32 `fits:"NET"` 349 ABNET [376]float32 // test w/o struct-tag 350 EPSILONS [376]float32 // ditto 351 }{}, 352 }, 353 }, 354 { 355 fname: "testdata/file001.fits", 356 hdus: []HDU{ 357 &primaryHDU{imageHDU{ 358 hdr: *newHeader( 359 []Card{ 360 { 361 Name: "SIMPLE", 362 Value: true, 363 Comment: "STANDARD FITS FORMAT (REV OCT 1981)", 364 }, 365 { 366 Name: "BITPIX", 367 Value: 8, 368 Comment: "CHARACTER INFORMATION", 369 }, 370 { 371 Name: "NAXIS", 372 Value: 0, 373 Comment: "NO IMAGE DATA ARRAY PRESENT", 374 }, 375 { 376 Name: "EXTEND", 377 Value: true, 378 Comment: "THERE IS AN EXTENSION", 379 }, 380 { 381 Name: "ORIGIN", 382 Value: "ESO", 383 Comment: "EUROPEAN SOUTHERN OBSERVATORY", 384 }, 385 { 386 Name: "OBJECT", 387 Value: "SNG - CAT.", 388 Comment: "THE IDENTIFIER", 389 }, 390 { 391 Name: "DATE", 392 Value: "27/ 5/84", 393 Comment: "DATE THIS TAPE WRITTEN DD/MM/YY", 394 }, 395 }, 396 IMAGE_HDU, 397 8, 398 []int{}, 399 ), 400 }}, 401 &Table{ 402 hdr: *newHeader( 403 []Card{ 404 { 405 Name: "XTENSION", 406 Value: "TABLE", 407 Comment: "TABLE EXTENSION", 408 }, 409 { 410 Name: "BITPIX", 411 Value: 8, 412 Comment: "CHARACTER INFORMATION", 413 }, 414 { 415 Name: "NAXIS", 416 Value: 2, 417 Comment: "SIMPLE 2-D MATRIX", 418 }, 419 { 420 Name: "NAXIS1", 421 Value: 98, 422 Comment: "NO. OF CHARACTERS PER ROW", 423 }, 424 { 425 Name: "NAXIS2", 426 Value: 10, 427 Comment: "NO. OF ROWS", 428 }, 429 { 430 Name: "PCOUNT", 431 Value: 0, 432 Comment: "RANDOM PARAMETER COUNT", 433 }, 434 { 435 Name: "GCOUNT", 436 Value: 1, 437 Comment: "GROUP COUNT", 438 }, 439 { 440 Name: "TFIELDS", 441 Value: 7, 442 Comment: "NO. OF FIELDS PER ROW", 443 }, 444 { 445 Name: "TTYPE1", 446 Value: "IDEN.", 447 Comment: "NAME OF ROW", 448 }, 449 { 450 Name: "TBCOL1", 451 Value: 1, 452 Comment: "BEGINNING COLUMN OF THE FIELD", 453 }, 454 { 455 Name: "TFORM1", 456 Value: "E14.7", 457 Comment: "FORMAT", 458 }, 459 { 460 Name: "TNULL1", 461 Value: "", 462 Comment: "NULL VALUE", 463 }, 464 { 465 Name: "TTYPE2", 466 Value: "RA", 467 Comment: "NAME OF ROW", 468 }, 469 { 470 Name: "TBCOL2", 471 Value: 15, 472 Comment: "BEGINNING COLUMN OF THE FIELD", 473 }, 474 { 475 Name: "TFORM2", 476 Value: "E14.7", 477 Comment: "FORMAT", 478 }, 479 { 480 Name: "TNULL2", 481 Value: "", 482 Comment: "NULL VALUE", 483 }, 484 { 485 Name: "TTYPE3", 486 Value: "DEC", 487 Comment: "NAME OF ROW", 488 }, 489 { 490 Name: "TBCOL3", 491 Value: 29, 492 Comment: "BEGINNING COLUMN OF THE FIELD", 493 }, 494 { 495 Name: "TFORM3", 496 Value: "E14.7", 497 Comment: "FORMAT", 498 }, 499 { 500 Name: "TNULL3", 501 Value: "", 502 Comment: "NULL VALUE", 503 }, 504 { 505 Name: "TTYPE4", 506 Value: "TYPE", 507 Comment: "NAME OF ROW", 508 }, 509 { 510 Name: "TBCOL4", 511 Value: 43, 512 Comment: "BEGINNING COLUMN OF THE FIELD", 513 }, 514 { 515 Name: "TFORM4", 516 Value: "E14.7", 517 Comment: "FORMAT", 518 }, 519 { 520 Name: "TNULL4", 521 Value: "", 522 Comment: "NULL VALUE", 523 }, 524 { 525 Name: "TTYPE5", 526 Value: "D25", 527 Comment: "NAME OF ROW", 528 }, 529 { 530 Name: "TBCOL5", 531 Value: 57, 532 Comment: "BEGINNING COLUMN OF THE FIELD", 533 }, 534 { 535 Name: "TFORM5", 536 Value: "E14.7", 537 Comment: "FORMAT", 538 }, 539 { 540 Name: "TNULL5", 541 Value: "", 542 Comment: "NULL VALUE", 543 }, 544 { 545 Name: "TTYPE6", 546 Value: "INCL.", 547 Comment: "NAME OF ROW", 548 }, 549 { 550 Name: "TBCOL6", 551 Value: 71, 552 Comment: "BEGINNING COLUMN OF THE FIELD", 553 }, 554 { 555 Name: "TFORM6", 556 Value: "E14.7", 557 Comment: "FORMAT", 558 }, 559 { 560 Name: "TNULL6", 561 Value: "", 562 Comment: "NULL VALUE", 563 }, 564 { 565 Name: "TTYPE7", 566 Value: "RV", 567 Comment: "NAME OF ROW", 568 }, 569 { 570 Name: "TBCOL7", 571 Value: 85, 572 Comment: "BEGINNING COLUMN OF THE FIELD", 573 }, 574 { 575 Name: "TFORM7", 576 Value: "E14.7", 577 Comment: "FORMAT", 578 }, 579 { 580 Name: "TNULL7", 581 Value: "", 582 Comment: "NULL VALUE", 583 }, 584 }, 585 ASCII_TBL, 586 8, 587 []int{98, 10}, 588 ), 589 }, 590 }, 591 tuple: [][][]any{ 592 nil, 593 { 594 { 595 -.1116590E+04, .1128000E+02, .5956670E+02, .3000000E+01, 596 .7789999E+02, .1200000E+02, .0000000E+00, 597 }, 598 { 599 -.1109540E+04, .1115667E+02, .5430000E+02, .3000000E+01, 600 .4000000E+02, .1200000E+02, .0000000E+00, 601 }, 602 { 603 -.3402850E+03, .3668300E+01, -.2801670E+02, .3000000E+01, 604 .7000000E+02, .3000000E+02, .4060000E+04, 605 }, 606 { 607 .5360000E+03, .1393330E+01, .3445000E+02, .3500000E+01, 608 .2229000E+03, .5990000E+02, .5160000E+04, 609 }, 610 { 611 .3177000E+04, .1023000E+02, .2136670E+02, .3000000E+01, 612 .9960001E+02, .3600000E+02, .1220000E+04, 613 }, 614 { 615 .3627000E+04, .1129333E+02, .1326670E+02, .3200000E+01, 616 .5226000E+03, .5990000E+02, .6970000E+03, 617 }, 618 { 619 .3756000E+04, .1156667E+02, .5456670E+02, .4200000E+01, 620 .2619000E+03, .5670000E+02, .1071000E+04, 621 }, 622 { 623 .5457000E+04, .1402500E+02, .5458300E+02, .6200000E+01, 624 .1614900E+04, .1220000E+02, .2660000E+03, 625 }, 626 { 627 .7292000E+04, .2243500E+02, .3005000E+02, .9500000E+01, 628 .1283000E+03, .3560000E+02, .9340000E+03, 629 }, 630 { 631 .1423700E+05, .1336330E+02, -.2086700E+02, .3500000E+01, 632 .1170000E+03, .4220000E+02, .0000000E+00, 633 }, 634 }, 635 }, 636 maps: []map[string]any{ 637 {}, 638 { 639 "IDEN.": -1116.59, 640 "RA": 11.28, 641 "DEC": 59.5667, 642 "TYPE": float64(3), 643 "D25": 77.89999, 644 "INCL.": float64(12), 645 "RV": float64(0), 646 //"NOT-THERE": 0.0, 647 }, 648 }, 649 types: []interface{}{ 650 nil, 651 struct { 652 Iden float64 `fits:"IDEN."` 653 Ra float64 `fits:"RA"` 654 Dec float64 `fits:"DEC"` 655 Type float64 `fits:"TYPE"` 656 D25 float64 `fits:"D25"` 657 Incl float64 `fits:"INCL."` 658 RV float64 // test w/o struct-tag 659 //X_NotThere float64 `fits:"NOT_THERE"` 660 }{}, 661 }, 662 }, 663 }