From 8f0c7b7c481557189d4f4bf2d526c43c79d7a094 Mon Sep 17 00:00:00 2001 From: Wilson Beebe Date: Fri, 15 Mar 2024 15:19:13 -0700 Subject: [PATCH] Simplify "Working with the Ensemble" Notebook (#401) * Streamline Working with the Ensemble Notebook * Add diagrams of the Ensemble API structure * Centered images and modified links * Fix typos --- .../ensemble_api_structure.png | Bin 0 -> 84193 bytes .../ensemble_frame_hierarchy.png | Bin 0 -> 69579 bytes docs/tutorials/batch_showcase.ipynb | 24 +- .../tutorials/working_with_the_ensemble.ipynb | 684 ++---------------- 4 files changed, 88 insertions(+), 620 deletions(-) create mode 100644 docs/_static/tutorial_images/ensemble_api_structure.png create mode 100644 docs/_static/tutorial_images/ensemble_frame_hierarchy.png diff --git a/docs/_static/tutorial_images/ensemble_api_structure.png b/docs/_static/tutorial_images/ensemble_api_structure.png new file mode 100644 index 0000000000000000000000000000000000000000..53e24686361868f15f63e849dc4ebd7400a68bfe GIT binary patch literal 84193 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." + "
\n", + " \"Visualization\n", + "
\n", + "You can access the individual Source and Object dataframes with `Ensemble.source` and `Ensemble.object` respectively." ] }, { @@ -308,15 +53,7 @@ "metadata": {}, "outputs": [], "source": [ - "ens.to_timeseries(8003).data" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Alternatively, if you aren't interested in a particular lightcurve, you can draw a random one from the `Ensemble` using `Ensemble.select_random_timeseries`." + "ens.source" ] }, { @@ -325,63 +62,27 @@ "metadata": {}, "outputs": [], "source": [ - "ens.select_random_timeseries(seed=1).data" + "ens.object" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Filtering\n", + "## Dask and \"Lazy Evaluation\"\n", "\n", - "The `Ensemble` provides a general filtering function [`query`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html) that mirrors a Pandas or Dask `query` command. Specifically, the function takes a string that provides an expression indicating which rows to **keep**. As with other `Ensemble` functions, an optional `table` parameter allows you to filter on either the object or the source table.\n", + "`TAPE` is built on top of [Dask](https://github.com/dask/dask), a framework for flexible parallelization and data analytics.\n", "\n", - "For example, the following code filters the sources to only include rows with flux values above the median. It uses `ens._flux_col` to retrieve the name of the column with that information." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2023-08-30T14:58:36.698305Z", - "start_time": "2023-08-30T14:58:36.615492Z" - } - }, - "outputs": [], - "source": [ - "highest_flux = ens.source[ens._flux_col].quantile(0.95).compute()\n", - "ens.source.query(f\"{ens._flux_col} < {highest_flux}\").compute()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Alternatively, we could use a Dask dataseries of Booleans to indicate which rows to *keep*. We can often compute these series as the result of some operation on the underlying tables:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2023-08-30T14:58:36.754980Z", - "start_time": "2023-08-30T14:58:36.669055Z" - } - }, - "outputs": [], - "source": [ - "# Find all of the source points with the lowest 90% of errors.\n", - "keep_rows = ens.source[\"error\"] < ens.source[\"error\"].quantile(0.9)\n", - "keep_rows.compute()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We also provide filtering at the `Ensemble` level, so you can pass the above series to the `Ensemble.filter_from_series` function:" + "`TAPE`'s `EnsembleFrame` objects inherit from [Dask dataframes](https://docs.dask.org/en/stable/dataframe.html#dask-dataframe) and support most `Dask` operations.\n", + "\n", + "Note that Source and Object tables are `SourceFrames` and `ObjectFrames` respectively, which are special cases of `EnsembleFrames`.\n", + "
\n", + " \"EnsembleFrame\n", + "
\n", + "\n", + "An important feature of `Dask` is that it evaluates code \"lazily\". This means that many operations are not executed when the line of code is run, but instead are added to a scheduler to be executed when the result is actually needed.\n", + "\n", + "As an example:" ] }, { @@ -389,21 +90,20 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2023-08-30T14:58:36.792088Z", - "start_time": "2023-08-30T14:58:36.690772Z" + "end_time": "2023-08-30T14:58:36.219081Z", + "start_time": "2023-08-30T14:58:36.205629Z" } }, "outputs": [], "source": [ - "ens.filter_from_series(keep_rows, table=\"source\")\n", - "ens.source.compute()" + "ens.source # We have not actually loaded any data into memory" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Additionally, several more specific functions are available for common operations." + "When accessing the Source dataframe above, we only saw an empty dataframe with some high-level information about its schema. To explicitly bring the data into memory, we must run a `compute()` command on the dataframe." ] }, { @@ -411,20 +111,13 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2023-08-30T14:58:37.026887Z", - "start_time": "2023-08-30T14:58:36.715537Z" + "end_time": "2023-08-30T14:58:36.484627Z", + "start_time": "2023-08-30T14:58:36.213215Z" } }, "outputs": [], "source": [ - "# Cleaning nans\n", - "ens.source.dropna() # clean nans from source table\n", - "ens.object.dropna() # clean nans from object table\n", - "\n", - "# Filtering on number of observations\n", - "ens.prune(threshold=10) # threshold is the minimum number of observations needed to retain the object\n", - "\n", - "ens.info(verbose=True)" + "ens.source.compute() # Compute lets Dask know we're ready to bring the data into memory" ] }, { @@ -432,66 +125,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In the above operations, we remove any rows that have at least 1 NaN value present. And then filter such that only lightcurves which have at least 50 measurements are retained." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Sampling\n", + "With this `compute()`, we returned a populated dataframe. \n", "\n", - "In addition to filtering by specific constraints, it's possible to select a subset of your data to work with. `Ensemble.sample` will randomly select a fraction of objects from the full object list. This will return a new\n", - "ensemble object to work with." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "subset_ens = ens.sample(frac=0.5) # select ~half of the objects\n", - "\n", - "print(\"Number of pre-sampled objects: \", len(ens.object))\n", - "print(\"Number of post-sampled objects: \", len(subset_ens.object))" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Column Selection\n", - "\n", - "The `Ensemble` provides a `select` function to filter down to a subset of columns. For example, let's remove a column from the source table." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# We currently have 5 columns\n", - "ens.source" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2023-08-30T14:58:37.096860Z", - "start_time": "2023-08-30T14:58:36.937579Z" - } - }, - "outputs": [], - "source": [ - "# We can use select to just grab a subset of columns\n", - "ens.select([\"time\", \"flux\", \"error\", \"band\"], table=\"source\")\n", - "ens.source" + "Many workflows in `TAPE` use this `Dask` paradigm and will look like a series of lazily evaluated commands that are chained together and then executed with a `compute()` call at the end of the workflow." ] }, { @@ -506,9 +142,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The `Ensemble` is a manager of `EnsembleFrame` objects (of which `Ensemble.source` and `Ensemble.object` are special cases). When performing operations on one of the tables, the results are not automatically sent to the `Ensemble`.\n", + "As discussed above, an `Ensemble` is a manager of `EnsembleFrame` objects (and `Ensemble.source` and `Ensemble.object` are special cases). When performing most operations on one of these tables, the results are not automatically updated to the `Ensemble`.\n", "\n", - "So while in the above examples we demonstrate several methods where we generated filtered views of the source table, note that the underlying data remained unchanged, with no changes to the rows or columns of `Ensemble.source`" + "Here we filter `Ensemble.source` by its flux column (see more examples of filtering using these `Dask`/`Pandas` style operations in [Common Data Operations with TAPE](https://tape.readthedocs.io/en/latest/tutorials/common_data_operations.html#Filtering)), but note there were no changes to the rows of `Ensemble.source`." ] }, { @@ -517,9 +153,9 @@ "metadata": {}, "outputs": [], "source": [ - "queried_src = ens.source.query(f\"{ens._flux_col} < {highest_flux}\")\n", + "filtered_src = ens.source.query(f\"{ens._flux_col} > 15\")\n", "\n", - "print(len(queried_src))\n", + "print(len(filtered_src))\n", "print(len(ens.source))" ] }, @@ -527,13 +163,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "When modifying the views of a dataframe tracked by the `Ensemble`, we can update the `Source` or `Object` frame to use the updated view by calling\n", + "Most dataframe operations will return a result frame that is not yet tracked by the `Ensemble`. When modifying the views of a dataframe tracked by the `Ensemble`, we can update the Source or Object frames to use the updated result frame by calling\n", "\n", - "`Ensemble.update_frame(view_frame)`\n", + "`Ensemble.update_frame(filtered_src)`\n", "\n", "Or alternately:\n", "\n", - "`view_frame.update_ensemble()`" + "`filtered_src.update_ensemble()`" ] }, { @@ -542,8 +178,8 @@ "metadata": {}, "outputs": [], "source": [ - "# Now apply the views filter to the source frame.\n", - "queried_src.update_ensemble()\n", + "# Now apply the filtered result to the Source frame.\n", + "filtered_src.update_ensemble()\n", "\n", "ens.source.compute()" ] @@ -552,57 +188,28 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Note that the above is still a series of lazy operations that will not be fully evaluated until an operation such as `compute`. So a call to `update_ensemble` will not yet alter or move any underlying data." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Assignments and Column Manipulation\n", + "The Source frame now has the number of rows we saw when inspecting the filtered result above.\n", "\n", - "The ensemble object supports assignment through the Dask `assign` function. We can pass in either a callable or a series to assign to the new column. New column names are produced automatically from the argument name.\n", - "\n", - "For example, if we want to compute the lower bound of an error range as the estimated flux minus twice the estimated error, we would use:" + "Note that the above is still a series of lazy operations that will not be fully evaluated until an operation such as `compute()`. So a call to `update_ensemble()` will not yet alter or move any underlying data." ] }, { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2023-08-30T14:58:37.097571Z", - "start_time": "2023-08-30T14:58:36.958927Z" - } - }, - "outputs": [], - "source": [ - "lower_bnd = ens.source.assign(lower_bnd=lambda x: x[\"flux\"] - 2.0 * x[\"error\"])\n", - "lower_bnd" - ] - }, - { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "## Batch Analysis\n", + "# Storing and Accessing Result Frames\n", + "The `Ensemble` provides a powerful batching interface, `Ensemble.batch()`, to perform analysis functions in parallel across your lightcurves.\n", "\n", - "The `Ensemble` provides a powerful batching interface, `Ensemble.batch`, with in-built parallelization (provided the input data is in multiple partitions). In addition, TAPE has a suite of analysis functions on-hand for your use. Below, we show the application of `tape.analysis.calc_stetson_J` on our dataset." + "For the below example, we use the included suite of analysis functions to apply `tape.analysis.calc_stetson_J` on our dataset. (For more info on `Ensemble.batch()`, including providing your own custom functions, see the [Ensemble Batch Showcase](https://tape.readthedocs.io/en/latest/tutorials/batch_showcase.html#) )" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2023-08-30T14:58:37.492980Z", - "start_time": "2023-08-30T14:58:36.981314Z" - } - }, + "metadata": {}, "outputs": [], "source": [ - "# using tape analysis functions\n", + "# using TAPE analysis functions\n", "from tape.analysis import calc_stetson_J\n", "\n", "res = ens.batch(calc_stetson_J)\n", @@ -613,18 +220,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Storing and Accessing Result Frames" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note for the above `batch` operation, we also printed:\n", + "Note for the above `batch` operation, we also printed output in the form of\n", "\n", - "`Using generated label, result_1, for a batch result.`\n", + "```\n", + " \"Using generated label, {label}, for a batch result.\"\n", + "```\n", "\n", - "In addition to the source and object frames, the `Ensemble` may track other frames as well, accessed by either generated or user-provided labels.\n", + "In addition to the Source and Object frames, the `Ensemble` may track other frames as well, accessed by either generated or user-provided labels.\n", "\n", "We can access a saved frame with `Ensemble.select_frame(label)`" ] @@ -705,12 +307,12 @@ "metadata": {}, "outputs": [], "source": [ - "ens.drop_frame(\"result_1\")\n", + "ens.drop_frame(\"new_res\")\n", "\n", "try:\n", - " ens.select_frame(\"result_1\") # This should result in a KeyError since the frame has been dropped.\n", + " ens.select_frame(\"new_res\") # This should result in a KeyError since the frame has been dropped.\n", "except Exception as e:\n", - " print(\"As expected, the frame 'result_1 was dropped.\\n\" + str(e))" + " print(\"As expected, the frame 'new_res' was dropped.\\n\", str(e))" ] }, { @@ -719,12 +321,12 @@ "source": [ "# Keeping the Object and Source Tables in Sync\n", "\n", - "The Tape `Ensemble` attempts to lazily \"sync\" the Object and Source tables such that:\n", + "The `TAPE` `Ensemble` attempts to lazily \"sync\" the Object and Source tables such that:\n", "\n", "* If a series of operations removes all lightcurves for a particular object from the Source table, we will lazily remove that object from the Object table.\n", "* If a series of operations removes an object from the Object table, we will lazily remove all light curves for that object from the Source table.\n", "\n", - "As an example let's filter the Object table only for objects observed from deep drilling fields. This operation marks the result table as `dirty` indicating to the `Ensemble` that if used as part of a result computation, it should check if the object and source tables are synced. \n", + "As an example, let's filter the Object table only for objects of type 'ab'. This operation marks the result table as `dirty` indicating to the `Ensemble` that if used as part of a result computation, it should check if the Object and Source tables are synced. \n", "\n", "Note that because we have not called `update_ensemble()` the `Ensemble` is still using the original Object table which is **not** marked `dirty`.\n" ] @@ -735,20 +337,20 @@ "metadata": {}, "outputs": [], "source": [ - "ddf_only = ens.object.query(\"ddf_bool == True\")\n", + "type_ab_only = ens.object.query(\"type == 'ab'\")\n", "\n", - "print(\"Object table is dirty: \" + str(ens.object.is_dirty()))\n", - "print(\"ddf_only is dirty: \" + str(ddf_only.is_dirty()))\n", - "ddf_only.compute()" + "print(\"Object table is dirty: \", str(ens.object.is_dirty()))\n", + "print(\"ddf_only is dirty: \", str(type_ab_only.is_dirty()))\n", + "type_ab_only.compute()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now let's update the `Ensemble`'s Object table. We can see that the Object table is now considered \"dirty\" so a sync between the Source and Object tables will be triggered by computing a `batch` operation. \n", + "Now let's update the `Ensemble`'s Object table. We can see that the Object table is now considered \"dirty\" so a sync between the Source and Object tables will be triggered by computing an `Ensemble.batch()` operation. \n", "\n", - "As part of the sync the Source table has been modified to drop all sources for objects not observed via Deep Drilling Fields. This is reflected both in the `batch` result output and in the reduced number of rows in the Source table." + "As part of the sync the Source table has been modified to drop all sources for objects not with types other than 'ab'. This is reflected both in the `Ensemble.batch()` result output and in the reduced number of rows in the Source table." ] }, { @@ -757,7 +359,7 @@ "metadata": {}, "outputs": [], "source": [ - "ddf_only.update_ensemble()\n", + "type_ab_only.update_ensemble()\n", "print(\"Updated object table is now dirty: \" + str(ens.object.is_dirty()))\n", "\n", "print(\"Length of the Source table before the batch operation: \" + str(len(ens.source)))\n", @@ -774,152 +376,8 @@ "To summarize:\n", "\n", "* An operation that alters a frame marks that frame as \"dirty\"\n", - "* Such an operation on `Ensemble.source` or `Ensemble.object` won't cause a sync unless the output frame is stored back to either `Ensemble.source` or `Ensemble.object` respectively. This is usually done by a call to `EnsembleFrame.update_ensemble()`\n", - "* Syncs are done lazily such that even when the Object and/or Source frames are \"dirty\", a sync between tables won't be triggered until a relevant computation yields an observable output, such as `batch(..., compute=True)`" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": false - }, - "source": [ - "## Using light-curve package features\n", - "\n", - "`Ensemble.batch` also supports the use of [light-curve](https://pypi.org/project/light-curve/) package feature extractor:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2023-08-30T14:58:37.514514Z", - "start_time": "2023-08-30T14:58:37.494001Z" - } - }, - "outputs": [], - "source": [ - "import light_curve as licu\n", - "\n", - "extractor = licu.Extractor(licu.Amplitude(), licu.AndersonDarlingNormal(), licu.StetsonK())\n", - "# band_to_calc=None will ignore the band column and use all sources for each object\n", - "res = ens.batch(extractor, band_to_calc=\"g\")\n", - "res.compute()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Using a Custom Analysis Function\n", - "The analysis functions contained in TAPE are meant to provide a collection of performant, on-hand routines for common timeseries use cases. However, TAPE is also equipped to handle externally defined functions. Let's walk through a short example of defining a simple custom function and applying it through `Ensemble.batch`.\n", - "\n", - "Here we define a simple function, that returns an average flux for each photometric band. It requires an array of fluxes, an array of band labels per measurement, and has a keyword argument for determining which averaging strategy to use (mean or median)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2023-08-30T14:58:37.519972Z", - "start_time": "2023-08-30T14:58:37.515404Z" - } - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "\n", - "# Defining a simple function\n", - "def my_flux_average(flux_array, band_array, method=\"mean\"):\n", - " \"\"\"Read in an array of fluxes, and return the average of the fluxes by band\"\"\"\n", - " res = {}\n", - " for band in np.unique(band_array):\n", - " mask = [band_array == band] # Create a band by band mask\n", - " band_fluxes = flux_array[tuple(mask)] # Mask the flux array\n", - " if method == \"mean\":\n", - " res[band] = np.mean(band_fluxes)\n", - " elif method == \"median\":\n", - " res[band] = np.median(band_fluxes)\n", - " return res" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With the function defined, we next supply it to `Ensemble.batch`. The column labels of the `Ensemble` columns we want to use as arguments must be provided, as well as any keyword arguments. In this case, we pass along `\"flux\"` and `\"band\"`, so that the `Ensemble` will map those columns to `flux_array` and `band_array` respectively. We also pass `method='mean'`, which will pass that kwarg along to `my_flux_average`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2023-08-30T14:58:37.583850Z", - "start_time": "2023-08-30T14:58:37.519056Z" - } - }, - "outputs": [], - "source": [ - "# Applying the function to the ensemble\n", - "res = ens.batch(my_flux_average, \"flux\", \"band\", meta=None, method=\"median\")\n", - "res.compute()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We see that we now have a `Pandas.series` of `my_average_flux` result by object_id (lightcurve). In many cases, this may not be the ideal output for your function. This output is controlled by the `Dask` `meta` parameter. For more information on this parameter, you can read the `Dask` [documentation](https://blog.dask.org/2022/08/09/understanding-meta-keyword-argument). You may pass the `meta` parameter through `Ensemble.batch`, as shown above." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Saving the Ensemble to Disk\n", - "\n", - "In some situations, you may find yourself running a given workflow many times. Due to the nature of lazy-computation, this will involve repeated execution of data I/O, pre-processing steps, initial analysis, etc. In these situations, it may be effective to instead save the ensemble state to disk after completion of these initial processing steps. To accomplish this, we can use the `Ensemble.save_ensemble` function." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ens.save_ensemble(\n", - " \".\",\n", - " \"ensemble\",\n", - " additional_frames=[\"result_3\"],\n", - ") # Saves object, source, and result_3 to disk" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above command creates an \"ensemble\" directory in the current working directory. This directory contains a subdirectory of parquet files for each `EnsembleFrame` object that was included in the `additional_frames` kwarg. Note that if `additional_frames` was set to True or False this would save all or none of the additional `EnsembleFrame` objects respectively, and that the object (unless it has no columns) and source frames are always saved.\n", - "\n", - "From here, we can just load the ensemble from disk." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "new_ens = Ensemble()\n", - "new_ens.from_ensemble(\"./ensemble\", additional_frames=True)\n", - "new_ens.select_frame(\"result_3\").head(5)" + "* Such an operation on `Ensemble.source` or `Ensemble.object` won't cause a sync between the Source and Object if the output frame has not been stored back to either `Ensemble.source` or `Ensemble.object` respectively. This is usually done by a call to `EnsembleFrame.update_ensemble()`\n", + "* Syncs are done lazily such that even when the Object and/or Source frames are \"dirty\", a sync between tables won't be triggered until a relevant computation yields an observable output, such as `batch(..., compute=True)` or `Ensemble.source.merge(result).compute()`" ] } ], @@ -939,7 +397,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.11" + "version": "3.10.13" }, "vscode": { "interpreter": {