Commit 69f3cb93 authored by Lucas Foppa's avatar Lucas Foppa
Browse files

file paths updated

parent 83a195b4
%% Cell type:markdown id: tags:
<div id="teaser" style=' background-position: right center; background-size: 00px; background-repeat: no-repeat;
padding-top: 20px;
padding-right: 10px;
padding-bottom: 170px;
padding-left: 10px;
border-bottom: 14px double #333;
border-top: 14px double #333;' >
<div style="text-align:center">
<b><font size="6.4">Finding a tolerance factor to predict perovskite stability with SISSO </font></b>
</div>
<p>
created by:
Lucas Foppa<sup>1</sup>,
Thomas Purcell<sup>1</sup>,
Luigi Sbailò <sup> 1</sup>,
Christopher Bartel <sup> 2</sup>,
and Luca M. Ghiringhelli<sup>1</sup> <br><br>
<sup>1</sup> Fritz Haber Institute of the Max Planck Society, Berlin, Germany <br>
<sup>2</sup> UC Berkeley, CA, USA <br>
<span class="nomad--last-updated" data-version="v1.0.0">[Last updated: June 24, 2020]</span>
<div>
<img style="float: left;" src="FHI_logo.png" width="400">
<img style="float: right;" src="NOMAD_logo.jpg" width="200">
<img style="float: left;" src="assets/perovskites_tolerance_factor/FHI_logo.png" width="400">
<img style="float: right;" src="assets/perovskites_tolerance_factor/NOMAD_logo.jpg" width="200">
</div>
</div>
%% Cell type:markdown id: tags:
This tutorial shows how tolerance factors for perovskite stability can be derived from data with the sure independece screening and sparsifying operator (SISSO) descriptor-identification approach.
The SISSO method is described in detail in:
<div style="padding: 1ex; margin-top: 1ex; margin-bottom: 1ex; border-style: dotted; border-width: 1pt; border-color: blue; border-radius: 3px;">
R. Ouyang, S. Curtarolo, E. Ahmetcik, M. Scheffler, L. M. Ghiringhelli: <span style="font-style: italic;">SISSO: a compressed-sensing method for identifying the best low-dimensional descriptor in an immensity of offered candidates</span>, Phys. Rev. Materials 2, 083802 (2018) <a href="https://journals.aps.org/prmaterials/abstract/10.1103/PhysRevMaterials.2.083802" target="_blank">[PDF]</a> .
</div>
This tutorial is based on the following publication:
<div style="padding: 1ex; margin-top: 1ex; margin-bottom: 1ex; border-style: dotted; border-width: 1pt; border-color: blue; border-radius: 3px;">
C. Bartel, C. Sutton, B. R. Goldsmith, R. Ouyang, C. B. Musgrave, Luca M. Ghiringhelli, M. Scheffler: <span style="font-style: italic;">New tolerance factor to predict the stabilityof perovskite oxides and halides</span>, Sci. Adv. 5, eaav0693 (2019) <a href="https://advances.sciencemag.org/content/advances/5/2/eaav0693.full.pdf" target="_blank">[PDF]</a> .
</div>
# Perovskites and the Goldschmidt tolerance factor
Perovskites are a class of materials having the basic formula $ABX_3$ and displaying a common structure in which a smaller metal cation $B$ (e.g. a transition metal) resides in corner-sharing octahedra of $X$ anions (e.g. $O^2-$, $Cl^-$, $Br^-$) and a larger A metal cation (e.g. alkali, alkaline earth or lanthanide) has a 12-fold coordination with the $X$ anions. This class of compounds has a remarkable variety of electronic, magnetic, optical, mechanical and transport properties, which is derived from the possibility of tuning the materials propertites by the composition. In fact, ca. 90% of the metallic natural elements of the periodic table can be stabilized in a perovskite structure. Therefore, perovskites are versatile materials suitable for a number of applications including photovoltaics, thermoelectrics and catalysis.
The first step to design new perovskites is to assess their stability. For this purpose, the Goldschmidt tolerance factor, $t$, has been extensively used to predict the stability of a material in the perovskite structure based on the (Shannon) ionic radii,$r_i$, of each ion on the chemical formula $(A,B,X)$:
$$ t=\frac{r_A+r_X}{\sqrt2(r_B+r_X)} $$
$t$ measures how much the $A$-site cation fits into the corner-sharing octahedral network in a cubic crystal structure. It indicates the compatibilty of a given set of ions with the ideal, cubic perovskite structure ($t\approx1$). Distortions from the cubic structure arise from size mismatch between cations and anions, which results in perovskite structures other than cubic (e.g. orthorhombic, rhombohedral). However, when these distortions are too large, the perovskite structure may be unstable and non-perovskites structures are formed.
The accuracy of the Goldschmidt factor is, however, often insufficient to screen for new potential materials and several modification have been proposed to overcome this issue. In this tutorial, we show how data can be used to derive tolerance factors for perovskite stability.
# The SISSO method for descriptor identifcation
A crucial step in data-driven materials science is the identification of descriptors, functions of parameters characterizing the phenomena governing a certain property. Descriptors allow distinguishing materials and, crucially, should be obtained (measured or calculated) more easily than the property itself, so that they can be evaluated for large sets of still unknown materials to search for new ones.
The sure independence screening and sparsifying operator (SISSO) method combines a symbolic-regression-based feature construction with compressed sensing for the identification of the best low-dimensional descriptors based on data. Within SISSO feature construction, an initial set of input features (the primary features) offered by the user are systematically combined by the application of mathematical operators (e.g. addition, multiplication, exponential, square root), generating a large space of candidate features. The candidate features are then ranked according to their fit to the target property (number of materials in the overlap of convex-hull regions, for the case of classification problems) and the top-ranked features are further used for descriptor selection.
For futher details on compressed sensing methods (including SISSO) for descriptor identification, a dedicated notebook is available in the NOMAD toolkit.
%% Cell type:markdown id: tags:
# Import required modules
%% Cell type:code id: tags:
``` python
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import math
import seaborn as sns
import warnings
import itertools
from sisso.feature_creation.feature_space import FeatureSpace
from PredictPerovskites import PredictABX3, PredictAABBXX6
from sklearn import tree
from sklearn.model_selection import train_test_split
from sklearn import metrics
from sklearn.calibration import CalibratedClassifierCV
warnings.filterwarnings('ignore')
```
%% Cell type:markdown id: tags:
# Get the data
The data consists of a list of 576 $ABX_3$ solids experimentally-characterized at ambient conditions, classified as stable or unstable at the perovskite structure, together with the following features:
<div >
<ul>
<li>$r_A, r_B, r_X$: Shannon ionic radii of each ion, with $r_A>r_B$ </li>
<li>$n_A, n_B, n_X$: oxidation satates of each ion </li>
<li>$\frac{r_A}{r_B}, \frac{r_A}{r_X}, \frac{r_B}{r_x}$: ionic radii ratios </li>
<li>$Z_A, Z_B, Z_X$: nuclear charges </li>
<li>$r_{s,A}, r_{s,B}, r_{s,X}$: calculated radius where the radial distribution of the $s$ orbital has its maximum </li>
<li>$r_{p,A}, r_{p,B}, r_{p,X}$: calculated radius where the radial distribution of the $p$ orbital has its maximum</li>
<li>$HOMO_A, HOMO_B, HOMO_X$: calculated energy of the highest occupied atomic orbital</li>
<li>$LUMO_A, LUMO_B, LUMO_X$: calculated energy of the lowest unoccupied atomic orbital</li>
<li>$EA_A, EA_B, EA_X$: calculated electron affinity</li>
<li>$IP_A, IP_B, IP_X$: calculated ionization potential</li>
</div>
The calculated features were obtained with DFT-PBE using the FHI-aims all-electron full-potential code and correspond to properties of isolated atoms.
%% Cell type:code id: tags:
``` python
#load data
df = pd.read_csv("data_perovskite.csv", index_col=0)
df = pd.read_csv("data/perovskites_tolerance_factor/data_perovskite.csv", index_col=0)
#show data
df
```
%%%% Output: execute_result
exp_label rA rB rX nA nB nX rA_rB_ratio rA_rX_ratio \
material
AgBrO3 -1 1.28 0.31 1.40 1 5 -2 4.12903 0.914286
AgCdBr3 -1 1.28 0.95 1.96 1 2 -1 1.34737 0.653061
PbAgBr3 -1 1.49 1.15 1.96 2 1 -1 1.29565 0.760204
AgCaCl3 -1 1.28 1.00 1.81 1 2 -1 1.28000 0.707182
AgClO3 -1 1.28 0.12 1.40 1 5 -2 10.66670 0.914286
... ... ... ... ... .. .. .. ... ...
RbUO3 1 1.72 0.76 1.40 1 5 -2 2.26316 1.228570
SmTiO3 1 1.24 0.67 1.40 3 3 -2 1.85075 0.885714
SrTeO3 -1 1.44 0.97 1.40 2 4 -2 1.48454 1.028570
SrTiO3 1 1.44 0.60 1.40 2 4 -2 2.40000 1.028570
YTmO3 -1 1.08 0.88 1.40 3 3 -2 1.22727 0.771429
rB_rX_ratio ... LUMO_B EA_B IP_B rS_X rP_X \
material ...
AgBrO3 0.221429 ... 0.055110 -3.678151 12.554312 0.4608 0.4333
AgCdBr3 0.484694 ... -1.157118 0.948262 9.271930 0.7514 0.8834
PbAgBr3 0.586735 ... -0.246293 -1.475587 7.755963 0.7514 0.8834
AgCaCl3 0.552486 ... -1.945848 0.149995 6.309260 0.6785 0.7567
AgClO3 0.085714 ... 0.019724 -3.935230 13.876021 0.4608 0.4333
... ... ... ... ... ... ... ...
RbUO3 0.542857 ... -1.995273 0.546862 5.590258 0.4608 0.4333
SmTiO3 0.478571 ... -4.219539 -0.313899 7.119307 0.4608 0.4333
SrTeO3 0.692857 ... 0.193946 -2.575489 9.729526 0.4608 0.4333
SrTiO3 0.428571 ... -4.219539 -0.313899 7.119307 0.4608 0.4333
YTmO3 0.628571 ... -1.072406 0.522244 6.424662 0.4608 0.4333
Z_X HOMO_X LUMO_X EA_X IP_X
material
AgBrO3 8 -9.030485 -0.068724 -3.078804 16.431366
AgCdBr3 35 -7.858439 0.055110 -3.678151 12.554312
PbAgBr3 35 -7.858439 0.055110 -3.678151 12.554312
AgCaCl3 17 -8.594666 0.019724 -3.935230 13.876021
AgClO3 8 -9.030485 -0.068724 -3.078804 16.431366
... ... ... ... ... ...
RbUO3 8 -9.030485 -0.068724 -3.078804 16.431366
SmTiO3 8 -9.030485 -0.068724 -3.078804 16.431366
SrTeO3 8 -9.030485 -0.068724 -3.078804 16.431366
SrTiO3 8 -9.030485 -0.068724 -3.078804 16.431366
YTmO3 8 -9.030485 -0.068724 -3.078804 16.431366
[576 rows x 31 columns]
%% Cell type:code id: tags:
``` python
#count the number of material in each class in the whole dataset
print('In the whole dataset, %s compositions are unstable and %s are stable.' % (df['exp_label'].value_counts().values[0], df['exp_label'].value_counts().values[1]))
```
%%%% Output: stream
In the whole dataset, 313 compositions are unstable and 263 are stable.
%% Cell type:code id: tags:
``` python
#split the data in 80% training and 20% testing
train,test=train_test_split(df,test_size=0.2)
```
%% Cell type:code id: tags:
``` python
#count the number of material in each class in the training/test sets
print('In the training set, %s compositions are unstable and %s are stable.' % (train['exp_label'].value_counts().values[0], train['exp_label'].value_counts().values[1]))
print('In the test set, %s compositions are unstable and %s are stable.' % (test['exp_label'].value_counts().values[0], test['exp_label'].value_counts().values[1]))
```
%%%% Output: stream
In the training set, 237 compositions are unstable and 223 are stable.
In the test set, 76 compositions are unstable and 40 are stable.
%% Cell type:code id: tags:
``` python
#sort the training data by the labels (stable/unstable)
train.sort_values(by=['exp_label'],inplace=True)
```
%% Cell type:markdown id: tags:
# Generate the candidate features space from the primary features and operators
The two ingredients to create the feature space with SISSO are the features to be used (i.e. the primary features) and the set of mathematical operators to be applied. Another input from the user is the number of times the operators are applied, the so-called rung (max_phi).
%% Cell type:code id: tags:
``` python
#add the primary features units to the training set
train_units=train.rename(columns={'rA':'rA (AA)', 'rB':'rB (AA)', 'rX':'rX (AA)',
'nA':'nA (Unitless)', 'nB':'nB (Unitless)', 'nX':'nX (Unitless)',
'rA_rB_ratio':'rA_rB_ratio (Unitless)', 'rA_rX_ratio':'rA_rX_ratio (Unitless)', 'rB_rX_ratio':'rB_rX_ratio (Unitless)',
'rS_A':'rS_A (AA)', 'rP_A':'rP_A (AA)',
'Z_A':'Z_A (elem_charge)',
'HOMO_A':'HOMO_A (eV)', 'LUMO_A':'LUMO_A (eV)',
'EA_A':'EA_A (eV)', 'IP_A':'IP_A (eV)',
'rS_B':'rS_B (AA)', 'rP_B':'rP_B (AA)',
'Z_B':'Z_B (elem_charge)',
'HOMO_B':'HOMO_B (eV)', 'LUMO_B':'LUMO_B (eV)',
'EA_B':'EA_B (eV)', 'IP_B':'IP_B (eV)',
'rS_X':'rS_X (AA)', 'rP_X':'rP_X (AA)',
'Z_X':'Z_X (elem_charge)',
'HOMO_X':'HOMO_X (eV)','LUMO_X':'LUMO_X (eV)',
'EA_X':'EA_X (eV)', 'IP_X':'IP_X (eV)',
})
```
%% Cell type:code id: tags:
``` python
#define list of primary features - user has to choose
cols = [
'rA (AA)',
'rB (AA)',
'rX (AA)',
'nA (Unitless)',
# 'nB (Unitless)',
# 'nX(Unitless)',
'rA_rB_ratio (Unitless)',
'rA_rX_ratio (Unitless)',
'rB_rX_ratio (Unitless)',
# 'rS_A (AA)',
# 'rP_A (AA)',
# 'Z_A (elem_charge)',
# 'HOMO_A (eV)',
# 'LUMO_A (eV)',
# 'EA_A (eV)',
# 'IP_A (eV)',
# 'rS_B (AA)',
# 'rP_B (AA)',
# 'Z_B (elem_charge)',
# 'HOMO_B (eV)',
# 'LUMO_B (eV)',
# 'EA_B (eV)',
# 'IP_B (eV)',
# 'rS_X (AA)',
# 'rP_X (AA)',
# 'Z_X (elem_charge)',
# 'HOMO_X (eV)',
# 'LUMO_X (eV)',
# 'EA_X (eV)',
# 'IP_X (eV)'
]
```
%% Cell type:code id: tags:
``` python
#define list of operators - user has to choose
ops = [
# "add",
"sub",
# "abs_diff",
"mult",
"div",
# "exp",
# "neg_exp",
# "inv",
# "sq",
# "cb",
# "sixth_power",
# "sqrt",
# "cbrt",
"log",
# "abs",
# "sin",
# "cos",
]
```
%% Cell type:code id: tags:
``` python
#feature space creation - user has to choose rung and sis
fs = FeatureSpace.from_df(
train_units,
"exp_label",
ops,
cols,
max_phi=2, # rung
n_sis_select=500,
parameterize=False,
fix_c_0=False,
learn_type="classification",
)
```
%% Cell type:code id: tags:
``` python
#visualize the feature space created
fs.all_df
```
%%%% Output: execute_result
rA (AA^1.0) rB (AA^1.0) rX (AA^1.0) nA () rA_rB_ratio () \
material
FeGaO3 0.78 0.62 1.40 3.0 1.25806
TlBeCl3 1.70 0.45 1.81 1.0 3.77778
BaTeO3 1.61 0.97 1.40 2.0 1.65979
AgCdBr3 1.28 0.95 1.96 1.0 1.34737
AgVO3 1.28 0.54 1.40 1.0 2.37037
... ... ... ... ... ...
EuCrO3 1.12 0.62 1.40 3.0 1.80645
YAlO3 1.08 0.54 1.40 3.0 2.00000
LuFeO3 1.03 0.64 1.40 3.0 1.60938
YGaO3 1.08 0.62 1.40 3.0 1.74194
TlMnCl3 1.70 0.83 1.81 1.0 2.04819
rA_rX_ratio () rB_rX_ratio () rA - rB (AA^1.0) rA*rB (AA^2.0) \
material
FeGaO3 0.557143 0.442857 -0.16 0.4836
TlBeCl3 0.939227 0.248619 -1.25 0.7650
BaTeO3 1.150000 0.692857 -0.64 1.5617
AgCdBr3 0.653061 0.484694 -0.33 1.2160
AgVO3 0.914286 0.385714 -0.74 0.6912
... ... ... ... ...
EuCrO3 0.800000 0.442857 -0.50 0.6944
YAlO3 0.771429 0.385714 -0.54 0.5832
LuFeO3 0.735714 0.457143 -0.39 0.6592
YGaO3 0.771429 0.442857 -0.46 0.6696
TlMnCl3 0.939227 0.458564 -0.87 1.4110
rA - rX (AA^1.0) ... 1.0*rB_rX_ratio/(rA_rX_ratio*rX) (AA^-1.0) \
material ...
FeGaO3 0.62 ... 1.112820
TlBeCl3 0.11 ... 0.479118
BaTeO3 -0.21 ... 0.843478
AgCdBr3 0.68 ... 1.454688
AgVO3 0.12 ... 0.590624
... ... ... ...
EuCrO3 0.28 ... 0.775000
YAlO3 0.32 ... 0.699999
LuFeO3 0.37 ... 0.869904
YGaO3 0.32 ... 0.803703
TlMnCl3 0.11 ... 0.883706
1.0*rA_rX_ratio*rX/rB_rX_ratio (AA^1.0) \
material
FeGaO3 0.898618
TlBeCl3 2.087169
BaTeO3 1.185567
AgCdBr3 0.687432
AgVO3 1.693123
... ...
EuCrO3 1.290323
YAlO3 1.428573
LuFeO3 1.149553
YGaO3 1.244241
TlMnCl3 1.131598
1.0*rB_rX_ratio/(nA*rA_rX_ratio) () \
material
FeGaO3 2.384614
TlBeCl3 0.264706
BaTeO3 1.204969
AgCdBr3 0.742188
AgVO3 0.421875
... ...
EuCrO3 1.660714
YAlO3 1.499998
LuFeO3 1.864079
YGaO3 1.722221
TlMnCl3 0.488236
1.0*nA*rA_rX_ratio/rB_rX_ratio () \
material
FeGaO3 0.419355
TlBeCl3 3.777776
BaTeO3 0.829897
AgCdBr3 1.347368
AgVO3 2.370373
... ...
EuCrO3 0.602151
YAlO3 0.666668
LuFeO3 0.536458
YGaO3 0.580646
TlMnCl3 2.048192
1.0*rB_rX_ratio/(rA_rB_ratio*rA_rX_ratio) () \
material
FeGaO3 0.999996
TlBeCl3 1.000001
BaTeO3 0.999997
AgCdBr3 1.000002
AgVO3 0.999999
... ...
EuCrO3 0.999999
YAlO3 0.999999
LuFeO3 1.000004
YGaO3 1.000002
TlMnCl3 0.999999
1.0*rA_rB_ratio*rA_rX_ratio/rB_rX_ratio () \
material
FeGaO3 1.000004
TlBeCl3 0.999999
BaTeO3 1.000003
AgCdBr3 0.999998
AgVO3 1.000001
... ...
EuCrO3 1.000001
YAlO3 1.000001
LuFeO3 0.999996
YGaO3 0.999998
TlMnCl3 1.000001
1.0*rB_rX_ratio/rA_rX_ratio**2 () \
material
FeGaO3 0.442857
TlBeCl3 0.248619
BaTeO3 0.692857
AgCdBr3 0.484694
AgVO3 0.385714
... ...
EuCrO3 0.442857
YAlO3 0.385714
LuFeO3 0.457143
YGaO3 0.442857
TlMnCl3 0.458564
1.0*rA_rX_ratio**2/rB_rX_ratio () 1.0/rA_rX_ratio () \
material
FeGaO3 2.258065 0.352014
TlBeCl3 4.022219 0.065811
BaTeO3 1.443299 0.417435
AgCdBr3 2.063157 0.359734
AgVO3 2.592595 0.162723
... ... ...
EuCrO3 2.258065 0.245153
YAlO3 2.592595 0.192857
LuFeO3 2.187499 0.284050
YGaO3 2.258065 0.254232
TlMnCl3 2.180721 0.223887
1.0*rA_rX_ratio ()
material
FeGaO3 2.840793
TlBeCl3 15.195043
BaTeO3 2.395580
AgCdBr3 2.779831
AgVO3 6.145416
... ...
EuCrO3 4.079087
YAlO3 5.185196
LuFeO3 3.520504
YGaO3 3.933407
TlMnCl3 4.466534
[460 rows x 12070 columns]
%% Cell type:code id: tags:
``` python
#count the number of features created
print('From %s primary features and %s operators, SISSO generated a feature space containing %s candidate features.' % (len(cols),len(ops),fs.all_df.shape[1]))
```
%%%% Output: stream
From 7 primary features and 4 operators, SISSO generated a feature space containing 12070 candidate features.
%% Cell type:markdown id: tags:
# Select the best candidate features and classification thresholds
Next, the generated candidate features are selected in two steps. In a first step, they are ranked according to the number of materials $N$ that fall in overlapping regions of stable and unstable domains and only the top-ranked features are kept. The domain is defined as the range between the maximum and minimum values of the feature for each of the classes (stable and unstable). The best candidate features are those that present lower $N$. The lenght of the overlap domain, $S$, is used to rank features presenting the same $N$. $N$ and $S$ correspond to equations 2 and 3, respectively, in Phys. Rev. Materials 2, 083802 (2018).
%% Cell type:code id: tags:
``` python
fs.sis()
```
%% Cell type:code id: tags:
``` python
feature_space=fs.df
feature_space
```
%%%% Output: execute_result
rA_rB_ratio*(rA_rX_ratio - rB_rX_ratio)/nA () \
material
FeGaO3 -0.272529
TlBeCl3 -0.182808
BaTeO3 -0.550844
AgCdBr3 -0.124960
AgVO3 -0.222991
... ...
EuCrO3 -0.593113
YAlO3 -0.578573
LuFeO3 -0.519276
YGaO3 -0.565873
TlMnCl3 -0.234677
1.0*rA_rB_ratio*(rA_rX_ratio - rB_rX_ratio)/nA () \
material
FeGaO3 -3.669332
TlBeCl3 -5.470223
BaTeO3 -1.815395
AgCdBr3 -8.002578
AgVO3 -4.484479
... ...
EuCrO3 -1.686019
YAlO3 -1.728392
LuFeO3 -1.925757
YGaO3 -1.767182
TlMnCl3 -4.261177
nA*rB_rX_ratio*(rA - rB) (AA^1.0) \
material
FeGaO3 -0.212571
TlBeCl3 -0.310774
BaTeO3 -0.886857
AgCdBr3 -0.159949
AgVO3 -0.285428
... ...
EuCrO3 -0.664285
YAlO3 -0.624857
LuFeO3 -0.534857
YGaO3 -0.611143
TlMnCl3 -0.398951
nA*rA_rX_ratio/(1.0*rA_rB_ratio - 1.0*rA_rX_ratio) () \
material
FeGaO3 -0.419352
TlBeCl3 -3.022223
BaTeO3 -0.221648
AgCdBr3 -1.063161
AgVO3 -1.592591
... ...
EuCrO3 -0.419354
YAlO3 -0.530864
LuFeO3 -0.395836
YGaO3 -0.419356
TlMnCl3 -1.180719
1.0*(rA_rB_ratio - rA_rX_ratio)/(nA*rA_rX_ratio) () \
material
FeGaO3 -2.384632
TlBeCl3 -0.330882
BaTeO3 -4.511662
AgCdBr3 -0.940591
AgVO3 -0.627907
... ...
EuCrO3 -2.384619
YAlO3 -1.883723
LuFeO3 -2.526300
YGaO3 -2.384607
TlMnCl3 -0.846942
-nA*rB + rB - rX (AA^1.0) nA*rA_rX_ratio*rB_rX_ratio () \
material
FeGaO3 1.08 0.740204
TlBeCl3 -0.91 0.233510
BaTeO3 1.51 1.593571
AgCdBr3 -0.06 0.316535
AgVO3 -0.32 0.352653
... ... ...
EuCrO3 1.08 1.062857
YAlO3 0.76 0.892653
LuFeO3 1.16 1.008980
YGaO3 1.08 1.024898
TlMnCl3 -0.15 0.430696
1.0*rA_rX_ratio*rB*rX/nA (AA^2.0) \
material
FeGaO3 1.350978
TlBeCl3 4.282481
BaTeO3 0.627521
AgCdBr3 3.159212
AgVO3 2.835647
... ...
EuCrO3 0.940860
YAlO3 1.120255
LuFeO3 0.991101
YGaO3 0.975706
TlMnCl3 2.321827
1.0*rA_rX_ratio*rB/log(rA) (AA^1.0) \
material
FeGaO3 -0.719284
TlBeCl3 1.255473
BaTeO3 0.426924
AgCdBr3 0.397900
AgVO3 0.500006
... ...
EuCrO3 0.228485
YAlO3 0.184749
LuFeO3 0.062777
YGaO3 0.160910
TlMnCl3 0.680678
1.0*nA*rA_rX_ratio/log(rB_rX_ratio) () ... \
material ...
FeGaO3 -0.487313 ...
TlBeCl3 -1.481893 ...
BaTeO3 -0.159536 ...
AgCdBr3 -1.108989 ...
AgVO3 -1.041971 ...
... ... ...
EuCrO3 -0.339378 ...
YAlO3 -0.411643 ...
LuFeO3 -0.354648 ...