def PyExec(self): in_ws = mtd[self.getPropertyValue('InputWorkspace')] out_ws_name = self.getPropertyValue('OutputWorkspace') out_ws = ms.CreateEmptyTableWorkspace(OutputWorkspace=out_ws_name) out_ws.addColumn('str', 'statistic') stats = { 'standard_deviation': dict(), 'maximum': dict(), 'minimum': dict(), 'mean': dict(), 'median': dict(), } for name in in_ws.getColumnNames(): try: col_stats = _stats_to_dict(Stats.getStatistics(np.array([float(v) for v in in_ws.column(name)]))) for statname in stats: stats[statname][name] = col_stats[statname] out_ws.addColumn('float', name) except ValueError: logger.notice('Column \'%s\' is not numerical, skipping' % name) for name, stat in iteritems(stats): stat1 = dict(stat) stat1['statistic'] = name out_ws.addRow(stat1) self.setProperty('OutputWorkspace', out_ws)
def PyExec(self): in_ws = mtd[self.getPropertyValue('InputWorkspace')] out_ws_name = self.getPropertyValue('OutputWorkspace') out_ws = ms.CreateEmptyTableWorkspace(OutputWOrkspace=out_ws_name) out_ws.addColumn('str', 'statistic') stats = { 'standard_deviation': dict(), 'maximum': dict(), 'minimum': dict(), 'mean': dict(), 'median': dict(), } for name in in_ws.getColumnNames(): try: col_stats = _stats_to_dict( Stats.getStatistics( np.array([float(v) for v in in_ws.column(name)]))) for statname in stats.keys(): stats[statname][name] = col_stats[statname] out_ws.addColumn('float', name) except ValueError: logger.notice('Column \'%s\' is not numerical, skipping' % name) for name, stat in stats.items(): stat1 = dict(stat) stat1['statistic'] = name out_ws.addRow(stat1) self.setProperty('OutputWorkspace', out_ws_name)
def test_getStatistics_with_floats(self): data = numpy.array([17.2,18.1,16.5,18.3,12.6]) stats = Stats.getStatistics(data) self.assertAlmostEqual(16.54, stats.mean, places = 10) self.assertAlmostEqual(2.0733, stats.standard_deviation, places = 4) self.assertEquals(12.6, stats.minimum) self.assertEquals(18.3, stats.maximum) self.assertEquals(17.2, stats.median) data = numpy.sort(data) stats = Stats.getStatistics(data, sorted=True) self.assertAlmostEqual(16.54, stats.mean, places = 10) self.assertAlmostEqual(2.0733, stats.standard_deviation, places = 4) self.assertEquals(12.6, stats.minimum) self.assertEquals(18.3, stats.maximum) self.assertEquals(17.2, stats.median)
def test_getStatistics_with_floats(self): data = numpy.array([17.2, 18.1, 16.5, 18.3, 12.6]) stats = Stats.getStatistics(data) self.assertAlmostEqual(16.54, stats.mean, places=10) self.assertAlmostEqual(2.0733, stats.standard_deviation, places=4) self.assertEquals(12.6, stats.minimum) self.assertEquals(18.3, stats.maximum) self.assertEquals(17.2, stats.median) data = numpy.sort(data) stats = Stats.getStatistics(data, sorted=True) self.assertAlmostEqual(16.54, stats.mean, places=10) self.assertAlmostEqual(2.0733, stats.standard_deviation, places=4) self.assertEquals(12.6, stats.minimum) self.assertEquals(18.3, stats.maximum) self.assertEquals(17.2, stats.median)
def PyExec(self): in_ws = mtd[self.getPropertyValue('InputWorkspace')] indices_list = self.getPropertyValue('ColumnIndices') out_ws_name = self.getPropertyValue('OutputWorkspace') column_names = in_ws.getColumnNames() # If column indices are not provided, then default to _ALL_ columns if len(indices_list) > 0: indices_list = [int(x) for x in indices_list.split(',')] else: indices_list = range(len(column_names)) out_ws = ms.CreateEmptyTableWorkspace(OutputWorkspace=out_ws_name) out_ws.addColumn('str', 'Statistic') stats = collections.OrderedDict([ ('StandardDev', collections.OrderedDict()), ('Minimum', collections.OrderedDict()), ('Median', collections.OrderedDict()), ('Maximum', collections.OrderedDict()), ('Mean', collections.OrderedDict()), ]) for index in indices_list: column_name = column_names[index] try: column_data = np.array([float(v) for v in in_ws.column(index)]) col_stats = _stats_to_dict(Stats.getStatistics(column_data)) for stat_name in stats: stats[stat_name][column_name] = col_stats[stat_name] out_ws.addColumn('float', column_name) except RuntimeError: logger.notice('Column \'%s\' is not numerical, skipping' % column_name) except: logger.notice('Column \'%s\' is not numerical, skipping' % column_name) for index, stat_name in iteritems(stats): stat = collections.OrderedDict(stat_name) stat['Statistic'] = index out_ws.addRow(stat) self.setProperty('OutputWorkspace', out_ws)