diff --git a/docs/conf.py b/docs/conf.py index 17a3a878..8fddda7c 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -199,7 +199,7 @@ def run_apidoc(_): from sphinx.ext.apidoc import main as apidoc_main cur_dir = os.path.normpath(os.path.dirname(__file__)) output_path = os.path.join(cur_dir, 'api') - modules = os.path.normpath(os.path.join(cur_dir, "../rail")) + modules = os.path.normpath(os.path.join(cur_dir, "../src/rail")) paramlist = ['--separate', '--implicit-namespaces', '--no-toc', '-f', '-M', '-o', output_path, modules] apidoc_main(paramlist) diff --git a/examples/core/FileIO_DataStore.ipynb b/examples/core/FileIO_DataStore.ipynb index 07aa2e46..7042f938 100644 --- a/examples/core/FileIO_DataStore.ipynb +++ b/examples/core/FileIO_DataStore.ipynb @@ -54,8 +54,8 @@ "outputs": [], "source": [ "from rail.core.utils import RAILDIR\n", - "trainFile = os.path.join(RAILDIR, 'tests/data/test_dc2_training_9816.hdf5')\n", - "testFile = os.path.join(RAILDIR, 'tests/data/test_dc2_validation_9816.hdf5')\n", + "trainFile = os.path.join(RAILDIR, 'rail/examples/testdata/test_dc2_training_9816.hdf5')\n", + "testFile = os.path.join(RAILDIR, 'rail/examples/testdata/test_dc2_validation_9816.hdf5')\n", "\n", "traindata_io = tables_io.read(trainFile)[\"photometry\"]" ] @@ -386,7 +386,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.12" + "version": "3.9.7" } }, "nbformat": 4, diff --git a/examples/core/Pipe_Example.ipynb b/examples/core/Pipe_Example.ipynb index cfe88491..cca90d67 100644 --- a/examples/core/Pipe_Example.ipynb +++ b/examples/core/Pipe_Example.ipynb @@ -75,7 +75,7 @@ "outputs": [], "source": [ "from rail.core.utils import RAILDIR\n", - "flow_file = os.path.join(RAILDIR, 'examples/goldenspike/data/pretrained_flow.pkl')\n", + "flow_file = os.path.join(RAILDIR, 'rail/examples/goldenspike/data/pretrained_flow.pkl')\n", "bands = ['u','g','r','i','z','y']\n", "band_dict = {band:f'mag_{band}_lsst' for band in bands}\n", "rename_dict = {f'mag_{band}_lsst_err':f'mag_err_{band}_lsst' for band in bands}\n", @@ -317,7 +317,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.12" + "version": "3.9.7" } }, "nbformat": 4, diff --git a/examples/core/hyperbolic_magnitude_test.ipynb b/examples/core/hyperbolic_magnitude_test.ipynb index af079311..fd17aaed 100644 --- a/examples/core/hyperbolic_magnitude_test.ipynb +++ b/examples/core/hyperbolic_magnitude_test.ipynb @@ -67,7 +67,7 @@ "outputs": [], "source": [ "from rail.core.utils import RAILDIR\n", - "testFile = os.path.join(RAILDIR, 'tests', 'data', 'test_dc2_training_9816.pq')\n", + "testFile = os.path.join(RAILDIR, 'rail', 'examples', 'testdata', 'test_dc2_training_9816.pq')\n", "test_mags = DS.read_file(\"test_data\", TableHandle, testFile)" ] }, @@ -228,7 +228,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.12" + "version": "3.9.7" } }, "nbformat": 4, diff --git a/examples/core/iterator_test.ipynb b/examples/core/iterator_test.ipynb index ebf7b538..a17e65f6 100644 --- a/examples/core/iterator_test.ipynb +++ b/examples/core/iterator_test.ipynb @@ -69,7 +69,7 @@ "outputs": [], "source": [ "from rail.core.utils import RAILDIR\n", - "pdfs_file = os.path.join(RAILDIR, \"tests/data/test_dc2_training_9816.hdf5\")" + "pdfs_file = os.path.join(RAILDIR, \"rail/examples/testdata/test_dc2_training_9816.hdf5\")" ] }, { @@ -209,7 +209,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.12" + "version": "3.9.7" } }, "nbformat": 4, diff --git a/examples/estimation/NZDir.ipynb b/examples/estimation/NZDir.ipynb index 5c2ffd2a..c22ac64b 100644 --- a/examples/estimation/NZDir.ipynb +++ b/examples/estimation/NZDir.ipynb @@ -78,8 +78,8 @@ "outputs": [], "source": [ "from rail.core.utils import RAILDIR\n", - "trainFile = os.path.join(RAILDIR, 'tests/data/test_dc2_training_9816.hdf5')\n", - "testFile = os.path.join(RAILDIR, 'tests/data/test_dc2_validation_9816.hdf5')\n", + "trainFile = os.path.join(RAILDIR, 'rail/examples/testdata/test_dc2_training_9816.hdf5')\n", + "testFile = os.path.join(RAILDIR, 'rail/examples/testdata/test_dc2_validation_9816.hdf5')\n", "training_data = DS.read_file(\"training_data\", TableHandle, trainFile)" ] }, @@ -464,9 +464,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "mvrail", "language": "python", - "name": "python3" + "name": "mvrail" }, "language_info": { "codemirror_mode": { @@ -478,7 +478,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.12" + "version": "3.9.13" } }, "nbformat": 4, diff --git a/examples/estimation/RAIL_estimation_demo.ipynb b/examples/estimation/RAIL_estimation_demo.ipynb index 9d740837..c23613d1 100644 --- a/examples/estimation/RAIL_estimation_demo.ipynb +++ b/examples/estimation/RAIL_estimation_demo.ipynb @@ -161,8 +161,8 @@ "outputs": [], "source": [ "from rail.core.utils import RAILDIR\n", - "trainFile = os.path.join(RAILDIR, 'tests/data/test_dc2_training_9816.hdf5')\n", - "testFile = os.path.join(RAILDIR, 'tests/data/test_dc2_validation_9816.hdf5')\n", + "trainFile = os.path.join(RAILDIR, 'rail/examples/testdata/test_dc2_training_9816.hdf5')\n", + "testFile = os.path.join(RAILDIR, 'rail/examples/testdata/test_dc2_validation_9816.hdf5')\n", "training_data = DS.read_file(\"training_data\", TableHandle, trainFile)\n", "test_data = DS.read_file(\"test_data\", TableHandle, testFile)" ] @@ -506,9 +506,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "mvrail", "language": "python", - "name": "python3" + "name": "mvrail" }, "language_info": { "codemirror_mode": { @@ -520,7 +520,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.12" + "version": "3.9.13" } }, "nbformat": 4, diff --git a/examples/estimation/SimpleSOM_demo.ipynb b/examples/estimation/SimpleSOM_demo.ipynb index 39bb170a..e22e4e5d 100644 --- a/examples/estimation/SimpleSOM_demo.ipynb +++ b/examples/estimation/SimpleSOM_demo.ipynb @@ -683,9 +683,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "mvrail", "language": "python", - "name": "python3" + "name": "mvrail" }, "language_info": { "codemirror_mode": { @@ -697,7 +697,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.7" + "version": "3.9.13" } }, "nbformat": 4, diff --git a/examples/estimation/test_sampled_summarizers.ipynb b/examples/estimation/test_sampled_summarizers.ipynb index 1a5d3298..f31cb5de 100644 --- a/examples/estimation/test_sampled_summarizers.ipynb +++ b/examples/estimation/test_sampled_summarizers.ipynb @@ -11,7 +11,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "96186af9-95cb-446d-bfa6-93e3508a9d29", "metadata": {}, "outputs": [], @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "982ac396-9707-4cd2-bcf5-56c526c91691", "metadata": {}, "outputs": [], @@ -37,7 +37,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "b00c147b-5cef-4d78-932e-7ae7df6dbf24", "metadata": {}, "outputs": [], @@ -52,7 +52,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "f1c7174c-f618-411a-aaee-873dabfaa5a1", "metadata": {}, "outputs": [], @@ -62,7 +62,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "597e6b52-76be-41a7-a5e4-9d9b9472b477", "metadata": {}, "outputs": [], @@ -81,7 +81,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "ead0f0f0-a38a-42ec-b4f6-696127439140", "metadata": {}, "outputs": [], @@ -93,7 +93,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "dc9ef13c-0ab5-4b5e-ae67-d138854be4c7", "metadata": {}, "outputs": [], @@ -103,52 +103,25 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "0ecdeb24-b5d9-4985-8968-a87158a53757", "metadata": {}, "outputs": [], "source": [ "# Load up the example healpix 9816 data and stick in the DataStore\n", "from rail.core.utils import RAILDIR\n", - "trainFile = os.path.join(RAILDIR, 'tests/data/test_dc2_training_9816.hdf5')\n", - "testFile = os.path.join(RAILDIR, 'tests/data/test_dc2_validation_9816.hdf5')\n", + "trainFile = os.path.join(RAILDIR, 'rail/examples/testdata/test_dc2_training_9816.hdf5')\n", + "testFile = os.path.join(RAILDIR, 'rail/examples/testdata/test_dc2_validation_9816.hdf5')\n", "training_data = DS.read_file(\"training_data\", TableHandle, trainFile)\n", "test_data = DS.read_file(\"test_data\", TableHandle, testFile)" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "2920e65c-776f-43f9-b96c-f88ac29ee460", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "split into 7669 training and 2556 validation samples\n", - "finding best fit sigma and NNeigh...\n", - "\n", - "\n", - "\n", - "best fit values are sigma=0.03 and numneigh=6\n", - "\n", - "\n", - "\n", - "Inserting handle into data store. model_inform_KNN: inprogress_demo_knn.pkl, inform_KNN\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# train knnpz\n", "pz_train.inform(training_data)" @@ -156,24 +129,10 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "a663b2c6-2163-4efb-ae32-413f0e40790b", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Process 0 running estimator on chunk 0 - 10000\n", - "Process 0 estimating PZ PDF for rows 0 - 10,000\n", - "Inserting handle into data store. output_KNN: inprogress_output_KNN.hdf5, KNN\n", - "Process 0 running estimator on chunk 10000 - 20000\n", - "Process 0 estimating PZ PDF for rows 10,000 - 20,000\n", - "Process 0 running estimator on chunk 20000 - 20449\n", - "Process 0 estimating PZ PDF for rows 20,000 - 20,449\n" - ] - } - ], + "outputs": [], "source": [ "pz = KNearNeighPDF.make_stage(name='KNN', hdf5_groupname='photometry',\n", " model=pz_train.get_handle('model'))\n", @@ -202,7 +161,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "62bc3867-d992-428f-abb5-8f019fb18ace", "metadata": {}, "outputs": [], @@ -212,19 +171,10 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "e73b373d-54be-4ea3-9e1c-1f6384d2caf7", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Inserting handle into data store. output: inprogress_Naive_samples.hdf5, NaiveStack\n", - "Inserting handle into data store. single_NZ: inprogress_NaiveStack_NZ.hdf5, NaiveStack\n" - ] - } - ], + "outputs": [], "source": [ "naive_results = stacker.summarize(qp_data)" ] @@ -239,7 +189,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "id": "cf94b5f1-7604-4735-a157-0dfd4388eba6", "metadata": {}, "outputs": [], @@ -249,33 +199,10 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "9a59607d-6ded-4f95-bb31-13d03176fa94", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig, axs = plt.subplots(figsize=(8,6))\n", "for i in range(0, 20, 2):\n", @@ -295,33 +222,10 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "id": "21e53742-01ac-46c6-a2cd-bcccec1c66b7", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "naive_nz = qp.read(\"NaiveStack_NZ.hdf5\")\n", "naive_nz.plot_native(xlim=(0,3))" @@ -339,7 +243,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "id": "6f3b1cd9-61d8-42ce-882b-db8ab17f4512", "metadata": {}, "outputs": [], @@ -349,21 +253,10 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "id": "164752a4-e015-40b3-9261-396c58b005aa", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Inserting handle into data store. output: inprogress_point_samples.hdf5, PointEstimateHist\n", - "Inserting handle into data store. single_NZ: inprogress_point_NZ.hdf5, PointEstimateHist\n", - "CPU times: user 22.6 ms, sys: 62.9 ms, total: 85.5 ms\n", - "Wall time: 28.2 ms\n" - ] - } - ], + "outputs": [], "source": [ "%%time\n", "pointy_results = pointy.summarize(qp_data)" @@ -371,7 +264,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "id": "a2a12cb5-9b20-4d19-8807-e76f692b81da", "metadata": {}, "outputs": [], @@ -381,33 +274,10 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "id": "5b9f8319-90b4-4cf3-9692-3f043cdfb21f", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig, axs = plt.subplots(figsize=(8,6))\n", "pens[0].plot_native(axes=axs, fc = [0, 0, 1, 0.01])\n", @@ -437,7 +307,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "id": "e76d50d0-fc3f-4adb-a63c-f45dba5bb550", "metadata": {}, "outputs": [], @@ -448,21 +318,10 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "id": "326e2d0d-b615-4984-b01a-0dc946e3aa64", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Inserting handle into data store. output_test_varinf: inprogress_sampletest.hdf5, test_varinf\n", - "Inserting handle into data store. single_NZ_test_varinf: inprogress_varinf_NZ.hdf5, test_varinf\n", - "CPU times: user 1.37 s, sys: 45.3 ms, total: 1.42 s\n", - "Wall time: 1.42 s\n" - ] - } - ], + "outputs": [], "source": [ "%%time\n", "varinf_results = runner.summarize(qp_data)" @@ -470,21 +329,10 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "id": "f3ef0943-278e-4573-98de-e902930451df", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "vens = varinf_results.data\n", "vens" @@ -500,33 +348,10 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "id": "597fba3b-d1b5-44eb-9631-4914e15768da", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "varinf_nz = qp.read(\"varinf_NZ.hdf5\")\n", "varinf_nz.plot_native(xlim=(0,3))" @@ -546,7 +371,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "id": "997b287c-07ba-48a4-9be9-d4e2ad5212ca", "metadata": {}, "outputs": [], @@ -556,35 +381,17 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "id": "d23200cf-041c-4ab2-af06-d0b942442cad", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Inserting handle into data store. model: inprogress_nzdir_model.pkl, Inform_NZDir\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "inf_nz.inform(training_data)" ] }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "id": "fd515f9f-4efa-416a-b6d0-96d088c9150b", "metadata": {}, "outputs": [], @@ -595,26 +402,17 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "id": "f149c641-7644-4b72-a266-f674b9488a83", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Inserting handle into data store. output: inprogress_NZDir_samples.hdf5, NZDir\n", - "Inserting handle into data store. single_NZ: inprogress_NZDir_NZ.hdf5, NZDir\n" - ] - } - ], + "outputs": [], "source": [ "nzd_res = nzd.estimate(test_data)" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "id": "15c59415-a461-4e3a-882b-b89d251cd3b8", "metadata": {}, "outputs": [], @@ -624,7 +422,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "id": "c179fdae-1532-4af4-a82d-853fb1849512", "metadata": {}, "outputs": [], @@ -634,33 +432,10 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "id": "d2256cba-90ce-425c-b891-8e09c8cf871d", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlsAAAHSCAYAAADbkg78AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAA9KklEQVR4nO3df3RU1f3/+9cGQyAECOXH+rAqCnjVJmEmgwkx4po2/LLpB4hR5C5QMFL7oXBN8eNVlO+3rI8/ilourUDQmqJCUFH8aCugYnulN1lgCVLgCzQCVgKRH1crosTQBPmR9/0jmbkBEkjInIQkz4drFjPn7Dlnn50Jvthnz97OzAQAAABvdGjpCgAAALRlhC0AAAAPEbYAAAA8RNgCAADwEGELAADAQ4QtAAAAD13RUifu3bu3DRgwoKVODwAA0GBbt279ysz6XMp7WyxsDRgwQFu2bGmp0wMAADSYc+6zS30vtxEBAAA8RNgCAADwEGELAADAQy02ZgsA0PadOnVKhw4d0okTJ1q6KkCDdO7cWVdeeaWioqIidkzCFgDAM4cOHVK3bt00YMAAOedaujrABZmZjh49qkOHDmngwIEROy63EQEAnjlx4oR69epF0EKr4JxTr169It4TS9gCAHiKoIXWxIvPK2ELAHBZefydj/X4Ox9H7HixsbFnvc7Pz1dOTo4kKS8vTy+//HK97y0sLNTGjRsjVpdIKi0tVZcuXRQIBJSUlKRhw4bpk08+kSRt2bJFM2fObNTxBgwYIJ/Pp0AgoEAg0Oj3p6enM39mPRizBQBot6ZPn37B/YWFhYqNjdWwYcOafK7Tp0/riisi+7/da665Rtu3b5ck/f73v9dTTz2l5cuXKyUlRSkpKY0+XkFBgXr37h3ROoKeLQBAO/bYY4/pN7/5jSQpNzdXCQkJ8vv9mjhxokpLS5WXl6cFCxYoEAhow4YNKi0t1YgRI+T3+zVy5EgdOHBAklRSUqK0tDT5fD7NmTMn3JtWWFioYDCozMxMJSQkSJKysrKUnJysxMRELVmyJFyX2NhYzZo1S4mJiRo1apQ2b96s9PR0DRo0SGvWrLnotXz77bfq2bNn+Lxjx44NX+NPf/rT8LFyc3Mb1Ubp6el65JFHlJqaquuuu04bNmyQJFVWVmrixImKj4/XbbfdpsrKSknSmTNndM8992jw4MHy+XxasGBBo87XFtGzBQBo0yorKxUIBMKvv/76a2VmZp5X7te//rX279+v6OhoHTt2THFxcZo+fbpiY2P10EMPSZLGjRun7OxsZWdna+nSpZo5c6ZWrVql+++/X/fff78mTZqkvLy8s467bds2FRcXh7/dtnTpUn3ve99TZWWlhg4dqvHjx6tXr17617/+pREjRmj+/Pm67bbbNGfOHH3wwQfatWuXsrOz66xzSUmJAoGAysvLVVFRoY8++qjONtizZ48KCgpUXl6u66+/XjNmzKhzaoPhw4erY8eOkqTs7Gw98MADkqp75TZv3qy1a9fq8ccf17p16/T8888rJiZGu3fv1s6dO3XDDTdIkrZv367Dhw+ruLhYknTs2LEL/XjaBXq2AABtWpcuXbR9+/bw44knnqiznN/v11133aVXX3213tt9RUVFuvPOOyVJU6ZM0YcffhjePmHCBEkK7w9JTU09axqB3NxcJSUlKS0tTQcPHtSnn34qSerUqZMyMjIkST6fTz/60Y8UFRUln8+n0tLSOusTuo1YUlKihQsXatq0aXWWGzNmjKKjo9W7d2/17dtX//znP+ssV1BQEG6nUNCSpNtvv12SlJycHK7L+vXrNXny5HDb+f1+SdKgQYO0b98+/eIXv9Cf/vQnde/evc5ztSeELQAAJL333nu67777tG3bNg0dOlSnT5+OyHG7du0afl5YWKh169apqKhIO3bs0JAhQ8LTDERFRYW/CdehQwdFR0eHnzekLpmZmVq/fn2d+0LHkqSOHTs2+tpC72/Ie3v27KkdO3YoPT1deXl5+tnPftaoc7VFhC0AQLtXVVWlgwcPavjw4Zo3b57Kysp0/PhxdevWTeXl5eFyw4YN08qVKyVJK1asUDAYlCSlpaXpD3/4gySF99elrKxMPXv2VExMjPbs2aNNmzZF7Bo+/PBDXXPNNRE73sX88Ic/1GuvvSZJKi4u1s6dOyVJX331laqqqjR+/HjNnTtX27Zta7Y6Xa4YswUAaPfOnDmjyZMnq6ysTGammTNnKi4uTuPGjdMdd9yh1atXa/HixVq8eLGmTp2q+fPnq0+fPlq2bJkkaeHChZo8ebKefPJJZWRkqEePHnWeJyMjQ3l5eYqPj9f111+vtLS0JtU7NGbLzNSpUye9+OKLTTpe7TFbfr//gtNizJgxQ1OnTlV8fLzi4+OVnJwsSTp8+LCmTp2qqqoqSdLTTz/dpDq1Bc7MWuTEKSkpxnwcANC27d69W/Hx8Y16T2iOrUfHJXpRJU9UVFSoS5cucs5p5cqVev3117V69eqWrhYuUV2fW+fcVjNr/HwaomcLAIAm27p1q3JycmRmiouL09KlS1u6SriMELYAAJeV1tSjFRIMBrVjx46WrgYuUwyQBwAA8BA9W2jfIrXgaAuNfQQAXP7o2QIAAPAQYQsAAMBDhC0AQJsWWhQ6JD8/Xzk5OZKkvLy8C84lVVhYqI0bN3pav0tVWlqqwYMHX7TcU0891Qy1OXtR7/qsWrVKu3btavSxz/0ZhnTs2FGBQECDBw/WhAkTVFFRcdb2xMREJSUl6be//W143q/CwkL16NFDgUBAgUBAo0aNanR9GouwBQBoNs5F9tFU06dP1913313v/kiGrUgt/9NYlxK2zpw540FNLj1s1Se07mVxcbE6deoUXgQ8tP3jjz/WBx98oPfff1+PP/54+H3BYDC8BuS6desiVp/6ELYAAO1W7d6Y3NxcJSQkyO/3a+LEiSotLVVeXp4WLFigQCCgDRs2qLS0VCNGjJDf79fIkSN14MABSdUzuaelpcnn82nOnDnhnpjCwkIFg0FlZmYqISFBkpSVlaXk5GQlJiZqyZIl4brExsZq1qxZSkxM1KhRo7R582alp6dr0KBBWrNmzQWvIz8/X7fffrsyMjJ07bXX6uGHH5YkzZ49W5WVlQoEArrrrrskSa+++qpSU1MVCAT085//PBysYmNj9eCDDyopKUlFRUUaMGCAHn74Yfl8PqWmpmrv3r2SVG8b1PbCCy9o6NChSkpK0vjx41VRUaGNGzdqzZo1mjVrlgKBgEpKSlRSUqKMjAwlJycrGAxqz549kqT9+/frpptuCrdnQwSDwXAda+vbt6+WLFmiZ599Vi01kbvMrEUeycnJBrS46u8RNv0BoE67du0663WkfuUa86vXoUMHS0pKCj/69+9v9913n5mZPfroozZ//nwzM+vXr5+dOHHCzMy++eab8/abmY0dO9by8/PNzOyll16yW2+91czMxowZY6+99pqZmT3//PPWtWtXMzMrKCiwmJgY27dvX/gYR48eNTOziooKS0xMtK+++qqmbWRr1641M7OsrCwbPXq0nTx50rZv325JSUnnXdf+/fstMTHRzMyWLVtmAwcOtGPHjlllZaVdddVVduDAATOzcF1CP4+xY8fayZMnzcxsxowZtnz58vD533jjjXDZq6++2ubOnWtmZsuXL7cxY8ZcsA1qt1XomszMfvnLX1pubq6ZmWVnZ9ubb74Z3jdixAj7xz/+YWZmmzZtsuHDh5uZ2bhx48L1evbZZ8+6htpC20+dOmWZmZn2u9/97rxrDunRo4d98cUXVlBQYN27dw9/HkLXWNu5n9ua9tlil5h5mPoBANCmhW4pheTn56uu5eL8fr/uuusuZWVlKSsrq85jFRUV6Y9//KMkacqUKeEepKKiIq1atUqSdOedd+qhhx4Kvyc1NVUDBw4Mv87NzdXbb78tSTp48KA+/fRT9erVS506dVJGRoYkyefzKTo6WlFRUfL5fCotLb3odY4cOTK8JmNCQoI+++wz9e/f/6wyf/nLX7R161YNHTpUklRZWam+fftKqh7nNH78+LPKT5o0KfznAw88cME2qK24uFhz5szRsWPHdPz4cf34xz8+r8zx48e1ceNGTZgwIbztu+++kyT99a9/DS/sPWXKFD3yyCN1XnOo106q7tm6995762ueswSDQb377rsNKhsJhC0AACS99957Wr9+vd555x09+eST+vvf/x6R43bt2jX8vLCwUOvWrVNRUZFiYmKUnp6uEydOSJKioqLkagaidejQQdHR0eHnDRnvFSovVQenut5jZsrOzq5zcejOnTuHF6EOcbUGxrlGDJK75557tGrVKiUlJSk/P1+FhYXnlamqqlJcXNxZQbi+c9fn3CBdn3379qljx47q27evdu/efdHykcaYLQBAu1dVVaWDBw9q+PDhmjdvnsrKynT8+HF169ZN5eXl4XLDhg3TypUrJUkrVqxQMBiUJKWlpYV7YkL761JWVqaePXsqJiZGe/bs0aZNmzy8qmpRUVE6deqUpOrer7feektffvmlJOnrr7/WZ599Vu9733jjjfCfN910k6T626C28vJy9evXT6dOndKKFSvC22u3Z/fu3TVw4EC9+eabkqqDYGjJo5tvvvmsczTFkSNHNH36dOXk5DQqMEYSYQsA0O6dOXNGkydPls/n05AhQzRz5kzFxcVp3Lhxevvtt8MD5BcvXqxly5bJ7/frlVde0aJFiyRJCxcu1DPPPCO/36+9e/eGb+edKyMjQ6dPn1Z8fLxmz56ttLQ0z69t2rRp4VukCQkJ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usoOHDhgZhauS+jnMXbsWDt58qSZmc2YMcOWL18ePv8bb7wRLnv11Vfb3Llzzcxs+fLlNmbMmAu2Qe22Cl2Tmdkvf/lLy83NNTOz7Oxse/PNN8P7RowYYf/4xz/MzGzTpk02fPhwMzMbN25cuF7PPvvsWddQW2j7qVOnLDMz0373u9+dd80hPXr0sC+++MIKCgqse/fu4c9D6BprO/dzW9M+W+wSMw+TmgIA2rTQLaWQ/Px81bVcnN/v11133aWsrCxlZWXVeayioiL98Y9/lCRNmTIl3INUVFSkVatWSZLuvPNOPfTQQ+H3pKamauDAgeHXubm5evvttyVJBw8e1KeffqpevXqpU6dOysjIkCT5fD5FR0crKipKPp9PpaWlF73OkSNHhtdkTEhI0Geffab+/fufVeYvf/mLtm7dqqFDh0qSKisr1bdvX0nV45zGjx9/VvlJkyaF/3zggQcu2Aa1FRcXa86cOTp27JiOHz+uH//4x+eVOX78uDZu3KgJEyaEt3333XeSpL/+9a/hhb2nTJmiRx55pM5rDvXaSdU9W/fee299zXOWYDCod999t0FlI4GwBQCApPfee0/r16/XO++8oyeffFJ///vfI3Lcrl27hp8XFhZq3bp1KioqUkxMjNLT03XixAlJUlRUlFzNeq0dOnRQdHR0+HlDxnuFykvVwamu95iZsrOz61wcunPnzuFFqENcrfVjXSPWkr3nnnu0atUqJSUlKT8/X4WFheeVqaqqUlxc3FlBuL5z1+fcIF2fffv2qWPHjurbt69279590fKRxpgtAEC7V1VVpYMHD2r48OGaN2+eysrKdPz4cXXr1k3l5eXhcsOGDdPKlSslSStWrFAwGJQkpaWlhXtiQvvrUlZWpp49eyomJkZ79uzRpk2bPLyqalFRUTp16pSk6t6vt956S19++aUk6euvv9Znn31W73vfeOON8J833XSTpPrboLby8nL169dPp06d0ooVK8Lba7dn9+7dNXDgQL355puSqoNgaMmjm2+++axzNMWRI0c0ffp05eTkNCowRhJhCwDQ7p05c0aTJ0+Wz+fTkCFDNHPmTMXFxWncuHF6++23wwPkFy9erGXLlsnv9+uVV17RokWLJEkLFy7UM888I7/fr71794Zv550rIyNDp0+fVnx8vGbPnq20tDTPr23atGnhW6QJCQmaO3eu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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig, axs = plt.subplots(figsize=(10,8))\n", "nzd_ens[0].plot_native(axes=axs, fc = [0, 0, 1, 0.01])\n", @@ -680,7 +455,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "id": "7d5a8570-ba5d-4a2e-828a-3d640e9133b9", "metadata": {}, "outputs": [], @@ -690,33 +465,10 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "id": "9af83178-683c-4c79-912a-65dafe1fc159", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "nzdir_nz.plot_native(xlim=(0,3))" ] @@ -733,7 +485,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": null, "id": "cd55a38f-fc53-48b5-b829-4a1db5020f87", "metadata": {}, "outputs": [], @@ -750,61 +502,10 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "id": "d36bded3-3d59-4e5e-9b24-bed8071b6218", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'naive_modes': array([0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9,\n", - " 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9]),\n", - " 'naive_means': array([0.91181168, 0.90735459, 0.91198256, 0.90796814, 0.90609785,\n", - " 0.91363449, 0.91208219, 0.90868338, 0.91490203, 0.9096537 ,\n", - " 0.90930369, 0.91225204, 0.91102506, 0.91439716, 0.90825521,\n", - " 0.90696042, 0.90990002, 0.91181179, 0.90828007, 0.91056608]),\n", - " 'naive_std': array([0.45679176, 0.45798169, 0.45830466, 0.45615621, 0.45818696,\n", - " 0.45807402, 0.45648794, 0.45673673, 0.45854543, 0.45586376,\n", - " 0.46105095, 0.45935186, 0.45404197, 0.45744959, 0.45368225,\n", - " 0.45711631, 0.45556799, 0.4562084 , 0.45416761, 0.45669989]),\n", - " 'point_modes': array([0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9,\n", - " 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9]),\n", - " 'point_means': array([0.90836871, 0.90390311, 0.91052994, 0.90646152, 0.90177765,\n", - " 0.91005046, 0.908977 , 0.90485849, 0.91184672, 0.9067943 ,\n", - " 0.90637565, 0.91000037, 0.90758508, 0.91098438, 0.90527356,\n", - " 0.90417147, 0.90649015, 0.90908435, 0.90516264, 0.90729882]),\n", - " 'point_std': array([0.44545241, 0.44643703, 0.44806838, 0.44608435, 0.44583859,\n", - " 0.44618407, 0.4463507 , 0.44413621, 0.44785992, 0.44417018,\n", - " 0.45018417, 0.44875979, 0.44227159, 0.4452155 , 0.44260923,\n", - " 0.44724115, 0.44320018, 0.44461709, 0.44255925, 0.44434234]),\n", - " 'varinf_modes': array([0.975, 0.975, 0.9 , 0.9 , 0.975, 0.975, 0.975, 0.9 , 0.9 ,\n", - " 0.9 , 0.9 , 0.975, 0.975, 0.975, 0.9 , 0.9 , 0.975, 0.975,\n", - " 0.975, 0.975]),\n", - " 'varinf_means': array([0.89003708, 0.89307693, 0.89277115, 0.89463935, 0.89543388,\n", - " 0.89254021, 0.89440519, 0.89380046, 0.88869788, 0.89036032,\n", - " 0.88893718, 0.88879568, 0.894197 , 0.89541013, 0.89470442,\n", - " 0.89987542, 0.89565805, 0.8903665 , 0.89659266, 0.88920638]),\n", - " 'varinf_std': array([0.41722643, 0.42087048, 0.420144 , 0.41519862, 0.41605415,\n", - " 0.41666614, 0.42031208, 0.41899669, 0.41977039, 0.41903634,\n", - " 0.41588518, 0.42052823, 0.41983733, 0.41822692, 0.41514141,\n", - " 0.42152289, 0.41916418, 0.41652131, 0.41725101, 0.41614731]),\n", - " 'nzdir_modes': array([0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9,\n", - " 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9]),\n", - " 'nzdir_means': array([0.91798956, 0.92176052, 0.91434658, 0.92033863, 0.91362204,\n", - " 0.92948617, 0.92304575, 0.91872134, 0.91385976, 0.92238134,\n", - " 0.9252893 , 0.92597024, 0.92721059, 0.92450514, 0.92192798,\n", - " 0.91739566, 0.92603753, 0.92105897, 0.91872165, 0.9210996 ]),\n", - " 'nzdir_std': array([0.46447022, 0.46621283, 0.46657924, 0.4652038 , 0.46269032,\n", - " 0.46635063, 0.46901116, 0.46889646, 0.46817098, 0.46865234,\n", - " 0.46976555, 0.46632455, 0.46713524, 0.46255762, 0.4702946 ,\n", - " 0.46672201, 0.46883034, 0.46173737, 0.46291822, 0.46649785])}" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "results_dict" ] @@ -819,7 +520,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "id": "21e47e90-aaf5-4845-a447-aea88873a93a", "metadata": {}, "outputs": [], @@ -832,99 +533,30 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "id": "544624cd-2423-4116-bb30-7271d07af5d9", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plt.plot(newgrid, naive_pdf[0])" ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "id": "bdf49c73-ad72-41b2-b857-bc89c1a72e24", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plt.plot(newgrid, point_cdf[0])" ] }, { "cell_type": "code", - "execution_count": 38, + "execution_count": null, "id": "da16ddd0-a003-4a2e-accc-40343ad67d97", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plt.plot(newgrid, var_ppf[0])" ] @@ -941,7 +573,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": null, "id": "4ce39f4f-3100-439b-80db-cfd3c1dd362b", "metadata": {}, "outputs": [], @@ -954,33 +586,10 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": null, "id": "47b779f0-e6ca-457c-a7e3-51693daae476", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsIAAAI/CAYAAAB9Hr8eAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAACIf0lEQVR4nOzdd3xV9f3H8de5N3vvBBKSsMOest0iuHDv1lGtbdVuZ1ttqx3WWn/aYVtbq9a96wJEwIGoIMgmAcIOJCEkhOx5z++PExAVyDmXe5Kb5P18NI9Lcu8n+QS0vP3m+/18DdM0ERERERHpaTyd3YCIiIiISGdQEBYRERGRHklBWERERER6JAVhEREREemRFIRFREREpEdSEBYRERGRHimks75wSkqKmZub21lfXkRERER6iOXLl+81TTP1qx/vtCCcm5vLsmXLOuvLi4iIiEgPYRjG9sN9XFsjRERERKRHUhAWERERkR5JQVhEREREeqRO2yMsIiIi0tmam5spKiqioaGhs1uRAIiIiCArK4vQ0FBbr1cQFhERkR6rqKiI2NhYcnNzMQyjs9uRY2CaJuXl5RQVFdG3b19bNdoaISIiIj1WQ0MDycnJCsHdgGEYJCcnO1rdVxAWERGRHk0huPtw+mepICwiIiIS5M4880wqKyuP+pq7776b+fPn+/X533//fc4++2y/arsy7REWERERCVKmaWKaJrNnz273tffcc08HdNS9aEVYREREpBM9+OCDDB8+nOHDh/PQQw+xbds2Bg8ezFVXXcXw4cPZuXMnubm57N27F4B7772XwYMHM23aNC6//HIeeOABAK655hpefvllwLrB95e//CVjx45lxIgRFBQUALB06VImT57MmDFjmDJlChs2bOicbzpIaEVYREREpJMsX76cxx9/nCVLlmCaJhMnTuTEE09k06ZNPPnkk0yaNOlLr//ss8945ZVXWLVqFc3NzYwdO5Zx48Yd9nOnpKTw+eef88gjj/DAAw/w73//m7y8PBYtWkRISAjz58/nZz/7Ga+88kpHfKtBSUFYREREBPj1m+tYv7sqoJ9zaO84fnnOsCM+/9FHH3H++ecTHR0NwAUXXMCiRYvIycn5WggGWLx4Meeeey4RERFERERwzjnnHPFzX3DBBQCMGzeOV199FYD9+/dz9dVXs2nTJgzDoLm5+Vi+vS5PWyNEREREgsyBYHwswsPDAfB6vbS0tABw1113cfLJJ7N27VrefPPNHn+RiFaERUREROCoK7duOf7447nmmmu44447ME2T1157jaeeeopHH330sK+fOnUq3/nOd7jzzjtpaWnhrbfe4oYbbrD99fbv309mZiYATzzxRCC+hS5NK8IiIiIinWTs2LFcc801TJgwgYkTJ3L99deTmJh4xNcfd9xxzJo1i5EjR3LGGWcwYsQI4uPjbX+92267jTvvvJMxY8YcXCXuyQzTNDvlC48fP95ctmxZp3xtEREREYD8/HyGDBnS2W04UlNTQ0xMDHV1dZxwwgk8+uijjB07trPbChqH+zM1DGO5aZrjv/pabY0QERER6UJuuOEG1q9fT0NDA1dffbVC8DFQEBYRERHpQp599tnObqHbaHePsGEY/zEMY49hGGuP8LxhGMafDcMoNAxjtWEY+s8SEREREQl6dg7LPQHMPMrzZwAD295uAP5+7G2JiIiIiLir3SBsmuaHQMVRXnIu8F/T8imQYBhGr0A1KCIiIiLihkCMT8sEdh7yflHbx0REREREglaHzhE2DOMGwzCWGYaxrKysrCO/tEi39uTH27jlpVW0tPo6uxUREQmA3Nxc9u7d+7WPv/HGG9x3330AlJWVMXHiRMaMGcOiRYt45JFHHH+dX/3qVzzwwAN+9fjkk08ycOBABg4cyJNPPnnY11RUVDB9+nQGDhzI9OnT2bdv38Hn3n//fUaPHs2wYcM48cQTAdiwYQOjR48++BYXF8dDDz10sNfMzMyDz82ePduvvg8ViCC8C+hzyPtZbR/7GtM0HzVNc7xpmuNTU1MD8KVFZMmWcn795jpeXl7Eg+9u7Ox2RETERbNmzeKOO+4AYMGCBYwYMYIVK1bQp08fv4KwHSeddBLbtm370scqKir49a9/zZIlS1i6dCm//vWvvxRyD7jvvvs49dRT2bRpE6eeeurBEF9ZWcmNN97IG2+8wbp163jppZcAGDx4MCtXrmTlypUsX76cqKgozj///IOf78c//vHB588888xj/t4CEYTfAK5qmx4xCdhvmmZxAD6viLRjf10zP35hJdlJUVwwJpNH3t/MwoLSzm5LRERsqq2t5ayzzmLUqFEMHz6cF1544eBzf/nLXxg7diwjRoygoKAAsK5Fvvnmm1m5ciW33XYbr7/+OqNHj+b2229n8+bNjB49mltvvRWAP/7xjxx33HGMHDmSX/7ylwc/729/+1sGDRrEtGnT2LBhg199v/POO0yfPp2kpCQSExOZPn06c+fO/drrXn/9da6++moArr76av73v/8B1gi4Cy64gOzsbADS0tK+VrtgwQL69+9PTk6OXz3a0e4cYcMwngNOAlIMwygCfgmEApim+Q9gNnAmUAjUAde61ayIfME0Te58bTV7qht55XtTGJwRS0FJNT9+YRVv/2AaWYlR9j5RVTFsXgijLgOP192mRUTkS+bOnUvv3r15++23Adi/f//B51JSUvj888955JFHeOCBB/j3v/998LnRo0dzzz33sGzZMv7617+ybds21q1bx8qVKwGYN28emzZtYunSpZimyaxZs/jwww+Jjo7m+eefZ+XKlbS0tDB27FjGjRvnuO9du3bRp88XGwKysrLYtevrGwJKS0vp1cuaoZCRkUFpqbVYs3HjRpqbmznppJOorq7mhz/8IVddddWXap9//nkuv/zyL33sr3/9K//9738ZP348f/rTn456HbUd7QZh0zQvb+d5E7jpmLoQEcde+Gwns9eUcMcZeYzqkwDAI1eO5Zy/fMRNz67gpe9MJiyknR/6lK6Dpy+C6t2w/WOY9RfwdOjRARGR4DHnDihZE9jPmTECzrjviE+PGDGCn/70p9x+++2cffbZHH/88Qefu+CCCwAYN24cr776qqMvO2/ePObNm8eYMWMA61rmTZs2UV1dzfnnn09UlLVYMmvWrMPWP/744zz88MMAFBYWcuaZZxIWFkbfvn157bXXHPVygGEYGIYBQEtLC8uXL2fBggXU19czefJkJk2axKBBgwBoamrijTfe4Pe///3B+u9973vcddddGIbBXXfdxU9/+lP+85//+NXLAfobT6QLKtxTw6/fXM/UAcnccHy/gx/PTYnmjxePZNXOSn43O//on2TL+/CfmYAJ478FK5+G2T8F03S1dxER+cKgQYP4/PPPGTFiBL/4xS+45557Dj4XHh4OgNfrpaWlxdHnNU2TO++88+B+2sLCQq677jrb9ddee+3B2vHjxzN79mxWrlx5MARnZmayc+cXQ8OKiorIzPz60LD09HSKi60ds8XFxQe3QGRlZTFjxgyio6NJSUnhhBNOYNWqVQfr5syZw9ixY0lPT//S5/J6vXg8Hr797W+zdOlSR78n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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig=plt.figure(figsize=(12,10))\n", "plt.plot(def_grid, native_nz[0], label=\"original\")\n", @@ -998,31 +607,17 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": null, "id": "dd9dabcd-0317-40a7-a2f2-eb7fc3eb9386", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([0.91798956, 0.92176052, 0.91434658, 0.92033863, 0.91362204,\n", - " 0.92948617, 0.92304575, 0.91872134, 0.91385976, 0.92238134,\n", - " 0.9252893 , 0.92597024, 0.92721059, 0.92450514, 0.92192798,\n", - " 0.91739566, 0.92603753, 0.92105897, 0.91872165, 0.9210996 ])" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "results_dict['nzdir_means']" ] }, { "cell_type": "code", - "execution_count": 42, + "execution_count": null, "id": "e9018d58-7253-4b94-ae0e-62cf8ca6e0c7", "metadata": {}, "outputs": [], @@ -1032,21 +627,10 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": null, "id": "3994c8c8-9bc7-4016-8946-bf720afd9679", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.0043607326241909454" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "spread" ] @@ -1084,7 +668,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.12" + "version": "3.9.7" } }, "nbformat": 4, diff --git a/examples/evaluation/demo.ipynb b/examples/evaluation/demo.ipynb index e0f92544..af141147 100644 --- a/examples/evaluation/demo.ipynb +++ b/examples/evaluation/demo.ipynb @@ -85,11 +85,11 @@ "### Photo-z Results\n", "#### Run FZBoost\n", "\n", - "Go to dir `/RAIL/examples/estimation/` and run the notebook `RAIL_estimation_demo.ipynb`, this will produce a file `output_fzboost.fits`\n", + "Go to dir `/RAIL/examples/estimation/` (i.e. \"../estimation\" relative to the directory you are running this notebook) and run the notebook `RAIL_estimation_demo.ipynb`, this will produce a file `output_fzboost.fits`\n", "\n", "writen at the location:
\n", "`/RAIL/examples/estimation/output_fzboost.fits`. \n", - "This will read in the FZBoost PDF results as a qp Ensemble.\n" + "This will run FZBoost and write out the PDF results as a qp Ensemble that we will then use in this example notebook.\n" ] }, { @@ -106,8 +106,8 @@ "outputs": [], "source": [ "from rail.core.utils import RAILDIR\n", - "pdfs_file = os.path.join(RAILDIR, \"examples/estimation/output_fzboost.hdf5\")\n", - "ztrue_file = os.path.join(RAILDIR, \"tests/data/test_dc2_validation_9816.hdf5\")" + "pdfs_file = \"../estimation/output_fzboost.hdf5\"\n", + "ztrue_file = os.path.join(RAILDIR, 'rail/examples/testdata/test_dc2_validation_9816.hdf5')" ] }, { @@ -597,7 +597,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.12" + "version": "3.9.7" } }, "nbformat": 4, diff --git a/examples/goldenspike/goldenspike.ipynb b/examples/goldenspike/goldenspike.ipynb index 08ac6ca3..12d82276 100644 --- a/examples/goldenspike/goldenspike.ipynb +++ b/examples/goldenspike/goldenspike.ipynb @@ -765,9 +765,9 @@ ], "metadata": { "kernelspec": { - "display_name": "testcreation", + "display_name": "mvrail", "language": "python", - "name": "testcreation" + "name": "mvrail" }, "language_info": { "codemirror_mode": { diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..4bc50bed --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,142 @@ +[project] +name = "pz-rail" +description = "Redshift Assessment Infrastructure Layers" +readme = "README.rst" +requires-python = ">=3.8" +license = { file = "LICENSE" } +authors = [ + { name = "The LSST DESC PZ WG", email = "aimalz@nyu.edu" } +] +classifiers = [ + "Development Status :: 4 - Beta", + "License :: OSI Approved :: MIT License", + "Intended Audience :: Developers", + "Intended Audience :: Science/Research", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Natural Language :: English", + "Operating System :: POSIX" +] +dynamic = ["version"] +dependencies = [ + "h5py", + "numpy", + "pandas>=1.1", + "tables-io>=0.7.5", + "ceci>=1.10.1", + "pyyaml", + "minisom", + "scipy>=1.9.0", + "pz-hyperbolic-temp", + "qp-prob", + "sklearn", + "pzflow", +] + +[project.optional-dependencies] +dev = [ + "coverage", + "pylint", + "pytest", + "pytest-cov", + "yamllint", +] + +[build-system] +requires = ["setuptools>=61", "wheel", "setuptools_scm[toml]>=6.2"] +build-backend = "setuptools.build_meta" + +[tool.setuptools_scm] +write_to = "src/rail/core/_version.py" + +[tool.setuptools.package-data] +"rail.examples.estimation.data.AB" = ["*.txt"] +"rail.examples.estimation.data.FILTER" = ["*.res"] +"rail.examples.estimation.data.SED" = ["*.sed", "*.list"] +"rail.examples.estimation" = ["*.pkl"] +"rail.examples.creation.configs" = ["*.yaml"] +"rail.examples.creation.data" = ["*.pkl", "*.hdf5"] +"rail.examples.creation.success_rate_data" = ["*.txt"] +"rail.examples.goldenspike" = ["*.yaml"] +"rail.examples.goldenspike.data" = ["*.pkl", "*.pq"] +"rail.examples.testdata" = ["*.ipynb", "*.fits", "*.hdf5", "*.pq", "*.md"] + +[tool.coverage.run] +source = ["src/rail"] +branch = false + +[tool.coverage.report] +show_missing = true +exclude_lines = [ + "pragma: no cover", + "def __repr__", + "if self.debug:", + "if settings.DEBUG", + "raise AssertionError", + "raise NotImplementedError", + "if 0:", + "if __name__ == .__main__.:", + "if TYPE_CHECKING:" +] + +[tool.black] +line-length = 110 +target-version = ["py310"] + +[tool.pydocstyle] +convention = "numpy" +add_select = [ + "D212" # Multi-line docstring summary should start at the first line +] +add-ignore = [ + "D105", # Missing docstring in magic method + "D102", # Missing docstring in public method (needed for docstring inheritance) + "D100", # Missing docstring in public module + # Below are required to allow multi-line summaries. + "D200", # One-line docstring should fit on one line with quotes + "D205", # 1 blank line required between summary line and description + "D400", # First line should end with a period + # Properties shouldn't be written in imperative mode. This will be fixed + # post 6.1.1, see https://github.com/PyCQA/pydocstyle/pull/546 + "D401", +] + +[tool.pylint] +disable = [ + "abstract-method", + "invalid-name", + "too-many-statements", + "missing-module-docstring", + "missing-class-docstring", + "missing-function-docstring", + "too-few-public-methods", + "duplicate-code" +] +max-line-length = 110 +max-locals = 50 +max-branches = 25 +max-public-methods = 50 + +[tool.isort] +profile = "black" +line_length = 110 + +[tool.pytest.ini_options] +addopts = [ + "--cov=rail", + "--cov-report=html" +] +flake8-ignore = "E203" + +[tool.mypy] +disallow_untyped_defs = true +disallow_incomplete_defs = true +ignore_missing_imports = true +namespace_packages = true +plugins = "sqlalchemy.ext.mypy.plugin" +show_error_codes = true +strict_equality = true +warn_redundant_casts = true +warn_unreachable = true +warn_unused_ignores = true diff --git a/setup.py b/setup.py index 3ff26e35..60684932 100644 --- a/setup.py +++ b/setup.py @@ -1,105 +1,3 @@ -from setuptools import find_namespace_packages, setup +from setuptools import setup -# basic dependencies for all RAIL modules -install_requires = [ - "h5py", - "numpy", - "pandas>=1.1", - "tables-io>=0.7.5", - "ceci>=1.10.1", - "pyyaml", - "minisom", - "scipy>=1.9.0", - "pz-hyperbolic-temp", - "qp-prob", -] - -# dependencies for the core module -core_extras = [] - -# dependencies for the Creation module -creation_extras = ["pzflow"] - -# dependencies required for all estimators in the Estimation module -estimation_extras = [] - -# dependencies for specific estimators in the Estimation module -estimation_codes = { - "NN": ["sklearn"], -} - -# dependencies for the Evaluation module -evaluation_extras = [] - - -# compile the extras_require dictionary -extras_require = dict() -extras_require["core"] = core_extras -extras_require["creation"] = creation_extras -extras_require["estimation"] = estimation_extras + list( - set(sum(estimation_codes.values(), [])) -) -for key, values in estimation_codes.items(): - extras_require[key] = estimation_extras + values -extras_require["evaluation"] = evaluation_extras -extras_require["base"] = list( - set( - ( - extras_require["core"] - + extras_require["creation"] - + extras_require["estimation"] - + extras_require["evaluation"] - ) - ) -) - -extras_require["all"] = extras_require["full"] = extras_require["Full"] = extras_require["base"] - - -# setup the rail package! -setup( - name="pz-rail", - author="The LSST DESC PZ WG", - author_email="aimalz@nyu.edu", - packages=find_namespace_packages(), - package_dir={ - "rail": "./rail", - "rail.estimation": "./rail/estimation", - "rail.estimation.algos": "./rail/estimation/algos", - }, - package_data={ - "": [ - "*.hdf5", - "*.yaml", - "*.sed", - "*.res", - "*.AB", - "*.list", - "*.columns", - "*.pkl", - ], - "tests": ["*.hdf5", "*.yaml", "*.columns"], - "examples/estimation/data/SED": ["*.list"], - "examples/estimation/data/AB": ["*.txt"], - "examples/estimation/data/FILTER": ["*.res", "*.txt"], - "examples/goldenspike/data": ["*.pkl"], - }, - include_package_data=True, - license="BSD 3-Clause License", - description="Redshift Assessment Infrastructure Layers", - url="https://github.com/LSSTDESC/RAIL", - long_description=open("README.md").read(), - classifiers=[ - "Development Status :: 4 - Beta", - "Intended Audience :: Developers", - "Intended Audience :: Science/Research", - "Operating System :: OS Independent", - "Programming Language :: Python", - ], - install_requires=install_requires, - extras_require=extras_require, - python_requires=">=3.8", - setup_requires=["setuptools_scm", "pytest-runner"], - use_scm_version={"write_to": "rail/core/_version.py"}, - tests_require=["pytest"], -) +setup() diff --git a/rail/README.md b/src/rail/README.md similarity index 100% rename from rail/README.md rename to src/rail/README.md diff --git a/rail/core/__init__.py b/src/rail/core/__init__.py similarity index 100% rename from rail/core/__init__.py rename to src/rail/core/__init__.py diff --git a/rail/core/algo_utils.py b/src/rail/core/algo_utils.py similarity index 93% rename from rail/core/algo_utils.py rename to src/rail/core/algo_utils.py index 350263e5..7e50aacd 100644 --- a/rail/core/algo_utils.py +++ b/src/rail/core/algo_utils.py @@ -7,8 +7,8 @@ sci_ver_str = scipy.__version__.split('.') -traindata = os.path.join(RAILDIR, 'tests/data/training_100gal.hdf5') -validdata = os.path.join(RAILDIR, 'tests/data/validation_10gal.hdf5') +traindata = os.path.join(RAILDIR, 'rail/examples/testdata/training_100gal.hdf5') +validdata = os.path.join(RAILDIR, 'rail/examples/testdata/validation_10gal.hdf5') DS = RailStage.data_store DS.__class__.allow_overwrite = True diff --git a/rail/core/common_params.py b/src/rail/core/common_params.py similarity index 100% rename from rail/core/common_params.py rename to src/rail/core/common_params.py diff --git a/rail/core/data.py b/src/rail/core/data.py similarity index 100% rename from rail/core/data.py rename to src/rail/core/data.py diff --git a/rail/core/stage.py b/src/rail/core/stage.py similarity index 100% rename from rail/core/stage.py rename to src/rail/core/stage.py diff --git a/rail/core/utilPhotometry.py b/src/rail/core/utilPhotometry.py similarity index 100% rename from rail/core/utilPhotometry.py rename to src/rail/core/utilPhotometry.py diff --git a/rail/core/utilStages.py b/src/rail/core/utilStages.py similarity index 100% rename from rail/core/utilStages.py rename to src/rail/core/utilStages.py diff --git a/rail/core/utils.py b/src/rail/core/utils.py similarity index 100% rename from rail/core/utils.py rename to src/rail/core/utils.py diff --git a/rail/creation/README.md b/src/rail/creation/README.md similarity index 100% rename from rail/creation/README.md rename to src/rail/creation/README.md diff --git a/rail/creation/degradation/__init__.py b/src/rail/creation/degradation/__init__.py similarity index 100% rename from rail/creation/degradation/__init__.py rename to src/rail/creation/degradation/__init__.py diff --git a/rail/creation/degradation/grid_selection.py b/src/rail/creation/degradation/grid_selection.py similarity index 96% rename from rail/creation/degradation/grid_selection.py rename to src/rail/creation/degradation/grid_selection.py index 4e03b58b..d55b5cf7 100644 --- a/rail/creation/degradation/grid_selection.py +++ b/src/rail/creation/degradation/grid_selection.py @@ -1,10 +1,12 @@ """Degraders that emulate spectroscopic effects on photometry""" +import os import numpy as np import pandas as pd import pickle import tables_io from rail.creation.degrader import Degrader +from rail.core.utils import RAILDIR from ceci.config import StageParameter as Param @@ -38,15 +40,17 @@ class GridSelection(Degrader): Aihara, H., AlSayyad, Y., Ando, M., et al. 2019, PASJ, 71, 114 doi: 10.1093/pasj/psz103 """ + def_ratio_file = os.path.join(RAILDIR, "rail/examples/creation/data/hsc_ratios_and_specz.hdf5") + def_set_file = os.path.join(RAILDIR, "rail/examples/creation/data/HSC_grid_settings.pkl" ) name = 'GridSelection' config_options = Degrader.config_options.copy() config_options.update(color_redshift_cut=Param(bool, True, msg='using color-based redshift cut'), percentile_cut=Param(float, 99.0, msg='percentile cut-off for each pixel in color-based redshift cut off'), redshift_cut=Param(float, 100.0, msg="cut redshifts above this value"), - ratio_file=Param(str, './examples/creation/data/hsc_ratios_and_specz.hdf5', + ratio_file=Param(str, def_ratio_file, msg="path to ratio file"), - settings_file=Param(str, './examples/creation/data/HSC_grid_settings.pkl', + settings_file=Param(str, def_set_file, msg='path to pickled parameters file'), random_seed=Param(int, 12345, msg="random seed for reproducibility"), scaling_factor=Param(float, 1.588, msg="multiplicative factor for ratios to adjust number of galaxies kept")) diff --git a/rail/creation/degradation/lsst_error_model.py b/src/rail/creation/degradation/lsst_error_model.py similarity index 100% rename from rail/creation/degradation/lsst_error_model.py rename to src/rail/creation/degradation/lsst_error_model.py diff --git a/rail/creation/degradation/quantityCut.py b/src/rail/creation/degradation/quantityCut.py similarity index 100% rename from rail/creation/degradation/quantityCut.py rename to src/rail/creation/degradation/quantityCut.py diff --git a/rail/creation/degradation/spectroscopic_degraders.py b/src/rail/creation/degradation/spectroscopic_degraders.py similarity index 100% rename from rail/creation/degradation/spectroscopic_degraders.py rename to src/rail/creation/degradation/spectroscopic_degraders.py diff --git a/rail/creation/degradation/spectroscopic_selections.py b/src/rail/creation/degradation/spectroscopic_selections.py similarity index 99% rename from rail/creation/degradation/spectroscopic_selections.py rename to src/rail/creation/degradation/spectroscopic_selections.py index 34a005e6..b6924bbd 100644 --- a/rail/creation/degradation/spectroscopic_selections.py +++ b/src/rail/creation/degradation/spectroscopic_selections.py @@ -6,6 +6,7 @@ from ceci.config import StageParameter as Param from rail.creation.degrader import Degrader from scipy.interpolate import interp1d +from rail.core.utils import RAILDIR class SpecSelection(Degrader): @@ -43,9 +44,8 @@ class SpecSelection(Degrader): ), success_rate_dir=Param( str, - os.path.join( - os.path.dirname(__file__), - "../../../examples/creation/data/success_rate_data", + os.path.join(RAILDIR, + "rail/examples/creation/data/success_rate_data", ), msg="The path to the directory containing success rate files.", ), diff --git a/rail/creation/degrader.py b/src/rail/creation/degrader.py similarity index 100% rename from rail/creation/degrader.py rename to src/rail/creation/degrader.py diff --git a/rail/creation/engine.py b/src/rail/creation/engine.py similarity index 100% rename from rail/creation/engine.py rename to src/rail/creation/engine.py diff --git a/rail/creation/engines/flowEngine.py b/src/rail/creation/engines/flowEngine.py similarity index 100% rename from rail/creation/engines/flowEngine.py rename to src/rail/creation/engines/flowEngine.py diff --git a/rail/estimation/README.md b/src/rail/estimation/README.md similarity index 100% rename from rail/estimation/README.md rename to src/rail/estimation/README.md diff --git a/rail/estimation/algos/NZDir.py b/src/rail/estimation/algos/NZDir.py similarity index 100% rename from rail/estimation/algos/NZDir.py rename to src/rail/estimation/algos/NZDir.py diff --git a/rail/estimation/algos/README.md b/src/rail/estimation/algos/README.md similarity index 100% rename from rail/estimation/algos/README.md rename to src/rail/estimation/algos/README.md diff --git a/rail/estimation/algos/knnpz.py b/src/rail/estimation/algos/knnpz.py similarity index 100% rename from rail/estimation/algos/knnpz.py rename to src/rail/estimation/algos/knnpz.py diff --git a/rail/estimation/algos/naiveStack.py b/src/rail/estimation/algos/naiveStack.py similarity index 100% rename from rail/estimation/algos/naiveStack.py rename to src/rail/estimation/algos/naiveStack.py diff --git a/rail/estimation/algos/pointEstimateHist.py b/src/rail/estimation/algos/pointEstimateHist.py similarity index 100% rename from rail/estimation/algos/pointEstimateHist.py rename to src/rail/estimation/algos/pointEstimateHist.py diff --git a/rail/estimation/algos/pzflow.py b/src/rail/estimation/algos/pzflow.py similarity index 100% rename from rail/estimation/algos/pzflow.py rename to src/rail/estimation/algos/pzflow.py diff --git a/rail/estimation/algos/randomPZ.py b/src/rail/estimation/algos/randomPZ.py similarity index 100% rename from rail/estimation/algos/randomPZ.py rename to src/rail/estimation/algos/randomPZ.py diff --git a/rail/estimation/algos/simpleSOM.py b/src/rail/estimation/algos/simpleSOM.py similarity index 99% rename from rail/estimation/algos/simpleSOM.py rename to src/rail/estimation/algos/simpleSOM.py index 9fc004db..9b5a985c 100644 --- a/rail/estimation/algos/simpleSOM.py +++ b/src/rail/estimation/algos/simpleSOM.py @@ -107,7 +107,7 @@ def run(self): """ if self.config.hdf5_groupname: training_data = self.get_data('input')[self.config.hdf5_groupname] - else: # pragma: no cover + else: # pragma: no cover training_data = self.get_data('input') # replace nondetects for col in self.config.usecols: @@ -237,11 +237,11 @@ def run(self): rng = np.random.default_rng(seed=self.config.seed) if self.config.hdf5_groupname: test_data = self.get_data('input')[self.config.hdf5_groupname] - else: # pragma: no cover + else: # pragma: no cover test_data = self.get_data('input') if self.config.spec_groupname: spec_data = self.get_data('spec_input')[self.config.hdf5_groupname] - else: # pragma: no cover + else: # pragma: no cover spec_data = self.get_data('spec_input') if self.config.redshift_colname not in spec_data.keys(): # pragma: no cover raise ValueError(f"redshift column {self.config.redshift_colname} not found in spec_data") diff --git a/rail/estimation/algos/sklearn_nn.py b/src/rail/estimation/algos/sklearn_nn.py similarity index 100% rename from rail/estimation/algos/sklearn_nn.py rename to src/rail/estimation/algos/sklearn_nn.py diff --git a/rail/estimation/algos/trainZ.py b/src/rail/estimation/algos/trainZ.py similarity index 100% rename from rail/estimation/algos/trainZ.py rename to src/rail/estimation/algos/trainZ.py diff --git a/rail/estimation/algos/varInference.py b/src/rail/estimation/algos/varInference.py similarity index 100% rename from rail/estimation/algos/varInference.py rename to src/rail/estimation/algos/varInference.py diff --git a/rail/estimation/estimator.py b/src/rail/estimation/estimator.py similarity index 100% rename from rail/estimation/estimator.py rename to src/rail/estimation/estimator.py diff --git a/rail/estimation/summarizer.py b/src/rail/estimation/summarizer.py similarity index 100% rename from rail/estimation/summarizer.py rename to src/rail/estimation/summarizer.py diff --git a/rail/evaluation/README.md b/src/rail/evaluation/README.md similarity index 100% rename from rail/evaluation/README.md rename to src/rail/evaluation/README.md diff --git a/rail/evaluation/evaluator.py b/src/rail/evaluation/evaluator.py similarity index 100% rename from rail/evaluation/evaluator.py rename to src/rail/evaluation/evaluator.py diff --git a/rail/evaluation/metrics/base.py b/src/rail/evaluation/metrics/base.py similarity index 100% rename from rail/evaluation/metrics/base.py rename to src/rail/evaluation/metrics/base.py diff --git a/rail/evaluation/metrics/cdeloss.py b/src/rail/evaluation/metrics/cdeloss.py similarity index 100% rename from rail/evaluation/metrics/cdeloss.py rename to src/rail/evaluation/metrics/cdeloss.py diff --git a/rail/evaluation/metrics/pit.py b/src/rail/evaluation/metrics/pit.py similarity index 100% rename from rail/evaluation/metrics/pit.py rename to src/rail/evaluation/metrics/pit.py diff --git a/rail/evaluation/metrics/pointestimates.py b/src/rail/evaluation/metrics/pointestimates.py similarity index 100% rename from rail/evaluation/metrics/pointestimates.py rename to src/rail/evaluation/metrics/pointestimates.py diff --git a/rail/evaluation/utils.py b/src/rail/evaluation/utils.py similarity index 100% rename from rail/evaluation/utils.py rename to src/rail/evaluation/utils.py diff --git a/src/rail/examples/.gitignore b/src/rail/examples/.gitignore new file mode 100644 index 00000000..1a06816d --- /dev/null +++ b/src/rail/examples/.gitignore @@ -0,0 +1 @@ +results diff --git a/src/rail/examples/creation/configs/flowModeler.yaml b/src/rail/examples/creation/configs/flowModeler.yaml new file mode 100644 index 00000000..2a1e20fa --- /dev/null +++ b/src/rail/examples/creation/configs/flowModeler.yaml @@ -0,0 +1,17 @@ +run_params: + class_name: flowModeler + run_name: test_flowModeler + seed: 0 + phys_cols: + "redshift": [0., 3.] + phot_cols: + "mag_u_lsst": [22.79, 27.79] + "mag_g_lsst": [24.04, 29.04] + "mag_r_lsst": [24.06, 29.06] + "mag_i_lsst": [23.62, 28.62] + "mag_z_lsst": [22.98, 27.98] + "mag_y_lsst": [22.05, 27.05] + calc_colors: + ref_column_name: mag_i_lsst + spline_knots: 16 + num_training_epochs: 30 diff --git a/examples/creation/data/HSC_grid_settings.pkl b/src/rail/examples/creation/data/HSC_grid_settings.pkl similarity index 100% rename from examples/creation/data/HSC_grid_settings.pkl rename to src/rail/examples/creation/data/HSC_grid_settings.pkl diff --git a/examples/creation/data/README.md b/src/rail/examples/creation/data/README.md similarity index 100% rename from examples/creation/data/README.md rename to src/rail/examples/creation/data/README.md diff --git a/examples/creation/data/hsc_ratios_and_specz.hdf5 b/src/rail/examples/creation/data/hsc_ratios_and_specz.hdf5 similarity index 100% rename from examples/creation/data/hsc_ratios_and_specz.hdf5 rename to src/rail/examples/creation/data/hsc_ratios_and_specz.hdf5 diff --git a/examples/creation/data/success_rate_data/DEEP2_success.txt b/src/rail/examples/creation/data/success_rate_data/DEEP2_success.txt similarity index 100% rename from examples/creation/data/success_rate_data/DEEP2_success.txt rename to src/rail/examples/creation/data/success_rate_data/DEEP2_success.txt diff --git a/examples/creation/data/success_rate_data/VVDSf02_I_success.txt b/src/rail/examples/creation/data/success_rate_data/VVDSf02_I_success.txt similarity index 100% rename from examples/creation/data/success_rate_data/VVDSf02_I_success.txt rename to src/rail/examples/creation/data/success_rate_data/VVDSf02_I_success.txt diff --git a/examples/creation/data/success_rate_data/VVDSf02_z_bright_success.txt b/src/rail/examples/creation/data/success_rate_data/VVDSf02_z_bright_success.txt similarity index 100% rename from examples/creation/data/success_rate_data/VVDSf02_z_bright_success.txt rename to src/rail/examples/creation/data/success_rate_data/VVDSf02_z_bright_success.txt diff --git a/examples/creation/data/success_rate_data/VVDSf02_z_deep_success.txt b/src/rail/examples/creation/data/success_rate_data/VVDSf02_z_deep_success.txt similarity index 100% rename from examples/creation/data/success_rate_data/VVDSf02_z_deep_success.txt rename to src/rail/examples/creation/data/success_rate_data/VVDSf02_z_deep_success.txt diff --git a/examples/creation/data/success_rate_data/hsc_success.txt b/src/rail/examples/creation/data/success_rate_data/hsc_success.txt similarity index 100% rename from examples/creation/data/success_rate_data/hsc_success.txt rename to src/rail/examples/creation/data/success_rate_data/hsc_success.txt diff --git a/examples/creation/data/success_rate_data/zCOSMOS_success.txt b/src/rail/examples/creation/data/success_rate_data/zCOSMOS_success.txt similarity index 100% rename from examples/creation/data/success_rate_data/zCOSMOS_success.txt rename to src/rail/examples/creation/data/success_rate_data/zCOSMOS_success.txt diff --git a/src/rail/examples/estimation/CWW_HDFN_prior.pkl b/src/rail/examples/estimation/CWW_HDFN_prior.pkl new file mode 100644 index 00000000..1f8335bf Binary files /dev/null and b/src/rail/examples/estimation/CWW_HDFN_prior.pkl differ diff --git a/examples/estimation/data/.gitignore b/src/rail/examples/estimation/data/.gitignore similarity index 100% rename from examples/estimation/data/.gitignore rename to src/rail/examples/estimation/data/.gitignore diff --git a/examples/estimation/data/AB/dummy.txt b/src/rail/examples/estimation/data/AB/dummy.txt similarity index 100% rename from examples/estimation/data/AB/dummy.txt rename to src/rail/examples/estimation/data/AB/dummy.txt diff --git a/examples/estimation/data/FILTER/DC2LSST_g.res b/src/rail/examples/estimation/data/FILTER/DC2LSST_g.res similarity index 100% rename from examples/estimation/data/FILTER/DC2LSST_g.res rename to src/rail/examples/estimation/data/FILTER/DC2LSST_g.res diff --git a/examples/estimation/data/FILTER/DC2LSST_i.res b/src/rail/examples/estimation/data/FILTER/DC2LSST_i.res similarity index 100% rename from examples/estimation/data/FILTER/DC2LSST_i.res rename to src/rail/examples/estimation/data/FILTER/DC2LSST_i.res diff --git a/examples/estimation/data/FILTER/DC2LSST_r.res b/src/rail/examples/estimation/data/FILTER/DC2LSST_r.res similarity index 100% rename from examples/estimation/data/FILTER/DC2LSST_r.res rename to src/rail/examples/estimation/data/FILTER/DC2LSST_r.res diff --git a/examples/estimation/data/FILTER/DC2LSST_u.res b/src/rail/examples/estimation/data/FILTER/DC2LSST_u.res similarity index 100% rename from examples/estimation/data/FILTER/DC2LSST_u.res rename to src/rail/examples/estimation/data/FILTER/DC2LSST_u.res diff --git a/examples/estimation/data/FILTER/DC2LSST_y.res b/src/rail/examples/estimation/data/FILTER/DC2LSST_y.res similarity index 100% rename from examples/estimation/data/FILTER/DC2LSST_y.res rename to src/rail/examples/estimation/data/FILTER/DC2LSST_y.res diff --git a/examples/estimation/data/FILTER/DC2LSST_z.res b/src/rail/examples/estimation/data/FILTER/DC2LSST_z.res similarity index 100% rename from examples/estimation/data/FILTER/DC2LSST_z.res rename to src/rail/examples/estimation/data/FILTER/DC2LSST_z.res diff --git a/examples/estimation/data/SED/CWWSB4.list b/src/rail/examples/estimation/data/SED/CWWSB4.list similarity index 100% rename from examples/estimation/data/SED/CWWSB4.list rename to src/rail/examples/estimation/data/SED/CWWSB4.list diff --git a/examples/estimation/data/SED/El_B2004a.sed b/src/rail/examples/estimation/data/SED/El_B2004a.sed similarity index 100% rename from examples/estimation/data/SED/El_B2004a.sed rename to src/rail/examples/estimation/data/SED/El_B2004a.sed diff --git a/examples/estimation/data/SED/Im_B2004a.sed b/src/rail/examples/estimation/data/SED/Im_B2004a.sed similarity index 100% rename from examples/estimation/data/SED/Im_B2004a.sed rename to src/rail/examples/estimation/data/SED/Im_B2004a.sed diff --git a/examples/estimation/data/SED/SB2_B2004a.sed b/src/rail/examples/estimation/data/SED/SB2_B2004a.sed similarity index 100% rename from examples/estimation/data/SED/SB2_B2004a.sed rename to src/rail/examples/estimation/data/SED/SB2_B2004a.sed diff --git a/examples/estimation/data/SED/SB3_B2004a.sed b/src/rail/examples/estimation/data/SED/SB3_B2004a.sed similarity index 100% rename from examples/estimation/data/SED/SB3_B2004a.sed rename to src/rail/examples/estimation/data/SED/SB3_B2004a.sed diff --git a/examples/estimation/data/SED/Sbc_B2004a.sed b/src/rail/examples/estimation/data/SED/Sbc_B2004a.sed similarity index 100% rename from examples/estimation/data/SED/Sbc_B2004a.sed rename to src/rail/examples/estimation/data/SED/Sbc_B2004a.sed diff --git a/examples/estimation/data/SED/Scd_B2004a.sed b/src/rail/examples/estimation/data/SED/Scd_B2004a.sed similarity index 100% rename from examples/estimation/data/SED/Scd_B2004a.sed rename to src/rail/examples/estimation/data/SED/Scd_B2004a.sed diff --git a/examples/estimation/data/SED/ssp_25Myr_z008.sed b/src/rail/examples/estimation/data/SED/ssp_25Myr_z008.sed similarity index 100% rename from examples/estimation/data/SED/ssp_25Myr_z008.sed rename to src/rail/examples/estimation/data/SED/ssp_25Myr_z008.sed diff --git a/examples/estimation/data/SED/ssp_5Myr_z008.sed b/src/rail/examples/estimation/data/SED/ssp_5Myr_z008.sed similarity index 100% rename from examples/estimation/data/SED/ssp_5Myr_z008.sed rename to src/rail/examples/estimation/data/SED/ssp_5Myr_z008.sed diff --git a/examples/estimation/demo_snn.pkl b/src/rail/examples/estimation/demo_snn.pkl similarity index 100% rename from examples/estimation/demo_snn.pkl rename to src/rail/examples/estimation/demo_snn.pkl diff --git a/examples/goldenspike/data/pretrained_flow.pkl b/src/rail/examples/goldenspike/data/pretrained_flow.pkl similarity index 100% rename from examples/goldenspike/data/pretrained_flow.pkl rename to src/rail/examples/goldenspike/data/pretrained_flow.pkl diff --git a/examples/goldenspike/data/test_flow_data.pq b/src/rail/examples/goldenspike/data/test_flow_data.pq similarity index 100% rename from examples/goldenspike/data/test_flow_data.pq rename to src/rail/examples/goldenspike/data/test_flow_data.pq diff --git a/src/rail/examples/goldenspike/goldenspike.yml b/src/rail/examples/goldenspike/goldenspike.yml new file mode 100644 index 00000000..42360c15 --- /dev/null +++ b/src/rail/examples/goldenspike/goldenspike.yml @@ -0,0 +1,62 @@ +config: examples/goldenspike/goldenspike_config.yml +inputs: + flow: examples/goldenspike/data/pretrained_flow.pkl +log_dir: examples/goldenspike/logs +modules: rail +output_dir: examples/goldenspike/output +resume: false +site: + name: local + max_threads: 2 +stages: +- classname: FlowEngine + name: flow_engine_test + nprocess: 1 +- classname: LSSTErrorModel + name: lsst_error_model_test + nprocess: 1 +- classname: ColumnMapper + name: col_remapper_test + nprocess: 1 +- classname: TableConverter + name: table_conv_test + nprocess: 1 +- classname: FlowEngine + name: flow_engine_train + nprocess: 1 +- classname: LSSTErrorModel + name: lsst_error_model_train + nprocess: 1 +- classname: ColumnMapper + name: col_remapper_train + nprocess: 1 +- classname: TableConverter + name: table_conv_train + nprocess: 1 +- classname: InvRedshiftIncompleteness + name: inv_redshift + nprocess: 1 +- classname: LineConfusion + name: line_confusion + nprocess: 1 +- classname: QuantityCut + name: quantity_cut + nprocess: 1 +- classname: Inform_trainZ + name: inform_trainZ + nprocess: 1 +- classname: Estimator + name: estimate_bpz + nprocess: 1 +- classname: TrainZ + name: estimate_trainZ + nprocess: 1 +- classname: RandomPZ + name: estimate_randomZ + nprocess: 1 +- classname: PointEstimateHist + name: point_estimate_test + nprocess: 1 +- classname: NaiveStack + name: naive_stack_test + nprocess: 1 diff --git a/src/rail/examples/goldenspike/goldenspike_config.yml b/src/rail/examples/goldenspike/goldenspike_config.yml new file mode 100644 index 00000000..eb37ff44 --- /dev/null +++ b/src/rail/examples/goldenspike/goldenspike_config.yml @@ -0,0 +1,330 @@ +col_remapper_test: + aliases: + input: output_quantity_cut + output: output_col_remapper_test + chunk_size: 100000 + columns: &id001 + mag_g_lsst_err: mag_err_g_lsst + mag_i_lsst_err: mag_err_i_lsst + mag_r_lsst_err: mag_err_r_lsst + mag_u_lsst_err: mag_err_u_lsst + mag_y_lsst_err: mag_err_y_lsst + mag_z_lsst_err: mag_err_z_lsst + config: null + inplace: false + input: None + name: col_remapper_test + output_mode: default +col_remapper_train: + aliases: + input: output_lsst_error_model_train + output: output_col_remapper_train + chunk_size: 100000 + columns: *id001 + config: null + hdf5_groupname: '' + inplace: false + input: None + name: col_remapper_train + output_mode: default +estimate_bpz: + aliases: + input: output_table_conv_test + output: output_estimate_bpz + bands: ugrizy + chunk_size: 10000 + columns_file: examples/estimation/configs/test_bpz.columns + config: null + data_path: None + dz: 0.01 + gauss_kernel: 0.0 + hdf5_groupname: '' + input: None + madau_flag: 'no' + mag_err_min: 0.005 + name: estimate_bpz + nzbins: 301 + output_mode: default + p_min: 0.005 + prior_band: mag_i_lsst + prior_file: hdfn_gen + spectra_file: SED/CWWSB4.list + zmax: 3.0 + zmin: 0.0 + zp_errors: + - 0.01 + - 0.01 + - 0.01 + - 0.01 + - 0.01 + - 0.01 +estimate_randomZ: + aliases: + input: output_table_conv_test + output: output_estimate_randomZ + chunk_size: 10000 + config: null + hdf5_groupname: '' + input: None + name: estimate_randomZ + nzbins: 301 + output_mode: default + rand_width: 0.025 + rand_zmax: 3.0 + rand_zmin: 0.0 +estimate_trainZ: + aliases: + input: output_table_conv_test + model: model_inform_trainZ + output: output_estimate_trainZ + chunk_size: 10000 + config: null + hdf5_groupname: '' + input: None + name: estimate_trainZ + nzbins: 301 + output_mode: default + zmax: 3.0 + zmin: 0.0 +flow_engine_test: + aliases: + output: output_flow_engine_test + config: null + flow: examples/goldenspike/data/pretrained_flow.pkl + n_samples: 50 + name: flow_engine_test + output_mode: default + seed: 12345 +flow_engine_train: + aliases: + output: output_flow_engine_train + config: null + flow: examples/goldenspike/data/pretrained_flow.pkl + n_samples: 50 + name: flow_engine_train + output_mode: default + seed: 12345 +inform_trainZ: + aliases: + input: output_table_conv_train + model: model_inform_trainZ + config: null + hdf5_groupname: '' + input: output_table_conv_train.hdf5 + name: inform_trainZ + nzbins: 301 + output_mode: default + save_train: true + zmax: 3.0 + zmin: 0.0 +inv_redshift: + aliases: + input: output_lsst_error_model_test + output: output_inv_redshift + config: null + input: None + name: inv_redshift + output_mode: default + pivot_redshift: 1.0 + seed: 12345 +line_confusion: + aliases: + input: output_inv_redshift + output: output_line_confusion + config: null + frac_wrong: 0.05 + input: None + name: line_confusion + output_mode: default + seed: 12345 + true_wavelen: 5007.0 + wrong_wavelen: 3727.0 +lsst_error_model_test: + Cm: + g: 24.42 + i: 24.32 + r: 24.44 + u: 23.09 + y: 23.73 + z: 24.16 + airmass: 1.2 + aliases: + input: output_flow_engine_test + output: output_lsst_error_model_test + bandNames: + g: mag_g_lsst + i: mag_i_lsst + r: mag_r_lsst + u: mag_u_lsst + y: mag_y_lsst + z: mag_z_lsst + config: null + extendedSource: 0.0 + gamma: + g: 0.039 + i: 0.039 + r: 0.039 + u: 0.038 + y: 0.039 + z: 0.039 + highSNR: false + input: None + km: + g: 0.213 + i: 0.096 + r: 0.126 + u: 0.491 + y: 0.17 + z: 0.069 + m5: {} + magLim: 30.0 + msky: + g: 22.26 + i: 20.48 + r: 21.2 + u: 22.99 + y: 18.61 + z: 19.6 + nVisYr: + g: 8.0 + i: 18.4 + r: 18.4 + u: 5.6 + y: 16.0 + z: 16.0 + nYrObs: 10.0 + name: lsst_error_model_test + ndFlag: .nan + output_mode: default + seed: 12345 + sigmaSys: 0.005 + theta: + g: 0.77 + i: 0.71 + r: 0.73 + u: 0.81 + y: 0.68 + z: 0.69 + tvis: 30.0 +lsst_error_model_train: + Cm: + g: 24.42 + i: 24.32 + r: 24.44 + u: 23.09 + y: 23.73 + z: 24.16 + airmass: 1.2 + aliases: + input: output_flow_engine_train + output: output_lsst_error_model_train + bandNames: + g: mag_g_lsst + i: mag_i_lsst + r: mag_r_lsst + u: mag_u_lsst + y: mag_y_lsst + z: mag_z_lsst + config: null + extendedSource: 0.0 + gamma: + g: 0.039 + i: 0.039 + r: 0.039 + u: 0.038 + y: 0.039 + z: 0.039 + highSNR: false + input: None + km: + g: 0.213 + i: 0.096 + r: 0.126 + u: 0.491 + y: 0.17 + z: 0.069 + m5: {} + magLim: 30.0 + msky: + g: 22.26 + i: 20.48 + r: 21.2 + u: 22.99 + y: 18.61 + z: 19.6 + nVisYr: + g: 8.0 + i: 18.4 + r: 18.4 + u: 5.6 + y: 16.0 + z: 16.0 + nYrObs: 10.0 + name: lsst_error_model_train + ndFlag: .nan + output_mode: default + seed: 12345 + sigmaSys: 0.005 + theta: + g: 0.77 + i: 0.71 + r: 0.73 + u: 0.81 + y: 0.68 + z: 0.69 + tvis: 30.0 +naive_stack_test: + aliases: + input: output_estimate_bpz + output: output_naive_stack_test + chunk_size: 10000 + config: null + input: None + name: naive_stack_test + nzbins: 301 + output_mode: default + zmax: 3.0 + zmin: 0.0 +point_estimate_test: + aliases: + input: output_estimate_bpz + output: output_point_estimate_test + chunk_size: 10000 + config: null + input: None + name: point_estimate_test + nzbins: 301 + output_mode: default + point_estimate: zmode + zmax: 3.0 + zmin: 0.0 +quantity_cut: + aliases: + input: output_line_confusion + output: output_quantity_cut + config: null + cuts: + mag_i_lsst: 25.3 + input: None + name: quantity_cut + output_mode: default + seed: 12345 +table_conv_test: + aliases: + input: output_col_remapper_test + output: output_table_conv_test + config: null + input: None + name: table_conv_test + output_format: numpyDict + output_mode: default +table_conv_train: + aliases: + input: output_col_remapper_train + output: output_table_conv_train + config: null + input: None + name: table_conv_train + output_format: numpyDict + output_mode: default + seed: 12345 diff --git a/tests/data/README.md b/src/rail/examples/testdata/README.md similarity index 100% rename from tests/data/README.md rename to src/rail/examples/testdata/README.md diff --git a/tests/data/make_rail_sample_data.ipynb b/src/rail/examples/testdata/make_rail_sample_data.ipynb similarity index 100% rename from tests/data/make_rail_sample_data.ipynb rename to src/rail/examples/testdata/make_rail_sample_data.ipynb diff --git a/tests/data/output_BPZ_lite.fits b/src/rail/examples/testdata/output_BPZ_lite.fits similarity index 100% rename from tests/data/output_BPZ_lite.fits rename to src/rail/examples/testdata/output_BPZ_lite.fits diff --git a/tests/data/test_dc2_training_9816.hdf5 b/src/rail/examples/testdata/test_dc2_training_9816.hdf5 similarity index 100% rename from tests/data/test_dc2_training_9816.hdf5 rename to src/rail/examples/testdata/test_dc2_training_9816.hdf5 diff --git a/tests/data/test_dc2_training_9816.pq b/src/rail/examples/testdata/test_dc2_training_9816.pq similarity index 100% rename from tests/data/test_dc2_training_9816.pq rename to src/rail/examples/testdata/test_dc2_training_9816.pq diff --git a/tests/data/test_dc2_training_9816_hyperbolic.pq b/src/rail/examples/testdata/test_dc2_training_9816_hyperbolic.pq similarity index 100% rename from tests/data/test_dc2_training_9816_hyperbolic.pq rename to src/rail/examples/testdata/test_dc2_training_9816_hyperbolic.pq diff --git a/tests/data/test_dc2_training_9816_smoothing_params.pq b/src/rail/examples/testdata/test_dc2_training_9816_smoothing_params.pq similarity index 100% rename from tests/data/test_dc2_training_9816_smoothing_params.pq rename to src/rail/examples/testdata/test_dc2_training_9816_smoothing_params.pq diff --git a/tests/data/test_dc2_validation_9816.hdf5 b/src/rail/examples/testdata/test_dc2_validation_9816.hdf5 similarity index 100% rename from tests/data/test_dc2_validation_9816.hdf5 rename to src/rail/examples/testdata/test_dc2_validation_9816.hdf5 diff --git a/tests/data/training_100gal.hdf5 b/src/rail/examples/testdata/training_100gal.hdf5 similarity index 100% rename from tests/data/training_100gal.hdf5 rename to src/rail/examples/testdata/training_100gal.hdf5 diff --git a/tests/data/validation_10gal.hdf5 b/src/rail/examples/testdata/validation_10gal.hdf5 similarity index 100% rename from tests/data/validation_10gal.hdf5 rename to src/rail/examples/testdata/validation_10gal.hdf5 diff --git a/tests/base.yaml b/tests/base.yaml deleted file mode 100644 index 8e2c7794..00000000 --- a/tests/base.yaml +++ /dev/null @@ -1,8 +0,0 @@ -base_config: - trainfile: tests/data/test_dc2_training_9816.hdf5 - testfile: tests/data/test_dc2_validation_9816.hdf5 - hdf5_groupname: photometry - chunk_size: 1000 - configpath: ./configs - outpath: ./results - output_format: old diff --git a/tests/delightPZ.yaml b/tests/delightPZ.yaml deleted file mode 100644 index cd381f23..00000000 --- a/tests/delightPZ.yaml +++ /dev/null @@ -1,77 +0,0 @@ -########################################################################################## -# -# RAIL configuration file for delightPZ module -# -# Steering Delight from RAIL -# Used on Vera C. Rubin LSST only estimation -# -# Author : Sylvie Dagoret-Campagne -# Affiliation : IJCLab/IN2P3/CNRS/France -# Creation date : March 2021 -# Last update : May 8th 2021 -# -############################################################################################ -run_params: -# class_name: delightPZ -# run_name: test_delightPZ -#------------------------------------------------ -# redshift range and binning for delight -# dlght_ prepend means a parameter used by Delight -#------------------------------------------------ - dlght_redshiftMin: 0.01 - dlght_redshiftMax: 3.011 - dlght_redshiftNumBinsGPpred: 301 - dlght_redshiftBinSize: 0.01 - dlght_redshiftDisBinSize: 0.2 -#----------------------------------------------- -# Delight input data (Filters and SED templates), note Delight will write inside this directory -# example recommended: -# - DC2 mode : dlght_inputdata: "./examples/estimation/tmp/delight_indata" -# - tutorial mode : dlght_inputdata: "./examples/estimation/tmpsim/delight_indata" -#---------------------------------------------- - dlght_inputdata: "./examples/estimation/tmp/delight_indata" -#--------------------------------------- -# temporary directory for delight work -# example recommended: -# - DC2 mode : tempdir: "./tmp" and tempdatadir: "./examples/estimation/tmp/delight_data" -# - tutorial mode : tempdir: "./tmpsim" and tempdatadir: "./tmpsim/delight_data" -#--------------------------------------- - tempdir: "./examples/estimation/tmp" - tempdatadir: "./examples/estimation/tmp/delight_data" -#---------------------------------------- -# delight configuration file filename -#---------------------------------------- - delightparamfile: "parametersTest.cfg" -#------------------------------------------------------------------------ -# Running mode -# tutorial mode : -# - True : activate internal flux simulation -# - False : activate use of DC2 datasets for training and Validation -#----------------------------------------------------------------------- -# remove tutorial mode! -# dlght_tutorialmode: False -#------------------------------------------------------------------------ -# Filtering of training and Validation dataset -# according flux SNR -#------------------------------------------------------------------------- - flag_filter_training: True - snr_cut_training: 5 - flag_filter_validation: True - snr_cut_validation: 3 -#----------------------------------------------------------------------- -# Special run -# Should not be used -#------------------------------------------------------------------------- -# dlght_calibrateTemplateMixturePrior: True -#------------------------------------------------------------------------- -# Delight hyper-parameters that must be optimized -#--------------------------------------------------------------------------- - zPriorSigma: 0.2 - ellPriorSigma: 0.5 - fluxLuminosityNorm: 1.0 - alpha_C: 1.0e3 - V_C: 0.1 - alpha_L: 1.0e2 - V_L: 0.1 - lineWidthSigma: 20 - diff --git a/tests/test.yaml b/tests/test.yaml deleted file mode 100644 index 6283dad1..00000000 --- a/tests/test.yaml +++ /dev/null @@ -1,8 +0,0 @@ -base_config: - trainfile: tests/data/training_100gal.hdf5 - testfile: tests/data/validation_10gal.hdf5 - hdf5_groupname: photometry - chunk_size: 1000 - configpath: ./configs - outpath: ./results - output_format: old diff --git a/tests/test_algos.py b/tests/test_algos.py index c256447b..ea08b98a 100644 --- a/tests/test_algos.py +++ b/tests/test_algos.py @@ -1,23 +1,13 @@ import numpy as np -import os -import sys -import glob -import pickle import pytest -import yaml -import tables_io from rail.core.stage import RailStage -from rail.core.data import DataStore, TableHandle from rail.core.algo_utils import one_algo -from rail.core.utils import RAILDIR from rail.estimation.algos import randomPZ, sklearn_nn, trainZ from rail.estimation.algos import pzflow, knnpz import scipy.special sci_ver_str = scipy.__version__.split('.') -traindata = os.path.join(RAILDIR, 'tests/data/training_100gal.hdf5') -validdata = os.path.join(RAILDIR, 'tests/data/validation_10gal.hdf5') DS = RailStage.data_store DS.__class__.allow_overwrite = True diff --git a/tests/test_core.py b/tests/test_core.py index 25394348..5ebd68a4 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -22,7 +22,7 @@ def test_util_stages(): DS = RailStage.data_store - datapath = os.path.join(RAILDIR, 'tests', 'data', 'test_dc2_training_9816.pq') + datapath = os.path.join(RAILDIR, 'rail', 'examples', 'testdata', 'test_dc2_training_9816.pq') data = DS.read_file('data', TableHandle, datapath) @@ -84,7 +84,7 @@ def do_data_handle(datapath, handle_class): def test_pq_handle(): - datapath = os.path.join(RAILDIR, 'tests', 'data', 'test_dc2_training_9816.pq') + datapath = os.path.join(RAILDIR, 'rail', 'examples', 'testdata', 'test_dc2_training_9816.pq') handle = do_data_handle(datapath, PqHandle) pqfile = handle.open() assert pqfile @@ -94,7 +94,7 @@ def test_pq_handle(): def test_qp_handle(): - datapath = os.path.join(RAILDIR, 'tests', 'data', 'output_BPZ_lite.fits') + datapath = os.path.join(RAILDIR, 'rail', 'examples', 'testdata', 'output_BPZ_lite.fits') handle = do_data_handle(datapath, QPHandle) qpfile = handle.open() assert qpfile @@ -105,12 +105,12 @@ def test_qp_handle(): def test_hdf5_handle(): - datapath = os.path.join(RAILDIR, 'tests', 'data', 'test_dc2_training_9816.hdf5') + datapath = os.path.join(RAILDIR, 'rail', 'examples', 'testdata', 'test_dc2_training_9816.hdf5') handle = do_data_handle(datapath, Hdf5Handle) with handle.open(mode='r') as f: assert f assert handle.fileObj is not None - datapath_chunked = os.path.join(RAILDIR, 'tests', 'data', 'test_dc2_training_9816_chunked.hdf5') + datapath_chunked = os.path.join(RAILDIR, 'rail', 'examples', 'testdata', 'test_dc2_training_9816_chunked.hdf5') handle_chunked = Hdf5Handle("chunked", handle.data, path=datapath_chunked) from tables_io.arrayUtils import getGroupInputDataLength, sliceDict, getInitializationForODict num_rows = len(handle.data['photometry']['id']) @@ -141,7 +141,7 @@ def test_hdf5_handle(): def test_fits_handle(): - datapath = os.path.join(RAILDIR, 'tests', 'data', 'output_BPZ_lite.fits') + datapath = os.path.join(RAILDIR, 'rail', 'examples', 'testdata', 'output_BPZ_lite.fits') handle = do_data_handle(datapath, FitsHandle) fitsfile = handle.open() assert fitsfile @@ -154,8 +154,8 @@ def test_model_handle(): DS = RailStage.data_store DS.clear() - model_path = os.path.join(RAILDIR, 'examples', 'estimation', 'demo_snn.pkl') - model_path_copy = os.path.join(RAILDIR, 'examples', 'estimation', 'demo_snn_copy.pkl') + model_path = os.path.join(RAILDIR, 'rail', 'examples', 'estimation', 'demo_snn.pkl') + model_path_copy = os.path.join(RAILDIR, 'rail', 'examples', 'estimation', 'demo_snn_copy.pkl') mh = ModelHandle("model", path=model_path) mh2 = ModelHandle("model2", path=model_path) @@ -176,8 +176,8 @@ def test_flow_handle(): DS = RailStage.data_store DS.clear() - flow_path = os.path.join(RAILDIR, 'examples', 'goldenspike', 'data', 'pretrained_flow.pkl') - flow_path_copy = os.path.join(RAILDIR, 'examples', 'goldenspike', 'data', 'pretrained_flow_copy.pkl') + flow_path = os.path.join(RAILDIR, 'rail', 'examples', 'goldenspike', 'data', 'pretrained_flow.pkl') + flow_path_copy = os.path.join(RAILDIR, 'rail', 'examples', 'goldenspike', 'data', 'pretrained_flow_copy.pkl') fh = FlowHandle("flow", path=flow_path) fh2 = FlowHandle("flow2", path=flow_path) @@ -201,7 +201,7 @@ def test_data_hdf5_iter(): DS = RailStage.data_store DS.clear() - datapath = os.path.join(RAILDIR, 'tests', 'data', 'test_dc2_training_9816.hdf5') + datapath = os.path.join(RAILDIR, 'rail', 'examples', 'testdata', 'test_dc2_training_9816.hdf5') #data = DS.read_file('data', TableHandle, datapath) th = Hdf5Handle('data', path=datapath) @@ -228,10 +228,10 @@ def test_data_store(): DS = RailStage.data_store DS.clear() DS.__class__.allow_overwrite = False - datapath_hdf5 = os.path.join(RAILDIR, 'tests', 'data', 'test_dc2_training_9816.hdf5') - datapath_pq = os.path.join(RAILDIR, 'tests', 'data', 'test_dc2_training_9816.pq') - datapath_hdf5_copy = os.path.join(RAILDIR, 'tests', 'data', 'test_dc2_training_9816_copy.hdf5') - datapath_pq_copy = os.path.join(RAILDIR, 'tests', 'data', 'test_dc2_training_9816_copy.pq') + datapath_hdf5 = os.path.join(RAILDIR, 'rail', 'examples', 'testdata', 'test_dc2_training_9816.hdf5') + datapath_pq = os.path.join(RAILDIR, 'rail', 'examples', 'testdata', 'test_dc2_training_9816.pq') + datapath_hdf5_copy = os.path.join(RAILDIR, 'rail', 'examples', 'testdata', 'test_dc2_training_9816_copy.hdf5') + datapath_pq_copy = os.path.join(RAILDIR, 'rail', 'examples', 'testdata', 'test_dc2_training_9816_copy.pq') DS.add_data('hdf5', None, Hdf5Handle, path=datapath_hdf5) DS.add_data('pq', None, PqHandle, path=datapath_pq) @@ -294,7 +294,7 @@ def load_result_smoothing(): DS.clear() DS.__class__.allow_overwrite = False - testFile = os.path.join(RAILDIR, 'tests', 'data', 'test_dc2_training_9816_smoothing_params.pq') + testFile = os.path.join(RAILDIR, 'rail', 'examples', 'testdata', 'test_dc2_training_9816_smoothing_params.pq') return DS.read_file("test_data", TableHandle, testFile).data @@ -346,11 +346,11 @@ def test_HyperbolicSmoothing(hyperbolic_configuration): test_data = DS.read_file( "test_data", TableHandle, os.path.join( - RAILDIR, 'tests', 'data', 'test_dc2_training_9816.pq') + RAILDIR, 'rail', 'examples', 'testdata', 'test_dc2_training_9816.pq') ).data result_smoothing = DS.read_file( "result_smoothing", TableHandle, os.path.join( - RAILDIR, 'tests', 'data', 'test_dc2_training_9816_smoothing_params.pq') + RAILDIR, 'rail', 'examples', 'testdata', 'test_dc2_training_9816_smoothing_params.pq') ).data stage_name, handle_name = 'hyperbolic_smoothing', 'parameters' @@ -371,15 +371,15 @@ def test_HyperbolicMagnitudes(hyperbolic_configuration,): test_data = DS.read_file( "test_data", TableHandle, os.path.join( - RAILDIR, 'tests', 'data', 'test_dc2_training_9816.pq') + RAILDIR, 'rail', 'examples', 'testdata', 'test_dc2_training_9816.pq') ).data result_smoothing = DS.read_file( "result_smoothing", TableHandle, os.path.join( - RAILDIR, 'tests', 'data', 'test_dc2_training_9816_smoothing_params.pq') + RAILDIR, 'rail', 'examples', 'testdata', 'test_dc2_training_9816_smoothing_params.pq') ).data result_hyperbolic = DS.read_file( "result_hyperbolic", TableHandle, os.path.join( - RAILDIR, 'tests', 'data', 'test_dc2_training_9816_hyperbolic.pq') + RAILDIR, 'rail', 'examples', 'testdata', 'test_dc2_training_9816_hyperbolic.pq') ).data stage_name, handle_name = 'hyperbolic_magnitudes', 'output' diff --git a/tests/test_golden.py b/tests/test_golden.py index f68f959a..9d9da625 100644 --- a/tests/test_golden.py +++ b/tests/test_golden.py @@ -17,7 +17,7 @@ def test_goldenspike(): DS.__class__.allow_overwrite = True DS.clear() - flow_file = os.path.join(RAILDIR, 'examples/goldenspike/data/pretrained_flow.pkl') + flow_file = os.path.join(RAILDIR, 'rail/examples/goldenspike/data/pretrained_flow.pkl') print("\n\n\n\n\n\n\n\n\n", flow_file, "\n\n\n\n\n\n\n\n\n") bands = ['u','g','r','i','z','y'] @@ -88,7 +88,7 @@ def test_golden_v2(): DS.clear() pipe = RailPipeline() - flow_file = os.path.join(RAILDIR, 'examples/goldenspike/data/pretrained_flow.pkl') + flow_file = os.path.join(RAILDIR, 'rail/examples/goldenspike/data/pretrained_flow.pkl') bands = ['u','g','r','i','z','y'] band_dict = {band:f'mag_{band}_lsst' for band in bands} rename_dict = {f'mag_{band}_lsst_err':f'mag_err_{band}_lsst' for band in bands} diff --git a/tests/test_nzestimators.py b/tests/test_nzestimators.py index 69c2df3a..90dc5219 100644 --- a/tests/test_nzestimators.py +++ b/tests/test_nzestimators.py @@ -3,10 +3,11 @@ from rail.core.stage import RailStage from rail.core.data import TableHandle from rail.estimation.algos import NZDir +from rail.core.utils import RAILDIR -testszdata = 'tests/data/training_100gal.hdf5' -testphotdata = 'tests/data/validation_10gal.hdf5' +testszdata = os.path.join(RAILDIR, 'rail/examples/testdata/training_100gal.hdf5') +testphotdata = os.path.join(RAILDIR, 'rail/examples/testdata/validation_10gal.hdf5') DS = RailStage.data_store DS.__class__.allow_overwrite = True diff --git a/tests/test_som_summarizers.py b/tests/test_som_summarizers.py index a3753b41..cfe1d01a 100644 --- a/tests/test_som_summarizers.py +++ b/tests/test_som_summarizers.py @@ -5,9 +5,11 @@ from rail.core.data import TableHandle from rail.core.stage import RailStage from rail.estimation.algos import simpleSOM +from rail.core.utils import RAILDIR -testszdata = "tests/data/training_100gal.hdf5" -testphotdata = "tests/data/validation_10gal.hdf5" + +testszdata = os.path.join(RAILDIR, "rail/examples/testdata/training_100gal.hdf5") +testphotdata = os.path.join(RAILDIR, "rail/examples/testdata/validation_10gal.hdf5") DS = RailStage.data_store DS.__class__.allow_overwrite = True @@ -50,7 +52,7 @@ def one_algo(key, inform_class, summarizer_class, summary_kwargs): "spec_input": "som_summarize_test2_spec_input", }, ) - summ_en = summarizer2.summarize(phot_data, spec_data) + _ = summarizer2.summarize(phot_data, spec_data) fid_ens = qp.read( summarizer2.get_output( summarizer2.get_aliased_tag("single_NZ"), final_name=True diff --git a/tests/test_summarizers.py b/tests/test_summarizers.py index 5b41a79a..314d268b 100644 --- a/tests/test_summarizers.py +++ b/tests/test_summarizers.py @@ -6,8 +6,10 @@ from rail.core.data import QPHandle from rail.estimation.algos import naiveStack, pointEstimateHist from rail.estimation.algos import varInference +from rail.core.utils import RAILDIR -testdata = 'tests/data/output_BPZ_lite.fits' + +testdata = os.path.join(RAILDIR, 'rail/examples/testdata/output_BPZ_lite.fits') DS = RailStage.data_store DS.__class__.allow_overwrite = True