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')
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"
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
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
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()
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()
def test_multi_close(): w = nc_particles.Writer('junk_file5.nc', nc_version=4) w.close() w.close()
def test_netcdf_wrong_num(): with pytest.raises(ValueError): nc_particles.Writer('junk_file.nc', nc_version='5')
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'
def test_3_unlimited(): with pytest.raises(ValueError): nc_particles.Writer('junk_file2.nc', nc_version=3)