anuga 1.3.5__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__config__.py +21 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__config__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__init__.py +363 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__metadata__.py +6 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__metadata__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/__init__.py +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/ermapper_grids.py +251 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/ermapper_grids.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/file_function.py +483 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/file_function.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/gauge.py +1080 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/gauge.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/general_mesh.py +865 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/general_mesh.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/generic_boundary_conditions.py +862 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/generic_boundary_conditions.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/generic_domain.py +2274 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/generic_domain.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/mesh_factory.py +1011 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/mesh_factory.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/mesh_factory_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/neighbour_mesh.py +1488 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/neighbour_mesh.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/neighbour_mesh_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/neighbour_table_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/pmesh2domain.py +299 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/pmesh2domain.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/pmesh2domain_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/quantity.py +2162 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/quantity.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/quantity_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/region.py +321 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/region.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/setup.py +48 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tag_region.py +167 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tag_region.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/show_balanced_limiters.py +87 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_ermapper.py +189 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_gauge.py +539 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_general_mesh.py +517 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_generic_boundary_conditions.py +439 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_generic_domain.py +907 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_ghost.py +52 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_neighbour_mesh.py +1854 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_pmesh2domain.py +219 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_quantity.py +2859 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_region.py +99 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_tag_region.py +258 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_util.py +1632 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/util.py +928 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/util.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/__init__.py +12 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/advection.py +298 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/advection.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/advection_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/setup.py +27 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/tests/test_advection.py +183 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/__init__.py +4 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/alpha_shape.py +654 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/alpha_shape.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/setup.py +21 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/tests/test_alpha_shape.py +402 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/anuga_exceptions.py +46 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/anuga_exceptions.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/__init__.py +18 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/caching.py +2531 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/caching.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/dummy_classes_for_testing.py +20 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/dummy_classes_for_testing.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/setup.py +21 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/tests/test_caching.py +895 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/compile_all.py +82 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/compile_all.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/config.py +273 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/config.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/__init__.py +6 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/geo_reference.py +478 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/geo_reference.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/lat_long_UTM_conversion.py +250 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/lat_long_UTM_conversion.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/point.py +128 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/point.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/redfearn.py +233 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/redfearn.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/setup.py +21 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points.csv +11 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points_z53.csv +11 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points_z53.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points_z54.csv +11 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points_z54.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/redfearn.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/redfearn.xls +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/test_geo_reference.py +716 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/test_lat_long_UTM_conversion.py +126 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/test_point.py +125 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/test_redfearn.py +508 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/__init__.py +9 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_class.py +1627 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_class.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_polygons.py +114 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_polygons.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_routines.py +362 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_routines.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/new_culvert_class.py +1630 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/new_culvert_class.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/setup.py +21 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/culvert_polygons_example.py +38 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/example_rating_curve.csv +20 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/example_rating_curve.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/example_rating_curve2.csv +20 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/example_rating_curve2.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/unittests.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/unittests.xls +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/run_culvert_flat_water_lev.py +173 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_class.py +812 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_polygons.py +84 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_routines.py +586 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_routines_box_10pct.py +342 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_routines_box_1pct.py +342 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_routines_pipe_10pct.py +338 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_routines_pipe_1pct.py +338 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_new_culvert_class.py +810 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/__init__.py +9 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/exposure.py +223 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/exposure.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/inundation_damage.py +467 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/inundation_damage.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/setup.py +21 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/tests/test_exposure.py +325 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/tests/test_inundation_damage.py +610 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/error_api.py +130 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/error_api.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/extras.py +193 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/extras.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/__init__.py +54 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/csv_file.py +399 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/csv_file.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/mux.py +120 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/mux.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/netcdf.py +266 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/netcdf.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/pts.py +29 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/pts.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/setup.py +27 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/sts.py +293 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/sts.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/sww.py +1552 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/sww.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_csv.py +413 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_mux.py +1539 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_read_sww.py +350 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_sww.py +560 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_ungenerate.py +283 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_urs.py +217 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/ungenerate.py +92 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/ungenerate.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/urs.py +323 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/urs.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/urs_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/__init__.py +20 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/asc2dem.py +213 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/asc2dem.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/calc_grid_values_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/csv2sts.py +165 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/csv2sts.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2array.py +90 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2array.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2dem.py +145 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2dem.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2pts.py +357 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2pts.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/esri2sww.py +327 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/esri2sww.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/ferret2sww.py +436 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/ferret2sww.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/file_conversion.py +367 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/file_conversion.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/grd2array.py +122 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/grd2array.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sdf2pts.py +181 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sdf2pts.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/setup.py +29 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sts2sww_mesh.py +141 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sts2sww_mesh.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2array.py +321 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2array.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2dem.py +550 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2dem.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2dem_new.py +547 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2dem_new.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2pts.py +175 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2pts.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_2pts.py +249 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_csv2sts.py +118 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_dem2array.py +121 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_dem2dem.py +220 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_dem2pts.py +411 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_file_conversion.py +953 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_grd2array.py +270 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_sww2dem.py +1882 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_urs2sts.py +2127 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_urs2sww.py +628 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2nc.py +202 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2nc.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2sts.py +316 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2sts.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2sww.py +306 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2sww.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2txt.py +71 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2txt.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/xya2pts.py +39 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/xya2pts.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/__init__.py +12 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/benchmark_least_squares.py +367 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/benchmark_least_squares.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/fit.py +611 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/fit.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/fitsmooth.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/general_fit_interpolate.py +127 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/general_fit_interpolate.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/interpolate.py +1144 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/interpolate.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/interpolate2d.py +305 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/interpolate2d.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/profile_long_benchmark.py +79 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/profile_long_benchmark.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/run_long_benchmark.py +131 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/run_long_benchmark.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/setup.py +37 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/tests/test_fit.py +1150 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/tests/test_interpolate.py +1952 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/tests/test_interpolate2d.py +469 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/tests/test_search_functions.py +236 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/ticket178_benchmark.py +66 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/ticket178_benchmark.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/__init__.py +11 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/aabb.py +133 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/aabb.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/polygon.py +1138 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/polygon.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/polygon_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/polygon_function.py +133 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/polygon_function.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/quad.py +190 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/quad.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/setup.py +27 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/tests/test_geometry.py +110 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/tests/test_polygon.py +1994 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/__init__.py +9 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/geospatial_data.py +1698 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/geospatial_data.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/setup.py +21 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/tests/test_geospatial_data.py +1853 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/__init__.py +11 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/add_csv_header.py +136 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/add_csv_header.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/file_length.py +14 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/file_length.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/maxasc.py +96 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/maxasc.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/order_boundary.py +109 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/order_boundary.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/setup.py +22 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/perthAll_stage_250m.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/perthAll_stage_250m_all.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/perthAll_stage_original.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1.asc +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_bad_num_lines.asc +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_bad_num_lines.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_header_differs.asc +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_header_differs.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_wrong_num_columns.asc +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_wrong_num_columns.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test2.asc +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test2.expected.asc +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test2.expected.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test2.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test3.asc +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test3.expected.asc +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test3.expected.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test3.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test_maxasc.py +150 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test_order_boundary.py +397 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/__init__.py +4 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/loadASCII.py +1073 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/loadASCII.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/setup.py +21 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/tests/test_loadASCII.py +544 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/__init__.py +4 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/compile.py +9 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/compile.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/mesh_engine.py +221 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/mesh_engine.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/mesh_engine_c_layer.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/setup.py +29 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/tests/test_generate_mesh.py +470 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/__init__.py +11 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/base_operator.py +125 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/base_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/boundary_flux_integral_operator.py +79 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/boundary_flux_integral_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/change_friction_operator.py +240 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/change_friction_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/collect_max_quantities_operator.py +142 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/collect_max_quantities_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/collect_max_stage_operator.py +85 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/collect_max_stage_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/compile_all.py +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/compile_all.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/elliptic_operator.py +495 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/elliptic_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/erosion_operators.py +859 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/erosion_operators.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/kinematic_viscosity_operator.py +563 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/kinematic_viscosity_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/kinematic_viscosity_operator_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/mannings_operator.py +87 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/mannings_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/mannings_operator_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/rate_operators.py +431 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/rate_operators.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_elevation.py +290 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_elevation.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_elevation_operator.py +148 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_elevation_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_friction_operators.py +159 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_friction_operators.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_quantity.py +172 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_quantity.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_quantity_operator.py +158 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_quantity_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_stage.py +131 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_stage.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_stage_operator.py +135 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_stage_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_w_uh_vh_operator.py +170 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_w_uh_vh_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/setup.py +33 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_base_operator.py +51 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_boundary_flux_integral_operator.py +98 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_erosion_operators.py +344 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_kinematic_viscosity_operator.py +1366 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_rate_operators.py +888 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_set_elevation_operator.py +1034 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_set_quantity.py +511 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_set_stage_operator.py +491 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_set_w_uh_vh_operators.py +211 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/__init__.py +31 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/config.py +14 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/config.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/distribute_mesh.py +1682 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/distribute_mesh.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_advection.py +205 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_advection.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_api.py +467 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_api.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_boyd_box_operator.py +332 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_boyd_box_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_boyd_pipe_operator.py +283 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_boyd_pipe_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_generic_communications.py +207 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_generic_communications.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet.py +605 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet_enquiry.py +228 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet_enquiry.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet_operator.py +281 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_internal_boundary_operator.py +230 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_internal_boundary_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_meshes.py +445 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_meshes.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_operator_factory.py +959 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_operator_factory.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_shallow_water.py +282 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_shallow_water.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_structure_operator.py +1241 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_structure_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_weir_orifice_trapezoid_operator.py +281 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_weir_orifice_trapezoid_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/print_stats.py +205 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/print_stats.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/pypar_ext.py +528 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/pypar_ext.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/sequential_distribute.py +309 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/sequential_distribute.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/setup.py +100 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/AppShell.py +345 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/AppShell.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/Pmw.py +9253 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/Pmw.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/PmwBlt.py +671 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/PmwBlt.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/PmwColor.py +389 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/PmwColor.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/ProgressBar.py +80 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/ProgressBar.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/__init__.py +4 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/compile.py +24 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/compile.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/cursornames.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/cursornames.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/exesetup.py +24 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/exesetup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/graphical_mesh_generator.py +1519 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/graphical_mesh_generator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/addVertex.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/addVertex.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/autoSegGiveAlpha.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/autoSegGiveAlpha.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/default.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/default.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/edit.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/edit.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/hole.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/hole.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/joinVer.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/joinVer.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/meshGen.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/meshGen.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/no_see.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/no_see.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/pointer.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/pointer.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/region.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/region.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/see.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/see.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/segment.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/segment.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/sep.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/sep.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/vertex.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/vertex.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoom0.5.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoom0.5.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoom2.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoom2.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoomToMesh.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoomToMesh.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh.py +2416 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh_interface.py +373 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh_interface.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh_quadtree.py +130 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh_quadtree.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/run_setup.py +43 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/run_setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/setup.py +22 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/tests/test_mesh.py +2129 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/tests/test_mesh_interface.py +988 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/tests/test_meshquad.py +189 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/timing.py +150 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/timing.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/toolbarbutton.py +80 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/toolbarbutton.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/ungen_example.py +69 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/ungen_example.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/view_tsh.py +47 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/view_tsh.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/visualmesh.py +302 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/visualmesh.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/__init__.py +6 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/metis_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/setup.py +54 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/tests/test_metis.py +141 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/setup.py +49 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/__init__.py +12 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/boundaries.py +1028 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/boundaries.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/checkpoint.py +118 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/checkpoint.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/forcing.py +1339 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/forcing.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/most2nc.py +101 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/most2nc.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/setup.py +37 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/shallow_water_domain.py +3114 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/shallow_water_domain.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/shallow_water_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/swDE1_domain_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/swb2_domain.py +576 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/swb2_domain.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/swb2_domain_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/sww_interrogate.py +652 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/sww_interrogate.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/polygon_values_example.csv +46 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/polygon_values_example.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/test_points_large.csv +7855 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/test_points_large.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/test_points_small.csv +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/test_points_small.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_DE1_domain.py +111 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_data_manager.py +879 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_forcing.py +2271 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_loadsave.py +212 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_local_extrapolation_and_flux_updating.py +114 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_most2nc.py +52 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_shallow_water_domain.py +8670 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_swb2_domain.py +106 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_sww_interrogate.py +888 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_system.py +193 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/1-z.grd-e-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/1-z.grd-n-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/1-z.grd-z-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/1-z.lic +55 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/2-z.grd-e-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/2-z.grd-n-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/2-z.grd-z-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/2-z.lic +55 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/3-z.grd-e-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/3-z.grd-n-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/3-z.grd-z-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/3-z.lic +55 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/thinned_bound_order_test.lic +18 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/thinned_bound_order_test.txt +6 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tsh2sww.py +65 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tsh2sww.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/__init__.py +5 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_box_operator.py +380 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_box_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_box_operator_Amended3.py +245 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_box_operator_Amended3.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_pipe_operator.py +305 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_pipe_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet.py +289 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet_enquiry.py +146 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet_enquiry.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet_operator.py +229 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/internal_boundary_functions.py +431 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/internal_boundary_functions.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/internal_boundary_operator.py +169 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/internal_boundary_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/riverwall.py +738 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/riverwall.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/setup.py +24 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/structure_operator.py +757 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/structure_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/hecras_bridge_table.csv +105 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/inlet_operator_test1.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/inlet_operator_test1.tms +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/inlet_operator_test2.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/inlet_operator_test2.tms +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/test_hydrograph.tms +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_boyd_box_operator.py +2623 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_boyd_pipe_operator.py +482 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_inlet_operator.py +311 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_internal_boundary_functions.py +96 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_riverwall_structure.py +619 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_weir_orifice_trapezoid_operator.py +650 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/weir_orifice_trapezoid_operator.py +387 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/weir_orifice_trapezoid_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/test_all.py +282 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/test_all.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/__init__.py +13 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/eqf.py +147 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/eqf.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/eqf_v2.py +559 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/eqf_v2.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/okada_tsunami.py +347 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/okada_tsunami.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/setup.py +27 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/smf.py +467 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/smf.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_MS.lic +23 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_MS.txt +36 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_SP.lic +23 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_SP.txt +36 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_SS.lic +23 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_SS.txt +36 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/okada_tsunami_octave_95.txt +101 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/test_eq.py +67 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/test_okada_tsunami.py +439 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/test_smf.py +143 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/test_tsunami_okada.py +303 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tsunami_okada.py +1885 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tsunami_okada.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/__init__.py +11 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/argparsing.py +76 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/argparsing.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/cg_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/cg_solve.py +327 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/cg_solve.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/compile.py +497 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/compile.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/csv_tools.py +121 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/csv_tools.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/data_audit.py +404 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/data_audit.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/data_audit_wrapper.py +52 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/data_audit_wrapper.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/file_utils.py +308 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/file_utils.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/function_utils.py +117 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/function_utils.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/interp.py +318 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/interp.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/log.py +414 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/log.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/log_analyser.py +77 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/log_analyser.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/mem_time_equation.py +106 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/mem_time_equation.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/model_tools.py +457 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/model_tools.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/norms.py +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/norms.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/numerical_tools.py +397 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/numerical_tools.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/parallel_abstraction.py +67 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/parallel_abstraction.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/parse.py +26 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/parse.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/plot_utils.py +1237 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/plot_utils.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/quad_tree_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/quantity_setting_functions.py +612 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/quantity_setting_functions.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/quickPlots.py +164 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/quickPlots.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/run_anuga_script.py +70 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/run_anuga_script.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/setup.py +39 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sparse.py +398 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sparse.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sparse_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sparse_matrix_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/spatialInputUtil.py +1394 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/spatialInputUtil.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sww_merge.py +820 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sww_merge.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/system_tools.py +646 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/system_tools.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/terminal_width.py +60 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/terminal_width.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/complex_polygon.csv +4 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/complex_polygon.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/crc_test_file.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/crc_test_file.png +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/mainland_only.csv +669 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/mainland_only.lic +33 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/non_complex_polygon.csv +5 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/non_complex_polygon.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_cg_solve.py +569 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_csv_tools.py +435 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_data_audit.py +393 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_file_utils.py +157 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_function_utils.py +65 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_log_analyser.py +89 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_mem_time_equation.py +47 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_numerical_tools.py +616 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_plot_utils.py +455 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_quantity_setting_functions.py +369 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_sparse.py +215 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_spatialInputUtil.py +418 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_system_tools.py +483 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_xml_tools.py +316 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/util_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/where_close.py +219 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/where_close.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/xml_tools.py +326 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/xml_tools.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/__init__.py +15 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/fabricate.py +1429 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/fabricate.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/parameters.py +24 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/parameters.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/produce_report.py +38 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/produce_report.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/run_validation.py +51 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/run_validation.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/save_parameters_tex.py +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/save_parameters_tex.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/setup.py +22 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/typeset_report.py +55 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/typeset_report.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/version.py +11 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/version.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga-1.3.5-py2.7.egg-info/PKG-INFO +117 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga-1.3.5-py2.7.egg-info/SOURCES.txt +1329 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga-1.3.5-py2.7.egg-info/dependency_links.txt +1 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga-1.3.5-py2.7.egg-info/not-zip-safe +1 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga-1.3.5-py2.7.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,1698 @@
|
|
|
1
|
+
"""Class Geospatial_data
|
|
2
|
+
|
|
3
|
+
Manipulation of locations on the planet and associated attributes.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from sys import maxint
|
|
7
|
+
from os import access, F_OK, R_OK,remove
|
|
8
|
+
from types import DictType
|
|
9
|
+
from warnings import warn
|
|
10
|
+
from string import lower
|
|
11
|
+
from copy import deepcopy
|
|
12
|
+
import copy
|
|
13
|
+
|
|
14
|
+
from exceptions import Exception
|
|
15
|
+
|
|
16
|
+
from anuga.file.netcdf import NetCDFFile
|
|
17
|
+
import numpy as num
|
|
18
|
+
from numpy.random import randint, seed
|
|
19
|
+
|
|
20
|
+
from anuga.coordinate_transforms.lat_long_UTM_conversion import UTMtoLL
|
|
21
|
+
from anuga.utilities.numerical_tools import ensure_numeric
|
|
22
|
+
from anuga.coordinate_transforms.geo_reference import Geo_reference, \
|
|
23
|
+
TitleError, DEFAULT_ZONE, ensure_geo_reference, write_NetCDF_georeference
|
|
24
|
+
from anuga.coordinate_transforms.redfearn import convert_from_latlon_to_utm
|
|
25
|
+
from anuga.utilities.system_tools import clean_line
|
|
26
|
+
from anuga.anuga_exceptions import ANUGAError
|
|
27
|
+
from anuga.config import points_file_block_line_size as MAX_READ_LINES
|
|
28
|
+
from anuga.config import netcdf_mode_r, netcdf_mode_w, netcdf_mode_a
|
|
29
|
+
from anuga.config import netcdf_float
|
|
30
|
+
import anuga.utilities.log as log
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
DEFAULT_ATTRIBUTE = 'elevation'
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class Geospatial_data:
|
|
37
|
+
|
|
38
|
+
def __init__(self,
|
|
39
|
+
data_points=None, # this can also be a points file name
|
|
40
|
+
attributes=None,
|
|
41
|
+
geo_reference=None,
|
|
42
|
+
default_attribute_name=None,
|
|
43
|
+
file_name=None,
|
|
44
|
+
latitudes=None,
|
|
45
|
+
longitudes=None,
|
|
46
|
+
points_are_lats_longs=False,
|
|
47
|
+
max_read_lines=None,
|
|
48
|
+
load_file_now=True,
|
|
49
|
+
verbose=False):
|
|
50
|
+
"""Create instance from data points and associated attributes
|
|
51
|
+
|
|
52
|
+
data_points: x,y coordinates in meters. Type must be either a
|
|
53
|
+
sequence of 2-tuples or an Mx2 numeric array of floats. A file name
|
|
54
|
+
with extension .txt, .cvs or .pts can also be passed in here.
|
|
55
|
+
|
|
56
|
+
attributes: Associated values for each data point. The type
|
|
57
|
+
must be either a list or an array of length M or a dictionary
|
|
58
|
+
of lists (or arrays) of length M. In the latter case the keys
|
|
59
|
+
in the dictionary represent the attribute names, in the former
|
|
60
|
+
the attribute will get the default name "elevation".
|
|
61
|
+
|
|
62
|
+
geo_reference: Object representing the origin of the data
|
|
63
|
+
points. It contains UTM zone, easting and northing and data
|
|
64
|
+
points are assumed to be relative to this origin.
|
|
65
|
+
If geo_reference is None, the default geo ref object is used.
|
|
66
|
+
|
|
67
|
+
default_attribute_name: Name of default attribute to be used with
|
|
68
|
+
get_attribute_values. The idea is that the dataset can be
|
|
69
|
+
equipped with information about which attribute to return.
|
|
70
|
+
If None, the default is the "first"
|
|
71
|
+
|
|
72
|
+
latitudes, longitudes: Vectors of latitudes and longitudes,
|
|
73
|
+
used to specify location instead of points.
|
|
74
|
+
|
|
75
|
+
points_are_lats_longs: Set this as true if the points are actually
|
|
76
|
+
lats and longs, not UTM
|
|
77
|
+
|
|
78
|
+
max_read_lines: The number of rows read into memory when using
|
|
79
|
+
blocking to read a file.
|
|
80
|
+
|
|
81
|
+
load_file_now: If true the file is automatically loaded
|
|
82
|
+
into the geospatial instance. Used when blocking.
|
|
83
|
+
|
|
84
|
+
file_name: Name of input netCDF file or .txt file. netCDF file must
|
|
85
|
+
have dimensions "points" etc.
|
|
86
|
+
.txt file is a comma seperated file with x, y and attribute
|
|
87
|
+
data.
|
|
88
|
+
|
|
89
|
+
The first line has the titles of the columns. The first two
|
|
90
|
+
column titles are checked to see if they start with lat or
|
|
91
|
+
long (not case sensitive). If so the data is assumed to be
|
|
92
|
+
latitude and longitude, in decimal format and converted to
|
|
93
|
+
UTM. Otherwise the first two columns are assumed to be the x
|
|
94
|
+
and y, and the title names acually used are ignored.
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
The format for a .txt file is:
|
|
98
|
+
1st line: [column names]
|
|
99
|
+
other lines: x y [attributes]
|
|
100
|
+
|
|
101
|
+
for example:
|
|
102
|
+
x, y, elevation, friction
|
|
103
|
+
0.6, 0.7, 4.9, 0.3
|
|
104
|
+
1.9, 2.8, 5, 0.3
|
|
105
|
+
2.7, 2.4, 5.2, 0.3
|
|
106
|
+
|
|
107
|
+
The first two columns have to be x, y or lat, long
|
|
108
|
+
coordinates.
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
The format for a Points dictionary is:
|
|
112
|
+
['pointlist'] a 2 column array describing points. 1st column x,
|
|
113
|
+
2nd column y.
|
|
114
|
+
['attributelist'], a dictionary of 1D arrays, representing
|
|
115
|
+
attribute values at the point. The dictionary key is the attribute
|
|
116
|
+
header.
|
|
117
|
+
['geo_reference'] a Geo_refernece object. Use if the point
|
|
118
|
+
information is relative. This is optional.
|
|
119
|
+
eg
|
|
120
|
+
dic['pointlist'] = [[1.0,2.0],[3.0,5.0]]
|
|
121
|
+
dic['attributelist']['elevation'] = [[7.0,5.0]
|
|
122
|
+
|
|
123
|
+
verbose:
|
|
124
|
+
"""
|
|
125
|
+
|
|
126
|
+
if isinstance(data_points, basestring):
|
|
127
|
+
# assume data_points is really a file name
|
|
128
|
+
file_name = data_points
|
|
129
|
+
|
|
130
|
+
self.set_verbose(verbose)
|
|
131
|
+
self.geo_reference = None
|
|
132
|
+
self.file_name = file_name
|
|
133
|
+
|
|
134
|
+
if max_read_lines is None:
|
|
135
|
+
self.max_read_lines = MAX_READ_LINES
|
|
136
|
+
else:
|
|
137
|
+
self.max_read_lines = max_read_lines
|
|
138
|
+
|
|
139
|
+
if file_name is None:
|
|
140
|
+
if (latitudes is not None or longitudes is not None
|
|
141
|
+
or points_are_lats_longs):
|
|
142
|
+
data_points, geo_reference = \
|
|
143
|
+
_set_using_lat_long(latitudes=latitudes,
|
|
144
|
+
longitudes=longitudes,
|
|
145
|
+
geo_reference=geo_reference,
|
|
146
|
+
data_points=data_points,
|
|
147
|
+
points_are_lats_longs=
|
|
148
|
+
points_are_lats_longs)
|
|
149
|
+
self.check_data_points(data_points)
|
|
150
|
+
self.set_attributes(attributes)
|
|
151
|
+
self.set_geo_reference(geo_reference)
|
|
152
|
+
self.set_default_attribute_name(default_attribute_name)
|
|
153
|
+
elif load_file_now is True:
|
|
154
|
+
# watch for case where file name and points,
|
|
155
|
+
# attributes etc are provided!!
|
|
156
|
+
# if file name then all provided info will be removed!
|
|
157
|
+
|
|
158
|
+
if verbose is True:
|
|
159
|
+
if file_name is not None:
|
|
160
|
+
log.critical('Geospatial_data: Loading Geospatial data from file: %s'
|
|
161
|
+
% file_name)
|
|
162
|
+
|
|
163
|
+
self.import_points_file(file_name, verbose=verbose)
|
|
164
|
+
|
|
165
|
+
self.check_data_points(self.data_points)
|
|
166
|
+
self.set_attributes(self.attributes)
|
|
167
|
+
self.set_geo_reference(self.geo_reference)
|
|
168
|
+
self.set_default_attribute_name(default_attribute_name)
|
|
169
|
+
|
|
170
|
+
if verbose is True:
|
|
171
|
+
if file_name is not None:
|
|
172
|
+
log.critical('Geospatial_data: Created from file: %s'
|
|
173
|
+
% file_name)
|
|
174
|
+
if load_file_now is False:
|
|
175
|
+
log.critical('Data will be loaded blockwise on demand')
|
|
176
|
+
|
|
177
|
+
if file_name.endswith('csv') or file_name.endswith('txt'):
|
|
178
|
+
pass
|
|
179
|
+
# This message was misleading.
|
|
180
|
+
# FIXME (Ole): Are we blocking here or not?
|
|
181
|
+
# print 'ASCII formats are not that great for '
|
|
182
|
+
# print 'blockwise reading. Consider storing this'
|
|
183
|
+
# print 'data as a pts NetCDF format'
|
|
184
|
+
|
|
185
|
+
def __len__(self):
|
|
186
|
+
return len(self.data_points)
|
|
187
|
+
|
|
188
|
+
def __repr__(self):
|
|
189
|
+
return str(self.get_data_points(absolute=True))
|
|
190
|
+
|
|
191
|
+
def check_data_points(self, data_points):
|
|
192
|
+
"""Checks data points"""
|
|
193
|
+
|
|
194
|
+
if data_points is None:
|
|
195
|
+
self.data_points = None
|
|
196
|
+
msg = 'There is no data or file provided!'
|
|
197
|
+
raise ValueError(msg)
|
|
198
|
+
else:
|
|
199
|
+
self.data_points = ensure_numeric(data_points)
|
|
200
|
+
if not (0,) == self.data_points.shape:
|
|
201
|
+
assert len(self.data_points.shape) == 2
|
|
202
|
+
assert self.data_points.shape[1] == 2
|
|
203
|
+
|
|
204
|
+
def set_attributes(self, attributes):
|
|
205
|
+
"""Check and assign attributes dictionary"""
|
|
206
|
+
|
|
207
|
+
if attributes is None:
|
|
208
|
+
self.attributes = None
|
|
209
|
+
return
|
|
210
|
+
|
|
211
|
+
if not isinstance(attributes, DictType):
|
|
212
|
+
# Convert single attribute into dictionary
|
|
213
|
+
attributes = {DEFAULT_ATTRIBUTE: attributes}
|
|
214
|
+
|
|
215
|
+
# Check input attributes
|
|
216
|
+
for key in attributes.keys():
|
|
217
|
+
try:
|
|
218
|
+
attributes[key] = ensure_numeric(attributes[key])
|
|
219
|
+
except:
|
|
220
|
+
msg = ("Attribute '%s' (%s) could not be converted to a"
|
|
221
|
+
"numeric vector" % (str(key), str(attributes[key])))
|
|
222
|
+
raise Exception(msg)
|
|
223
|
+
|
|
224
|
+
self.attributes = attributes
|
|
225
|
+
|
|
226
|
+
def set_geo_reference(self, geo_reference):
|
|
227
|
+
"""Set the georeference of geospatial data.
|
|
228
|
+
|
|
229
|
+
It can also be used to change the georeference and will ensure that
|
|
230
|
+
the absolute coordinate values are unchanged.
|
|
231
|
+
"""
|
|
232
|
+
|
|
233
|
+
if geo_reference is None:
|
|
234
|
+
# Use default - points are in absolute coordinates
|
|
235
|
+
geo_reference = Geo_reference()
|
|
236
|
+
|
|
237
|
+
# Allow for tuple (zone, xllcorner, yllcorner)
|
|
238
|
+
geo_reference = ensure_geo_reference(geo_reference)
|
|
239
|
+
|
|
240
|
+
if not isinstance(geo_reference, Geo_reference):
|
|
241
|
+
# FIXME (Ole): This exception will be raised even
|
|
242
|
+
# if geo_reference is None. Is that the intent Duncan?
|
|
243
|
+
msg = ('Argument geo_reference must be a valid Geo_reference '
|
|
244
|
+
'object or None.')
|
|
245
|
+
raise (msg)
|
|
246
|
+
|
|
247
|
+
# If a geo_reference already exists, change the point data according to
|
|
248
|
+
# the new geo reference
|
|
249
|
+
if self.geo_reference is not None:
|
|
250
|
+
self.data_points = self.get_data_points(geo_reference=geo_reference)
|
|
251
|
+
|
|
252
|
+
self.geo_reference = geo_reference
|
|
253
|
+
|
|
254
|
+
def set_default_attribute_name(self, default_attribute_name):
|
|
255
|
+
self.default_attribute_name = default_attribute_name
|
|
256
|
+
|
|
257
|
+
def set_verbose(self, verbose=False):
|
|
258
|
+
if verbose in [False, True]:
|
|
259
|
+
self.verbose = verbose
|
|
260
|
+
else:
|
|
261
|
+
msg = 'Illegal value: %s' % str(verbose)
|
|
262
|
+
raise Exception(msg)
|
|
263
|
+
|
|
264
|
+
def clip(self, polygon, closed=True, verbose=False):
|
|
265
|
+
"""Clip geospatial data by a polygon
|
|
266
|
+
|
|
267
|
+
Input
|
|
268
|
+
polygon - Either a list of points, an Nx2 array or
|
|
269
|
+
a Geospatial data object.
|
|
270
|
+
closed - (optional) determine whether points on boundary should be
|
|
271
|
+
regarded as belonging to the polygon (closed = True)
|
|
272
|
+
or not (closed = False). Default is True.
|
|
273
|
+
|
|
274
|
+
Output
|
|
275
|
+
New geospatial data object representing points inside
|
|
276
|
+
specified polygon.
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
Note - this method is non-destructive and leaves the data in 'self'
|
|
280
|
+
unchanged
|
|
281
|
+
"""
|
|
282
|
+
|
|
283
|
+
from anuga.geometry.polygon import inside_polygon
|
|
284
|
+
|
|
285
|
+
if isinstance(polygon, Geospatial_data):
|
|
286
|
+
# Polygon is an object - extract points
|
|
287
|
+
polygon = polygon.get_data_points()
|
|
288
|
+
|
|
289
|
+
points = self.get_data_points()
|
|
290
|
+
inside_indices = inside_polygon(points, polygon, closed, verbose)
|
|
291
|
+
|
|
292
|
+
clipped_G = self.get_sample(inside_indices)
|
|
293
|
+
|
|
294
|
+
return clipped_G
|
|
295
|
+
|
|
296
|
+
def clip_outside(self, polygon, closed=True, verbose=False):
|
|
297
|
+
"""Clip geospatial date by a polygon, keeping data OUTSIDE of polygon
|
|
298
|
+
|
|
299
|
+
Input
|
|
300
|
+
polygon - Either a list of points, an Nx2 array or
|
|
301
|
+
a Geospatial data object.
|
|
302
|
+
closed - (optional) determine whether points on boundary should be
|
|
303
|
+
regarded as belonging to the polygon (closed = True)
|
|
304
|
+
or not (closed = False). Default is True.
|
|
305
|
+
|
|
306
|
+
Output
|
|
307
|
+
Geospatial data object representing point OUTSIDE specified polygon
|
|
308
|
+
"""
|
|
309
|
+
|
|
310
|
+
from anuga.geometry.polygon import outside_polygon
|
|
311
|
+
|
|
312
|
+
if isinstance(polygon, Geospatial_data):
|
|
313
|
+
# Polygon is an object - extract points
|
|
314
|
+
polygon = polygon.get_data_points()
|
|
315
|
+
|
|
316
|
+
points = self.get_data_points()
|
|
317
|
+
outside_indices = outside_polygon(points, polygon, closed,verbose)
|
|
318
|
+
|
|
319
|
+
clipped_G = self.get_sample(outside_indices)
|
|
320
|
+
|
|
321
|
+
return clipped_G
|
|
322
|
+
|
|
323
|
+
def get_geo_reference(self):
|
|
324
|
+
return self.geo_reference
|
|
325
|
+
|
|
326
|
+
def get_data_points(self,
|
|
327
|
+
absolute=True,
|
|
328
|
+
geo_reference=None,
|
|
329
|
+
as_lat_long=False,
|
|
330
|
+
isSouthHemisphere=True):
|
|
331
|
+
"""Get coordinates for all data points as an Nx2 array
|
|
332
|
+
|
|
333
|
+
If absolute is False returned coordinates are relative to the
|
|
334
|
+
internal georeference's xll and yll corners, otherwise
|
|
335
|
+
absolute UTM coordinates are returned.
|
|
336
|
+
|
|
337
|
+
If a geo_reference is passed the points are returned relative
|
|
338
|
+
to that geo_reference.
|
|
339
|
+
|
|
340
|
+
isSH (isSouthHemisphere) is only used when getting data
|
|
341
|
+
points "as_lat_long" is True and if FALSE will return lats and
|
|
342
|
+
longs valid for the Northern Hemisphere.
|
|
343
|
+
|
|
344
|
+
Default: absolute is True.
|
|
345
|
+
"""
|
|
346
|
+
|
|
347
|
+
if as_lat_long is True:
|
|
348
|
+
msg = "Points need a zone to be converted into lats and longs"
|
|
349
|
+
assert self.geo_reference is not None, msg
|
|
350
|
+
zone = self.geo_reference.get_zone()
|
|
351
|
+
assert self.geo_reference.get_zone() is not DEFAULT_ZONE, msg
|
|
352
|
+
lats_longs = []
|
|
353
|
+
for point in self.get_data_points(True):
|
|
354
|
+
# UTMtoLL(northing, easting, zone,
|
|
355
|
+
lat_calced, long_calced = UTMtoLL(point[1], point[0],
|
|
356
|
+
zone, isSouthHemisphere)
|
|
357
|
+
lats_longs.append((lat_calced, long_calced)) # to hash
|
|
358
|
+
return lats_longs
|
|
359
|
+
|
|
360
|
+
if absolute is True and geo_reference is None:
|
|
361
|
+
return self.geo_reference.get_absolute(self.data_points)
|
|
362
|
+
elif geo_reference is not None:
|
|
363
|
+
return geo_reference.change_points_geo_ref(self.data_points,
|
|
364
|
+
self.geo_reference)
|
|
365
|
+
else:
|
|
366
|
+
# If absolute is False
|
|
367
|
+
return self.data_points
|
|
368
|
+
|
|
369
|
+
def get_attributes(self, attribute_name=None):
|
|
370
|
+
"""Return values for one named attribute.
|
|
371
|
+
|
|
372
|
+
If attribute_name is None, default_attribute_name is used
|
|
373
|
+
"""
|
|
374
|
+
|
|
375
|
+
if attribute_name is None:
|
|
376
|
+
if self.default_attribute_name is not None:
|
|
377
|
+
attribute_name = self.default_attribute_name
|
|
378
|
+
else:
|
|
379
|
+
attribute_name = self.attributes.keys()[0]
|
|
380
|
+
# above line takes the first one from keys
|
|
381
|
+
|
|
382
|
+
if self.verbose is True:
|
|
383
|
+
log.critical('Geospatial_data: Using attribute %s' % attribute_name)
|
|
384
|
+
log.critical('Geospatial_data: Available attributes: %s' % (self.attributes.keys()))
|
|
385
|
+
|
|
386
|
+
msg = 'Attribute name %s does not exist in data set' % attribute_name
|
|
387
|
+
assert self.attributes.has_key(attribute_name), msg
|
|
388
|
+
|
|
389
|
+
return self.attributes[attribute_name]
|
|
390
|
+
|
|
391
|
+
def get_all_attributes(self):
|
|
392
|
+
"""Return values for all attributes.
|
|
393
|
+
The return value is either None or a dictionary (possibly empty).
|
|
394
|
+
"""
|
|
395
|
+
|
|
396
|
+
return self.attributes
|
|
397
|
+
|
|
398
|
+
def __add__(self, other):
|
|
399
|
+
"""Returns the addition of 2 geospatial objects,
|
|
400
|
+
objects are concatencated to the end of each other
|
|
401
|
+
|
|
402
|
+
NOTE: doesn't add if objects contain different
|
|
403
|
+
attributes
|
|
404
|
+
|
|
405
|
+
Always return absolute points!
|
|
406
|
+
This also means, that if you add None to the object,
|
|
407
|
+
it will be turned into absolute coordinates
|
|
408
|
+
|
|
409
|
+
other can be None in which case nothing is added to self.
|
|
410
|
+
"""
|
|
411
|
+
|
|
412
|
+
# find objects zone and checks if the same
|
|
413
|
+
geo_ref1 = self.get_geo_reference()
|
|
414
|
+
zone1 = geo_ref1.get_zone()
|
|
415
|
+
|
|
416
|
+
if other is not None:
|
|
417
|
+
geo_ref2 = other.get_geo_reference()
|
|
418
|
+
zone2 = geo_ref2.get_zone()
|
|
419
|
+
geo_ref1.reconcile_zones(geo_ref2)
|
|
420
|
+
new_points = num.concatenate((self.get_data_points(absolute=True),
|
|
421
|
+
other.get_data_points(absolute=True)),
|
|
422
|
+
axis = 0)
|
|
423
|
+
|
|
424
|
+
# Concatenate attributes if any
|
|
425
|
+
if self.attributes is None:
|
|
426
|
+
if other.attributes is not None:
|
|
427
|
+
msg = ('Geospatial data must have the same '
|
|
428
|
+
'attributes to allow addition.')
|
|
429
|
+
raise Exception(msg)
|
|
430
|
+
|
|
431
|
+
new_attributes = None
|
|
432
|
+
else:
|
|
433
|
+
new_attributes = {}
|
|
434
|
+
for x in self.attributes.keys():
|
|
435
|
+
if other.attributes.has_key(x):
|
|
436
|
+
attrib1 = self.attributes[x]
|
|
437
|
+
attrib2 = other.attributes[x]
|
|
438
|
+
new_attributes[x] = num.concatenate((attrib1, attrib2),
|
|
439
|
+
axis=0) #??default#
|
|
440
|
+
else:
|
|
441
|
+
msg = ('Geospatial data must have the same '
|
|
442
|
+
'attributes to allow addition.')
|
|
443
|
+
raise Exception(msg)
|
|
444
|
+
else:
|
|
445
|
+
# other is None:
|
|
446
|
+
new_points = self.get_data_points(absolute=True)
|
|
447
|
+
new_attributes = self.attributes
|
|
448
|
+
|
|
449
|
+
# Instantiate new data object and return absolute coordinates
|
|
450
|
+
new_geo_ref = Geo_reference(geo_ref1.get_zone(), 0.0, 0.0)
|
|
451
|
+
return Geospatial_data(new_points, new_attributes, new_geo_ref)
|
|
452
|
+
|
|
453
|
+
def __radd__(self, other):
|
|
454
|
+
"""Handle cases like None + Geospatial_data(...)"""
|
|
455
|
+
|
|
456
|
+
return self + other
|
|
457
|
+
|
|
458
|
+
################################################################################
|
|
459
|
+
# IMPORT/EXPORT POINTS FILES
|
|
460
|
+
################################################################################
|
|
461
|
+
|
|
462
|
+
def import_points_file(self, file_name, delimiter=None, verbose=False):
|
|
463
|
+
""" load an .txt, .csv or .pts file
|
|
464
|
+
|
|
465
|
+
Note: will throw an IOError/SyntaxError if it can't load the file.
|
|
466
|
+
Catch these!
|
|
467
|
+
|
|
468
|
+
Post condition: self.attributes dictionary has been set
|
|
469
|
+
"""
|
|
470
|
+
|
|
471
|
+
if access(file_name, F_OK) == 0 :
|
|
472
|
+
msg = 'File %s does not exist or is not accessible' % file_name
|
|
473
|
+
raise IOError(msg)
|
|
474
|
+
|
|
475
|
+
attributes = {}
|
|
476
|
+
if file_name[-4:] == ".pts":
|
|
477
|
+
try:
|
|
478
|
+
data_points, attributes, geo_reference = \
|
|
479
|
+
_read_pts_file(file_name, verbose)
|
|
480
|
+
except IOError, e:
|
|
481
|
+
msg = 'Could not open file %s ' % file_name
|
|
482
|
+
raise IOError(msg)
|
|
483
|
+
elif file_name[-4:] == ".txt" or file_name[-4:]== ".csv":
|
|
484
|
+
try:
|
|
485
|
+
data_points, attributes, geo_reference = \
|
|
486
|
+
_read_csv_file(file_name, verbose)
|
|
487
|
+
except IOError, e:
|
|
488
|
+
# This should only be if a file is not found
|
|
489
|
+
msg = ('Could not open file %s. Check the file location.'
|
|
490
|
+
% file_name)
|
|
491
|
+
raise IOError(msg)
|
|
492
|
+
except SyntaxError, e:
|
|
493
|
+
# This should only be if there is a format error
|
|
494
|
+
msg = ('Problem with format of file %s.\n%s'
|
|
495
|
+
% (file_name, Error_message['IOError']))
|
|
496
|
+
raise SyntaxError(msg)
|
|
497
|
+
else:
|
|
498
|
+
msg = 'Extension %s is unknown' % file_name[-4:]
|
|
499
|
+
raise IOError(msg)
|
|
500
|
+
|
|
501
|
+
self.data_points = data_points
|
|
502
|
+
self.attributes = attributes
|
|
503
|
+
self.geo_reference = geo_reference
|
|
504
|
+
|
|
505
|
+
def export_points_file(self, file_name, absolute=True,
|
|
506
|
+
as_lat_long=False, isSouthHemisphere=True):
|
|
507
|
+
"""write a points file as a text (.csv) or binary (.pts) file
|
|
508
|
+
|
|
509
|
+
file_name is the file name, including the extension
|
|
510
|
+
The point_dict is defined at the top of this file.
|
|
511
|
+
|
|
512
|
+
If absolute is True data the xll and yll are added to the points value
|
|
513
|
+
and the xll and yll of the geo_reference are set to 0.
|
|
514
|
+
|
|
515
|
+
If absolute is False data points at returned as relative to the xll
|
|
516
|
+
and yll and geo_reference remains uneffected
|
|
517
|
+
|
|
518
|
+
isSouthHemisphere: is only used when getting data
|
|
519
|
+
points "as_lat_long" is True and if FALSE will return lats and
|
|
520
|
+
longs valid for the Northern Hemisphere.
|
|
521
|
+
"""
|
|
522
|
+
|
|
523
|
+
if (file_name[-4:] == ".pts"):
|
|
524
|
+
if absolute is True:
|
|
525
|
+
geo_ref = deepcopy(self.geo_reference)
|
|
526
|
+
geo_ref.xllcorner = 0
|
|
527
|
+
geo_ref.yllcorner = 0
|
|
528
|
+
_write_pts_file(file_name,
|
|
529
|
+
self.get_data_points(absolute),
|
|
530
|
+
self.get_all_attributes(),
|
|
531
|
+
geo_ref)
|
|
532
|
+
else:
|
|
533
|
+
_write_pts_file(file_name,
|
|
534
|
+
self.get_data_points(absolute),
|
|
535
|
+
self.get_all_attributes(),
|
|
536
|
+
self.get_geo_reference())
|
|
537
|
+
elif file_name[-4:] == ".txt" or file_name[-4:] == ".csv":
|
|
538
|
+
msg = "ERROR: trying to write a .txt file with relative data."
|
|
539
|
+
assert absolute, msg
|
|
540
|
+
_write_csv_file(file_name,
|
|
541
|
+
self.get_data_points(absolute=True,
|
|
542
|
+
as_lat_long=as_lat_long,
|
|
543
|
+
isSouthHemisphere=isSouthHemisphere),
|
|
544
|
+
self.get_all_attributes(),
|
|
545
|
+
as_lat_long=as_lat_long)
|
|
546
|
+
elif file_name[-4:] == ".urs" :
|
|
547
|
+
msg = "ERROR: Can not write a .urs file as a relative file."
|
|
548
|
+
assert absolute, msg
|
|
549
|
+
_write_urs_file(file_name,
|
|
550
|
+
self.get_data_points(as_lat_long=True,
|
|
551
|
+
isSouthHemisphere=isSouthHemisphere))
|
|
552
|
+
else:
|
|
553
|
+
msg = 'Unknown file type %s ' %file_name
|
|
554
|
+
raise IOError(msg)
|
|
555
|
+
|
|
556
|
+
def get_sample(self, indices):
|
|
557
|
+
""" Returns a object which is a subset of the original
|
|
558
|
+
and the data points and attributes in this new object refer to
|
|
559
|
+
the indices provided
|
|
560
|
+
|
|
561
|
+
Input
|
|
562
|
+
indices- a list of integers that represent the new object
|
|
563
|
+
Output
|
|
564
|
+
New geospatial data object representing points specified by
|
|
565
|
+
the indices
|
|
566
|
+
"""
|
|
567
|
+
|
|
568
|
+
# FIXME: add the geo_reference to this
|
|
569
|
+
points = self.get_data_points()
|
|
570
|
+
sampled_points = num.take(points, indices, axis=0)
|
|
571
|
+
|
|
572
|
+
attributes = self.get_all_attributes()
|
|
573
|
+
|
|
574
|
+
sampled_attributes = {}
|
|
575
|
+
if attributes is not None:
|
|
576
|
+
for key, att in attributes.items():
|
|
577
|
+
sampled_attributes[key] = num.take(att, indices, axis=0)
|
|
578
|
+
|
|
579
|
+
return Geospatial_data(sampled_points, sampled_attributes)
|
|
580
|
+
|
|
581
|
+
def split(self, factor=0.5, seed_num=None, verbose=False):
|
|
582
|
+
"""Returns two geospatial_data object, first is the size of the 'factor'
|
|
583
|
+
smaller the original and the second is the remainder. The two
|
|
584
|
+
new objects are disjoint sets of each other.
|
|
585
|
+
|
|
586
|
+
Points of the two new object have selected RANDOMLY.
|
|
587
|
+
|
|
588
|
+
This method create two lists of indices which are passed into
|
|
589
|
+
get_sample. The lists are created using random numbers, and
|
|
590
|
+
they are unique sets eg. total_list(1,2,3,4,5,6,7,8,9)
|
|
591
|
+
random_list(1,3,6,7,9) and remainder_list(0,2,4,5,8)
|
|
592
|
+
|
|
593
|
+
Input - the factor which to split the object, if 0.1 then 10% of the
|
|
594
|
+
together object will be returned
|
|
595
|
+
|
|
596
|
+
Output - two geospatial_data objects that are disjoint sets of the
|
|
597
|
+
original
|
|
598
|
+
"""
|
|
599
|
+
|
|
600
|
+
i = 0
|
|
601
|
+
self_size = len(self)
|
|
602
|
+
random_list = []
|
|
603
|
+
remainder_list = []
|
|
604
|
+
new_size = round(factor * self_size)
|
|
605
|
+
|
|
606
|
+
# Find unique random numbers
|
|
607
|
+
if verbose: log.critical("make unique random number list "
|
|
608
|
+
"and get indices")
|
|
609
|
+
|
|
610
|
+
total = num.array(range(self_size), num.int) #array default#
|
|
611
|
+
total_list = total.tolist()
|
|
612
|
+
|
|
613
|
+
if verbose: log.critical("total list len=%d" % len(total_list))
|
|
614
|
+
|
|
615
|
+
# There will be repeated random numbers however will not be a
|
|
616
|
+
# problem as they are being 'pop'ed out of array so if there
|
|
617
|
+
# are two numbers the same they will pop different indicies,
|
|
618
|
+
# still basically random
|
|
619
|
+
## create list of non-unquie random numbers
|
|
620
|
+
if verbose: log.critical("create random numbers list %s long"
|
|
621
|
+
% str(new_size))
|
|
622
|
+
|
|
623
|
+
# Set seed if provided, mainly important for unit test!
|
|
624
|
+
# plus recalcule seed when no seed provided.
|
|
625
|
+
if seed_num is not None:
|
|
626
|
+
seed(seed_num)
|
|
627
|
+
else:
|
|
628
|
+
seed()
|
|
629
|
+
|
|
630
|
+
random_num = randint(0, self_size-1, (int(new_size),))
|
|
631
|
+
random_num = random_num.tolist()
|
|
632
|
+
|
|
633
|
+
# need to sort and reverse so the pop() works correctly
|
|
634
|
+
random_num.sort()
|
|
635
|
+
random_num.reverse()
|
|
636
|
+
|
|
637
|
+
if verbose: log.critical("make random number list and get indices")
|
|
638
|
+
|
|
639
|
+
j = 0
|
|
640
|
+
k = 1
|
|
641
|
+
remainder_list = total_list[:]
|
|
642
|
+
|
|
643
|
+
# pops array index (random_num) from remainder_list
|
|
644
|
+
# (which starts as the total_list and appends to random_list)
|
|
645
|
+
random_num_len = len(random_num)
|
|
646
|
+
for i in random_num:
|
|
647
|
+
random_list.append(remainder_list.pop(i))
|
|
648
|
+
j += 1
|
|
649
|
+
# prints progress
|
|
650
|
+
if verbose and round(random_num_len/10*k) == j:
|
|
651
|
+
log.critical('(%s/%s)' % (j, random_num_len))
|
|
652
|
+
k += 1
|
|
653
|
+
|
|
654
|
+
# FIXME: move to tests, it might take a long time
|
|
655
|
+
# then create an array of random length between 500 and 1000,
|
|
656
|
+
# and use a random factor between 0 and 1
|
|
657
|
+
# setup for assertion
|
|
658
|
+
test_total = random_list[:]
|
|
659
|
+
test_total.extend(remainder_list)
|
|
660
|
+
test_total.sort()
|
|
661
|
+
msg = ('The two random lists made from the original list when added '
|
|
662
|
+
'together DO NOT equal the original list')
|
|
663
|
+
assert total_list == test_total, msg
|
|
664
|
+
|
|
665
|
+
# Get new samples
|
|
666
|
+
if verbose: log.critical("get values of indices for random list")
|
|
667
|
+
G1 = self.get_sample(random_list)
|
|
668
|
+
if verbose: log.critical("get values of indices for "
|
|
669
|
+
"opposite of random list")
|
|
670
|
+
G2 = self.get_sample(remainder_list)
|
|
671
|
+
|
|
672
|
+
return G1, G2
|
|
673
|
+
|
|
674
|
+
def __iter__(self):
|
|
675
|
+
"""Read in the header, number_of_points and save the
|
|
676
|
+
file pointer position
|
|
677
|
+
"""
|
|
678
|
+
|
|
679
|
+
# FIXME - what to do if the file isn't there
|
|
680
|
+
|
|
681
|
+
# FIXME (Ole): Shouldn't this go into the constructor?
|
|
682
|
+
# This method acts like the constructor when blocking.
|
|
683
|
+
# ... and shouldn't it be called block_size?
|
|
684
|
+
#
|
|
685
|
+
if self.max_read_lines is None:
|
|
686
|
+
self.max_read_lines = MAX_READ_LINES
|
|
687
|
+
|
|
688
|
+
if self.file_name[-4:] == ".pts":
|
|
689
|
+
# See if the file is there. Throw a QUIET IO error if it isn't
|
|
690
|
+
fd = open(self.file_name,'r')
|
|
691
|
+
fd.close()
|
|
692
|
+
|
|
693
|
+
# Throws prints to screen if file not present
|
|
694
|
+
self.fid = NetCDFFile(self.file_name, netcdf_mode_r)
|
|
695
|
+
|
|
696
|
+
(self.blocking_georef,
|
|
697
|
+
self.blocking_keys,
|
|
698
|
+
self.number_of_points) = _read_pts_file_header(self.fid,
|
|
699
|
+
self.verbose)
|
|
700
|
+
self.start_row = 0
|
|
701
|
+
self.last_row = self.number_of_points
|
|
702
|
+
self.show_verbose = 0
|
|
703
|
+
self.verbose_block_size = (self.last_row + 10)/10
|
|
704
|
+
self.block_number = 0
|
|
705
|
+
self.number_of_blocks = int(self.number_of_points/self.max_read_lines)
|
|
706
|
+
# This computes the number of full blocks. The last block may be
|
|
707
|
+
# smaller and won't be included in this estimate.
|
|
708
|
+
|
|
709
|
+
if self.verbose is True:
|
|
710
|
+
log.critical('Geospatial_data: Reading %d points (in %d block(s)) from file %s. '
|
|
711
|
+
% (self.number_of_points, self.number_of_blocks+1,
|
|
712
|
+
self.file_name))
|
|
713
|
+
log.critical('Geospatial_data: Each block consists of %d data points'
|
|
714
|
+
% self.max_read_lines)
|
|
715
|
+
else:
|
|
716
|
+
# Assume the file is a csv file
|
|
717
|
+
file_pointer = open(self.file_name)
|
|
718
|
+
self.header, self.file_pointer = _read_csv_file_header(file_pointer)
|
|
719
|
+
self.blocking_georef = None # Used for reconciling zones
|
|
720
|
+
|
|
721
|
+
return self
|
|
722
|
+
|
|
723
|
+
def next(self):
|
|
724
|
+
"""read a block, instanciate a new geospatial and return it"""
|
|
725
|
+
|
|
726
|
+
if self.file_name[-4:] == ".pts":
|
|
727
|
+
if self.start_row == self.last_row:
|
|
728
|
+
# Read the end of the file last iteration
|
|
729
|
+
# Remove blocking attributes
|
|
730
|
+
self.fid.close()
|
|
731
|
+
del self.max_read_lines
|
|
732
|
+
del self.blocking_georef
|
|
733
|
+
del self.last_row
|
|
734
|
+
del self.start_row
|
|
735
|
+
del self.blocking_keys
|
|
736
|
+
del self.fid
|
|
737
|
+
raise StopIteration
|
|
738
|
+
fin_row = self.start_row + self.max_read_lines
|
|
739
|
+
if fin_row > self.last_row:
|
|
740
|
+
fin_row = self.last_row
|
|
741
|
+
|
|
742
|
+
if self.verbose is True:
|
|
743
|
+
if (self.show_verbose >= self.start_row
|
|
744
|
+
and self.show_verbose < fin_row):
|
|
745
|
+
|
|
746
|
+
log.critical('\nGeospatial_data: Reading block %d (points %d to %d) out of %d'
|
|
747
|
+
% (self.block_number, self.start_row,
|
|
748
|
+
fin_row, self.number_of_blocks))
|
|
749
|
+
|
|
750
|
+
self.show_verbose += max(self.max_read_lines,
|
|
751
|
+
self.verbose_block_size)
|
|
752
|
+
|
|
753
|
+
# Read next block
|
|
754
|
+
pointlist, att_dict, = _read_pts_file_blocking(self.fid,
|
|
755
|
+
self.start_row,
|
|
756
|
+
fin_row,
|
|
757
|
+
self.blocking_keys)
|
|
758
|
+
|
|
759
|
+
geo = Geospatial_data(pointlist, att_dict, self.blocking_georef)
|
|
760
|
+
self.start_row = fin_row
|
|
761
|
+
|
|
762
|
+
self.block_number += 1
|
|
763
|
+
else:
|
|
764
|
+
# Assume the file is a csv file
|
|
765
|
+
try:
|
|
766
|
+
(pointlist,
|
|
767
|
+
att_dict,
|
|
768
|
+
geo_ref,
|
|
769
|
+
self.file_pointer) = _read_csv_file_blocking(self.file_pointer,
|
|
770
|
+
self.header[:],
|
|
771
|
+
max_read_lines=
|
|
772
|
+
self.max_read_lines,
|
|
773
|
+
verbose=
|
|
774
|
+
self.verbose)
|
|
775
|
+
|
|
776
|
+
# Check that the zones haven't changed.
|
|
777
|
+
if geo_ref is not None:
|
|
778
|
+
geo_ref.reconcile_zones(self.blocking_georef)
|
|
779
|
+
self.blocking_georef = geo_ref
|
|
780
|
+
elif self.blocking_georef is not None:
|
|
781
|
+
msg = ('Geo reference given, then not given.'
|
|
782
|
+
' This should not happen.')
|
|
783
|
+
raise ValueError(msg)
|
|
784
|
+
geo = Geospatial_data(pointlist, att_dict, geo_ref)
|
|
785
|
+
except StopIteration:
|
|
786
|
+
self.file_pointer.close()
|
|
787
|
+
del self.header
|
|
788
|
+
del self.file_pointer
|
|
789
|
+
raise StopIteration
|
|
790
|
+
except ANUGAError:
|
|
791
|
+
self.file_pointer.close()
|
|
792
|
+
del self.header
|
|
793
|
+
del self.file_pointer
|
|
794
|
+
raise
|
|
795
|
+
except SyntaxError:
|
|
796
|
+
self.file_pointer.close()
|
|
797
|
+
del self.header
|
|
798
|
+
del self.file_pointer
|
|
799
|
+
# This should only be if there is a format error
|
|
800
|
+
msg = ('Could not open file %s.\n%s'
|
|
801
|
+
% (self.file_name, Error_message['IOError']))
|
|
802
|
+
raise SyntaxError(msg)
|
|
803
|
+
return geo
|
|
804
|
+
|
|
805
|
+
##################### Error messages ###########
|
|
806
|
+
Error_message = {}
|
|
807
|
+
Em = Error_message
|
|
808
|
+
Em['IOError'] = ('NOTE: The format for a comma separated .txt/.csv file is:\n'
|
|
809
|
+
' 1st line: [column names]\n'
|
|
810
|
+
' other lines: [x value], [y value], [attributes]\n'
|
|
811
|
+
'\n'
|
|
812
|
+
' for example:\n'
|
|
813
|
+
' x, y, elevation, friction\n'
|
|
814
|
+
' 0.6, 0.7, 4.9, 0.3\n'
|
|
815
|
+
' 1.9, 2.8, 5, 0.3\n'
|
|
816
|
+
' 2.7, 2.4, 5.2, 0.3\n'
|
|
817
|
+
'\n'
|
|
818
|
+
'The first two columns are assumed to be x, y coordinates.\n'
|
|
819
|
+
'The attribute values must be numeric.\n')
|
|
820
|
+
|
|
821
|
+
def _set_using_lat_long(latitudes,
|
|
822
|
+
longitudes,
|
|
823
|
+
geo_reference,
|
|
824
|
+
data_points,
|
|
825
|
+
points_are_lats_longs):
|
|
826
|
+
"""If the points has lat long info, assume it is in (lat, long) order."""
|
|
827
|
+
|
|
828
|
+
if geo_reference is not None:
|
|
829
|
+
msg = ('A georeference is specified yet latitude and longitude '
|
|
830
|
+
'are also specified!')
|
|
831
|
+
raise ValueError(msg)
|
|
832
|
+
|
|
833
|
+
if data_points is not None and not points_are_lats_longs:
|
|
834
|
+
msg = ('Data points are specified yet latitude and longitude are '
|
|
835
|
+
'also specified.')
|
|
836
|
+
raise ValueError(msg)
|
|
837
|
+
|
|
838
|
+
if points_are_lats_longs:
|
|
839
|
+
if data_points is None:
|
|
840
|
+
msg = "Data points are not specified."
|
|
841
|
+
raise ValueError(msg)
|
|
842
|
+
lats_longs = ensure_numeric(data_points)
|
|
843
|
+
latitudes = num.ravel(lats_longs[:,0:1])
|
|
844
|
+
longitudes = num.ravel(lats_longs[:,1:])
|
|
845
|
+
|
|
846
|
+
if latitudes is None and longitudes is None:
|
|
847
|
+
msg = "Latitudes and Longitudes are not specified."
|
|
848
|
+
raise ValueError(msg)
|
|
849
|
+
|
|
850
|
+
if latitudes is None:
|
|
851
|
+
msg = "Longitudes are specified yet latitudes aren't."
|
|
852
|
+
raise ValueError(msg)
|
|
853
|
+
|
|
854
|
+
if longitudes is None:
|
|
855
|
+
msg = "Latitudes are specified yet longitudes aren't."
|
|
856
|
+
raise ValueError(msg)
|
|
857
|
+
|
|
858
|
+
data_points, zone = convert_from_latlon_to_utm(latitudes=latitudes,
|
|
859
|
+
longitudes=longitudes)
|
|
860
|
+
return data_points, Geo_reference(zone=zone)
|
|
861
|
+
|
|
862
|
+
|
|
863
|
+
def _read_pts_file(file_name, verbose=False):
|
|
864
|
+
"""Read .pts NetCDF file
|
|
865
|
+
|
|
866
|
+
Return a (dict_points, dict_attribute, geo_ref)
|
|
867
|
+
eg
|
|
868
|
+
dict['points'] = [[1.0,2.0],[3.0,5.0]]
|
|
869
|
+
dict['attributelist']['elevation'] = [[7.0,5.0]]
|
|
870
|
+
"""
|
|
871
|
+
|
|
872
|
+
if verbose: log.critical('Geospatial_data: Reading %s' % file_name)
|
|
873
|
+
|
|
874
|
+
# See if the file is there. Throw a QUIET IO error if it isn't
|
|
875
|
+
fd = open(file_name,'r')
|
|
876
|
+
fd.close()
|
|
877
|
+
|
|
878
|
+
# Throws prints to screen if file not present
|
|
879
|
+
fid = NetCDFFile(file_name, netcdf_mode_r)
|
|
880
|
+
|
|
881
|
+
pointlist = fid.variables['points'][:]
|
|
882
|
+
keys = fid.variables.keys()
|
|
883
|
+
|
|
884
|
+
if verbose: log.critical('Geospatial_data: Got %d variables: %s' % (len(keys), keys))
|
|
885
|
+
|
|
886
|
+
try:
|
|
887
|
+
keys.remove('points')
|
|
888
|
+
except IOError, e:
|
|
889
|
+
fid.close()
|
|
890
|
+
msg = "Expected keyword 'points' but could not find it"
|
|
891
|
+
raise IOError(msg)
|
|
892
|
+
|
|
893
|
+
attributes = {}
|
|
894
|
+
for key in keys:
|
|
895
|
+
if verbose: log.critical("Geospatial_data: Reading attribute '%s'" % key)
|
|
896
|
+
|
|
897
|
+
if not (key == 'points'):
|
|
898
|
+
attributes[key] = fid.variables[key][:]
|
|
899
|
+
|
|
900
|
+
try:
|
|
901
|
+
geo_reference = Geo_reference(NetCDFObject=fid)
|
|
902
|
+
except AttributeError, e:
|
|
903
|
+
geo_reference = None
|
|
904
|
+
|
|
905
|
+
fid.close()
|
|
906
|
+
|
|
907
|
+
if verbose: log.critical("Geospatial_data: %g data points" % len(pointlist))
|
|
908
|
+
|
|
909
|
+
return pointlist, attributes, geo_reference
|
|
910
|
+
|
|
911
|
+
|
|
912
|
+
def _read_csv_file(file_name, verbose=False):
|
|
913
|
+
"""Read .csv file
|
|
914
|
+
|
|
915
|
+
Return a dic of array of points, and dic of array of attribute
|
|
916
|
+
eg
|
|
917
|
+
dic['points'] = [[1.0,2.0],[3.0,5.0]]
|
|
918
|
+
dic['attributelist']['elevation'] = [[7.0,5.0]]
|
|
919
|
+
"""
|
|
920
|
+
|
|
921
|
+
file_pointer = open(file_name)
|
|
922
|
+
header, file_pointer = _read_csv_file_header(file_pointer)
|
|
923
|
+
try:
|
|
924
|
+
(pointlist,
|
|
925
|
+
att_dict,
|
|
926
|
+
geo_ref,
|
|
927
|
+
file_pointer) = _read_csv_file_blocking(file_pointer,
|
|
928
|
+
header,
|
|
929
|
+
max_read_lines=1e30)
|
|
930
|
+
# If the file is bigger that this, block..
|
|
931
|
+
# FIXME (Ole) What's up here?
|
|
932
|
+
except ANUGAError:
|
|
933
|
+
file_pointer.close()
|
|
934
|
+
raise
|
|
935
|
+
|
|
936
|
+
file_pointer.close()
|
|
937
|
+
|
|
938
|
+
return pointlist, att_dict, geo_ref
|
|
939
|
+
|
|
940
|
+
|
|
941
|
+
CSV_DELIMITER = ','
|
|
942
|
+
|
|
943
|
+
def _read_csv_file_header(file_pointer,
|
|
944
|
+
delimiter=CSV_DELIMITER,
|
|
945
|
+
verbose=False):
|
|
946
|
+
"""Read the header of a .csv file
|
|
947
|
+
Return a list of the header names
|
|
948
|
+
"""
|
|
949
|
+
|
|
950
|
+
line = file_pointer.readline()
|
|
951
|
+
header = clean_line(line, delimiter)
|
|
952
|
+
|
|
953
|
+
return header, file_pointer
|
|
954
|
+
|
|
955
|
+
def _read_csv_file_blocking(file_pointer,
|
|
956
|
+
header,
|
|
957
|
+
delimiter=CSV_DELIMITER,
|
|
958
|
+
max_read_lines=MAX_READ_LINES,
|
|
959
|
+
verbose=False):
|
|
960
|
+
"""Read the body of a .csv file.
|
|
961
|
+
header: The list header of the csv file, with the x and y labels.
|
|
962
|
+
"""
|
|
963
|
+
|
|
964
|
+
points = []
|
|
965
|
+
pointattributes = []
|
|
966
|
+
att_dict = {}
|
|
967
|
+
|
|
968
|
+
# This is to remove the x and y headers.
|
|
969
|
+
header = header[:]
|
|
970
|
+
try:
|
|
971
|
+
x_header = header.pop(0)
|
|
972
|
+
y_header = header.pop(0)
|
|
973
|
+
except IndexError:
|
|
974
|
+
# if there are not two columns this will occur.
|
|
975
|
+
# eg if it is a space seperated file
|
|
976
|
+
raise SyntaxError
|
|
977
|
+
|
|
978
|
+
read_lines = 0
|
|
979
|
+
while read_lines < max_read_lines:
|
|
980
|
+
line = file_pointer.readline()
|
|
981
|
+
numbers = clean_line(line, delimiter)
|
|
982
|
+
if len(numbers) <= 1:
|
|
983
|
+
break
|
|
984
|
+
if line[0] == '#':
|
|
985
|
+
continue
|
|
986
|
+
|
|
987
|
+
read_lines += 1
|
|
988
|
+
|
|
989
|
+
try:
|
|
990
|
+
x = float(numbers[0])
|
|
991
|
+
y = float(numbers[1])
|
|
992
|
+
points.append([x,y])
|
|
993
|
+
numbers.pop(0)
|
|
994
|
+
numbers.pop(0)
|
|
995
|
+
if len(header) != len(numbers):
|
|
996
|
+
file_pointer.close()
|
|
997
|
+
msg = ('File load error. '
|
|
998
|
+
'There might be a problem with the file header.')
|
|
999
|
+
raise SyntaxError(msg)
|
|
1000
|
+
for i,n in enumerate(numbers):
|
|
1001
|
+
n.strip()
|
|
1002
|
+
if n != '\n' and n != '':
|
|
1003
|
+
att_dict.setdefault(header[i],[]).append(float(n))
|
|
1004
|
+
except ValueError:
|
|
1005
|
+
raise SyntaxError
|
|
1006
|
+
|
|
1007
|
+
if points == []:
|
|
1008
|
+
raise StopIteration
|
|
1009
|
+
|
|
1010
|
+
pointlist = num.array(points, num.float)
|
|
1011
|
+
for key in att_dict.keys():
|
|
1012
|
+
att_dict[key] = num.array(att_dict[key], num.float)
|
|
1013
|
+
|
|
1014
|
+
# Do stuff here so the info is in lat's and longs
|
|
1015
|
+
geo_ref = None
|
|
1016
|
+
x_header = lower(x_header[:3])
|
|
1017
|
+
y_header = lower(y_header[:3])
|
|
1018
|
+
if (x_header == 'lon' or x_header == 'lat') \
|
|
1019
|
+
and (y_header == 'lon' or y_header == 'lat'):
|
|
1020
|
+
if x_header == 'lon':
|
|
1021
|
+
longitudes = num.ravel(pointlist[:,0:1])
|
|
1022
|
+
latitudes = num.ravel(pointlist[:,1:])
|
|
1023
|
+
else:
|
|
1024
|
+
latitudes = num.ravel(pointlist[:,0:1])
|
|
1025
|
+
longitudes = num.ravel(pointlist[:,1:])
|
|
1026
|
+
|
|
1027
|
+
pointlist, geo_ref = _set_using_lat_long(latitudes,
|
|
1028
|
+
longitudes,
|
|
1029
|
+
geo_reference=None,
|
|
1030
|
+
data_points=None,
|
|
1031
|
+
points_are_lats_longs=False)
|
|
1032
|
+
|
|
1033
|
+
return pointlist, att_dict, geo_ref, file_pointer
|
|
1034
|
+
|
|
1035
|
+
|
|
1036
|
+
def _read_pts_file_header(fid, verbose=False):
|
|
1037
|
+
'''Read the geo_reference and number_of_points from a .pts file'''
|
|
1038
|
+
|
|
1039
|
+
keys = fid.variables.keys()
|
|
1040
|
+
try:
|
|
1041
|
+
keys.remove('points')
|
|
1042
|
+
except IOError, e:
|
|
1043
|
+
fid.close()
|
|
1044
|
+
msg = "Expected keyword 'points' but could not find it."
|
|
1045
|
+
raise IOError(msg)
|
|
1046
|
+
|
|
1047
|
+
if verbose: log.critical('Got %d variables: %s' % (len(keys), keys))
|
|
1048
|
+
|
|
1049
|
+
try:
|
|
1050
|
+
geo_reference = Geo_reference(NetCDFObject=fid)
|
|
1051
|
+
except AttributeError, e:
|
|
1052
|
+
geo_reference = None
|
|
1053
|
+
|
|
1054
|
+
try: # netcdf4
|
|
1055
|
+
number_of_points = len(fid.dimensions['number_of_points'])
|
|
1056
|
+
except: #scientific python
|
|
1057
|
+
number_of_points = fid.dimensions['number_of_points']
|
|
1058
|
+
|
|
1059
|
+
return geo_reference, keys, number_of_points
|
|
1060
|
+
|
|
1061
|
+
|
|
1062
|
+
def _read_pts_file_blocking(fid, start_row, fin_row, keys):
|
|
1063
|
+
'''Read the body of a .pts file.'''
|
|
1064
|
+
|
|
1065
|
+
pointlist = num.array(fid.variables['points'][start_row:fin_row])
|
|
1066
|
+
|
|
1067
|
+
attributes = {}
|
|
1068
|
+
for key in keys:
|
|
1069
|
+
attributes[key] = num.array(fid.variables[key][start_row:fin_row])
|
|
1070
|
+
|
|
1071
|
+
return pointlist, attributes
|
|
1072
|
+
|
|
1073
|
+
|
|
1074
|
+
def _write_pts_file(file_name,
|
|
1075
|
+
write_data_points,
|
|
1076
|
+
write_attributes=None,
|
|
1077
|
+
write_geo_reference=None):
|
|
1078
|
+
"""Write .pts NetCDF file
|
|
1079
|
+
|
|
1080
|
+
NOTE: Below might not be valid ask Duncan : NB 5/2006
|
|
1081
|
+
|
|
1082
|
+
WARNING: This function mangles the point_atts data structure
|
|
1083
|
+
# F??ME: (DSG)This format has issues.
|
|
1084
|
+
# There can't be an attribute called points
|
|
1085
|
+
# consider format change
|
|
1086
|
+
# method changed by NB not sure if above statement is correct
|
|
1087
|
+
|
|
1088
|
+
should create new test for this
|
|
1089
|
+
legal_keys = ['pointlist', 'attributelist', 'geo_reference']
|
|
1090
|
+
for key in point_atts.keys():
|
|
1091
|
+
msg = 'Key %s is illegal. Valid keys are %s' %(key, legal_keys)
|
|
1092
|
+
assert key in legal_keys, msg
|
|
1093
|
+
"""
|
|
1094
|
+
|
|
1095
|
+
# NetCDF file definition
|
|
1096
|
+
outfile = NetCDFFile(file_name, netcdf_mode_w)
|
|
1097
|
+
|
|
1098
|
+
# Create new file
|
|
1099
|
+
outfile.institution = 'Geoscience Australia'
|
|
1100
|
+
outfile.description = ('NetCDF format for compact and portable storage '
|
|
1101
|
+
'of spatial point data')
|
|
1102
|
+
|
|
1103
|
+
# Dimension definitions
|
|
1104
|
+
shape = write_data_points.shape[0]
|
|
1105
|
+
outfile.createDimension('number_of_points', shape)
|
|
1106
|
+
outfile.createDimension('number_of_dimensions', 2) # This is 2d data
|
|
1107
|
+
|
|
1108
|
+
# Variable definition
|
|
1109
|
+
outfile.createVariable('points', netcdf_float,
|
|
1110
|
+
('number_of_points', 'number_of_dimensions'))
|
|
1111
|
+
|
|
1112
|
+
# create variables
|
|
1113
|
+
outfile.variables['points'][:] = write_data_points
|
|
1114
|
+
|
|
1115
|
+
if write_attributes is not None:
|
|
1116
|
+
for key in write_attributes.keys():
|
|
1117
|
+
outfile.createVariable(key, netcdf_float, ('number_of_points',))
|
|
1118
|
+
outfile.variables[key][:] = write_attributes[key]
|
|
1119
|
+
|
|
1120
|
+
if write_geo_reference is not None:
|
|
1121
|
+
write_NetCDF_georeference(write_geo_reference, outfile)
|
|
1122
|
+
|
|
1123
|
+
outfile.close()
|
|
1124
|
+
|
|
1125
|
+
|
|
1126
|
+
def _write_csv_file(file_name,
|
|
1127
|
+
write_data_points,
|
|
1128
|
+
write_attributes=None,
|
|
1129
|
+
as_lat_long=False,
|
|
1130
|
+
delimiter=','):
|
|
1131
|
+
"""Write a .csv file."""
|
|
1132
|
+
|
|
1133
|
+
points = write_data_points
|
|
1134
|
+
pointattributes = write_attributes
|
|
1135
|
+
|
|
1136
|
+
fd = open(file_name, 'w')
|
|
1137
|
+
|
|
1138
|
+
if as_lat_long:
|
|
1139
|
+
titlelist = "latitude" + delimiter + "longitude" + delimiter
|
|
1140
|
+
else:
|
|
1141
|
+
titlelist = "x" + delimiter + "y" + delimiter
|
|
1142
|
+
|
|
1143
|
+
if pointattributes is not None:
|
|
1144
|
+
for title in pointattributes.keys():
|
|
1145
|
+
titlelist = titlelist + title + delimiter
|
|
1146
|
+
titlelist = titlelist[0:-len(delimiter)] # remove the last delimiter
|
|
1147
|
+
|
|
1148
|
+
fd.write(titlelist + "\n")
|
|
1149
|
+
|
|
1150
|
+
# <x/lat> <y/long> [attributes]
|
|
1151
|
+
for i, vert in enumerate( points):
|
|
1152
|
+
if pointattributes is not None:
|
|
1153
|
+
attlist = ","
|
|
1154
|
+
for att in pointattributes.keys():
|
|
1155
|
+
attlist = attlist + str(pointattributes[att][i]) + delimiter
|
|
1156
|
+
attlist = attlist[0:-len(delimiter)] # remove the last delimiter
|
|
1157
|
+
attlist.strip()
|
|
1158
|
+
else:
|
|
1159
|
+
attlist = ''
|
|
1160
|
+
|
|
1161
|
+
fd.write(str(vert[0]) + delimiter + str(vert[1]) + attlist + "\n")
|
|
1162
|
+
|
|
1163
|
+
fd.close()
|
|
1164
|
+
|
|
1165
|
+
|
|
1166
|
+
def _write_urs_file(file_name, points, delimiter=' '):
|
|
1167
|
+
"""Write a URS format file.
|
|
1168
|
+
export a file, file_name, with the urs format
|
|
1169
|
+
the data points are in lats and longs
|
|
1170
|
+
"""
|
|
1171
|
+
|
|
1172
|
+
fd = open(file_name, 'w')
|
|
1173
|
+
|
|
1174
|
+
# first line is # points
|
|
1175
|
+
fd.write(str(len(points)) + "\n")
|
|
1176
|
+
|
|
1177
|
+
# <lat> <long> <id#>
|
|
1178
|
+
for i, vert in enumerate( points):
|
|
1179
|
+
fd.write(str(round(vert[0],7)) + delimiter +
|
|
1180
|
+
str(round(vert[1],7)) + delimiter + str(i) + "\n")
|
|
1181
|
+
|
|
1182
|
+
fd.close()
|
|
1183
|
+
|
|
1184
|
+
|
|
1185
|
+
def _point_atts2array(point_atts):
|
|
1186
|
+
point_atts['pointlist'] = num.array(point_atts['pointlist'], num.float)
|
|
1187
|
+
|
|
1188
|
+
for key in point_atts['attributelist'].keys():
|
|
1189
|
+
point_atts['attributelist'][key] = \
|
|
1190
|
+
num.array(point_atts['attributelist'][key], num.float)
|
|
1191
|
+
|
|
1192
|
+
return point_atts
|
|
1193
|
+
|
|
1194
|
+
|
|
1195
|
+
def geospatial_data2points_dictionary(geospatial_data):
|
|
1196
|
+
"""Convert geospatial data to points_dictionary"""
|
|
1197
|
+
|
|
1198
|
+
points_dictionary = {}
|
|
1199
|
+
points_dictionary['pointlist'] = geospatial_data.data_points
|
|
1200
|
+
|
|
1201
|
+
points_dictionary['attributelist'] = {}
|
|
1202
|
+
|
|
1203
|
+
for attribute_name in geospatial_data.attributes.keys():
|
|
1204
|
+
val = geospatial_data.attributes[attribute_name]
|
|
1205
|
+
points_dictionary['attributelist'][attribute_name] = val
|
|
1206
|
+
|
|
1207
|
+
points_dictionary['geo_reference'] = geospatial_data.geo_reference
|
|
1208
|
+
|
|
1209
|
+
return points_dictionary
|
|
1210
|
+
|
|
1211
|
+
|
|
1212
|
+
def points_dictionary2geospatial_data(points_dictionary):
|
|
1213
|
+
"""Convert points_dictionary to geospatial data object"""
|
|
1214
|
+
|
|
1215
|
+
msg = "Points dictionary must have key 'pointlist'"
|
|
1216
|
+
assert points_dictionary.has_key('pointlist'), msg
|
|
1217
|
+
|
|
1218
|
+
msg = "Points dictionary must have key 'attributelist'"
|
|
1219
|
+
assert points_dictionary.has_key('attributelist'), msg
|
|
1220
|
+
|
|
1221
|
+
if points_dictionary.has_key('geo_reference'):
|
|
1222
|
+
geo = points_dictionary['geo_reference']
|
|
1223
|
+
else:
|
|
1224
|
+
geo = None
|
|
1225
|
+
|
|
1226
|
+
return Geospatial_data(points_dictionary['pointlist'],
|
|
1227
|
+
points_dictionary['attributelist'],
|
|
1228
|
+
geo_reference=geo)
|
|
1229
|
+
|
|
1230
|
+
|
|
1231
|
+
def ensure_absolute(points, geo_reference=None):
|
|
1232
|
+
"""Ensure that points are in absolute coordinates.
|
|
1233
|
+
|
|
1234
|
+
This function inputs several formats and
|
|
1235
|
+
outputs one format. - a numeric array of absolute points.
|
|
1236
|
+
|
|
1237
|
+
Input formats are;
|
|
1238
|
+
points: List or numeric array of coordinate pairs [xi, eta] of
|
|
1239
|
+
points or geospatial object or points file name
|
|
1240
|
+
|
|
1241
|
+
mesh_origin: A geo_reference object or 3-tuples consisting of
|
|
1242
|
+
UTM zone, easting and northing.
|
|
1243
|
+
If specified vertex coordinates are assumed to be
|
|
1244
|
+
relative to their respective origins.
|
|
1245
|
+
"""
|
|
1246
|
+
|
|
1247
|
+
# Input check
|
|
1248
|
+
if isinstance(points, basestring):
|
|
1249
|
+
# It's a string - assume it is a point file
|
|
1250
|
+
points = Geospatial_data(file_name=points)
|
|
1251
|
+
|
|
1252
|
+
if isinstance(points, Geospatial_data):
|
|
1253
|
+
points = points.get_data_points(absolute=True)
|
|
1254
|
+
msg = 'Use a Geospatial_data object or a mesh origin, not both.'
|
|
1255
|
+
assert geo_reference == None, msg
|
|
1256
|
+
else:
|
|
1257
|
+
points = ensure_numeric(copy.copy(points), num.float)
|
|
1258
|
+
|
|
1259
|
+
# Sort of geo_reference and convert points
|
|
1260
|
+
if geo_reference is None:
|
|
1261
|
+
geo = None # Geo_reference()
|
|
1262
|
+
else:
|
|
1263
|
+
if isinstance(geo_reference, Geo_reference):
|
|
1264
|
+
geo = geo_reference
|
|
1265
|
+
else:
|
|
1266
|
+
geo = Geo_reference(geo_reference[0],
|
|
1267
|
+
geo_reference[1],
|
|
1268
|
+
geo_reference[2])
|
|
1269
|
+
points = geo.get_absolute(points)
|
|
1270
|
+
|
|
1271
|
+
return points
|
|
1272
|
+
|
|
1273
|
+
|
|
1274
|
+
def ensure_geospatial(points, geo_reference=None):
|
|
1275
|
+
"""Convert various data formats to a geospatial_data instance.
|
|
1276
|
+
|
|
1277
|
+
Inputed formats are;
|
|
1278
|
+
points: List or numeric array of coordinate pairs [xi, eta] of
|
|
1279
|
+
points or geospatial object
|
|
1280
|
+
|
|
1281
|
+
mesh_origin: A geo_reference object or 3-tuples consisting of
|
|
1282
|
+
UTM zone, easting and northing.
|
|
1283
|
+
If specified vertex coordinates are assumed to be
|
|
1284
|
+
relative to their respective origins.
|
|
1285
|
+
"""
|
|
1286
|
+
|
|
1287
|
+
# Input check
|
|
1288
|
+
if isinstance(points, Geospatial_data):
|
|
1289
|
+
msg = "Use a Geospatial_data object or a mesh origin, not both."
|
|
1290
|
+
assert geo_reference is None, msg
|
|
1291
|
+
return points
|
|
1292
|
+
else:
|
|
1293
|
+
# List or numeric array of absolute points
|
|
1294
|
+
points = ensure_numeric(points, num.float)
|
|
1295
|
+
|
|
1296
|
+
# Sort out geo reference
|
|
1297
|
+
if geo_reference is None:
|
|
1298
|
+
geo = None
|
|
1299
|
+
else:
|
|
1300
|
+
if isinstance(geo_reference, Geo_reference):
|
|
1301
|
+
geo = geo_reference
|
|
1302
|
+
else:
|
|
1303
|
+
geo = Geo_reference(geo_reference[0],
|
|
1304
|
+
geo_reference[1],
|
|
1305
|
+
geo_reference[2])
|
|
1306
|
+
|
|
1307
|
+
# Create Geospatial_data object with appropriate geo reference and return
|
|
1308
|
+
points = Geospatial_data(data_points=points, geo_reference=geo)
|
|
1309
|
+
|
|
1310
|
+
return points
|
|
1311
|
+
|
|
1312
|
+
|
|
1313
|
+
def find_optimal_smoothing_parameter(data_file,
|
|
1314
|
+
alpha_list=None,
|
|
1315
|
+
mesh_file=None,
|
|
1316
|
+
boundary_poly=None,
|
|
1317
|
+
mesh_resolution=100000,
|
|
1318
|
+
north_boundary=None,
|
|
1319
|
+
south_boundary=None,
|
|
1320
|
+
east_boundary=None,
|
|
1321
|
+
west_boundary=None,
|
|
1322
|
+
plot_name='all_alphas',
|
|
1323
|
+
split_factor=0.1,
|
|
1324
|
+
seed_num=None,
|
|
1325
|
+
cache=False,
|
|
1326
|
+
verbose=False):
|
|
1327
|
+
"""Removes a small random sample of points from 'data_file'.
|
|
1328
|
+
Then creates models with different alpha values from 'alpha_list' and
|
|
1329
|
+
cross validates the predicted value to the previously removed point data.
|
|
1330
|
+
Returns the alpha value which has the smallest covariance.
|
|
1331
|
+
|
|
1332
|
+
data_file: must not contain points outside the boundaries defined
|
|
1333
|
+
and it must be either a pts, txt or csv file.
|
|
1334
|
+
|
|
1335
|
+
alpha_list: the alpha values to test in a single list
|
|
1336
|
+
|
|
1337
|
+
mesh_file: name of the created mesh file or if passed in will read it.
|
|
1338
|
+
NOTE, if there is a mesh file mesh_resolution,
|
|
1339
|
+
north_boundary, south... etc will be ignored.
|
|
1340
|
+
|
|
1341
|
+
mesh_resolution: the maximum area size for a triangle
|
|
1342
|
+
|
|
1343
|
+
north_boundary... west_boundary: the value of the boundary
|
|
1344
|
+
|
|
1345
|
+
plot_name: the name for the plot contain the results
|
|
1346
|
+
|
|
1347
|
+
seed_num: the seed to the random number generator
|
|
1348
|
+
|
|
1349
|
+
USAGE:
|
|
1350
|
+
value, alpha = find_optimal_smoothing_parameter(data_file=fileName,
|
|
1351
|
+
alpha_list=[0.0001, 0.01, 1],
|
|
1352
|
+
mesh_file=None,
|
|
1353
|
+
mesh_resolution=3,
|
|
1354
|
+
north_boundary=5,
|
|
1355
|
+
south_boundary=-5,
|
|
1356
|
+
east_boundary=5,
|
|
1357
|
+
west_boundary=-5,
|
|
1358
|
+
plot_name='all_alphas',
|
|
1359
|
+
seed_num=100000,
|
|
1360
|
+
verbose=False)
|
|
1361
|
+
|
|
1362
|
+
OUTPUT: returns the minumum normalised covalance calculate AND the
|
|
1363
|
+
alpha that created it. PLUS writes a plot of the results
|
|
1364
|
+
|
|
1365
|
+
NOTE: code will not work if the data_file extent is greater than the
|
|
1366
|
+
boundary_polygon or any of the boundaries, eg north_boundary...west_boundary
|
|
1367
|
+
"""
|
|
1368
|
+
|
|
1369
|
+
from anuga.shallow_water.shallow_water_domain import Domain
|
|
1370
|
+
from anuga.geospatial_data.geospatial_data import Geospatial_data
|
|
1371
|
+
from anuga.pmesh.mesh_interface import create_mesh_from_regions
|
|
1372
|
+
from anuga.utilities.numerical_tools import cov
|
|
1373
|
+
from anuga.geometry.polygon import is_inside_polygon
|
|
1374
|
+
from anuga.fit_interpolate.benchmark_least_squares import mem_usage
|
|
1375
|
+
|
|
1376
|
+
attribute_smoothed = 'elevation'
|
|
1377
|
+
|
|
1378
|
+
if mesh_file is None:
|
|
1379
|
+
if verbose: log.critical("building mesh")
|
|
1380
|
+
mesh_file = 'temp.msh'
|
|
1381
|
+
|
|
1382
|
+
if (north_boundary is None or south_boundary is None
|
|
1383
|
+
or east_boundary is None or west_boundary is None):
|
|
1384
|
+
no_boundary = True
|
|
1385
|
+
else:
|
|
1386
|
+
no_boundary = False
|
|
1387
|
+
|
|
1388
|
+
if no_boundary is True:
|
|
1389
|
+
msg = 'All boundaries must be defined'
|
|
1390
|
+
raise Exception(msg)
|
|
1391
|
+
|
|
1392
|
+
poly_topo = [[east_boundary, south_boundary],
|
|
1393
|
+
[east_boundary, north_boundary],
|
|
1394
|
+
[west_boundary, north_boundary],
|
|
1395
|
+
[west_boundary, south_boundary]]
|
|
1396
|
+
|
|
1397
|
+
create_mesh_from_regions(poly_topo,
|
|
1398
|
+
boundary_tags={'back': [2],
|
|
1399
|
+
'side': [1,3],
|
|
1400
|
+
'ocean': [0]},
|
|
1401
|
+
maximum_triangle_area=mesh_resolution,
|
|
1402
|
+
filename=mesh_file,
|
|
1403
|
+
use_cache=cache,
|
|
1404
|
+
verbose=verbose)
|
|
1405
|
+
|
|
1406
|
+
else: # if mesh file provided
|
|
1407
|
+
# test mesh file exists?
|
|
1408
|
+
if verbose: "reading from file: %s" % mesh_file
|
|
1409
|
+
if access(mesh_file,F_OK) == 0:
|
|
1410
|
+
msg = "file %s doesn't exist!" % mesh_file
|
|
1411
|
+
raise IOError(msg)
|
|
1412
|
+
|
|
1413
|
+
# split topo data
|
|
1414
|
+
if verbose: log.critical('Reading elevation file: %s' % data_file)
|
|
1415
|
+
G = Geospatial_data(file_name = data_file)
|
|
1416
|
+
if verbose: log.critical('Start split')
|
|
1417
|
+
G_small, G_other = G.split(split_factor, seed_num, verbose=verbose)
|
|
1418
|
+
if verbose: log.critical('Finish split')
|
|
1419
|
+
points = G_small.get_data_points()
|
|
1420
|
+
|
|
1421
|
+
if verbose: log.critical("Number of points in sample to compare: %d"
|
|
1422
|
+
% len(points))
|
|
1423
|
+
|
|
1424
|
+
if alpha_list == None:
|
|
1425
|
+
alphas = [0.001,0.01,100]
|
|
1426
|
+
#alphas = [0.000001, 0.00001, 0.0001, 0.001, 0.01,
|
|
1427
|
+
# 0.1, 1.0, 10.0, 100.0,1000.0,10000.0]
|
|
1428
|
+
else:
|
|
1429
|
+
alphas = alpha_list
|
|
1430
|
+
|
|
1431
|
+
# creates array with columns 1 and 2 are x, y. column 3 is elevation
|
|
1432
|
+
# 4 onwards is the elevation_predicted using the alpha, which will
|
|
1433
|
+
# be compared later against the real removed data
|
|
1434
|
+
data = num.array([], dtype=num.float)
|
|
1435
|
+
|
|
1436
|
+
data = num.resize(data, (len(points), 3+len(alphas)))
|
|
1437
|
+
|
|
1438
|
+
# gets relative point from sample
|
|
1439
|
+
data[:,0] = points[:,0]
|
|
1440
|
+
data[:,1] = points[:,1]
|
|
1441
|
+
elevation_sample = G_small.get_attributes(attribute_name=attribute_smoothed)
|
|
1442
|
+
data[:,2] = elevation_sample
|
|
1443
|
+
|
|
1444
|
+
normal_cov = num.array(num.zeros([len(alphas), 2]), dtype=num.float)
|
|
1445
|
+
|
|
1446
|
+
if verbose: log.critical('Setup computational domains with '
|
|
1447
|
+
'different alphas')
|
|
1448
|
+
|
|
1449
|
+
for i, alpha in enumerate(alphas):
|
|
1450
|
+
# add G_other data to domains with different alphas
|
|
1451
|
+
if verbose:
|
|
1452
|
+
log.critical('Calculating domain and mesh for Alpha=%s'
|
|
1453
|
+
% str(alpha))
|
|
1454
|
+
domain = Domain(mesh_file, use_cache=cache, verbose=verbose)
|
|
1455
|
+
if verbose: log.critical(domain.statistics())
|
|
1456
|
+
domain.set_quantity(attribute_smoothed,
|
|
1457
|
+
geospatial_data=G_other,
|
|
1458
|
+
use_cache=cache,
|
|
1459
|
+
verbose=verbose,
|
|
1460
|
+
alpha=alpha)
|
|
1461
|
+
|
|
1462
|
+
# Convert points to geospatial data for use with get_values below
|
|
1463
|
+
points_geo = Geospatial_data(points, domain.geo_reference)
|
|
1464
|
+
|
|
1465
|
+
# returns the predicted elevation of the points that were "split" out
|
|
1466
|
+
# of the original data set for one particular alpha
|
|
1467
|
+
if verbose: log.critical('Get predicted elevation for location '
|
|
1468
|
+
'to be compared')
|
|
1469
|
+
elevation_predicted = \
|
|
1470
|
+
domain.quantities[attribute_smoothed].\
|
|
1471
|
+
get_values(interpolation_points=points_geo)
|
|
1472
|
+
|
|
1473
|
+
# add predicted elevation to array that starts with x, y, z...
|
|
1474
|
+
data[:,i+3] = elevation_predicted
|
|
1475
|
+
|
|
1476
|
+
sample_cov = cov(elevation_sample)
|
|
1477
|
+
ele_cov = cov(elevation_sample - elevation_predicted)
|
|
1478
|
+
normal_cov[i,:] = [alpha, ele_cov / sample_cov]
|
|
1479
|
+
|
|
1480
|
+
if verbose:
|
|
1481
|
+
log.critical('Covariance for alpha %s=%s'
|
|
1482
|
+
% (normal_cov[i][0], normal_cov[i][1]))
|
|
1483
|
+
log.critical('--------------------------------------------')
|
|
1484
|
+
|
|
1485
|
+
normal_cov0 = normal_cov[:,0]
|
|
1486
|
+
normal_cov_new = num.take(normal_cov, num.argsort(normal_cov0), axis=0)
|
|
1487
|
+
|
|
1488
|
+
if plot_name is not None:
|
|
1489
|
+
from pylab import savefig, semilogx, loglog
|
|
1490
|
+
|
|
1491
|
+
semilogx(normal_cov_new[:,0], normal_cov_new[:,1])
|
|
1492
|
+
loglog(normal_cov_new[:,0], normal_cov_new[:,1])
|
|
1493
|
+
savefig(plot_name, dpi=300)
|
|
1494
|
+
|
|
1495
|
+
if mesh_file == 'temp.msh':
|
|
1496
|
+
remove(mesh_file)
|
|
1497
|
+
|
|
1498
|
+
if verbose:
|
|
1499
|
+
log.critical('Final results:')
|
|
1500
|
+
for i, alpha in enumerate(alphas):
|
|
1501
|
+
log.critical('covariance for alpha %s = %s '
|
|
1502
|
+
% (normal_cov[i][0], normal_cov[i][1]))
|
|
1503
|
+
log.critical('Optimal alpha is: %s '
|
|
1504
|
+
% normal_cov_new[(num.argmin(normal_cov_new, axis=0))[1], 0])
|
|
1505
|
+
|
|
1506
|
+
# covariance and optimal alpha
|
|
1507
|
+
return (min(normal_cov_new[:,1]),
|
|
1508
|
+
normal_cov_new[(num.argmin(normal_cov_new,axis=0))[1],0])
|
|
1509
|
+
|
|
1510
|
+
|
|
1511
|
+
def old_find_optimal_smoothing_parameter(data_file,
|
|
1512
|
+
alpha_list=None,
|
|
1513
|
+
mesh_file=None,
|
|
1514
|
+
boundary_poly=None,
|
|
1515
|
+
mesh_resolution=100000,
|
|
1516
|
+
north_boundary=None,
|
|
1517
|
+
south_boundary=None,
|
|
1518
|
+
east_boundary=None,
|
|
1519
|
+
west_boundary=None,
|
|
1520
|
+
plot_name='all_alphas',
|
|
1521
|
+
split_factor=0.1,
|
|
1522
|
+
seed_num=None,
|
|
1523
|
+
cache=False,
|
|
1524
|
+
verbose=False):
|
|
1525
|
+
"""
|
|
1526
|
+
data_file: must not contain points outside the boundaries defined
|
|
1527
|
+
and it either a pts, txt or csv file.
|
|
1528
|
+
|
|
1529
|
+
alpha_list: the alpha values to test in a single list
|
|
1530
|
+
|
|
1531
|
+
mesh_file: name of the created mesh file or if passed in will read it.
|
|
1532
|
+
NOTE, if there is a mesh file mesh_resolution,
|
|
1533
|
+
north_boundary, south... etc will be ignored.
|
|
1534
|
+
|
|
1535
|
+
mesh_resolution: the maximum area size for a triangle
|
|
1536
|
+
|
|
1537
|
+
north_boundary... west_boundary: the value of the boundary
|
|
1538
|
+
|
|
1539
|
+
plot_name: the name for the plot contain the results
|
|
1540
|
+
|
|
1541
|
+
seed_num: the seed to the random number generator
|
|
1542
|
+
|
|
1543
|
+
USAGE:
|
|
1544
|
+
value, alpha = find_optimal_smoothing_parameter(data_file=fileName,
|
|
1545
|
+
alpha_list=[0.0001, 0.01, 1],
|
|
1546
|
+
mesh_file=None,
|
|
1547
|
+
mesh_resolution=3,
|
|
1548
|
+
north_boundary=5,
|
|
1549
|
+
south_boundary=-5,
|
|
1550
|
+
east_boundary=5,
|
|
1551
|
+
west_boundary=-5,
|
|
1552
|
+
plot_name='all_alphas',
|
|
1553
|
+
seed_num=100000,
|
|
1554
|
+
verbose=False)
|
|
1555
|
+
|
|
1556
|
+
OUTPUT: returns the minumum normalised covalance calculate AND the
|
|
1557
|
+
alpha that created it. PLUS writes a plot of the results
|
|
1558
|
+
|
|
1559
|
+
NOTE: code will not work if the data_file extend is greater than the
|
|
1560
|
+
boundary_polygon or the north_boundary...west_boundary
|
|
1561
|
+
"""
|
|
1562
|
+
|
|
1563
|
+
from anuga.shallow_water.shallow_water_domain import Domain
|
|
1564
|
+
from anuga.geospatial_data.geospatial_data import Geospatial_data
|
|
1565
|
+
from anuga.pmesh.mesh_interface import create_mesh_from_regions
|
|
1566
|
+
from anuga.utilities.numerical_tools import cov
|
|
1567
|
+
from anuga.geometry.polygon import is_inside_polygon
|
|
1568
|
+
from anuga.fit_interpolate.benchmark_least_squares import mem_usage
|
|
1569
|
+
|
|
1570
|
+
attribute_smoothed = 'elevation'
|
|
1571
|
+
|
|
1572
|
+
if mesh_file is None:
|
|
1573
|
+
mesh_file = 'temp.msh'
|
|
1574
|
+
|
|
1575
|
+
if (north_boundary is None or south_boundary is None
|
|
1576
|
+
or east_boundary is None or west_boundary is None):
|
|
1577
|
+
no_boundary = True
|
|
1578
|
+
else:
|
|
1579
|
+
no_boundary = False
|
|
1580
|
+
|
|
1581
|
+
if no_boundary is True:
|
|
1582
|
+
msg = 'All boundaries must be defined'
|
|
1583
|
+
raise Exception(msg)
|
|
1584
|
+
|
|
1585
|
+
poly_topo = [[east_boundary, south_boundary],
|
|
1586
|
+
[east_boundary, north_boundary],
|
|
1587
|
+
[west_boundary, north_boundary],
|
|
1588
|
+
[west_boundary, south_boundary]]
|
|
1589
|
+
|
|
1590
|
+
create_mesh_from_regions(poly_topo,
|
|
1591
|
+
boundary_tags={'back': [2],
|
|
1592
|
+
'side': [1,3],
|
|
1593
|
+
'ocean': [0]},
|
|
1594
|
+
maximum_triangle_area=mesh_resolution,
|
|
1595
|
+
filename=mesh_file,
|
|
1596
|
+
use_cache=cache,
|
|
1597
|
+
verbose=verbose)
|
|
1598
|
+
|
|
1599
|
+
else: # if mesh file provided
|
|
1600
|
+
# test mesh file exists?
|
|
1601
|
+
if access(mesh_file,F_OK) == 0:
|
|
1602
|
+
msg = "file %s doesn't exist!" % mesh_file
|
|
1603
|
+
raise IOError(msg)
|
|
1604
|
+
|
|
1605
|
+
# split topo data
|
|
1606
|
+
G = Geospatial_data(file_name=data_file)
|
|
1607
|
+
if verbose: log.critical('start split')
|
|
1608
|
+
G_small, G_other = G.split(split_factor, seed_num, verbose=verbose)
|
|
1609
|
+
if verbose: log.critical('finish split')
|
|
1610
|
+
points = G_small.get_data_points()
|
|
1611
|
+
|
|
1612
|
+
if verbose: log.critical("Number of points in sample to compare: %d"
|
|
1613
|
+
% len(points))
|
|
1614
|
+
|
|
1615
|
+
if alpha_list == None:
|
|
1616
|
+
alphas = [0.001,0.01,100]
|
|
1617
|
+
#alphas = [0.000001, 0.00001, 0.0001, 0.001, 0.01,
|
|
1618
|
+
# 0.1, 1.0, 10.0, 100.0,1000.0,10000.0]
|
|
1619
|
+
else:
|
|
1620
|
+
alphas = alpha_list
|
|
1621
|
+
|
|
1622
|
+
domains = {}
|
|
1623
|
+
|
|
1624
|
+
if verbose: log.critical('Setup computational domains with '
|
|
1625
|
+
'different alphas')
|
|
1626
|
+
|
|
1627
|
+
for alpha in alphas:
|
|
1628
|
+
# add G_other data to domains with different alphas
|
|
1629
|
+
if verbose:
|
|
1630
|
+
log.critical('Calculating domain and mesh for Alpha = %s' %
|
|
1631
|
+
str(alpha))
|
|
1632
|
+
domain = Domain(mesh_file, use_cache=cache, verbose=verbose)
|
|
1633
|
+
if verbose: log.critical(domain.statistics())
|
|
1634
|
+
domain.set_quantity(attribute_smoothed,
|
|
1635
|
+
geospatial_data=G_other,
|
|
1636
|
+
use_cache=cache,
|
|
1637
|
+
verbose=verbose,
|
|
1638
|
+
alpha=alpha)
|
|
1639
|
+
domains[alpha] = domain
|
|
1640
|
+
|
|
1641
|
+
# creates array with columns 1 and 2 are x, y. column 3 is elevation
|
|
1642
|
+
# 4 onwards is the elevation_predicted using the alpha, which will
|
|
1643
|
+
# be compared later against the real removed data
|
|
1644
|
+
data = num.array([], dtype=num.float)
|
|
1645
|
+
|
|
1646
|
+
data = num.resize(data, (len(points), 3+len(alphas)))
|
|
1647
|
+
|
|
1648
|
+
# gets relative point from sample
|
|
1649
|
+
data[:,0] = points[:,0]
|
|
1650
|
+
data[:,1] = points[:,1]
|
|
1651
|
+
elevation_sample = G_small.get_attributes(attribute_name=attribute_smoothed)
|
|
1652
|
+
data[:,2] = elevation_sample
|
|
1653
|
+
|
|
1654
|
+
normal_cov = num.array(num.zeros([len(alphas), 2]), dtype=num.float)
|
|
1655
|
+
|
|
1656
|
+
if verbose:
|
|
1657
|
+
log.critical('Determine difference between predicted results '
|
|
1658
|
+
'and actual data')
|
|
1659
|
+
|
|
1660
|
+
for i, alpha in enumerate(domains):
|
|
1661
|
+
if verbose: print'Alpha =', alpha
|
|
1662
|
+
|
|
1663
|
+
points_geo = domains[alpha].geo_reference.change_points_geo_ref(points)
|
|
1664
|
+
# returns the predicted elevation of the points that were "split" out
|
|
1665
|
+
# of the original data set for one particular alpha
|
|
1666
|
+
elevation_predicted = \
|
|
1667
|
+
domains[alpha].quantities[attribute_smoothed].\
|
|
1668
|
+
get_values(interpolation_points=points_geo)
|
|
1669
|
+
|
|
1670
|
+
# add predicted elevation to array that starts with x, y, z...
|
|
1671
|
+
data[:,i+3] = elevation_predicted
|
|
1672
|
+
|
|
1673
|
+
sample_cov = cov(elevation_sample)
|
|
1674
|
+
ele_cov = cov(elevation_sample - elevation_predicted)
|
|
1675
|
+
normal_cov[i,:] = [alpha,ele_cov / sample_cov]
|
|
1676
|
+
log.critical('memory usage during compare: %s' % str(mem_usage()))
|
|
1677
|
+
if verbose: log.critical('cov %s = %s'
|
|
1678
|
+
% (normal_cov[i][0], normal_cov[i][1]))
|
|
1679
|
+
|
|
1680
|
+
normal_cov0 = normal_cov[:,0]
|
|
1681
|
+
normal_cov_new = num.take(normal_cov, num.argsort(normal_cov0), axis=0)
|
|
1682
|
+
|
|
1683
|
+
if plot_name is not None:
|
|
1684
|
+
from pylab import savefig,semilogx,loglog
|
|
1685
|
+
|
|
1686
|
+
semilogx(normal_cov_new[:,0], normal_cov_new[:,1])
|
|
1687
|
+
loglog(normal_cov_new[:,0], normal_cov_new[:,1])
|
|
1688
|
+
savefig(plot_name, dpi=300)
|
|
1689
|
+
if mesh_file == 'temp.msh':
|
|
1690
|
+
remove(mesh_file)
|
|
1691
|
+
|
|
1692
|
+
return (min(normal_cov_new[:,1]),
|
|
1693
|
+
normal_cov_new[(num.argmin(normal_cov_new, axis=0))[1],0])
|
|
1694
|
+
|
|
1695
|
+
|
|
1696
|
+
if __name__ == "__main__":
|
|
1697
|
+
pass
|
|
1698
|
+
|