diff --git a/goesr/rad_count_dist.py b/goesr/rad_count_dist.py
new file mode 100644
index 0000000000000000000000000000000000000000..04570a58b0c27ceb492409f4fa7da8a2539618bf
--- /dev/null
+++ b/goesr/rad_count_dist.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+"""
+Compute distribution of unscaled pixel values in GOES-16 ABI L1B files
+Copyright 2017 University of Wisconsin Regents
+License: GPLv3 as of 2017-01-01
+Author: R.K.Garcia <rayg@ssec.wisc.edu>
+Recommended runtime: Python 3.6 with netCDF4, numba, numpy, e.g. Continuum.IO Anaconda
+"""
+import netCDF4 as nc4
+import numpy as np
+import numba
+
+def load(ncfilename, varname):
+ nc = nc4.Dataset(ncfilename)
+ nc.set_auto_scale(False)
+ ncv = nc[varname]
+ counts = ncv[:]
+ bit_depth = ncv.sensor_band_bit_depth
+ splat = counts.ravel()
+ return splat, bit_depth
+
+@numba.jit((numba.int16[:], numba.int32))
+def dist(splat, bit_depth):
+ z = np.zeros((2**bit_depth,), dtype=np.uint32)
+ for v in splat:
+ z[v] += 1
+ return z
+
+def hist(pngname, filename, distribution, extra=''):
+ import matplotlib
+ matplotlib.use('Agg')
+ import matplotlib.pyplot as plt
+ fig = plt.figure(figsize=(60,20))
+ ax = fig.add_subplot(111) #, axisbg='#EEEEEE')
+ # ax.grid(color='white', linestyle='solid')
+ ax.grid()
+ ax.plot(np.log(distribution+1), '.')
+ ax.set_xlabel('unscaled pixel value')
+ ax.set_ylabel('log(occurrences+1)')
+ ax.set_title('log(n+1) {} value distribution'.format(filename) + extra)
+ fig.savefig(pngname)
+
+if __name__=='__main__':
+ import sys, os
+ if len(sys.argv)==1:
+ print("parameters: netcdf-filename counts-variable-name optional-histogram optional-histogram-bins")
+ ncfilename, varname = sys.argv[1:3]
+ splat, bit_depth = load(ncfilename, varname)
+ distribution = dist(splat, bit_depth)
+ uniq = np.argwhere(distribution != 0).squeeze()
+ fn = os.path.split(ncfilename)[-1]
+ nvals = len(uniq)
+ print("{} of {} unique values in {}".format(nvals, 2**bit_depth, fn))
+ if len(sys.argv)>=4:
+ stem = sys.argv[3]
+ with open(stem + '.tsv', 'wt') as fp:
+ fp.write('\n'.join(['{}\t{}'.format(i,x) for i,x in enumerate(distribution)]) + '\n')
+ hist(stem + '.png', fn, distribution, ' {} unique values of {}'.format(nvals, 2**bit_depth))