IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 19, 2010, 5:13:52 PM (16 years ago)
Author:
watersc1
Message:

Merging czw_branch (maskstats and software versions) back into the trunk

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/ippTools/src/pxtools.c

    r27417 r28043  
    4646    if (!strcmp(state, "scrubbed")) return true;
    4747    return false;
     48}
     49
     50psString pxMergeCodeVersions(psString version1, psString version2) {
     51  psString out = NULL;
     52
     53  bool mod1 = false;
     54  bool mod2 = false;
     55
     56  psS32 num1;
     57  psS32 num2;
     58  psS32 numO;
     59
     60  if (!version1) {
     61    psStringAppend(&out,version2);
     62    return(out);
     63  }
     64  if (!version2) {
     65    psStringAppend(&out,version1);
     66    return(out);
     67  }
     68 
     69  if (strchr(version1,'M')) {
     70    psStringSubstitute(&version1,"M","");
     71    mod1 = true;
     72  }
     73  if (strchr(version2,'M')) {
     74    psStringSubstitute(&version2,"M","");
     75    mod2 = true;
     76  }
     77
     78  num1 = strtol(version1,NULL,10);
     79  num2 = strtol(version2,NULL,10);
     80
     81  if (num1 >= num2) {
     82    numO = num1;
     83  }
     84  else {
     85    numO = num2;
     86  }
     87 
     88  psStringAppend(&out,"%" PRId32,numO);
     89  if (mod1 || mod2) {
     90    psStringAppend(&out,"M");
     91  }
     92  return(out);
     93}
     94
     95bool pxCoalesceRunStatus(pxConfig *config, const psString dbQFile, psS64 stage_id, psString *software_ver,
     96                         psS32 *maskfrac_npix, psF32 *maskfrac_static, psF32 *maskfrac_dynamic,
     97                         psF32 *maskfrac_magic, psF32 *maskfrac_advisory) {
     98  psString query = pxDataGet(dbQFile);
     99/*   psString text_id = NULL; */
     100/*   psStringAppend(&text_id," %" PRId64,stage_id); */
     101/*   psStringSubstitute(&query,text_id,"@STAGE_ID@"); */
     102/*   psFree(text_id); */
     103  if (!p_psDBRunQueryF(config->dbh, query, stage_id)) {
     104    psError(PS_ERR_UNKNOWN, false, "database error");
     105    psFree(query);
     106    return(false);
     107  }
     108  psFree(query);
     109  psArray *output = p_psDBFetchResult(config->dbh);
     110  if (!output) {
     111    psError(PS_ERR_UNKNOWN, false, "database error");
     112    return(false);
     113  }
     114 
     115  for (long i = 0; i < psArrayLength(output); i++) {
     116    psMetadata *row = output->data[i];
     117
     118    psS32 this_npix = psMetadataLookupS32(NULL, row, "maskfrac_npix");
     119    psF32 this_static = psMetadataLookupF32(NULL, row, "maskfrac_static");
     120    psF32 this_dynamic = psMetadataLookupF32(NULL, row, "maskfrac_dynamic");
     121    psF32 this_magic = psMetadataLookupF32(NULL, row, "maskfrac_magic");
     122    psF32 this_advisory = psMetadataLookupF32(NULL, row, "maskfrac_advisory");
     123    psString this_version = psMetadataLookupStr(NULL, row, "software_ver");
     124
     125    *software_ver = pxMergeCodeVersions(*software_ver,this_version);
     126
     127    *maskfrac_static = ((*maskfrac_static * *maskfrac_npix) + (this_npix * this_static)) / (this_npix + *maskfrac_npix);
     128    *maskfrac_dynamic = ((*maskfrac_dynamic * *maskfrac_npix) + (this_npix * this_dynamic)) / (this_npix + *maskfrac_npix);
     129    *maskfrac_magic = ((*maskfrac_magic * *maskfrac_npix) + (this_npix * this_magic)) / (this_npix + *maskfrac_npix);
     130    *maskfrac_advisory = ((*maskfrac_advisory * *maskfrac_npix) + (this_npix * this_advisory)) / (this_npix + *maskfrac_npix);
     131    *maskfrac_npix += this_npix;
     132  }
     133  psFree(output);
     134  return(true);
     135}
     136
     137bool pxSetRunSoftware(pxConfig *config, const psString tableName, const psString stage_id_name, const psS64 stage_id,
     138                      psString software_ver) {
     139  char *query = "UPDATE %s SET software_ver = '%s' WHERE %s = %" PRId64;
     140  printf(query,tableName,software_ver,stage_id_name,stage_id);
     141  if (!p_psDBRunQueryF(config->dbh,query,tableName,software_ver,stage_id_name,stage_id)) {
     142    psError(PS_ERR_UNKNOWN, false,
     143            "failed to set software version for %s %" PRId64,stage_id_name,stage_id);
     144    return(false);
     145  }
     146 
     147  return(true);
     148}
     149bool pxSetRunMaskfrac(pxConfig *config, const psString tableName, const psString stage_id_name, const psS64 stage_id,
     150                      psS32 maskfrac_npix, psF32 maskfrac_static, psF32 maskfrac_dynamic,
     151                      psF32 maskfrac_magic, psF32 maskfrac_advisory) {
     152  char *query = "UPDATE %s SET maskfrac_npix = %d, maskfrac_static = %f, maskfrac_dynamic = %f, maskfrac_magic = %f, maskfrac_advisory = %f WHERE %s = %" PRId64;
     153  if (!p_psDBRunQueryF(config->dbh,query,tableName,maskfrac_npix,maskfrac_static,
     154                       maskfrac_dynamic, maskfrac_magic,maskfrac_advisory,stage_id_name,stage_id)) {
     155    psError(PS_ERR_UNKNOWN, false,
     156            "failed to set maskfrac stats for %s %" PRId64,stage_id_name,stage_id);
     157    return(false);
     158  }
     159 
     160
     161
     162  return(true);
    48163}
    49164
Note: See TracChangeset for help on using the changeset viewer.