Skip to content

Instantly share code, notes, and snippets.

@adrn
Created February 8, 2024 22:51
Show Gist options
  • Save adrn/78dbc7fdec5e4da54d43cdb1fcd86d33 to your computer and use it in GitHub Desktop.
Save adrn/78dbc7fdec5e4da54d43cdb1fcd86d33 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{"metadata":{"kernelspec":{"name":"conda-root-py","display_name":"Python [conda env:root] *","language":"python"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"fac819f7-cbde-435f-91a4-6a91a3c8f62f","cell_type":"code","source":"import agama\nimport astropy.units as u\nimport gala.dynamics as gd\nimport gala.potential as gp\nimport matplotlib as mpl\nimport matplotlib.pyplot as plt\n\n%matplotlib inline\nimport numpy as np\nfrom gala.units import galactic\n\nagama.setUnits(length=u.kpc, mass=u.Msun, time=u.Myr)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-02-08T22:35:59.950099Z","iopub.execute_input":"2024-02-08T22:35:59.951994Z","iopub.status.idle":"2024-02-08T22:36:00.216125Z","shell.execute_reply.started":"2024-02-08T22:35:59.951868Z","shell.execute_reply":"2024-02-08T22:36:00.215812Z"}},"outputs":[],"execution_count":18},{"id":"30489f3f-2e2c-4134-b581-9a3ad76c7485","cell_type":"markdown","source":"I'm more used to the Gala interface for creating potential models, so for this example I make a Gala NFW model and then convert to Agama:","metadata":{}},{"id":"c5d9fb80-ac0b-45e1-8d35-0148e19b734e","cell_type":"code","source":"gala_pot = gp.NFWPotential.from_circular_velocity(\n v_c=240 * u.km / u.s, r_s=10 * u.kpc, units=galactic\n)\nagama_pot = gala_pot.as_interop(\"agama\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-02-08T22:34:33.765032Z","iopub.execute_input":"2024-02-08T22:34:33.765531Z","iopub.status.idle":"2024-02-08T22:34:37.444933Z","shell.execute_reply.started":"2024-02-08T22:34:33.765501Z","shell.execute_reply":"2024-02-08T22:34:37.444048Z"}},"outputs":[],"execution_count":11},{"id":"f768e1e1-f160-4d0b-9388-50be675857fd","cell_type":"markdown","source":"We don't need to generate samples from a self-consistent DF, so we can pick any density profile we want for the tracers we will sample. Here the \"tracers\" are the positions and velocities of the stream progenitors. We'll use a Dehnen (power law) model with a scale radius in kpc:","metadata":{}},{"id":"ab008583-a818-4a78-8a5a-bdea9efe6666","cell_type":"code","source":"dens = agama.Density(type=\"Dehnen\", scaleRadius=15)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-02-08T22:45:21.891802Z","iopub.execute_input":"2024-02-08T22:45:21.892420Z","iopub.status.idle":"2024-02-08T22:45:21.900334Z","shell.execute_reply.started":"2024-02-08T22:45:21.892367Z","shell.execute_reply":"2024-02-08T22:45:21.899204Z"}},"outputs":[],"execution_count":59},{"id":"121ce59c-9204-4733-8cfa-75a1f1a58745","cell_type":"markdown","source":"For the DF (i.e. the energy distribution), we use a quasi-spherical, isotropic Osipkov-Merritt model:","metadata":{}},{"id":"bc7ddc41-dd36-418b-b215-76bf925fa4c0","cell_type":"code","source":"df = agama.DistributionFunction(\n type=\"QuasiSpherical\", potential=agama_pot, density=dens\n)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-02-08T22:46:23.321796Z","iopub.execute_input":"2024-02-08T22:46:23.322641Z","iopub.status.idle":"2024-02-08T22:46:23.349048Z","shell.execute_reply.started":"2024-02-08T22:46:23.322598Z","shell.execute_reply":"2024-02-08T22:46:23.348376Z"}},"outputs":[],"execution_count":60},{"id":"e15bfd84-8646-4a49-a465-da96998c3659","cell_type":"code","source":"gm = agama.GalaxyModel(agama_pot, df)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-02-08T22:37:35.523948Z","iopub.execute_input":"2024-02-08T22:37:35.524332Z","iopub.status.idle":"2024-02-08T22:37:35.547480Z","shell.execute_reply.started":"2024-02-08T22:37:35.524310Z","shell.execute_reply":"2024-02-08T22:37:35.546724Z"}},"outputs":[],"execution_count":30},{"id":"0545320b-df2c-455d-ae4a-5feb83b639c6","cell_type":"markdown","source":"Generate 10,000 samples from this DF:","metadata":{}},{"id":"8307f08c-27c4-4713-9141-f43e39da9aa7","cell_type":"code","source":"xv = gm.sample(10_000)[0]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-02-08T22:41:26.232281Z","iopub.execute_input":"2024-02-08T22:41:26.232894Z","iopub.status.idle":"2024-02-08T22:41:26.287227Z","shell.execute_reply.started":"2024-02-08T22:41:26.232850Z","shell.execute_reply":"2024-02-08T22:41:26.286405Z"}},"outputs":[],"execution_count":47},{"id":"d90c97c3-634d-4af7-8793-9ec177eb3157","cell_type":"markdown","source":"The positions and velocities in what is returned are in 6-vectors with pos in kpc, vel in kpc/Myr. I have a class in Gala for interacting with phase-space coordinates like this:","metadata":{}},{"id":"f2fbb847-fa7f-44ce-8bcb-6d23471515dd","cell_type":"code","source":"w0 = gd.PhaseSpacePosition.from_w(xv.T, units=galactic)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-02-08T22:41:26.748933Z","iopub.execute_input":"2024-02-08T22:41:26.749421Z","iopub.status.idle":"2024-02-08T22:41:26.754443Z","shell.execute_reply.started":"2024-02-08T22:41:26.749394Z","shell.execute_reply":"2024-02-08T22:41:26.753681Z"}},"outputs":[],"execution_count":48},{"id":"df35cf7c-eb3a-4b52-9efe-6eb2526ca19e","cell_type":"markdown","source":"Whenever I sample from a DF, I like to just verify that the samples succeeded. One check we can make is that if we integrate the orbits of the tracers, the distribution at the final orbital timestep looks the same as the initial distribution. I use Gala to do the orbit integration (`store_all=False` tells Gala not to store all of the intermediate timesteps, and it just integrates all of the orbits to the final time and returns that):","metadata":{}},{"id":"d80e7b86-5e43-4064-89b1-6ba676989297","cell_type":"code","source":"wf = gala_pot.integrate_orbit(\n w0, dt=0.5 * u.Myr, t1=0, t2=4 * u.Gyr, store_all=False\n)[0]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-02-08T22:41:27.306936Z","iopub.execute_input":"2024-02-08T22:41:27.307392Z","iopub.status.idle":"2024-02-08T22:41:37.658844Z","shell.execute_reply.started":"2024-02-08T22:41:27.307369Z","shell.execute_reply":"2024-02-08T22:41:37.658462Z"}},"outputs":[],"execution_count":49},{"id":"e372cdcc-6f0a-4d24-8989-956f422300b0","cell_type":"markdown","source":"Here we can check that the initial and final conditions are consisitent:","metadata":{}},{"id":"68cd13f0-4ce2-4616-8741-ad26bd7758f5","cell_type":"code","source":"bins = np.linspace(0, 300, 64)\n_ = plt.hist(\n w0.physicsspherical.r.value,\n bins=bins,\n histtype=\"step\",\n color=\"tab:green\",\n lw=2,\n label=\"initial conditions\",\n)\n_ = plt.hist(\n wf.physicsspherical.r.value,\n bins=bins,\n histtype=\"step\",\n color=\"tab:red\",\n lw=2,\n label=\"final positions\",\n)\nplt.legend(loc=\"best\", fontsize=18)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-02-08T22:42:37.867662Z","iopub.execute_input":"2024-02-08T22:42:37.868463Z","iopub.status.idle":"2024-02-08T22:42:38.064672Z","shell.execute_reply.started":"2024-02-08T22:42:37.868295Z","shell.execute_reply":"2024-02-08T22:42:38.064357Z"}},"outputs":[{"execution_count":58,"output_type":"execute_result","data":{"text/plain":"<matplotlib.legend.Legend at 0x2c6bf0a30>"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"<Figure size 432x432 with 1 Axes>","image/png":"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NXDgQP3888+lPqf//Oc/uv3229WgQQPFxMSob9++pe4lGz58uKKjoxUQEGBrW9HlAVasWKFWrVpp7NixOn/+vKRLE5nYv2dMJpNWrFhhq1Pa92NRmZmZev3119W+fXs1a9ZMTZs21fXXX685c+YoJyfHZb3bb7/d5XmsXr1affv2VZs2bVS3bl21b99es2fPVkFBgdu2FBQUaO7cuercubMiIiIUERGh6667Tm+//bays7MlSePGjdOpU6dKPC9fR4ADAACXtdmzZ+vo0aMlTgrxyy+/KCkpSUOGDLFtKyws1JgxY5SQkKDVq1fr999/186dO3X+/Hndf//9evXVV50ea8SIETp69Ki2bNni9jmPHj1arG1Lly61bT969KiWLl1qKwsICNDRo0eVkpKiDh06lHjuOTk5GjhwoBYsWKB33nlHx44d05kzZ/TTTz8pLS1NN910kx577DEVFhaWeCxvW7Vqldq0aaOkpCT9+OOPSkpK0qFDhzRjxgy98847GjVqlNt2zZo1Sx07dlTt2rVt1y4xMVHXX3+9evfurfHjxzut36pVKx09elQnT55Uw4YNbdvPnDmj2267Tc2bN9f27duVlJSkJUuWaMOGDerZs6c2bNhQ4jm9//776t69u86dO6fdu3crMTFRn376qV5//XWHQOXKl19+qWPHjumpp55yuc+wYcNs740uXbpIkpo3b+7wnjl69KiGDRtmq1Pa96O9vXv36pprrtHixYv16aef6sSJE0pJSdHMmTM1e/ZsdejQweXac99++63T83jhhRf05ZdfasmSJdq3b58OHjyo4OBgTZw4UY888ojLthQUFKh///764IMP9P777+vUqVM6deqU7Tjt2rXTokWL3AZ3IyHAAQAASAoLC/N4v1mzZikyMlJvvPGGbRHmq666Sn/7298kSa+++qqOHTtW7ucsi9Ice/bs2dq2bZt++OEHXXfddbbtV155pb744gs1bNhQH3zwgT788MMKa6czP/zwg4YMGaKIiAgtW7ZMkZGRtrLOnTtr/fr1+vHHH/X22287rf/aa69p0qRJ6t27tz788EPVr19fklS7dm1NmTJFEyZM0N///ne3U/AHBAQoJCTE9v+xY8fq+eef17333qsaNS6NQurXr58efPBB5efn67HHHpPFYnF5vCVLluiJJ55QnTp1tHLlSts5RUZGasWK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80L5EODgIG5BnMt/AABUR0ePHtXRo0cdJq1YunSp0+2S9OWXX+rYsWN66qmnXB4zODhYR48eVUpKijp06GDbfvHiRQ0ZMkQ5OTnatGmTDh8+rPXr12vv3r26/fbbtXDhwhLb2q5dO508eVLff/+9jh49qrNnz+qjjz7S6tWr1aZNG33++edleyE81KNHDx09elRJSUkaOnSobfvx48d1++23a+DAgUpISNCZM2c0YsQITZw4Ub169dKFCxfcHjcvL08jR47UsGHDNHDgQNtz/Oc//1F6erquvfZaLVq0yGX99PR0de3aVT/88IOWLVumlJQUnTp1SnPmzNF3332nv/zlL/riiy9sM47aK821HTZsmO290aVLF0lS8+bNbdus/+x750aMGKGjR49qy5Ytbs/d3t69e3XNNddo8eLF+vTTT3XixAmlpKRo5syZmj17tjp06OBy7blvv/3W6Xm88MIL+vLLL7VkyRLt27dPBw8eVHBwsCZOnKhHHnnEZVsKCgrUv39/ffDBB3r//fd16tQpnTp1ynacdu3aadGiRfrpp59KfX4oOwIcAABAGYSFhXm837PPPqvBgwdr0qRJqlWrliSpY8eOeu655yRJTz/9tLKyslwe65FHHlGbNm00b948NWvWTNKl9cRuvPFGff7558rNzdXYsWO1Z8+esp5WmVhn7SwoKNADDzyguXPnauDAgfLz81PNmjX1wgsvaPjw4dq8ebPTni+rwsJCDRo0SMuWLdP06dP12GOPqWbNmpKkiIgILVmyRO3atdOYMWP00UcfOT3G22+/rYSEBK1cuVJt2rSRdOk16ty5s7799lsNGDBAd999t86ePeuyHaW9tp4q7XETEhJ000036ezZs1q9erU6duxoK7vpppv0zTffKDExUd26dXO7gLj9861YsULHjh3TZ599pkaNGkm69Jq+9957kqR//OMf+vnnn50e5/PPP9ePP/6ohQsX6i9/+Ytte2xsrD777DM999xzuvfee/X777+X6vxQPgQ4AACASpCUlKSdO3fqoYceKlY2ePBgSVJqaqrLWykvXryodevWKSkpyWlA69Kli4KDg1VQUKDPPvvMu40vpaysLDVr1kzXX399sbIJEyZIkn788UeXMze+9957+te//qWQkBCNHz++WLm/v7+effZZWSwWTZgwwWHpB6sffvhB4eHhaty4sdPnmD59uk/PKGo2m3X//fcrNTVVd955p1q0aFFsn/bt26t///46efKkbZH5krz66quaPXt2se2dOnWy/THAVQ/wDz/8IEmKiYlxWv7ggw9qxIgRpWoHyo8ABwAAUAkKCwv16KOPOi2LioqyPf7ll1+c7pOfny+LxaKEhAS1b99eX3/9tUO5n5+frWfl4MGD3ml0GYwaNcrp9i5dutjGyE2fPr1Y+YULF/Tiiy9KurReWp06dZwep3///goICFB2draef/75YuXp6elKTU3VqlWrnNb38/PTSy+9VJpTqRKLFi3Srl27JEm33Xaby/0GDhwoSVq3bp3Lc7U3dOhQNWzY0GlZZGSkJNfvvfT0dEnS4sWLXR5/2rRpJbYB3sE6cHCQMCahqpsAAEC11atXL6fbg4KCbI/PnTvndJ+6devqjjvu0FdffSWLxWKbQMOZixcvlq+h5eCqd8vPz0/t2rXTpk2b9Pvvv2vv3r269tprbeX//Oc/bePjrrvuOpfHr1Onjlq1aqX9+/fru+++U3p6uurWrWsrj4mJUWJiooYNG6YXX3xRTz31lEJCQhyO0a9fP6c9W77Afnyfu9fB/rbKRYsW2QKdK67ee9L/3n+u3nsxMTFat26dnnrqKR0+fFhTp05V/fr1HfaJjY3VTTfd5LYN8A564AAAACpB7dq11bx58xL3s86S6MyyZcv09ddf67vvvtN9993nxdZ5R61atWzj4Zyx9vRI0saNGx3K1qxZY3scHR3t9nmsPZa5ubnasGGDQ9mECRPk5+ennJwcTZ06VVFRUXr++ecdxor5+flp//79JZ1OpcvOzra9Ln5+fg6vV1H2vbb2r50rrm5/tOfqvff4448rKChIZrNZs2bNUlRUlB5//HHt3bvXYb9NmzYpIiKixOdB+RDgAAAAKkHRHouyCAgI0ODBg3XbbbcpPT1da9as0euvv64777xTN998s06fPu2FlpadfU+iM/aTaqSkpDiUHTt2zPbYvkfNGfty+3qS1Lt3by1evNjW63b+/Hm98cYbatmypQYOHKhVq1bJYrG4P5EqkpycrMLCQkmXZjK1TuDijP1rkJGRobS0NLfHbtCgQZnb1aZNG33//fe2W3SzsrI0b948xcXF6aabbtIXX3zh0RIRKB8CHAAAQCWoUaP8I1fy8/M1f/58de3aVU2bNtU//vEPmUwmvfXWW/rpp590xRVXeKGlFcfdraL2s0IGBgaW+jh//vlnsfK7775b8fHxuu+++2yve2FhoVavXq3bbrtN7du31/r168t0DhWprK+B5Px1sFfe91/v3r21Z88ePfXUUwoODrZt37x5s+6++25dffXVWrZsWbmeA6VDgAMAADCAs2fPqnv37nrkkUd04sQJ/frrr/ryyy81atQo2yLhvi43N9f2uGiPkP0EG3l5eaU+jrVXqKiWLVvqs88+09GjRzV9+nSH2zL37Nmj/v37l7juXmUr62sguX4dvCkiIkJz5sxRUlKSZs2apdjYWFvZkSNHNHLkSL3++usV3o7LHQEOAADAAB5//HFt27ZNkvTBBx+odevWVdyi4oqGiqIyMjJsj5s2bepQZh+wrLMeumJfXnS83Pjx4/XPf/7T9v9mzZrpxRdf1OHDh7V69Wrdfvvt8vPzk9ls1tNPP13ic5XViRMnPK7TvHlz+ftf+np+8eJFt7cl2rc7LCzMNsNnRbAuHm5Vv359TZgwQfv27dPmzZs1evRo2+2eL7/8sg4fPlxhbQEBDgAAwOelpqZq+fLlkqR69erp1ltvLbbP2bNndfLkyWLbT5w4odTU1ApvoyTl5OQ4hLSikpOTbY979uzpUDZgwADb46Lj2oo6fvy4pEu3Ed5yyy3FymfMmFFsm7+/vwYMGKBvvvlGW7ZsUf369ZWamqpff/3V7XOV1SuvvOJxndq1a9teF4vFoqSkJJf7Wl8DyfG1qyjvvPOO017BG2+8UYsWLdKePXtkMplUUFCgf//73xXenssZAQ4AAMDH/fHHH7bHUVFR8vPzK7bPkiVLnH7B/vLLL0sMRN60detWp9stFovi4+MlSa1atXJYQkCShgwZYlv7zdV6ZNKl9eJ+//13SdKgQYOcTniyY8cO/etf/3J5jG7dutkClrPQW1rW3jJnk6JkZ2eX6Zj33HOP7bG718G6VlzROhXlxIkT+vzzz12Wt27dWnPnzpVUvtcUJSPAAQAA+LiAgADb46JrmkmXJjfZtGmTbap4++ng9+3bp8aNG1d8I/9/S5Yscbp9+/bttp5AZ4s+16lTx7bA98aNG21rwhW1du1amc1m1a5d22lPm9Wjjz6qzMxMl+XWKfrLM3asXr16kqQzZ8443O6Ynp5e4qyQrtxzzz229d++//57l/tZF+/u06dPiWvAecuUKVMcelGL8sZripIR4KqZ/a1jPfoHAAB8X5s2bWy9U3/88UexHp/58+frscceU5s2bSRJ+/fvV2ZmppKSkrRjx45i480q0sWLF21j9exZx1D169dPd999t9O6Tz31lHr37q2srCy9//77xcoLCwv19ttvS7p0S99VV13lsh2HDx/WiBEjlJWV5bT8p59+Unh4uLp161biObnSvXt3SZduHbX2PuXm5uqJJ54o83EDAgL02WefKTw8XMuXL9eRI0eK7RMfH6+1a9cqIiJC8+fPL3P7PZWamqohQ4a4nPHyp59+Uo0aNdSnT59Ka9PlqPzz2QIAAI/wBzTfZN9b46r3pyz7W/fLzs6WxWJxevujfX1ngSMoKEivvfaann76aZ0+fVrTpk3TtGnT5O/vry+//FIWi0W9e/dWRkaGvvnmG507d07R0dHKysrS448/7vHzlcd7772nu+++W5MnT9att96qgoICvf3221q2bJl69uyplStXuqzr7++v77//XqNHj9ZLL72ksLAwjR07VjVr1tSpU6c0YcIE/frrr/rHP/6h+++/3+Vx7rnnHr388st6++231a1bN02fPl233nqratasqdzcXH366af64IMP9OmnnzpMiW9V2mv74IMPau7cuTp8+LAmTZqkt956S9nZ2crNzXW6UHhpj9u2bVtt2rRJAwYM0K233qrFixerY8eOkqR///vfuueee9SyZUutXbvW7Qyk9s/n7jpb2+LuPdqrVy99/PHH+uyzz9StWze9+OKLGj58uGrXrq2CggJ99dVXmjZtml555ZUSF2JH+dADBwAALmsmk0kmk0mTJ0+2bbvzzjudbpek4cOHKzo6WnPmzLFt69atm0wmkz7++GNJl3qhTCaTmjZtahvHdObMGUVERMhkMtnGcG3YsEEmk0lRUVG2Y61YsUJRUVG22+isnnrqKW3atElDhgzRggUL1LhxY3Xv3l0FBQUaP368JGno0KF69913ddVVVyknJ0f9+/e33a74xx9/yGQyuWz77bffXs5X8pJGjRpp5cqVWr9+vdq2basrrrhCy5Yt05w5c7Ru3TqngcleUFCQvvzySy1btkzfffedoqOjFRkZqW7duik0NFQJCQluw5skTZ48WVdeeaU++OADzZ07Vx9//LGaNWum5s2bq0WLFtqwYYM2bdqk0aNHO9QrzbW1Fxoa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AAB4S7UIcJJ09913S7q0HoOriUwOHDggSerTp48aN25caW0DAAAAAG+oNgGuXbt26tKli7KyshwW9rYym83avn27QkJCNHr06CpoIS4nWVlZysrKcrvPn3/+WUmtAeBtZ86ccVvO5xvwbXyGYWTVYh04qylTpujpp5/WokWLdO2119rGxUnS6tWrlZqaqtdff10RERFV2ErP/Pbbb1q6dKlSU1Nt53PzzTdr0KBBDucH3zJ//nxt3bpV/fr1U4cOHRQREaHCwkKdP39eBw4c0IYNG3Trrbdq0KBBLo9x5swZLVmyRImJiQoMDFReXp46dOigESNGlHnhR5TP3LlzVbduXd17772l2j89PV1Lly5VfHy87Rq2atVKo0aNUqNGjUp1jHXr1mnNmjUym80qLCxUcHCwhg0bps6dO5fnVOBEaa/vb7/9pokTJ+qmm27SDTfcoBYtWigoKEgXLlzQsWPHtHXrVqWnp+u1115TYGCgy+OYzWZ988032rhxo/z8/GQ2m9WgQQONGDFCbdq08fbpXZaOHDmiNWvW6Ny5czp79qzOnDmjhg0bqkuXLho0aFCJP0v5DPu2sl5fPsPGsXv3bv3www/Kzs5WZmamUlJS1LRpU/Xq1Uv9+vUr1Xfh8n6f8snrbKlmzp07Z3nuuecsEyZMsKxfv97y888/W/7+979bRo8ebdm+fXtVN88j//znPy233XabQ7vPnj1reeKJJyyTJ0+25ObmVmHr4M6bb75p6d27t9N/t99+u2Xt2rVu6yckJFj++te/WpYsWWIpKCiwWCwWS25urmX27NmWu+66y3LixInKOA3YOX36tOWvf/2rZcGCBaXaPykpyTJy5EjLu+++a/usFhQUWBYtWmQZMmSI5bfffnNb32w2W1577TXLfffdZ0lOTrZtP3DggOWOO+6wfPLJJ2U/GRTjyfXdvXu3y8937969La+99prl4sWLbo+Rk5NjmTBhguXJJ5+0nDt3zrZ927Ztlttuu83y7bfflvucLnffffed5YMPPrBcuHDBtu3ChQuWuXPnWnr37m0ZOnSoZceOHS7r8xn2beW5vnyGjWH27NmWadOmOVzj9PR0y6RJkyy9e/e2TJgwocTrVN7vU756navNLZRW9evX1xtvvKFx48YpPT1dx44dU/v27fXpp58a6q9dW7Zs0QcffKBRo0Y5tLtBgwaa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"},"metadata":{"image/png":{"width":440,"height":440}}}],"execution_count":58},{"id":"600d07d7-3dd9-4f56-aea2-6d2e7d892a31","cell_type":"markdown","source":"When we chose a DF and start sampling, we'll probably want to decide on some truncation criteria to decide which streams to actually run. For example, a progenitor at 200 kpc that never gets close enough to strip is not worth simulating because it would never form a dense stream. We might want to require that the pericenter radius is < 10 kpc or something. A topic for us to discuss!","metadata":{}},{"id":"081c7195-cfa7-4886-a273-6f9d78c4bc27","cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment