Effective mass?

I’d like to determine the effective mass at the VBM and CBM in a high-throughput manner for a set of materials which satisfy a Materials Project query, ideally without having to run Boltztrap. Is there a way to do this in Pymatgen? If not, I’d appreciate any advice you have on the best way to script it myself.


There is a simple effective mass calculation in sumo. Otherwise, your best bet is to use BoltzTrap2 which has an interface in pymatgen.

1 Like

We also have a large contributed dataset of effective masses from available on MPContribs: https://portal.mpcontribs.org/carrier_transport/

This is also available via an API, but the MPContribs API rather than the main MP API.

Note MPContribs is in a ‘soft-release’ stage right now, we haven’t officially announced it yet but the data is available to use and publicly available.



Thanks. I’m having some problems with time-outs while trying to retrieve the band structures of certain materials. For example, 4 different polymorphs of elemental S, which all have Materials Project band structures:

import pymatgen
from pymatgen.ext.matproj import MPRester
with MPRester("") as m:

The first two polymorphs in the order above can be retrieved, but any attempt to retrieve the third or fourth times out with the following output:

(atomate_env) login2(1249)$ python mp_effmass.py
<pymatgen.electronic_structure.bandstructure.BandStructureSymmLine object at 0x2b978c9f44a8>
<pymatgen.electronic_structure.bandstructure.BandStructureSymmLine object at 0x2b978b46d6a0>
Traceback (most recent call last):
File “/work/04391/tg836903/stampede2/atomate/atomate_env/lib/python3.6/site-packages/pymatgen/ext/matproj.py”, line 162, in _make_request
pymatgen.ext.matproj.MPRestError: REST query returned with error status code 504

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “mp_effmass.py”, line 46, in
File “/work/04391/tg836903/stampede2/atomate/atomate_env/lib/python3.6/site-packages/pymatgen/ext/matproj.py”, line 603, in get_bandstructure_by_material_id
data = self.get_data(material_id, prop=prop)
File “/work/04391/tg836903/stampede2/atomate/atomate_env/lib/python3.6/site-packages/pymatgen/ext/matproj.py”, line 220, in get_data
return self._make_request(sub_url)
File “/work/04391/tg836903/stampede2/atomate/atomate_env/lib/python3.6/site-packages/pymatgen/ext/matproj.py”, line 167, in _make_request
raise MPRestError(msg)
pymatgen.ext.matproj.MPRestError: REST query returned with error status code 504. Content: b"

504 Gateway Time-out

\nThe server didn’t respond in time.\n\n\n"

This behavior seems to be reproducible - it doesn’t matter what order I ask in, mp-561370 and mp-555915 cannot be retrieved, and asking for the band structure of either one leads to a time-out. Any ideas?

Dear Sir/Madam
I am also looking to calculate effective mass using BoltzTrap or BoltzTrap2 code wiht paymtgen of any other tool. any of your help will be plus for me.