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