diff --git a/pyglance/glance/data.py b/pyglance/glance/data.py index 233a55c43b6054710bb5402c2d809dcc7702d9c7..f07d9dddd5fc306b6361e0bd128c53adc4fd7ed6 100644 --- a/pyglance/glance/data.py +++ b/pyglance/glance/data.py @@ -160,6 +160,23 @@ class DataObject (object) : return DataObject(self.data.copy(), fillValue=self.fill_value, ignoreMask=self.masks.ignore_mask, overrideFillValue=self.override_fill_value, defaultFillValue=self.default_fill_value) + + def holding_array(self): + """ + Return a version of myself where self.data is always an array. + + Suitable for code paths that insist on an array. + + If self.data is already an array, returns self. + If self.data is a simple scalar, copies myself, changing the copy's + self.data to be an array with a single value, and return the copy. + """ + if len(self.data.shape) != 0: + return self + copy = self.copy() + copy.data = np.array([self.data.item()]) + copy.self_analysis() + return copy def self_analysis(self, re_do_analysis=False) : """ diff --git a/pyglance/glance/stats.py b/pyglance/glance/stats.py index d1b5a845e7db2235c7f1988f800495b57369b442..b84b19666b4ca802ee2e78f2a1215f9313840d03 100644 --- a/pyglance/glance/stats.py +++ b/pyglance/glance/stats.py @@ -1064,6 +1064,8 @@ class StatisticalInspectionAnalysis (StatisticalData) : """ build and set all of the statistics sets """ + + dataObject = dataObject.holding_array() self.general = GeneralStatistics( dataObject=dataObject, doExtras=True)