def test_uv_to_r_theta_wind(rq_wind):
    rq_out = uv_to_r_theta_wind(rq_wind['uv'])
    print 'actual (r,theta): '
    print rq_out
    print 'computed (r,theta): '
    print rq_wind['rq']
    assert np.allclose(rq_out, rq_wind['rq'], atol, rtol)
def test_wind_inverse(rq_rand):
    """
    randomly generates an (r,theta) and applies the transform to
    convert to (u,v), then back to (r,theta).
    It checks the result is accurate to within 10-10 absolute tolerance
    """

    rq_out = uv_to_r_theta_wind(r_theta_to_uv_wind(rq_rand['rq']))
    print 'actual (r,theta): '
    print rq_rand['rq']
    print 'computed (r,theta): '
    print rq_out
    assert np.allclose(rq_out, rq_rand['rq'], inv_atol, rtol)
Beispiel #3
0
def to_datetime_value_2d(time_value_pair, out_ts_format):
    """
    converts a numpy array containing basic_types.time_value_pair to a
    numpy array containing basic_types.datetime_value_2d in user specified
    basic_types.ts_format

    :param time_value_pair: numpy array of type basic_types.time_value_pair
    :param out_ts_format: desired format of the array defined by one of the
                          options given in basic_types.ts_format
    """

    if time_value_pair.dtype != basic_types.time_value_pair:
        raise ValueError('Method expects a numpy array containing basic_types.time_value_pair'
                         )

    datetime_value_2d = np.zeros((len(time_value_pair), ),
                                 dtype=basic_types.datetime_value_2d)

    if isinstance(out_ts_format, basestring):
        out_ts_format = tsformat(out_ts_format)

    # convert time_value_pair to datetime_value_2d in desired output format

    if out_ts_format == basic_types.ts_format.magnitude_direction:
        datetime_value_2d['time'] = \
            time_utils.sec_to_date(time_value_pair['time'])

        uv = np.zeros((len(time_value_pair), 2), dtype=np.double)
        uv[:, 0] = time_value_pair['value']['u']
        uv[:, 1] = time_value_pair['value']['v']

        datetime_value_2d['value'] = transforms.uv_to_r_theta_wind(uv)
    elif out_ts_format == basic_types.ts_format.uv:

        datetime_value_2d['time'] = \
            time_utils.sec_to_date(time_value_pair['time'])
        datetime_value_2d['value'][:, 0] = time_value_pair['value']['u']
        datetime_value_2d['value'][:, 1] = time_value_pair['value']['v']
    else:

        raise ValueError('out_ts_format is not one of the two supported types: basic_types.ts_format.magnitude_direction, basic_types.ts_format.uv'
                         )

    return datetime_value_2d
Beispiel #4
0
def to_datetime_value_2d(time_value_pair, out_ts_format):
    """
    converts a numpy array containing basic_types.time_value_pair to a
    numpy array containing basic_types.datetime_value_2d in user specified
    basic_types.ts_format

    :param time_value_pair: numpy array of type basic_types.time_value_pair
    :param out_ts_format: desired format of the array defined by one of the
                          options given in basic_types.ts_format
    """
    if time_value_pair.dtype != basic_types.time_value_pair:
        raise ValueError('Method expects a numpy array containing '
                         'basic_types.time_value_pair')

    datetime_value_2d = np.zeros((len(time_value_pair), ),
                                 dtype=basic_types.datetime_value_2d)

    if isinstance(out_ts_format, basestring):
        out_ts_format = tsformat(out_ts_format)

    # convert time_value_pair to datetime_value_2d in desired output format
    if out_ts_format == basic_types.ts_format.magnitude_direction:
        datetime_value_2d['time'] = \
            time_utils.sec_to_date(time_value_pair['time'])

        uv = np.zeros((len(time_value_pair), 2), dtype=np.double)
        uv[:, 0] = time_value_pair['value']['u']
        uv[:, 1] = time_value_pair['value']['v']

        datetime_value_2d['value'] = transforms.uv_to_r_theta_wind(uv)
    elif out_ts_format == basic_types.ts_format.uv:
        datetime_value_2d['time'] = \
            time_utils.sec_to_date(time_value_pair['time'])
        datetime_value_2d['value'][:, 0] = time_value_pair['value']['u']
        datetime_value_2d['value'][:, 1] = time_value_pair['value']['v']
    else:
        raise ValueError('out_ts_format is not one of the two supported '
                         'types: '
                         'basic_types.ts_format.magnitude_direction, '
                         'basic_types.ts_format.uv')

    return datetime_value_2d