/[escript]/trunk/downunder/test/python/run_datasources.py
ViewVC logotype

Contents of /trunk/downunder/test/python/run_datasources.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3985 - (show annotations)
Fri Sep 21 06:44:17 2012 UTC (8 years, 10 months ago) by caltinay
File MIME type: text/x-python
File size: 3434 byte(s)
Unit test for ER Mapper reader.

1
2 ##############################################################################
3 #
4 # Copyright (c) 2003-2012 by University of Queensland
5 # http://www.uq.edu.au
6 #
7 # Primary Business: Queensland, Australia
8 # Licensed under the Open Software License version 3.0
9 # http://www.opensource.org/licenses/osl-3.0.php
10 #
11 # Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12 # Development since 2012 by School of Earth Sciences
13 #
14 ##############################################################################
15
16 __copyright__="""Copyright (c) 2003-2012 by University of Queensland
17 http://www.uq.edu.au
18 Primary Business: Queensland, Australia"""
19 __license__="""Licensed under the Open Software License version 3.0
20 http://www.opensource.org/licenses/osl-3.0.php"""
21 __url__="https://launchpad.net/escript-finley"
22
23 import logging
24 import numpy as np
25 import os
26 import sys
27 import unittest
28 from esys.escript import inf,sup,saveDataCSV
29 from esys import ripley, finley, dudley
30 from esys.downunder.datasources import *
31
32 # this is mainly to avoid warning messages
33 logger=logging.getLogger('inv')
34 logger.setLevel(logging.INFO)
35 handler=logging.StreamHandler()
36 handler.setLevel(logging.INFO)
37 logger.addHandler(handler)
38
39 try:
40 TEST_DATA_ROOT=os.environ['DOWNUNDER_TEST_DATA_ROOT']
41 except KeyError:
42 TEST_DATA_ROOT='.'
43
44 try:
45 WORKDIR=os.environ['DOWNUNDER_WORKDIR']
46 except KeyError:
47 WORKDIR='.'
48
49
50 ERS_DATA = os.path.join(TEST_DATA_ROOT, 'ermapper_test.ers')
51 ERS_REF = os.path.join(TEST_DATA_ROOT, 'ermapper_test.csv')
52 ERS_NULL = -99999 * 1e-6
53 ERS_SIZE = [10,10]
54 ERS_ORIGIN = [309097.0, 6321502.0]
55 VMIN=-10000.
56 VMAX=10000
57 NE_V=15
58 ALT=0.
59 PAD_XY=7
60 PAD_Z=3
61
62 class TestERSDataSource(unittest.TestCase):
63 def test_ers_with_padding(self):
64 source = ERSDataSource(headerfile=ERS_DATA, vertical_extents=(VMIN,VMAX,NE_V), alt_of_data=ALT)
65 source.setPadding(PAD_XY,PAD_Z)
66 dom=source.getDomain()
67 g,s=source.getGravityAndStdDev()
68
69 outfn=os.path.join(WORKDIR, '_ersdata.csv')
70 saveDataCSV(outfn, g=g[2], s=s)
71
72 X0,NP,DX=source.getDataExtents()
73 V0,NV,DV=source.getVerticalExtents()
74
75 # check metadata
76 self.assertEqual(NP, ERS_SIZE, msg="Wrong number of data points")
77 # this only works if gdal is available
78 #self.assertAlmostEqual(X0, ERS_ORIGIN, msg="Data origin wrong")
79
80 # check data
81 nx=NP[0]+2*PAD_XY
82 ny=NP[1]+2*PAD_XY
83 nz=NE_V+2*PAD_Z
84 z_data=int(np.round((ALT-V0)/DV)-1+PAD_Z)
85
86 ref=np.genfromtxt(ERS_REF, delimiter=',', dtype=float)
87 g_ref=ref[:,0].reshape(NP)
88 s_ref=ref[:,1].reshape(NP)
89
90 out=np.genfromtxt(outfn, delimiter=',', skip_header=1, dtype=float)
91 g_out=out[:,0].reshape(nz,ny,nx)
92 s_out=out[:,1].reshape(nz,ny,nx)
93
94 self.assertAlmostEqual(np.abs(
95 g_out[z_data,PAD_XY:PAD_XY+NP[1],PAD_XY:PAD_XY+NP[0]]-g_ref).max(),
96 0., msg="Difference in data area")
97
98 # overwrite data -> should only be padding value left
99 g_out[z_data, PAD_XY:PAD_XY+NP[0], PAD_XY:PAD_XY+NP[0]]=ERS_NULL
100 self.assertAlmostEqual(np.abs(g_out-ERS_NULL).max(), 0.,
101 msg="Wrong values in padding area")
102
103 if __name__ == "__main__":
104 suite = unittest.TestSuite()
105 suite.addTest(unittest.makeSuite(TestERSDataSource))
106 s=unittest.TextTestRunner(verbosity=2).run(suite)
107 if not s.wasSuccessful(): sys.exit(1)
108

  ViewVC Help
Powered by ViewVC 1.1.26