IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 26837


Ignore:
Timestamp:
Feb 9, 2010, 8:24:35 PM (16 years ago)
Author:
Paul Price
Message:

Adding ppVizPattern to visualise pattern correction from pattern output.

Location:
branches/eam_branches/20091201/ppViz
Files:
8 deleted
3 edited
10 copied

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/20091201/ppViz

    • Property svn:mergeinfo set to (toggle deleted branches)
      /branches/eam_branches/20091113/ppViz26119-26255
      /branches/pap/ppViz26320
  • branches/eam_branches/20091201/ppViz/configure.ac

    r26377 r26837  
    3535  src/ppVizPSF/Makefile
    3636  src/ppCoord/Makefile
     37  src/ppVizPattern/Makefile
    3738])
    3839
  • branches/eam_branches/20091201/ppViz/src/Makefile.am

    r26377 r26837  
    1 SUBDIRS = ppVizPSF ppCoord
     1SUBDIRS = ppVizPSF ppCoord ppVizPattern
    22
    33CLEANFILES = *.pyc *~ core core.*
  • branches/eam_branches/20091201/ppViz/src/ppVizPattern/Makefile.am

    r26352 r26837  
    1 bin_PROGRAMS = ppVizPSF
     1bin_PROGRAMS = ppVizPattern
    22
    33if HAVE_SVNVERSION
    4 PPVIZPSF_VERSION=`$(SVNVERSION) ..`
     4PPVIZPATTERN_VERSION=`$(SVNVERSION) ..`
    55else
    6 PPVIZPSF_VERSION="UNKNOWN"
     6PPVIZPATTERN_VERSION="UNKNOWN"
    77endif
    88
    99if HAVE_SVN
    10 PPVIZPSF_BRANCH=`$(SVN) info .. | $(SED) -n -e '/URL:/ h' -e '/Repository Root:/ { x; H; x; s|Repository Root: \(.*\)\nURL: \1\(.*\)|\2| ; s|^/|| ; s|/[a-zA-Z]*/src.*|| ; p }'`
    11 PPVIZPSF_SOURCE=`$(SVN) info | $(SED) -n -e 's/Repository UUID: // p'`
     10PPVIZPATTERN_BRANCH=`$(SVN) info .. | $(SED) -n -e '/URL:/ h' -e '/Repository Root:/ { x; H; x; s|Repository Root: \(.*\)\nURL: \1\(.*\)|\2| ; s|^/|| ; s|/[a-zA-Z]*/src.*|| ; p }'`
     11PPVIZPATTERN_SOURCE=`$(SVN) info | $(SED) -n -e 's/Repository UUID: // p'`
    1212else
    13 PPVIZPSF_BRANCH="UNKNOWN"
    14 PPVIZPSF_SOURCE="UNKNOWN"
     13PPVIZPATTERN_BRANCH="UNKNOWN"
     14PPVIZPATTERN_SOURCE="UNKNOWN"
    1515endif
    1616
    17 # Force recompilation of ppVizPSFVersion.c, since it gets the version information
    18 ppVizPSFVersion.c: ppVizPSFVersionDefinitions.h
    19 ppVizPSFVersionDefinitions.h: ppVizPSFVersionDefinitions.h.in FORCE
    20         -$(RM) ppVizPSFVersionDefinitions.h
    21         $(SED) -e "s|@PPVIZPSF_VERSION@|\"$(PPVIZPSF_VERSION)\"|" -e "s|@PPVIZPSF_BRANCH@|\"$(PPVIZPSF_BRANCH)\"|" -e "s|@PPVIZPSF_SOURCE@|\"$(PPVIZPSF_SOURCE)\"|" ppVizPSFVersionDefinitions.h.in > ppVizPSFVersionDefinitions.h
     17# Force recompilation of ppVizPatternVersion.c, since it gets the version information
     18ppVizPatternVersion.c: ppVizPatternVersionDefinitions.h
     19ppVizPatternVersionDefinitions.h: ppVizPatternVersionDefinitions.h.in FORCE
     20        -$(RM) ppVizPatternVersionDefinitions.h
     21        $(SED) -e "s|@PPVIZPATTERN_VERSION@|\"$(PPVIZPATTERN_VERSION)\"|" -e "s|@PPVIZPATTERN_BRANCH@|\"$(PPVIZPATTERN_BRANCH)\"|" -e "s|@PPVIZPATTERN_SOURCE@|\"$(PPVIZPATTERN_SOURCE)\"|" ppVizPatternVersionDefinitions.h.in > ppVizPatternVersionDefinitions.h
    2222FORCE: ;
    2323
    24 BUILT_SOURCES = ppVizPSFVersionDefinitions.h
     24BUILT_SOURCES = ppVizPatternVersionDefinitions.h
    2525
    2626
    27 ppVizPSF_CPPFLAGS = $(PSLIB_CFLAGS) $(PSMODULE_CFLAGS) $(PPVIZPSF_CFLAGS)
    28 ppVizPSF_LDFLAGS  = $(PSLIB_LIBS)   $(PSMODULE_LIBS)   $(PPVIZPSF_LIBS)
     27ppVizPattern_CPPFLAGS = $(PSLIB_CFLAGS) $(PSMODULE_CFLAGS) $(PPVIZPATTERN_CFLAGS)
     28ppVizPattern_LDFLAGS  = $(PSLIB_LIBS)   $(PSMODULE_LIBS)   $(PPVIZPATTERN_LIBS)
    2929
    30 ppVizPSF_SOURCES =              \
    31         ppVizPSF.c              \
    32         ppVizPSFArguments.c     \
    33         ppVizPSFCamera.c        \
    34         ppVizPSFData.c          \
    35         ppVizPSFLoop.c          \
    36         ppVizPSFVersion.c           
     30ppVizPattern_SOURCES =          \
     31        ppVizPattern.c          \
     32        ppVizPatternArguments.c \
     33        ppVizPatternCamera.c    \
     34        ppVizPatternData.c              \
     35        ppVizPatternLoop.c              \
     36        ppVizPatternVersion.c           
    3737
    3838noinst_HEADERS = \
    39         ppVizPSF.h
     39        ppVizPattern.h
    4040
    4141clean-local:
  • branches/eam_branches/20091201/ppViz/src/ppVizPattern/ppVizPattern.c

    r26827 r26837  
    77#include <psmodules.h>
    88
    9 #include "ppVizPSF.h"
     9#include "ppVizPattern.h"
    1010
    1111int main(int argc, char *argv[])
    1212{
    13     ppVizPSFVersionPrint();
     13    ppVizPatternVersionPrint();
    1414
    15     ppVizPSFData *data = ppVizPSFDataInit(&argc, argv);
     15    ppVizPatternData *data = ppVizPatternDataInit(&argc, argv);
    1616    if (!data) {
    1717        psErrorStackPrint(stderr, "Unable to initialise.");
     
    1919    }
    2020
    21     if (!ppVizPSFArguments(data, argc, argv)) {
     21    if (!ppVizPatternArguments(data, argc, argv)) {
    2222        psErrorStackPrint(stderr, "Unable to parse arguments.");
    2323        psFree(data);
     
    2525    }
    2626
    27     if (!ppVizPSFCamera(data)) {
     27    if (!ppVizPatternCamera(data)) {
    2828        psErrorStackPrint(stderr, "Unable to parse camera configuration.");
    2929        psFree(data);
     
    3131    }
    3232
    33     if (!ppVizPSFLoop(data)) {
     33    if (!ppVizPatternLoop(data)) {
    3434        psErrorStackPrint(stderr, "Unable to process data.");
    3535        psFree(data);
  • branches/eam_branches/20091201/ppViz/src/ppVizPattern/ppVizPattern.h

    r26827 r26837  
    55#include <psmodules.h>
    66
    7 #define PPVIZPSF_RECIPE "PPVIZPSF"      // Recipe name
     7#define PPVIZPATTERN_RECIPE "PPVIZPATTERN"      // Recipe name
    88
    99// Data for processing
    1010typedef struct {
    11     psString psfName;                   // Filename with PSF
    12     psString sourcesName;               // Filename with sources
    13     int fakeNum;                        // Number of fake sources
    14     float fakeMag;                      // Magnitude of fake sources
     11    psString patternName;               // Filename with pattern
    1512    psString outRoot;                   // Output root name
    16     float minFlux;                      // Minimum flux for sources
    17     int size;                           // Size of PSF image
    18     float x, y;                         // Position of fake source
    1913    pmConfig *config;                   // Configuration
    20 } ppVizPSFData;
     14} ppVizPatternData;
    2115
    2216/// Initialise data for processing
    23 ppVizPSFData *ppVizPSFDataInit(int *argc, char *argv[] // Command-line arguments
     17ppVizPatternData *ppVizPatternDataInit(int *argc, char *argv[] // Command-line arguments
    2418    );
    2519
    2620/// Parse command-line arguments
    27 bool ppVizPSFArguments(ppVizPSFData *data, // Data for processing
     21bool ppVizPatternArguments(ppVizPatternData *data, // Data for processing
    2822                        int argc, char *argv[] // Command-line arguments
    2923    );
    3024
    3125/// Parse camera configurations
    32 bool ppVizPSFCamera(ppVizPSFData *data // Data for processing
     26bool ppVizPatternCamera(ppVizPatternData *data // Data for processing
    3327    );
    3428
    3529/// Loop over input data, processing
    36 bool ppVizPSFLoop(ppVizPSFData *data // Data for processing
     30bool ppVizPatternLoop(ppVizPatternData *data // Data for processing
    3731    );
    3832
    3933/// Add version information to header
    40 bool ppVizPSFVersionHeader(
     34bool ppVizPatternVersionHeader(
    4135    psMetadata *header                  // Header to supplement
    4236    );
    4337
    4438/// Print version information to stdout
    45 void ppVizPSFVersionPrint(void);
     39void ppVizPatternVersionPrint(void);
    4640
    4741#endif
  • branches/eam_branches/20091201/ppViz/src/ppVizPattern/ppVizPatternArguments.c

    r26827 r26837  
    1 /** @file ppVizPSFArguments.c
     1/** @file ppVizPatternArguments.c
    22 *
    33 *  @brief
    44 *
    5  *  @ingroup ppVizPSF
     5 *  @ingroup ppVizPattern
    66 *
    77 *  @author Paul Price
     
    1818#include <psmodules.h>
    1919
    20 #include "ppVizPSF.h"
     20#include "ppVizPattern.h"
    2121
    2222/// Print usage information and die
    2323static void usage(const char *program,  // Name of the program
    2424                  psMetadata *arguments, // Command-line arguments
    25                   ppVizPSFData *data   // Run-time data
     25                  ppVizPatternData *data   // Run-time data
    2626    )
    2727{
    28     fprintf(stderr, "\nPan-STARRS PSF visualisation\n\n");
     28    fprintf(stderr, "\nPan-STARRS pattern visualisation\n\n");
    2929    fprintf(stderr,
    30             "Usage: %s -psf PSF.psf -sources SOURCES.cmf OUTPUT_ROOT\n\n",
     30            "Usage: %s -pattern PATTERN.ptn OUTPUT_ROOT\n\n",
    3131            program);
    3232    fprintf(stderr, "\n");
     
    4242
    4343
    44 bool ppVizPSFArguments(ppVizPSFData *data, int argc, char *argv[])
     44bool ppVizPatternArguments(ppVizPatternData *data, int argc, char *argv[])
    4545{
    4646    assert(data);
     
    4848
    4949    psMetadata *arguments = psMetadataAlloc(); // Command-line arguments
    50     psMetadataAddStr(arguments, PS_LIST_TAIL, "-psf", 0, "Filename of PSF", NULL);
    51     psMetadataAddStr(arguments, PS_LIST_TAIL, "-sources", 0, "Filename of CMF sources", NULL);
    52     psMetadataAddS32(arguments, PS_LIST_TAIL, "-fake-num", 0, "Number of fake sources", 0);
    53     psMetadataAddF32(arguments, PS_LIST_TAIL, "-fake-mag", 0, "Magnitude of fake sources", NAN);
    54     psMetadataAddF32(arguments, PS_LIST_TAIL, "-x", 0, "x position of fake source [0..1]", NAN);
    55     psMetadataAddF32(arguments, PS_LIST_TAIL, "-y", 0, "y position of fake source [0..1]", NAN);
     50    psMetadataAddStr(arguments, PS_LIST_TAIL, "-pattern", 0, "Filename of pattern correction", NULL);
    5651    if (argc == 1 || !psArgumentParse(arguments, &argc, argv) || argc != 2) {
    5752        usage(argv[0], arguments, data);
    5853    }
    5954
    60     bool mdok;                          // Status of MD lookup
    61     data->psfName = psMemIncrRefCounter(psMetadataLookupStr(NULL, arguments, "-psf"));
    62     data->sourcesName = psMemIncrRefCounter(psMetadataLookupStr(&mdok, arguments, "-sources"));
    63     data->fakeNum = psMetadataLookupS32(NULL, arguments, "-fake-num");
    64     data->fakeMag = psMetadataLookupF32(NULL, arguments, "-fake-mag");
     55    data->patternName = psMemIncrRefCounter(psMetadataLookupStr(NULL, arguments, "-pattern"));
    6556    data->outRoot = psStringCopy(argv[1]);
    66     data->x = psMetadataLookupF32(NULL, arguments, "-x");
    67     data->y = psMetadataLookupF32(NULL, arguments, "-y");
    6857    psMetadataAddStr(data->config->arguments, PS_LIST_TAIL, "OUTPUT", 0, "Output root name", data->outRoot);
    6958
    70     psTrace("ppVizPSF", 1, "Done reading command-line arguments\n");
     59    psTrace("ppVizPattern", 1, "Done reading command-line arguments\n");
    7160    psFree(arguments);
    7261
    73     PS_ASSERT_STRING_NON_EMPTY(data->psfName, false);
     62    PS_ASSERT_STRING_NON_EMPTY(data->patternName, false);
    7463    PS_ASSERT_STRING_NON_EMPTY(data->outRoot, false);
    7564
  • branches/eam_branches/20091201/ppViz/src/ppVizPattern/ppVizPatternCamera.c

    r26827 r26837  
    77#include <psmodules.h>
    88
    9 #include "ppVizPSF.h"
     9#include "ppVizPattern.h"
    1010
    1111/// Add a single filename to the arguments as an array, so that it can be used with pmFPAfileBindFromArgs, etc
     
    2727
    2828
    29 bool ppVizPSFCamera(ppVizPSFData *data // Run-time data
     29bool ppVizPatternCamera(ppVizPatternData *data // Run-time data
    3030    )
    3131{
    3232    bool status;                        // Status of file definition
    3333
    34     fileArguments("PSF", data->psfName, "Input PSF", data->config);
    35     pmFPAfile *psf = pmFPAfileDefineFromArgs(&status, data->config, "PSPHOT.PSF.LOAD", "PSF"); // File
    36     if (!status || !psf) {
    37         psError(PS_ERR_IO, false, "Failed to build file from PSPHOT.LOAD.PSF");
     34    fileArguments("PATTERN", data->patternName, "Input pattern", data->config);
     35    pmFPAfile *input = pmFPAfileDefineFromArgs(&status, data->config, "PPVIZPATTERN.INPUT",
     36                                               "PATTERN"); // File
     37    if (!status || !input) {
     38        psError(PS_ERR_IO, false, "Failed to build file from PPVIZPATTERN.INPUT");
    3839        return false;
    3940    }
    4041
    41     if (data->sourcesName) {
    42         fileArguments("SOURCES", data->sourcesName, "Input sources", data->config);
    43         pmFPAfile *srcs = pmFPAfileBindFromArgs(&status, psf, data->config,
    44                                                 "PSPHOT.INPUT.CMF", "SOURCES"); // File
    45         if (!status || !srcs) {
    46             psError(PS_ERR_IO, false, "Failed to build file from PSPHOT.INPUT.CMF");
    47             return false;
    48         }
    49     }
    50 
    51     pmFPAfile *output = pmFPAfileDefineOutput(data->config, psf->fpa, "PPVIZPSF.OUTPUT");
     42    pmFPAfile *output = pmFPAfileDefineOutput(data->config, input->fpa, "PPVIZPATTERN.OUTPUT");
    5243    if (!output) {
    5344        psError(psErrorCodeLast(), false, "Unable to define output.");
     
    5647    output->save = true;
    5748
     49#if 0
    5850    // Now the camera has been determined, we can read the recipe
    59     psMetadata *recipe = psMetadataLookupMetadata(NULL, data->config->recipes, PPVIZPSF_RECIPE); // Recipe
     51    psMetadata *recipe = psMetadataLookupMetadata(NULL, data->config->recipes, PPVIZPATTERN_RECIPE); // Recipe
    6052    if (!recipe) {
    61         psError(PS_ERR_UNEXPECTED_NULL, false, "Unable to find recipe %s", PPVIZPSF_RECIPE);
     53        psError(PS_ERR_UNEXPECTED_NULL, false, "Unable to find recipe %s", PPVIZPATTERN_RECIPE);
    6254        return false;
    6355    }
    64 
    65     data->minFlux = psMetadataLookupF32(NULL, recipe, "MINFLUX"); // Minimum flux
    66     if (!isfinite(data->minFlux) || data->minFlux <= 0) {
    67         psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Unable to find legitimate value for MINFLUX");
    68         return false;
    69     }
    70 
    71     if (!data->sourcesName) {
    72         data->size = psMetadataLookupS32(NULL, recipe, "SIZE"); // Size of PSF
    73         if (data->size <= 0) {
    74             psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Unable to find legitimate value for SIZE");
    75             return false;
    76         }
    77     }
     56#endif
    7857
    7958    return true;
  • branches/eam_branches/20091201/ppViz/src/ppVizPattern/ppVizPatternData.c

    r26827 r26837  
    77#include <psmodules.h>
    88
    9 #include "ppVizPSF.h"
     9#include "ppVizPattern.h"
    1010
    1111// Destructor
    12 static void vizPSFDataFree(ppVizPSFData *data // Data to free
     12static void vizPatternDataFree(ppVizPatternData *data // Data to free
    1313    )
    1414{
    15     psFree(data->psfName);
    16     psFree(data->sourcesName);
     15    psFree(data->patternName);
    1716    psFree(data->outRoot);
    1817    psFree(data->config);
     
    2120
    2221
    23 ppVizPSFData *ppVizPSFDataAlloc(void)
     22ppVizPatternData *ppVizPatternDataAlloc(void)
    2423{
    25     ppVizPSFData *data = psAlloc(sizeof(ppVizPSFData)); // Processing data, to return
    26     psMemSetDeallocator(data, (psFreeFunc)vizPSFDataFree);
     24    ppVizPatternData *data = psAlloc(sizeof(ppVizPatternData)); // Processing data, to return
     25    psMemSetDeallocator(data, (psFreeFunc)vizPatternDataFree);
    2726
    28     data->psfName = NULL;
    29     data->sourcesName = NULL;
    30     data->fakeNum = 0;
    31     data->fakeMag = NAN;
     27    data->patternName = NULL;
    3228    data->outRoot = NULL;
    3329    data->config = NULL;
    34     data->minFlux = NAN;
    35     data->size = 0;
    36     data->x = NAN;
    37     data->y = NAN;
    3830
    3931    return data;
     
    4133
    4234
    43 ppVizPSFData *ppVizPSFDataInit(int *argc, char **argv)
     35ppVizPatternData *ppVizPatternDataInit(int *argc, char **argv)
    4436{
    4537    PS_ASSERT_PTR_NON_NULL(argc, NULL);
    4638    PS_ASSERT_PTR_NON_NULL(argv, NULL);
    4739
    48     ppVizPSFData *data = ppVizPSFDataAlloc(); // Processing data, to return
    49     data->config = pmConfigRead(argc, argv, PPVIZPSF_RECIPE);
     40    ppVizPatternData *data = ppVizPatternDataAlloc(); // Processing data, to return
     41    data->config = pmConfigRead(argc, argv, PPVIZPATTERN_RECIPE);
    5042    if (!data->config) {
    5143        psError(PS_ERR_UNKNOWN, false, "Unable to read configuration.");
  • branches/eam_branches/20091201/ppViz/src/ppVizPattern/ppVizPatternLoop.c

    r26827 r26837  
    77#include <psmodules.h>
    88
    9 #include "ppVizPSF.h"
     9#include "ppVizPattern.h"
    1010
     11#define MASK_BAD 0xFFFF                 // Mask for bad pixels
    1112
    12 bool ppVizPSFLoop(ppVizPSFData *data // Run-time data
     13bool ppVizPatternLoop(ppVizPatternData *data // Run-time data
    1314    )
    1415{
    1516    pmConfig *config = data->config;                                        // Configuration data
    16     pmFPAfile *psfFile = pmFPAfileSelectSingle(config->files, "PSPHOT.PSF.LOAD", 0); // File with PSF
     17    pmFPAfile *input = pmFPAfileSelectSingle(config->files, "PPVIZPATTERN.INPUT", 0); // File with PSF
    1718
    1819    pmFPAview *view = pmFPAviewAlloc(0); // Pointer into FPA hierarchy
     
    2223
    2324    pmChip *chip;                       // Chip from FPA
    24     while ((chip = pmFPAviewNextChip(view, psfFile->fpa, 1))) {
     25    while ((chip = pmFPAviewNextChip(view, input->fpa, 1))) {
    2526        if (!chip->process || !chip->file_exists) {
    2627            continue;
     
    3132        }
    3233
    33         if (chip->cells->n != 1) {
    34             psWarning("More than one cell present for chip %d", view->chip);
    35         }
    36 
    3734        pmCell *cell;                   // Cell from chip
    38         while ((cell = pmFPAviewNextCell(view, psfFile->fpa, 1))) {
     35        while ((cell = pmFPAviewNextCell(view, input->fpa, 1))) {
    3936            if (!cell->process || !cell->file_exists) {
    4037                continue;
     
    4542            }
    4643
    47             if (cell->readouts->n == 0) {
    48                 pmReadout *ro = pmReadoutAlloc(cell);
    49                 ro->data_exists = true;
    50                 cell->data_exists = true;
    51                 chip->data_exists = true;
    52                 psFree(ro);             // Drop reference
    53             }
    54 
    55             if (cell->readouts->n > 1) {
    56                 psWarning("More than one readout present for chip %d, cell %d", view->chip, view->cell);
    57             }
    58 
    5944            pmReadout *readout;         // Readout from cell
    60             while ((readout = pmFPAviewNextReadout(view, psfFile->fpa, 1))) {
     45            while ((readout = pmFPAviewNextReadout(view, input->fpa, 1))) {
    6146                if (!pmFPAfileIOChecks(config, view, PM_FPA_BEFORE)) {
    6247                    psError(PS_ERR_UNKNOWN, false, "Error loading data from files.");
     
    6752                }
    6853
    69                 pmPSF *psf = psMetadataLookupPtr(NULL, chip->analysis, "PSPHOT.PSF");              // PSF
    70                 assert(psf);
     54                int numCols = 0, numRows = 0; // Size of image
    7155
    72                 bool mdok;              // Status of MD lookup
    73                 psArray *sources = psMetadataLookupPtr(&mdok, readout->analysis, "PSPHOT.SOURCES"); // Sources
    74                 int numCols = 0, numRows = 0;              // Size of image
    75                 psVector *xOffset = NULL, *yOffset = NULL; // Offset from source to true position
     56                // Get size of image from concepts
     57                if (numCols == 0 || numRows == 0) {
     58                    numCols = psMetadataLookupS32(NULL, cell->concepts, "CELL.XSIZE");
     59                    numRows = psMetadataLookupS32(NULL, cell->concepts, "CELL.YSIZE");
     60                }
    7661
    77                 if (sources || (data->fakeNum > 0 && isfinite(data->fakeMag))) {
    78                   numCols = psf->fieldNx;
    79                   numRows = psf->fieldNy;
    80                   psLogMsg("ppVizPSF", PS_LOG_INFO, "Generating %dx%d image", numCols, numRows);
    81                 }
    82                 if (sources) {
    83                     psMemIncrRefCounter(sources);
    84                     psLogMsg("ppVizPSF", PS_LOG_INFO, "Using %ld input sources", sources->n);
    85                 }
    86                 if (data->fakeNum > 0 && isfinite(data->fakeMag)) {
    87                   long numOld = 0; // Old number of sources
    88                   long numNew = -1; // New number of sources
    89                   psLogMsg("ppVizPSF", PS_LOG_INFO, "Adding %d fake sources", data->fakeNum);
    90                   if (sources) {
    91                     numOld = sources->n;
    92                     numNew = numOld + data->fakeNum;
    93                     sources = psArrayRealloc(sources, numNew);
    94                     sources->n = numNew;
    95                   } else {
    96                     numNew = data->fakeNum;
    97                     sources = psArrayAlloc(numNew);
    98                   }
    99 
    100                   psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS); // Random number generator
    101 
    102                   for (int i = numOld; i < numNew; i++) {
    103                     pmSource *source = pmSourceAlloc(); // Fake source
    104                     sources->data[i] = source;
    105                     float xSrc = psRandomUniform(rng) * numCols, ySrc = psRandomUniform(rng) * numRows; // Position of source
    106 
    107                     pmModel *model = pmModelFromPSFforXY(psf, xSrc, ySrc, 1.0); // Model for normalisation
    108                     float fluxNorm = model->modelFlux(model->params);               // Flux for peak=1
    109                     float fluxPeak = powf(10.0, -0.4 * data->fakeMag) / fluxNorm; // Peak flux
    110                     source->peak = pmPeakAlloc(xSrc, ySrc, fluxPeak, PM_PEAK_LONE);
    111                     source->psfMag = data->fakeMag;
    112                     psFree(model);
    113                   }
    114                 }                 
    115                 if (!sources) {
    116                   // Generate fake image with only a single realisation of the PSF
    117                     sources = psArrayAlloc(1);
    118                     pmSource *source = pmSourceAlloc(); // Fake source
    119                     sources->data[0] = source;
    120                     float xRel = isfinite(data->x) ? data->x : 0.5; // Relative position in x
    121                     float yRel = isfinite(data->y) ? data->y : 0.5; // Relative position in y
    122                     float xSrc = xRel * psf->fieldNx, ySrc = yRel * psf->fieldNy; // Position of source
    123                     source->peak = pmPeakAlloc(xSrc, ySrc, 1.0, PM_PEAK_LONE);
    124                     pmModel *model = pmModelFromPSFforXY(psf, xSrc, ySrc, 1.0); // Model for normalisation
    125                     float flux = model->modelFlux(model->params);               // Flux for peak=1
    126                     psFree(model);
    127                     source->psfMag = -2.5 * log10(flux);
    128                     xOffset = psVectorAlloc(1, PS_TYPE_S32);
    129                     yOffset = psVectorAlloc(1, PS_TYPE_S32);
    130                     xOffset->data.S32[0] = data->size - xSrc;
    131                     yOffset->data.S32[0] = data->size - ySrc;
    132                     numCols = 2 * data->size + 1;
    133                     numRows = 2 * data->size + 1;
    134                     psLogMsg("ppVizPSF", PS_LOG_INFO, "Generating %dx%d image with single PSF",
    135                              numCols, numRows);
     62                // Get size of image from TRIMSEC
     63                if (numCols == 0 || numRows == 0) {
     64                    psRegion *trimsec = psMetadataLookupPtr(NULL, cell->concepts, "CELL.TRIMSEC");
     65                    numCols = trimsec->x1 - trimsec->x0;
     66                    numRows = trimsec->y1 - trimsec->y0;
    13667                }
    13768
     
    14172                }
    14273
    143                 if (!pmReadoutFakeFromSources(readout, numCols, numRows, sources, 0, xOffset, yOffset, psf,
    144                                               data->minFlux, 0, false, true)) {
    145                     psError(PS_ERR_UNKNOWN, false, "Unable to generate fake readout.");
     74                readout->image = psImageAlloc(numCols, numRows, PS_TYPE_F32);
     75                psImageInit(readout->image, 0.0);
     76
     77                if (!pmPatternRowApply(readout, MASK_BAD) || !pmPatternCellApply(readout, MASK_BAD)) {
     78                    psError(PS_ERR_UNKNOWN, false, "Unable to apply pattern correction.");
    14679                    return false;
    14780                }
    14881
    149                 psFree(sources);
    150                 psFree(xOffset);
    151                 psFree(yOffset);
    152 
    153                 pmHDU *hdu = pmHDUGetLowest(psfFile->fpa, chip, cell); // HDU for readout
     82                pmHDU *hdu = pmHDUGetLowest(input->fpa, chip, cell); // HDU for readout
    15483                if (!hdu) {
    15584                    psError(PS_ERR_UNEXPECTED_NULL, true, "Unable to find HDU for data.");
     
    15988                    hdu->header = psMetadataAlloc();
    16089                }
    161                 ppVizPSFVersionHeader(hdu->header);
     90                ppVizPatternVersionHeader(hdu->header);
    16291
    16392
  • branches/eam_branches/20091201/ppViz/src/ppVizPattern/ppVizPatternVersion.c

    r26827 r26837  
    1 /** @file ppVizPSFVersion.c
     1/** @file ppVizPatternVersion.c
    22 *
    33 *  @brief
    44 *
    5  *  @ingroup ppVizPSF
     5 *  @ingroup ppVizPattern
    66 *
    77 *  @author IfA
     
    1919#include <psmodules.h>
    2020
    21 #include "ppVizPSF.h"
    22 #include "ppVizPSFVersionDefinitions.h"
     21#include "ppVizPattern.h"
     22#include "ppVizPatternVersionDefinitions.h"
    2323
    24 #ifndef PPVIZPSF_VERSION
    25 #error "PPVIZPSF_VERSION is not set"
     24#ifndef PPVIZPATTERN_VERSION
     25#error "PPVIZPATTERN_VERSION is not set"
    2626#endif
    27 #ifndef PPVIZPSF_BRANCH
    28 #error "PPVIZPSF_BRANCH is not set"
     27#ifndef PPVIZPATTERN_BRANCH
     28#error "PPVIZPATTERN_BRANCH is not set"
    2929#endif
    30 #ifndef PPVIZPSF_SOURCE
    31 #error "PPVIZPSF_SOURCE is not set"
     30#ifndef PPVIZPATTERN_SOURCE
     31#error "PPVIZPATTERN_SOURCE is not set"
    3232#endif
    3333
    34 psString ppVizPSFVersion(void)
     34psString ppVizPatternVersion(void)
    3535{
    3636    char *value = NULL;
    37     psStringAppend(&value, "%s@%s", PPVIZPSF_BRANCH, PPVIZPSF_VERSION);
     37    psStringAppend(&value, "%s@%s", PPVIZPATTERN_BRANCH, PPVIZPATTERN_VERSION);
    3838    return value;
    3939}
    4040
    41 psString ppVizPSFSource(void)
     41psString ppVizPatternSource(void)
    4242{
    43     return psStringCopy(PPVIZPSF_SOURCE);
     43    return psStringCopy(PPVIZPATTERN_SOURCE);
    4444}
    4545
    46 psString ppVizPSFVersionLong(void)
     46psString ppVizPatternVersionLong(void)
    4747{
    48     psString version = ppVizPSFVersion();  // Version, to return
    49     psString source = ppVizPSFSource();    // Source
     48    psString version = ppVizPatternVersion();  // Version, to return
     49    psString source = ppVizPatternSource();    // Source
    5050
    51     psStringPrepend(&version, "ppVizPSF ");
     51    psStringPrepend(&version, "ppVizPattern ");
    5252    psStringAppend(&version, " from %s, built %s, %s", source, __DATE__, __TIME__);
    5353    psFree(source);
     
    6262};
    6363
    64 bool ppVizPSFVersionHeader(psMetadata *header)
     64bool ppVizPatternVersionHeader(psMetadata *header)
    6565{
    6666    PS_ASSERT_METADATA_NON_NULL(header, false);
     
    7070    psFree(time);
    7171    psString history = NULL;               // History string
    72     psStringAppend(&history, "ppVizPSF at %s", timeString);
     72    psStringAppend(&history, "ppVizPattern at %s", timeString);
    7373    psFree(timeString);
    7474    psMetadataAddStr(header, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, NULL, history);
     
    7878    psModulesVersionHeader(header);
    7979
    80     psString version = ppVizPSFVersion(); // Software version
    81     psString source  = ppVizPSFSource();  // Software source
     80    psString version = ppVizPatternVersion(); // Software version
     81    psString source  = ppVizPatternSource();  // Software source
    8282
    83     psStringPrepend(&version, "ppVizPSF version: ");
    84     psStringPrepend(&version, "ppVizPSF source: ");
     83    psStringPrepend(&version, "ppVizPattern version: ");
     84    psStringPrepend(&version, "ppVizPattern source: ");
    8585
    8686    psMetadataAddStr(header, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, NULL, version);
     
    9393}
    9494
    95 void ppVizPSFVersionPrint(void)
     95void ppVizPatternVersionPrint(void)
    9696{
    9797    psTime *time = psTimeGetNow(PS_TIME_TAI); // The time now
    9898    psString timeString = psTimeToISO(time); // The time in an ISO string
    9999    psFree(time);
    100     psLogMsg("ppVizPSF", PS_LOG_INFO, "ppVizPSF at %s", timeString);
     100    psLogMsg("ppVizPattern", PS_LOG_INFO, "ppVizPattern at %s", timeString);
    101101    psFree(timeString);
    102102
    103103    psString pslib = psLibVersionLong();// psLib version
    104104    psString psmodules = psModulesVersionLong(); // psModules version
    105     psString ppVizPSF = ppVizPSFVersionLong(); // ppVizPSF version
     105    psString ppVizPattern = ppVizPatternVersionLong(); // ppVizPattern version
    106106
    107     psLogMsg("ppVizPSF", PS_LOG_INFO, "%s", pslib);
    108     psLogMsg("ppVizPSF", PS_LOG_INFO, "%s", psmodules);
    109     psLogMsg("ppVizPSF", PS_LOG_INFO, "%s", ppVizPSF);
     107    psLogMsg("ppVizPattern", PS_LOG_INFO, "%s", pslib);
     108    psLogMsg("ppVizPattern", PS_LOG_INFO, "%s", psmodules);
     109    psLogMsg("ppVizPattern", PS_LOG_INFO, "%s", ppVizPattern);
    110110
    111111    psFree(pslib);
    112112    psFree(psmodules);
    113     psFree(ppVizPSF);
     113    psFree(ppVizPattern);
    114114
    115115    return;
  • branches/eam_branches/20091201/ppViz/src/ppVizPattern/ppVizPatternVersionDefinitions.h.in

    r26827 r26837  
    1 #ifndef PPVIZPSF_VERSION_DEFINITIONS_H
    2 #define PPVIZPSF_VERSION_DEFINITIONS_H
     1#ifndef PPVIZPATTERN_VERSION_DEFINITIONS_H
     2#define PPVIZPATTERN_VERSION_DEFINITIONS_H
    33
    4 #define PPVIZPSF_VERSION @PPVIZPSF_VERSION@ // SVN version
    5 #define PPVIZPSF_BRANCH  @PPVIZPSF_BRANCH@  // SVN branch
    6 #define PPVIZPSF_SOURCE  @PPVIZPSF_SOURCE@  // SVN source
     4#define PPVIZPATTERN_VERSION @PPVIZPATTERN_VERSION@ // SVN version
     5#define PPVIZPATTERN_BRANCH  @PPVIZPATTERN_BRANCH@  // SVN branch
     6#define PPVIZPATTERN_SOURCE  @PPVIZPATTERN_SOURCE@  // SVN source
    77
    88#endif
Note: See TracChangeset for help on using the changeset viewer.