IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 35263


Ignore:
Timestamp:
Mar 7, 2013, 9:51:07 AM (13 years ago)
Author:
eugene
Message:

merge changes from eam_branches/ipp-20130306: addstar now can block against duplicate image IDs; mextract, mmatch now use a subset of image metadata instead of the whole table

Location:
trunk/Ohana
Files:
20 edited
4 copied

Legend:

Unmodified
Added
Removed
  • trunk/Ohana

  • trunk/Ohana/src/addstar/Makefile

    r34405 r35263  
    9090$(SRC)/GetFileMode.$(ARCH).o \
    9191$(SRC)/ReadImageHeader.$(ARCH).o \
     92$(SRC)/ImageIndex.$(ARCH).o \
    9293$(SRC)/UpdateImageIDs.$(ARCH).o \
    9394$(SRC)/update_coords.$(ARCH).o \
     
    207208$(SRC)/ReadStarsTEXT.$(ARCH).o \
    208209$(SRC)/ReadStarsSDSS.$(ARCH).o \
     210$(SRC)/ImageIndex.$(ARCH).o \
    209211$(SRC)/UpdateImageIDs.$(ARCH).o \
    210212$(SRC)/FilterStars.$(ARCH).o \
  • trunk/Ohana/src/addstar/include/addstar.h

    r34405 r35263  
    5656  char *refcat;
    5757} DVO_DATA;
     58
     59# define IDTYPE int
     60
     61typedef struct {
     62  IDTYPE Nimage;
     63  IDTYPE minID;
     64  IDTYPE maxID;
     65  IDTYPE range;
     66  IDTYPE *imageID;
     67  IDTYPE *externID;
     68  char *found;
     69} ImageIndex;
    5870
    5971typedef struct sockaddr_in SockAddress;
     
    275287int UpdateImageIDs (Stars *stars, unsigned int Nstars, Image *images, off_t Nimages);
    276288
     289int CheckDuplicateImageIDs (Image *images, off_t Nimages);
     290int ImageIndexFileInit ();
     291
    277292int LoadDataSDSS (FILE *f, char *file, Image **images, off_t *nvalid, Stars **stars, unsigned int *Nstars, Header **headers, off_t *extsize, HeaderSet *headerSets, off_t Nimages);
    278293int LoadDataPMM (FILE *f, char *file, Image **images, off_t *nvalid, Stars **stars, unsigned int *Nstars);
  • trunk/Ohana/src/addstar/src/UpdateImageIDs.c

    r28248 r35263  
    1818    if (VERBOSE) fprintf (stderr, "can't find %s, creating a new one\n", ImageCat);
    1919    dvo_image_create (&db, GetZeroPoint());
    20     isEmpty = TRUE;
     20    ImageIndexFileInit ();
     21  isEmpty = TRUE;
    2122  } else {
    2223    /* position to start of file */
     
    5152  }
    5253
     54  // set and update the imageID sequence
     55  // the file holding the index is created above if this is an empty db
     56  CheckDuplicateImageIDs (images, Nimages);
     57
    5358  imageID += Nimages;
    5459  status = gfits_modify (&db.header, "IMAGEID", "%u", 1, imageID);
  • trunk/Ohana/src/addstar/test/simple.dvo

    r34405 r35263  
    5252  exec mkcmf test.in.txt test.cmf -date 2008/1/1 -time 01:00:00 -radec $RA $DEC -type $1
    5353  if ($TAP_VERBOSE)
     54    echo exec addstar -D CATDIR catdir.test -D CAMERA simtest test.cmf -D CATFORMAT $2 -quick-airmass
    5455    exec addstar -D CATDIR catdir.test -D CAMERA simtest test.cmf -D CATFORMAT $2 -quick-airmass
    5556  else
     
    6869
    6970  for i 0 $testfields:n
     71    if ($TAP_VERBOSE) echo $testfields:$i
    7072    list name -split $testfields:$i
    7173    if ("$name:0" == "SKIP") continue
     
    337339  PSF_INST_FLUX     : SKIP # not ingested into DVO
    338340  PSF_INST_FLUX_SIG : SKIP # not ingested into DVO
    339   AP_MAG_STANDARD   : mag:aperinst # FAIL
     341  AP_MAG            : mag:aperinst # FAIL
    340342  AP_MAG_RAW        : SKIP # not ingested into DVO
    341343  AP_MAG_RADIUS     : SKIP # not ingested into DVO
     
    346348  PEAK_FLUX_AS_MAG  : SKIP # not ingested into DVO
    347349  SKY               : sky       
    348   SKY_SIG           : sky_err   
     350  SKY_SIGMA         : sky_err   
    349351  PSF_CHISQ         : psf_chisq
    350352  CR_NSIGMA         : cr_nsigma
  • trunk/Ohana/src/dvomerge/test/HostTable.dat

    r33963 r35263  
    11# Host Table for parallel DVO
    22# ID  Hostname  Catdir
    3    1  pikake    catdir.merge.p1
    4    2  pikake    catdir.merge.p2
    5    3  pikake    catdir.merge.p3
     3   1  localhost    catdir.merge.p1
     4   2  localhost    catdir.merge.p2
     5   3  localhost    catdir.merge.p3
  • trunk/Ohana/src/libdvo/Makefile

    r34260 r35263  
    9898$(SRC)/LoadImages.$(ARCH).o             \
    9999$(SRC)/ImageSelection.$(ARCH).o         \
     100$(SRC)/ImageMetadataSelection.$(ARCH).o \
     101$(SRC)/ImageMetadata.$(ARCH).o \
    100102$(SRC)/ImageOps.$(ARCH).o               \
    101103$(SRC)/match_image.$(ARCH).o            \
  • trunk/Ohana/src/libdvo/include/dvodb.h

    r35237 r35263  
    298298} dbValue;
    299299
     300typedef struct {
     301  double crval1;
     302  double crval2;
     303  unsigned int imageID;
     304  unsigned int externID;
     305  unsigned int expname;
     306  float Mcal;
     307  float secz;
     308  float Xcenter;
     309  float Ycenter;
     310} ImageMetadata;
     311
    300312Image        *LoadImagesDVO         PROTO((off_t *Nimage));
    301313void          FreeImagesDVO         PROTO((Image *images));
     
    346358int dbExtractMeasuresInitAve (void);
    347359int dbExtractMeasuresInitMeas (void);
    348 int dbExtractMeasuresInit (void);
     360int dbExtractMeasuresInit (int isRemoteClient);
    349361
    350362int dbExtractAveragesInitTransform (CoordTransformSystem target);
     
    363375#include "get_graphdata.h"
    364376
     377ImageMetadata *ImageMetadataLoad(char *filename, off_t *nimage);
     378int ImageMetadataSave(char *filename, Image *image, off_t Nimage);
     379
     380int SetImageMetadataSelection (char *filename);
     381void FreeImageMetadataSelection ();
     382ImageMetadata *MatchImageMetadataDVO (unsigned int imageID);
     383Coords *MatchMosaicMetadata (unsigned int imageID);
     384off_t match_image_by_ID (ImageMetadata *image, off_t Nimage, unsigned int ID);
     385void sort_image_metadata (ImageMetadata *image, off_t Nimage);
     386
    365387# endif
  • trunk/Ohana/src/libdvo/src/ImageSelection.c

    r35260 r35263  
    6868}
    6969
     70Image *MatchImageDVO_old (unsigned int time, short int source, unsigned int imageID) {
     71
     72  int m = -1;
     73
     74  if ((imageID != 0) && (imageID < Nimage)) {
     75    // imageID is in range for the array of images. If the table is still in order and
     76    // no images have been deleted the index of the image we are looking for will be imageID - 1
     77    // If this is the case, we have it. Otherwise we'll have to go search for it below
     78    int guess = (int) imageID - 1;
     79    if (image[guess].imageID == imageID) {
     80        m = guess;
     81    }
     82  }
     83  if (m == -1) {
     84    m = match_image_subset (image, subset, Nsubset, time, source);
     85  }
     86  if (m == -1) return (NULL);
     87  if (!FindMosaicForImage (image, Nimage, m)) return (NULL);
     88  return (&image[m]);
     89}
     90
    7091Coords *MatchMosaic (unsigned int time, short int source) {
    7192
  • trunk/Ohana/src/libdvo/src/dbExtractMeasures.c

    r35237 r35263  
    1414static CoordTransform *celestial_to_ecliptic = NULL;
    1515
     16static int REMOTE_CLIENT = FALSE;
     17
    1618static int haveGalacticAve = FALSE;
    1719static double GLON_AVE = 0.0;
     
    3032static double ELAT_MEAS = 0.0;
    3133
    32 int dbExtractMeasuresInit () {
     34int dbExtractMeasuresInit (int isRemoteClient) {
     35  REMOTE_CLIENT = isRemoteClient;
    3336  GetTimeFormat (&TimeReference, &TimeFormat);
    3437  return (TRUE);
     
    335338      break;
    336339    case MEAS_MEAN_AIRMASS: /* OK */
    337       {
     340      if (REMOTE_CLIENT) {
     341        ImageMetadata *image = MatchImageMetadataDVO (measure[0].imageID);
     342        if (image == NULL) break;
     343        value.Flt = image[0].secz;
     344      } else {
    338345        Image *image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID);
    339346        if (image == NULL) break;
    340347        value.Flt = image[0].secz;
    341         break;
    342       }
     348      }
     349      break;
    343350    case MEAS_AZ: /* OK */
    344351      value.Flt = measure[0].az;
     
    461468      ra  = average[0].R - measure[0].dR / 3600.0;
    462469      dec = average[0].D - measure[0].dD / 3600.0;
    463       mosaic = MatchMosaic (measure[0].t, measure[0].photcode);
     470      mosaic = MatchMosaicMetadata (measure[0].imageID);
    464471      if (mosaic == NULL) break;
    465472      RD_to_XY (&x, &y, ra, dec, mosaic);
     
    515522      break;
    516523    case MEAS_EXTERN_ID: /* OK */
    517       {
    518         Image *image;
    519         image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID);
     524      if (REMOTE_CLIENT) {
     525        ImageMetadata *image = MatchImageMetadataDVO (measure[0].imageID);
    520526        if (image == NULL) break;
    521527        value.Int = image->externID;
     528      } else {
     529        Image *image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID);
     530        if (image == NULL) break;
     531        value.Int = image[0].externID;
    522532      }
    523533      break;
    524534
    525535    case MEAS_EXPNAME_AS_INT:
    526       {
    527         Image *image;
    528         image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID);
     536      if (REMOTE_CLIENT) {
     537        ImageMetadata *image = MatchImageMetadataDVO (measure[0].imageID);
     538        if (image == NULL) break;
     539        value.Int = image->expname;
     540      } else {
     541        Image *image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID);
    529542        if (image == NULL) break;
    530543        // XXX very crude: if this matches oNNNNgNNNNo, then convert to an int
     
    544557    case MEAS_FLAT: /* OK */
    545558      // flat = measure.Mcal - image.Mcal
    546       {
    547         Image *image;
    548         image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID);
     559      if (REMOTE_CLIENT) {
     560        ImageMetadata *image = MatchImageMetadataDVO (measure[0].imageID);
    549561        if (image == NULL) break;
    550562        value.Flt = measure[0].Mcal - image[0].Mcal;
    551       }
    552       break;
    553 
     563      } else {
     564        Image *image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID);
     565        if (image == NULL) break;
     566        value.Flt = measure[0].Mcal - image[0].Mcal;
     567      }
     568      break;
     569
     570      // we have measure[0].Xccd,Yccd and image[0].NX,NY.  Find the distance to the center
    554571    case MEAS_CENTER_OFFSET: /* OK */
    555       {
    556         Image *image;
    557         image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID);
    558         if (image == NULL) break;
    559        
    560         // we have measure[0].Xccd,Yccd and image[0].NX,NY.  Find the distance to the center
    561 
     572      if (REMOTE_CLIENT) {
     573        ImageMetadata *image = MatchImageMetadataDVO (measure[0].imageID);
     574        if (image == NULL) break;
     575        float Xcenter = image[0].Xcenter;
     576        float Ycenter = image[0].Ycenter;
     577        float distance = hypot (measure[0].Xccd - Xcenter, measure[0].Yccd - Ycenter);
     578        value.Flt = distance;
     579      } else {
     580        Image *image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID);
     581        if (image == NULL) break;
    562582        // XXX we may hypotetically have images with -NX to +NX here (eg, projection center), but
    563583        // we do not get a detection from that type of image
  • trunk/Ohana/src/libdvo/src/dvosorts.c

    r27817 r35263  
    2323
    2424  OHANA_SORT (N, COMPARE, SWAPFUNC);
     25
     26# undef SWAPFUNC
     27# undef COMPARE
     28
     29}
     30
     31/* sort ImageMetadata array by image[i].imageID */
     32void sort_image_metadata (ImageMetadata *image, off_t Nimage) {
     33
     34# define SWAPFUNC(A,B){ ImageMetadata tmp; tmp = image[A]; image[A] = image[B]; image[B] = tmp; }
     35# define COMPARE(A,B)(image[A].imageID < image[B].imageID)
     36
     37  OHANA_SORT (Nimage, COMPARE, SWAPFUNC);
    2538
    2639# undef SWAPFUNC
  • trunk/Ohana/src/libohana/src

  • trunk/Ohana/src/opihi

  • trunk/Ohana/src/opihi/cmd.astro

    • Property svn:mergeinfo changed (with no actual effect on merging)
  • trunk/Ohana/src/opihi/cmd.data

    • Property svn:mergeinfo changed (with no actual effect on merging)
  • trunk/Ohana/src/opihi/dvo/dvo_client.c

    r33963 r35263  
    3939    remove_argument (N, argc, argv);
    4040  }
     41  if (!HOST_ID) {
     42    fprintf (stderr, "ERROR: dvo_client requires a -hostID value\n");
     43    exit (3);
     44  }
    4145
    4246  HOSTDIR = NULL;
     
    4549    HOSTDIR = strcreate (argv[N]);;
    4650    remove_argument (N, argc, argv);
     51  }
     52  if (!HOSTDIR) {
     53    fprintf (stderr, "ERROR: dvo_client requires a -hostdir value\n");
     54    exit (3);
    4755  }
    4856
  • trunk/Ohana/src/opihi/dvo/mextract.c

    r34749 r35263  
    11# include "dvoshell.h"
     2
     3int field_needs_images (dbField *field) {
     4  // the image subset table requires imageID for all fields
     5
     6    if (!MEASURE_HAS_XCCD) {
     7      // I'm keeping this code because it gives a way of handling dvo dbs that don't have
     8      // measure.xccd if we need it
     9      if (field->ID == MEAS_XCCD) return TRUE; // full astrometry per chip (120 bytes!)
     10      if (field->ID == MEAS_YCCD) return TRUE; // full astrometry per chip (120 bytes!)
     11    }
     12    if (field->ID == MEAS_XMOSAIC)        return TRUE; // crval1,2 only
     13    if (field->ID == MEAS_YMOSAIC)        return TRUE; // crval1,2 only
     14    if (field->ID == MEAS_EXTERN_ID)      return TRUE; // externID
     15    if (field->ID == MEAS_FLAT)           return TRUE; // Mcal
     16    if (field->ID == MEAS_CENTER_OFFSET)  return TRUE; // 0.5*NX, 0.5*NY
     17    if (field->ID == MEAS_EXPNAME_AS_INT) return TRUE; // expname (or as int)
     18    if (field->ID == MEAS_AIRMASS)        return TRUE; // airmass
     19    return FALSE;
     20}
    221
    322int mextract (int argc, char **argv) {
     
    524  off_t i, j, k, m; // used for counter averages and measures
    625  int n, N, Npts, NPTS, last, next, state, Nfields, Nreturn, Ncstack, Nstack;
    7   int Nsecfilt, VERBOSE, loadImages, mosaicMode;
     26  int Nsecfilt, VERBOSE, loadImages;
    827  char **cstack, name[1024];
    928  dbValue *values;
     
    3352    remove_argument (N, &argc, argv);
    3453    VERBOSE = TRUE;
     54  }
     55
     56  char *imageMetadataFile = FALSE;
     57  if ((N = get_argument (argc, argv, "-image-metadata"))) {
     58    remove_argument (N, &argc, argv);
     59    imageMetadataFile = strcreate (argv[N]);
     60    remove_argument (N, &argc, argv);
    3561  }
    3662
     
    6692
    6793  // init locally static variables (time refs)
    68   dbExtractMeasuresInit();
     94  // HOST_ID tells library if operation is on remote client or not
     95  dbExtractMeasuresInit(HOST_ID);
    6996
    7097  // command-line is of the form: mextract field,field, field [where (field op value)...]
     
    106133  if ((skylist = SelectRegions (selection)) == NULL) goto escape;
    107134
     135  // load image data if needed (for fields listed below)
     136  loadImages = FALSE;
     137  for (i = 0; !loadImages && (i < Nfields); i++) {
     138    loadImages = field_needs_images (&fields[i]);
     139  }
     140   
    108141  // this does all the work of re-packaging the command, calling it on the remote machines, then loading in the results
    109142  if (PARALLEL && !HOST_ID) {
    110     int status = HostTableParallelOps (argc, argv, RESULT_FILE, TRUE, 0, VERBOSE);
     143
     144    // Image Metadata for remote queries:
     145    // 1) figure out if we need any image metadata
     146    // 2) load the images and generate a subset table with just the fields of interest
     147    // 3) add the input subset filename to the dvo_client command
     148
     149    // allocate the temp array and copy all but (RA) (DEC)
     150    int targc = 0;
     151    char **targv = NULL;
     152    ALLOCATE (targv, char *, argc);
     153    for (i = 0; i < argc; i++) {
     154      targv[targc] = strcreate (argv[i]);
     155      targc ++;
     156    }
     157
     158    if (loadImages) {
     159      Image *image;
     160      off_t Nimage;
     161      if ((image = LoadImagesDVO (&Nimage)) == NULL) goto escape;
     162
     163      char *filename = abspath("image.metadata.fits", DVO_MAX_PATH);
     164      ImageMetadataSave (filename, image, Nimage);
     165
     166      REALLOCATE (targv, char *, targc + 2);
     167      targv[targc+0] = strcreate ("-image-metadata");
     168      targv[targc+1] = strcreate (filename);
     169      targc += 2;
     170    }
     171
     172    // call the remote client
     173    int status = HostTableParallelOps (targc, targv, RESULT_FILE, TRUE, 0, VERBOSE);
    111174
    112175    dbFreeFields (fields, Nfields);
     
    116179    dvo_catalog_free (&catalog);
    117180
     181    // free up targv
     182    for (i = 0; i < targc; i++) {
     183      free (targv[i]);
     184    }
     185    free (targv);
     186
    118187    return status;
    119188  }
    120189
    121   // load image data if needed (for fields listed below)
    122   loadImages = FALSE;
    123   mosaicMode = FALSE;
    124   for (i = 0; !loadImages && (i < Nfields); i++) {
    125     if (!MEASURE_HAS_XCCD) {
    126       // I'm keeping this code because it gives a way of handling dvo dbs that don't have
    127       // measure.xccd if we need it
    128       if (fields[i].ID == MEAS_XCCD) loadImages = TRUE;
    129       if (fields[i].ID == MEAS_YCCD) loadImages = TRUE;
    130     }
    131     if (fields[i].ID == MEAS_XMOSAIC)       loadImages = mosaicMode = TRUE;
    132     if (fields[i].ID == MEAS_YMOSAIC)       loadImages = mosaicMode = TRUE;
    133     if (fields[i].ID == MEAS_EXTERN_ID)     loadImages = mosaicMode = TRUE;
    134     if (fields[i].ID == MEAS_FLAT)          loadImages = mosaicMode = TRUE;
    135     if (fields[i].ID == MEAS_CENTER_OFFSET) loadImages = mosaicMode = TRUE;
    136   }
    137   if (loadImages && !SetImageSelection (mosaicMode, selection)) goto escape;
     190  if (loadImages) {
     191    if (HOST_ID) {
     192      if (!SetImageMetadataSelection (imageMetadataFile)) goto escape;
     193    } else {
     194      if (!SetImageSelection (TRUE, selection)) goto escape;
     195    }
     196  }
    138197
    139198  /* create storage vector */
     
    251310  free (stack);
    252311  FreeImageSelection ();
     312  FreeImageMetadataSelection ();
    253313  SkyListFree (skylist);
    254314  FreeSkyRegionSelection (selection);
     
    264324  free (stack);
    265325  FreeImageSelection ();
     326  FreeImageMetadataSelection ();
    266327  SkyListFree (skylist);
    267328  FreeSkyRegionSelection (selection);
  • trunk/Ohana/src/opihi/dvo/mmatch.c

    r34749 r35263  
    11# include "dvoshell.h"
     2int field_needs_images (dbField *field);
    23
    34/* This function uses the 'find_match' algorithm to select the objects of interest.
     
    4849  }
    4950
     51  // load info about the images from a reduced-size file
     52  char *imageMetadataFile = FALSE;
     53  if ((N = get_argument (argc, argv, "-image-metadata"))) {
     54    remove_argument (N, &argc, argv);
     55    imageMetadataFile = strcreate (argv[N]);
     56    remove_argument (N, &argc, argv);
     57  }
     58
    5059  int PARALLEL = FALSE;
    5160  if ((N = get_argument (argc, argv, "-parallel"))) {
     
    7281
    7382  // init locally static variables (time refs)
    74   dbExtractMeasuresInit();
     83  // HOST_ID tells library if operation is on remote client or not
     84  dbExtractMeasuresInit(HOST_ID);
     85
     86  // parse the fields to be extracted and returned
     87  int first = 3;
     88  if (CoordsFile) {
     89    first = 1;
     90  }
     91  fields = dbCmdlineFields (argc-first, &argv[first], DVO_TABLE_MEASURE, &last, &Nfields);
     92  if (fields == NULL) goto help;
     93  if ((Nfields == 0) || (last != argc - first)) {
     94    dbFreeFields (fields, Nfields);
     95    dvo_catalog_free (&catalog);
     96    goto help;
     97  }
     98
     99  // load image data if needed (for fields listed below)
     100  int loadImages = FALSE;
     101  for (i = 0; !loadImages && (i < Nfields); i++) {
     102    loadImages = field_needs_images (&fields[i]);
     103  }
    75104
    76105  // this does all the work of re-packaging the command, calling it on the remote machines, then loading in the results
     
    122151      targc += 2;
    123152    }     
     153
     154    if (loadImages) {
     155      Image *image;
     156      off_t Nimage;
     157      if ((image = LoadImagesDVO (&Nimage)) == NULL) goto escape;
     158
     159      char *filename = abspath("image.metadata.fits", DVO_MAX_PATH);
     160      ImageMetadataSave (filename, image, Nimage);
     161
     162      REALLOCATE (targv, char *, targc + 2);
     163      targv[targc+0] = strcreate ("-image-metadata");
     164      targv[targc+1] = strcreate (filename);
     165      targc += 2;
     166    }
    124167
    125168    // call the remote client
     
    153196  remove_argument (1, &argc, argv);
    154197
    155   // parse the fields to be extracted and returned
    156   fields = dbCmdlineFields (argc, argv, DVO_TABLE_MEASURE, &last, &Nfields);
    157   if (fields == NULL) goto help;
    158   if ((Nfields == 0) || (last != argc)) {
    159     dbFreeFields (fields, Nfields);
    160     dvo_catalog_free (&catalog);
    161     goto help;
    162   }
    163 
    164   // load image data if needed (for fields listed below)
    165   int loadImages = FALSE;
    166   int mosaicMode = FALSE;
    167   for (i = 0; !loadImages && (i < Nfields); i++) {
    168     if (!MEASURE_HAS_XCCD) {
    169       // I'm keeping this code because it gives a way of handling dvo dbs that don't have
    170       // measure.xccd if we need it
    171       if (fields[i].ID == MEAS_XCCD) loadImages = TRUE;
    172       if (fields[i].ID == MEAS_YCCD) loadImages = TRUE;
    173     }
    174     if (fields[i].ID == MEAS_XMOSAIC)       loadImages = mosaicMode = TRUE;
    175     if (fields[i].ID == MEAS_YMOSAIC)       loadImages = mosaicMode = TRUE;
    176     if (fields[i].ID == MEAS_EXTERN_ID)     loadImages = mosaicMode = TRUE;
    177     if (fields[i].ID == MEAS_FLAT)          loadImages = mosaicMode = TRUE;
    178     if (fields[i].ID == MEAS_CENTER_OFFSET) loadImages = mosaicMode = TRUE;
    179   }
    180 
    181198  // use the whole sky (since we select random points around the sky)
    182199  SkyRegionSelection selection;
    183200  selection.useDisplay = FALSE;
    184201  selection.useSkyregion = FALSE;
    185   if (loadImages && !SetImageSelection (mosaicMode, &selection)) goto escape;
     202
     203  if (loadImages) {
     204    if (HOST_ID) {
     205      if (!SetImageMetadataSelection (imageMetadataFile)) goto escape;
     206    } else {
     207      if (!SetImageSelection (TRUE, &selection)) goto escape;
     208    }
     209  }
    186210
    187211  /* load regions which contain all supplied RA,DEC coordinates */
     
    318342  if (invec) FreeVectorArray (invec, Ninvec);
    319343  dbFreeFields (fields, Nfields);
     344  FreeImageSelection ();
     345  FreeImageMetadataSelection ();
    320346  SkyListFree (skylist);
    321347  return (TRUE);
     
    326352  if (invec) FreeVectorArray (invec, Ninvec);
    327353  dbFreeFields (fields, Nfields);
     354  FreeImageSelection ();
     355  FreeImageMetadataSelection ();
    328356  SkyListFree (skylist);
    329357  return (FALSE);
  • trunk/Ohana/src/opihi/dvo/mmextract.c

    r30612 r35263  
    11# include "dvoshell.h"
     2int field_needs_images (dbField *field);
    23
    34int mmextract (int argc, char **argv) {
     
    78  int Nfields, Nreturn, Nreturn_base, Ncstack1, Ncstack2, Nstack1, Nstack2;
    89  int Nwhere, Iwhere, Nmatch, Imatch, NTABLE, Nt1, Nt2, n1, n2;
    9   int Nsecfilt, VERBOSE, loadImages, mosaicMode;
     10  int Nsecfilt, VERBOSE, loadImages;
    1011  char **cstack1, **cstack2, name1[1024], name2[1024];
    1112  dbValue *values, **table1, **table2;
     
    4546 
    4647  // init locally static variables (time refs)
    47   dbExtractMeasuresInit();
     48  dbExtractMeasuresInit(HOST_ID);
    4849
    4950  // parse skyregion options
     
    137138  // load image data if needed (for fields listed below)
    138139  loadImages = FALSE;
    139   mosaicMode = FALSE;
    140140  for (i = 0; !loadImages && (i < Nfields); i++) {
    141     if (fields[i].ID == MEAS_XCCD) loadImages = TRUE;
    142     if (fields[i].ID == MEAS_YCCD) loadImages = TRUE;
    143     if (fields[i].ID == MEAS_XMOSAIC) loadImages = mosaicMode = TRUE;
    144     if (fields[i].ID == MEAS_YMOSAIC) loadImages = mosaicMode = TRUE;
    145   }
    146   if (loadImages && !SetImageSelection (mosaicMode, selection)) goto escape;
     141    loadImages = field_needs_images (&fields[i]);
     142  }
     143  if (loadImages && !SetImageSelection (TRUE, selection)) goto escape;
    147144
    148145  /* create storage vector */
  • trunk/Ohana/src/opihi/dvo/test/mmatch.sh

    r34464 r35263  
    1010  $Ro = 2.59
    1111  $Do = 1.23
    12   catdir /data/pikake.0/eugene/src/ipp-dev/Ohana/src/dvomerge/test/catdir.merge
     12  catdir catdir.merge
    1313  $Gname = g
    1414  $Rname = r
     
    2121  subset r_ave = $Rname  if (ra > $Ro - 0.1) && (ra > $Ro + 0.1) && (dec > $Do - 0.1) && (dec < $Do + 0.1)
    2222  vectors
    23   mmatch -v -parallel R D 1.0 RA DEC MAG PHOTCODE -index index
     23
     24  # mmatch -v -parallel R D 1.0 RA DEC MAG PHOTCODE -index index
     25  mmatch -v -parallel R D 1.0 RA DEC MAG PHOTCODE externID mean_airmass -index index
    2426
    2527  reindex g_ave_match = g_ave using index
Note: See TracChangeset for help on using the changeset viewer.