IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 28989


Ignore:
Timestamp:
Aug 20, 2010, 11:04:39 AM (16 years ago)
Author:
eugene
Message:

updates from trunk

Location:
branches/eam_branches/ipp-20100621/Ohana/src/opihi
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20100621/Ohana/src/opihi/dvo/ImageSelection.c

    r27435 r28989  
    3838/* free loaded images */
    3939void FreeImageSelection () {
    40   if (image != NULL) free (image);
     40  if (image != NULL) FreeImages(image);
    4141  if (subset != NULL) free (subset);
    4242  image = NULL;
     
    4545}
    4646
    47 Image *MatchImage (unsigned int time, short int source) {
     47Image *MatchImage (unsigned int time, short int source, unsigned int imageID) {
    4848
    4949  int m;
    5050
    51   m = match_image_subset (image, subset, Nsubset, time, source);
     51  if ((imageID != 0) && (imageID < Nimage)) {
     52    m = (int) imageID - 1;
     53  } else {
     54    m = match_image_subset (image, subset, Nsubset, time, source);
     55  }
    5256  if (m == -1) return (NULL);
    5357  if (!FindMosaicForImage (image, Nimage, m)) return (NULL);
  • branches/eam_branches/ipp-20100621/Ohana/src/opihi/dvo/LoadImages.c

    r28723 r28989  
    11# include "dvoshell.h"
     2
     3// XXX: Maybe make this a command line option
     4int dvoUseImageCache = 1;
     5
     6static char *lastFilename = NULL;
     7static time_t lastModified = 0;
     8static Image *imageCache = NULL;
     9static off_t cacheNimage = 0;
     10
     11static time_t getLastModified(char *filename);
    212
    313Image *LoadImages (off_t *Nimage) {
     
    1222  catdir = GetCATDIR ();
    1323  sprintf (filename, "%s/Images.dat", catdir);
     24
     25  if (lastFilename) {
     26    if (dvoUseImageCache && !strcmp(lastFilename, filename)) {
     27      // Make sure the file hasn't changed since we loaded it
     28      if (getLastModified(filename) == lastModified) {
     29        *Nimage = cacheNimage;
     30        return  imageCache;
     31      }
     32    }
     33    free(lastFilename);
     34    lastFilename = NULL;
     35    free(imageCache);
     36    imageCache = NULL;
     37    cacheNimage = 0;
     38    lastModified = 0;
     39  }
     40
    1441
    1542  gfits_db_init (&db);
     
    4067  if (!image) {
    4168    fprintf (stderr, "ERROR: failed to read images\n");
    42     exit (2);
     69    return (NULL);
     70  }
     71  if (dvoUseImageCache && image) {
     72    cacheNimage = *Nimage;
     73    imageCache = image;
     74    lastFilename = strdup(filename);
     75    lastModified = getLastModified(filename);
    4376  }
    4477  return (image);
    4578}
     79
     80static time_t getLastModified(char *filename) {
     81  struct stat statbuf;
     82  if (!stat(filename, &statbuf)) {
     83    return statbuf.st_mtime;
     84  } else {
     85    return 0;
     86  }
     87}
     88
     89void FreeImages(Image *images) {
     90  if (!dvoUseImageCache && (images != NULL)) {
     91    free(images);
     92  } else {
     93    // defer free until next LoadImages with a different or modified Images.dat
     94  }
     95}
     96
  • branches/eam_branches/ipp-20100621/Ohana/src/opihi/dvo/dbExtractMeasures.c

    r28213 r28989  
    358358        ra  = average[0].R - measure[0].dR / 3600.0;
    359359        dec = average[0].D - measure[0].dD / 3600.0;
    360         image = MatchImage (measure[0].t, measure[0].photcode);
     360        image = MatchImage (measure[0].t, measure[0].photcode, measure[0].imageID);
    361361        if (image == NULL) break;
    362362        RD_to_XY (&x, &y, ra, dec, &image[0].coords);
     
    374374        ra  = average[0].R - measure[0].dR / 3600.0;
    375375        dec = average[0].D - measure[0].dD / 3600.0;
    376         image = MatchImage (measure[0].t, measure[0].photcode);
     376        image = MatchImage (measure[0].t, measure[0].photcode, measure[0].imageID);
    377377        if (image == NULL) break;
    378378        RD_to_XY (&x, &y, ra, dec, &image[0].coords);
     
    440440      value.Flt = measure[0].extNsigma;
    441441      break;
     442    case MEAS_EXTERN_ID: /* OK */
     443      {
     444        Image *image;
     445        image = MatchImage (measure[0].t, measure[0].photcode, measure[0].imageID);
     446        if (image == NULL) break;
     447        value.Int = image->externID;
     448      }
     449      break;
    442450
    443451      // add the star/galaxy sep --
  • branches/eam_branches/ipp-20100621/Ohana/src/opihi/dvo/dbFields.c

    r27587 r28989  
    212212  if (!strcasecmp (fieldName, "SKY"))            ESCAPE (MEAS_SKY,            MAG_NONE, OPIHI_FLT);
    213213  if (!strcasecmp (fieldName, "SKY_ERR"))        ESCAPE (MEAS_dSKY,           MAG_NONE, OPIHI_FLT);
     214  if (!strcasecmp (fieldName, "externID"))       ESCAPE (MEAS_EXTERN_ID,      MAG_NONE, OPIHI_INT);
    214215
    215216  // for words that don't parse, try a photcode
  • branches/eam_branches/ipp-20100621/Ohana/src/opihi/dvo/gimages.c

    r27435 r28989  
    235235    sprintf (name, "IMAGEname:%d", Nfound);
    236236    set_str_variable (name, image[i].name);
     237    sprintf (name, "IMAGEphotcode:%d", Nfound);
     238    set_int_variable (name, image[i].photcode);
    237239    Nfound ++;
    238240    free (date);
     
    243245  set_int_variable ("IMAGEccd:n", Nfound);
    244246  set_int_variable ("IMAGEname:n", Nfound);
    245 
    246   free (image);
     247  set_int_variable ("IMAGEphotcode:n", Nfound);
     248
     249  FreeImages (image);
    247250  free (subset);
    248251
  • branches/eam_branches/ipp-20100621/Ohana/src/opihi/dvo/images.c

    r27530 r28989  
    319319  free (Xvec.elements.Flt);
    320320  free (Yvec.elements.Flt);
    321   free (image);
     321  FreeImages (image);
    322322  return (TRUE);
    323323
  • branches/eam_branches/ipp-20100621/Ohana/src/opihi/dvo/imdense.c

    r27435 r28989  
    7070  free (Xvec.elements.Flt);
    7171  free (Yvec.elements.Flt);
    72   free (image);
     72  FreeImages (image);
    7373  return (TRUE);
    7474
  • branches/eam_branches/ipp-20100621/Ohana/src/opihi/dvo/imextract.c

    r27587 r28989  
    137137
    138138  // free (subset);
    139   free (image);
     139  FreeImages (image);
    140140
    141141  if (vec) free (vec);
  • branches/eam_branches/ipp-20100621/Ohana/src/opihi/dvo/mextract.c

    r28241 r28989  
    8888  mosaicMode = FALSE;
    8989  for (i = 0; !loadImages && (i < Nfields); i++) {
    90     if (fields[i].ID == MEAS_XCCD) loadImages = TRUE;
    91     if (fields[i].ID == MEAS_YCCD) loadImages = TRUE;
     90    if (fields[i].ID == MEAS_XCCD) loadImages = TRUE;   // Are these still needed? Xccd and Yccd are in measurement
     91    if (fields[i].ID == MEAS_YCCD) loadImages = TRUE;   // and dbExtractMeasures doesn't look at the image for these
    9292    if (fields[i].ID == MEAS_XMOSAIC) loadImages = mosaicMode = TRUE;
    9393    if (fields[i].ID == MEAS_YMOSAIC) loadImages = mosaicMode = TRUE;
     94    if (fields[i].ID == MEAS_EXTERN_ID) loadImages = mosaicMode = TRUE;
    9495  }
    9596  if (loadImages && !SetImageSelection (mosaicMode, selection)) goto escape;
     
    305306    gprint (GP_ERR, "  catID : catalog ID (32 bit)\n");
    306307    gprint (GP_ERR, "  imageID : ID of source image (32 bit)\n");
     308    gprint (GP_ERR, "  externID : externID of source image (32 bit)\n");
    307309    return (FALSE);
    308310  }
  • branches/eam_branches/ipp-20100621/Ohana/src/opihi/dvo/photometry.c

    r27587 r28989  
    11781178      ra  = average[0].R - measure[0].dR / 3600.0;
    11791179      dec = average[0].D - measure[0].dD / 3600.0;
    1180       image = MatchImage (measure[0].t, measure[0].photcode);
     1180      image = MatchImage (measure[0].t, measure[0].photcode, measure[0].imageID);
    11811181      if (image == NULL) break;
    11821182      RD_to_XY (&x, &y, ra, dec, &image[0].coords);
     
    11911191      ra  = average[0].R - measure[0].dR / 3600.0;
    11921192      dec = average[0].D - measure[0].dD / 3600.0;
    1193       image = MatchImage (measure[0].t, measure[0].photcode);
     1193      image = MatchImage (measure[0].t, measure[0].photcode, measure[0].imageID);
    11941194      if (image == NULL) break;
    11951195      RD_to_XY (&x, &y, ra, dec, &image[0].coords);
  • branches/eam_branches/ipp-20100621/Ohana/src/opihi/include/dvoshell.h

    r27594 r28989  
    121121      MEAS_CR_NSIGMA,
    122122      MEAS_EXT_NSIGMA,
     123      MEAS_EXTERN_ID,
    123124};
    124125
     
    301302int           InitPhotcodes         PROTO((void));
    302303Image        *LoadImages            PROTO((off_t *Nimage));
    303 Image        *MatchImage            PROTO((unsigned int time, short int source));
     304void          FreeImages            PROTO((Image *images));
     305Image        *MatchImage            PROTO((unsigned int time, short int source, unsigned int imageID));
    304306Coords       *MatchMosaic           PROTO((unsigned int time, short int source));
    305307int           Quality               PROTO((Measure *measure, int IsDophot));
Note: See TracChangeset for help on using the changeset viewer.