github.com/astrogo/fitsio@v0.3.0/README.md (about) 1 fitsio 2 ====== 3 4 [![GitHub release](https://img.shields.io/github/release/astrogo/fitsio.svg)](https://github.com/astrogo/fitsio/releases) 5 [![CI](https://github.com/astrogo/fitsio/workflows/CI/badge.svg)](https://github.com/astrogo/fitsio/actions) 6 [![codecov](https://codecov.io/gh/astrogo/fitsio/branch/master/graph/badge.svg)](https://codecov.io/gh/astrogo/fitsio) 7 [![GoDoc](https://godoc.org/github.com/astrogo/fitsio?status.svg)](https://godoc.org/github.com/astrogo/fitsio) 8 9 `fitsio` is a pure-Go package to read and write `FITS` files. 10 11 ## Installation 12 13 ```sh 14 $ go get github.com/astrogo/fitsio 15 ``` 16 17 ## Documentation 18 19 https://godoc.org/github.com/astrogo/fitsio 20 21 ## Contribute 22 23 `astrogo/fitsio` is released under `BSD-3`. 24 Please send a pull request to [astrogo/license](https://github.com/astrogo/license), 25 adding yourself to the `AUTHORS` and/or `CONTRIBUTORS` file. 26 27 ## Example 28 29 ```go 30 import fits "github.com/astrogo/fitsio" 31 32 func dumpFitsTable(fname string) { 33 r, err := os.Open(fname) 34 if err != nil { 35 panic(err) 36 } 37 defer r.Close() 38 f, err := fits.Open(r) 39 if err != nil { 40 panic(err) 41 } 42 defer f.Close() 43 44 // get the second HDU 45 table := f.HDU(1).(*fits.Table) 46 nrows := table.NumRows() 47 rows, err := table.Read(0, nrows) 48 if err != nil { 49 panic(err) 50 } 51 defer rows.Close() 52 for rows.Next() { 53 var x, y float64 54 var id int64 55 err = rows.Scan(&id, &x, &y) 56 if err != nil { 57 panic(err) 58 } 59 fmt.Printf(">>> %v %v %v\n", id, x, y) 60 } 61 err = rows.Err() 62 if err != nil { panic(err) } 63 64 // using a struct 65 xx := struct{ 66 Id int `fits:"ID"` 67 X float64 `fits:"x"` 68 Y float64 `fits:"y"` 69 }{} 70 // using a map 71 yy := make(map[string]interface{}) 72 73 rows, err = table.Read(0, nrows) 74 if err != nil { 75 panic(err) 76 } 77 defer rows.Close() 78 for rows.Next() { 79 err = rows.Scan(&xx) 80 if err != nil { 81 panic(err) 82 } 83 fmt.Printf(">>> %v\n", xx) 84 85 err = rows.Scan(&yy) 86 if err != nil { 87 panic(err) 88 } 89 fmt.Printf(">>> %v\n", yy) 90 } 91 err = rows.Err() 92 if err != nil { panic(err) } 93 94 } 95 96 ``` 97 98 ## TODO 99 100 - ``[DONE]`` add support for writing tables from structs 101 - ``[DONE]`` add support for writing tables from maps 102 - ``[DONE]`` add support for variable length array 103 - provide benchmarks _wrt_ ``CFITSIO`` 104 - add support for `TUNITn` 105 - add support for `TSCALn` 106 - add suport for `TDIMn` 107 - add support for (fast, low-level) copy of `FITS` tables 108