NCCOOS Trac Projects: Top | Web | Platforms | Processing | Viz | Sprints | Sandbox | (Wind)

Changeset 189

Show
Ignore:
Timestamp:
09/05/08 13:32:33
Author:
cbc
Message:

Saving work.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sodar/branches/raw2proc-dev/proc_remtech_rawdata_pa0.py

    r188 r189  
    1111 
    1212from sodar import rawData 
     13import math 
    1314import numpy as n 
    1415from datetime import timedelta 
    1516from procutil import scanf_datetime, dt2es 
     17 
     18INVALID       = '-9999' 
     19BLOCKNUMBER   = 'BL#' 
     20MONTH         = 'MONTH' 
     21DAY           = 'DAY' 
     22YEAR          = 'YEAR' 
     23HOUR          = 'HOUR' 
     24MINUTE        = 'MIN' 
     25VALIDATIONS1  = 'VAL1' 
     26VALIDATIONS2  = 'VAL2' 
     27VALIDATIONS3  = 'VAL3' 
     28VALIDATIONS4  = 'VAL4' 
     29PROBABILITY1  = 'SPU1' 
     30PROBABILITY2  = 'SPU2' 
     31PROBABILITY3  = 'SPU3' 
     32PROBABILITY4  = 'SPU4' 
     33AMBIENTNOISE1 = 'NOIS1' 
     34AMBIENTNOISE2 = 'NOIS2' 
     35AMBIENTNOISE3 = 'NOIS3' 
     36AMBIENTNOISE4 = 'NOIS4' 
     37CLUTTER       = 'FEMAX' 
     38SOFTWARE      = 'SOFTW' 
     39FREQUENCIES11 = 'FE11' 
     40FREQUENCIES12 = 'FE12' 
     41FREQUENCIES21 = 'FE21' 
     42FREQUENCIES22 = 'FE22' 
     43SIGNALNOISE1  = 'SNR1' 
     44SIGNALNOISE2  = 'SNR2' 
     45SIGNALNOISE3  = 'SNR3' 
     46SIGNALNOISE4  = 'SNR4' 
     47REFERENCE     = 'CHECK' 
     48JAM           = 'JAM' 
     49ALTITUDE      = 'ALT' 
     50ECHO          = 'CT' 
     51RADIAL        = 'SPEED' 
     52THETA         = 'DIR' 
     53VERTICAL      = 'W' 
    1654 
    1755def parser(platform_info, sensor_info, lines): 
     
    2260    rawDataObject = rawdata.RawData('\n'.join(lines)) 
    2361     
    24     numIntervals = len(rawDataObject) 
    25     numAltitudes = sensor_info[num_altitudes] 
     62    numSamples       = len(rawDataObject) 
     63    minAltitude      = sensor_info[min_altitude] 
     64    altitudeInterval = sensor_info[altitude_interval] 
     65    numAltitudes     = sensor_info[num_altitudes] 
     66    sensorElevation  = sensor_info[sensor_elevation] 
     67     
     68    altitudes = [(altitudeNum * altitudeInterval) + minAltitude 
     69                  for altitudeNum in range(numAltitudes)] 
     70    elevations  = [altitude + sensorElevation for altitude in altitudes] 
     71    altitudes = [str(altitude) for altitude in altitudes] 
    2672     
    2773    data = { 
    28         'block'   : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    29         'dt'      : n.array(n.ones((numIntervals,), dtype=object) * n.nan), 
    30         'es'      : n.array(n.ones((numIntervals,), dtype=long) * n.nan), 
    31         'val1'    : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    32         'val2'    : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    33         'val3'    : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    34         'val4'    : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    35         'spu1'    : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    36         'spu2'    : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    37         'spu3'    : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    38         'spu4'    : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    39         'nois1'   : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    40         'nois2'   : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    41         'nois3'   : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    42         'nois4'   : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    43         'femax'   : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    44         'softw'   : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    45         'fe11'    : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    46         'fe12'    : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    47         'fe21'    : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    48         'fe22'    : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    49         'snr1'    : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    50         'snr2'    : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    51         'snr3'    : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    52         'snr4'    : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    53         'check'   : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    54         'jam'     : n.array(n.ones((numIntervals,), dtype=int) * n.nan), 
    55         'z'       : n.array(n.ones((numAltitudes,), dtype=float) * n.nan), 
    56         'u'       : n.array(n.ones((numIntervals, 
     74        'block'   : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     75        'dt'      : n.array(n.ones((numSamples,), dtype=object) * n.nan), 
     76        'es'      : n.array(n.ones((numSamples,), dtype=long) * n.nan), 
     77        'val1'    : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     78        'val2'    : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     79        'val3'    : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     80        'val4'    : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     81        'spu1'    : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     82        'spu2'    : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     83        'spu3'    : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     84        'spu4'    : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     85        'nois1'   : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     86        'nois2'   : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     87        'nois3'   : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     88        'nois4'   : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     89        'femax'   : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     90        'softw'   : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     91        'fe11'    : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     92        'fe12'    : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     93        'fe21'    : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     94        'fe22'    : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     95        'snr1'    : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     96        'snr2'    : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     97        'snr3'    : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     98        'snr4'    : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     99        'check'   : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     100        'jam'     : n.array(n.ones((numSamples,), dtype=int) * n.nan), 
     101        'z'       : n.array(elevations, dtype=float), 
     102        'u'       : n.array(n.ones((numSamples, 
    57103                                    numAltitudes), dtype=float) * n.nan),  
    58         'v'       : n.array(n.ones((numIntervals, 
     104        'v'       : n.array(n.ones((numSamples, 
    59105                                    numAltitudes), dtype=float) * n.nan), 
    60         'w'       : n.array(n.ones((numIntervals, 
     106        'w'       : n.array(n.ones((numSamples, 
    61107                                    numAltitudes), dtype=float) * n.nan), 
    62         'echo'    : n.array(n.ones((numIntervals, 
     108        'echo'    : n.array(n.ones((numSamples, 
    63109                                    numAltitudes), dtype = int) * n.nan), 
    64110        } 
    65111     
    66112    for sample in rawDataObject: 
    67         i = rawDataObject.index(sample) 
    68          
    69         data['block'][i] = int(sample['BL#']) 
     113        sampleIndex = rawDataObject.index(sample) 
     114         
     115        data['block'][sampleIndex] = int(sample[BLOCKNUM]) 
    70116                                
    71         dt = {'month' : int(sample['MONTH']), 
    72               'day'   : int(sample['DAY']), 
    73               'year'  : int(sample['YEAR']), 
    74               'hour'  : int(sample['HOUR']), 
    75               'min'   : int(sample['MIN']), 
     117        dt = {'month' : int(sample[MONTH]), 
     118              'day'   : int(sample[DAY]), 
     119              'year'  : int(sample[YEAR]), 
     120              'hour'  : int(sample[HOUR]), 
     121              'min'   : int(sample[MINUTE]), 
    76122            } 
    77123        dt = '%(month)02d-%(day)02d-%(year)04d %(hour)02d:%02d(min)' % dt 
     
    79125        if sensor_info['utc_offset']: 
    80126            dt = dt + timedelta(hours=sensor_info['utc_offset']) 
    81         data['dt'][i] = dt 
    82          
    83         data['es'][i] = dt2es(dt) 
    84          
    85         data['val1'][i] = int(sample['VAL1']) 
    86         data['val2'][i] = int(sample['VAL2']) 
    87         data['val3'][i] = int(sample['VAL3']) 
    88         data['val4'][i] = int(sample['VAL4']) 
    89          
    90         data['spu1'][i] = int(sample['SPU1']) 
    91         data['spu2'][i] = int(sample['SPU2']) 
    92         data['spu3'][i] = int(sample['SPU3']) 
    93         data['spu4'][i] = int(sample['SPU4']) 
    94          
    95         data['nois1'][i] = int(sample['NOIS1']) 
    96         data['nois2'][i] = int(sample['NOIS2']) 
    97         data['nois3'][i] = int(sample['NOIS3']) 
    98         data['nois4'][i] = int(sample['NOIS4']) 
    99  
    100         data['femax'][i] = int(sample['FEMAX']) 
    101         data['softw'][i] = int(sample['SOFTW']) 
    102          
    103         data['fe11'][i] = int(sample['FE11']) 
    104         data['fe12'][i] = int(sample['FE12']) 
    105         data['fe21'][i] = int(sample['FE21']) 
    106         data['fe22'][i] = int(sample['FE22']) 
    107          
    108         data['snr1'][i] = int(sample['SNR1']) 
    109         data['snr2'][i] = int(sample['SNR2']) 
    110         data['snr3'][i] = int(sample['SNR3']) 
    111         data['snr4'][i] = int(sample['SNR4']) 
    112  
    113         data['check'][i] = int(sample['CHECK']) 
    114         data['jam'][i]   = int(sample['JAM']) 
     127        data['dt'][sampleIndex] = dt 
     128         
     129        data['es'][sampleIndex] = dt2es(dt) 
     130         
     131        data['val1'][sampleIndex] = int(sample[VALIDATIONS1]) 
     132        data['val2'][sampleIndex] = int(sample[VALIDATIONS2]) 
     133        data['val3'][sampleIndex] = int(sample[VALIDATIONS3]) 
     134        data['val4'][sampleIndex] = int(sample[VALIDATIONS4]) 
     135         
     136        data['spu1'][sampleIndex] = int(sample[PROBABILITY1]) 
     137        data['spu2'][sampleIndex] = int(sample[PROBABILITY2]) 
     138        data['spu3'][sampleIndex] = int(sample[PROBABILITY]) 
     139        data['spu4'][sampleIndex] = int(sample[PROBABILITY4]) 
     140         
     141        data['nois1'][sampleIndex] = int(sample[AMBIENTNOISE1]) 
     142        data['nois2'][sampleIndex] = int(sample[AMBIENTNOISE2]) 
     143        data['nois3'][sampleIndex] = int(sample[AMBIENTNOISE3]) 
     144        data['nois4'][sampleIndex] = int(sample[AMBIENTNOISE4]) 
     145 
     146        data['femax'][sampleIndex] = int(sample[CLUTTER]) 
     147        data['softw'][sampleIndex] = int(sample[SOFTWARE]) 
     148         
     149        data['fe11'][sampleIndex] = int(sample[FREQUENCIES11]) 
     150        data['fe12'][sampleIndex] = int(sample[FREQUENCIES12]) 
     151        data['fe21'][sampleIndex] = int(sample[FREQUENCIES21]) 
     152        data['fe22'][sampleIndex] = int(sample[FREQUENCIES22]) 
     153         
     154        data['snr1'][sampleIndex] = int(sample[SIGNALNOISE1]) 
     155        data['snr2'][sampleIndex] = int(sample[SIGNALNOISE2]) 
     156        data['snr3'][sampleIndex] = int(sample[SIGNALNOISE3]) 
     157        data['snr4'][sampleIndex] = int(sample[SIGNALNOISE4]) 
     158 
     159        data['check'][sampleIndex] = int(sample[REFERENCE]) 
     160        data['jam'][sampleIndex]   = int(sample[JAM]) 
     161         
     162        for altitude,alttitudeIndex in zip(altitudes, range(len(altitudes))): 
     163            echo   = sample[altitude][ECHO] 
     164            radial = sample[altitude][RADIAL] 
     165            theta  = sample[altitude][THETA] 
     166            vertical = sample[altitude][VERTICAL] 
     167             
     168            if radial != INVALID and theta != INVALID: 
     169                theta  = math.pi * float(theta) / 180.0 
     170                radial = float(radial) 
     171                data['u'][sampleIndex][altitideIndex] = radial * math.sin(theta) 
     172                data['v'][sampleIndex][altitudeIndex] = radial * math.cos(theta) 
     173             
     174            if echo != INVALID: 
     175                data['echo'][sampleIndex][altitudeIndex] = echo 
     176                 
     177            if vertical != INVALID: 
     178                data['w'][sampleIndex][altitudeIndex] = vertical 
     179     
    115180    return data 
    116181