IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 35237 for trunk


Ignore:
Timestamp:
Mar 5, 2013, 2:33:50 PM (13 years ago)
Author:
eugene
Message:

merge changes from eam_branches/ipp-20130207

Location:
trunk/Ohana/src
Files:
24 edited
4 copied

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/delstar/Makefile

    r35107 r35237  
    2929$(SRC)/delete_imagename.$(ARCH).o \
    3030$(SRC)/delete_imagefile.$(ARCH).o \
     31$(SRC)/delete_duplicate_images.$(ARCH).o \
    3132$(SRC)/delete_image_photcodes.$(ARCH).o \
    3233$(SRC)/delete_photcodes.$(ARCH).o \
     
    4546$(SRC)/ConfigInit.$(ARCH).o       \
    4647$(SRC)/args.$(ARCH).o             \
     48$(SRC)/delete_duplicate_images.$(ARCH).o \
    4749$(SRC)/delete_photcodes.$(ARCH).o \
    4850$(SRC)/delete_photcodes_single.$(ARCH).o \
  • trunk/Ohana/src/delstar/include/delstar.h

    r35107 r35237  
    22# include <dvo.h>
    33# include <signal.h>
     4
     5// options for generating the IndexArray used to select images for deletion (delete_duplicate_images.c)
     6enum {NONE, EXTERN_ID, IMAGE_ID};
    47
    58typedef struct {
     
    1013  double Area, density, spacing;
    1114} CatStats;
     15
     16typedef struct {
     17  off_t minID;
     18  off_t maxID;
     19  off_t range;
     20  off_t *value;
     21} IndexArray;
    1222
    1323/* global variables set in parameter file */
     
    2838int    VERBOSE;
    2939int    VERBOSE2;
     40int    UPDATE;
     41int    IMAGE_DETAILS;
     42int    IMAGE_ONLY;
    3043int    ORPHAN;
    3144int    MISSED;
     
    4962
    5063int    MODE;
    51 enum {MODE_NONE, MODE_IMAGENAME, MODE_IMAGEFILE, MODE_TIME, MODE_ORPHAN, MODE_MISSED, MODE_PHOTCODES};
     64enum {MODE_NONE, MODE_IMAGENAME, MODE_IMAGEFILE, MODE_TIME, MODE_ORPHAN, MODE_MISSED, MODE_PHOTCODES, MODE_DUP_IMAGES};
    5265
    5366char DateKeyword[64], DateMode[64], UTKeyword[64], MJDKeyword[64], JDKeyword[64];
     
    101114int delete_image_photcodes (FITS_DB *db);
    102115int delete_photcodes_single (char *cptname);
     116
     117int delete_duplicate_images (int hostID, char *hostpath, FITS_DB *db);
     118int delete_duplicate_image_measures (int hostID, char *hostpath, IndexArray *imageID);
     119int delete_duplicate_image_measures_parallel (SkyList *sky);
     120int delete_duplicate_image_measures_catalog (Catalog *catalog, IndexArray *imageID);
     121
     122IndexArray *find_duplicates (Image *image, off_t Nimage);
     123IndexArray *make_index_array (Image *image, off_t Nimage, int mode);
     124
  • trunk/Ohana/src/delstar/src/args.c

    r35107 r35237  
    99  fprintf (stderr, "  delstar -orphan (region)\n");
    1010  fprintf (stderr, "  delstar -missed (region)\n\n");
     11  fprintf (stderr, "  delstar -photcodes (list) : delete by photcode\n\n");
     12  fprintf (stderr, "  delstar -dup-images : delete duplicate images (by externID)\n\n");
    1113  fprintf (stderr, "  optional flags:\n");
    1214  fprintf (stderr, "  -v               : verbose mode\n");
    1315  fprintf (stderr, "  -photcode (code) : restrict by photcode\n");
     16  fprintf (stderr, "  -update : apply changes (-dup-images only)\n");
     17  fprintf (stderr, "  -image-details : list info about the deleted images (-dup-images only)\n");
     18  fprintf (stderr, "  -image-only : only examine the image table (changes are NOT saved; -dup-images only)\n");
     19  fprintf (stderr, "  -region Rmin Rmax Dmin Dmax : apply changes to this part of the sky\n");
     20 
    1421  fprintf (stderr, "\n");
    1522  exit (2);
     
    4855    VERBOSE = TRUE;
    4956    VERBOSE2 = TRUE;
     57    remove_argument (N, &argc, argv);
     58  }
     59
     60  UPDATE = FALSE;
     61  if ((N = get_argument (argc, argv, "-update"))) {
     62    UPDATE = TRUE;
     63    remove_argument (N, &argc, argv);
     64  }
     65
     66  IMAGE_DETAILS = FALSE;
     67  if ((N = get_argument (argc, argv, "-image-details"))) {
     68    IMAGE_DETAILS = TRUE;
     69    remove_argument (N, &argc, argv);
     70  }
     71
     72  // we should never delete the images before the measures (or we won't know what to delete)
     73  // -image-only is for testing
     74  IMAGE_ONLY = FALSE;
     75  if ((N = get_argument (argc, argv, "-image-only"))) {
     76    IMAGE_ONLY = TRUE;
     77    UPDATE = FALSE;
    5078    remove_argument (N, &argc, argv);
    5179  }
     
    126154    if (MODE != MODE_NONE) usage();
    127155    MODE = MODE_MISSED;
     156    remove_argument (N, &argc, argv);
     157  }
     158  if ((N = get_argument (argc, argv, "-dup-images"))) {
     159    if (MODE != MODE_NONE) usage();
     160    MODE = MODE_DUP_IMAGES;
    128161    remove_argument (N, &argc, argv);
    129162  }
     
    251284  }
    252285
     286  UPDATE = FALSE;
     287  if ((N = get_argument (argc, argv, "-update"))) {
     288    UPDATE = TRUE;
     289    remove_argument (N, &argc, argv);
     290  }
     291
     292  IMAGE_DETAILS = FALSE;
     293  if ((N = get_argument (argc, argv, "-image-details"))) {
     294    IMAGE_DETAILS = TRUE;
     295    remove_argument (N, &argc, argv);
     296  }
     297
     298  IMAGE_ONLY = FALSE;
     299  if ((N = get_argument (argc, argv, "-image-only"))) {
     300    IMAGE_ONLY = TRUE;
     301    UPDATE = FALSE;
     302    remove_argument (N, &argc, argv);
     303  }
     304
    253305  /* specify portion of the sky */
    254306  UserPatch.Rmin = 0;
  • trunk/Ohana/src/delstar/src/delstar.c

    r34844 r35237  
    2020
    2121  switch (MODE) {
     22    case MODE_DUP_IMAGES:
     23      delete_duplicate_images (0, NULL, &db);
     24      break;
    2225    case MODE_IMAGEFILE:
    2326      delete_imagefile (&db);
  • trunk/Ohana/src/kapa2/src/CheckColors.c

    r13320 r35237  
    1212    if (*argc <= N + 1) {
    1313      fprintf (stderr, "error: usage is -fg color\n");
    14       exit (0);
     14      exit (2);
    1515    }
    1616    remove_argument (N, argc, argv);
     
    2727    if (*argc <= N + 1) {
    2828      fprintf (stderr, "error: usage is -bg color\n");
    29       exit (0);
     29      exit (2);
    3030    }
    3131    remove_argument (N, argc, argv);
  • trunk/Ohana/src/kapa2/src/CheckDisplayName.c

    r13320 r35237  
    1010    if (*argc <= N + 1) {
    1111      fprintf (stderr, "error: usage is [-display/-d] DisplayName\n");
    12       exit (0);
     12      exit (2);
    1313    }
    1414    remove_argument(N, argc, argv);
     
    2121    if (*argc <= N + 1) {
    2222      fprintf (stderr, "error: usage is [-display/-d] DisplayName\n");
    23       exit (0);
     23      exit (2);
    2424    }
    2525    remove_argument(N, argc, argv);
  • trunk/Ohana/src/kapa2/src/CheckGeometry.c

    r14590 r35237  
    1111    if (*argc <= N + 1) {
    1212      fprintf (stderr, "error: usage is -geom DisplayName\n");
    13       exit (0);
     13      exit (2);
    1414    }
    1515    remove_argument (N, argc, argv);
  • trunk/Ohana/src/kapa2/src/CheckVisual.c

    r34088 r35237  
    3131  if (Nfound == 0) {
    3232    fprintf (stderr, "error finding useful visual\n");
    33     exit (0);
     33    exit (2);
    3434  }
    3535 
     
    157157        // We've already tried to allocate a colormap above...
    158158        fprintf (stderr, "can't allocate enough cells in private colormap\n");
    159         exit (0);
     159        exit (2);
    160160      }
    161161      if (DEBUG) fprintf (stderr, "can't allocate enough cells, using private colormap\n");
     
    173173      if ((N = get_argument (*argc, argv, "-colorcount"))) {
    174174        fprintf (stderr, "kapa can grab %d colors\n", graphic[0].Npixels);
    175         exit (0);
     175        exit (1);
    176176      }
    177177      if (graphic[0].Npixels < 16) {
    178178        fprintf (stderr, "can't even allocate enough cells in private colormap\n");
    179         exit (0);
     179        exit (2);
    180180      }
    181181    }
     
    196196  if ((N = get_argument (*argc, argv, "-colorcount"))) {
    197197    fprintf (stderr, "kii can grab %d colors\n", graphic[0].Npixels);
    198     exit (0);
     198    exit (1);
    199199  }
    200200 
  • trunk/Ohana/src/kapa2/src/Layout.c

    r34088 r35237  
    3636  if (argc != 1) {
    3737    fprintf (stderr, "USAGE: kapa\n");
    38     exit (0);
     38    exit (1);
    3939  }
    4040
  • trunk/Ohana/src/kapa2/src/LoadFont.c

    r13320 r35237  
    1414    if (*argc <= N + 1) {
    1515      fprintf (stderr, "error: usage is -font fontname\n");
    16       exit (0);
     16      exit (2);
    1717    }
    1818    remove_argument(N, argc, argv);
     
    2323    if (*argc <= N + 1) {
    2424      fprintf (stderr, "error: usage is -fn fontname\n");
    25       exit (0);
     25      exit (2);
    2626    }
    2727    remove_argument(N, argc, argv);
  • trunk/Ohana/src/kapa2/src/OpenDisplay.c

    r13320 r35237  
    99  if (display == NULL) {
    1010    fprintf (stderr, "Error could not open X display to %s\n", XDisplayName (name));
    11     exit (0);
     11    exit (2);
    1212  }
    1313  *screen = DefaultScreen (display);
  • trunk/Ohana/src/kapa2/src/QuitX.c

    r13320 r35237  
    66  fprintf (stderr, "Error: %s\n", error_message);
    77  XCloseDisplay (display);
    8   exit (0);
     8  exit (3);
    99}
  • trunk/Ohana/src/libdvo/include/dvodb.h

    r35102 r35237  
    141141      MEAS_EXT_NSIGMA,
    142142      MEAS_EXTERN_ID,
     143      MEAS_EXPNAME_AS_INT,
    143144      MEAS_MCAL_OFFSET,
    144145      MEAS_FLAT,
  • trunk/Ohana/src/libdvo/src/dbExtractMeasures.c

    r35102 r35237  
    523523      break;
    524524
     525    case MEAS_EXPNAME_AS_INT:
     526      {
     527        Image *image;
     528        image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID);
     529        if (image == NULL) break;
     530        // XXX very crude: if this matches oNNNNgNNNNo, then convert to an int
     531        // otherwise, leave as 0
     532        if ((image->name[0] == 'o') && (image->name[5] == 'g') && (image->name[10] == 'o')) {
     533          int mjd  = atoi(&image->name[1]);
     534          int Nexp = atoi(&image->name[6]);
     535          value.Int = mjd * 10000 + Nexp;
     536        }
     537      }
     538      break;
     539
    525540    case MEAS_MCAL_OFFSET: /* OK */
    526541      value.Flt = measure[0].Mcal;
  • trunk/Ohana/src/libdvo/src/dbFields.c

    r35102 r35237  
    231231  if (!strcasecmp (fieldName, "IMAGEID"))        ESCAPE (MEAS_IMAGE_ID,       MAG_NONE, OPIHI_INT);
    232232  if (!strcasecmp (fieldName, "EXTERNID"))       ESCAPE (MEAS_EXTERN_ID,      MAG_NONE, OPIHI_INT);
     233  if (!strcasecmp (fieldName, "EXPNAME"))        ESCAPE (MEAS_EXPNAME_AS_INT, MAG_NONE, OPIHI_INT);
    233234  if (!strcasecmp (fieldName, "PSF_QF"))         ESCAPE (MEAS_PSF_QF,         MAG_NONE, OPIHI_FLT);
    234235  if (!strcasecmp (fieldName, "PSF_QF_PERFECT")) ESCAPE (MEAS_PSF_QF_PERFECT, MAG_NONE, OPIHI_FLT);
  • trunk/Ohana/src/libkapa/src/KapaOpen.c

    r34088 r35237  
    88static int Nvalid = 0;
    99static int *VALID = NULL;
     10
     11char *_parse_nextword (char *string);
     12int KapaLaunchCommand (char *line);
    1013
    1114int KapaServerInit (KapaSockAddress *Address) {
     
    225228
    226229  if (kapa_name == NULL) {
    227     sprintf (line, "%s &", kapa_exec);
     230    sprintf (line, "%s", kapa_exec);
    228231  } else {
    229     sprintf (line, "%s -name '%s' &", kapa_exec, kapa_name);
    230   }
    231   if (system (line) == -1) {
     232    sprintf (line, "%s -name '%s'", kapa_exec, kapa_name);
     233  }
     234
     235  int pid = KapaLaunchCommand (line);
     236  if (!pid) {
    232237    fprintf (stderr, "failed to launch kapa\n");
    233     return 0;
     238    return (-1);
    234239  }
    235240
     
    241246    // if (errno != EAGAIN) break;
    242247    if (errno != ECONNREFUSED) break;
     248    // no connection yet. try again, but first check
     249    // if the kapa job has exited
     250    int waitstatus;
     251    int result = waitpid (pid, &waitstatus, WNOHANG);
     252    if (result == -1) {
     253      fprintf (stderr, "problem checking for kapa\n");
     254      return (-1);
     255    }
     256    if (result > 0) {
     257      fprintf (stderr, "kapa exited\n");
     258      return (-1);
     259    }
    243260    usleep (10000);
    244261    Ntry ++;
     
    277294    sprintf (temp, "%s -socket %s -name %s &", kapa_exec, socket_name, name);
    278295  }
    279   if (system (temp) == -1) {
     296
     297  int pid = KapaLaunchCommand (temp);
     298  if (!pid) {
    280299    fprintf (stderr, "failed to launch kapa\n");
    281     return 0;
     300    return (-1);
    282301  }
    283302
     
    291310    if (fd != -1) break;
    292311    if (errno != EAGAIN) break;
     312    // no connection yet. try again, but first check
     313    // if the kapa job has exited
     314    int waitstatus;
     315    int result = waitpid (pid, &waitstatus, WNOHANG);
     316    if (result == -1) {
     317      fprintf (stderr, "problem checking for kapa\n");
     318      return (-1);
     319    }
     320    if (result > 0) {
     321      fprintf (stderr, "kapa exited\n");
     322      return (-1);
     323    }
    293324    usleep (10000);
    294325    Ntry ++;
     
    322353  return (sock);
    323354}
     355
     356int KapaLaunchCommand (char *line) {
     357
     358  // use fork & exec to launch the command; return the PID for testing exit
     359  int i, done, Nalloc, Nargv;
     360  char **argv, *p, *q;
     361
     362  i = 0;
     363  Nalloc = 10;
     364  ALLOCATE (argv, char *, Nalloc);
     365
     366  // split out line into unique words
     367  p = line;
     368  done = FALSE;
     369  while (!done) {
     370    q = _parse_nextword (p);
     371    if (q && *q) {
     372      argv[i] = strncreate (p, q - p);
     373      stripwhite (argv[i]);
     374      p = q;
     375    } else {
     376      argv[i] = strcreate (p);
     377      stripwhite (argv[i]);
     378      done = TRUE;
     379    }
     380    i++;
     381    if (i == Nalloc - 1) {
     382      // need to keep one extra for the NULL pointer
     383      Nalloc += 10;
     384      REALLOCATE (argv, char *, Nalloc);
     385    }
     386  }
     387  Nargv = i;
     388  argv[Nargv] = NULL;
     389
     390  int pid = fork ();
     391  if (!pid) { /* must be child process */
     392    execvp (argv[0], argv);
     393    return (0);
     394  }
     395  for (i = 0; i < Nargv; i++) {
     396    if (argv[i]) free (argv[i]);
     397  }
     398  free (argv);
     399
     400  if (pid == -1) {
     401    return (0);
     402  }
     403
     404  return (pid);
     405}
  • trunk/Ohana/src/libohana/src

  • trunk/Ohana/src/opihi

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

  • trunk/Ohana/src/opihi/cmd.basic/Makefile

    r33963 r35237  
    4848$(SRC)/run_while.$(ARCH).o  \
    4949$(SRC)/scan.$(ARCH).o        \
     50$(SRC)/scannext.$(ARCH).o            \
    5051$(SRC)/shell.$(ARCH).o       \
    5152$(SRC)/sprintf.$(ARCH).o    \
  • trunk/Ohana/src/opihi/cmd.basic/init.c

    r33963 r35237  
    3535int run_while       PROTO((int, char **));
    3636int scan            PROTO((int, char **));
     37int scannext        PROTO((int, char **));
    3738int shell           PROTO((int, char **));
    3839int sprintf_opihi   PROTO((int, char **));
     
    8687  {1, "while",         run_while,          "while loop"},
    8788  {1, "scan",          scan,               "scan line from keyboard or file to variable *"},
     89  {1, "scannext",      scannext,           "scan next line from file to variable (file stays open)"},
    8890  {1, "!",             shell,              "system call"},
    8991  {1, "exec",          shell,              "system call"},
  • trunk/Ohana/src/opihi/cmd.data

  • trunk/Ohana/src/opihi/cmd.data/Makefile

    r35109 r35237  
    4343$(SRC)/dbselect.$(ARCH).o       \
    4444$(SRC)/dbinsert.$(ARCH).o       \
     45$(SRC)/dbadmin.$(ARCH).o        \
     46$(SRC)/dbupdate.$(ARCH).o       \
    4547$(SRC)/erase.$(ARCH).o          \
    4648$(SRC)/extract.$(ARCH).o        \
  • trunk/Ohana/src/opihi/cmd.data/init.c

    r35109 r35237  
    2525int dbselect         PROTO((int, char **));
    2626int dbinsert         PROTO((int, char **));
     27int dbadmin          PROTO((int, char **));
     28int dbupdate         PROTO((int, char **));
    2729int delete           PROTO((int, char **));
    2830int densify          PROTO((int, char **));
     
    172174  {1, "dbselect",     dbselect,         "extract vectors from mysql database table"},
    173175  {1, "dbinsert",     dbinsert,         "sql insert command"},
     176  {1, "dbadmin",      dbadmin,          "sql admin command (create, drop)"},
     177  {1, "dbupdate",     dbupdate,         "sql update command"},
    174178  {1, "delete",       delete,           "delete vectors or images"},
    175179  {1, "densify",      densify,          "create an image histogram from a set of vectors"},
Note: See TracChangeset for help on using the changeset viewer.