示例#1
0
    def test_sky_model(self):
        """ Test sky model file loading """

        sky_model_file_contents = (
            '# format npsrc: l, m, I, Q, U, V\n'
            '11, 12, 13, 14, 15, 16\n'
            '21, 22, 23, 24, 25, 26\n'
            '# format ngsrc: l, m, I, Q, U, V, el, em, eR\n'
            '31, 32, 33, 34, 35, 36, 37, 38, 39\n'
            '41, 42, 43, 44, 45, 46, 47, 48, 49\n')

        with tempfile.NamedTemporaryFile('w') as f:
            f.write(sky_model_file_contents)
            f.flush()

            result = mbu.parse_sky_model(f.name)
            A, S = result.arrays, result.src_counts

        self.assertTrue(S['npsrc'] == 2)
        self.assertTrue(S['ngsrc'] == 2)

        self.assertTrue(A['l'] == ['11', '21', '31', '41'])
        self.assertTrue(A['m'] == ['12', '22', '32', '42'])
        self.assertTrue(A['I'] == ['13', '23', '33', '43'])
        self.assertTrue(A['Q'] == ['14', '24', '34', '44'])
        self.assertTrue(A['U'] == ['15', '25', '35', '45'])
        self.assertTrue(A['V'] == ['16', '26', '36', '46'])
        self.assertTrue(A['el'] == ['37', '47'])
        self.assertTrue(A['em'] == ['38', '48'])
        self.assertTrue(A['eR'] == ['39', '49'])

        ft = np.float32
        shape = (2, S['npsrc'] + S['ngsrc'])
        ary = result.shape_arrays(['l','m'], shape, ft)
        self.assertTrue(ary.shape == shape)

        fl = (((np.arange(4) + 1)*10) + 1).astype(ft)
        fm = (((np.arange(4) + 1)*10) + 2).astype(ft)
        self.assertTrue(np.all(ary[0] == fl))
        self.assertTrue(np.all(ary[1] == fm))
    import argparse

    parser = argparse.ArgumentParser(description='RIME MS test script')
    parser.add_argument('msfile', help='Measurement Set File')
    parser.add_argument('-s', '--sky-file', dest='sky_file', type=str, required=True, help='Sky Model File')
    parser.add_argument('-c','--count',dest='count', type=int, default=10, help='Number of Iterations')
    parser.add_argument('-v','--version',dest='version', type=str, default='v4', choices=[Options.VERSION_FOUR],
        help='RIME Pipeline Version.')

    args = parser.parse_args(sys.argv[1:])

    # Set the logging level
    montblanc.log.setLevel(logging.WARN)

    # Parse the sky model file
    sky_parse = mbu.parse_sky_model(args.sky_file)

    sources = montblanc.sources(point=sky_parse.src_counts.get('npsrc', 0),
        gaussian=sky_parse.src_counts.get('ngsrc', 0),
        sersic=sky_parse.src_counts.get('nssrc', 0))

    slvr_cfg = montblanc.rime_solver_cfg(msfile=args.msfile,
        sources=sources, init_weights=None, weight_vector=False,
        version=args.version)

    with montblanc.rime_solver(slvr_cfg) as slvr:
        # Get the lm coordinates
        lm = sky_parse.shape_arrays(['l','m'], slvr.lm.shape, slvr.lm.dtype)

        # Get the stokes and alpha parameters
        stokes, alpha = repeat_brightness_over_time(slvr, sky_parse)