{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "6294a161", "metadata": {}, "source": [ "# Plot x, y data from a databroker run\n", "\n", "This Bluesky notebook only uses the `databroker` package (and `matplotlib`) to plot $(x,y)$ data from a previous measurement.\n", "\n", "## 1. Show what data catalogs are available" ] }, { "cell_type": "code", "execution_count": 1, "id": "06e7644f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['bdp2022',\n", " 'class_2021_03',\n", " '6idb_export',\n", " 'apstools_test',\n", " 'class_data_examples',\n", " 'usaxs_test',\n", " 'korts202106',\n", " 'training']" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import databroker\n", "list(databroker.catalog)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "12485b9f", "metadata": {}, "source": [ "## 2. Choose a specific run from a catalog\n", "\n", "Here, the `class_data_examples` catalog will be used. \n", "\n", "We create an instance of this catalog and assign it to the variable `cat`. In\n", "this `cat`, the run with `scan_id=86` has a scan of detector _vs_. motor. The\n", "`cat` object is like a dictionary where `scan_id` can be used as a key. Next,\n", "using `86` as the key, we create an object called `run` that will be used to\n", "access the data from this run." ] }, { "cell_type": "code", "execution_count": 2, "id": "800e3e41", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "BlueskyRun\n", " uid='d19530f7-1ca6-4c02-a83b-229b3d92b6d1'\n", " exit_status='success'\n", " 2021-03-06 14:10:46.462 -- 2021-03-06 14:10:49.317\n", " Streams:\n", " * baseline\n", " * primary\n" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat = databroker.catalog[\"class_data_examples\"]\n", "run = cat[86]\n", "run" ] }, { "attachments": {}, "cell_type": "markdown", "id": "33985994", "metadata": {}, "source": [ "## 3. Show the (primary) data\n", "\n", "Get all the data available from the `primary` stream. The `primary` stream is where bluesky stores the data acquired from a scan. `databroker` returns this data as an [xarray Dataset](http://xarray.pydata.org/en/stable/generated/xarray.Dataset.html). \n", "\n", "The detector is named `noisy` and the motor is named `m1`. We'll refer to `m1` and `noisy` as _data variables_ to be consistent with the `xarray.Dataset` (as shown in the table below)." ] }, { "cell_type": "code", "execution_count": 3, "id": "3d832d0e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
<xarray.Dataset>\n", "Dimensions: (time: 23)\n", "Coordinates:\n", " * time (time) float64 1.615e+09 1.615e+09 ... 1.615e+09 1.615e+09\n", "Data variables:\n", " m1 (time) float64 0.939 0.941 0.942 ... 0.968 0.969 0.971\n", " m1_user_setpoint (time) float64 0.9392 0.9407 0.9421 ... 0.9693 0.9708\n", " noisy (time) float64 8.589e+03 1.067e+04 ... 1.076e+04 8.774e+03