Changeset 63


Ignore:
Timestamp:
Sep 19, 2014 5:04:48 PM (10 years ago)
Author:
JohnLightfoot
Message:

almost working

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/uvmapgenerator.py

    r42 r63  
    33import collections
    44import numpy as np
     5
     6import pointingerrorgenerators
    57
    68
     
    911    """
    1012
    11     def __init__(self, parameters):
     13    def __init__(self, parameters, previous_results):
    1214        self.parameters = parameters
     15        self.previous_results = previous_results
    1316        self.result = collections.OrderedDict()
    1417
    1518    def run(self):
    1619        print 'UVMapGenerator.run'
     20
     21        # The FTS mirror positions per scan. This is found from the
     22        # FTS results that should have already been calculated.
     23        fts = self.previous_results['fts']
     24        self.result['ftsnsample'] = ftsnsample = fts['ftsnsample']
     25        delta_opd = fts['delta_opd']
     26
    1727        interferometer = self.parameters['substages']['Interferometer']
    1828
     
    3141            n_laps = (bmax - bmin) / bstep
    3242
     43#            n_baselines = 50
    3344            bxby = np.zeros([n_baselines,2])     
     45#            bxby[0,0] = 10.0
     46#            bxby[0,1] = 0.0
     47#            bxby[1,0] = 20.0
     48#            bxby[1,1] = 0.0
     49#            bxby[2,0] = 30.0
     50#            bxby[2,1] = 0.0
     51#            bxby[3,0] = 40.0
     52#            bxby[3,1] = 0.0
     53#            bxby[4,0] = 0.0
     54#            bxby[4,1] = 10.0
     55#            bxby[5,0] = 0.0
     56#            bxby[5,1] = 20.0
     57#            bxby[6,0] = 0.0
     58#            bxby[6,1] = 30.0
     59#            bxby[7,0] = 0.0
     60#            bxby[7,1] = 40.0
     61#            bxby[8,0] = 40.0
     62#            bxby[8,1] = 40.0
     63#            bxby[9,0] = 20.0
     64#            bxby[9,1] = 20.0
     65#            bxby[10,0] = 30.0
     66#            bxby[10,1] = 30.0
     67
    3468
    3569            # n_baselines is total number of points along spiral
    36             for i in range(n_baselines):
     70            for ib in range(n_baselines):
    3771                # phi is angle around spiral, r its radius
    38                 phi = n_laps * 2 * np.pi * (n_baselines-i) / n_baselines
     72                phi = n_laps * 2 * np.pi * (n_baselines-ib) / n_baselines
    3973                r = bmin + bstep * phi / (2 * np.pi)
    4074
    41                 bxby[i,:] = [r * np.cos(phi), r * np.sin(phi)]
     75                bxby[ib,:] = [r * np.cos(phi), r * np.sin(phi)]
    4276
     77            self.result['pattern'] = pattern
    4378            self.result['bxby'] = bxby
    4479            self.result['bmin'] = bmin
    4580            self.result['bmax'] = bmax
    4681            self.result['n_baselines'] = n_baselines
     82
     83            # Construct the obs framework that will give one FTS
     84            # scan at each baseline.
     85     
     86            # The framework will hold the baseline and FTS mirror position
     87            # for each time that the detector is read.
     88
     89            # The observation consists of a series of FTS scans. The
     90            # instrument baseline, pointing etc. can change continuously
     91            # as the scan is performed.
     92 
     93            obs_framework = []
     94            Config = collections.namedtuple('Config', [
     95              'scan_number',
     96              'baseline_x', 'baseline_y', 'baseline_z', 'baseline_number',
     97              'fts_position', 'fts_nominal_position', 'fts_start',
     98              'point1_x_error', 'point1_y_error',
     99              'point2_x_error', 'point2_y_error',
     100              'data'],
     101              verbose=False)
     102
     103            for ib in range(n_baselines):
     104                opd_start = -((ftsnsample + 1) / 2) * delta_opd
     105
     106                fts_start = True
     107                for ifts in np.arange(ftsnsample):
     108                    opd = opd_start + float(ifts) * delta_opd
     109                    fts_mirror = opd / 2.0
     110                    config = Config(ib, bxby[ib][0], bxby[ib][1], 0.0, ib,
     111                      fts_mirror, fts_mirror, fts_start, 0.0, 0.0, 0.0,
     112                      0.0, None)
     113                    obs_framework.append(config)
     114                    fts_start = False
     115
     116            png = pointingerrorgenerators.GaussianPointingErrors(mu0=1.0,
     117              sigma0=0.0, mu1=0.0, sigma1=0.0)
     118            png.fill(obs_framework)
     119
     120            self.result['obs_framework'] = obs_framework
    47121
    48122        else:
     
    52126
    53127    def __repr__(self):
    54         return 'UVMapGenerator'
     128        return '''
     129UVMapGenerator:
     130  uv pattern      : {pattern}
     131  FTS samples/scan: {ftsnsample}
     132  obs.framework length: {len_framework}
     133'''.format(
     134          pattern=self.result['pattern'],
     135          ftsnsample=self.result['ftsnsample'],
     136          len_framework=len(self.result['obs_framework']))
    55137
     138
Note: See TracChangeset for help on using the changeset viewer.