Changeset 6117 for trunk/psphot/src/psphotArguments.c
- Timestamp:
- Jan 20, 2006, 8:57:16 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/psphot/src/psphotArguments.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psphot/src/psphotArguments.c
r5993 r6117 1 1 # include "psphot.h" 2 2 3 static void usage ( void) ;3 static void usage (psMetadata *arguments) ; 4 4 5 p sMetadata*psphotArguments (int *argc, char **argv) {5 ppConfig *psphotArguments (int *argc, char **argv) { 6 6 7 7 int N; 8 unsigned int Nfail;9 10 psMetadata *options = psMetadataAlloc ();11 8 12 9 // basic pslib options 13 10 psLogSetFormat ("M"); 14 psArgumentVerbosity (argc, argv);15 11 16 // command-line options -- place on options MD17 // 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); 22 18 } 23 19 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 (); 30 22 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) 61 31 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])); 65 35 66 36 psArgumentRemove (N, argc, argv); … … 71 41 if ((N = psArgumentGet (*argc, argv, "-model"))) { 72 42 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])); 74 44 psArgumentRemove (N, argc, argv); 75 45 } … … 78 48 if ((N = psArgumentGet (*argc, argv, "-fitmode"))) { 79 49 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])); 81 51 psArgumentRemove (N, argc, argv); 82 52 } 83 53 if ((N = psArgumentGet (*argc, argv, "-fitset"))) { 84 54 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])); 86 56 psArgumentRemove (N, argc, argv); 87 57 } 88 58 } 89 59 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) 91 96 while ((N = psArgumentGet (*argc, argv, "-D"))) { 92 97 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]); 94 99 psArgumentRemove (N, argc, argv); 95 100 psArgumentRemove (N, argc, argv); 96 101 } 97 102 98 // other arbitrary options: -Df key value (all added as float)103 // other arbitrary recipe values: -Df key value (all added as float) 99 104 while ((N = psArgumentGet (*argc, argv, "-Df"))) { 100 105 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])); 102 107 psArgumentRemove (N, argc, argv); 103 108 psArgumentRemove (N, argc, argv); 104 109 } 105 110 106 // other arbitrary options: -Di key value (all added as int)111 // other arbitrary recipe values: -Di key value (all added as int) 107 112 while ((N = psArgumentGet (*argc, argv, "-Di"))) { 108 113 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])); 110 115 psArgumentRemove (N, argc, argv); 111 116 psArgumentRemove (N, argc, argv); 112 117 } 113 118 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); 115 121 116 // load config information117 psMetadata *config = psMetadataAlloc ();122 if (!psArgumentParse(config->arguments, argc, argv)) usage (config->arguments); 123 if (*argc != 3) usage (config->arguments); 118 124 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]); 140 128 141 129 return (config); 142 130 } 143 131 144 static void usage ( void) {132 static void usage (psMetadata *arguments) { 145 133 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); 152 136 exit (2); 153 137 }
Note:
See TracChangeset
for help on using the changeset viewer.
