IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 12834 for trunk/ppSim


Ignore:
Timestamp:
Apr 16, 2007, 10:13:57 AM (19 years ago)
Author:
Paul Price
Message:

Working, at least for bias images.

Location:
trunk/ppSim
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppSim

    • Property svn:ignore
      •  

        old new  
        1313Makefile.in
        1414missing
         15test
  • trunk/ppSim/.cvsignore

    r12833 r12834  
    1313Makefile.in
    1414missing
     15test
  • trunk/ppSim/src/ppSim.h

    r12833 r12834  
    2424///
    2525/// Returns a borrowed pointer to the FPA file.
    26 pmFPAfile *ppSimCreate(const pmConfig *config ///< Configuration
     26pmFPAfile *ppSimCreate(pmConfig *config ///< Configuration
    2727    );
    2828
  • trunk/ppSim/src/ppSimArguments.c

    r12833 r12834  
    5555    psMetadataAddStr(arguments, PS_LIST_TAIL, "-format", 0, "Camera format name", NULL);
    5656    psMetadataAddStr(arguments, PS_LIST_TAIL, "-type", 0, "Exposure type (BIAS|DARK|FLAT|OBJECT)", NULL);
     57    psMetadataAddStr(arguments, PS_LIST_TAIL, "-filter", 0, "Filter name", NULL);
    5758    psMetadataAddF32(arguments, PS_LIST_TAIL, "-exptime", 0, "Exposure time (s)", NAN);
    5859    psMetadataAddF32(arguments, PS_LIST_TAIL, "-biaslevel", 0, "Bias level (e)", NAN);
     
    6970    }
    7071
    71     if (*config->argc == 1 || !psArgumentParse(arguments, config->argc, config->argv)) {
     72    if (*config->argc == 1 || !psArgumentParse(arguments, config->argc, config->argv) || *config->argc != 2) {
    7273        usage(arguments, config);
    7374    }
     
    9899        usage(arguments, config);
    99100    }
    100     psMetadataAdd(config->arguments, PS_LIST_TAIL, "TYPE", 0, "Exposure type", type);
     101    psMetadataAddS32(config->arguments, PS_LIST_TAIL, "TYPE", 0, "Exposure type", type);
     102
     103    const char *filter = psMetadataLookupStr(NULL, arguments, "-filter"); // Filter name
     104    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "FILTER", 0, "Filter name", filter);
    101105
    102106    float expTime;
     
    110114        }
    111115    }
    112     psMetadataAdd(config->arguments, PS_LIST_TAIL, "EXPTIME", 0, "Exposure time (s)", expTime);
     116    psMetadataAddF32(config->arguments, PS_LIST_TAIL, "EXPTIME", 0, "Exposure time (s)", expTime);
    113117
    114118    psMetadata *recipe = psMetadataLookupMetadata(NULL, config->recipes, PPSIM_RECIPE); // Recipe for ppSim
     
    128132    valueArgRecipe(config, arguments, "-skyrate",     recipe, "SKY.RATE",     config->arguments);
    129133
     134    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "OUTPUT", 0, "Name of the output image",
     135                     config->argv[1]);
     136
    130137    psFree(arguments);
    131138}
  • trunk/ppSim/src/ppSimCreate.c

    r12833 r12834  
    99#include "ppSim.h"
    1010
    11 pmFPAfile *ppSimCreate(const pmConfig *config)
     11pmFPAfile *ppSimCreate(pmConfig *config)
    1212{
    1313    PS_ASSERT_PTR_NON_NULL(config, NULL);
    1414
    15     const char *formatName = psMetadataLookupStr(NULL, config->arguments, "FORMAT"); // Input format name
     15    psString formatName = psMetadataLookupStr(NULL, config->arguments, "FORMAT"); // Input format name
     16    config->formatName = psMemIncrRefCounter(formatName);
    1617
    1718    psMetadata *formats = psMetadataLookupMetadata(NULL, config->camera, "FORMATS"); // The camera formats
     
    2021        return NULL;
    2122    }
    22     psMetadata *format = psMetadataLookupMetadata(NULL, formats, config->formatName); // The format of interest
     23    psMetadata *format = psMetadataLookupMetadata(NULL, formats, formatName); // Format of interest
    2324    if (!format) {
    2425        psError(PS_ERR_UNEXPECTED_NULL, true, "Unable to find format %s in camera FORMATS.", formatName);
  • trunk/ppSim/src/ppSimLoop.c

    r12833 r12834  
    9393
    9494    psRegion *bounds = fpaBounds(fpa);  // Bounds of FPA
    95     if (!bounds) {
     95    if (!bounds || (bounds->x0 == 0.0 && bounds->x1 == 0.0) || (bounds->y0 == 0.0 && bounds->y1 == 0.0)) {
    9696        psError(PS_ERR_UNKNOWN, false, "Unable to determine bounds of FPA");
    9797        return PS_EXIT_CONFIG_ERROR;
     
    105105    float shutterTime = psMetadataLookupF32(NULL, config->arguments, "SHUTTER.TIME"); // Shutter time
    106106    float skyRate = psMetadataLookupF32(NULL, config->arguments, "SKY.RATE"); // Sky rate
     107
    107108    float expTime = psMetadataLookupF32(NULL, config->arguments, "EXPTIME"); // Exposure time
     109    const char *filter = psMetadataLookupStr(NULL, config->arguments, "FILTER"); // Filter name
    108110    ppSimType type = psMetadataLookupS32(NULL, config->arguments, "TYPE"); // Type of image to simulate
    109111
    110112    psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS, 0); // Random number generator
    111113    pmFPAview *view = pmFPAviewAlloc(0);// View for iterating over FPA
     114
     115    // Update concepts
     116    const char *typeStr;                // Exposure type String
     117    switch (type) {
     118      case PPSIM_TYPE_BIAS:   typeStr = "BIAS";   break;
     119      case PPSIM_TYPE_DARK:   typeStr = "DARK";   break;
     120      case PPSIM_TYPE_FLAT:   typeStr = "FLAT";   break;
     121      case PPSIM_TYPE_OBJECT: typeStr = "OBJECT"; break;
     122      default:
     123        psAbort("Should never get here.");
     124    }
     125    psMetadataAddStr(fpa->concepts, PS_LIST_TAIL, "FPA.OBSTYPE", PS_META_REPLACE,
     126                     "Observation type", typeStr);
     127    psMetadataAddF32(fpa->concepts, PS_LIST_TAIL, "FPA.EXPTIME", PS_META_REPLACE,
     128                     "Exposure time (sec)", expTime);
     129    psMetadataAddStr(fpa->concepts, PS_LIST_TAIL, "FPA.FILTERID", PS_META_REPLACE, "Filter name", filter);
     130    psMetadataAddStr(fpa->concepts, PS_LIST_TAIL, "FPA.FILTER", PS_META_REPLACE, "Filter name", filter);
     131
    112132
    113133    pmChip *chip;                       // Chip from FPA
     
    144164
    145165            // TO DO: Decide if cell is to be video readout
    146             int numReadouts = 0.0;      // Number of readouts in cell
     166            int numReadouts = 1;        // Number of readouts in cell
    147167
    148168            for (int i = 0; i < numReadouts; i++) {
     
    203223                }
    204224
     225                // TO DO: Add overscan
     226
     227#if 0
    205228                // Add the noise into the image
    206229                for (int y = 0; y < numRows; y++) {
     
    211234                    }
    212235                }
     236#endif
    213237                readout->image = signal;
    214238                psFree(variance);
     
    217241            }
    218242
    219             psMetadataAddF32(cell->concepts, PS_LIST_TAIL, "CELL.EXPTIME", 0, "Exposure time (sec)", expTime);
    220             psMetadataAddF32(cell->concepts, PS_LIST_TAIL, "CELL.DARKTIME", 0, "Dark time (sec)", expTime);
     243            psMetadataAddF32(cell->concepts, PS_LIST_TAIL, "CELL.EXPOSURE", PS_META_REPLACE,
     244                             "Exposure time (sec)", expTime);
     245            psMetadataAddF32(cell->concepts, PS_LIST_TAIL, "CELL.DARKTIME", PS_META_REPLACE,
     246                             "Dark time (sec)", expTime);
    221247
    222248            if (!pmFPAfileIOChecks(config, view, PM_FPA_AFTER)) {
     
    239265    }
    240266
    241     const char *typeStr;                // Exposure type String
    242     switch (type) {
    243       case PPSIM_TYPE_BIAS:   typeStr = "BIAS";   break;
    244       case PPSIM_TYPE_DARK:   typeStr = "DARK";   break;
    245       case PPSIM_TYPE_FLAT:   typeStr = "FLAT";   break;
    246       case PPSIM_TYPE_OBJECT: typeStr = "OBJECT"; break;
    247       default:
    248         psAbort("Should never get here.");
    249     }
    250 
    251     psMetadataAddStr(fpa->concepts, PS_LIST_TAIL, "FPA.OBSTYPE", 0, "Observation type", typeStr);
    252     psMetadataAddF32(fpa->concepts, PS_LIST_TAIL, "FPA.EXPTIME", 0, "Exposure time (sec)", expTime);
    253 
    254             if (!pmFPAfileIOChecks(config, view, PM_FPA_AFTER)) {
    255                 psError(PS_ERR_IO, false, "Unable to write file.");
    256                 psFree(rng);
    257                 psFree(view);
    258                 psFree(bounds);
    259                 return PS_EXIT_SYS_ERROR;
    260             }
    261 
     267    if (!pmFPAfileIOChecks(config, view, PM_FPA_AFTER)) {
     268        psError(PS_ERR_IO, false, "Unable to write file.");
     269        psFree(rng);
     270        psFree(view);
     271        psFree(bounds);
     272        return PS_EXIT_SYS_ERROR;
     273    }
    262274
    263275    psFree(rng);
Note: See TracChangeset for help on using the changeset viewer.