From abd3c88209ac8107882de7f8a61b5d06bdb3cefa Mon Sep 17 00:00:00 2001
From: Aaron LI <aly@aaronly.me>
Date: Wed, 30 Jan 2019 10:42:50 +0800
Subject: utils/analyze: Add countdist() function

Modified from the original countdist_integrated().
---
 fg21sim/utils/analyze.py | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

(limited to 'fg21sim/utils')

diff --git a/fg21sim/utils/analyze.py b/fg21sim/utils/analyze.py
index f33f65c..6c7d89a 100644
--- a/fg21sim/utils/analyze.py
+++ b/fg21sim/utils/analyze.py
@@ -23,11 +23,9 @@ def inverse_cumsum(x):
     return x[::-1].cumsum()[::-1]
 
 
-def countdist_integrated(x, nbin, log=True, xmin=None, xmax=None):
+def countdist(x, nbin, log=True, xmin=None, xmax=None):
     """
-    Calculate the integrated counts distribution (i.e., luminosity
-    function), representing the counts (number of objects) with a
-    greater value.
+    Calculate the counts distribution, i.e., a histogram.
 
     Parameters
     ----------
@@ -47,7 +45,7 @@ def countdist_integrated(x, nbin, log=True, xmin=None, xmax=None):
     Returns
     -------
     counts : 1D `~numpy.ndarray`
-        The integrated counts for each bin, of length ``nbin``.
+        The counts in each bin, of length ``nbin``.
     bins : 1D `~numpy.ndarray`
         The central positions of every bin, of length ``nbin``.
     binedges : 1D `~numpy.ndarray`
@@ -69,14 +67,24 @@ def countdist_integrated(x, nbin, log=True, xmin=None, xmax=None):
     binedges = np.linspace(xmin, xmax, num=nbin+1)
     bins = (binedges[1:] + binedges[:-1]) / 2
     counts, __ = np.histogram(x, bins=binedges)
-    # Convert to the integrated counts distribution
-    counts = inverse_cumsum(counts)
 
     if log is True:
         bins = np.exp(bins)
         binedges = np.exp(binedges)
 
-    return (counts, bins, binedges)
+    return counts, bins, binedges
+
+
+def countdist_integrated(x, nbin, log=True, xmin=None, xmax=None):
+    """
+    Calculate the integrated counts distribution (e.g., luminosity
+    function, mass function), representing the counts with a greater
+    value, e.g., N(>flux), N(>mass).
+    """
+    counts, bins, binedges = countdist(x=x, nbin=nbin, log=log,
+                                       xmin=xmin, xmax=xmax)
+    counts = inverse_cumsum(counts)
+    return counts, bins, binedges
 
 
 def logfit(x, y):
-- 
cgit v1.2.2