6 from __future__
import print_function
10 from opals
import pyDM
13 lf = pyDM.AddInfoLayoutFactory()
14 lf.addColumn(pyDM.ColumnType.uint16,
"_attr1")
15 shortLayout = lf.getLayout(clear=
False)
16 lf.addColumn(pyDM.ColumnType.float_,
"_attr2")
17 layout = lf.getLayout()
19 def create_test_odm(filename):
24 print(f
"Generate {pcount} random points")
26 for i
in range(pcount):
27 pt = pyDM.Point(layout)
28 pt.x = random.uniform(-10, 10)
29 pt.y = random.uniform(-10, 10)
30 pt.z = random.uniform(-10, 10)
31 pt.info().set(0, random.randint(0,5000))
33 pt.info().set(1, random.uniform(0.5, 20))
38 print(
"Add points into manager '" + filename +
"'")
40 dm = pyDM.Datamanager.create(filename,
False)
42 print(
"Unable to create ODM '" + odm +
"'")
51 def DM_numpy_null_value(dm):
52 queryWin = pyDM.Window(-10, -10, 10, 10)
54 print(
"case 1: no null values -----------------------------------")
58 resultNoNulls = pyDM.NumpyConverter.searchPoint(dm, queryWin, shortLayout, withCoordinates=
True)
62 resultNoNulls2 = pyDM.NumpyConverter.searchPoint(dm, queryWin, layout, withCoordinates=
True)
63 except Exception
as e:
64 print(
"Exception occurred as expected:", e)
65 assert resultNoNulls2 ==
None
66 print(
"\tno nulls=", resultNoNulls)
70 print(
"\ncase 2: use no data value ------------------------------")
73 resultNoData1 = pyDM.NumpyConverter.searchPoint(dm, queryWin, layout, withCoordinates=
True, noDataObj=
'min')
75 resultNoData2 = pyDM.NumpyConverter.searchPoint(dm, queryWin, layout, withCoordinates=
True, noDataObj=[0, numpy.nan])
76 print(
"\tnodata1=", resultNoData1)
77 print(
"\tnodata2=", resultNoData2)
81 print(
"\ncase 3: use masked arrays ------------------------------")
84 resultMasked1 = pyDM.NumpyConverter.searchPoint(dm, queryWin, layout, withCoordinates=
True, noDataObj=
'mask')
86 resultMasked2 = pyDM.NumpyConverter.searchPoint(dm, queryWin, layout, withCoordinates=
True, noDataObj=[
'max',
'mask'])
87 print(
"\tmasked1=", resultMasked1)
88 print(
"\tmasked2=", resultMasked2)
91 print(
"\ncase 4: define value type of output arrays -------------")
94 resultType1 = pyDM.NumpyConverter.searchPoint(dm, queryWin, layout, withCoordinates=
True, noDataObj=numpy.nan,
95 valueType=numpy.dtype(float))
97 resultType2 = pyDM.NumpyConverter.searchPoint(dm, queryWin, layout, withCoordinates=
True, noDataObj=numpy.nan,
98 valueType=pyDM.ColumnType.double_)
99 print(
"\tvalueType1=", resultType1)
100 print(
"\tvalueType2=", resultType2)
105 dm = create_test_odm(
"test.odm")
107 DM_numpy_null_value(dm)