diff --git a/svda/nb/smf.ipynb b/svda/nb/smf.ipynb index b89b166..e37689e 100644 --- a/svda/nb/smf.ipynb +++ b/svda/nb/smf.ipynb @@ -24,7 +24,8 @@ "import os\n", "import h5py \n", "import glob\n", - "import numpy as np" + "import numpy as np\n", + "import astropy.table as aTable" ] }, { @@ -34,6 +35,7 @@ "metadata": {}, "outputs": [], "source": [ + "import copy\n", "from nflows import transforms, distributions, flows\n", "\n", "import torch\n", @@ -70,8 +72,7 @@ "metadata": {}, "outputs": [], "source": [ - "dat_dir = '/tigress/chhahn/provabgs/svda'\n", - "#dat_dir = '/global/cfs/cdirs/desi/users/chahah/provabgs/svda/'" + "dat_dir = '/tigress/chhahn/provabgs/svda'" ] }, { @@ -92,76 +93,119 @@ "id": "5a11b7bd-a54d-471f-9069-e11951977292", "metadata": {}, "source": [ - "# compile $M_*$ posterior data" + "# compile $M_*$ posteriors for $z < 0.2$ galaxies" ] }, { "cell_type": "code", "execution_count": 6, - "id": "dedb911a-190d-43da-8b93-0eb891ccef6a", + "id": "5a3e99be", "metadata": {}, "outputs": [], "source": [ - "logM_posteriors, zmaxes = [], [] \n", - "for fpost in glob.glob(os.path.join(dat_dir, 'provabgs-*.mstar_zmax.hdf5')): \n", - " f = h5py.File(fpost, 'r')\n", - " mcmc = f['logM'][...]\n", - " zmax = f['zmax'][...]\n", - " \n", - " logM_posteriors.append(mcmc) #mcmc.reshape((mcmc.shape[0], mcmc.shape[1] * mcmc.shape[2])))\n", - " zmaxes.append(zmax)\n", - " \n", - "logM_posteriors = np.concatenate(logM_posteriors, axis=0)\n", - "zmaxes = np.concatenate(zmaxes, axis=0)" + "bgs = aTable.Table.read(os.path.join(dat_dir, 'BGS_BRIGHT_clustering.sv3.logM.hdf5'))" ] }, { "cell_type": "code", - "execution_count": 13, - "id": "5ca5539a", + "execution_count": 7, + "id": "978b7afb", "metadata": {}, "outputs": [], "source": [ - "assert np.sum(np.isnan(zmaxes)) == 0" + "has_posterior = (bgs['zmax'].data != -999.) & (bgs['Z'] <= 0.2)\n", + "bgs = bgs[has_posterior]" ] }, { "cell_type": "code", - "execution_count": 7, - "id": "9089412d", + "execution_count": 8, + "id": "4cfa9113", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Table length=5\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
RADECTARGETIDNTILETILESZCOMP_TILErosette_numberrosette_rFRACZ_TILELOCIDBITWEIGHTS [2]PROB_OBSWEIGHT_ZFAILWEIGHTflux_g_deredflux_r_deredflux_z_deredflux_w1_deredflux_w2_deredNZWEIGHT_FKPphithetahealpixlogM_mcmc [30]zmaxtheta_bf [13]
float64float64int64int64bytes43float64float64float64float64float64int64float64float64float64float32float32float32float32float32float64float64float64float64int64float64float64float64
191.2045819646124360.315357871105773963339018548134511000.089692561097315990.643.01.6132201141779461.0-1 .. -11.01.01.011.61879418.3922620.89262213.4210439.273710.047781511358687130.00308215167720427663.33714950018185470.5180947424254233112269.311141344469839 .. 9.303713842238510.2445379739213849.299830413616577 .. 0.12427289814965596
187.8376070867569860.389875436773653963339315504930311000.17311081918253620.643.01.72672823684380970.56932875859169517021 .. -68583384619398507700.46093751.02.1513.2643327.72840946.02015337.0333725.8677560.012707450159080880.011491494508274683.27838470273134330.51679416555394761123710.562881907340254 .. 10.514161142131850.365301560985723810.502975152735333 .. 0.2744993206027024
186.4835989437385761.739675705119373963340780155832211000.085778254882135030.643.01.61694669672214861.08781239440956233492 .. -70576599832230726950.55468751.01.791666666666666715.07960920.45412626.06507513.48601910.7976230.047781511358687130.00308215167720427663.25475280253685770.49323570662701194112509.553030097515068 .. 9.6167273861102360.159049071922644789.64110366817851 .. 0.34742311547544863
189.2070362525484860.134502194013363963339016870420811000.18427240569852060.643.01.69908661072104380.5-1 .. -11.01.01.020.87350747.3115386.1089373.2189458.10180.012707450159080880.011491494508274683.30228575054724430.52125126946160961121511.119193932010795 .. 11.0876935114881030.4782850278172729511.155540895363698 .. 0.23645233036989347
188.3754919635817760.283630823560793963339016031702111000.104600165039861840.643.01.68636675761832261.0-1 .. -11.01.01.059.504303110.16833163.7220999.5328664.684950.020767598843549430.0070630116287629023.287772564828620.51864848386701991123710.672187264107224 .. 10.6636456556613960.513167596595338810.697130097376105 .. 0.13025520023133774
" + ], + "text/plain": [ + "\n", + " RA ... theta_bf [13] \n", + " float64 ... float64 \n", + "------------------ ... -----------------------------------------\n", + "191.20458196461243 ... 9.299830413616577 .. 0.12427289814965596\n", + "187.83760708675698 ... 10.502975152735333 .. 0.2744993206027024\n", + "186.48359894373857 ... 9.64110366817851 .. 0.34742311547544863\n", + "189.20703625254848 ... 11.155540895363698 .. 0.23645233036989347\n", + "188.37549196358177 ... 10.697130097376105 .. 0.13025520023133774" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bgs[:5]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d61a6bef", + "metadata": {}, + "outputs": [], + "source": [ + "logM_posteriors = bgs['logM_mcmc'].data\n", + "zmaxes = bgs['zmax'].data" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "ee346b12", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "1156\n" + "70355 galaxies\n" ] } ], "source": [ - "print(logM_posteriors.shape[0])" + "print('%i galaxies' % len(zmaxes))" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 11, "id": "a0a8725e-2882-4282-b8bc-567afda3a2c2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(8.0, 12.5)" + "(7.0, 12.5)" ] }, - "execution_count": 8, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -174,8 +218,8 @@ ], "source": [ "for i in np.random.choice(np.arange(logM_posteriors.shape[0]), size=100, replace=False): \n", - " plt.hist(logM_posteriors[i,:], bins=40, alpha=0.5)\n", - "plt.xlim(8., 12.5)" + " plt.hist(logM_posteriors[i,:], bins=10, alpha=0.5)\n", + "plt.xlim(7., 12.5)" ] }, { @@ -188,7 +232,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 12, "id": "a1108449-ae9f-4004-a52f-0f9296b7bec6", "metadata": {}, "outputs": [], @@ -198,35 +242,43 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 13, "id": "0c5501cc-73b5-4577-93a2-fa46980f06a2", "metadata": {}, "outputs": [], "source": [ - "vfull = Planck13.comoving_volume(0.6).value * Planck13.h**3 # (Mpc/h)^3\n", - "vmaxes = Planck13.comoving_volume(zmaxes).value * Planck13.h**3 # (Mpc/h)^3" + "vfull = Planck13.comoving_volume(0.2).value * Planck13.h**3 # (Mpc/h)^3\n", + "vmaxes = Planck13.comoving_volume(zmaxes.clip(0., 0.2)).value * Planck13.h**3 # (Mpc/h)^3" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 50, "id": "ab877a14", "metadata": {}, "outputs": [], "source": [ "# Vmax based importance weights\n", - "w_import = vfull / vmaxes" + "w_import = vfull / vmaxes * bgs['WEIGHT'].data" + ] + }, + { + "cell_type": "markdown", + "id": "a1c769e0", + "metadata": {}, + "source": [ + "as a quick check of the Vmaxes, lets take a look at the posteriors weighted by 1/Vmax" ] }, { "cell_type": "code", - "execution_count": 22, - "id": "525a2d23", + "execution_count": 52, + "id": "4c3c17f0", "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -238,9 +290,8 @@ } ], "source": [ - "#for i in np.random.choice(np.arange(logM_posteriors.shape[0]), size=100, replace=False): \n", - "plt.hist(logM_posteriors.flatten(), bins=40, weights=np.repeat(np.sum(w_import)/len(logM_posteriors.flatten()), len(logM_posteriors.flatten())))\n", - "plt.hist(logM_posteriors.flatten(), bins=40, weights=w_import.flatten(), alpha=0.5)\n", + "plt.hist(np.median(logM_posteriors, axis=1), bins=40, density=True)\n", + "plt.hist(np.median(logM_posteriors, axis=1), bins=40, weights=w_import, alpha=0.5, density=True)\n", "plt.xlim(8., 13)\n", "plt.yscale('log')" ] @@ -255,34 +306,30 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 54, "id": "4f0bedd4-6732-4325-a885-677ab4d70f5b", "metadata": {}, "outputs": [], "source": [ "x_data = torch.tensor(logM_posteriors.astype(np.float32)).to(device)\n", - "# avg_post = torch.mean(x_data)\n", - "# std_post = torch.std(x_data)\n", - "# wx_post = (x_data - avg_post)/std_post\n", - "\n", "w_data = torch.tensor(w_import.astype(np.float32)).to(device)" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 55, "id": "f94f65bf", "metadata": {}, "outputs": [], "source": [ - "batch_size = 256\n", - "Ntrain = int(0.8 * x_data.shape[0])\n", - "Nvalid = int(0.1 * x_data.shape[0])\n", + "batch_size = 128\n", + "Ntrain = int(0.9 * x_data.shape[0])\n", + "Nvalid = x_data.shape[0] - Ntrain # int(0.1 * x_data.shape[0])\n", "\n", "trainloader = torch.utils.data.DataLoader(\n", " torch.utils.data.TensorDataset(x_data[:Ntrain], w_data[:Ntrain]),\n", " batch_size=batch_size,\n", - " shuffle=False)\n", + " shuffle=True)\n", "\n", "validloader = torch.utils.data.DataLoader(\n", " torch.utils.data.TensorDataset(x_data[Ntrain:Ntrain+Nvalid], w_data[Ntrain:Ntrain+Nvalid]),\n", @@ -291,21 +338,24 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 56, "id": "6d1bd504-799d-46eb-8370-855e0bc1c419", "metadata": {}, "outputs": [], "source": [ - "def Loss(flow, post, w): \n", - " w_i = torch.sum(w, axis=1)\n", + "# def Loss(flow, post, w): \n", + "# w_i = torch.sum(w, axis=1)\n", " \n", - " logw = torch.log(w) \n", - " return -torch.sum(w_i * torch.logsumexp(logw + flow.log_prob(post.flatten()[:,None]).reshape(post.shape), axis=1))" + "# logw = torch.log(w) \n", + "# return -torch.sum(w_i * torch.logsumexp(logw + flow.log_prob(post.flatten()[:,None]).reshape(post.shape), axis=1))\n", + "\n", + "def Loss(flow, post, w): \n", + " return -torch.sum(w * torch.logsumexp(flow.log_prob(post.flatten()[:,None]).reshape(post.shape), axis=1))" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 57, "id": "9c1238e3-c062-45d9-8227-a207e9d4c7af", "metadata": {}, "outputs": [], @@ -315,7 +365,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 67, "id": "bce18ebe-a491-4bdb-af81-31388942fdf5", "metadata": {}, "outputs": [ @@ -323,30 +373,38 @@ "name": "stdout", "output_type": "stream", "text": [ - "5x82\n", - "0 \t -2.14e+06 \t -2.45e+06\n", - "20 \t -2.29e+06 \t -2.61e+06\n", - "40 \t -2.43e+06 \t -2.76e+06\n", - "60 \t -2.55e+06 \t -2.88e+06\n", - "80 \t -2.62e+06 \t -2.95e+06\n", - "100 \t -2.69e+06 \t -3.03e+06\n", - "120 \t -2.79e+06 \t -3.14e+06\n", - "140 \t -2.94e+06 \t -3.31e+06\n", - "160 \t -3.12e+06 \t -3.51e+06\n", - "180 \t -3.14e+06 \t -3.52e+06\n", - ">>>193 \t -3.52416e+06\n" + "5x108\n", + "0 \t -3.29e+00 \t -3.45e+00\n", + "20 \t -4.14e+00 \t -3.61e+00\n", + ">>>24 \t -3.61278e+00\n", + "5x72\n", + "0 \t -2.70e+00 \t -3.47e+00\n", + "20 \t -4.17e+00 \t -3.50e+00\n", + ">>>27 \t -3.61829e+00\n", + "5x194\n", + "0 \t -3.48e+00 \t -3.03e+00\n", + "20 \t -4.11e+00 \t -3.44e+00\n", + ">>>28 \t -3.62571e+00\n", + "5x103\n", + "0 \t -3.38e+00 \t -3.56e+00\n", + "20 \t -4.08e+00 \t -3.60e+00\n", + ">>>32 \t -3.62473e+00\n", + "5x199\n", + "0 \t -3.74e+00 \t -3.54e+00\n", + "20 \t -4.11e+00 \t -3.61e+00\n", + ">>>30 \t -3.62589e+00\n" ] } ], "source": [ "all_flows = []\n", "\n", - "lr = 1e-4\n", + "lr = 1e-3\n", "num_iter = 1000\n", "patience = 20\n", "\n", "best_valid_losses, valid_losseses = [], []\n", - "for i in range(1): \n", + "for i in range(5): \n", " nhidden = int(np.ceil(np.exp(np.random.uniform(np.log(64), np.log(256)))))\n", " print('5x%i' % nhidden)\n", " blocks = []\n", @@ -394,36 +452,37 @@ " if valid_loss < best_valid_loss: \n", " best_valid_loss = valid_loss\n", " best_epoch = epoch\n", + " best_flow = copy.deepcopy(flow)\n", " else: \n", " if best_epoch < epoch - patience: \n", " print('>>>%i \\t %.5e' % (epoch, best_valid_loss))\n", " break\n", " \n", " scheduler.step()\n", - " all_flows.append(flow)\n", + " all_flows.append(best_flow)\n", " valid_losseses.append(valid_losses) \n", " best_valid_losses.append(best_valid_loss)" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 69, "id": "61aa8a06-611f-4033-8826-586c5905559c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(0.0, 194.0)" + "(-10.0, -0.01)" ] }, - "execution_count": 19, + "execution_count": 69, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZMAAAEFCAYAAAAmIwo/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8+yak3AAAACXBIWXMAAAsTAAALEwEAmpwYAAAq7klEQVR4nO3deZgV9Z3v8ff37L1v0HSzCygIqLihmERwzeIYot5sjhpxEjPxakzmMTfJ3MTLnbmTPTqTiHES19HELYlGY9xwBDdEUVtFAWXfmr3p9ez1u3+cgzZtQzdUw+mGz+t56qmuX9Wp+lbX6fM5tbY55xAREfEjUOgCRERk4FOYiIiIbwoTERHxTWEiIiK+KUxERMQ3hYmIiPimMBEREd9ChS5gf5nZROCHwGvACGC7c+5fCluViMjhyQbqTYtmdjoQc849lR9+F7jcOfdKYSsTETn8HLDDXGYWNLPvmFnczGbsYZqTzOwFM3vOzF4zs0t7O3/n3HO7giQvCLT5q1pERPbHATnMZWZ1wAPAu0BsD9MMA54GrnDOPWRmo4EGM9vhnHssP81CINrNy693zj3SaV6fB55yzr3bt2siIiK9cUAOc5nZOKAYaAFWAWc45+Z1meZnwEzn3PhObf8JnOCcO3kflnUOcB7wT845rw/KFxGRfXRA9kycc8sB8nsbe3IusKhL20LgSjOrds7t6Gk5ZnYRcKxz7ltmNtTMRjnnFnQz3bwuTScCzcDynpYhIiIfGAdsdc4d33VEIa/mGgPM7dLWmO+PBfYaJvnzMHcBi/JhUQLMAT4SJt2IVFRUDJsyZcqwfahXROSw1tDQQHNzc7fjChkmJUCyS1uy07i9yh82K+3NgpxzMzoPm9m8KVOmTJ83b15vXi4iIsCMGTOYP39+t0d0enU1l5nNNjPXQzd7H+tq56Mn16OdxomIyADR2z2TG4Bbe5imZR+XvQKo69JW32mciIgMEL0KE+dcC/seFj15CpjZpW0qsKg3J99FRKT/KOSzuX4FDDGzmQBmNgr4IjC7gDWJiMh+OGAn4M3scaAqP/jvZraT3H0lzQDOuQ1mdi5wo5ldR+6k+7W7blgUEZGB44CFiXPu072Y5lXg4weqBhEROTj0CHoREfFNYSIiIr4pTERExDeFiYiI+KYwERER3xQmIiLim8JERER8U5iIiIhvChMREfFNYSIiIr4pTERExDeFiYiI+KYwERER3xQmIiLim8JERER8U5iIiIhvChMREfFNYSIiIr4pTERExDeFiYiI+KYwERER3xQmIiLim8JERER8U5iIiIhvChMREfFNYSIiIr4pTERExDeFiYiI+KYwERER3xQmIiLim8JERER8U5iIiIhvChMREfFNYSIiIr4pTERExDeFiYiI+KYwERER3xQmIiLim8JERER8U5iIiIhvChMREfFNYSIiIr4pTERExDeFiYiI+KYwERER3xQmIiLim8JERER8U5iIiIhvChMREfFNYSIiIr4pTERExDeFiYiI+KYwERER3xQmIiLim8JERER8U5iIiIhvChMREfFNYSIiIr4N6DAxs3ozu83M3ih0LSIih7MBHSbAJ4CHAStwHSIih7UDFiZmFjSz75hZ3Mxm7GGak8zsBTN7zsxeM7NL92UZzrkHgNY+KFdERHwIHYiZmlkd8ADwLhDbwzTDgKeBK5xzD5nZaKDBzHY45x7LT7MQiHbz8uudc48ciNpFRGTfHZAwAUqBq4EW4Ot7mOZaYItz7iEA59xqM7sfmA08lm875QDVJyIifeiAhIlzbjlAfm9jT84FFnVpWwhcaWbVzrkdfVWPmc3r0jSlr+YtIiKFPQE/Bmjs0rZreGxvZmBmZwCXAkPM7AdmVtKH9YmISC8dqMNcvVECJLu0JTuN65Fz7lng2V5MN6PzcH5PZXpvliEiIj3r1Z6Jmc02M9dDN3sfl93OR0+uRzuNExGRAaK3eyY3ALf2ME3LPi57BVDXpa2+0zgRERkgehUmzrkW9j0sevIUMLNL21RgUV+efBcRkQOvkCfgf0XuxPlMADMbBXyR3KXBIiIygBywE/Bm9jhQlR/8dzPbCcx0zjUDOOc2mNm5wI1mdh25k+7X7rphUUREBo4DFibOuU/3YppXgY8fqBpEROTgGOgPehQRkX5AYSIiIr4pTERExDeFiYiI+KYwERER3xQmIiLim8JERER8U5iIiIhvChMREfFNYSIiIr4pTERExDeFiYiI+KYwERER3xQmIiLim8JERER8U5iIiIhvChMREfFNYSIiIr4pTERExDeFiYiI+KYwERER3xQmIiLim8JERER8U5iIiIhvChMREfFNYSIiIr4pTERExDeFiYiI+KYwERER3xQmIiLim8JERER8U5iIiIhvChMREfFN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\n", "text/plain": [ "
" ] @@ -437,13 +496,14 @@ "source": [ "for vl in valid_losseses: \n", " plt.plot(np.array(vl))\n", - "#plt.ylim(1e4, 2e4)\n", - "plt.xlim(0, np.max([len(vl) for vl in valid_losseses]))" + "plt.xlim(0, np.max([len(vl) for vl in valid_losseses]))\n", + "plt.yscale('symlog', linthresh=1e-2)\n", + "plt.ylim(-1e1, -1e-2)" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 70, "id": "a0d15052", "metadata": {}, "outputs": [ @@ -451,7 +511,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0\n" + "4\n" ] } ], @@ -463,15 +523,27 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 71, "id": "f20e5f1a", "metadata": {}, + "outputs": [], + "source": [ + "with torch.no_grad(): \n", + " post_prime = all_flows[i_best].sample(10000)\n", + " #post_prime = w_prime * std_post + avg_post" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "1413b720", + "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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BOYDC/tpu8bQQtNIdN1113HhhRdy8MEHc/zxiwem1157bQ488EA22WQTtttuu6rnr7POOjzwwAN897vf5dhjj2Xs2LH9trvzzjv5xS9+wWqrrcbjjz/e8PchSVK3KJssTmVxDcVtgW0GaNt1dRYjYm9g41bH0c3+8Ic/APCmN72p3+Pbbrst2267La9+9av7Pb7hhhuy/fbb85Of/IQzzjiDk046qd92X/nKV/jXf/1XLr300iEni//85z+rxiNJUqerZ7m/m4GZle26AbabGhRj28jM6cAdrY6jU/S9l/DWW2/lkEMOYZ111mH55Zdn44035vTTT190KRhg5ZVXBuD666+v2u8f//hH9t9//6rHjzrqKADOPvtsnn766aWO33fffVxyySUcdthh9b41gEX3Kq600kqMGjVqSH1JktSu6kkWJ2fmroNtwEGNDladZfLkyWQmH/tYsUT4hz/8YTbZZBNmz57Nvffey7ve9S4OO+wwDj300EXn7LTTTkQEF110EZ/+9Ke55557Sr/u1ltvzTvf+U6efPJJvvWtby11/LTTTuNDH/oQ48ePr/u9SZI0UpRNFucBL9XY9hmKEUYJgG222YZPf/rTrLLKKqyxxhqceeaZbLPNNpx55pn88Y9/BGDzzTfn8MMPB4qRwQkTJrDDDjtw8sknc9ttt9X8Wj2ji2eccQYvvPDCov2PPvoo5513Hp///OdLxT5x4sSlZkBLkjQSlEoWM3NiZt5ZY9u5lRFGCWCpS8cRwQc/+EEALrhgcf320047jZ/97GeLytdcf/31HHvssWyxxRZsscUWTJ8+fdDX2nXXXdl+++15+OGH+d73vrdo/xlnnMGee+7JhhtuWCr2OXPmkJlLbJIkjQT1XIauiXUW1dd666231L5NNtkEgFmzZi2xf8899+Taa6/l/vvv53vf+x577bUXyy23HLfddhv77LMPF1544aCvd/TRRwPwta99jQULFvD000/zrW99a9GooyRJGlzTkkUW11mUAFhppZWW2rfiiisC8NRT/deRHDduHB//+MeZPn068+bNY7/99gPgC1/4wqCvt/fee/PGN76RefPm8cMf/pBzzjmHHXfcsepM67Iyk0mTJjWkL0mS2lXZ0jkARMQGwE7AOGB0lWbWWdQSnnnmmaX2PfvsswCMGVMUH3/ooYd48MEHefOb37xU23HjxnHBBRew2mqr8eCDD/LYY4+x+uqrV329iODII4/kIx/5CF/+8pd58skn+d///d8GvRtJUlvqWcyi9HnDu/hFJymVLEbEssA04IBamtNldRY1NPfccw+bbbbZEvtuv/12gEXJ4S9+8QtOPPFE7r777n77WHnllVl55ZV54oknWG655QZ9zQMOOIDjjjuOO+64g5133pkdd9xxiO9CkqSRpZ7l/j5U+fr+yvZ8lbYrAlvXGZe60I9//GP22GOPRc8zk0suuYSIWFReB2Du3LncdNNNbLPN0jXfb7rpJp544gm22247VllllUFf81WvehXHH388p556Kscee2xj3ogkqf3UOzJY70jkCFI2WTwAuAvYOzNvH6hhRGwG3FpvYCPF4Gsw/6h4aOFazY3y4IMPctZZZzF58mRefPFFTjjhBG6++WY++9nPLpEYZib77bcfJ510Ervtthtrrrkmjz76KNdccw3HHHMMK620EmeddVbNrztlyhSmTJnSjLckSVLXKzvBZR3g6MESxQrrLGoJ55xzDg8//DCbb745a6+9Nr/4xS84/fTT+frXv76ozQc+8AEuv/xy9ttvP7797W+zww47sPLKK/P617+er371q7z3ve/lz3/+8xLrQ8+YMYOI4IQTTmDmzJlEBJMnTx4wlp6yPPPmzQMW11Ec7Pi0adMa94FIktQBoky9uIh4ANgrM//UvJDaW0TM2GX9UbvMmLug3Ik9w9xlh8nrPa+NTJ48mfPPP585c+YwYcKEVocjSdJiXfB7diCj19ucF+/9y8zMnFRvH2VHFq8G3lhLw4gYExEfLR+SJEmS2kXZZPF44LCIqGX5i3WA88qHJEmSpHZRdoLLLsDPgVkR8XPgRmA+sLCftusMMTZ1uGnTpi0xsWTixImsv/76zJ07t3VBSZKkUsomi9MoaicG8P7KJvVr8uTJg040kSRJ7a2eFVweBF6uod2ywPg6+pckSVKbKJssJrB7Zs4erKF1FiVJkjpf2QkuMXiTRV4E7inZf1uLiL2BjVsdhyRJ0nAplSxm5jK1jCpW2v4jMyfWF1Z7yszpwB2tjkOSJGm4lB1ZrFlErBARb2tW/5IkSWq+piWLwETg2ib2L0mSpCYrNcElItYr0XytkrFIkiSpzZSdDT2XYka0JEmSRoB66iyWmRFtYllNz8LlzWrfKF26sLokSapNPfcs7k5xP2Lf7XXAW4FDgdnA54ANGhKlOt706dPZc889WXPNNVluueVYY4012GKLLTjwwAP5zne+w7333gvAjBkziIglthtvvHHQ/h955BFWWGGFJc6bMWMGUKwk07fPgbZp06Y18ZOQJKmz1DOy+EBmzqty7C7ghoj4LvAL4AagWlvB4CN3PSOKwz3C18CRzOOOO44vfelLHHLIIZx++umst956PPnkk9xwww0cffTRXHTRRXzxi19k6tSpTJo0icxcYl3pU045hcsuu2zA1/jGN77B888/D8C1117LpEmTFh2bNm0a06ZNY9KkScycOXOp471NmDChEW9ZkqSuUXZkcTzw98EaZebzwGnAcfUEpe4xZ84cTjnlFHbffXfOOussNt54Y0aPHs24cePYd999ufLKKxk9enS/56622mqstNJKXH755cyeXb2855NPPsm5557Luuuu26y3IUnSiFW2KPfDmbmwxuYPA9uWD0nd5MYbb+SVV17hTW96U7/H11tvPfbYYw9WWmmlpY6tvPLKfPKTnyQz+fKXv1z1Nc4++2ze8Y53sMEGQ7/rYfbs2Rx44IFD7keSpG7RzDqL2wHLN7F/dYCVV14ZgOuvv75qm5/85CccccQR/R477LDDWG655fjxj3/MnDlzljr+3HPP8c1vfpOjjjpqSHFOmDCBadOmscIKK/CqV9Vzd4YkSd2pocliRCwbEetHxBTgFOBvjexfnWfrrbdmhRVW4He/+x0HHHAAf/tbuR+JtdZai4997GMsWLCAU089danj5557LltttRVbbbVVo0KWJEm9lEoWI2LhQBvwAnA38D1gZeDMJsSsDrLGGmtw6qmnEhFcfPHFbLrppmy55ZYce+yx/OEPfyBz8OpKn//85xk1ahTTpk3jwQcfXLT/pZde4utf/3rpUcVdd911qRnQ8+Y5D0uSpP6UHVmMGrcHgE9l5gWNC1Wd6pBDDuG3v/0te+21F8suuyy33norJ598Mm9961vZaKONOO+88wY8f6ONNuL9738/L774Il//+tcX7T///PNZd911q85srubaa68lM5fY1l9//XremiRJXa+ey9BTgF2rbDsAG2Tmupn57YZFqY63ww47MH36dB5++GEuuugi9t9/f1ZccUXuvvtuDjroIE466aQBz+8ZPTz33HN5/PHHWbhwIV/96lc5+uijhyN8SZJGrHru5L8xM6vXMZEGsOqqq/LhD3+YD3/4wzz11FN84Qtf4Nxzz+Xkk0/m0EMPXTQhpq8tttiCPfbYg5///OeceeaZbLLJJowePZq99tqrIXHNnTu3If1IktRtyo4svodifWipJk8++WTVmdBjxozhnHPOYa211uLFF1/k738fuIRnz+jimWeeyZe+9CWOPPJIIsqsPilJksoqW2fxl5n5XLOCUfeZNWsWu+yyCwsWLOj3+KhRo1hzzTUBWH75gSst7bTTTuy000488cQTPP/88xxwwAENj1eSJC2pmXUWJQBefvllLr/88n6P3XfffcyePZvx48ez6aabDtrXcccdxyabbMJxxx3HqFGjGh2qJEnqw+rDrVbrGswNXKu5FT7xiU9w7733ss8++7D22mvzxBNP8Pvf/55jjz2WhQsX8p3vfKem5G/33Xfn9ttvH4aIJUkSOLKoJtthhx246qqr+MQnPsEll1zCrrvuypgxY5g4cSJHHnkkb33rW/nTn/7EPvvsAxQTTSKCKVOmMG/ePCJi0NI4kydPJiKYOXMmsLiOYs+klWrHp06d2qy3LUlS14haiiJrsYiYscv6o3aZMbf/e/Cq6hkZnPrU8JwnSZIGN9Qrd23++3n0epvz4r1/mZmZk+rtw5FFSZIkVeU9i5IkaeSqd2Sww+cSlOHIoiRJkqoascliRIyPiO9HxC2tjkWSJKldjdhkEdgZ+CngEiCSJElVtGWyGBGjIuJzEfF8REyq0mabiPhtRFwXETdHxEfKvEZmXgL8swHhSpIkda22m+ASEeOAS4DZwOgqbdYGrgYOyszLImICMCsiHs/MKyptbgD6Wz/u+Mz8v6YEL0mS1GXaLlkEVgIOAZ4GPlmlzWeARzLzMoDMnBsRFwNTgSsq+7ZvfqiSJEndre2Sxcy8E6AyWljN7sBNffbdABwcEatl5uONiiciZvTZtWWj+pYkSWp3bXnPYg02AB7ss6/n+Ya1dBARuwIfAdaMiGMjYsUGxidJktQV2m5ksUYrAi/22fdir2ODysxrgWtraDep9/PKSOMutbyGJElSp+vUkcVnWXryyvK9jkmSJKkBOjVZvAsY12ff+F7HJEmS1ACdmixeBWzTZ992wE2NnNwiSZI00nVqsngmxcSUfQEiYn1gf4rSOU0TEXsDGzfzNSRJktpJWyaLEXEl8OPK0zMiYkZEjOk5npn3U5TP+VxE/Aa4DPhMT0HuZsnM6cAdzXwNSZKkdtKWs6Ez8z01tLkR2GkYwpEkSRqx2nJkUZIkSe3BZFGSJElVteVl6Da30ayHFjJp0qRyZ82tlH+cMUznSZKk5umQ388vPXI3wEZD6SMyszHRjACV2dA/AQL4XYvDGUm2rDzOamEMI82WlcdZLYxhpNmy8jirhTGMNFtWHme1MIaRZsvK46wWxjDSvBV4KTNXrrcDk8WSKsv9LbUMoJrHz3z4+ZkPPz/z4ednPvz8zIdfIz5z71mUJElSVSaLkiRJqspkUZIkSVV5z6IkSZKqcmRRkiRJVZksSpIkqSqTRUmSJFVlsihJkqSqTBZrEBEzIuIPlcee7YaIWBgRq7c6vm4VEZ+PiFkRMTMiboyIr0TEcq2Oq5tFxKsqn/sNEfG7iPhTRLy/1XF1k4gYFRGfi4jnI2JSP8c3ioirKp//LRFxxPBH2V0G+8wrbSZHxBMRMXlYg+tSA33mEbFjRFxc+V36m8r/N/4/M0SDfOZviIgfRMT1lc/9zxFxZkS8upa+XRu6dgdk5tyeJxExBfhQZj7WupC6V+XzPRbYIjPnVH6gr6scPrJ1kXW9LwEHANtm5qMR8Wbg+oh4IjOvaXFsHS8ixgGXALOB0f0cXwG4GjgzM0+PiFWBWyLiucz81vBG2x1q/MwvAeYCrxnO2LrVYJ858E3gZ5m5f6X9e4ArImKfzPzZ8EXaPWr4zHcD1gLelpkvR8QY4BbgJWDQP0gdWazNFOD+PvsmA98f/lBGjK2Av2fmHIDMfB6YAby7lUF1s4gI4BDggsx8FCAzbwF+DRzTyti6yEoUn/FXqhyfDKwOnAOQmU8A5wLHR4T/X9dnsM/81cBpmXnI8IXU9Qb7zGcDp/c8ycwrgb8BH2l+aF1rsM/8/4BPZubLAJn5FEWyuFEtnfufTw0yc07PBwwQERsAbwR+2rKgut/lwOsjYjuAiFgD2At4uKVRdbfVgRVZ+jO+H9gxIrwSMUSZeWdm3jZAk92B2zLzpV77bgDWBLZsZmzdarDPPDPnZ+bM4Yyp29XwmX+0kqz09gKwfHMj6141fOb3ZOa8nucRsT2wI8Ufo4MyWazPZOC/M/PFVgfSrTLzV8CBwPSI+BtwLzCKGobLVbfHgGeA9frsXxdYDlhj2CMaeTYAHuyzr+f5hsMcizQsIuI1wKbAj1ocSteLiD0j4u/AlcBnK6O6gzJZLKlyqe6jeAm6qSr3sPyQ4r7QNwDrAxdSJDRqgiyWczoDmBwRGwNExG7A2ypNHFlsvhWBvn+EvtjrmNSNjgZ+nZmXtDqQbpeZV2TmJsA7gW9ExGG1nGeyWN7bgcczc1arA+lyXwZ+mZm/BsjMh4CngKu9HNpUX6SY5PLdiPgt8AHg5MqxJ1oW1cjxLEtfilu+1zGpq0TE+4B3AB9qdSwjSWbeDHwDOKUysjsgk8XyJgM/aHUQI8DGwJw+++6muFd00+EPZ2TIzFcy86zM3CUzd8rMf6O4BD0nM//Z6vhGgLuAcX32je91TOoaEfEuislz78rMp1sdTzeLiOUqV0Z7u53ij9HXDXa+yWIJEbEysAdwUatjGQHuZfEvyR5rVR6fG+ZYRoyI2Lwymai3XYBLWxHPCHQV8KY+9US3o5h0NKslEUlNEBG7AqcCe/RUX4iIL7Q2qq52FbB1n309v1P7VntZisliOfsDV1XKWai5vgf8S0S8ARbdAH0I8EccYWmmjwOf73kSER8AJlD8p67mOx+YD/w7QKXO4ieBEzPzlVYGJjVKROxEMZllKrBORGwTEdtQ+blX0xze84doRKwJfBb4eWY+MNiJUdzTrlpU7uE6ITOvbnUs3S4iRgGfpphM9CywCnATcEzl/kU1QUR8mOKy0AsUn/v9wOcz896WBtZFIuJKYFVge+BW4Elg355SIhGxEfAtigktKwA/yszTWhNtd6jhMz8PmEgxiv534CGKmnR/b0nAXWCgzzwi7qD/S5/zMnPCsAXZZQb5zN9NkYyvS1H1YhXgGuCkzHxy0L5NFiVJklSNl6ElSZJUlcmiJEmSqjJZlCRJUlUmi5IkSarKZFGSJElVmSxKkiSpKpNFSZIkVWWyKGlYRcSkiMg+24Raj6vzRMTcfr6ntw/Qfl6vdi/3Wf6wv/ZbRsTCXuf8qYGxj+sn9oyIaY16DandmSxKWkrvhK0J3d8IbA68q87j6lzfpvjebg7s3V+DiFgdWK/XrlcBrx+k3zNZ8vfZzUOIsa/HWBzz5hQrSUkjyqtaHYCkkSUznwX+EhHP1HNcHe2RzPzLIG226vX1HIpl+DYHbuuvcUQcAOwM3AesDQTQsJHFzFwALIo5Ip5tVN9Sp3BkUZLUTrauPD4C/Lzy9eb9NYyIFYCvVp6eR5EoQmNHFqURz2RRktROekYW/wTMqnzdb7IIHAmsC1wDzKvsW0CVUUhJ9TFZlEaAiHh1RPxHRPw+Ih6MiJcqj7+MiM/3TCDpuVcRuLbXuX1v7J/Up++IiA9ExJUR8Wil70cqfX80IkY16T1NiIgjI+Lqynt5OSKejoibI+L4iFilyjlLvZ+IeGNEXBQRD0TEglrv1xygv60iYnpEPBERT0bEtRHx9l7nbRMRP68cfyYifh0Rb23ke+11bk3f+3rbN0HPyOKAyWIljs8BC4FDe503OzNfaGqE0ghjsih1ucqlut8DZ1NMHjkQ2AH4DLAKcCqLk8OeySUH9epi8z7bjb36Xh64FLik0tenKO4fOxQYC5wP/LISQ6NNA74MLFt53bcC/w/4GzAV+FNEjOtzzv293kePHYGfAjOAfYAPUVwCrUV//e0MnAV8D3g3cHIltl9GxLsiYmfgeOCbwF7At4BJwK8jYrMGvtey3/vS7RstIlaluEcRimTxLxQjhetGxJg+zb8GjAa+XbkPsmdE0kvQUqNlppubWxdvwH8CCVzUz7HRwF+BuX32T6qck4P0/e1Ku+uAUX2OvQq4pXL8O/2cO6HnNYAJdRyfQTEzddl+jp1SOe8nA8Te0/cTffsHjh7svQ/Q333AmD7Hjq8cuxn4Sd+YgQsqxy+o0ndd77Xs976en5UaP5u5lX6nDtJut16f48TKvr9Unu/Yq92ulX2PAasCo4DnKvs+1Yx/R32+FwlMa+bruLm10+bIotT9Nq08LjW7OIvLdd+kuOerlIh4PfDJytNjMnNhn74XAKdVnh4UEWuWfY1BTAMOz8yX+zl2buVx34Eu0VZclJlz++w7k8UjXGX9MDOf6rPvV5XHrYCr+4n5qsrj26r0OY363mvZ731TflZK6BkdfCIz51S+nlV53BygclvDNyv7js/MJyjifnVlX8NmQksqmCxK3e+OyuOUiPj3iBjd+2Bm/ldmfryOfj9AMfv0BeAPVdr0FF5eluqJUF0yc1pmzqxyrGeywyjgdYN09dt+zn+mnwSyVv1dBn1kkOMPVR7H99fhEN5r2e99s35WatWTLN7Sa1/P1z2X+v+t8vWfWZwo99yvuBC4dbAXqdwDOndIkUojiMmi1P2+A/yRImH7FvBwRFwcER+LiLFD6HeLyuNo4PnKxJAltsrr9lhv6S7qFxHLRMSBEXFFRNwXEc/3ee0eKw3S1aONjAuY38++BTUe73elkiG817Lf+2b9rNSq9+SWHrMqj5tHxGrAiZXnn+k1mt2TZP4tM5/rr+OIGBsR21c5tkf9IUvdz6LcUpfLzOciYkdgCvBxYHvgg5VtQURcDHwuMx8s2XXPhIOHgXfU0P7hkv1XFRHLAlcA7wQeoKi1dwvweK9mf+5pPkh3Cwc5XtYrQzy+hKG817Lf+yb+rNTyPlcBNqo87S9Z3Aw4CViN4v7M3hNtturnvL7WBy6IiBlURiQjYlOKpHhBRFxfuaQtqQ+TRWkEqNw/+F3guxGxHvA+4MPANhSzat8SEVtksXpKrXruyxudg6/K0Wj/QZE8LQB2z8y/9m0QMViO2DGG9F7Lfu+b9LNSizezONldlPRl5vyIuA9YB/h3itsejug5HhHLAFtWnladCZ2Zf6rMNj+YYgb/eIrZ+sdm5i8b9zak7uNlaGmEycx7MvP0zNyWokzMK8CGwHtLdtVzb9iY/sq29IiI7SLiExHR7/14ddqt8nhHf8lTl2nYey37vW/gz0otekYHn2HxvZM9ZlUeA/han/tJNwFWrHw9WNmcpHgP2et5M9Y/l7qKyaLU5SLim5VLb0vJzB+zeLWL3sncovvgotewVUTs1uv+rktZfEl1rwFC+DbF7OJGjkT1/N/V75DaMBSOHk51v9ey3/s6f1Yaped+xVmZ2TeB+y/g6xSz679S5bxXWJxULiUi3kwR/5spLqs/SHG5/egoip2vOqTopS5msih1vzHAjhHxhr4HImJFiuXSYMnJKA/1+nq1Xl+fC3weIDNvp5gQAXBMfxMgIuIgihGjszLz6brfwdJ+U3ncJCK27ef4pxr4Wq02lPda9ntfz89Ko1S97zAzp2fmEZn5+X4uf/ec9/dBLo3fA0zJzIOp3O+ZmX/NzEnAGd6vKFXnPYtS90uKf+tXR8TXKH4ZP09xOfFQipVWvpeZMxadkHlnRMymqF93bET8CNi9cs5Zvfr+bOX8/YEbIuIUisvTqwP7Utwf9kuKotTAoqRjIrBWr342joiVgJ7aelWPVxKCsykui24B/Lzyun+gWGXkAOBfep07MSIe6zm3n1VSeo6/lJl9L38OaoD+5gAvUVwmXeq9ZOZfen0Wi2o69vTX6z7Qut8r5b/3pX9WGqHyOWxSeVq2TmLPyOKAl6Azcz79z0QnM68o+ZrSyNKKSuBubm7Dt1GUUzmIYuWQuyh++b9MMXp4BfC+KudtUjn+JMWkgr8DR9FnpZZK232A6RQznl+mWBVlRuV1l+nTdhKL7xXru00a7Hif93UiMLsS3wsU97qdTTHztd9zB+h7bp2f70DvZUK144N9Fv18D+t5r6W+9/X+rNTwGc1lgBVcKJZc7Il98xL9BsVEqwQ+O0z/nmbgCi5uI2yLTO/tlSQ1T6UA9vrACZk5tbXRDE3lns5dgPMzc3Jro5GGh/csSpIkqSqTRUnScDm+18ozw12bsy4RsWaf1XJ2aXVM0nBzgoskqdl2Z+mlDF9sRSB1mM/iot+9OXtaI4b3LEqSJKkqL0NLkiSpKpNFSZIkVWWyKEmSpKpMFiVJklSVyaIkSZKqMlmUJElSVf8f5dcaObTghbwAAAAASUVORK5CYII=\n", "text/plain": [ - "
" + "
" ] }, "metadata": { @@ -481,20 +553,159 @@ } ], "source": [ - "with torch.no_grad(): \n", - " post_prime = all_flows[i_best].sample(10000)\n", - " #post_prime = w_prime * std_post + avg_post\n", - " \n", - "plt.hist(np.array(post_prime.detach().cpu()), range=(8., 13.), bins=20)\n", - "plt.xlim(8., 13.)\n", - "plt.yscale('log')\n", - "plt.show()" + "fig = plt.figure(figsize=(10,8))\n", + "sub = fig.add_subplot(111)\n", + "_ = sub.hist(np.array(post_prime.detach().cpu()), range=(7., 13.), bins=40, \n", + " histtype='step', linewidth=2, label='pSMF')\n", + "\n", + "_ = sub.hist(np.median(logM_posteriors, axis=1), \n", + " weights=w_import*10000./np.sum(w_import), \n", + " range=(7., 13.), bins=40, histtype='step', linewidth=2, label='SMF')\n", + "\n", + "sub.legend(loc='lower left', fontsize=20)\n", + "sub.set_xlabel(r'stellar mass [$M_*$]', fontsize=25)\n", + "sub.set_xlim(7., 13.)\n", + "sub.set_ylabel(r'unnormalized number density', fontsize=25)\n", + "sub.set_yscale('log')\n" + ] + }, + { + "cell_type": "markdown", + "id": "3cbacf2a", + "metadata": {}, + "source": [ + "# calculate normalization" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "33a6f914", + "metadata": {}, + "outputs": [], + "source": [ + "footprint = 168.8264 / (4 * np.pi * (180/np.pi)**2) # sq. deg" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "65748519", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.05167709231549672\n" + ] + } + ], + "source": [ + "nbar_total = np.sum(bgs['WEIGHT'] / vmaxes / footprint) # (Mpc/h)^(-3)\n", + "print(nbar_total)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "d9a0cee8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(1e-07, 0.031696119155579565)" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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jD/1xLTWvC/t0rZzS5Kk9io7z+IlwJvqCYyIV0bEseVTkiAz+cEPfsDb3vY21lhjDZZbbjkmTJjAVlttxac+9SmmT5/Oww8/vDh++vTpRMTix/LLL8+9995b8zw333wzyyyzzEuOnTdvHgCTJ09+yfZaj5kzZ7bo05AkqX3K9iweB1wRETdXlvwbypqV+BMayqyHDNlzN60yF/m0x0cmmX4mtrE38xOf+AQXXHABxx13HN/73veYMGECDz/8MFdddRVHHHEE3/3udznvvPOYOnUqAFOnTmXq1KlMmzaN448/nueee46vfOUrnH766UOe55RTTiGzGLR/5513MnHixMX7+oq/iRMnMn/+/KX29xcx2KQAkiSNfmWLxQOA3wNXRsQc4DpgAbBokNg1h5eaetXVV1/ND37wA/bbbz+OPXZJ5/Q666zD3nvvzSabbMK2225b9fh1112X++67j29/+9scffTRrL766oPG3XbbbfzqV79itdVW45FHWrqkuCRJo1bZYnEaS+ZQ3AbYeojYrpxnUa137bXXAvD6179+0P3bbLMN22yzDS9/+csH3b/RRhux3Xbb8dOf/pQzzjiDE088cdC4L33pS/zbv/0bP/nJT4ZdLP7zn/+smo8kSaNZI2tD3wDMqjyuHuJxfZNy7CiOhi5n4L2EN910EwcccADrrrsuyy+/PBtvvDGnn3764kvBACuvvDIA11xzTdV2//CHP7DHHntU3X/EEUcAcNZZZ/HEE08stf+ee+7hoosu4uCDD270rQEsvldxpZVWYsyYMcNqS5KkTtRIsTg1M3eu9aCBNaFHg8ycAdza7jxGi6lTp5KZfOITnwBgr732YpNNNmHu3LncfffdvOtd7+Lggw/moIMOWnzMjjvuSERwwQUX8JnPfIa77rqr9Hm32mor3vnOd/LYY4/xzW9+c6n9X/7yl/noRz/KhAkuxCNJ0lDKFovzgefqjH2SoodRWmzrrbfmM5/5DKussgprrrkmZ555JltvvTVnnnkmf/jDHwDYfPPNOeSQQ4CiZ3DixIlsv/32nHzyydx88811n6uvd/GMM87g2WefXbz9oYce4rzzzuPzn/98qdwnTZq01AhoSZK6XaliMTMnZeZtdcbOq/QwSosNvHQcEXzkIx8B4Pzzl8zh/uUvf5lf/OIXi6evueaaazj66KPZYost2GKLLZgx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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=(10,8))\n", + "sub = fig.add_subplot(111)\n", + "_ = sub.hist(np.array(post_prime.detach().cpu()),\n", + " weights=np.repeat(nbar_total/10000./0.1, 10000), \n", + " range=(7., 13.), bins=60, histtype='step', linewidth=2, label='pSMF')\n", + "\n", + "_ = sub.hist(np.median(logM_posteriors, axis=1), \n", + " weights=w_import*nbar_total/np.sum(w_import)/0.1, \n", + " range=(7., 13.), bins=60, histtype='step', linewidth=2, label='SMF')\n", + "\n", + "sub.legend(loc='lower left', fontsize=20)\n", + "sub.set_xlabel(r'stellar mass [$M_*$]', fontsize=25)\n", + "sub.set_xlim(7., 13.)\n", + "sub.set_ylabel(r'unnormalized number density', fontsize=25)\n", + "sub.set_yscale('log')\n", + "sub.set_ylim(1e-7, None)" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "5ce86d56", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(1e-07, 0.031696119155579565)" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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V9GeRrYpU6bwmc98hpVWWonVV1+dmTNnMmXKFGbOnMmNN94IwMYbb8zhhx8OFCOUkydPZrvttuOEE07g9ttr/5p1jnKedtppvPjii4v3P/bYY5x99tl88YtfrKvv66677hIz0yVJGu2aDjgj4t8olrfcG5gMLIspkdSEnrfBI4KPfexjAJx77rmL93/zm9/kF7/4xeLURNdddx3HHnssm266KZtuuimzZ88esK2ddtqJbbbZhkceeYQf/ehHi/efdtpp7Lzzzqy//vp19f2ee+4hM1+3SZI02lUxwnkCMA74H4qg893ATn1s+1fQnka4SZOWXNBqww03BGDu3Lmv27/zzjtz1VVX8cADD/CjH/2IXXbZhbFjx3L77bez2267cd555w3Y3jHHHAPAKaecwiuvvMLTTz/NGWecsXj0U5IkNaeKFX+2Br6ZmUcNVDAiHsdRTg1g/PjxS+xbYYUVAFi4cGGv56y55prsv//+7L///jz88MMcfPDB/OxnP+PII49k77337re9XXfdlbe97W3ccccd/M///A8PPfQQ22+/fZ8z4OvlKKckabSrYoTzZeCSGsveQzHSOaI5S705zz777BL7nnuuSI4wYcIEAB5++GFuvfXWXs9fc801Offcc1l66aV56KGHXrfaUG8igqOOKv6/dNJJJ3Haaac5uilJUoWqCDivA5YckupFZj6fmVdX0Oaw5iz15vQ24/yvf/0rAJtvvjkAl19+OR/+8If7rGPFFVdcnDpp7NixA7b58Y9/nMmTJ3PnnXey4YYbsv322zfSdUmS1IsqAs7jgf+MiAETDEbE28rZ6lKfLrjggte9z0wuuugiImJx6iSA+fPnc/PNN/dax80338yTTz7J1ltvzUorrTRgm0svvTTHH388G264Iccee2xzH0CSJL1O089wZuYtEXEKcEFEXAncAiwAXuul+FrNtjdaDeWa5YPtoYce4vTTT2f69OksWrSIr3zlK9xyyy18/vOfZ8qUKYvLZSYf+MAH+OpXv8o73/lO1lhjDR577DF+85vf8KUvfYnx48dz+umn19zuvvvuy7777tuKjyRJ0qhWxaQhgOWAdYEzK6pPo9j3vvc9zj33XDbeeGMeeughJk2axKmnnsqhhx66uMxHP/pRVl11Va644grOPPNMjjvuOB599FHGjh3LOuusw4c+9CEOO+wwJk+evPicOXPmsNNOXY8Qd46Yzpo1q8++TJ06lauv7noKZN111wW6JgL1dfzss89m+vTpzVwGSZJGjGh2Bm1E7ARcDixT4ymZmSN+fb+ImLPjjjvuOGfOnKHuStuYPn0655xzDvfcc8/rAkVJkiozY0L52nvWk9Fq3KSNWXTfn6/OzKmtqL+KEc7jKG6ffxn4NfAo8EofZTcELqugTUmSJLWJKgLOzYFjM/NbAxWMiPGYh1OSJGlUqWKWegLX1Fj2bxTPeo5o5uGsz6xZs4gIzjnnHKB4DtJb6pIkjRxVBJzXAmvWWHYssE4FbQ5r5uGsz/Tp05dYf3z+/PlD3S1JklSRKgLOLwNfLG+XD2Rd4KoK2pQkSVKbqOIZzhWBXwHzIuI84I/0nYdzvQrakyRJUhupIuCcQ/EcJ8BRFdQnSZKkEaSqxO/1zDxvLvGnJEmS2kpVs9Q3ysylBtqATSpoT5IkSW2kioCz3tFN83BKkiSNIlXcUl8XeKCWgpl5B9UEuZIkSWoTTQd/mXlvZva1lOXrRMTyEfGOZtsc7kz8LkmS1KWqSUO16szDOWaQ2x1UmTk7Ig7v6OiY2HRlMyZU0KNBMGPhUPdAkiQNU02PcEbEpFo3YK0K+qwRbPbs2ey8886sscYajB07ltVXX51NN92Uvfbai+9///vcd999AMyZM4eIeN120003DVj/o48+yvLLL/+68+bMmQMUKx71rLO/bdasWS28EpIkjRxVjHDOx1RHrTdcRxArHIE97rjj+NrXvsYhhxzCqaeeyqRJk3jqqae44YYbOOaYYzj//PP58pe/zIwZM5g6dSqZyaxZs9h3330BOPHEE7n44ov7bePb3/42L7zwAgBXXXUVU6dOXXxs1qxZzJo1i6lTp3L11Vcvcbw713qXJKl2VU3giTo2aQn33HMPJ554ItOmTeP0009ngw02YNy4cay55prsvvvuXHbZZYwbN67Xc1dddVXGjx/PJZdcwrx58/ps46mnnuIHP/gBb3rTm1r1MSRJUi+qCjinUTyf2XN7C7At8DlgHnAELm+pXtx000289tprbLJJ76laJ02axPvf/37Gjx+/xLEVV1yRgw46iMzkpJNO6rON7373u7zrXe9ivfWa/wrOmzePvfbaq+l6JEkaDaoKOB8sZ6v33O7OzBsycyawFbAb4PCSlrDiiisCcN111/VZ5qc//Slf+MIXej122GGHMXbsWC644ALuueeeJY4///zzfOc73+Hoo49uqp+TJ09m1qxZLL/88iy99GDPuZMkqT1VEXBOBP42UKHMfAH4JnBcBW1qhNlyyy1Zfvnl+f3vf8/HP/5x/vKXv9R1/lprrcU+++zDK6+8wte//vUljv/gBz9giy22YIsttqiqy5IkqUZV5OF8JDNfrbH4IxQjndLrrL766nz9618nIrjwwgt561vfymabbcaxxx7L9ddfT+bA89K++MUvMmbMGGbNmsVDDz20eP9LL73Et771rbpHN3faaaclZqbfe++9dX82SZJGu8Fe9WdrYNlBblNt4pBDDuHaa69ll112YZllluG2227jhBNOYNttt+XNb34zZ599dr/nv/nNb+YjH/kIixYt4lvf+tbi/eeccw5vetOb+pxx3perrrqKzHzdts466zTy0SRJGtVaHnBGxDIRsU5E7AucCNR3r1Sjynbbbcfs2bN55JFHOP/889ljjz1YYYUV+Mc//sF+++3HV7/61X7P7xzF/MEPfsATTzzBq6++yje+8Q2OOeaYwei+JEnqRRWJ31/tbwNeBP4B/AhYEZjZbJsa+VZZZRX23HNPLrjgAh544AEOOuggAE444QSeeeaZPs/bdNNNef/738+zzz7LzJkzueiiixg3bhy77LJLJf2aP38+06dPr6QuSZJGiypGOGvNv/kg8J+ZeW4FbWqEeeqpp/qcoT5hwgS+973vsdZaa7Fo0SL+9rf+56h1jnLOnDmTr33taxx11FFEmAJWkqShUlVel30pVhzqzSLg4czs67jE3LlzmTZtGs8//3yv6YbGjBnDGmuswYMPPsiyy/b/GPAOO+zADjvswLXXXsvKK6/Mxz/+8VZ1W5Ik1aCqgPOmzOx7iZdRJiJ2BTZYsGDBUHelrbz88stccsklfPjDH17i2P3338+8efOYOHEib33rWwes67jjjuOzn/0sRx55JGPGjGlFdyVJUo2qCDjfR9+jm6NSZs6OiMM7OjomVlZphWuWD2cHHHAA9913H7vtthtrr702Tz75JH/4wx849thjefXVV/n+979fUwA5bdo0/vrXvw5CjyVJ0kCqyMP5q8x8vpayETEhIj7VbJsaebbbbjuuuOIKDjjgAC666CJ22mknJkyYwLrrrstRRx3Ftttuyx//+Ed22203oJi8ExHsu+++3HvvvUTEgGmPpk+fTkRw9dVXA115NufPn9/v8RkzZrTqY0uSNCpELQm1K2ss4m3A7Zk54u9xRsScHXfcccc5c+YMdVckSVKnzjuGMxYObT+GmXGTNmbRfX++OjOntqL+yhaDjogVgC2BNYFxfRR7Y1XtSZIkqT1UEnBGxAnAocByVdQnSZKkkaPpgDMiDgM6F6l+DXgceKGP4ssA1U2kkSRJ0rBXxQjn/hRB5qeA32bmS30VjIiNgNsqaFOSJEltooqAcz3g4My8vIayi4B/VtCmJEmS2kQVAeczwJ9qKZiZfwfWraBNSZIktYkq1lL/HTC5loIRsXxEvKOCNiVJktQmqgg4vwIcGRGr1FB2XeCqCtqUJElSm6jilvrKwCXAnyPiPOBmYAHwai9l16ugPUmSJLWRKgLOOUDnckVHVFCfJEmSRpCqVhqKOsoO3lqakiRJGnJVPMOZwEaZudRAG7BJBe1JkiSpjVQRcNY7ullPeUmSJLW5Km6prws8UEvBzLyDaoJcSZIktYmmA87MvLeKjgxHETEZ+A1wX7lrBeD+zPzgkHVKkiSpzVQ1aWikegY4KDN/DRARRwB3DG2XJEmS2ktb396OiDERcUREvBARU/soMyUiro2IayLilojYu9b6M3NBt2BzaeDdwGVV9F2SJGm0aNsRzohYE7gImAeM66PM2sCVwH6ZeXF5i3xuRDyRmZeWZW4Alu3l9OMz8+fd3n8E+H+ZaVonSZKkOrRtwAmMBw4BngYO6qPMocCjmXkxQGbOj4gLgRnApeW+bWps71PAh5vpsCRJ0mjUtgFnZt4Fiyf29GUaxVKb3d0AHBgRq2bmE7W0FRHbAbdm5gv9lJnTY9e2c+fOZerUqbU0IUmSBsP854rXOVOHtBvDzUuP/gPgza2qv20DzhqtB/y6x76Hytf1gZoCTuA/qX/ZzjELFy586eqrr76uzvNGss3K17lD2IfhaLPyde4Q9mE42qx8nTuEfRiONitf5w5hH4abzcrXuUPYh+Fos/J17hD2YTjaDIB7r547pL0YfrYFJrSq8pEecK4ALOqxb1G3YzXJzE/WUGZq9/edI549949mXpPeeV1653XpnddlSV6T3nldeud16V0vd2or1daz1GvwHEtOCFq22zFJkiS12EgPOO8G1uyxb2K3Y5IkSWqxkR5wXgFM6bFva+DmWicMSZIkqTnR7mkly1nq9wA7ZeacHsfWBv4MTM/MSyJiHYqHp/fqzMMpSZKk1mrrgDMiLgNWAbYBbgOeAnbPzIXdymwFnAokxUSh0zLz3MHvrSRJ0ujU1gGnJEmShr+R/gynJEmShpgBpyRJklrKgLMBEbF0RHwxIm6IiN9HxB8j4iM1nLd3RNwSEdeU5/WcQd/WGrkuETEjIuZGxJwe23KD1e+qRcSYiDgiIl6IiKm9HH9zRFxRXqNbI+ILNdY7JSKuLb8/t0TE3lX3vZVacV0iYmpEzO/l+7NtKz5D1Qa6JmWZ6RHxZERMr6Pe90bEjeV35caIeG9FXR4UrbguZfm/9vJdWbfCrrdUf9clIraPiAvLz/S78t/hAX8vleeO2O9Lo9el3b8vA1yTf42IsyLiuvIz/SkiZtbye7eZ30MjfaWhVvka8HFgq8x8LCI2B66LiCcz8ze9nRAROwOnA5tl5vyI+BBwZURslJkPDF7XW6ru61L6XM8MA+0qItYELgLmAeN6Ob48cCUwMzNPjYhVgFsj4vnMPKOfetcuz9svMy+OIjvD3Ih4oh0yLrTqupRmZeaMqvvcajVek4uA+cDKddS7GfBTYGpm3hTFxMk5EbF9Zs5tuuMt1qrrUjo5M2c118OhMdB1Ab4D/CIz9yjLvw+4NCJ2y8xf9FPvZozg7wsNXpdSW35fargm7wTWAt6RmS9HxATgVuAloM//6Df7e8gRzjpFRACHAOdm5mMAmXkr8FvgS/2c+mXgwsycX57z/4BHgc+1sr+DpYnrMtKMp7gOJ/dxfDqwGvA9gMx8EvgBcHxE9Pf38VDg0cy8uDxvPnAhMKOKTg+CVl2XdjbQNVkO+GZmHlJnvccA12bmTQDl67W0z9/DVl2XdjfQdZlHkZEFgMy8DPgLMNAI1Ej/vjR6XdrZQNfk58BBmfkyQJnZ51bgzQPU29TvoZH6D3krrUaRXumRHvsfALaPiCVGjSNiZWAr4OYeh24A3tOCPg6Fuq/LSJSZd2Xm7f0UmQbcnpkvddt3A7AGsNkA5/X2/ZkSEas20tfB1MLr0rYGuiaZuSAzr26g6nfT+3dlWgN1DboWXpe2VsN1+VT3lIClF1lyeeeeRvr3pdHr0rZquCb/zMx7O99HxDbA9hT/ye9PU7+HDDjr9zjwLDCpx/43AWOB1Xs5Z73y9aEe+x8C1q+0d0OnkevSaXr5HMnvy2dtNm9VJ4eB9ej9ewD9fxcaPa9dNPP5to2Iy8vnii6r9bm1kaj8R39ler+WK0XEGwa9U8PLzhHxm/K78rOI+Peh7lCrlAMdbwV+3E+ZUfd9qeW6dDOivy8RsXNE/A24DPh8Ofrbn6Z+Dxlw1imLxKWnUQRJGwBExDuBd5RFehvJW6F8XdRj/yJg+fJ2dFtr8LoA/BP4E/AuYAdgDnBjRGzdyv4OoRXo/XvQeazq89pFo59vIXAv8LHM3AH4L+CsiDis+i62hf7+rel+fDR6BLgb2Ln8rvw3cEX5PP1IdAzw28y8qJ8yo/H7Ust1gVHwfcnMSzNzQ4pR7m/X8O9mU7+HDDgb82WKCTI/jIhrgY8CJ5THnuyl/HPla88h/GWB53PkZN+v97qQmWdl5rcy85UsnAncARw9KD0efM/R+/eg81jV57WLhj5fZt6amQdm5tPl++uAs4DjWtLL4a+/f2u6Hx91MvOyzDwqM18s388GfsEI/K5ExIcp/hP/iQGKjqrvSx3XZVR9XzLzFuDbwInlCHBfmvo9ZMDZgMx8LTNPz8wdM3OHzPwPitvG92TmM72c8o/ydc0e+ydS/A9qRGjguvTlLuAtrenlkLub3r8HnceqPq9dVPn57gJWjojVmu5Vm8nMJyiW+O3tWj7dOaFPi424f2si4j0UE37e0/kfsb6Mpu9LPdelHyPi+xIRY3u5s/pXiuCxv8/X1L/TBpwNiIiNI6LnM4k7Aj/prXxmPgXcCPTMu7k18KvKOzhE6r0u5TkX9LJ7bYrbpCPRFcAmETG2276tKW7fzB3gvN6+PzeXvzTaXUPXJSJO6iUv3toU/9teUHUn20Rf35UrhqAvw0ZE/HeZUqm7EfVvTUTsBHwdeH9nsBgRRw5w2oj/vjRyXUb49+UKYMse+9YqX/tL09jc76HMdKtzo3hW8ZRu7z9KkRNu1fL9+ykepN20W5mdKW4rr1O+/0D5fu2h/jxDfF0S+GC39+8HXgPeO9Sfp8lrMbn8bFN77F8euAc4tHy/Svn+/3QrsxbFs62f7rZv7fL7snv5fp3y/c5D/VmH+LrMoUh5Et3qfxg4aag/a7PXpEeZBKb3sn/z8u/U+7rt24wi4N6yfD+lfL/ZUH/WIb4u8yly/nYv8wJFepgh/7zNXheKZ+AfKn+3TOm2zR/N35cmrkvbf1/6uSZzgP8Fxpbv16AY4by0W5nKfw+NilQ1LXAj8KXyf03PUfyP4O3ZFeGPpcgVt/j6ZualEfFZ4OKIeI5idHlajpyk79DAdaHIFXZYRHyerhH33TPz8kHqc+Ui4jKKgAngtIh4iuIzLczM5yPi3cAZEfExikDrjHx9cvMxFNdp8WhfZj4QEdOAU6NYgWcFiuBs2Cd979SK60KRZ+5gigUGXirP+yZFsudhr79rUh4/G+gcwT0qilV1DsrMv5X7lqa4Jst01pmZc8tn1c6MiBfL4x/ONkji3akV1wU4Ctg/Ij4KvEpx+/DgbKPE3gNcl7Mobnde3OO07iNyo/H70tB1oc2/LwNck85/N6+PiGeBlYBLga92q6Ly30OdowKSJElSS/gMpyRJklrKgFOSJEktZcApSZKkljLglCRJUksZcEqSJKmlDDglSZLUUgackiRJaikDTknDUkRMjYjssU2u9bjaT0TM7+XP9K/9lL+3W7mXeyyN2lv5zSLi1W7n/LHCvq/ZS98zImZV1YbUzgw4JTWse9DXgupvAjYG3tPgcbWvMyn+bDcGdu2tQESsBkzqtmtp4F8GqHcmr/+9d0sTfezpcbr6vDFwc4V1S23PpS0lDUuZ+Rzw53LptbqPq609mpl/HqDMFt1+vodiqcuNgdt7KxwRHwfeDtxPsSZ0AJWNcGbmK8DiPpdLGEsqOcIpSWpHW5avjwK/LH/euLeCEbE88I3y7dkUwSZUO8IpqR8GnJKkdtQ5wvlHYG75c68BJ3AU8CbgN8C95b5X6GM0VFL1DDglLRYRy0XE/4mIP0TEQxHxUvn6q4j4YueknM5nN4Grup3bc7LE1B51R0R8NCIui4jHyrofLev+VESMadFnmhwRR0XEleVneTkino6IWyLi+IhYqY9zlvg8EfG2iDg/Ih6MiFdqfX61n/q2iIjZEfFkRDwVEVdFxL93O29KRPyyPP5sRPw2Irat8rN2O7emP/tGy7dA5whnvwFn2Y8jgFeBz3U7b15mvtjSHkpazIBTErD4tuMfgO9STMjZC9gOOBRYCfg6XQFm54Sd/bpVsXGP7aZudS8L/AS4qKzrPymep/sc0AGcA/yq7EPVZgEnAcuU7W4LfBL4CzAD+GNErNnjnAe6fY5O2wM/A+YAuwGfoLidW4ve6ns7cDrwI+C9wAll334VEe+JiLcDxwPfAXYBzgCmAr+NiI0q/Kz1/tnXXb5qEbEKxTObUAScf6YYsXxTREzoUfwUYBxwZvlcaOfIqLfTpcGUmW5ubm4AnwUSOL+XY+OAO4D5PfZPLc/JAeo+syx3DTCmx7GlgVvL49/v5dzJnW0Akxs4PodixvAyvRw7sTzvp/30vbPuJ3vWDxwz0Gfvp777gQk9jh1fHrsF+GnPPgPnlsfP7aPuhj5rvX/2jXxXarw288t6ZwxQ7p3druO65b4/l++371Zup3Lf48AqwBjg+XLff7bi71GPP4sEZrWyHTe3dtkc4ZTU6a3l6xKzvrO49fgdimfg6hIR/wIcVL79Uma+2qPuV4Bvlm/3i4g16m1jALOAwzPz5V6O/aB83b2/282l8zNzfo99M+kaaavX/2Tmwh77fl2+bgFc2Uufryhf39FHnbNo7LPW+2ffku9KHTpHKZ/MzHvKn+eWrxsDlI9ofKfcd3xmPknR7+XKfZXNUJc0MANOSZ3uLF/3jYiDI2Jc94OZ+X8zc/8G6v0oxazgF4Hr+yjTmdx7GfoOphqSmbMy8+o+jnVOIBkDvGWAqq7t5fxnewlCa9XbLd1HBzj+cPk6sbcKm/is9f7Zt+q7UqvOgPPWbvs6f+58bOE/yp//RFew3fn85qvAbQM1Uj4TO7+pnkoCDDgldfk+cCNF0HcG8EhEXBgR+0RERxP1blq+jgNeKCfbvG4r2+00ackqGhcRS0XEXhFxaUTcHxEv9Gi70/gBqnqsyn4BC3rZ90qNx3tdUaeJz1rvn32rviu16j5hqNPc8nXjiFgV+K/y/aHdRtU7A9W/ZObzvVUcER0RsU0fx97feJel0c3E75IAyMznI2J7YF9gf2Ab4GPl9kpEXAgckZkP1Vl15ySOR4B31VD+kTrr71NELANcCrwbeJAiF+OtwBPdiv2ps/gA1b06wPF6vdbk8ddp5rPW+2ffwu9KLZ9zJeDN5dveAs6NgK8Cq1I8r9p98tIWvZzX0zrAuRExh3JkNCLeShFYvxIR15W35yXVwYBT0mLl85Q/BH4YEZOADwN7AlMoZjv/W0RsmsUqP7XqfE5xXA68ekzV/g9FAPYKMC0z7+hZIGKgOLNtNPVZ6/2zb9F3pRab0xUwLw4cM3NBRNwPvBE4mOIRji90Ho+IpYDNyrd9zlDPzD+WWQAOpMisMJEii8Kxmfmr6j6GNLp4S11SrzLzn5l5amZuRZEC6DVgfeBDdVbV+azchN5S8nSKiK0j4oCI6PX5xAa9s3y9s7cAbISp7LPW+2df4XelFp2jlM/S9Sxpp7nlawCn9Hi+dkNghfLngVIiJcVnyG7vB8y3KqlvBpySAIiI75S3EZeQmRfQtSpL94Bw8XOB0W34LCLe2e15t5/QdXt4l366cCbFrO8qR8Q6/43rdWhvEJKTD6aGP2u9f/YNfleq0vn85tzM7BkE/l/gWxRZD07u47zX6ApMlxARm1P0f3OKRwQeonh04JgoEuqv0lTvpVHKgFNSpwnA9hHxrz0PRMQKFEsDwusn+Dzc7edVu/38A+CLAJn5V4pJJgBf6m1SSUTsRzFydXpmPt3wJ1jS78rXDSNiq16O/2eFbQ21Zj5rvX/2jXxXqtLnc5iZOTszv5CZX+zlVn7neX8b4Db/P4F9M/NAyudfM/OOzJwKnObzm1JjfIZTUqek+Dfhyog4heIX+gsUt0Y/R7Ei0I8yc87iEzLvioh5FPkNj42IHwPTynNO71b358vz9wBuiIgTKW61rwbsTvG83K8oEp8DiwOXdYG1utWzQUSMBzpzL/Z5vAwqvktxi3dT4Jdlu9dTrIbzceCD3c5dNyIe7zy3l9V8Oo+/lJk9b+UOqJ/67gFeorjlu8Rnycw/d7sWi3N+dtbX7bnYhj8r9f/Z1/1dqUJ5HTYs39abR7NzhLPf2+mZuYDeMwSQmZfW2aakTkORbd7NzW34bRSpcvajWOHmbooA4mWKUcxLgQ/3cd6G5fGnKCZq/A04mh4rCpVldwNmU8xEf5li9Z45ZbtL9Sg7la5n53puUwc63uNz/Rcwr+zfixTP/n2XYkZyr+f2U/f8Bq9vf59lcl/HB7oWvfwZNvJZ6/qzb/S7UsM1mk8/Kw1RLC/a2feN66g3KCavJfD5Qfr7NAdXGnJzW7xFps9BS5KGXplkfR3gK5k5Y2h705zyGdcdgXMyc/rQ9kYaej7DKUmSpJYy4JQkDTfHd1shabBztzYkItbosarTjkPdJ2k4cdKQJGm4mMaSy3YuGoqONGABXYnlu3NWuwQ+wylJkqTW8pa6JEmSWsqAU5IkSS1lwClJkqSWMuCUJElSSxlwSpIkqaUMOCVJktRS/z8gKUHEdLm/1QAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=(10,8))\n", + "sub = fig.add_subplot(111)\n", + "_ = sub.hist(np.array(post_prime.detach().cpu()),\n", + " weights=np.repeat(nbar_total/10000./0.1, 10000), \n", + " range=(7., 13.), bins=60, histtype='step', linewidth=2, label='pSMF')\n", + "\n", + "_ = sub.hist(np.median(logM_posteriors, axis=1), \n", + " weights=w_import*nbar_total/np.sum(w_import)/0.1, \n", + " range=(7., 13.), bins=60, histtype='step', linewidth=2, label='SMF')\n", + "\n", + "sub.legend(loc='lower left', fontsize=20)\n", + "sub.set_xlabel(r'stellar mass [$M_*$]', fontsize=25)\n", + "sub.set_xlim(9., 13.)\n", + "sub.set_ylabel(r'number density [$({\\rm Mpc}/h)^{-3} {\\rm dex}^{-1}$]', fontsize=25)\n", + "sub.set_yscale('log')\n", + "sub.set_ylim(1e-7, None)" ] }, { "cell_type": "code", "execution_count": null, - "id": "e02136c3", + "id": "6d514476", "metadata": {}, "outputs": [], "source": []