IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 37733


Ignore:
Timestamp:
Dec 10, 2014, 6:07:05 AM (12 years ago)
Author:
eugene
Message:

add discrete 2d fourier transform; add option to show table sizes and to read a partial table

Location:
branches/eam_branches/ipp-20140904/Ohana/src/opihi
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20140904/Ohana/src/opihi/cmd.data/Makefile

    r37630 r37733  
    3939$(SRC)/densify.$(ARCH).o        \
    4040$(SRC)/device.$(ARCH).o \
     41$(SRC)/dft2d.$(ARCH).o  \
    4142$(SRC)/dimendown.$(ARCH).o      \
    4243$(SRC)/dimenup.$(ARCH).o        \
  • branches/eam_branches/ipp-20140904/Ohana/src/opihi/cmd.data/dimenup.c

    r20936 r37733  
    2323    return (FALSE);
    2424  }
    25 
    26   gfits_free_matrix (&buf[0].matrix);
    27   gfits_free_header (&buf[0].header);
    28   CreateBuffer (buf, Nx, Ny, -32, 0.0, 1.0);
     25  ResetBuffer (buf, Nx, Ny, -32, 0.0, 1.0);
    2926
    3027  out = (float *) buf[0].matrix.buffer;
  • branches/eam_branches/ipp-20140904/Ohana/src/opihi/cmd.data/init.c

    r37630 r37733  
    3232int densify          PROTO((int, char **));
    3333int device           PROTO((int, char **));
     34int dft2d            PROTO((int, char **));
    3435int dimendown        PROTO((int, char **));
    3536int dimenup          PROTO((int, char **));
     
    196197  {1, "densify",      densify,          "create an image histogram from a set of vectors"},
    197198  {1, "device",       device,           "set / get current graphics device"},
     199  {1, "dft2d",        dft2d,            "2D discrete fourier transform"},
    198200  {1, "dimendown",    dimendown,        "convert image to vector"},
    199201  {1, "dimenup",      dimenup,          "convert vector to image"},
  • branches/eam_branches/ipp-20140904/Ohana/src/opihi/cmd.data/read_vectors.c

    r37580 r37733  
    55
    66void read_vectors_cleanup ();
     7int read_table_sizes (Header *header);
    78
    89int datafile (int argc, char **argv) {
     
    331332
    332333  off_t Nbytes;
    333   int i, j, N, Nextend, Ny, Binary, vecType, padIfShort;
    334   char type[16], ID[80], *CCDKeyword;
     334  int i, j, N, Ny, Binary, vecType;
     335  char type[16], ID[80];
    335336  FTable table;
    336337  Header header;
    337338  Vector **vec;
    338   int FITS_TRANSPOSE;
    339339
    340340  table.buffer = NULL;
    341341  header.buffer = NULL;
    342342
    343   FITS_TRANSPOSE = FALSE;
     343  int FITS_TRANSPOSE = FALSE;
    344344  if ((N = get_argument (argc, argv, "-transpose"))) {
    345345    remove_argument (N, &argc, argv);
     
    347347  }
    348348
    349   CCDKeyword = NULL;
     349  char *CCDKeyword = NULL;
    350350  if ((N = get_argument (argc, argv, "-keyword"))) {
    351351    remove_argument (N, &argc, argv);
     
    354354  }
    355355
    356   padIfShort = FALSE;
     356  int padIfShort = FALSE;
    357357  if ((N = get_argument (argc, argv, "-pad-if-short"))) {
    358358    remove_argument (N, &argc, argv);
     
    360360  }
    361361
    362   Nextend = -1;
     362  int getSizes = FALSE;
     363  if ((N = get_argument (argc, argv, "-sizes"))) {
     364    remove_argument (N, &argc, argv);
     365    getSizes = TRUE;
     366  }
     367
     368  int Nextend = -1;
    363369  if ((N = get_argument (argc, argv, "-extnum"))) {
    364370    remove_argument (N, &argc, argv);
    365371    Nextend = atoi (extname);
     372  }
     373
     374  int start = 0;
     375  int Nrows = -1; // -1 : read entire table
     376  if ((N = get_argument (argc, argv, "-range"))) {
     377    remove_argument (N, &argc, argv);
     378    start = atoi (argv[N]);
     379    remove_argument (N, &argc, argv);
     380    Nrows = atoi (argv[N]);
     381    remove_argument (N, &argc, argv);
    366382  }
    367383
     
    406422    }
    407423    if (!gfits_load_header (f, &header)) ESCAPE ("error reading header for extension %d\n", Nextend);
    408     if (!gfits_fread_ftable_data (f, &table, padIfShort)) ESCAPE ("error reading table for extension %d\n", Nextend);
    409 
     424
     425    if (getSizes) {
     426      read_table_sizes (&header);
     427      if (CCDKeyword != NULL) free (CCDKeyword);
     428      gfits_free_header (&header);
     429      return TRUE;
     430    }
     431
     432    if (Nrows == -1) {
     433      Nrows = header.Naxis[1] - start;
     434    }
     435    if (start < 0) ESCAPE ("invalid range: start < 0\n");
     436    if (start >= header.Naxis[1]) ESCAPE ("invalid range: start >= Ny (%d)\n", header.Naxis[1]);
     437    if (Nrows < 0) ESCAPE ("invalid range: Nrows < 0\n");
     438    if (start + Nrows > header.Naxis[1]) ESCAPE ("invalid range: start + Nrows > Ny (%d)\n", header.Naxis[1]);
     439
     440    // Ny = 100, start = 0, Nrows = -1 -> Nrows => 100
     441    // Ny = 100, start = 10, Nrows = 90
     442
     443    if (!gfits_fread_ftable_range (f, padIfShort, &table, start, Nrows)) ESCAPE ("error reading table for extension %d\n", Nextend);
    410444  } else {
    411445    if (CCDKeyword == NULL) {
     
    437471        continue;
    438472      }
    439       if (!gfits_fread_ftable_data (f, &table, padIfShort)) ESCAPE ("error reading table for extension\n");
     473
     474      if (Nrows == -1) {
     475        Nrows = header.Naxis[1] - start;
     476      }
     477      if (start < 0) ESCAPE ("invalid range: start < 0\n");
     478      if (start >= header.Naxis[1]) ESCAPE ("invalid range: start >= Ny (%d)\n", header.Naxis[1]);
     479      if (Nrows < 0) ESCAPE ("invalid range: Nrows < 0\n");
     480      if (start + Nrows > header.Naxis[1]) ESCAPE ("invalid range: start + Nrows > Ny (%d)\n", header.Naxis[1]);
     481
     482      if (!gfits_fread_ftable_range (f, padIfShort, &table, start, Nrows)) ESCAPE ("error reading table for extension %d\n", Nextend);
     483
     484      // if (!gfits_fread_ftable_data (f, &table, padIfShort)) ESCAPE ("error reading table for extension\n");
     485
    440486      break;
    441487    }
     
    546592  if (vec) free (vec);
    547593}
     594
     595// read -fits foo -sizes -- Nx, Ny, Nfields -> $table:Nx, $table:Ny, $table:$Nfields
     596// read -fits foo -fields
     597
     598int read_table_sizes (Header *header) {
     599 
     600  int Nfields;
     601
     602  gfits_scan (header, "TFIELDS", "%d", 1, &Nfields);
     603
     604  set_int_variable ("table:Nx", header->Naxis[0]);
     605  set_int_variable ("table:Nx", header->Naxis[0]);
     606  set_int_variable ("table:Nfields", Nfields);
     607
     608  return TRUE;
     609}
     610
  • branches/eam_branches/ipp-20140904/Ohana/src/opihi/include/dvomath.h

    r37049 r37733  
    187187int           ListBuffersToList     PROTO((char *name));
    188188int           CreateBuffer          PROTO((Buffer *buf, int Nx, int Ny, int bitpix, float bzero, float bscale));
     189int           ResetBuffer           PROTO((Buffer *buf, int Nx, int Ny, int bitpix, float bzero, float bscale));
    189190Buffer       *SelectBuffer          PROTO((char *name, int mode, int verbose));
    190191void          dump_buffers          PROTO((int n));  /* deprecated? */
  • branches/eam_branches/ipp-20140904/Ohana/src/opihi/lib.shell/BufferOps.c

    r33662 r37733  
    8888}
    8989
     90int ResetBuffer (Buffer *buf, int Nx, int Ny, int bitpix, float bzero, float bscale) {
     91
     92  gfits_free_matrix (&buf[0].matrix);
     93  gfits_free_header (&buf[0].header);
     94  CreateBuffer (buf, Nx, Ny, bitpix, bzero, bscale);
     95  return TRUE;
     96}
     97
    9098int CreateBuffer (Buffer *buf, int Nx, int Ny, int bitpix, float bzero, float bscale) {
    9199
Note: See TracChangeset for help on using the changeset viewer.