{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Coffea processors\n", "\n", "Previously, we have only been working with awkward arrays constructed from a\n", "single file. Coffea processers is the tool provided to scale up the\n", "calculations to arbitrary file counts. The official [coffea-by-example\n", "documentation](https://coffeateam.github.io/coffea/notebooks/processor.html) on\n", "this topic actually is a very complete a tutorial on how you can get started.\n", "But for the sake of the completion of this document, we will be including our\n", "own version of the tutorial, to most of the gritty details filtered out. \n", "\n", "## A very simple processor -- understanding output\n", "\n", "Let's first take a look at a very simple processor that takes work flow\n", "described in the final analysis in simple calculation page, and translate into\n", "awkward syntax:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from coffea import processor,hist\n", "import numpy as np\n", "import awkward1 as ak\n", "\n", "\n", "class DummyProcessor(processor.ProcessorABC):\n", " def __init__(self):\n", " self._accumulator = processor.dict_accumulator({\n", " \"nevent\" : processor.defaultdict_accumulator(float),\n", " \"invpt_sum\": processor.defaultdict_accumulator(float),\n", " \"hist\": hist.Hist(\n", " \"Events\",\n", " hist.Cat(\"dataset\", \"Dataset\"),\n", " hist.Bin(\"invpt\", \"$1/p_{T}$ [1/GeV]\", 20, 0.01, 0.02),\n", " hist.Bin(\"eta\",'$\\eta$',20,-1,1)\n", " ),\n", " })\n", "\n", " @property\n", " def accumulator(self):\n", " return self._accumulator\n", "\n", " def process(self,events):\n", " output = self.accumulator.identity()\n", " dataset = events.metadata['dataset']\n", "\n", " # The object selection\n", " selectedMuon = events.Muon[ (events.Muon.pt > 50) & \n", " (np.abs(events.Muon.eta)<2.4) ]\n", " selectedMuon['invpt'] = 1/selectedMuon.pt\n", " events['selectedMuon'] = selectedMuon\n", "\n", " # Event selection \n", " events = events[ak.count(events.selectedMuon.pt,axis=-1) >= 1]\n", "\n", " # Filling the accumulator \n", " output['nevent'][dataset] += len(events)\n", " output['invpt_sum'][dataset] += ak.sum(events.selectedMuon.invpt)\n", " output['hist'].fill( dataset=dataset, \n", " invpt=ak.flatten(events.selectedMuon.invpt),\n", " eta=ak.flatten(events.selectedMuon.eta) )\n", " \n", " # returning the output \n", " return output\n", "\n", "\n", " def postprocess(self, accumulator):\n", " return accumulator\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "The selection/filtering part of the `DummyProcessor.process` is basically\n", "entirely the same as the using awkward examples without processors class,\n", "except this time, the events have an additional `metadata` tag that can be used\n", "to identify dataset name.\n", "\n", "The main difference is in the output parts of the processor. Here the return is\n", "what is known as `accumulator` classes defined the `coffea.processor`. Basically\n", "each object that is defined within the various accumulators will be added up\n", "across the multiple jobs that the processor instance will be run on. In our\n", "case, we have two floating points that will be summed across multiple jobs, and\n", "a histogram with 3 axes: 1 being what the data is, the other 2 being some\n", "variables of interest. The filling of the histogram uses python keywords to\n", "simplify the filling variable assignment. All argument in the fill command have\n", "to have compatible dimensions, in our case:\n", "- dataset has exactly dimension 1\n", "- `ak.flatten()` reduces that `NxA` structure of electron variables to a simple\n", " `L`-lengthed array, the array inputs `invpt` and `eta` must have matching\n", " dimensions.\n", "\n", "One can create a processor, and run on a single file for testing. (Again, if\n", "you are running this tutorial notebook as is, remember to download the provided\n", "data and schema files using the commands):\n", "\n", "```sh \n", "cd \n", "wget https://raw.githubusercontent.com/UMDCMS/CoffeaTutorial/main/samples/dummy_nanoevents.root \n", "wget https://raw.githubusercontent.com/UMDCMS/CoffeaTutorial/main/samples/dummyschema.py\n", "```\n", "\n", "This will help use get a feel of what the output data is like:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "defaultdict_accumulator(, {'Dummy': 3.0})\n", "defaultdict_accumulator(, {'Dummy': 0.054097119718790054})\n", "\n" ] } ], "source": [ "from coffea.nanoevents import NanoEventsFactory \n", "from coffea.nanoevents.schemas import NanoAODSchema\n", "\n", "events = NanoEventsFactory.from_root( 'file:TTbar.root' ,\n", " 'Events',\n", " entry_stop=50,\n", " metadata={\"dataset\": \"Dummy\"}, \n", " # Processors expects new meta data \n", " schemaclass=NanoAODSchema,\n", ").events()\n", "\n", "p = DummyProcessor() \n", "output = p.process(events)\n", "\n", "## Exploring the output\n", "print(output['nevent'])\n", "print(output['invpt_sum'])\n", "print(output['hist'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For typical analysis work, the most import object to futher explore is the\n", "plotting of the histogram objects. Again the [official\n", "tutorial](https://coffeateam.github.io/coffea/notebooks/histograms.html) has\n", "excellent pages on the manipulations of the `coffea.hist` objects. Here I will\n", "just use a couple of basic examples for those who are just getting ready to\n", "explore coffea:\n", "\n", "Notice how categorical axis are automatically used as the various labeling, \n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2021-01-23T12:00:32.689850\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.3, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "print(output['hist'])\n", "print(output['hist'].integrate('eta'))\n", "hist.plot1d(output['hist'].integrate('eta'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice how `integrate` can be used to reduce the dimensions of a histograms. You\n", "can also provide a custom integration range if you want to perform additional\n", "selections on binned dataset. Also" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAEICAYAAACj2qi6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAaK0lEQVR4nO3de7xVdZ3/8dfHA4opouHBUFSwbEYNPSIZ5k9TR41MRdMSu3nJSI1+mfPrN3b5lZTzmxwtexjzSHmUEk6Zjo1Fk/6MRrxMeQkVTfCRgmFiNJywQFCQy+f3x17Q9nguC85e5wKv5+OxH2fttb5rrc/57nP2e6/rjsxEkqQytuvtAiRJ/YehIUkqzdCQJJVmaEiSSjM0JEmlDejtAjbX7rvvniNHjuztMiSpX3nkkUf+lJnN3V1OvwuNkSNHMmfOnN4uQ5L6lYh4rhHLcfeUJKk0Q0OSVJqhIUkqrd8d05C0bVq7di2LFy9m9erVvV1KnzZo0CBGjBjBwIEDK1m+oSGpX1i8eDGDBw9m5MiRRERvl9MnZSbLli1j8eLFjBo1qpJ1uHtKUr+wevVqhg4damB0IiIYOnRopVtjhoakfsPA6FrVfWRoSJJKMzQkbXOamppoaWnhoIMO4pBDDuHrX/86GzZs6HSeRYsW8YMf/KDhtXzzm9/k5Zdfbvhyq2JoSNrm7LjjjsydO5d58+Yxa9Ys7rzzTqZMmdLpPO2FxsLWlSxsXdmtWgwNSepHhg0bxrRp05g6dSqZyaJFizjqqKMYM2YMY8aM4Ve/+hUAl112Gffffz8tLS1cc801LFq0iImnnMipf/c/XtNuyZIlHH300bS0tPC2t72N+++/H4Cf//znHHHEEYwZM4b3v//9rFy5kmuvvZY//OEPHHvssRx77LG91gebJTP71eOwww5LSdue+fPnN2xZO+200+vGDRkyJP/4xz/mqlWr8pVXXsnMzKeffjo3vufMnj073/ve925qv2rVqpz3+9ZcsPSl17S7+uqr84orrsjMzHXr1uWKFSuytbU1jzrqqFy5cmVmZn7ta1/LKVOmZGbmvvvum62trQ373TLb7ytgTjbgPdjrNCSpztq1a5k8eTJz586lqamJp59+usN2n7/0Uzw17wl23H7gpnZvf/vbOf/881m7di2nnXYaLS0t3HvvvcyfP58jjzwSgFdffZUjjjiix36nRjI0JG3znn32WZqamhg2bBhTpkxhjz324PHHH2fDhg0MGjSo3XmuueYadm9u5j9mP8CooW/Y1O7oo4/mvvvu42c/+xnnnnsul156KbvtthsnnHACN998c0/+WpXwmIakbVpraysXXnghkydPJiJYvnw5w4cPZ7vttuOmm25i/fr1AAwePJiXXnpp03zLly+neY83va7dc889xx577MHHP/5xLrjgAh599FHGjRvHL3/5SxYsWADAqlWrNm2ZtF1uX+eWhqRtziuvvEJLSwtr165lwIABfOQjH+HSSy8F4OKLL+aMM85gxowZjB8/np122gmAgw8+mKamJg455BDOPfdcLr74Yk6ZcDo/vvVmTj35pE3t7rnnHq666ioGDhzIzjvvzIwZM2hubmb69OmcffbZrFmzBoArrriCt771rUyaNInx48ez5557Mnv27N7pkM0QteMj/cfYsWPTL2GStj1PPfUUBxxwQG+X8RobT7d9c/POvVzJa7XXVxHxSGaO7e6y3T0lSSrN0JAklWZoSJJKMzQkSaUZGpKk0gwNSVuts65/gLOuf6C3y9iqeJ2GJJXU1NTE6NGjN13fcdL7zuL8Cyf3dlk9qrLQiIhBwH3ADsV6bsvML7dpswMwAzgMWAaclZmLqqpJkrpj4y3VAZYuXcrpZ57Fypde4ltX/1PvFtaDqtw9tQY4LjMPAVqA8RExrk2bjwF/zsy3ANcAV1ZYjyQ1zLBhw7ji69fyrzdcT2Yyffp0Jk/+61bHySefzD333APAzjvvzGc/+1kOOuggjj/+eB5++GGOOeYY9ttvP2bOnAnA9OnTOe200zjhhBMYOXIkU6dO5Rvf+AaHHnoo48aN48UXX2ThwoWMGTNm0zqeeeaZ1zzvCZVtaRS34t347SQDi0fby88nAJcXw7cBUyMisr9dpi6pR0356Tzm/2HF68bPX/LacS+vWQfA6Mvves34A4fv8rp5D9xzF758ykGbVcc+I0exfv0Gli5d2mm7VatWcdxxx3HVVVdx+umn88UvfpFZs2Yxf/58zjnnHE499VQAnnzySR577DFWr17NW97yFq688koee+wxPvOZzzBjxgwuueQShgwZwty5c2lpaeHGG2/kvPPO26yau6vSA+ER0RQRc4GlwKzMfKhNk72A5wEycx2wHBhaZU2S1NO23357xo8fD8Do0aN517vexcCBAxk9ejSLFi3a1O7YY49l8ODBNDc3M2TIEE455ZRN82xsd8EFF3DjjTeyfv16brnlFj74wQ/26O9S6YHwzFwPtETErsDtEfG2zHxyc5cTEZOASQD77LNPY4uU1O+U3SLYeObULZ+o5rsrfr/odzQ1bcewYcMYMGDAa75nfPXq1ZuGBw4cSEQAsN1227HDDjtsGl63bt2mdhvHd9bujDPOYMqUKRx33HEcdthhDB3as5+ze+SU28z8CzAbGN9m0gvA3gARMQAYQu2AeNv5p2Xm2Mwc29zcXHG1ktS11tZW/s9nL+HD53+CiGDkyJHMnTuXDRs28Pzzz/Pwww9Xst5Bgwbx7ne/m4suuqjHd01BtWdPNQNrM/MvEbEjcAKvP9A9EzgHeAA4E7jb4xmS+qq2t1Q/6fQPcP5FnwLgyCOPZNSoURx44IEccMABlR6g/tCHPsTtt9/OiSeeWNk6OlLZrdEj4mDge0ATtS2aWzPzKxHxFWrfVTuzOC33JuBQ4EVgYmY+29lyvTW6tG3aklujV717qrdujX711VezfPlyvvrVr7Y7vcpbo1d59tQT1MKg7fgv1Q2vBt5fVQ2Stm1VhUVvOv3001m4cCF33313r6zfK8IlqR+5/fbbe3X93ntKUr/hIc+uVd1HhoakfmHQoEEsW7bM4OhEZrJs2TIGDRpU2TrcPSWpXxgxYgSLFy+mtbW1t0vZpPWlNQC8+qcdumjZcwYNGsSIESMqW76hIalfGDhwIKNGjertMl7j8k1nZ7X0biE9yN1TkqTSDA1JUmmGhiSpNENDklSaoSFJKs3QkCSVZmhIkkozNCRJpRkakqTSDA1JUmmGhiSpNENDklSaoSFJKs3QkCSVZmhIkkozNCRJpRkakqTSDA1JUmmVhUZE7B0RsyNifkTMi4hPt9PmmIhYHhFzi8eXqqpHktR9VX5H+Drg7zPz0YgYDDwSEbMyc36bdvdn5skV1iFJapDKtjQyc0lmPloMvwQ8BexV1fokSdXrkWMaETESOBR4qJ3JR0TE4xFxZ0Qc1MH8kyJiTkTMaW1trbJUSVInKg+NiNgZ+BFwSWauaDP5UWDfzDwE+Bbw4/aWkZnTMnNsZo5tbm6utF5JUscqDY2IGEgtML6fmf/ednpmrsjMlcXwHcDAiNi9ypokSVuuyrOnAvgu8FRmfqODNm8q2hERhxf1LKuqJklS91R59tSRwEeA30TE3GLc54F9ADLzOuBM4KKIWAe8AkzMzKywJklSN1QWGpn5X0B00WYqMLWqGiRJjeUV4ZKk0gwNSVJphoYkqTRDQ5JUmqEhSSrN0JAklWZoSJJKMzQkSaUZGpKk0gwNSVJphoYkqTRDQ5JUmqEhSSrN0JAklWZoSJJKMzQkSaUZGpKk0gwNSVJphoYkqTRDQ5JUmqEhSSrN0JAklVZZaETE3hExOyLmR8S8iPh0O20iIq6NiAUR8UREjKmqHklS9w2ocNnrgL/PzEcjYjDwSETMysz5dW3eA+xfPN4BfLv4KUnqgyrb0sjMJZn5aDH8EvAUsFebZhOAGVnzILBrRAyvqiZJUvf0yDGNiBgJHAo81GbSXsDzdc8X8/pgISImRcSciJjT2tpaWZ2SpM5VHhoRsTPwI+CSzFyxJcvIzGmZOTYzxzY3Nze2QElSaZWGRkQMpBYY38/Mf2+nyQvA3nXPRxTjJEl90GaHRkTsFhEHl2gXwHeBpzLzGx00mwl8tDiLahywPDOXbG5NkqSeUersqYi4Bzi1aP8IsDQifpmZl3Yy25HAR4DfRMTcYtzngX0AMvM64A7gJGAB8DJw3ub/CpKknlL2lNshmbkiIi6gdrbTlyPiic5myMz/AqKLNgl8smQNkqReVnb31IDiVNgPAP9RYT2SpD6sbGhMAe4CFmTmryNiP+CZ6sqSJPVFZXdPLcnMTQe/M/PZiOjo4LYkaStVdkvjWyXHSZK2Yp1uaUTEEcA7geaIqD9TahegqcrCJEl9T1e7p7YHdi7aDa4bvwI4s6qiJEl9U6ehkZn3AvdGxPTMfK6HapIk9VFlD4TvEBHTgJH182TmcVUUJUnqm8qGxr8B1wHfAdZXV44kqS8rGxrrMvPblVYiSerzyp5y+9OIuDgihkfEGzc+Kq1MktTnlN3SOKf4+dm6cQns19hyJEl9WanQyMxRVRciSer7Su2eiog3RMQXizOoiIj9I+LkakuTJPU1ZY9p3Ai8Su3qcKh9u94VlVQkSeqzyobGmzPzn4G1AJn5Ml18V4YkaetTNjRejYgdqR38JiLeDKyprCpJUp9U9uypy4H/B+wdEd+n9lWu51ZUkySpjyp79tTPI+IRYBy13VKfzsw/VVqZJKnPKRUaEfFT4AfAzMxcVW1JkqS+quwxjauBo4D5EXFbRJwZEYMqrEuS1AeV3T218RbpTcBxwMeBG6h9GZMkaRtRdkuD4uypM4ALgbcD3+ui/Q0RsTQinuxg+jERsTwi5haPL21O4ZKknlf2mMatwOHUzqCaCtybmRu6mG160XZGJ23uz0yvLJekfqLsKbffBc7OzNLfpZGZ90XEyC2qSpLUJ3W6eyoi/jdAZt4FvK/NtP/bgPUfERGPR8SdEXFQA5YnSapQV8c0JtYNf67NtPHdXPejwL6ZeQjwLeDHHTWMiEkRMSci5rS2tnZztZKkLdVVaEQHw+093yyZuSIzVxbDdwADI2L3DtpOy8yxmTm2ubm5O6uVJHVDV6GRHQy393yzRMSbIiKK4cOLWpZ1Z5mSpGp1dSD8kIhYQW2rYsdimOJ5pxf3RcTNwDHA7hGxGPgyMBAgM68DzgQuioh1wCvAxMzsVhBJkqrVaWhkZtOWLjgzz+5i+lRqp+RKkvqJ0hf3SZJkaEiSSjM0JEmlGRqSpNIMDUlSaYaGJKk0Q0OSVJqhIUkqzdCQJJVmaEiSSjM0JEmlGRqSpNIMDUlSaYaGJKk0Q0OSVJqhIUkqzdCQJJVmaEiSSjM0JEmlGRqSpNIMDUlSaYaGJKk0Q0OSVFploRERN0TE0oh4soPpERHXRsSCiHgiIsZUVYskqTGq3NKYDozvZPp7gP2LxyTg2xXWIklqgAFVLTgz74uIkZ00mQDMyMwEHoyIXSNieGYuqaomSdocP3jo9/xk7gsdTp+/ZAUAZ13/QKfLmdCyFx98xz4Nra239OYxjb2A5+ueLy7GvU5ETIqIORExp7W1tUeKk6SfzH1hUzBsqflLVnQaPP1NZVsajZSZ04BpAGPHjs1eLkfSNuTA4btwyyeOaHfaxi2MjqbXt9la9OaWxgvA3nXPRxTjJEl9VG+Gxkzgo8VZVOOA5R7PkKS+rbLdUxFxM3AMsHtELAa+DAwEyMzrgDuAk4AFwMvAeVXVIklqjCrPnjq7i+kJfLKq9UuSGs8rwiVJpRkakqTSDA1JUmmGhiSpNENDklSaoSFJKs3QkCSVZmhIkkozNCRJpRkakqTSDA1JUmmGhiSpNENDklSaoSFJKs3QkCSVZmhIkkozNCRJpRkakqTSDA1JUmmGhiSpNENDklSaoSFJKq3S0IiI8RHx24hYEBGXtTP93IhojYi5xeOCKuuRJHXPgKoWHBFNwL8AJwCLgV9HxMzMnN+m6S2ZObmqOiRJjVPllsbhwILMfDYzXwV+CEyocH2SpIpVGRp7Ac/XPV9cjGvrjIh4IiJui4i921tQREyKiDkRMae1tbWKWiVJJfT2gfCfAiMz82BgFvC99hpl5rTMHJuZY5ubm3u0QEnSX1UZGi8A9VsOI4pxm2TmssxcUzz9DnBYhfVIkrqpytD4NbB/RIyKiO2BicDM+gYRMbzu6anAUxXWI0nqpsrOnsrMdRExGbgLaAJuyMx5EfEVYE5mzgT+Z0ScCqwDXgTOraoeSVL3VRYaAJl5B3BHm3Ffqhv+HPC5KmuQJDVObx8IlyT1I4aGJKk0Q0OSVJqhIUkqzdCQJJVmaEiSSjM0JEmlGRqSpNIMDUlSaYaGJKk0Q0OSVJqhIUkqzdCQJJVmaEiSSjM0JEmlVfp9GpK0NbvlE0f0dgk9zi0NSVJphoYkqTRDQ5JUmqEhSSrN0JAklWZoSJJKMzQkSaVVGhoRMT4ifhsRCyLisnam7xARtxTTH4qIkVXWI0nqnspCIyKagH8B3gMcCJwdEQe2afYx4M+Z+RbgGuDKquqRJHVflVeEHw4syMxnASLih8AEYH5dmwnA5cXwbcDUiIjMzI4W+mzrKs66/oFqKpakOvOXrODA4bs0ZDlby/tWlaGxF/B83fPFwDs6apOZ6yJiOTAU+FN9o4iYBEwqnq659cJ3PllJxY21O21+jz7KOhurP9TZH2qEPlLnk8CtF3bapFSdfeBN628asZB+ce+pzJwGTAOIiDmZObaXS+qSdTaWdTZOf6gRrLPRImJOI5ZT5YHwF4C9656PKMa12yYiBgBDgGUV1iRJ6oYqQ+PXwP4RMSoitgcmAjPbtJkJnFMMnwnc3dnxDElS76ps91RxjGIycBfQBNyQmfMi4ivAnMycCXwXuCkiFgAvUguWrkyrquYGs87Gss7G6Q81gnU2WkPqDD/YS5LK8opwSVJphoYkqbQ+GRoR8f6ImBcRGyKiw1PZOrpNSXHw/aFi/C3Fgfgq6nxjRMyKiGeKn7u10+bYiJhb91gdEacV06ZHxO/qprX0Vp1Fu/V1tcysG9+X+rMlIh4o/j6eiIiz6qZV1p/duSVORHyuGP/biHh3o2rawjovjYj5Rd/9Z0TsWzet3de/l+o8NyJa6+q5oG7aOcXfyDMRcU7beXu4zmvqanw6Iv5SN61H+jMiboiIpRHR7qUgUXNt8Ts8ERFj6qZtfl9mZp97AAdQuxDlHmBsB22agIXAfsD2wOPAgcW0W4GJxfB1wEUV1fnPwGXF8GXAlV20fyO1A/5vKJ5PB87sgf4sVSewsoPxfaY/gbcC+xfDewJLgF2r7M/O/tbq2lwMXFcMTwRuKYYPLNrvAIwqltNUUf+VqfPYur+/izbW2dnr30t1ngtMbWfeNwLPFj93K4Z3660627T/FLUTfnq6P48GxgBPdjD9JOBOIIBxwEPd6cs+uaWRmU9l5m+7aLbpNiWZ+SrwQ2BCRARwHLXbkgB8DzitolInFMsvu54zgTsz8+WK6unI5ta5SV/rz8x8OjOfKYb/ACwFmiuqZ6N2/9batKmv/Tbg74q+mwD8MDPXZObvgAXF8nqlzsycXff39yC166d6Wpn+7Mi7gVmZ+WJm/hmYBYzvI3WeDdxcUS0dysz7qH0Y7cgEYEbWPAjsGhHD2cK+7JOhUVJ7tynZi9ptSP6SmevajK/CHpm5pBj+I7BHF+0n8vo/qn8sNhmviYgdGl5hTdk6B0XEnIh4cOMuNPpwf0bE4dQ+AS6sG11Ff3b0t9Zum6KvNt4Sp8y8jbK56/oYtU+gG7X3+lehbJ1nFK/lbRGx8ULhPtmfxW6+UcDddaN7qj+70tHvsUV92Wu3EYmIXwBvamfSFzLzJz1dT0c6q7P+SWZmRHR4/nKR7KOpXbey0eeovTluT+0c6n8AvtKLde6bmS9ExH7A3RHxG2pvfg3T4P68CTgnMzcUoxvWn1u7iPgwMBZ4V93o173+mbmw/SVU7qfAzZm5JiI+QW0r7rheqqWMicBtmbm+blxf6s+G6bXQyMzju7mIjm5Tsoza5teA4hNfe7cvKa2zOiPivyNieGYuKd7ElnayqA8At2fm2rplb/xUvSYibgT+V2/WmZkvFD+fjYh7gEOBH9HH+jMidgF+Ru0DxoN1y25Yf7axObfEWRyvvSVOmXkbpdS6IuJ4aiH9rsxcs3F8B69/FW9yXdaZmfW3E/oOteNdG+c9ps289zS8wr+uq+xrNxH4ZP2IHuzPrnT0e2xRX/bn3VPt3qYka0d4ZlM7fgC125RUteVSfxuUrtbzuv2dxRvjxuMGp1HdjTC7rDMidtu4OycidgeOBOb3tf4sXuvbqe2jva3NtKr6szu3xJkJTIza2VWjgP2BhxtU12bXGRGHAtcDp2bm0rrx7b7+vVjn8LqnpwJPFcN3AScW9e4GnMhrt957tM6i1r+ldiD5gbpxPdmfXZkJfLQ4i2ocsLz4gLVlfdkTR/c39wGcTm3/2hrgv4G7ivF7AnfUtTsJeJpaen+hbvx+1P4xFwD/BuxQUZ1Dgf8EngF+AbyxGD8W+E5du5HUUn27NvPfDfyG2pvbvwI791adwDuLWh4vfn6sL/Yn8GFgLTC37tFSdX+297dGbdfXqcXwoKJvFhR9tV/dvF8o5vst8J6K/3e6qvMXxf/Uxr6b2dXr30t1/hMwr6hnNvC3dfOeX/TzAuC83qyzeH458LU28/VYf1L7MLqk+L9YTO1Y1YXAhcX0oPaFeAuLWsbWzbvZfeltRCRJpfXn3VOSpB5maEiSSjM0JEmlGRqSpNIMDUlSaYaGJKk0Q0OSVJqhITVARPxDRNwUEXdFxHMR0ahbmEh9iqEhNcZoYAO1K4iPBz7au+VI1ei1GxZKW5nRwPsyc31ErKfz7zeQ+i23NKRuioiBQHP+9bbXB1O7x4+01TE0pO77G/56F1aAFmo3qpO2OoaG1H2jgSfqnrdgaGgr5V1upQaLiAXA6Mx8pbdrkRrNLQ2pgSJiV+BVA0NbK7c0JEmluaUhSSrN0JAklWZoSJJKMzQkSaUZGpKk0gwNSVJphoYkqbT/Dwq4chilcmeNAAAAAElFTkSuQmCC\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2021-01-23T12:00:33.117349\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.3, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "hist.plot1d(output['hist'].integrate('invpt', slice(0.015,0.020)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Scaling up calculations -- process executors\n", "\n", "Suppose you have some file set, you can define coffea to run over all file with\n", "a given metadata tag using the following \n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "tags": [] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "cf240c3ca8524b249f51cf8fd42bedb9", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Preprocessing: 0%| | 0/1 [00:00