Skip to content

Commit

Permalink
Jython api for substituteMissing, substituteWithMissing, meanFilter, …
Browse files Browse the repository at this point in the history
…and classifier
  • Loading branch information
yuanho committed Aug 13, 2024
1 parent 7fe129e commit d1cd1a7
Showing 1 changed file with 36 additions and 1 deletion.
37 changes: 36 additions & 1 deletion src/ucar/unidata/idv/resources/python/grid.py
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,29 @@ def substituteMissing(data, newValue):
rangeObject.setSamples(values,1);
return newData;

def substituteWithMissing(data, missingValue):
"""change values in data between low/high to newvalue """
from java.lang import Float
newData = data.clone();
if (GridUtil.isTimeSequence(newData)):
for t in range(newData.getDomainSet().getLength()):
rangeObject = newData.getSample(t)
values = rangeObject.getFloats(0);
for i in range(len(values)):
for j in range(len(values[0])):
if (values[i][j] == missingValue):
values[i][j] = float("NaN");
rangeObject.setSamples(values,1);
else:
rangeObject = newData;
values = rangeObject.getFloats(0);
for i in range(len(values)):
for j in range(len(values[0])):
if (values[i][j] == missingValue):
values[i][i] = float("NaN");
rangeObject.setSamples(values,1);
return newData;

def maskGrid(grid, mask, value=0,resample=0):
"""mask one grid by the values in the other. value is the masking value"""
return DerivedGridFactory.mask(grid, mask, value, resample)
Expand Down Expand Up @@ -495,4 +518,16 @@ def virtualTemperature(p, t, dp):
return DerivedGridFactory.createVirtualTemperature(p, t, dp)

def virtualPotentialTemperature(p, t, dp):
return DerivedGridFactory.createVirtualPotentialTemperature(p, t, dp)
return DerivedGridFactory.createVirtualPotentialTemperature(p, t, dp)

def meanFilter(grid, missingValue, window_lenx=10, window_leny=10):
""" calculate mean filter, need to replace the missingValue if it is not NaN
"""
grid0 = substituteWithMissing(grid, missingValue)
return GridUtil.medianFilter(grid0, window_lenx, window_leny)

def classifier(grid, classifierStr, outFileName):
"""classifierStr is a string of a set of classifier info with format:
"low1 high1 value1; low2 high2 value2; low3 high3 value3;...""
"""
return GridUtil.classifier(grid, classifierStr, outFileName)

0 comments on commit d1cd1a7

Please sign in to comment.