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