Changeset 14107 for trunk/ppSub/src/ppSubArguments.c
- Timestamp:
- Jul 10, 2007, 2:15:40 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/ppSub/src/ppSubArguments.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ppSub/src/ppSubArguments.c
r13750 r14107 17 17 { 18 18 fprintf(stderr, "\nPan-STARRS PSF-matched image subtraction\n\n"); 19 fprintf(stderr, "Usage: %s INPUT.fits REFERENCE.fits OUTPUT_ROOT \n" 20 "\t[-psf REFERENCE.psf.fits|-psflist REFERENCE.list]\n", 21 program); 19 fprintf(stderr, "Usage: %s INPUT.fits REFERENCE.fits OUTPUT_ROOT\n", program); 22 20 fprintf(stderr, "\n"); 23 21 psArgumentHelp(arguments); … … 57 55 } \ 58 56 psMetadataAdd##TYPE(config->arguments, PS_LIST_TAIL, RECIPENAME, 0, NULL, value); \ 59 }60 61 // Get a mask value from the command-line or recipe, and add it to the arguments62 #define VALUE_ARG_RECIPE_MASK(ARGNAME, RECIPENAME) { \63 bool mdok; \64 const char *name = psMetadataLookupStr(&mdok, arguments, ARGNAME); \65 if (!mdok || !name || strlen(name) == 0) { \66 name = psMetadataLookupStr(NULL, recipe, RECIPENAME); \67 if (!name) { \68 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Unable to find %s in recipe %s", \69 RECIPENAME, PPSUB_RECIPE); \70 goto ERROR; \71 } \72 } \73 psMaskType value = pmConfigMask(name, config); \74 psMetadataAddU8(config->arguments, PS_LIST_TAIL, RECIPENAME, 0, NULL, value); \75 57 } 76 58 … … 152 134 } 153 135 154 // Add a single filename to the arguments as an array, so that it can be used with pmFPAfileBindFromArgs, etc155 static void fileList(const char *file, // The symbolic name for the file156 const char *name, // The name of the file157 const char *comment, // Description of the file158 pmConfig *config // Configuration159 )160 {161 psArray *files = psArrayAlloc(1); // Array with file names162 files->data[0] = psStringCopy(name);163 psMetadataAddArray(config->arguments, PS_LIST_TAIL, file, 0, comment, files);164 psFree(files);165 return;166 }167 168 //////////////////////////////////////////////////////////////////////////////////////////////////////////////169 136 170 137 bool ppSubArguments(int argc, char *argv[], pmConfig *config) 171 138 { 172 139 assert(config); 173 174 psMetadataAddBool(config->arguments, PS_LIST_TAIL, "PHOTOMETRY", 0, "Do photometry?",175 (psArgumentGet(argc, argv, "-psf") || psArgumentGet(argc, argv, "-psflist")) ?176 true : false);177 pmConfigFileSetsMD(config->arguments, &argc, argv, "PSPHOT.PSF", "-psf", "-psflist");178 140 179 141 psMetadata *arguments = psMetadataAlloc(); // Command-line arguments … … 182 144 psMetadataAddStr(arguments, PS_LIST_TAIL, "-refmask", 0, "Referencemask image", NULL); 183 145 psMetadataAddStr(arguments, PS_LIST_TAIL, "-refweight", 0, "Referenceweight image", NULL); 184 psMetadataAddStr(arguments, PS_LIST_TAIL, "-stat s", 0, "Statistics file", NULL);146 psMetadataAddStr(arguments, PS_LIST_TAIL, "-stat", 0, "Statistics file", NULL); 185 147 186 148 psMetadataAddS32(arguments, PS_LIST_TAIL, "-size", 0, "Kernel half-size (pixels)", 0); 187 149 psMetadataAddS32(arguments, PS_LIST_TAIL, "-order", 0, "Spatial polynomial order", 0); 188 psMetadataAddStr(arguments, PS_LIST_TAIL, "-type", 0, "Kernel type ( POIS or ISIS)", NULL);150 psMetadataAddStr(arguments, PS_LIST_TAIL, "-type", 0, "Kernel type (ISIS|POIS|SPAM|FRIES)", NULL); 189 151 psMetadataAddStr(arguments, PS_LIST_TAIL, "-isis-widths", 0, "ISIS Gaussian widths (comma-separated)", NULL); 190 152 psMetadataAddStr(arguments, PS_LIST_TAIL, "-isis-orders", 0, "ISIS polynomial orders (comma-separated)", NULL); 153 psMetadataAddS32(arguments, PS_LIST_TAIL, "-inner", 0, "SPAM and FRIES inner radius", 0); 154 psMetadataAddS32(arguments, PS_LIST_TAIL, "-spam-binning", 0, "SPAM kernel binning", 2); 191 155 psMetadataAddF32(arguments, PS_LIST_TAIL, "-spacing", 0, "Typical stamp spacing (pixels)", NAN); 192 156 psMetadataAddS32(arguments, PS_LIST_TAIL, "-footprint", 0, "Stamp footprint half-size (pixels)", 0); … … 202 166 } 203 167 204 fileList("INPUT", argv[1], "Name of the input image", config); 205 fileList("REF", argv[2], "Name of the reference image", config); 168 psArray *files = psArrayAlloc(1); // Array with file names 169 files->data[0] = psStringCopy(argv[1]); 170 psMetadataAddArray(config->arguments, PS_LIST_TAIL, "INPUT", 0, "Name of the input image", files); 171 psFree(files); 172 files = psArrayAlloc(1); 173 files->data[0] = psStringCopy(argv[2]); 174 psMetadataAddArray(config->arguments, PS_LIST_TAIL, "REF", 0, "Name of the reference image", files); 175 psFree(files); 206 176 psMetadataAddStr(config->arguments, PS_LIST_TAIL, "OUTPUT", 0, "Name of the output image", argv[3]); 207 177 208 const char *inMask = psMetadataLookupStr(NULL, arguments, "-inmask"); // Name of input mask 209 if (inMask && strlen(inMask) > 0) { 210 fileList("INPUT.MASK", inMask, "Name of the input mask image", config); 211 } 212 const char *inWeight = psMetadataLookupStr(NULL, arguments, "-inweight"); // Name of input weight 213 if (inWeight && strlen(inWeight) > 0) { 214 fileList("INPUT.WEIGHT", inWeight, "Name of the input weight image", config); 215 } 216 217 const char *refMask = psMetadataLookupStr(NULL, arguments, "-refmask"); // Name of reference mask 218 if (refMask && strlen(refMask) > 0) { 219 fileList("REF.MASK", refMask, "Name of the reference mask image", config); 220 } 221 const char *refWeight = psMetadataLookupStr(NULL, arguments, "-refweight"); // Name of reference weight 222 if (refWeight && strlen(refWeight) > 0) { 223 fileList("REF.WEIGHT", refWeight, "Name of the reference weight image", config); 224 } 225 226 valueArgStr(config, arguments, "-stats", "STATS", config->arguments); 178 valueArgStr(config, arguments, "-inmask", "INPUT.MASK", config->arguments); 179 valueArgStr(config, arguments, "-inweight", "INPUT.WEIGHT", config->arguments); 180 valueArgStr(config, arguments, "-refmask", "REF.MASK", config->arguments); 181 valueArgStr(config, arguments, "-refweight", "REF.WEIGHT", config->arguments); 182 valueArgStr(config, arguments, "-stat", "STATS", config->arguments); 227 183 228 184 psMetadata *recipe = psMetadataLookupMetadata(NULL, config->recipes, PPSUB_RECIPE); // Recipe for ppSim … … 232 188 } 233 189 234 VALUE_ARG_RECIPE_INT("-size", "KERNEL.SIZE", S32, 0); 235 VALUE_ARG_RECIPE_INT("-order", "SPATIAL.ORDER", S32, 0); 236 VALUE_ARG_RECIPE_FLOAT("-spacing", "STAMP.SPACING", F32); 237 VALUE_ARG_RECIPE_INT("-footprint", "STAMP.FOOTPRINT", S32, 0); 238 VALUE_ARG_RECIPE_FLOAT("-threshold", "STAMP.THRESHOLD", F32); 239 VALUE_ARG_RECIPE_INT("-iter", "ITER", S32, 0); 240 VALUE_ARG_RECIPE_FLOAT("-rej", "REJ", F32); 241 VALUE_ARG_RECIPE_MASK("-mask-bad", "MASK.BAD"); 242 VALUE_ARG_RECIPE_MASK("-mask-blank", "MASK.BLANK"); 190 VALUE_ARG_RECIPE_INT("-size", "KERNEL.SIZE", S32, 0); 191 VALUE_ARG_RECIPE_INT("-order", "SPATIAL.ORDER", S32, 0); 192 VALUE_ARG_RECIPE_FLOAT("-spacing", "STAMP.SPACING", F32); 193 VALUE_ARG_RECIPE_INT("-inner", "INNER", S32, 0); 194 VALUE_ARG_RECIPE_INT("-spam-binning", "SPAM.BINNING", S32, 0); 195 VALUE_ARG_RECIPE_INT("-footprint", "STAMP.FOOTPRINT", S32, 0); 196 VALUE_ARG_RECIPE_FLOAT("-threshold", "STAMP.THRESHOLD", F32); 197 VALUE_ARG_RECIPE_INT("-iter", "ITER", S32, 0); 198 VALUE_ARG_RECIPE_FLOAT("-rej", "REJ", F32); 199 VALUE_ARG_RECIPE_INT("-mask-bad", "MASK.BAD", U8, 0); 200 VALUE_ARG_RECIPE_INT("-mask-blank", "MASK.BLANK", U8, 0); 243 201 244 202 vectorArgRecipe(config, arguments, "-isis-widths", recipe, "ISIS.WIDTHS", config->arguments, PS_TYPE_F32); … … 269 227 } else if (strcasecmp(type, "ISIS") == 0) { 270 228 kernelType = PM_SUBTRACTION_KERNEL_ISIS; 229 } else if (strcasecmp(type, "SPAM") == 0) { 230 kernelType = PM_SUBTRACTION_KERNEL_SPAM; 231 } else if (strcasecmp(type, "FRIES") == 0) { 232 kernelType = PM_SUBTRACTION_KERNEL_FRIES; 271 233 } else { 272 234 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Unrecognised kernel type: %s", type);
Note:
See TracChangeset
for help on using the changeset viewer.
