Difference between revisions of "Structure Similarity"

From Wiki
Jump to: navigation, search
(Structure Distance)
(Structure Distance/Dissimilarity)
 
(25 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
== Introduction ==
 
== Introduction ==
  
The similarity between two structures ''i'' and ''j'' is assessed on the basis of local coordination information from all sites in the two structures. <ref>N. E. R. Zimmermann, A. Jain, in preparation (2018)</ref> <ref>N. E. R. Zimmermann, M. K. Horton, A. Jain, M. Haranczyk, Front. Mater., 4, 34, (2017)</ref>
+
The similarity between two structures ''i'' and ''j'' is assessed on the basis of local coordination information from all sites in the two structures. <ref>N. E. R. Zimmermann, D. Winston, K. A. Persson, A. Jain, in preparation (2018)</ref> <ref>N. E. R. Zimmermann, M. K. Horton, A. Jain, M. Haranczyk, Front. Mater., 4, 34, (2017)</ref> The four basic steps involved are:
 +
 
 +
# Find near(est) neighbors of all sites in both structures.
 +
# Evaluate each coordination pattern via coordination descriptors observed at each site to define site fingerprints.
 +
# Compute statistics of the descriptor values across all sites in a structure to define structure fingerprints.
 +
# Use structure fingerprints to rate the (dis)similarity between the two (vectors representing the two) structures.
 +
 
 +
== Near-neighbor finding ==
 +
 
 +
We use a novel method called CrystallNN to find near(est) neighbors in periodic structures.  While the method will be introduced shortly<ref>H. Pan, J. Dagdelen, N. E. R. Zimmermann, A. Jain, in preparation (2018)</ref>, it is already available through the python package <tt>[https://github.com/materialsproject/pymatgen pymatgen]</tt>.
  
 
== Site Fingerprints ==
 
== Site Fingerprints ==
  
The similarity calculation begins with computing a crystal site fingerprint, '''v'''<sup>site</sup>, for each site in the two structures.  The fingerprint is a 48-dimensional vector in which each element carries information about the local coordination environment computed with the ''site'' module of the python package <tt>[https://github.com/hackingmaterials/matminer matminer]</tt>.  For example, the first element "wt CN<sub>1</sub>" provides the fraction of how much the given site should be considered 1-fold coordinated (i.e., ''w''|<sub>CN=1</sub>).  The second element "wt CN<sub>2</sub>" provides the 2-fold coordinated fraction, whereas the third element "L-shaped CN<sub>2</sub>" holds the resemblance similarity to an L-shaped coordination geometry (also called local structure order parameter) given that we find a coordination configuration with 2 atoms (''q''<sub>L</sub>|<sub>CN=2</sub>).  The remaining elements are: "water-like CN<sub>2</sub>," "bent 120 degrees CN<sub>2</sub>," "bent 150 degrees CN<sub>2</sub>," "linear CN<sub>2</sub>," "wt CN<sub>3</sub>," "trigonal planar CN<sub>3</sub>," "trigonal non-coplanar CN<sub>3</sub>," "T-shaped CN<sub>3</sub>," "wt CN<sub>4</sub>," "square co-planar CN<sub>4</sub>," "tetrahedral CN<sub>4</sub>," "rectangular see-saw-like CN<sub>4</sub>," "see-saw-like CN<sub>4</sub>," "trigonal pyramidal CN<sub>4</sub>," "wt CN<sub>5</sub>," "pentagonal planar CN<sub>5</sub>," "square pyramidal CN<sub>5</sub>," "trigonal bipyramidal CN<sub>5</sub>," "wt CN<sub>6</sub>," "hexagonal planar CN<sub>6</sub>," "octahedral CN<sub>6</sub>," "pentagonal pyramidal CN<sub>6</sub>," "wt CN<sub>7</sub>," "hexagonal pyramidal CN<sub>7</sub>," "pentagonal bipyramidal CN<sub>7</sub>," "wt CN<sub>8</sub>," "body-centered cubic CN<sub>8</sub>," "hexagonal bipyramidal CN<sub>8</sub>," "wt CN<sub>9</sub>," "q2 CN<sub>9</sub>," "q4 CN<sub>9</sub>," "q6 CN<sub>9</sub>," "wt CN<sub>10</sub>," "q2 CN<sub>10</sub>," "q4 CN<sub>10</sub>," "q6 CN<sub>10</sub>," "wt CN<sub>11</sub>," "q2 CN<sub>11</sub>," "q4 CN<sub>11</sub>," "q6 CN<sub>11</sub>," "wt CN<sub>12</sub>," "cuboctahedral CN<sub>12</sub>," "q2 CN<sub>12</sub>," "q4 CN<sub>12</sub>," "q6 CN<sub>12</sub>." Note that ''q<sub>n</sub>'' refers to Steinhardt bond orientational order parameter of order ''n''.  The resulting site fingerprint is thus defined as:
+
The second step of the structure similarity calculation is the computation of a crystal site fingerprint, '''v'''<sup>site</sup>, for each site in the two structures.  The fingerprint is a 61-dimensional vector in which each element carries information about the local coordination environment computed with the ''site'' module of the python package <tt>[https://github.com/hackingmaterials/matminer matminer]</tt>.  For example, the first two elements "wt CN<sub>1</sub>" and "single bond CN<sub>1</sub>" provide estimates of the likelihood (or weight) of how much the given site should be considered 1-fold coordinated (i.e., ''w''|<sub>CN=1</sub>).  The third element "wt CN<sub>2</sub>" provides a 2-fold coordination likelihood, whereas the fourth element "L-shaped CN<sub>2</sub>" holds the resemblance similarity to an L-shaped coordination geometry (also called local structure order parameter) given that we find a coordination configuration with 2 atoms (''q''<sub>L</sub>|<sub>CN=2</sub>).  The local structure order parameters can assume values between 0, meaning that the observed local environment has no resemblance with the target motif to which it is compared, and 1, which stands for perfect motif match.  The remaining elements are: "water-like CN<sub>2</sub>," "bent 120 degrees CN<sub>2</sub>," "bent 150 degrees CN<sub>2</sub>," "linear CN<sub>2</sub>," "wt CN<sub>3</sub>," "trigonal planar CN<sub>3</sub>," "trigonal non-coplanar CN<sub>3</sub>," "T-shaped CN<sub>3</sub>," "wt CN<sub>4</sub>," "square co-planar CN<sub>4</sub>," "tetrahedral CN<sub>4</sub>," "rectangular see-saw-like CN<sub>4</sub>," "see-saw-like CN<sub>4</sub>," "trigonal pyramidal CN<sub>4</sub>," "wt CN<sub>5</sub>," "pentagonal planar CN<sub>5</sub>," "square pyramidal CN<sub>5</sub>," "trigonal bipyramidal CN<sub>5</sub>," "wt CN<sub>6</sub>," "hexagonal planar CN<sub>6</sub>," "octahedral CN<sub>6</sub>," "pentagonal pyramidal CN<sub>6</sub>," "wt CN<sub>7</sub>," "hexagonal pyramidal CN<sub>7</sub>," "pentagonal bipyramidal CN<sub>7</sub>," "wt CN<sub>8</sub>," "body-centered cubic CN<sub>8</sub>," "hexagonal bipyramidal CN<sub>8</sub>," "wt CN<sub>9</sub>," "q2 CN<sub>9</sub>," "q4 CN<sub>9</sub>," "q6 CN<sub>9</sub>," "wt CN<sub>10</sub>," "q2 CN<sub>10</sub>," "q4 CN<sub>10</sub>," "q6 CN<sub>10</sub>," "wt CN<sub>11</sub>," "q2 CN<sub>11</sub>," "q4 CN<sub>11</sub>," "q6 CN<sub>11</sub>," "wt CN<sub>12</sub>," "cuboctahedral CN<sub>12</sub>," "q2 CN<sub>12</sub>," "q4 CN<sub>12</sub>," "q6 CN<sub>12</sub>," "wt CN<sub>13</sub>," "wt CN<sub>14</sub>," "wt CN<sub>15</sub>," "wt CN<sub>16</sub>," "wt CN<sub>17</sub>," "wt CN<sub>18</sub>," "wt CN<sub>19</sub>," "wt CN<sub>20</sub>," "wt CN<sub>21</sub>," "wt CN<sub>22</sub>," "wt CN<sub>23</sub>," and "wt CN<sub>24</sub>." Note that ''q<sub>n</sub>'' refers to Steinhardt bond orientational order parameter of order ''n''.  The resulting site fingerprint is thus defined as:
  
<math>\mathbf{v}^\mathrm{site} = [w|_{\mathrm{CN}=1}, \quad w|_{\mathrm{CN}=2}, \quad q_\mathrm{L}|_{\mathrm{CN}=2}, \quad q_\mathrm{water}|_{\mathrm{CN}=2}, \quad \dots, \quad q_{6}|_{\mathrm{CN}=12}]^\mathrm{T}</math>
+
<math>\mathbf{v}^\mathrm{site} = [w|_{\mathrm{CN}=1}, \quad w|_{\mathrm{CN}=2}, \quad q_\mathrm{L}|_{\mathrm{CN}=2}, \quad q_\mathrm{water}|_{\mathrm{CN}=2}, \quad \dots, \quad w|_{\mathrm{CN}=24}]^\mathrm{T}</math>
  
 
== Structure Fingerprints ==
 
== Structure Fingerprints ==
Line 17: Line 26:
 
<math>\min(w|_{\mathrm{CN}=1}), \quad \max(w|_{\mathrm{CN}=1}), \quad \mathrm{mean}(w|_{\mathrm{CN}=1}), \quad \mathrm{std}(w|_{\mathrm{CN}=1}), \dots,</math>
 
<math>\min(w|_{\mathrm{CN}=1}), \quad \max(w|_{\mathrm{CN}=1}), \quad \mathrm{mean}(w|_{\mathrm{CN}=1}), \quad \mathrm{std}(w|_{\mathrm{CN}=1}), \dots,</math>
  
<math>\min(q_{6}|_{\mathrm{CN}=12}), \quad \max(q_{6}|_{\mathrm{CN}=12}), \quad \mathrm{mean}(q_{6}|_{\mathrm{CN}=12}), \quad \mathrm{std}(q_{6}|_{\mathrm{CN}=12})</math>
+
<math>\min(w|_{\mathrm{CN}=24}), \quad \max(w|_{\mathrm{CN}=24}), \quad \mathrm{mean}(w|_{\mathrm{CN}=24}), \quad \mathrm{std}(w|_{\mathrm{CN}=24})</math>
  
 
<math>]^\mathrm{T}</math>
 
<math>]^\mathrm{T}</math>
  
== Structure Distance ==
+
== Structure Distance/Dissimilarity ==
  
Finally, structure similarity is determined by the distance, ''d'', between two structure fingerprints '''v'''<sub>i</sub><sup>struct</sup> and '''v'''<sub>j</sub><sup>struct</sup>:
+
Finally, structure similarity is determined by the distance, ''d'', between two structure fingerprints '''v'''<sub>''i''</sub><sup>struct</sup> and '''v'''<sub>''j''</sub><sup>struct</sup>:
  
 
<math>d = || \mathbf{v}_{i}^\mathrm{struct} - \mathbf{v}_{j}^\mathrm{struct} ||</math>
 
<math>d = || \mathbf{v}_{i}^\mathrm{struct} - \mathbf{v}_{j}^\mathrm{struct} ||</math>
  
A small distance value indicates high similarity between two structures, whereas a large distance (1 to maximally 4.8) suggests that the structures are very dissimilar. The spinel example below gives an approximate threshold up to which '''distance you can still consider two structure to be similar (0.73 to 0.75)'''. Anything beyond 0.75 is most certainly not the same structure prototype. However, we have observed that porous materials such as zeolites form an exception to this rough rule. We are currently working on addressing this open issue.
+
A small distance value indicates high similarity between two structures, whereas a large distance (>1) suggests that the structures are very dissimilar. The spinel example below gives an approximate threshold up to which '''distance you can still consider two structures to be similar (0.9)'''. Anything beyond 0.9 is most certainly not the same structure prototype.
  
 
== Examples ==
 
== Examples ==
Line 33: Line 42:
 
* Diamond ([https://materialsproject.org/materials/mp-66 mp-66]) vs. GaAs ([https://materialsproject.org/materials/mp-2534 mp-2534]) <math>\rightarrow</math>  ''d'' = 0
 
* Diamond ([https://materialsproject.org/materials/mp-66 mp-66]) vs. GaAs ([https://materialsproject.org/materials/mp-2534 mp-2534]) <math>\rightarrow</math>  ''d'' = 0
  
* Diamond ([https://materialsproject.org/materials/mp-66 mp-66]) vs. Rocksalt ([https://materialsproject.org/materials/mp-22862 mp-22862]) <math>\rightarrow</math> ''d'' = 1.4142
+
* Diamond ([https://materialsproject.org/materials/mp-66 mp-66]) vs. rocksalt ([https://materialsproject.org/materials/mp-22862 mp-22862]) <math>\rightarrow</math> ''d'' = 3.5724
  
* Diamond ([https://materialsproject.org/materials/mp-66 mp-66]) vs. Perfect CaTiO<sub>3</sub> Perovskite ([https://materialsproject.org/materials/mp-5827 mp-5827]) <math>\rightarrow</math> ''d'' = 1.4142
+
* Diamond ([https://materialsproject.org/materials/mp-66 mp-66]) vs. perfect CaTiO<sub>3</sub> perovskite ([https://materialsproject.org/materials/mp-5827 mp-5827]) <math>\rightarrow</math> ''d'' = 3.5540
  
* Rocksalt ([https://materialsproject.org/materials/mp-22862 mp-22862]) vs. Perfect CaTiO<sub>3</sub> Perovskite ([https://materialsproject.org/materials/mp-5827 mp-5827]) <math>\rightarrow</math> ''d'' = 1.0493
+
* Rocksalt ([https://materialsproject.org/materials/mp-22862 mp-22862]) vs. perfect CaTiO<sub>3</sub> perovskite ([https://materialsproject.org/materials/mp-5827 mp-5827]) <math>\rightarrow</math> ''d'' = 2.7417
  
* Ca(CoS<sub>2</sub>)<sub>2</sub>-spinel ([https://materialsproject.org/materials/mvc-12728 mvc-12728]) vs Si(CdO<sub>2</sub>)<sub>2</sub>-spinel ([https://materialsproject.org/materials/mp-560842 mp-560842]) <math>\rightarrow</math> ''d'' = 0.7315
+
* Ca(CoS<sub>2</sub>)<sub>2</sub>-spinel ([https://materialsproject.org/materials/mvc-12728 mvc-12728]) vs. Si(CdO<sub>2</sub>)<sub>2</sub>-spinel ([https://materialsproject.org/materials/mp-560842 mp-560842]) <math>\rightarrow</math> ''d'' = 0.8877
  
 
Below is a python code snippet that allows you to quickly reproduce above results. You will need to install <tt>[https://github.com/materialsproject/pymatgen pymatgen]</tt> and <tt>[https://github.com/hackingmaterials/matminer matminer]</tt> for this to work. Both are easily accessible via the [https://pypi.python.org/pypi Python Package Index].
 
Below is a python code snippet that allows you to quickly reproduce above results. You will need to install <tt>[https://github.com/materialsproject/pymatgen pymatgen]</tt> and <tt>[https://github.com/hackingmaterials/matminer matminer]</tt> for this to work. Both are easily accessible via the [https://pypi.python.org/pypi Python Package Index].
Line 46: Line 55:
 
import numpy as np
 
import numpy as np
 
from pymatgen import MPRester
 
from pymatgen import MPRester
from matminer.featurizers.site import CrystalSiteFingerprint
+
from matminer.featurizers.site import CrystalNNFingerprint
 
from matminer.featurizers.structure import SiteStatsFingerprint
 
from matminer.featurizers.structure import SiteStatsFingerprint
  
Line 56: Line 65:
 
     rocksalt = mpr.get_structure_by_material_id("mp-22862")
 
     rocksalt = mpr.get_structure_by_material_id("mp-22862")
 
     perovskite = mpr.get_structure_by_material_id("mp-5827")
 
     perovskite = mpr.get_structure_by_material_id("mp-5827")
 +
    spinel_caco2s4 = mpr.get_structure_by_material_id("mvc-12728")
 +
    spinel_sicd2O4 = mpr.get_structure_by_material_id("mp-560842")
  
 
     # Calculate structure fingerprints.
 
     # Calculate structure fingerprints.
     ssf = SiteStatsFingerprint(CrystalSiteFingerprint.from_preset('cn'))
+
     ssf = SiteStatsFingerprint(
 +
        CrystalNNFingerprint.from_preset('ops', distance_cutoffs=None, x_diff_weight=0),
 +
        stats=('mean', 'std_dev', 'minimum', 'maximum'))
 
     v_diamond = np.array(ssf.featurize(diamond))
 
     v_diamond = np.array(ssf.featurize(diamond))
 
     v_gaas = np.array(ssf.featurize(gaas))
 
     v_gaas = np.array(ssf.featurize(gaas))
 
     v_rocksalt = np.array(ssf.featurize(rocksalt))
 
     v_rocksalt = np.array(ssf.featurize(rocksalt))
 
     v_perovskite = np.array(ssf.featurize(perovskite))
 
     v_perovskite = np.array(ssf.featurize(perovskite))
     v_diamond = v_diamond / np.linalg.norm(v_diamond)
+
     v_spinel_caco2s4 = np.array(ssf.featurize(spinel_caco2s4))
     v_gaas = v_gaas / np.linalg.norm(v_gaas)
+
     v_spinel_sicd2O4 = np.array(ssf.featurize(spinel_sicd2O4))
    v_rocksalt = v_rocksalt / np.linalg.norm(v_rocksalt)
 
    v_perovskite = v_perovskite / np.linalg.norm(v_perovskite)
 
  
 
     # Print out distance between structures.
 
     # Print out distance between structures.
Line 73: Line 84:
 
     print('Distance between diamond and perovskite: {:.4f}'.format(np.linalg.norm(v_diamond - v_perovskite)))
 
     print('Distance between diamond and perovskite: {:.4f}'.format(np.linalg.norm(v_diamond - v_perovskite)))
 
     print('Distance between rocksalt and perovskite: {:.4f}'.format(np.linalg.norm(v_rocksalt - v_perovskite)))
 
     print('Distance between rocksalt and perovskite: {:.4f}'.format(np.linalg.norm(v_rocksalt - v_perovskite)))
 +
    print('Distance between Ca(CoS2)2-spinel and Si(CdO2)2-spinel: {:.4f}'.format(np.linalg.norm(v_spinel_caco2s4 - v_spinel_sicd2O4)))
 
</pre>
 
</pre>
  

Latest revision as of 17:24, 15 August 2018

Introduction

The similarity between two structures i and j is assessed on the basis of local coordination information from all sites in the two structures. [1] [2] The four basic steps involved are:

  1. Find near(est) neighbors of all sites in both structures.
  2. Evaluate each coordination pattern via coordination descriptors observed at each site to define site fingerprints.
  3. Compute statistics of the descriptor values across all sites in a structure to define structure fingerprints.
  4. Use structure fingerprints to rate the (dis)similarity between the two (vectors representing the two) structures.

Near-neighbor finding

We use a novel method called CrystallNN to find near(est) neighbors in periodic structures. While the method will be introduced shortly[3], it is already available through the python package pymatgen.

Site Fingerprints

The second step of the structure similarity calculation is the computation of a crystal site fingerprint, vsite, for each site in the two structures. The fingerprint is a 61-dimensional vector in which each element carries information about the local coordination environment computed with the site module of the python package matminer. For example, the first two elements "wt CN1" and "single bond CN1" provide estimates of the likelihood (or weight) of how much the given site should be considered 1-fold coordinated (i.e., w|CN=1). The third element "wt CN2" provides a 2-fold coordination likelihood, whereas the fourth element "L-shaped CN2" holds the resemblance similarity to an L-shaped coordination geometry (also called local structure order parameter) given that we find a coordination configuration with 2 atoms (qL|CN=2). The local structure order parameters can assume values between 0, meaning that the observed local environment has no resemblance with the target motif to which it is compared, and 1, which stands for perfect motif match. The remaining elements are: "water-like CN2," "bent 120 degrees CN2," "bent 150 degrees CN2," "linear CN2," "wt CN3," "trigonal planar CN3," "trigonal non-coplanar CN3," "T-shaped CN3," "wt CN4," "square co-planar CN4," "tetrahedral CN4," "rectangular see-saw-like CN4," "see-saw-like CN4," "trigonal pyramidal CN4," "wt CN5," "pentagonal planar CN5," "square pyramidal CN5," "trigonal bipyramidal CN5," "wt CN6," "hexagonal planar CN6," "octahedral CN6," "pentagonal pyramidal CN6," "wt CN7," "hexagonal pyramidal CN7," "pentagonal bipyramidal CN7," "wt CN8," "body-centered cubic CN8," "hexagonal bipyramidal CN8," "wt CN9," "q2 CN9," "q4 CN9," "q6 CN9," "wt CN10," "q2 CN10," "q4 CN10," "q6 CN10," "wt CN11," "q2 CN11," "q4 CN11," "q6 CN11," "wt CN12," "cuboctahedral CN12," "q2 CN12," "q4 CN12," "q6 CN12," "wt CN13," "wt CN14," "wt CN15," "wt CN16," "wt CN17," "wt CN18," "wt CN19," "wt CN20," "wt CN21," "wt CN22," "wt CN23," and "wt CN24." Note that qn refers to Steinhardt bond orientational order parameter of order n. The resulting site fingerprint is thus defined as:

\mathbf{v}^\mathrm{site} = [w|_{\mathrm{CN}=1}, \quad w|_{\mathrm{CN}=2}, \quad q_\mathrm{L}|_{\mathrm{CN}=2}, \quad q_\mathrm{water}|_{\mathrm{CN}=2}, \quad \dots, \quad w|_{\mathrm{CN}=24}]^\mathrm{T}

Structure Fingerprints

The fingerprints from sites in a given structure are subsequently statistically processed to yield the minimum, maximum, mean, and standard deviation of each coordination information element. The resultant ordered vector defines a structure fingerprint, vstruct:

\mathbf{v}^\mathrm{struct} = [

\min(w|_{\mathrm{CN}=1}), \quad \max(w|_{\mathrm{CN}=1}), \quad \mathrm{mean}(w|_{\mathrm{CN}=1}), \quad \mathrm{std}(w|_{\mathrm{CN}=1}), \dots,

\min(w|_{\mathrm{CN}=24}), \quad \max(w|_{\mathrm{CN}=24}), \quad \mathrm{mean}(w|_{\mathrm{CN}=24}), \quad \mathrm{std}(w|_{\mathrm{CN}=24})

]^\mathrm{T}

Structure Distance/Dissimilarity

Finally, structure similarity is determined by the distance, d, between two structure fingerprints vistruct and vjstruct:

d = || \mathbf{v}_{i}^\mathrm{struct} - \mathbf{v}_{j}^\mathrm{struct} ||

A small distance value indicates high similarity between two structures, whereas a large distance (>1) suggests that the structures are very dissimilar. The spinel example below gives an approximate threshold up to which distance you can still consider two structures to be similar (0.9). Anything beyond 0.9 is most certainly not the same structure prototype.

Examples

  • Diamond (mp-66) vs. perfect CaTiO3 perovskite (mp-5827) \rightarrow d = 3.5540

Below is a python code snippet that allows you to quickly reproduce above results. You will need to install pymatgen and matminer for this to work. Both are easily accessible via the Python Package Index.

import numpy as np
from pymatgen import MPRester
from matminer.featurizers.site import CrystalNNFingerprint
from matminer.featurizers.structure import SiteStatsFingerprint

with MPRester() as mpr:

    # Get structures.
    diamond = mpr.get_structure_by_material_id("mp-66")
    gaas = mpr.get_structure_by_material_id("mp-2534")
    rocksalt = mpr.get_structure_by_material_id("mp-22862")
    perovskite = mpr.get_structure_by_material_id("mp-5827")
    spinel_caco2s4 = mpr.get_structure_by_material_id("mvc-12728")
    spinel_sicd2O4 = mpr.get_structure_by_material_id("mp-560842")

    # Calculate structure fingerprints.
    ssf = SiteStatsFingerprint(
        CrystalNNFingerprint.from_preset('ops', distance_cutoffs=None, x_diff_weight=0),
        stats=('mean', 'std_dev', 'minimum', 'maximum'))
    v_diamond = np.array(ssf.featurize(diamond))
    v_gaas = np.array(ssf.featurize(gaas))
    v_rocksalt = np.array(ssf.featurize(rocksalt))
    v_perovskite = np.array(ssf.featurize(perovskite))
    v_spinel_caco2s4 = np.array(ssf.featurize(spinel_caco2s4))
    v_spinel_sicd2O4 = np.array(ssf.featurize(spinel_sicd2O4))

    # Print out distance between structures.
    print('Distance between diamond and GaAs: {:.4f}'.format(np.linalg.norm(v_diamond - v_gaas)))
    print('Distance between diamond and rocksalt: {:.4f}'.format(np.linalg.norm(v_diamond - v_rocksalt)))
    print('Distance between diamond and perovskite: {:.4f}'.format(np.linalg.norm(v_diamond - v_perovskite)))
    print('Distance between rocksalt and perovskite: {:.4f}'.format(np.linalg.norm(v_rocksalt - v_perovskite)))
    print('Distance between Ca(CoS2)2-spinel and Si(CdO2)2-spinel: {:.4f}'.format(np.linalg.norm(v_spinel_caco2s4 - v_spinel_sicd2O4)))

References

  1. N. E. R. Zimmermann, D. Winston, K. A. Persson, A. Jain, in preparation (2018)
  2. N. E. R. Zimmermann, M. K. Horton, A. Jain, M. Haranczyk, Front. Mater., 4, 34, (2017)
  3. H. Pan, J. Dagdelen, N. E. R. Zimmermann, A. Jain, in preparation (2018)

Authors

Nils Zimmermann, Donny Winston