IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 20, 2006, 8:57:16 PM (20 years ago)
Author:
eugene
Message:

modifications to support psphot on pmReadout with full IPP config files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psphot/src/psphotArguments.c

    r5993 r6117  
    11# include "psphot.h"
    22
    3 static void usage (void) ;
     3static void usage (psMetadata *arguments) ;
    44
    5 psMetadata *psphotArguments (int *argc, char **argv) {
     5ppConfig *psphotArguments (int *argc, char **argv) {
    66
    77    int N;
    8     unsigned int Nfail;
    9 
    10     psMetadata *options = psMetadataAlloc ();
    118
    129    // basic pslib options
    1310    psLogSetFormat ("M");
    14     psArgumentVerbosity (argc, argv);
    1511
    16     // command-line options -- place on options MD
    17     // mask image
    18     if ((N = psArgumentGet (*argc, argv, "-mask"))) {
    19         psArgumentRemove (N, argc, argv);
    20         psMetadataAddStr (options, PS_LIST_TAIL, "MASK_IMAGE", 0, "", psStringCopy(argv[N]));
    21         psArgumentRemove (N, argc, argv);
     12    ppConfig *config = ppConfigAlloc ();
     13
     14    // load config data from default locations
     15    if (!pmConfigRead(&config->site, &config->camera, &config->recipe, argc, argv, PSPHOT_RECIPE)) {
     16        psErrorStackPrint(stderr, "Can't find site configuration!\n");
     17        exit (EXIT_FAILURE);
    2218    }
    2319
    24     // weight image
    25     if ((N = psArgumentGet (*argc, argv, "-weight"))) {
    26         psArgumentRemove (N, argc, argv);
    27         psMetadataAddStr (options, PS_LIST_TAIL, "WEIGHT_IMAGE", 0, "", psStringCopy(argv[N]));
    28         psArgumentRemove (N, argc, argv);
    29     }
     20    // Parse other command-line arguments
     21    config->arguments = psMetadataAlloc ();
    3022
    31     // output residual image
    32     if ((N = psArgumentGet (*argc, argv, "-resid"))) {
    33         psArgumentRemove (N, argc, argv);
    34         psMetadataAddStr (options, PS_LIST_TAIL, "RESID_IMAGE", 0, "", psStringCopy(argv[N]));
    35         psArgumentRemove (N, argc, argv);
    36     }
    37 
    38     // analysis region
    39     if ((N = psArgumentGet (*argc, argv, "-region"))) {
    40         psArgumentRemove (N, argc, argv);
    41         psMetadataAddStr (options, PS_LIST_TAIL, "ANALYSIS_REGION", 0, "", psStringCopy(argv[N]));
    42         psArgumentRemove (N, argc, argv);
    43     }
    44 
    45     // output residual image
    46     psMetadataAddStr (options, PS_LIST_TAIL, "PHOTCODE", 0, "", psStringCopy("NONE"));
    47     if ((N = psArgumentGet (*argc, argv, "-photcode"))) {
    48         psArgumentRemove (N, argc, argv);
    49         psMetadataAddStr (options, PS_LIST_TAIL, "PHOTCODE", PS_META_REPLACE, "", psStringCopy(argv[N]));
    50         psArgumentRemove (N, argc, argv);
    51     }
    52 
    53     // input PSF file
    54     if ((N = psArgumentGet (*argc, argv, "-psf"))) {
    55         psArgumentRemove (N, argc, argv);
    56         psMetadataAddStr (options, PS_LIST_TAIL, "PSF_INPUT_FILE", 0, "", psStringCopy (argv[N]));
    57         psArgumentRemove (N, argc, argv);
    58     }
    59 
    60     // run the 0ltest model (requires X,Y coordinate)
     23    // arguments (must be supplied for each run, or not used)
     24    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-psf", 0, "input psf file", "");
     25    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-mask", 0,   "Name of the mask image", "");
     26    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-resid", 0,  "Name of the output residual image", "");
     27    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-weight", 0, "Name of the weight image", "");
     28    psMetadataAddS32(config->arguments, PS_LIST_TAIL, "-chip", 0, "Chip number to process (if positive)", -1);
     29   
     30    // run the test model (requires X,Y coordinate)
    6131    if ((N = psArgumentGet (*argc, argv, "-modeltest"))) {
    62         psMetadataAddBool (options, PS_LIST_TAIL, "TEST_FIT",   0, "", true);
    63         psMetadataAddF32  (options, PS_LIST_TAIL, "TEST_FIT_X", 0, "", atof(argv[N+1]));
    64         psMetadataAddF32  (options, PS_LIST_TAIL, "TEST_FIT_Y", 0, "", atof(argv[N+2]));
     32        psMetadataAddBool (config->arguments, PS_LIST_TAIL, "TEST_FIT",   0, "", true);
     33        psMetadataAddF32  (config->arguments, PS_LIST_TAIL, "TEST_FIT_X", 0, "", atof(argv[N+1]));
     34        psMetadataAddF32  (config->arguments, PS_LIST_TAIL, "TEST_FIT_Y", 0, "", atof(argv[N+2]));
    6535
    6636        psArgumentRemove (N, argc, argv);
     
    7141        if ((N = psArgumentGet (*argc, argv, "-model"))) {
    7242            psArgumentRemove (N, argc, argv);
    73             psMetadataAddStr (options, PS_LIST_TAIL, "TEST_FIT_MODEL", 0, "", psStringCopy (argv[N]));
     43            psMetadataAddStr (config->arguments, PS_LIST_TAIL, "TEST_FIT_MODEL", 0, "", psStringCopy (argv[N]));
    7444            psArgumentRemove (N, argc, argv);
    7545        }
     
    7848        if ((N = psArgumentGet (*argc, argv, "-fitmode"))) {
    7949            psArgumentRemove (N, argc, argv);
    80             psMetadataAddStr (options, PS_LIST_TAIL, "TEST_FIT_MODE", 0, "", psStringCopy (argv[N]));
     50            psMetadataAddStr (config->arguments, PS_LIST_TAIL, "TEST_FIT_MODE", 0, "", psStringCopy (argv[N]));
    8151            psArgumentRemove (N, argc, argv);
    8252        }
    8353        if ((N = psArgumentGet (*argc, argv, "-fitset"))) {
    8454            psArgumentRemove (N, argc, argv);
    85             psMetadataAddStr (options, PS_LIST_TAIL, "TEST_FIT_SET", 0, "", psStringCopy (argv[N]));
     55            psMetadataAddStr (config->arguments, PS_LIST_TAIL, "TEST_FIT_SET", 0, "", psStringCopy (argv[N]));
    8656            psArgumentRemove (N, argc, argv);
    8757        }
    8858    }
    8959
    90     // other arbitrary options: -D key value (all added as string)
     60    // Parse command-line overrides of recipe values
     61    psMetadata *recipe = psMetadataAlloc ();
     62
     63    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-photcode", 0, "photometry code", "NONE");
     64    psMetadataAddStr (config->arguments, PS_LIST_TAIL, "-break", 0, "", "NONE");
     65    psMetadataAddS32 (config->arguments, PS_LIST_TAIL, "-fitmode", 0, "", 2);
     66
     67    // analysis region : XXX override recipe
     68    if ((N = psArgumentGet (*argc, argv, "-photcode"))) {
     69        psArgumentRemove (N, argc, argv);
     70        psMetadataAddStr (recipe, PS_LIST_TAIL, "PHOTCODE", PS_META_REPLACE, "", psStringCopy(argv[N]));
     71        psArgumentRemove (N, argc, argv);
     72    }
     73
     74    // analysis region : XXX override recipe
     75    if ((N = psArgumentGet (*argc, argv, "-break"))) {
     76        psArgumentRemove (N, argc, argv);
     77        psMetadataAddStr (recipe, PS_LIST_TAIL, "BREAK_POINT", PS_META_REPLACE, "", psStringCopy(argv[N]));
     78        psArgumentRemove (N, argc, argv);
     79    }
     80
     81    // analysis region : XXX override recipe
     82    if ((N = psArgumentGet (*argc, argv, "-fitmode"))) {
     83        psArgumentRemove (N, argc, argv);
     84        psMetadataAddStr (recipe, PS_LIST_TAIL, "FITMODE", PS_META_REPLACE, "", psStringCopy(argv[N]));
     85        psArgumentRemove (N, argc, argv);
     86    }
     87
     88    // analysis region : XXX override recipe
     89    if ((N = psArgumentGet (*argc, argv, "-region"))) {
     90        psArgumentRemove (N, argc, argv);
     91        psMetadataAddStr (recipe, PS_LIST_TAIL, "ANALYSIS_REGION", 0, "", psStringCopy(argv[N]));
     92        psArgumentRemove (N, argc, argv);
     93    }
     94
     95    // other arbitrary recipe values: -D key value (all added as string)
    9196    while ((N = psArgumentGet (*argc, argv, "-D"))) {
    9297        psArgumentRemove (N, argc, argv);
    93         psMetadataAddStr (options, PS_LIST_TAIL, argv[N], 0, "", argv[N+1]);
     98        psMetadataAddStr (recipe, PS_LIST_TAIL, argv[N], 0, "", argv[N+1]);
    9499        psArgumentRemove (N, argc, argv);
    95100        psArgumentRemove (N, argc, argv);
    96101    }
    97102
    98     // other arbitrary options: -Df key value (all added as float)
     103    // other arbitrary recipe values: -Df key value (all added as float)
    99104    while ((N = psArgumentGet (*argc, argv, "-Df"))) {
    100105        psArgumentRemove (N, argc, argv);
    101         psMetadataAddF32 (options, PS_LIST_TAIL, argv[N], 0, "", atof(argv[N+1]));
     106        psMetadataAddF32 (recipe, PS_LIST_TAIL, argv[N], 0, "", atof(argv[N+1]));
    102107        psArgumentRemove (N, argc, argv);
    103108        psArgumentRemove (N, argc, argv);
    104109    }
    105110
    106     // other arbitrary options: -Di key value (all added as int)
     111    // other arbitrary recipe values: -Di key value (all added as int)
    107112    while ((N = psArgumentGet (*argc, argv, "-Di"))) {
    108113        psArgumentRemove (N, argc, argv);
    109         psMetadataAddS32 (options, PS_LIST_TAIL, argv[N], 0, "", atoi(argv[N+1]));
     114        psMetadataAddS32 (recipe, PS_LIST_TAIL, argv[N], 0, "", atoi(argv[N+1]));
    110115        psArgumentRemove (N, argc, argv);
    111116        psArgumentRemove (N, argc, argv);
    112117    }
    113118
    114     if (*argc != 4) usage ();
     119    // place the recipe options on the arguments stack
     120    psMetadataAddPtr (config->arguments, PS_LIST_TAIL, "RECIPE.OPTIONS", PS_DATA_UNKNOWN, "", recipe);
    115121
    116     // load config information
    117     psMetadata *config = psMetadataAlloc ();
     122    if (!psArgumentParse(config->arguments, argc, argv)) usage (config->arguments);
     123    if (*argc != 3) usage (config->arguments);
    118124
    119     // add default values
    120     psMetadataAddStr (config, PS_LIST_TAIL, "BREAK_POINT", 0, "", "NONE");
    121     psMetadataAddS32 (config, PS_LIST_TAIL, "FIT_MODE", 0, "", 2);
    122 
    123     psMetadataAdd (config, PS_LIST_TAIL, "PSF_MODEL", PS_DATA_METADATA_MULTI, "folder for psf model entries", NULL);
    124 
    125     // config file values override defaults set here
    126     config = psMetadataConfigParse (config, &Nfail, argv[3], TRUE);
    127 
    128     psMetadataItem *item = NULL;
    129     psMetadataIterator *iter = psMetadataIteratorAlloc (options, PS_LIST_HEAD, NULL);
    130     while ((item = psMetadataGetAndIncrement (iter)) != NULL) {
    131         psMetadataAddItem (config, item, PS_LIST_TAIL, PS_META_REPLACE);
    132         psFree (item);
    133     }
    134     psFree (iter);
    135 
    136     // identify input image & optional weight & mask images
    137     // command-line entries override config-file entries
    138     psMetadataAddStr (config, PS_LIST_TAIL, "IMAGE",       PS_META_REPLACE, "", argv[1]);
    139     psMetadataAddStr (config, PS_LIST_TAIL, "OUTPUT_FILE", PS_META_REPLACE, "", argv[2]);
     125    // input and output positions are fixed
     126    psMetadataAddStr (config->arguments, PS_LIST_TAIL, "-input",  PS_META_REPLACE, "", argv[1]);
     127    psMetadataAddStr (config->arguments, PS_LIST_TAIL, "-output", PS_META_REPLACE, "", argv[2]);
    140128
    141129    return (config);
    142130}
    143131
    144 static void usage (void) {
     132static void usage (psMetadata *arguments) {
    145133
    146     fprintf (stderr, "USAGE: psphot (image) (output) (config)\n");
    147     fprintf (stderr, "options: \n");
    148     fprintf (stderr, "  -mask  (filename)\n");
    149     fprintf (stderr, "  -weight (filename)\n");
    150     fprintf (stderr, "  -resid (filename)\n");
    151     fprintf (stderr, "  -photcode (photcode)\n");
     134    fprintf (stderr, "USAGE: psphot (image) (output)\n");
     135    psArgumentHelp (arguments);
    152136    exit (2);
    153137}
Note: See TracChangeset for help on using the changeset viewer.