Skip to content

Instantly share code, notes, and snippets.

@taoning
Last active July 13, 2022 06:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save taoning/25f7a83329afce11b9c214f3fb9baca1 to your computer and use it in GitHub Desktop.
Save taoning/25f7a83329afce11b9c214f3fb9baca1 to your computer and use it in GitHub Desktop.
Do "pass" style annual simulation
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "45fa962c-9b93-4016-8029-611014addfce",
"metadata": {},
"outputs": [],
"source": [
"import subprocess as sp\n",
"\n",
"from frads import mtxmult\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"from IPython.display import clear_output"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "addb0090-b50d-4c22-9809-768e8b4148b2",
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"id": "4d90547c-3e11-494a-bd27-a90600b47ddf",
"metadata": {},
"source": [
"## Here we define our plotting routine"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "fbf139d6-7f62-4bf3-8a1c-e43bc1e26072",
"metadata": {},
"outputs": [],
"source": [
"def live_plot(x, y, z, figsize=(7,5), title=''):\n",
" clear_output(wait=False)\n",
" plt.figure(figsize=figsize)\n",
"\n",
" fig, axes = plt.subplots(figsize=(5, 5.75))\n",
" # Create contour in 11 bands\n",
" cs = axes.contourf(x, y, z, cmap='turbo', levels=[i/10 for i in range(11)])\n",
" # Plot color grid\n",
" im = axes.pcolormesh(x, y, z, cmap=\"turbo\", shading=\"auto\")\n",
"\n",
" # Mapping the 50% contour line over the plot\n",
" axes.contour(cs, colors=\"w\", linewidths=[0,3,0], levels=[0, .5, 1])\n",
"\n",
" # Adding the legend and turn off axis visibility\n",
" cbar1 = plt.colorbar(im)\n",
" axes.spines[:].set_visible(False)\n",
" axes.set_title(title)\n",
" axes.get_xaxis().set_visible(False)\n",
" axes.get_yaxis().set_visible(False)\n",
" fig.tight_layout()\n",
" plt.show()"
]
},
{
"cell_type": "markdown",
"id": "8b3df396-7f2e-4c20-9df6-926485e57b13",
"metadata": {},
"source": [
"## Gather the necessary file paths and define our rcontrib command"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "b41f3b47-a462-4339-b3db-f70c4e6ae350",
"metadata": {},
"outputs": [],
"source": [
"grid_point_path = \"wp.pts\"\n",
"octree_path = \"oo.oct\" # this octree include the model and sky as a receiver.\n",
"sky_matrix_path = \"sanjose.smx\"\n",
"rc_cmd = [\"rcontrib\",\n",
" \"-n\", \"1\",\n",
" \"-f\", \"reinhartb.cal\",\n",
" \"-c\", \"1\",\n",
" \"-fo+\",\n",
" \"-bn\", \"1\",\n",
" \"-b\", \"if(-Dx*0-Dy*0-Dz*-1,0,-1)\",\n",
" \"-m\", \"groundglow\",\n",
" \"-p\", \"MF=4,rNx=0,rNy=0,rNz=-1,Ux=0,Uy=1,Uz=0,RHS=+1\",\n",
" \"-bn\", \"Nrbins\",\n",
" \"-b\", \"rbin\",\n",
" \"-m\", \"skyglow\",\n",
" \"-h\", \"-fff\", \"-I+\", \"-u+\", \"-y\", \"460\", \"-ab\", \"6\", \"-ad\", \"64\", \"-lw\", \"0.0005\",\n",
" octree_path]"
]
},
{
"cell_type": "markdown",
"id": "e37c7b27-05d2-488c-8899-23c5426ae143",
"metadata": {},
"source": [
"## Setting up our sensor grid and also grid for our plots. Grid points are read into single precision floats"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "8ed30e23-31ec-413a-b628-bb424ce03527",
"metadata": {},
"outputs": [],
"source": [
"grid_array = np.loadtxt(grid_point_path, dtype=np.single)\n",
"xpos = np.unique(grid_array[:,0])\n",
"ypos = np.unique(grid_array[:,1])\n",
"x, y = np.meshgrid(xpos, ypos)\n",
"x = x.transpose()\n",
"y = y.transpose()"
]
},
{
"cell_type": "markdown",
"id": "2a3d3d2e-de4e-45c0-ace9-50537b08e8ee",
"metadata": {},
"source": [
"## Load in the annual sky matrix into a numpy array."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "a558e85e-bb44-4e93-9643-e0789f982a61",
"metadata": {},
"outputs": [],
"source": [
"with open(sky_matrix_path, 'rb') as rdr:\n",
" smx = mtxmult.smx2nparray(rdr.read())"
]
},
{
"cell_type": "markdown",
"id": "80d47994-470a-4011-8350-addd0fe7d8e3",
"metadata": {},
"source": [
"## Run and plot\n",
"#### We call rcontrib to generate our matrix; take the results into a numpy array; multiply the two numpy array; figure out fractions of the year where a sensor read > 300 lx; plot it; and repeat for each pass."
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "11beae49-a794-4d59-b707-d8b19ec885f2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 504x360 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 360x414 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"proc = sp.run(rc_cmd, input=grid_array.tobytes(), stdout=sp.PIPE)\n",
"out = np.frombuffer(proc.stdout, np.single).reshape(grid_array.shape[0], 3*smx[0].shape[0])\n",
"res = mtxmult.numpy_mtxmult([[out[:,::3], out[:,1::3], out[:,2::3]], smx])\n",
"fraction_per_sensor = (res > 300).sum(1)/res.shape[1]\n",
"fraction_value = (fraction_per_sensor > 0.5).sum()/grid_array.shape[0]\n",
"cumulate = fraction_per_sensor\n",
"live_plot(x, y, fraction_per_sensor.reshape(len(xpos), len(ypos)), title=f\"Pass: 0, sDA(300): {fraction_value: 0.2f}\")\n",
"num_pass =60\n",
"for idx in range(num_pass):\n",
" proc = sp.run(rc_cmd, input=grid_array.tobytes(), stdout=sp.PIPE)\n",
" out = np.frombuffer(proc.stdout, np.single).reshape(grid_array.shape[0], 3*smx[0].shape[0])\n",
" res = mtxmult.numpy_mtxmult([[out[:,::3], out[:,1::3], out[:,2::3]], smx])\n",
" fraction_per_sensor = (res > 300).sum(1)/res.shape[1]\n",
" fraction_value = (fraction_per_sensor > 0.5).sum() / grid_array.shape[0]\n",
" cumulate += fraction_per_sensor\n",
" live_plot(x, y, (cumulate / (idx+2)).reshape(len(xpos), len(ypos)), title=f\"Pass: {idx}, sDA(300): {fraction_value: 0.2f}\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "214ca67c-4fa9-4807-ab8f-1f08488e3cf5",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment