IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 18088


Ignore:
Timestamp:
Jun 11, 2008, 3:35:57 PM (18 years ago)
Author:
eugene
Message:

add -random_subst and -random_limit

Location:
trunk/ippTools/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/src/dettool.c

    r16868 r18088  
    535535    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
    536536
     537    PXOPT_LOOKUP_BOOL(randomSubset, config->args, "-random_subset", false);
     538    PXOPT_LOOKUP_S32(randomLimit, config->args, "-random_limit", false, false);
     539
    537540    PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false);
    538541    PXOPT_LOOKUP_TIME(time_begin, config->args, "-time_begin", false, false);
     
    557560    PXOPT_COPY_F32(config->args, where, "-select_ccd_temp_min", "ccd_temp", ">=");
    558561    PXOPT_COPY_F32(config->args, where, "-select_ccd_temp_max", "ccd_temp", "<=");
     562    PXOPT_COPY_F32(config->args, where, "-select_pon_time_min", "pon_time", ">=");
     563    PXOPT_COPY_F32(config->args, where, "-select_pon_time_max", "pon_time", "<=");
    559564    PXOPT_COPY_F32(config->args, where, "-select_posang_min", "posang", ">=");
    560565    PXOPT_COPY_F32(config->args, where, "-select_posang_max", "posang", "<=");
     
    584589        psFree(detrendExps);
    585590        return true;
     591    }
     592
     593    if (randomSubset && (randomLimit < detrendExps->n)) {
     594      // generate a random-valued vector, return an index sorted by the random values
     595      psVector *randomVector = psVectorAlloc(detrendExps->n, PS_TYPE_F32); // random values
     596      psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS, 0);
     597      for (int i = 0; i < randomVector->n; i++) {
     598        randomVector->data.F32[i] = psRandomUniform(rng);
     599      }
     600      psVector *indexVector = psVectorSortIndex(NULL, randomVector);
     601
     602      // accept for first n of the sequence
     603      psArray *subset = psArrayAlloc (randomLimit);
     604      for (int i = 0; i < randomLimit; i++ ){
     605        int j = indexVector->data.S32[i];
     606        subset->data[i] = psMemIncrRefCounter (detrendExps->data[j]);
     607      }
     608      psFree (detrendExps);
     609      detrendExps = subset;
    586610    }
    587611
  • trunk/ippTools/src/dettoolConfig.c

    r17089 r18088  
    194194    psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_ccd_temp_max",  0,
    195195            "define max ccd tempature", NAN);
     196    psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_pon_time_min",  0,
     197            "define min power-on time", NAN);
     198    psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_pon_time_max",  0,
     199            "define max power-on time", NAN);
    196200    psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_posang_min",  0,
    197201            "define min rotator position angle", NAN);
     
    210214    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple",  0,
    211215            "use the simple output format", false);
     216
     217    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-random_subset",  0,
     218            "use a random subset of elements", false);
     219    psMetadataAddS32(definebyqueryArgs, PS_LIST_TAIL, "-random_limit",  0,
     220            "use this number of random elements", 20);
    212221
    213222    // -definebydetrun
Note: See TracChangeset for help on using the changeset viewer.