Exemple #1
0
def test_init():
    """
    Can the classes be intitialized?
    """
    w = nc_particles.Writer('junk_file.nc')
    del w
    print(os.getcwd())
    nc_particles.Reader('sample.nc')
Exemple #2
0
def test_writer_with_ref_time():
    w = nc_particles.Writer('junk_file.nc',
                            ref_time=datetime.datetime(2010, 2, 3, 0))
    del w
    nc = netCDF4.Dataset('junk_file.nc')
    units = nc.variables['time'].units
    nc.close()
    assert units == "seconds since 2010-02-03T00:00:00"
Exemple #3
0
def test_write_timestep_wrong_size():
    """very simple version"""
    w = nc_particles.Writer('junk_file.nc', nc_version=4)
    data = {
        "longitude": [43.2, 43.3, 43.4],
        "latitude": [31.0, 31.2, 31.3],
        "id": [1, 2]
    }
    with pytest.raises(ValueError):
        w.write_timestep(datetime.datetime(2010, 2, 3, 0), data)
    del w
Exemple #4
0
def test_write_timestep():
    """very simple version"""
    w = nc_particles.Writer('junk_file.nc',
                            ref_time=datetime.datetime(2010, 2, 3, 0),
                            nc_version=4)
    data = {
        "longitude": [43.2, 43.3, 43.4],
        "latitude": [31.0, 31.2, 31.3],
        "id": [1, 2, 3]
    }
    w.write_timestep(datetime.datetime(2010, 2, 3, 0), data)
    # and another (same data, but whatever..)
    w.write_timestep(datetime.datetime(2010, 2, 3, 0), data)
    del w
Exemple #5
0
def test_write_missmatch():
    """
    test to see that an exception is raised if a miss-match in array sizes occurs
    """
    writer = nc_particles.Writer(
        "junk.nc",
        num_timesteps=1,
        ref_time=datetime.datetime.now(),
    )
    data = {
        'longitude': np.array([
            -88.0,
            -88.1,
        ], dtype=np.float64),
        'latitude': np.array([
            28.0,
            28.0,
            28.1,
        ], dtype=np.float64),
    }
    with pytest.raises(ValueError):
        writer.write_timestep(datetime.datetime.now(), data)
    writer.close()
Exemple #6
0
def write_sample_file(filename):
    start_time = datetime.datetime(2010, 11, 3, 12)
    #timesteps = [T.start_time + datetime.timedelta(hour=1) for i in range(10)]
    timesteps = [
        datetime.datetime(2010, 11, 3, 12, 0),
        datetime.datetime(2010, 11, 3, 12, 30),
        datetime.datetime(2010, 11, 3, 13, 0),
    ]

    trajectory = []

    # first timestep: three particles
    trajectory.append({
        'longitude':
        np.array([
            -88.0,
            -88.1,
            -88.1,
        ], dtype=np.float64),
        'latitude':
        np.array([
            28.0,
            28.0,
            28.1,
        ], dtype=np.float64),
        'depth':
        np.array([
            0.0,
            0.1,
            0.2,
        ], dtype=np.float64),
        'mass':
        np.array([
            0.01,
            0.005,
            0.007,
        ], dtype=np.float64),
        'id':
        np.array([
            0,
            1,
            2,
        ], dtype=np.int32),
        'status_code':
        np.array(
            [
                1,
                2,
                3,
            ],
            dtype=np.int16,
        )
    })

    # second timestep: four particles
    trajectory.append({
        'longitude':
        np.array([
            -88.0,
            -88.1,
            -88.1,
            -87.9,
        ], dtype=np.float64),
        'latitude':
        np.array([28.0, 28.0, 28.1, 27.9], dtype=np.float64),
        'depth':
        np.array([0.0, 0.1, 0.2, 0.1], dtype=np.float64),
        'mass':
        np.array([
            0.01,
            0.005,
            0.007,
            0.006,
        ], dtype=np.float64),
        'id':
        np.array([
            0,
            1,
            2,
            3,
        ], dtype=np.int32),
        'status_code':
        np.array(
            [
                1,
                2,
                3,
                4,
            ],
            dtype=np.int16,
        )
    })

    # third timestep: two particles
    trajectory.append({
        'longitude': np.array([
            -88.0,
            -88.1,
        ], dtype=np.float64),
        'latitude': np.array([
            28.0,
            28.0,
        ], dtype=np.float64),
        'depth': np.array([
            0.0,
            0.1,
        ], dtype=np.float64),
        'mass': np.array([
            0.01,
            0.005,
        ], dtype=np.float64),
        'id': np.array([
            1,
            3,
        ], dtype=np.int32),
        'status_code': np.array(
            [
                2,
                3,
            ],
            dtype=np.int16,
        )
    })

    writer = nc_particles.Writer(
        filename,
        num_timesteps=len(timesteps),
        ref_time=timesteps[0],
    )
    for i, time in enumerate(timesteps):
        writer.write_timestep(time, trajectory[i])
    writer.close()
Exemple #7
0
def test_multi_close():
    w = nc_particles.Writer('junk_file5.nc',
                            nc_version=4)
    w.close()
    w.close()
Exemple #8
0
def test_netcdf_wrong_num():
    with pytest.raises(ValueError):
        nc_particles.Writer('junk_file.nc', nc_version='5')
Exemple #9
0
def test_netcdf4():
    w = nc_particles.Writer('junk_file4.nc', num_timesteps=10, nc_version=4)
    w.close()
    nc = netCDF4.Dataset('junk_file4.nc')
    assert nc.file_format == 'NETCDF4'
Exemple #10
0
def test_3_unlimited():
    with pytest.raises(ValueError):
        nc_particles.Writer('junk_file2.nc', nc_version=3)