IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 9, 2008, 3:28:25 PM (18 years ago)
Author:
Paul Price
Message:

Allow specification of tess_id when generating simulated data, and when injecting.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippScripts/scripts/ipp_simulation_data.pl

    r16489 r17622  
    1313use Pod::Usage qw( pod2usage );
    1414use PS::IPP::Config qw(
    15                        $PS_EXIT_SUCCESS
    16                        $PS_EXIT_UNKNOWN_ERROR
    17                        $PS_EXIT_SYS_ERROR
    18                        $PS_EXIT_CONFIG_ERROR
    19                        $PS_EXIT_PROG_ERROR
    20                        $PS_EXIT_DATA_ERROR
    21                        $PS_EXIT_TIMEOUT_ERROR
    22                        caturi
    23                        );
     15                       $PS_EXIT_SUCCESS
     16                       $PS_EXIT_UNKNOWN_ERROR
     17                       $PS_EXIT_SYS_ERROR
     18                       $PS_EXIT_CONFIG_ERROR
     19                       $PS_EXIT_PROG_ERROR
     20                       $PS_EXIT_DATA_ERROR
     21                       $PS_EXIT_TIMEOUT_ERROR
     22                       caturi
     23                       );
    2424
    2525my $ipprc = PS::IPP::Config->new(); # IPP configuration
    2626
    27 my ($name,                      # Base name for output images
    28     $camera,                    # Name of camera to use
    29     $telescope,                 # Telescope name
    30     $dbname,                    # Database name
    31     $path,                      # Path to data
    32     $workdir,                   # Working directory for data
    33     $no_cal,                    # Don't produce calibration files
    34     $no_update                  # Don't update the database
     27my ($name,                      # Base name for output images
     28    $camera,                    # Name of camera to use
     29    $telescope,                 # Telescope name
     30    $tess_id,                   # Tessellation identifier
     31    $dbname,                    # Database name
     32    $path,                      # Path to data
     33    $workdir,                   # Working directory for data
     34    $no_cal,                    # Don't produce calibration files
     35    $no_update                  # Don't update the database
    3536    );
    3637
    3738GetOptions(
    38            'name=s'        => \$name,
    39            'camera=s'      => \$camera,
    40            'telescope=s'   => \$telescope,
    41            'dbname=s'      => \$dbname,
    42            'path=s'        => \$path,
    43            'workdir=s'     => \$workdir,
    44            'no-cal'        => \$no_cal,
    45            'no-update'     => \$no_update,
    46            ) or pod2usage( 2 );
     39           'name=s'        => \$name,
     40           'camera=s'      => \$camera,
     41           'telescope=s'   => \$telescope,
     42           'tess_id=s'     => \$tess_id,
     43           'dbname=s'      => \$dbname,
     44           'path=s'        => \$path,
     45           'workdir=s'     => \$workdir,
     46           'no-cal'        => \$no_cal,
     47           'no-update'     => \$no_update,
     48           ) or pod2usage( 2 );
    4749
    4850pod2usage( -msg => "Unknown option: @ARGV", -exitval => 2 ) if @ARGV;
     
    5052pod2usage(
    5153          -msg => "Required options: --name --path --camera --telescope --dbname",
    52             -exitval => 3,
    53           ) unless
     54            -exitval => 3,
     55          ) unless
    5456    defined $name and
    5557    defined $path and
     
    6769    or (warn "Can't find ipp_serial_inject_mosaic.pl" and $missing_tools = 1);
    6870
    69 if ($missing_tools) { 
     71if ($missing_tools) {
    7072    warn ("Can't find required tools");
    71     exit($PS_EXIT_CONFIG_ERROR); 
     73    exit($PS_EXIT_CONFIG_ERROR);
    7274}
    7375
     
    7678# Dark exposure times
    7779use constant DARK => [ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
    78                        300, 300, 300, 300, 300, 300, 300, 300, 300, 300 ];
     80                       300, 300, 300, 300, 300, 300, 300, 300, 300, 300 ];
    7981# Flat-field image characteristics
    8082use constant FLAT => [
    81                       {
    82                           filter => 'r',
    83                           exptime => [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.5, 1, 2, 5, 10, 20, 20, 20, 20, 20 ],
    84                       },
    85                       {
    86                           filter => 'i',
    87                           exptime => [ 20, 20, 20, 20, 20 ],
    88                       }
    89                       ];
     83                      {
     84                          filter => 'r',
     85                          exptime => [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.5, 1, 2, 5, 10, 20, 20, 20, 20, 20 ],
     86                      },
     87                      {
     88                          filter => 'i',
     89                          exptime => [ 20, 20, 20, 20, 20 ],
     90                      }
     91                      ];
    9092# Object image characteristics
    9193use constant OBJECT => [
    92                         {
    93                             filter => 'r',
    94                             exptime => [ 5, 10, 10, 10, 10, 10, 240 ],
    95                             seeing => [ 0.8, 0.4, 0.6, 0.8, 1.2, 1.5, 0.7 ],
    96                             ra => 150.119167,
    97                             dec => 2.205833,
    98                             pa => 0,
    99                             zp => 25.15,
    100                             sky => 20.86,
    101                             dither => 40,
    102                         },
    103                         {
    104                             filter => 'i',
    105                             exptime => [ 5, 30, 30, 30, 30, 30, 240 ],
    106                             seeing => [ 0.8, 0.4, 0.6, 0.8, 1.2, 1.5, 0.7 ],
    107                             ra => 150.119167,
    108                             dec => 2.205833,
    109                             pa => 0,
    110                             zp => 25.00,
    111                             sky => 20.15,
    112                             dither => 40,
    113                         },
    114                         ];
    115 use constant SCALE => 0.2;      # Plate scale
     94                        {
     95                            filter => 'r',
     96                            exptime => [ 5, 10, 10, 10, 10, 10, 240 ],
     97                            seeing => [ 0.8, 0.4, 0.6, 0.8, 1.2, 1.5, 0.7 ],
     98                            ra => 150.119167,
     99                            dec => 2.205833,
     100                            pa => 0,
     101                            zp => 25.15,
     102                            sky => 20.86,
     103                            dither => 40,
     104                        },
     105                        {
     106                            filter => 'i',
     107                            exptime => [ 5, 30, 30, 30, 30, 30, 240 ],
     108                            seeing => [ 0.8, 0.4, 0.6, 0.8, 1.2, 1.5, 0.7 ],
     109                            ra => 150.119167,
     110                            dec => 2.205833,
     111                            pa => 0,
     112                            zp => 25.00,
     113                            sky => 20.15,
     114                            dither => 40,
     115                        },
     116                        ];
     117use constant SCALE => 0.2;      # Plate scale
    116118
    117119#############################################################################################################
     
    120122
    121123my $counter = 0;
     124my $tessellation = (defined $tess_id) ? "--tess_id $tess_id" : ""; # Additional switch for tessellation
    122125
    123126# Generate bias images
    124127for (my $i = 0; $i < BIAS; $i++) {
    125     my $basename;               # Output base filename
     128    my $basename;               # Output base filename
    126129    ( $basename, $counter ) = filename( $name, $counter );
    127130    my $filename = caturi( $path, $basename );
    128131    unless ($no_cal) {
    129         run( command => "$ppSim -camera $camera -type BIAS $filename",
    130              verbose => 1 ) or die "Unable to run ppSim";
    131         unless ($no_update) {
    132             run( command => "$inject --camera $camera --telescope $telescope --path $path " .
    133                  "--workdir $workdir --dbname $dbname $basename",
    134                 verbose => 1 ) or die "Unable to inject file.";
    135         }
     132        run( command => "$ppSim -camera $camera -type BIAS $filename",
     133             verbose => 1 ) or die "Unable to run ppSim";
     134        unless ($no_update) {
     135            run( command => "$inject --camera $camera --telescope $telescope --path $path " .
     136                 "$tessellation --workdir $workdir --dbname $dbname $basename",
     137                verbose => 1 ) or die "Unable to inject file.";
     138        }
    136139    }
    137140}
     
    139142# Generate dark images
    140143foreach my $exptime ( @{DARK()} ) {
    141     my $basename;               # Output base filename
     144    my $basename;               # Output base filename
    142145    ( $basename, $counter ) = filename( $name, $counter );
    143146    my $filename = caturi( $path, $basename );
    144147    unless ($no_cal) {
    145         run ( command => "$ppSim -camera $camera -type DARK -exptime $exptime $filename",
    146               verbose => 1 ) or die "Unable to run ppSim";
    147         unless ($no_update) {
    148             run( command => "$inject --camera $camera --telescope $telescope --path $path " .
    149                  "--workdir $workdir --dbname $dbname $basename",
    150                 verbose => 1 ) or die "Unable to inject file.";
    151         }
     148        run ( command => "$ppSim -camera $camera -type DARK -exptime $exptime $filename",
     149              verbose => 1 ) or die "Unable to run ppSim";
     150        unless ($no_update) {
     151            run( command => "$inject --camera $camera --telescope $telescope --path $path " .
     152                 "$tessellation --workdir $workdir --dbname $dbname $basename",
     153                verbose => 1 ) or die "Unable to inject file.";
     154        }
    152155    }
    153156}
     
    157160    my $filter = $set->{filter}; # Name of filter
    158161    foreach my $exptime ( @{$set->{exptime}} ) {
    159         my $basename;           # Output base filename
    160         ( $basename, $counter ) = filename( $name, $counter );
    161         my $filename = caturi( $path, $basename );
    162         unless ($no_cal) {
    163             run( command => "$ppSim -camera $camera -type FLAT -filter $filter -exptime $exptime $filename",
    164                 verbose => 1 ) or die "Unable to run ppSim";
    165             unless ($no_update) {
    166                 run( command => "$inject --camera $camera --telescope $telescope --path $path " .
    167                      "--workdir $workdir --dbname $dbname $basename",
    168                      verbose => 1 ) or die "Unable to inject file.";
    169             }
    170         }
     162        my $basename;           # Output base filename
     163        ( $basename, $counter ) = filename( $name, $counter );
     164        my $filename = caturi( $path, $basename );
     165        unless ($no_cal) {
     166            run( command => "$ppSim -camera $camera -type FLAT -filter $filter -exptime $exptime $filename",
     167                verbose => 1 ) or die "Unable to run ppSim";
     168            unless ($no_update) {
     169                run( command => "$inject --camera $camera --telescope $telescope --path $path " .
     170                     "$tessellation --workdir $workdir --dbname $dbname $basename",
     171                     verbose => 1 ) or die "Unable to inject file.";
     172            }
     173        }
    171174    }
    172175}
     
    175178foreach my $set ( @{OBJECT()} ) {
    176179    my $filter = $set->{filter}; # Name of filter
    177     my $ra0 = $set->{ra};       # Base Right Ascension (deg)
    178     my $dec0 = $set->{dec};     # Base Declination (deg)
    179     my $pa = $set->{pa};        # Position angle (deg)
    180     my $zp = $set->{zp};        # Zero point
    181     my $scale = SCALE();        # Plate scale (arcsec/pix)
    182     my $sky = 10**( -0.4 * ( $set->{sky} - $zp ) ) * $scale**2; # Sky background (counts/s)
    183     my $dither = $set->{dither} / 3600; # Dither size (deg)
     180    my $ra0 = $set->{ra};       # Base Right Ascension (deg)
     181    my $dec0 = $set->{dec};     # Base Declination (deg)
     182    my $pa = $set->{pa};        # Position angle (deg)
     183    my $zp = $set->{zp};        # Zero point
     184    my $scale = SCALE();        # Plate scale (arcsec/pix)
     185    my $sky = 10**( -0.4 * ( $set->{sky} - $zp ) ) * $scale**2; # Sky background (counts/s)
     186    my $dither = $set->{dither} / 3600; # Dither size (deg)
    184187
    185188    for (my $i = 0; $i < scalar @{$set->{exptime}}; $i++) {
    186         my $exptime = ${$set->{exptime}}[$i]; # Exposure time
    187         my $seeing = ${$set->{seeing}}[$i]; # Seeing (pix)
    188         my $ra = $ra0 + (2*rand() - 1) * $dither * cos(deg2rad($dec0)); # RA with dither
    189         my $dec = $dec0 + (2*rand() - 1) * $dither; # Dec with dither
    190 
    191         my $basename;           # Output base filename
    192         ( $basename, $counter ) = filename( $name, $counter );
    193         my $filename = caturi( $path, $basename );
    194         run( command => "$ppSim -camera $camera -type OBJECT -filter $filter -exptime $exptime " .
    195              "-skyrate $sky -ra $ra -dec $dec -pa $pa -scale $scale -zp $zp -seeing $seeing $filename",
    196              verbose => 1 ) or die "Unable to run ppSim";
    197         unless ($no_update) {
    198             run( command => "$inject --camera $camera --telescope $telescope --path $path " .
    199                  "--workdir $workdir --dbname $dbname $basename",
    200                 verbose => 1 ) or die "Unable to inject file.";
    201         }
     189        my $exptime = ${$set->{exptime}}[$i]; # Exposure time
     190        my $seeing = ${$set->{seeing}}[$i]; # Seeing (pix)
     191        my $ra = $ra0 + (2*rand() - 1) * $dither * cos(deg2rad($dec0)); # RA with dither
     192        my $dec = $dec0 + (2*rand() - 1) * $dither; # Dec with dither
     193
     194        my $basename;           # Output base filename
     195        ( $basename, $counter ) = filename( $name, $counter );
     196        my $filename = caturi( $path, $basename );
     197        run( command => "$ppSim -camera $camera -type OBJECT -filter $filter -exptime $exptime " .
     198             "-skyrate $sky -ra $ra -dec $dec -pa $pa -scale $scale -zp $zp -seeing $seeing $filename",
     199             verbose => 1 ) or die "Unable to run ppSim";
     200        unless ($no_update) {
     201            run( command => "$inject --camera $camera --telescope $telescope --path $path " .
     202                 "$tessellation --workdir $workdir --dbname $dbname $basename",
     203                verbose => 1 ) or die "Unable to inject file.";
     204        }
    202205    }
    203206}
     
    210213sub filename
    211214{
    212     my $base = shift;           # Base name
    213     my $num = shift;            # Number
    214     my $workdir = shift;        # Working directory
     215    my $base = shift;           # Base name
     216    my $num = shift;            # Number
     217    my $workdir = shift;        # Working directory
    215218    my $name = sprintf("$base%04d", $num);
    216219    $num++;
Note: See TracChangeset for help on using the changeset viewer.