from pymatgen.ext.matproj import MPRester
from pymatgen.analysis.phase_diagram import PhaseDiagram, PDPlotter
%matplotlib inline
To generate a phase diagram, we obtain entries from the Materials Project and call the PhaseDiagram class in pymatgen.
#This initializes the REST adaptor. You may need to put your own API key in as an arg.
a = MPRester()
#Entries are the basic unit for thermodynamic and other analyses in pymatgen.
#This gets all entries belonging to the Ca-C-O system.
entries = a.get_entries_in_chemsys(['Ca', 'C', 'O'])
#With entries, you can do many sophisticated analyses, like creating phase diagrams.
pd = PhaseDiagram(entries)
To plot a phase diagram, we send our phase diagram object into the PDPlotter class.
#Let's show all phases, including unstable ones
plotter = PDPlotter(pd, show_unstable=True)
plotter.show()
To perform more sophisticated analyses, use the PDAnalyzer object.
import collections
data = collections.defaultdict(list)
for e in entries:
decomp, ehull = pd.get_decomp_and_e_above_hull(e)
data["Materials ID"].append(e.entry_id)
data["Composition"].append(e.composition.reduced_formula)
data["Ehull"].append(ehull)
data["Decomposition"].append(" + ".join(["%.2f %s" % (v, k.composition.formula) for k, v in decomp.items()]))
from pandas import DataFrame
df = DataFrame(data, columns=["Materials ID", "Composition", "Ehull", "Decomposition"])
print(df)
Materials ID Composition Ehull Decomposition 0 mp-166 Ca 0.013329 1.00 Ca2 1 mp-10683 Ca 0.396161 1.00 Ca2 2 mp-21 Ca 0.013583 1.00 Ca2 3 mp-45 Ca 0.000508 1.00 Ca2 4 mp-1008498 Ca 0.152771 1.00 Ca2 5 mp-132 Ca 0.000000 1.00 Ca2 6 mp-632329 C 0.110332 1.00 C16 7 mp-568028 C 0.528945 1.00 C16 8 mp-1008374 C 0.437262 1.00 C16 9 mp-568286 C 0.000000 1.00 C16 10 mp-611426 C 0.145308 1.00 C16 11 mp-683919 C 0.348592 1.00 C16 12 mp-937760 C 0.003670 1.00 C16 13 mp-998866 C 2.756837 1.00 C16 14 mp-569567 C 0.174406 1.00 C16 15 mp-667273 C 0.388760 1.00 C16 16 mp-570002 C 0.762539 1.00 C16 17 mp-990448 C 0.003052 1.00 C16 18 mp-579909 C 0.944071 1.00 C16 19 mp-997182 C 0.003585 1.00 C16 20 mp-568806 C 0.006175 1.00 C16 21 mp-1018088 C 1.299379 1.00 C16 22 mp-66 C 0.135631 1.00 C16 23 mp-606949 C 0.003575 1.00 C16 24 mp-680372 C 0.407085 1.00 C16 25 mp-616440 C 0.140564 1.00 C16 26 mp-568410 C 0.506378 1.00 C16 27 mp-169 C 0.004413 1.00 C16 28 mp-624889 C 1.255021 1.00 C16 29 mp-569517 C 0.145186 1.00 C16 .. ... ... ... ... 53 mp-2482 CaC2 0.022313 0.67 C16 + 0.33 Ca2 54 mp-1009655 CaC2 0.743834 0.67 C16 + 0.33 Ca2 55 mp-570697 CaC2 0.762125 0.67 C16 + 0.33 Ca2 56 mp-1022724 CaC4 0.330530 0.80 C16 + 0.20 Ca2 57 mp-545512 CaO 0.065085 1.00 Ca1 O1 58 mp-634859 CaO2 0.007227 0.33 O8 + 0.67 Ca1 O1 59 mp-2605 CaO 0.000000 1.00 Ca1 O1 60 mp-11725 CO2 0.011643 1.00 C4 O8 61 mp-995198 CO2 0.323686 1.00 C4 O8 62 mp-995196 CO3 3.078212 0.75 C4 O8 + 0.25 O8 63 mp-556660 CO 0.692016 0.75 C4 O8 + 0.25 C16 64 mp-1001594 C4O3 0.241118 0.64 C4 O8 + 0.36 C16 65 mp-556034 CO2 0.028775 1.00 C4 O8 66 mp-995224 CO2 0.302425 1.00 C4 O8 67 mp-644607 CO2 0.028281 1.00 C4 O8 68 mp-11875 CO 0.668938 0.75 C4 O8 + 0.25 C16 69 mp-561848 C3O2 0.513353 0.60 C4 O8 + 0.40 C16 70 mp-20066 CO2 0.000000 1.00 C4 O8 71 mp-995183 CO 0.559450 0.75 C4 O8 + 0.25 C16 72 mp-641635 CaCO3 1.368847 1.00 Ca2 C2 O6 73 mp-560265 CaCO3 0.008073 1.00 Ca2 C2 O6 74 mp-4626 CaCO3 0.024281 1.00 Ca2 C2 O6 75 mp-3953 CaCO3 0.000000 1.00 Ca2 C2 O6 76 mp-548403 CaCO3 0.312190 1.00 Ca2 C2 O6 77 mp-553939 CaCO3 0.013584 1.00 Ca2 C2 O6 78 mp-556235 CaCO3 0.002015 1.00 Ca2 C2 O6 79 mp-558543 Ca(CO2)2 0.046302 0.21 C4 O8 + 0.71 Ca2 C2 O6 + 0.07 C16 80 mp-561412 CaCO3 0.007359 1.00 Ca2 C2 O6 81 mp-696740 CaCO3 2.017768 1.00 Ca2 C2 O6 82 mp-3205 CaCO3 0.169799 1.00 Ca2 C2 O6 [83 rows x 4 columns]