File size: 95,632 Bytes
b5426a6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 |
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "ee7b27ff-1a8f-4fbe-bae8-e4a34f18a70d",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"from skimage import io\n",
"from skimage.transform import resize\n",
"from skimage.color import rgb2gray\n",
"import json\n",
"\n",
"from fastai.vision.all import Path, Image\n",
"\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "681dd136-1246-44c5-b576-6877f429043a",
"metadata": {},
"outputs": [],
"source": [
"# IMAGE_DIRECTORY = Path('/storage/2dmatpedia/images/no_dos_bw/low_dpi_bands')\n",
"OUTPUT_DIMENSIONS = (64, 64)\n",
"DATA_DIRECTORY = Path(\"../../../storage/2dmatpedia\")\n",
"LINEWIDTH = 3\n",
"output_name = f\"dpi_none_thickness_{LINEWIDTH}_{OUTPUT_DIMENSIONS[0]}x{OUTPUT_DIMENSIONS[1]}_binary\""
]
},
{
"cell_type": "markdown",
"id": "2f620e3b-5b0e-4a5a-a564-9eddd9db5598",
"metadata": {
"tags": []
},
"source": [
"## High DPI"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "233b6f20-9473-44c8-bf79-17e3e76d5056",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(8, 8))\n",
"\n",
"bands_dict=json.load(open(DATA_DIRECTORY/\"bands/2dm-4000.json\"))\n",
"energies_minus_efermi = np.array(bands_dict[\"bands\"][\"1\"]) - bands_dict[\"efermi\"]\n",
"ax.set_ylim([-4, +4])\n",
"ax.set_xlim([0, energies_minus_efermi.shape[1]-1])\n",
"\n",
"\n",
"for band in energies_minus_efermi:\n",
" ax.plot(band, c=\"black\", linewidth=LINEWIDTH)\n",
"\n",
"# If we haven't already shown or saved the plot, then we need to\n",
"# draw the figure first...\n",
"ax.axis(\"off\")\n",
"fig.canvas.draw()\n",
"\n",
"# Now we can save it to a numpy array.\n",
"data = np.frombuffer(fig.canvas.tostring_rgb(), dtype=np.uint8)\n",
"data = data.reshape(fig.canvas.get_width_height()[::-1] + (3,))\n",
"\n",
"# now crop out axis, resize & grayscale:\n",
"data = data[70:-72, 72:-58]\n",
"image = Image.fromarray(data)\n",
"\n",
"\n",
"# # and replot:\n",
"# fig, ax = plt.subplots(figsize=(8, 8))\n",
"# ax.imshow(data)"
]
},
{
"cell_type": "markdown",
"id": "64aece99-25fb-4fed-92d9-e7e04c20a8f0",
"metadata": {},
"source": [
"# Save them"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "86aef83a-77b8-4b65-b27a-9e9631c693c5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7fcb510804f0>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 88x88 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAdQAAAHSCAYAAABVfjpxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAx9ElEQVR4nO3deXxV1b3///cSZFZQiGABRUBFwIIQQIXrgFcEUbDiAMJV0Ct1rNAqg16r1lYc6iwOOABVK3BxrFVEEaSoIGGwoGAZFZRRRlFG1/ePnP5+wN2fleRk5SQhr+fj0YfJ55219+KcnHx6kr32ct57AQCAwjmouCcAAMCBgIYKAEAENFQAACKgoQIAEAENFQCACGioAABEUL4wg51znSU9KqmcpOe89/eGvr5WrVq+QYMGBT7PTz/9lFj/8ssvC3ysA8Hxxx+fWK9atWpax5szZ46ZhZZVHXzwwYn1X/7yl2nNA4UXer5mz54d/XyHHnpoYr1x48bRz+Wci3q8RYsWmdmWLVvMrGnTpmZWuXLlQs2pOG3YsMHMli1blsGZlAytWrUys9mzZ6/33mftX3fprkN1zpWT9C9JZ0taKWmmpF7ee7PLZWdn+5ycnMQsNI8vvvgisX7iiSeG5pdW9vPPP5tZSTFt2rTEert27dI6XrVq1cxsx44dZla3bt3E+sqVK9OaBwpv+/btZhZ6nvfs2ZPW+Tp16pRY//vf/57W8UIOOsj+hVoos3Tt2tXM3nnnHTObN2+emTVr1iyxHvv/DKQr9PPtlVdeMbM+ffoUxXRKNOuNnCRVrlx5lvc+e/96YX7l21bSYu/9Uu/9TkljJHUvxPEAACi1CtNQ60pasdfnK1O1fTjn+jvncpxzOevWrSvE6QAAKLmK/KIk7/0I73229z47K+v//MoZAIADQmEa6reS6u/1eb1UDQCAMqcwDXWmpGOdc8c45ypI6inprTjTAgCgdEn7Kl9Jcs6dK+kR5S6becF7/6fQ17dq1cpPnTo1MVuzZo05zroEP3Rl37nnnmtmPXr0MLN+/fqZWToqVqxoZuXLF2rVUkZUqlTJzNavX5/BmaCwQq+xRo0aZWweu3fvNrPQVeV33XWXmf32t78t8DxC39vW1cuSNGXKFDOzluLUrl3bHBO6+jq2CRMmmFmXLl2in69ChQqJ9dDVxqHvj0wKXfOTlZWVeJVvoX6ie+/fkWRfXw4AQBnBnZIAAIiAhgoAQAQ0VAAAIqChAgAQAQ0VAIAICrVspsAncy6tk5UrVy6xfvrpp5tj+vfvb2aXX365mVk7qEjStm3bEutVqlQxxwwfPtzM+vbta2bAgWrUqFFmdvPNN6d1TOu1GdosYMyYMWZ21llnmdkpp5xiZosXLzYzS2h5Rq1atQp8PEnatWtXYv21114zx/Ts2TOtc4V22Bk2bFhifcWKFYl1SXr88cfNbOfOnfmfWNGKfnN8AACQQkMFACACGioAABHQUAEAiICGCgBABCXmKt/Qje6tq+oGDRpkjunevbuZdevWzcxOPvlkM7OuWLPqknT99debGYA4hg4dmlh/8cUX0zpe6Mrb2FeahjbQSOeqYUmaPXt2Yj30czGkatWqZnbbbbeZmfW8hISuNh47dmyBj1dEuMoXAICiQkMFACACGioAABHQUAEAiICGCgBABDRUAAAiKDHLZkI3gX7ppZcS6507dzbHhG5Yf8ghh5jZmjVrzGzw4MGJ9XvvvdccA6D0ueiii8xs7ty5Uc+1ZMmSqMdLV7Vq1cxswIABZnb33XdHnUfoXM8++6yZ/fjjj1HnkQeWzQAAUFRoqAAAREBDBQAgAhoqAAAR0FABAIiAhgoAQAQlZtlMSIUKFRLrxx57rDmmRYsWZtayZUszC+0cc/vttyfWBw4caI4BgJDmzZsX9xQkSV26dDGzBx54IIMzsYWWSr733ntm1rhx48T68uXLzTG7d+8OTYVlMwAAFBUaKgAAEdBQAQCIgIYKAEAENFQAACKgoQIAEEH5TJ6sSpUqOuGEEwo8rkGDBon1UaNGmWNGjhxpZnfccYeZ3XLLLWbG8hgAsc2fP7+4p1BqhJZKTps2zcys5ZBPPvmkOWbLli1mNmvWrMQ671ABAIiAhgoAQAQ0VAAAIqChAgAQAQ0VAIAIaKgAAESQ0d1msrOzfU5OTrTjTZ8+3cxOOeUUM7v00kvNbMyYMYWaEwAg804++WQzmzFjRmJ91apV5pg6deqYmXOO3WYAACgqNFQAACKgoQIAEAENFQCACGioAABEkNGb46dr27ZtifWZM2eaY2rWrGlmJ554YqHnBAAoOdq0aWNm8+bNS6xPnTrVHNOjR48Cz4F3qAAAREBDBQAgAhoqAAAR0FABAIiAhgoAQAQ0VAAAIigxN8ffvn27OW7UqFGJ9aFDh5pjfvOb35jZXXfdZWYAgANLkyZNEutfffWVOeann34ys8qVK3NzfAAAigoNFQCACGioAABEQEMFACACGioAABHQUAEAiCDP3Waccy9IOk/SWu9981TtcEljJTWQtFzSJd77jXkda+PGjRo/fnxitmnTJnPcoEGDEus33HCDOYalMQAASTrnnHMS68uXLzfHvPbaawU+T37eoY6S1Hm/2hBJk7z3x0qalPocAIAyK8+G6r2fKmnDfuXukkanPh4t6YK40wIAoHRJ92+otb33q1Ifr5ZU2/pC51x/51yOcy5ny5YtaZ4OAICSrdAXJfncexea9y/03o/w3md777MPPfTQwp4OAIASKd2GusY5d6Qkpf67Nt6UAAAofdJtqG9JuiL18RWS3owzHQAASqc8d5txzr0i6QxJtSStkXSHpDckjZN0lKSvlbtsZv8Ll5KOZZ6sUqVK5rgbb7wxsX7//ffndUoAABLVqVPHzNasWRMamrjbTJ7rUL33vYzorLzGAgBQVnCnJAAAIqChAgAQAQ0VAIAIaKgAAERAQwUAIII8r/KNqVatWurevXtiVr16dXMcy2MAALH17t3bzDZv3mxmzz//fGKdd6gAAERAQwUAIAIaKgAAEdBQAQCIgIYKAEAEed4cP6bs7Gyfk5OTsfMBABCbcy7x5vi8QwUAIAIaKgAAEdBQAQCIgIYKAEAENFQAACKgoQIAEAENFQCACGioAABEQEMFACACGioAABHQUAEAiICGCgBABDRUAAAioKECABABDRUAgAhoqAAAREBDBQAgAhoqAAAR0FABAIiAhgoAQAQ0VAAAIqChAgAQAQ0VAIAIaKgAAERAQwUAIAIaKgAAEdBQAQCIoHwmT7Zy5UrdfPPNBR53xBFHJNYHDRpU2CkBQDR33XVXYn3r1q0ZnknBtWzZ0sz69OmTuYlkkPV8Sek9Z7xDBQAgAhoqAAAR0FABAIiAhgoAQAQ0VAAAInDe+8ydzLm0TlajRo3Eeu/evQsznUQdOnQws549e0Y/n+XJJ580sy+//DJj88ikpk2bmtl1112XwZmUfAMHDkys79q1K8Mzwd5GjhyZWP/xxx8zPJOCa9y4sZmdc845aR2zW7duifVOnTqldbzYPxet50vK8zmb5b3P3r/IO1QAACKgoQIAEAENFQCACGioAABEQEMFACACGioAABFkdNlMgwYN/P/8z/9EO97SpUvNbNiwYWkds0mTJmbWvn37tI6Zjvfee8/MVq5cmbF5ZFK9evXMLN3L9g9Uo0aNSqzv2bMnsxMp4a6++moza9u2rZndc889ZrZs2bJCzWl/zz77bNTjhcyfP9/MHn300ejny87+PytLJEktWrRI63ixfy7++c9/NrPq1aub2dVXX82yGQAAigoNFQCACGioAABEQEMFACACGioAABHQUAEAiCDPZTPOufqS/iKptiQvaYT3/lHn3OGSxkpqIGm5pEu89xtDx8rOzvY5OTkRpp1r3bp1Zha6vBpF67vvvjOzwYMHZ3Am6enbt6+ZLVy4MLE+ffr0IppNwbz44ovFPYUS5fPPPzezVatWmVno58f69evN7Iknnkish5Zg9OnTx8ximzBhgpl16dIlrWOed955ZnbppZemdcxM6dGjh5lVrlzZzJxzaS+b2S3pd977ppJOlnS9c66ppCGSJnnvj5U0KfU5AABlUp4N1Xu/yns/O/XxVkkLJNWV1F3S6NSXjZZ0QRHNEQCAEq9Af0N1zjWQdJKkGZJqe+///TuT1cr9lXDSmP7OuRznXE7oV7QAAJRm+W6ozrlqkl6VNMB7v2XvzOf+ITbxj7He+xHe+2zvfXZWVlahJgsAQEmVr4bqnDtYuc30Ze/9a6nyGufckan8SElri2aKAACUfHk2VOeck/S8pAXe+4f2it6SdEXq4yskvRl/egAAlA7l8/E17SX9l6R5zrm5qdqtku6VNM45d5WkryVdUiQzDAj9CjmTl6IfyHbu3Glml112WWJ969ataZ2rZcuWZnbbbbeldcx0tGrVysys6wBWrFgRfR6hnVI2bdqUWH/jjTfSOlfdunXNrCh2IYltxIgRifUxY8aYY0K7k/zpT38ys+OOO87MrCUklSpVMsdkUug1NmDAADN75JFHzKxZs2ZmVtZ+DufZUL330yQ5Iz4r7nQAACiduFMSAAAR0FABAIiAhgoAQAQ0VAAAIqChAgAQQX6WzeAAd+GFF5rZ9u3bzezdd99NrNerV88c87e//c3MQsug2rVrZ2aZ1LBhw8R6UcwvtEPJjh07Euvnn39+WueqWrWqmS1ZssTMWrdunVi/66670prH//7v/5rZ6NGjzWzevHmJ9dDSmDvvvNPMrr32WjM77LDDzKykq1OnjpndfPPNZhZaPjd+/Hgzs74/Lr74YnNMacY7VAAAIqChAgAQAQ0VAIAIaKgAAERAQwUAIAKu8i2hhg4damYzZ86Meq7JkyebWbly5czs/fffT6xXqVLFHHPqqafmf2Jl3Nlnn13gMdZzkpfQzf2vvPJKM5s+fXpi/eOPP05rHsuXLzez0NXGN910U2Ldulm9FL5RfGm+kjddoQ0STjzxRDN78sknzSz0nB2IeIcKAEAENFQAACKgoQIAEAENFQCACGioAABEQEMFACAC573P2MmqVavmQ5eqF1SzZs3M7JlnnjGzDz74wMxCN8zOpC+++MLMNm3aFPVckyZNMrNKlSqZWTpLYEL/rl//+tcFPl5ZZT1nFStWTOt4P/74o5nNnj3bzGbMmJFYD91oPaR3795mds0115hZo0aNEutHHnmkOeZ3v/udmVn/rrIqtPnDtm3bzGzChAmJ9dAGGqXBxx9/PMt7n71/nXeoAABEQEMFACACGioAABHQUAEAiICGCgBABDRUAAAiyOiymSZNmvjnn38+MevQoUOBj1e1atXQucxsw4YNZrZs2bICz6O0a9WqlZk556KeK3SJ/cKFC6OeK+T66683s759+5rZrbfemlhPd5eXdFnPWeznKy9btmxJrC9atCit49WpU8fMQruhpCM0R+vfVRQqVKhgZunu2jNv3rzEemjnoJCsrCwzC83/22+/Tet8pQDLZgAAKCo0VAAAIqChAgAQAQ0VAIAIaKgAAERAQwUAIIKMLpupUqWKt5az/OUvf8nYPGJ7+OGHzeyFF17I4ExKt/bt25vZ008/HfVctWvXNrPQEoEVK1Yk1jdv3lzoOe3vjDPOMLPvv/8++vlKugEDBpjZVVddlbmJRLZz504zu/zyy9M65k8//ZRYD+2+E3qNjRs3zszuvvvu/E+skJ566ikzS2fpZUjr1q3NbOfOnSybAQCgqNBQAQCIgIYKAEAENFQAACKgoQIAEAENFQCACDK6bMY5563dMBo2bFjg47Vs2dLMxo8fb2Zvv/22mYUuzbeEljBs2rSpwMeTJGtXHkk67bTT0jpmSVelShUz+8UvfpHBmZQMoZ2P9uzZk8GZlAw1a9Y0s8MOOyzquS666CIzmzt3btRzhX4GL126NOq5Qq+x0JKarl27mtmNN95oZg888EBifcSIEeaYkNAcQ/+2dIQee+89y2YAACgqNFQAACKgoQIAEAENFQCACGioAABEkPGrfGMer0KFCmYWusG5deNoSdqwYUOh5lQQw4cPN7MPP/zQzKZPnx51HosXLzazSpUqRT0XDixTpkxJrPfp0yezE4ls3bp1Zha6mf2BqmrVqmZWo0YNM7vuuusS6wsWLDDHvPTSS/meVzHiKl8AAIoKDRUAgAhoqAAAREBDBQAgAhoqAAAR0FABAIigVC+bKe0OOeQQM9u+fbuZ7dq1K+o8QjcdB0Ks78UtW7ZkeCYoiawb1v/888/mmNDPvhKEZTMAABQVGioAABHQUAEAiICGCgBABDRUAAAioKECABBB+by+wDlXSdJUSRVTXz/ee3+Hc+4YSWMk1ZQ0S9J/ee+D2zCcdNJJmjp1amK2Zs0ac1zjxo3zmmZGDBw4MLH+hz/8IcMzKbhGjRqZ2dq1azM4k8yxni8ps89Zx44dzWzmzJkZm0dR+M///M/E+uuvv57W8R566CEzu+OOO9I6puW1114zs2HDhplZ7Ods69atUY8X8v7775vZhRdeGP18gwcPTqz/9re/Ncf07dvXzF599dXCTinfQjsOWbuZ5ecd6g5JHb33LSS1lNTZOXeypPskPey9byxpo6SrCjhfAAAOGHk2VJ/rh9SnB6f+5yV1lDQ+VR8t6YKimCAAAKVBvv6G6pwr55ybK2mtpPclLZG0yXu/O/UlKyXVNcb2d87lOOdy1q9fH2HKAACUPPlqqN77Pd77lpLqSWorqUl+T+C9H+G9z/beZ9eqVSu9WQIAUMIV6Cpf7/0mSZMlnSKphnPu3xc11ZP0bdypAQBQeuTZUJ1zWc65GqmPK0s6W9IC5TbWi1JfdoWkN4tojgAAlHh5LpuRdKSk0c65csptwOO89287576UNMY590dJcyQ9n9eBDjroIFWrVi0x++GHHxLr6erUqZOZ/f3vf0/rmM65xHq5cuXSOl662rdvn1ifMWOGOWbPnj1pnSv2zjaZZD1fUmafs08++SRj50rXwoULzezEE080s0mTJiXWa9SokdY80t39avjw4Yn1/v37m2O6detmZukujVmxYkVivU6dOuaY8uXz82M4jsqVK2fsXJJUoUKFxLrVByRp7NixZpbu90fz5s0T61999ZU5JjRHS57PpPf+n5JOSqgvVe7fUwEAKPO4UxIAABHQUAEAiICGCgBABDRUAAAiyNzlZXkIXQW3YMGCxLp15VZeSsrVn6Erb88991wzC13Nawn9u0JXWGfyCsQDVWl4DEOvpdCVle+9915ivWvXrmnNI/TavO+++8zs17/+dWL9sssuM8e8++67ZhZ6vcyfP9/M6tWrZ2YlQefOnc3slVdeMbNevXqldb6hQ4cm1kNXgV9zzTVpnWv37t15f9F+Vq1aZWaVKlUq8PF4hwoAQAQ0VAAAIqChAgAQAQ0VAIAIaKgAAERAQwUAIIKSfz2/pCZNkrdfnTZtmjnmlFNOMbPevXub2ZgxY/I/sXzYvn27mfXp08fMJk6caGaffvppYv3kk0/O/8TyKZ1NC0JLH6pWrVqY6SAPoSUu27ZtS+uYBx1k///uc845J7GezhKGvOzYscPMrJvgjxs3zhwTWhbx0UcfmZn186i0Cy3vqlixopn9/PPPBT5X6LkMbchx8MEHm1mHDh3MLHQT/Jh4hwoAQAQ0VAAAIqChAgAQAQ0VAIAIaKgAAERAQwUAIIJSsWzGErrM+9BDD83gTGwDBgwws1dffdXMQvNPZ/eS77//3sxCSy2ysrIKfK7GjRub2cyZM80stAMF9rV+/frEemiZVv369dM6V+vWrc1s0qRJifXq1aunda4ff/zRzKydSyTphRdeSKwfcsgh5pjXX3/dzNq2bWtmB6qLLrrIzKzvN8neDSwk9HOxdu3aZtazZ88Cn0uyf7aElvilg3eoAABEQEMFACACGioAABHQUAEAiICGCgBABDRUAAAiKNXLZrKzs81s7NixZvbUU0+Z2caNG83ssMMOS6xv3rzZHBPa4ePwww83s2eeecbM6tSpk1hfuXKlOaZVq1Zmtm7dOjOrW7eumVm2bt1qZh07djSz9957z8zSWb5T2n333Xdm1rBhw8R6aBePdJ5LSfrmm2/MrHv37on1l156Ka1zDR8+3Mwee+wxM7OWRYwaNcocc9ZZZ+V3WggIPS+xhX5W7dy508ysHbpCS3TSwTtUAAAioKECABABDRUAgAhoqAAAREBDBQAgAhoqAAARlOplM+l66623zCy0o8WwYcMS60OGDDHHhJaCjB492syeeOIJM7v44ovNLLaPPvrIzBo1apRYX7hwoTnmhBNOMLMePXqY2bhx48zMWkZU2oWWOlnLY5o2bWqO+eKLL8wstOQg9HqxvhfT3dkmpGbNmmZmLd2wlvWg5Fq9erWZhX5GzJkzpyimUyC8QwUAIAIaKgAAEdBQAQCIgIYKAEAENFQAACI4YK/yrVatmpnVq1fPzDZs2GBmf/jDHxLrI0aMMMeEbsTfokULM/vhhx/MzNK4cWMzq1ixopl9+eWXZha6avTzzz8v8Lmsm7pL0j/+8Q8zGzBggJmNGTPGzEq6RYsWmdnu3bvNzHpe5s2bZ46ZP3++mS1btszMLr/8cjNr1qxZYj20YURoE4datWqZ2b333mtml112mZmh8EIbeYRuML9mzZoCn2vgwIEFHlNS8A4VAIAIaKgAAERAQwUAIAIaKgAAEdBQAQCIgIYKAEAEB+yymQ4dOpjZAw88YGa9evUq8Lnq1q1rZllZWWZ2yy23mNnHH39sZk2aNEmsv/vuu+aYBg0amFn79u3N7JNPPjEz6zGeMGGCOSa09OG2224zs9Bypq+//jqxfvTRR5tjMmnBggVm1qVLFzMLfV999tlnifVPP/3UHBN6TVSqVMnMevbsaWYjR45MrE+cONEcc+utt5pZ3759zeyqq64yMxStSy65xMyWLl1qZtZmI0cddZQ5ZuvWrWa2ceNGM7N+Lkrh7++YeIcKAEAENFQAACKgoQIAEAENFQCACGioAABEQEMFACCCA3bZTCbdcMMNZhbaUSa0E02ItVQhtDQmJLREJ7TUYteuXYn1Nm3amGNCu9cMGTLEzO6//34zu+mmmxLrjzzyiDkm3ccqHf369TMza8mPJK1atcrMZs2alVgPPV8HH3ywmV144YVmZn2/hXTq1CmtDGXDxRdfbGZz5841s0mTJplZaEeqI444Ij/TKjTeoQIAEAENFQCACGioAABEQEMFACACGioAABHQUAEAiCDfy2acc+Uk5Uj61nt/nnPuGEljJNWUNEvSf3nvdxbNNAtu/fr1ZjZv3ryo51q8eLGZDRw40MxCl4C3bNnSzKpXr56vecUwbdo0M7N2gDnvvPPMMaHdUELLiHr06GFm99xzT2I9tMNEaNebdJbUzJkzx8w2b95c4ONJ0tSpU82sT58+ifWzzjrLHHP44Yeb2csvv5z/iQF7Cb1erB2fHnzwwejzuOaaa8zs9NNPT6yHdqhJR0Heod4kae99qO6T9LD3vrGkjZLYWwkAUGblq6E65+pJ6irpudTnTlJHSeNTXzJa0gVFMD8AAEqF/L5DfUTSIEk/pz6vKWmT93536vOVkhJ3Q3bO9XfO5TjnctatW1eYuQIAUGLl2VCdc+dJWuu9T77XWR689yO899ne++ysrKx0DgEAQImXn4uS2kvq5pw7V1IlSYdKelRSDedc+dS71HqSvi26aQIAULLl+Q7Vez/Ue1/Pe99AUk9JH3rve0uaLOmi1JddIenNIpslAAAlnPPe5/+LnTtD0s2pZTMNlbts5nBJcyT18d7vCI3Pzs72OTk56c92Pxs3bjSzxx57zMxGjBhhZieddJKZLVmyJLG+cOFCc0y63n33XTPr3Llz9PPFtGLFCjPr1auXmYV2vYlt2LBhZhba9Wb27NmJ9auvvrrAYwqjS5cuifV33nkn+rmAdFmvpfvuuy+t47Vt29bM/vWvf5mZ9Xrv27evOSa07M45N8t7n71/vUDbt3nvp0iakvp4qST7XwcAQBnCnZIAAIiAhgoAQAQ0VAAAIqChAgAQQYEuSipK27dvN7O33347sR66qit0o/XBgwebWehm9tYN1YcOHWqOKYvq169vZi+88IKZ3XrrrWYWunL4s88+y9/E9jJ//nwzGz9+vJk9/PDDifWiuJK3a9euZvbaa69FPx9Q0t11111mFtpMYtCgQYn18uXtFtivX7/8TyyFd6gAAERAQwUAIAIaKgAAEdBQAQCIgIYKAEAENFQAACLI6LKZDRs26KWXXkrMNm/ebI674YYbEuu1atUyx9xyyy1m9qtf/crMrPlJ0pw5c8wsHR06dDCzX/ziF1HPVVIcd9xxZhZarvLpp5+a2YABAxLroeU0L7/8clpZOs455xwzC30PP/HEE2ZWoUKFQs0JyARrs5Fjjz3WHLNo0SIz+/DDD80s9DPfWmYW2tSiXLlyZmbhHSoAABHQUAEAiICGCgBABDRUAAAioKECABABDRUAgAic9z5zJ3Mu6smOOeYYMwvtXBJaTvHss8+a2S9/+cvEeps2bcwxIf379zeztm3bpnXMsmjKlCmJ9dASqEwKfS82bNgwgzMBSoYXX3zRzO68804zW7p0qZmFdv0aOXJkYn316tXmmDzM8t5n71/kHSoAABHQUAEAiICGCgBABDRUAAAioKECABABDRUAgAgyumzmiCOO8JdccknGzhfb2WefnVjPysoyx8yePdvMQruQhHZjQP7MmjXLzEK716Tj/PPPN7Ojjz466rmA0s5a6iZJEydONLMtW7YUwWwKbvjw4SybAQCgqNBQAQCIgIYKAEAENFQAACKgoQIAEAENFQCACDK6bCY7O9vn5ORk7HyxzZgxI7Ee2uVg8uTJZvbKK6+YWc+ePfM/sTJg4cKFZvb2228n1kOP/TvvvFPoOe3tv//7v83s+OOPN7N+/fqZWc2aNQs1J6C4TZ06NbE+ePBgc0yjRo3M7O677zaz0O5jsTnnWDYDAEBRoaECABABDRUAgAhoqAAAREBDBQAggvLFPYHSxLpqNHQ1acjrr79uZm3atDGz0FVwpdmSJUvM7I477jCzcePGFfhcZ555ppmdeuqpZmY9Z88991yB5yBJK1asMLPQpgtDhgxJrJcvz0saJYd1Nf306dPNMaGsT58+ZpbJq3wtvEMFACACGioAABHQUAEAiICGCgBABDRUAAAioKECABAB19jv57PPPjOziRMnJtbPPvtsc8ymTZvMLLTcI3TT9JK+bGbdunVm9uijj5pZaNlMOktjQjp16mRm1pIUSWrVqlViPXSz78WLF5vZY489ZmYhP/zwQ2K9UqVK5pg777wzrXMBsXXr1s3Mli1bZmajR482s2bNmplZ/fr18zexQuIdKgAAEdBQAQCIgIYKAEAENFQAACKgoQIAEAENFQCACFg2s5/Zs2ebmbWrzLBhw8wxrVu3NrNbbrnFzEK7l5xwwgmJ9aOPPtock65du3aZ2dChQxPrGzZsMMeMHDmy0HPKr9COMqEs5MILL0ys//zzz+aY3/3ud2b2zTffmNnvf/97M7vnnnsS6957c4y11EaSjjjiCDMbNGiQmQEffvihmVk/M0PLAqdMmWJmY8aMMbObbrrJzFg2AwBAKUJDBQAgAhoqAAAR0FABAIiAhgoAQAQ0VAAAIsjXshnn3HJJWyXtkbTbe5/tnDtc0lhJDSQtl3SJ935j0UwzrlmzZplZ6LJsa1eZ0G4zoWUzTZo0MbOxY8ea2c0335xYDy2bufXWW81sy5YtZrZnzx4ze/rppxPrtWvXNsc8/vjjZvbll1+a2VNPPWVm7du3T6z/8Y9/NMe0a9fOzNJx0UUXmVloKcuNN95oZitWrDCzhx56KLH+m9/8xhzz4IMPmlmNGjXMLLS0p2nTpon16667zhyDA0tohy4rCy2bCWX//Oc/8z+xYlCQd6hneu9beu+zU58PkTTJe3+spEmpzwEAKJMK8yvf7pL+vTndaEkXFHo2AACUUvltqF7SROfcLOdc/1Sttvd+Verj1ZISf8/nnOvvnMtxzuWENp4GAKA0y++tBzt47791zh0h6X3n3MK9Q++9d84l/qHIez9C0ghJys7Otv+YBABAKZavd6je+29T/10r6XVJbSWtcc4dKUmp/64tqkkCAFDS5dlQnXNVnXOH/PtjSZ0kzZf0lqQrUl92haQ3i2qSAACUdPn5lW9tSa875/799X/13k9wzs2UNM45d5WkryVdUnTTjGvRokVm9tFHH5nZ4MGDE+uhpTEh/fv3N7P58+ebmbXTSGjHkL/+9a9m9tNPP5lZ+fL2t8izzz6bWK9evbo5JvRYvf3222bWpk0bM7v33nsT66eeeqo5JpMuvvhiM7v99tvNLLQzj7UUx3pO8rJ69WozC82xXr16ifXQrk0hXbp0MbMePXqkdUwUH2t3ptNPP90cY+2mJUlHHXWUmVk/FyXpmWeeSawfeeSR5ph05NlQvfdLJbVIqH8v6ayoswEAoJTiTkkAAERAQwUAIAIaKgAAEdBQAQCIIL83dih1QjdRHj58uJl17NjRzC699NJCzakg53rsscfM7Lvvvivwuc4444wCj5GkcuXKmVmvXr0S66H5XXnllWYWGhd6zjp06GBmJd39999vZpdffrmZjRo1qsDnCl01vHnzZjNr0KBBgc8VMmnSJDP7/e9/b2YVKlQws/PPP79Qc0JY6DkLbeRh/cwMXcmbrr/97W9mZr3OYl/lyztUAAAioKECABABDRUAgAhoqAAAREBDBQAgAhoqAAAROOsm20UhOzvb5+TkJGYbN240x1199dUFPteaNWvMbNq0aWZ2zDHHmFmrVq0S67179zbH/OpXvzKz0s56znr27GmOWbZsmZk9//zzZvYf//Ef+Z/YASK0WYB10/E9e/aYY/r162dmzz33XP4nVkhLly41s9Cymc8//9zMjj/++MT6wIEDzTHt27c3M+zr6aefNrNrr73WzIYNG5ZYHzJkiDnm4YcfNrP77rvPzEI/8zt16pRYP+SQQ8wxoQ1FKlasOMt7n71/nXeoAABEQEMFACACGioAABHQUAEAiICGCgBABDRUAAAiyOiymRo1anhrZ5AdO3aY4z744IOo8wgtwTjxxBPN7Mknn0ysN2nSxBzTqFEjMxs0aJCZnXbaaWaWSTt37jSzrl27JtZDz1e7du3MbPr06fmfWBn3zjvvJNat50SSKlasaGZ9+/Y1s9CSidgWL15sZkOHDjWz8ePHJ9ZPOukkc8yzzz5rZq1btzazsij0PRDaicZaNvPee++ZY+655x4z69+/v5m98sorZvbVV1+ZmaVLly5m9u6777JsBgCAokJDBQAgAhoqAAAR0FABAIiAhgoAQAQ0VAAAIsjoshnnnHmyww47zBz34IMPJtavvPLKtOZx6aWXmtmf//xnM1u4cGFiPbRTx9ixY82sefPmZvbCCy+YWZs2bcwsto4dO5rZ5MmTE+v169c3x7z66qtmlsl/14HKWk4jhZfUVKlSxcxCr7PHH388fxOLILSkxtpVJrRjT8uWLc0stNPICSecYGalmfV6lqTrrrvOzLp3725mjRs3Tqzfeeed5pgrrrjCzEK7B5133nlmNmPGjMR66Odznz59zGzXrl0smwEAoKjQUAEAiICGCgBABDRUAAAioKECABABDRUAgAjKZ/Jkxx9/vLnE5OCDDzbHVa9evcDnatu2rZmFLtmuV69egTPr0nBJ2r59u5m9+eabZhba/WPcuHGJ9WbNmpljQpe2f//992Y2c+ZMM/vHP/6RWK9cubI5hl08ilbnzp3N7I033jCzCy64wMxGjx5tZhUqVEisW0vdCiP0Onv44YcT6z/99JM5JrRLSs+ePc3srbfeMrOjjz7azEq6NWvWmJm1ZFCSfvjhhwKf69tvvzWz0I5ftWrVMrNnnnnGzLp165ZYD32fTpw40czOPPPMxDrvUAEAiICGCgBABDRUAAAioKECABABDRUAgAgyenP87Oxsn5OTk5itX7/eHHfGGWck1p1z5pjQTdiPO+44M4vt66+/NrOrr77azN5//30za9KkSWK9atWq5pjPP//czHbv3m1m1vMlccVuabNr1y4zC11xfvHFF5vZoYcemlg/9thj8z+xfLrhhhvMzLoqfunSpeaY0M3PP/30UzMLXU0/ZcqUxHro6tRM+uSTT8ws9HgsW7Ys6jyGDBliZrfccouZHX744Wmdz/qZ+dVXX5ljQleIV65cmZvjAwBQVGioAABEQEMFACACGioAABHQUAEAiICGCgBABBldNtO6dWtvXbbdokULc5x1aXO7du3MMdOnTy/Y5IrBihUrzKxXr15m9vHHHxf4XJMnTzaz0CX9zZs3L/C5UPrs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\n",
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(8, 8), dpi=11)\n",
"\n",
"bands_dict=json.load(open(DATA_DIRECTORY/\"bands/2dm-4.json\"))\n",
"energies_minus_efermi = np.array(bands_dict[\"bands\"][\"1\"]) - bands_dict[\"efermi\"]\n",
"ax.set_ylim([-4, +4])\n",
"ax.set_xlim([0, energies_minus_efermi.shape[1]-1])\n",
"\n",
"LINEWIDTH = 3\n",
"\n",
"for band in energies_minus_efermi:\n",
" ax.plot(band, c=\"black\", linewidth=LINEWIDTH)\n",
"\n",
"# If we haven't already shown or saved the plot, then we need to\n",
"# draw the figure first...\n",
"ax.axis(\"off\")\n",
"fig.canvas.draw()\n",
"\n",
"# Now we can save it to a numpy array.\n",
"data = np.frombuffer(fig.canvas.tostring_rgb(), dtype=np.uint8)\n",
"data = data.reshape(fig.canvas.get_width_height()[::-1] + (3,))\n",
"\n",
"# now crop out axis, resize & grayscale:\n",
"# data = data[70:-72, 72:-58]\n",
"data = data[11:-11, 11:-9]\n",
"data = resize(data, OUTPUT_DIMENSIONS)\n",
"\n",
"# and replot:\n",
"fig, ax = plt.subplots(figsize=(8, 8))\n",
"ax.imshow(data)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "d19610e6-2f22-4d8e-853f-e7c7187d36a9",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>formula</th>\n",
" <th>gen_formula</th>\n",
" <th>space_group</th>\n",
" <th>segments</th>\n",
" <th>flat_segments</th>\n",
" <th>flatness_score</th>\n",
" <th>discovery</th>\n",
" <th>binary_flatness</th>\n",
" <th>horz_flat_seg</th>\n",
" <th>exfoliation_eg</th>\n",
" <th>...</th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" <th>D</th>\n",
" <th>E</th>\n",
" <th>F</th>\n",
" <th>radio</th>\n",
" <th>f_orb</th>\n",
" <th>sg_sto_group</th>\n",
" <th>percentage_flat</th>\n",
" </tr>\n",
" <tr>\n",
" <th>ID</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2dm-1</th>\n",
" <td>IrF2</td>\n",
" <td>AB2</td>\n",
" <td>164</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>0.095102</td>\n",
" <td>bottom-up</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.234620</td>\n",
" <td>...</td>\n",
" <td>F</td>\n",
" <td>Ir</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>non-radioactive</td>\n",
" <td>no-f-in-valence</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2dm-2</th>\n",
" <td>Ba2Sb</td>\n",
" <td>AB2</td>\n",
" <td>164</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>0.387410</td>\n",
" <td>bottom-up</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.210650</td>\n",
" <td>...</td>\n",
" <td>Ba</td>\n",
" <td>Sb</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>non-radioactive</td>\n",
" <td>no-f-in-valence</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2dm-3</th>\n",
" <td>TlS</td>\n",
" <td>AB</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>0.846460</td>\n",
" <td>bottom-up</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>0.095794</td>\n",
" <td>...</td>\n",
" <td>S</td>\n",
" <td>Tl</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>non-radioactive</td>\n",
" <td>no-f-in-valence</td>\n",
" <td>276.0</td>\n",
" <td>24.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2dm-4</th>\n",
" <td>MoCl2</td>\n",
" <td>AB2</td>\n",
" <td>166</td>\n",
" <td>5</td>\n",
" <td>4</td>\n",
" <td>0.713760</td>\n",
" <td>bottom-up</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>-0.055818</td>\n",
" <td>...</td>\n",
" <td>Cl</td>\n",
" <td>Mo</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>non-radioactive</td>\n",
" <td>no-f-in-valence</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2dm-6</th>\n",
" <td>RuI2</td>\n",
" <td>AB2</td>\n",
" <td>164</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>0.264930</td>\n",
" <td>bottom-up</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.084831</td>\n",
" <td>...</td>\n",
" <td>I</td>\n",
" <td>Ru</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>non-radioactive</td>\n",
" <td>no-f-in-valence</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 24 columns</p>\n",
"</div>"
],
"text/plain": [
" formula gen_formula space_group segments flat_segments \\\n",
"ID \n",
"2dm-1 IrF2 AB2 164 3 0 \n",
"2dm-2 Ba2Sb AB2 164 3 1 \n",
"2dm-3 TlS AB 2 4 4 \n",
"2dm-4 MoCl2 AB2 166 5 4 \n",
"2dm-6 RuI2 AB2 164 3 1 \n",
"\n",
" flatness_score discovery binary_flatness horz_flat_seg \\\n",
"ID \n",
"2dm-1 0.095102 bottom-up 0 0 \n",
"2dm-2 0.387410 bottom-up 0 0 \n",
"2dm-3 0.846460 bottom-up 1 3 \n",
"2dm-4 0.713760 bottom-up 0 0 \n",
"2dm-6 0.264930 bottom-up 0 0 \n",
"\n",
" exfoliation_eg ... A B C D E F radio \\\n",
"ID ... \n",
"2dm-1 0.234620 ... F Ir NaN NaN NaN NaN non-radioactive \n",
"2dm-2 0.210650 ... Ba Sb NaN NaN NaN NaN non-radioactive \n",
"2dm-3 0.095794 ... S Tl NaN NaN NaN NaN non-radioactive \n",
"2dm-4 -0.055818 ... Cl Mo NaN NaN NaN NaN non-radioactive \n",
"2dm-6 0.084831 ... I Ru NaN NaN NaN NaN non-radioactive \n",
"\n",
" f_orb sg_sto_group percentage_flat \n",
"ID \n",
"2dm-1 no-f-in-valence NaN NaN \n",
"2dm-2 no-f-in-valence NaN NaN \n",
"2dm-3 no-f-in-valence 276.0 24.2 \n",
"2dm-4 no-f-in-valence NaN NaN \n",
"2dm-6 no-f-in-valence NaN NaN \n",
"\n",
"[5 rows x 24 columns]"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"material_df = pd.read_csv(\"material_flatness_scores_anupam.csv\", index_col=\"ID\")\n",
"material_df.head()"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "d6fefe98-4412-4269-9374-59272afaa2a8",
"metadata": {},
"outputs": [],
"source": [
"!mkdir {DATA_DIRECTORY}/images/grayscale_4ev_linewidth3"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2afcf01f-ee0c-4b36-9486-01eea0c49595",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 / 5270\n",
"100 / 5270\n"
]
}
],
"source": [
"output = np.zeros((len(material_df), *OUTPUT_DIMENSIONS))\n",
" \n",
"for i, material_id in enumerate(material_df.index):\n",
" bands_dict=json.load(open(DATA_DIRECTORY/f\"bands/{material_id}.json\"))\n",
" output_path = DATA_DIRECTORY/f\"images/grayscale_4ev_linewidth3/{material_id}.png\"\n",
" energies_minus_efermi = np.array(bands_dict[\"bands\"][\"1\"]) - bands_dict[\"efermi\"]\n",
" \n",
" if i % 100 == 0:\n",
" print(i, \"/\", len(material_df))\n",
" \n",
" fig, ax = plt.subplots(figsize=(8, 8))\n",
" ax.set_ylim([-4, +4])\n",
" ax.set_xlim([0, energies_minus_efermi.shape[1]-1])\n",
"\n",
"\n",
" for band in energies_minus_efermi:\n",
" ax.plot(band, c=\"black\", linewidth=LINEWIDTH)\n",
"\n",
" # If we haven't already shown or saved the plot, then we need to\n",
" # draw the figure first...\n",
" ax.axis(\"off\")\n",
" fig.canvas.draw()\n",
"\n",
" # Now we can save it to a numpy array.\n",
" data = np.frombuffer(fig.canvas.tostring_rgb(), dtype=np.uint8)\n",
" data = data.reshape(fig.canvas.get_width_height()[::-1] + (3,))\n",
"\n",
" # now crop out axis, resize & grayscale:\n",
" data = data[70:-72, 72:-58]\n",
" image = Image.fromarray(data)\n",
" image.save(output_path)\n",
" \n",
" plt.close()"
]
}
],
"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.9.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
|