{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Introduction\n", "\n", "This is an example of how to plot a Crystal Orbital Hamilton Population (COHP) calculated with the Local-Orbital Basis Suite Towards Electronic-Structure Reconstruction (LOBSTER) code. See http://schmeling.ac.rwth-aachen.de/cohp/ for more information. (Credit: Marco Esters and Anubhav Jain)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Uncomment the subsequent lines in this cell to install dependencies for Google Colab.\n", "# !pip install pymatgen==2022.7.19" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (402,) + inhomogeneous part.", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[4], line 6\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mpymatgen\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mio\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mlobster\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Cohpcar\n\u001b[1;32m 5\u001b[0m COHPCAR_path \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlobster_data/GaAs/COHPCAR.lobster_new\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m----> 6\u001b[0m cohpcar \u001b[38;5;241m=\u001b[39m \u001b[43mCohpcar\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilename\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mCOHPCAR_path\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 7\u001b[0m cdata \u001b[38;5;241m=\u001b[39m cohpcar\u001b[38;5;241m.\u001b[39mcohp_data\n\u001b[1;32m 8\u001b[0m cdata_processed \u001b[38;5;241m=\u001b[39m {}\n", "File \u001b[0;32m~/miniconda3/envs/mavrl/lib/python3.11/site-packages/pymatgen/io/lobster/outputs.py:128\u001b[0m, in \u001b[0;36mCohpcar.__init__\u001b[0;34m(self, are_coops, are_cobis, are_multi_center_cobis, filename)\u001b[0m\n\u001b[1;32m 125\u001b[0m cohp_data: \u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, \u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any]] \u001b[38;5;241m=\u001b[39m {}\n\u001b[1;32m 126\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mare_multi_center_cobis:\n\u001b[1;32m 127\u001b[0m \u001b[38;5;66;03m# The COHP data start in row num_bonds + 3\u001b[39;00m\n\u001b[0;32m--> 128\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43marray\u001b[49m\u001b[43m(\u001b[49m\u001b[43m[\u001b[49m\u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43marray\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrow\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msplit\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mfloat\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mrow\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mcontents\u001b[49m\u001b[43m[\u001b[49m\u001b[43mnum_bonds\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m3\u001b[39;49m\u001b[43m \u001b[49m\u001b[43m:\u001b[49m\u001b[43m]\u001b[49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241m.\u001b[39mtranspose()\n\u001b[1;32m 129\u001b[0m cohp_data \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 130\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124maverage\u001b[39m\u001b[38;5;124m\"\u001b[39m: {\n\u001b[1;32m 131\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCOHP\u001b[39m\u001b[38;5;124m\"\u001b[39m: {spin: data[\u001b[38;5;241m1\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m s \u001b[38;5;241m*\u001b[39m (num_bonds \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m)] \u001b[38;5;28;01mfor\u001b[39;00m s, spin \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(spins)},\n\u001b[1;32m 132\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mICOHP\u001b[39m\u001b[38;5;124m\"\u001b[39m: {spin: data[\u001b[38;5;241m2\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m s \u001b[38;5;241m*\u001b[39m (num_bonds \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m)] \u001b[38;5;28;01mfor\u001b[39;00m s, spin \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(spins)},\n\u001b[1;32m 133\u001b[0m }\n\u001b[1;32m 134\u001b[0m }\n\u001b[1;32m 135\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 136\u001b[0m \u001b[38;5;66;03m# The COBI data start in row num_bonds + 3 if multi-center cobis exist\u001b[39;00m\n", "\u001b[0;31mValueError\u001b[0m: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (402,) + inhomogeneous part." ] } ], "source": [ "from pymatgen.electronic_structure.cohp import Cohp\n", "from pymatgen.electronic_structure.plotter import CohpPlotter\n", "from pymatgen.io.lobster import Cohpcar\n", "\n", "COHPCAR_path = \"lobster_data/COHPCAR.lobster\"\n", "cohpcar = Cohpcar(filename=COHPCAR_path)\n", "cdata = cohpcar.cohp_data\n", "cdata_processed = {}\n", "for key in cdata:\n", " c = cdata[key]\n", " c[\"efermi\"] = 0\n", " c[\"energies\"] = cohpcar.energies\n", " c[\"are_coops\"] = False\n", " cdata_processed[key] = Cohp.from_dict(c)\n", "cp = CohpPlotter()\n", "cp.add_cohp_dict(cdata_processed)\n", "ax = cp.get_plot()\n", "ax.set_ylim([-6, 6])" ] } ], "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.11.8" } }, "nbformat": 4, "nbformat_minor": 4 }