Hi!

I am trying to construct voltage graphs from the data available at

```
from mp_api import MPRester
mpr = MPRester()
mpr.insertion_electrodes.search_electrode_docs()
```

but among the `available_fields`

there seems not to be any obvious way to do it, as the average voltage is the only voltage value that is reported for an electrode.

An idea would be to leverage the available intermediate material ids of every semicell, but I can’t see how to construct the graph without the intermediate voltage values.

Do you have any idea to get this done?

For reference:

```
>>>print(mpr.insertion_electrodes.available_fields)
['max_delta_volume', 'average_voltage', 'capacity_grav', 'capacity_vol', 'energy_grav', 'energy_vol',
'fracA_charge', 'fracA_discharge', 'formula_charge', 'formula_discharge', 'stability_charge',
'stability_discharge', 'id_charge', 'id_discharge', 'battery_id', 'battery_formula', 'framework_formula',
'host_structure', 'adj_pairs', 'working_ion', 'num_steps', 'max_voltage_step', 'last_updated', 'framework',
'elements', 'nelements', 'chemsys', 'material_ids', 'formula_anonymous', 'entries_composition_summary',
'electrode_object', 'warnings']
```

Hi @acarnevali,

Have you tried looking into the voltage step data contained in `adj_pairs`

and the `voltage_pairs`

attribute of the `electrode_object`

?

– Jason

Hi Jason!

I am not sure what you mean by voltage step data in `adj_pairs`

: getting the data the following way

```
import requests
import pymatgen.core as mg
from mp_api import MPRester
mpr = MPRester()
with MPRester(api_key = key) as mpr:
docs = mpr.insertion_electrodes.search_electrode_docs()
docs_list = [i for i in docs]
adj_pairs= [i.adj_pairs for i in docs_list]
```

it seems that I get an `adj_pairs`

entry for each electrode object, which consists of:

```
>>>print(adj_pairs[0])
[InsertionVoltagePairDoc(max_delta_volume=0.05798067526371464, average_voltage=4.321407745000005, capacity_grav=157.5225282330018, capacity_vol=359.33106169150375, energy_grav=680.7190735180758, energy_vol=1552.8160330127387, fracA_charge=0.0, fracA_discharge=0.1, formula_charge='Co(GeO3)2', formula_discharge='CaCo(GeO3)2', stability_charge=0.16777887759259702, stability_discharge=0.0, id_charge=MPID(mp-1043245), id_discharge=MPID(mp-1043203))]
```

not presenting any information about voltage steps .

About `voltage_pairs`

, I can’t see it among the available fields for `insertion_electrodes`

. Maybe I am looking in the wrong place?

Ideally, what I am looking for is a simple {x in Lix(material): V} having one entry for each voltage step. I am sure that info like this exists, as it is needed to display the V vs Q plots present on the MP website.

Hi @acarnevali,

`voltage_pairs`

is an attribute of the `electrode_object`

which is a field you can ask for in the new API. You can check out the `VoltageProfilePlotter`

(pymatgen.apps.battery.plotter module — pymatgen 2022.3.24 documentation) class which we use to generate those types plots on the new website. It takes in an electrode object and uses the `voltage_pairs`

attribute.

– Jason

1 Like

Hi Jason!

thank you for you time.

Since `voltage_pairs`

is an attribute of the `electrode_object`

, I am trying to fetch it like this:

```
with MPRester(api_key=key) as mpr:
docs = mpr.insertion_electrodes.search_electrode_docs()
docs_list = [i for i in docs]
#formula_charge = [i.formula_charge for i in docs_list]
#formula_discharge = [i.formula_discharge for i in docs_list]
v_pairs = [i.voltage_pairs for i in docs_list]
```

but I am prompted `AttributeError: 'InsertionElectrodeDoc' object has no attribute 'voltage_pairs'`

. I am on `mp-api 0.21.2`

.

Uncommenting the two `formula`

lines, though, allows me to fetch the formulas, which if I understand well are attributes of the electrode object as well.

Am I doing something wrong?

No problem, if you change the last line to `_pairs = [i.electrode_object.voltage_pairs for i in docs_list]`

, it should get you what you need.

– Jason