IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 15724


Ignore:
Timestamp:
Nov 30, 2007, 9:06:52 AM (18 years ago)
Author:
eugene
Message:

adding support to generalize dvo catalog load segments

Location:
branches/eam_branch_20071130/Ohana/src/libdvo
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branch_20071130/Ohana/src/libdvo/include/dvo.h

    r15722 r15724  
    195195  Missing *missing;
    196196  SecFilt *secfilt;
    197   int Naverage, Nmeasure, Nmissing, Nsecfilt;   /* current number of each component */
    198   int Nave_disk, Nmeas_disk, Nmiss_disk;        /* number of component on disk */
    199   int Nmeas_off;                                /* dist seq of first loaded data value */
    200   /* note the different counting for Nsecfilt */
     197
     198  int Nsecfilt;  /* number of secfilt entries for each average entry */
     199  int Naverage,   Nmeasure,   Nmissing,   Nsecf_mem;  /* current number of each component in memory */
     200  int Naves_disk, Nmeas_disk, Nmiss_disk, Nsecf_disk; /* current number of each component on disk */
     201  int Naves_off,  Nmeas_off,  Nmiss_off,  Nsecf_off;  /* index of first loaded data value */
     202
     203  /* note the different counting for Nsecfilt:
     204     number of secfilt rows on disk is: Nave_disk * Nsecfilt
     205     number of secfilt rows in mem  is: Naverage * Nsecfilt
     206     *** that is just silly, and bad: convert to using Nsec_mem, Nsec_disk, Nsec_off.
     207     *** unless we always require the secfilt and average entries to be loaded sychronously.
     208   */
    201209
    202210  /* pointers to split data files */
  • branches/eam_branch_20071130/Ohana/src/libdvo/src/dvo_catalog.c

    r15509 r15724  
    237237  // even if the data is sorted on disk, if we only load the MEAS_META, we are
    238238  // treating it as unsorted (eg, append only)
     239  // XXX deprecate this statement?
    239240  if (catalog[0].catflags & LOAD_MEAS_META) {
    240241      catalog[0].sorted = FALSE;
     
    276277
    277278// write out the data, unlink if empty?
     279// XXX consider conditions in which we can allow a save...
    278280int dvo_catalog_save (Catalog *catalog, char VERBOSE) {
    279281
  • branches/eam_branch_20071130/Ohana/src/libdvo/src/dvo_catalog_split.c

    r15487 r15724  
    2323  if (!gfits_scan (&catalog[0].header, "NSECFILT", "%d", 1, &Nsecfilt)) Nsecfilt = 0;
    2424
     25  /* save the current number so we can do partial updates */
     26  catalog[0].Naves_disk = Naverage;
     27  catalog[0].Nmeas_disk = Nmeasure;
     28  catalog[0].Nmiss_disk = Nmissing;
     29  catalog[0].Nsecf_disk = Naverage * Nsecfilt;
     30
     31  /* these values are the number of elements loaded into memory */
     32  catalog[0].Naverage = 0;
     33  catalog[0].Nmeasure = 0;
     34  catalog[0].Nmissing = 0;
     35  catalog[0].Nsecfilt = 0;
     36
     37  /* by default, an unloaded catalog is ready to accept more entries after the end of the table */
     38  catalog[0].Naves_off = catalog[0].Naves_disk;
     39  catalog[0].Nmeas_off = catalog[0].Nmeas_disk;
     40  catalog[0].Nmiss_off = catalog[0].Nmiss_disk;
     41  catalog[0].Nsecf_off = catalog[0].Nsecf_disk;
     42
    2543  /**  Nsecfilt is unusual: it does not list the number of data items in the table
    2644       instead, the number of items is Nsecfilt * Naverage.  **/
    27   catalog[0].Nsecfilt = Nsecfilt;
    28 
    29   /* default values */
     45  catalog[0].Nsecfilt  = Nsecfilt;
     46
     47  /* default values, but we will assign these a valid value before we exit (even if empty) */
    3048  catalog[0].average = NULL;
    3149  catalog[0].measure = NULL;
     
    5674    }
    5775    /* old versions of DVO stored one of the average magnitudes in Average. we save this if needed */
    58     catalog[0].average = FtableToAverage (&ftable, &catalog[0].Naverage, &catalog[0].catformat, &primary);
     76    catalog[0].average = FtableToAverage (&ftable, &Naverage, &catalog[0].catformat, &primary);
    5977    if (Naverage != catalog[0].Naverage) {
    6078      fprintf (stderr, "Warning: mismatch between Naverage in PHU and Table headers (%d vs %d)\n", Naverage, catalog[0].Naverage);
    6179    }
    6280    gfits_free_header (&header);
    63   }
     81  } else {
     82    ALLOCATE (catalog[0].average, Average, 1);
     83  }
    6484
    6585  /*** Measure Table ***/
     
    6989  /* (Full Load) */
    7090  if (catalog[0].catflags & LOAD_MEAS) {
     91    /* in split mode, we need to init & open the corresponding measure file */
    7192    ALLOCATE (measure, Catalog, 1);
    7293    dvo_catalog_init (measure, TRUE);
     94    catalog[0].measure_catalog = measure;
    7395
    7496    /* get split filename from main header (paths relative to cpt file) */
     
    104126    }
    105127    /* convert data format to internal */
    106     catalog[0].measure = FtableToMeasure (&ftable, &catalog[0].Nmeasure, &catalog[0].catformat);
     128    catalog[0].measure = FtableToMeasure (&ftable, &Nmeasure, &catalog[0].catformat);
    107129    if (Nmeasure != catalog[0].Nmeasure) {
    108130      fprintf (stderr, "Warning: mismatch between Nmeasure in PHU and Table headers (%d vs %d)\n", Nmeasure, catalog[0].Nmeasure);
    109131    }
    110     catalog[0].Nmeas_off = 0;
    111132    gfits_free_header (&header);
    112133    gfits_free_matrix (&matrix);
    113   }
    114 
    115   /* (Meta Load) */
    116   if (catalog[0].catflags & LOAD_MEAS_META) {
    117     ALLOCATE (measure, Catalog, 1);
    118     dvo_catalog_init (measure, TRUE);
    119 
    120     /* get split filename from main header (paths relative to cpt file) */
    121     if (!gfits_scan (&catalog[0].header, "MEASURE",  "%s", 1, string)) return (FALSE);
    122     ALLOCATE (measure[0].filename, char, strlen(path) + strlen(string) + 2);
    123     sprintf (measure[0].filename, "%s/%s", path, string);
    124 
    125     /* lock & open catalog file */
    126     if (dvo_catalog_lock (measure, catalog[0].lockmode) != 1) {
    127       fprintf (stderr, "cannot access measure file %s\n", measure[0].filename);
    128       exit (2);
    129     }
    130 
    131     /* read PHU */
    132     if (!gfits_load_header (measure[0].f, &measure[0].header)) {
    133       if (VERBOSE) fprintf (stderr, "catalog file does not exist: %s\n", measure[0].filename);
    134       return (FALSE);
    135     }
    136 
    137     /* allocate dummy data for valid realloc */
     134  } else {
    138135    ALLOCATE (catalog[0].measure, Measure, 1);
    139 
    140     /* set up the table size information */
    141     catalog[0].Nmeasure  = 0;        /* no rows loaded */
    142     catalog[0].Nmeas_off = Nmeasure; /* start of new entries */
    143   }
    144   catalog[0].measure_catalog = measure;
     136  }
    145137
    146138  /*** Missing Table ***/
     
    272264  catalog[0].secfilt_catalog = secfilt;
    273265
    274   /* save the current number so we can do partial updates */
    275   catalog[0].Nave_disk  = Naverage;
    276   catalog[0].Nmeas_disk = Nmeasure;
    277   catalog[0].Nmiss_disk = Nmissing;
    278 
    279266  return (TRUE);
    280267}
Note: See TracChangeset for help on using the changeset viewer.