From 89a9da1e7a9b6524ada2d26146317e6ddc69b2b3 Mon Sep 17 00:00:00 2001 From: Shyue Ping Ong Date: Mon, 24 Jun 2024 11:37:59 -0700 Subject: [PATCH] Update docs. --- docs/_modules/index.html | 17 +- .../analysis/diffusion/aimd/clustering.html | 85 ++-- .../analysis/diffusion/aimd/pathway.html | 130 +++--- .../pymatgen/analysis/diffusion/aimd/rdf.html | 142 +++---- .../diffusion/aimd/tests/test_clustering.html | 42 +- .../diffusion/aimd/tests/test_pathway.html | 67 +-- .../diffusion/aimd/tests/test_rdf.html | 35 +- .../diffusion/aimd/tests/test_van_hove.html | 104 +++-- .../analysis/diffusion/aimd/van_hove.html | 198 ++++----- .../pymatgen/analysis/diffusion/analyzer.html | 353 ++++++++-------- .../diffusion/neb/full_path_mapper.html | 397 +++++++++--------- .../pymatgen/analysis/diffusion/neb/io.html | 56 ++- .../analysis/diffusion/neb/pathfinder.html | 384 +++++++++-------- .../diffusion/neb/periodic_dijkstra.html | 69 +-- .../neb/tests/test_full_path_mapper.html | 160 +++++-- .../analysis/diffusion/neb/tests/test_io.html | 103 +++-- .../diffusion/neb/tests/test_pathfinder.html | 107 +++-- .../diffusion/tests/test_analyzer.html | 65 +-- .../diffusion/tests/test_pathfinder.html | 28 +- .../diffusion/utils/edge_data_from_sc.html | 106 +++-- .../analysis/diffusion/utils/maggma.html | 29 +- .../diffusion/utils/parse_entries.html | 148 +++---- .../analysis/diffusion/utils/supercells.html | 114 ++--- .../utils/tests/test_edge_data_from_sc.html | 55 ++- .../utils/tests/test_parse_entries.html | 55 ++- docs/_static/basic.css | 6 +- docs/_static/doctools.js | 2 +- docs/_static/documentation_options.js | 5 +- docs/_static/language_data.js | 4 +- docs/_static/searchtools.js | 191 ++++++--- docs/_static/sphinx_highlight.js | 16 +- docs/_themes/README.html | 20 +- docs/change_log.html | 36 +- docs/doctrees/_themes/README.doctree | Bin 5842 -> 5832 bytes docs/doctrees/change_log.doctree | Bin 9019 -> 9009 bytes docs/doctrees/environment.pickle | Bin 2135639 -> 2153983 bytes docs/doctrees/index.doctree | Bin 20989 -> 20979 bytes docs/doctrees/modules.doctree | Bin 2761 -> 2751 bytes ...analysis.diffusion.aimd.clustering.doctree | Bin 47825 -> 48137 bytes .../pymatgen.analysis.diffusion.aimd.doctree | Bin 4731 -> 4721 bytes ...en.analysis.diffusion.aimd.pathway.doctree | Bin 50133 -> 50878 bytes ...matgen.analysis.diffusion.aimd.rdf.doctree | Bin 94067 -> 94269 bytes ...ffusion.aimd.tests.test_clustering.doctree | Bin 12747 -> 12878 bytes ....diffusion.aimd.tests.test_pathway.doctree | Bin 18731 -> 18958 bytes ...ysis.diffusion.aimd.tests.test_rdf.doctree | Bin 9268 -> 9375 bytes ...diffusion.aimd.tests.test_van_hove.doctree | Bin 28085 -> 28432 bytes ...n.analysis.diffusion.aimd.van_hove.doctree | Bin 114702 -> 115991 bytes ...matgen.analysis.diffusion.analyzer.doctree | Bin 167483 -> 166733 bytes .../pymatgen.analysis.diffusion.doctree | Bin 4633 -> 4623 bytes .../pymatgen.analysis.diffusion.neb.doctree | Bin 4786 -> 4776 bytes ...sis.diffusion.neb.full_path_mapper.doctree | Bin 115850 -> 126665 bytes ...pymatgen.analysis.diffusion.neb.io.doctree | Bin 22132 -> 23767 bytes ....analysis.diffusion.neb.pathfinder.doctree | Bin 136698 -> 141088 bytes ...is.diffusion.neb.periodic_dijkstra.doctree | Bin 27253 -> 25458 bytes ...on.neb.tests.test_full_path_mapper.doctree | Bin 51482 -> 52093 bytes ...alysis.diffusion.neb.tests.test_io.doctree | Bin 52814 -> 53161 bytes ...iffusion.neb.tests.test_pathfinder.doctree | Bin 63257 -> 63700 bytes ...ysis.diffusion.tests.test_analyzer.doctree | Bin 16734 -> 16937 bytes ...is.diffusion.tests.test_pathfinder.doctree | Bin 8201 -> 8284 bytes .../pymatgen.analysis.diffusion.utils.doctree | Bin 4717 -> 4709 bytes ....diffusion.utils.edge_data_from_sc.doctree | Bin 37239 -> 37608 bytes ...en.analysis.diffusion.utils.maggma.doctree | Bin 11206 -> 10881 bytes ...ysis.diffusion.utils.parse_entries.doctree | Bin 49642 -> 52604 bytes ...nalysis.diffusion.utils.supercells.doctree | Bin 27187 -> 28531 bytes ...utils.tests.test_edge_data_from_sc.doctree | Bin 8873 -> 8968 bytes ....diffusion.utils.tests.test_maggma.doctree | Bin 6029 -> 2668 bytes ...ion.utils.tests.test_parse_entries.doctree | Bin 15842 -> 16045 bytes docs/doctrees/pymatgen.analysis.doctree | Bin 3347 -> 3337 bytes docs/doctrees/pymatgen.doctree | Bin 2702 -> 2692 bytes docs/doctrees/pymatgen_diffusion.aimd.doctree | Bin 4896 -> 4886 bytes docs/doctrees/pymatgen_diffusion.doctree | Bin 3368 -> 3358 bytes docs/doctrees/pymatgen_diffusion.neb.doctree | Bin 4946 -> 4936 bytes docs/genindex.html | 29 +- docs/index.html | 38 +- docs/modules.html | 20 +- docs/objects.inv | Bin 3340 -> 3314 bytes docs/py-modindex.html | 21 +- ...en.analysis.diffusion.aimd.clustering.html | 42 +- docs/pymatgen.analysis.diffusion.aimd.html | 26 +- ...atgen.analysis.diffusion.aimd.pathway.html | 62 ++- .../pymatgen.analysis.diffusion.aimd.rdf.html | 46 +- ....diffusion.aimd.tests.test_clustering.html | 28 +- ...sis.diffusion.aimd.tests.test_pathway.html | 36 +- ...nalysis.diffusion.aimd.tests.test_rdf.html | 26 +- ...is.diffusion.aimd.tests.test_van_hove.html | 46 +- ...tgen.analysis.diffusion.aimd.van_hove.html | 60 +-- .../pymatgen.analysis.diffusion.analyzer.html | 92 ++-- docs/pymatgen.analysis.diffusion.html | 26 +- ...alysis.diffusion.neb.full_path_mapper.html | 262 +++++++----- docs/pymatgen.analysis.diffusion.neb.html | 28 +- docs/pymatgen.analysis.diffusion.neb.io.html | 54 +-- ...gen.analysis.diffusion.neb.pathfinder.html | 103 +++-- ...lysis.diffusion.neb.periodic_dijkstra.html | 34 +- ...usion.neb.tests.test_full_path_mapper.html | 75 ++-- ....analysis.diffusion.neb.tests.test_io.html | 46 +- ...s.diffusion.neb.tests.test_pathfinder.html | 54 +-- ...nalysis.diffusion.tests.test_analyzer.html | 34 +- ...lysis.diffusion.tests.test_pathfinder.html | 24 +- ...sis.diffusion.utils.edge_data_from_sc.html | 51 +-- docs/pymatgen.analysis.diffusion.utils.html | 28 +- ...atgen.analysis.diffusion.utils.maggma.html | 28 +- ...nalysis.diffusion.utils.parse_entries.html | 88 ++-- ...n.analysis.diffusion.utils.supercells.html | 32 +- ...on.utils.tests.test_edge_data_from_sc.html | 28 +- ...sis.diffusion.utils.tests.test_maggma.html | 45 +- ...fusion.utils.tests.test_parse_entries.html | 34 +- docs/pymatgen.analysis.html | 22 +- docs/pymatgen.html | 20 +- docs/pymatgen_diffusion.aimd.html | 34 +- docs/pymatgen_diffusion.html | 24 +- docs/pymatgen_diffusion.neb.html | 34 +- docs/search.html | 22 +- docs/searchindex.js | 2 +- pyproject.toml | 2 +- 114 files changed, 2717 insertions(+), 2418 deletions(-) diff --git a/docs/_modules/index.html b/docs/_modules/index.html index 0380a7f..c8b257d 100644 --- a/docs/_modules/index.html +++ b/docs/_modules/index.html @@ -1,15 +1,15 @@ - + - Overview: module code — pymatgen-diffusion 2023.8.15 documentation + Overview: module code — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

Navigation

  • modules |
  • - + @@ -68,7 +68,6 @@

    All modules for which code is available

  • pymatgen.analysis.diffusion.utils.parse_entries
  • pymatgen.analysis.diffusion.utils.supercells
  • pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc
  • -
  • pymatgen.analysis.diffusion.utils.tests.test_maggma
  • pymatgen.analysis.diffusion.utils.tests.test_parse_entries
  • @@ -82,7 +81,7 @@

    All modules for which code is available

  • Documentation overview
  • - + diff --git a/docs/_modules/pymatgen/analysis/diffusion/aimd/clustering.html b/docs/_modules/pymatgen/analysis/diffusion/aimd/clustering.html index a402652..123f2b2 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/aimd/clustering.html +++ b/docs/_modules/pymatgen/analysis/diffusion/aimd/clustering.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.aimd.clustering — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.aimd.clustering — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -46,14 +46,12 @@

    Navigation

    Source code for pymatgen.analysis.diffusion.aimd.clustering

    -# Copyright (c) Materials Virtual Lab.
    -# Distributed under the terms of the BSD License.
    -
    -"""
    +"""
     This module implements clustering algorithms to determine centroids, with
     adaption for periodic boundary conditions. This can be used, for example, to
     determine likely atomic positions from MD trajectories.
     """
    +
     from __future__ import annotations
     
     import random
    @@ -71,10 +69,10 @@ 

    Source code for pymatgen.analysis.diffusion.aimd.clustering

    __date__ = "3/18/15" -
    [docs]class Kmeans: - """ - Simple kmeans clustering. - """ +
    +[docs] +class Kmeans: + """Simple kmeans clustering.""" def __init__(self, max_iterations: int = 1000): """ @@ -83,7 +81,9 @@

    Source code for pymatgen.analysis.diffusion.aimd.clustering

    """ self.max_iterations = max_iterations -
    [docs] def cluster(self, points, k, initial_centroids=None): +
    +[docs] + def cluster(self, points, k, initial_centroids=None): """ Args: points (ndarray): Data points as a mxn ndarray, where m is the @@ -122,7 +122,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.clustering

    # We can get the labels too by calling getLabels(dataSet, centroids) return centroids, labels, ss
    -
    [docs] @staticmethod + +
    +[docs] + @staticmethod def get_labels(points, centroids): """ For each element in the dataset, chose the closest centroid. @@ -136,7 +139,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.clustering

    min_dists = np.min(dists, axis=1) return np.where(dists == min_dists[:, None])[1], np.sum(min_dists**2)
    -
    [docs] @staticmethod + +
    +[docs] + @staticmethod def get_centroids(points, labels, k, centroids): """ Each centroid is the geometric mean of the points that @@ -159,7 +165,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.clustering

    centroids.append(get_random_centroid(points)) return np.array(centroids)
    -
    [docs] def should_stop(self, old_centroids, centroids, iterations): + +
    +[docs] + def should_stop(self, old_centroids, centroids, iterations): """ Check for stopping conditions. @@ -173,10 +182,14 @@

    Source code for pymatgen.analysis.diffusion.aimd.clustering

    return True if old_centroids is None: return False - return np.allclose(old_centroids, centroids)
    + return np.allclose(old_centroids, centroids)
    +
    -
    [docs]class KmeansPBC(Kmeans): + +
    +[docs] +class KmeansPBC(Kmeans): """ A version of KMeans that work with PBC. Distance metrics have to change, as well as new centroid determination. The points supplied should be @@ -192,7 +205,9 @@

    Source code for pymatgen.analysis.diffusion.aimd.clustering

    self.lattice = lattice self.max_iterations = max_iterations -
    [docs] def get_labels(self, points, centroids): +
    +[docs] + def get_labels(self, points, centroids): """ For each element in the dataset, chose the closest centroid. Make that centroid the element's label. @@ -205,7 +220,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.clustering

    min_dists = np.min(dists, axis=1) return np.where(dists == min_dists[:, None])[1], np.sum(min_dists**2)
    -
    [docs] def get_centroids(self, points, labels, k, centroids): + +
    +[docs] + def get_centroids(self, points, labels, k, centroids): """ Each centroid is the geometric mean of the points that have that centroid's label. Important: If a centroid is empty (no @@ -237,7 +255,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.clustering

    new_centroids.append(c) return np.array(new_centroids)
    -
    [docs] def should_stop(self, old_centroids, centroids, iterations): + +
    +[docs] + def should_stop(self, old_centroids, centroids, iterations): """ Check for stopping conditions. @@ -254,10 +275,14 @@

    Source code for pymatgen.analysis.diffusion.aimd.clustering

    return all( np.allclose(pbc_diff(c1, c2), [0, 0, 0]) for c1, c2 in zip(old_centroids, centroids) - )
    + )
    +
    -
    [docs]def get_random_centroid(points): + +
    +[docs] +def get_random_centroid(points): """ Generate a random centroid based on points. @@ -270,7 +295,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.clustering

    return np.array([random.uniform(mind[i], maxd[i]) for i in range(n)])
    -
    [docs]def get_random_centroids(points, k): + +
    +[docs] +def get_random_centroids(points, k): """ Generate k random centroids based on points. @@ -282,6 +310,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.clustering

    for _i in range(k): centroids.append(get_random_centroid(points)) return np.array(centroids)
    +
    @@ -296,7 +325,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.clustering

    +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/aimd/pathway.html b/docs/_modules/pymatgen/analysis/diffusion/aimd/pathway.html index 1f98fbb..54d2535 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/aimd/pathway.html +++ b/docs/_modules/pymatgen/analysis/diffusion/aimd/pathway.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.aimd.pathway — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.aimd.pathway — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -46,12 +46,8 @@

    Navigation

    Source code for pymatgen.analysis.diffusion.aimd.pathway

    -# Copyright (c) Materials Virtual Lab.
    -# Distributed under the terms of the BSD License.
    +"""Algorithms for diffusion pathway analysis."""
     
    -"""
    - Algorithms for diffusion pathway analysis
    -"""
     from __future__ import annotations
     
     import itertools
    @@ -62,8 +58,12 @@ 

    Source code for pymatgen.analysis.diffusion.aimd.pathway

    from scipy.spatial.distance import squareform -
    [docs]class ProbabilityDensityAnalysis: +
    +[docs] +class ProbabilityDensityAnalysis: r""" + Probability density analysis class. + Compute the time-averaged probability density distribution of selected species on a "uniform" (in terms of fractional coordinates) 3-D grid. Note that \int_{\Omega}d^3rP(r) = 1 @@ -78,6 +78,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.pathway

    def __init__(self, structure, trajectories, interval=0.5, species=("Li", "Na")): """ Initialization. + Args: structure (Structure): crystal structure trajectories (numpy array): ionic trajectories of the structure @@ -88,7 +89,6 @@

    Source code for pymatgen.analysis.diffusion.aimd.pathway

    (in Angstrom) species(list of str): list of species that are of interest """ - # initial settings trajectories = np.array(trajectories) @@ -97,9 +97,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.pathway

    assert np.all(trajectories >= 0) assert np.all(trajectories <= 1) - indices = [ - j for j, site in enumerate(structure) if site.specie.symbol in species - ] + indices = [j for j, site in enumerate(structure) if site.specie.symbol in species] lattice = structure.lattice frac_interval = [interval / length for length in lattice.abc] nsteps = len(trajectories) @@ -133,35 +131,20 @@

    Source code for pymatgen.analysis.diffusion.aimd.pathway

    for i in range(3): next_i[i] = corner_i[i] + 1 if corner_i[i] < lens[i] - 1 else 0 - agrid = ( - np.array([corner_i[0], next_i[0]])[:, None] - * np.array([1, 0, 0])[None, :] - ) - bgrid = ( - np.array([corner_i[1], next_i[1]])[:, None] - * np.array([0, 1, 0])[None, :] - ) - cgrid = ( - np.array([corner_i[2], next_i[2]])[:, None] - * np.array([0, 0, 1])[None, :] - ) + agrid = np.array([corner_i[0], next_i[0]])[:, None] * np.array([1, 0, 0])[None, :] + bgrid = np.array([corner_i[1], next_i[1]])[:, None] * np.array([0, 1, 0])[None, :] + cgrid = np.array([corner_i[2], next_i[2]])[:, None] * np.array([0, 0, 1])[None, :] - grid_indices = ( - agrid[:, None, None] + bgrid[None, :, None] + cgrid[None, None, :] - ) + grid_indices = agrid[:, None, None] + bgrid[None, :, None] + cgrid[None, None, :] grid_indices = grid_indices.reshape(8, 3) mini_grid = [grid[indx[0], indx[1], indx[2]] for indx in grid_indices] dist_matrix = lattice.get_all_distances(mini_grid, fcoord) - indx = np.where(dist_matrix == np.min(dist_matrix, axis=0)[None, :])[0][ - 0 - ] + indx = np.where(dist_matrix == np.min(dist_matrix, axis=0)[None, :])[0][0] # 3-index label mapping to single index min_indx = ( - grid_indices[indx][0] * len(rb) * len(rc) - + grid_indices[indx][1] * len(rc) - + grid_indices[indx][2] + grid_indices[indx][0] * len(rb) * len(rc) + grid_indices[indx][1] * len(rc) + grid_indices[indx][2] ) # make sure the index does not go out of bound. @@ -182,10 +165,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.pathway

    self.species = species self.stable_sites = None -
    [docs] @classmethod - def from_diffusion_analyzer( - cls, diffusion_analyzer, interval=0.5, species=("Li", "Na") - ): +
    +[docs] + @classmethod + def from_diffusion_analyzer(cls, diffusion_analyzer, interval=0.5, species=("Li", "Na")): """ Create a ProbabilityDensityAnalysis from a diffusion_analyzer object. @@ -204,11 +187,12 @@

    Source code for pymatgen.analysis.diffusion.aimd.pathway

    trajectories = np.array(trajectories) - return ProbabilityDensityAnalysis( - structure, trajectories, interval=interval, species=species - )
    + return ProbabilityDensityAnalysis(structure, trajectories, interval=interval, species=species)
    + -
    [docs] def generate_stable_sites(self, p_ratio=0.25, d_cutoff=1.0): +
    +[docs] + def generate_stable_sites(self, p_ratio=0.25, d_cutoff=1.0): """ Obtain a set of low-energy sites from probability density function with given probability threshold 'p_ratio'. The set of grid points with @@ -227,7 +211,6 @@

    Source code for pymatgen.analysis.diffusion.aimd.pathway

    The set of stable sites is stored in the `stable_sites` attribute as a Nx3 numpy array. """ - # Set of grid points with high probability density. grid_fcoords = [] indices = np.where(self.Pr > self.Pr.max() * p_ratio) @@ -279,24 +262,28 @@

    Source code for pymatgen.analysis.diffusion.aimd.pathway

    self.stable_sites = np.array(stable_sites)
    -
    [docs] def get_full_structure(self): + +
    +[docs] + def get_full_structure(self): """ Generate the structure with the low-energy sites included. In the end, a pymatgen Structure object will be returned. """ - full_structure = self.structure.copy() for fcoord in self.stable_sites: full_structure.append("X", fcoord) return full_structure
    -
    [docs] def to_chgcar(self, filename="CHGCAR.vasp"): + +
    +[docs] + def to_chgcar(self, filename="CHGCAR.vasp"): """ Save the probability density distribution in the format of CHGCAR, which can be visualized by VESTA. """ - count = 1 VolinAu = self.structure.lattice.volume / 0.5291772083**3 syms = [site.specie.symbol for site in self.structure] @@ -333,10 +320,14 @@

    Source code for pymatgen.analysis.diffusion.aimd.pathway

    f.write("\n") count += 1 - f.close()
    + f.close()
    +
    + -
    [docs]class SiteOccupancyAnalyzer: +
    +[docs] +class SiteOccupancyAnalyzer: """ A class that analyzes the site occupancy of given species using MD trajectories. The occupancy of a site is determined based on the shortest distance scheme. @@ -367,20 +358,15 @@

    Source code for pymatgen.analysis.diffusion.aimd.pathway

    simulation. Note that the coordinates are fractional. species(list of str): list of species that are of interest. """ - lattice = structure.lattice coords_ref = np.array(coords_ref) trajectories = np.array(trajectories) count = Counter() - indices = [ - i for i, site in enumerate(structure) if site.specie.symbol in species - ] + indices = [i for i, site in enumerate(structure) if site.specie.symbol in species] for it in range(len(trajectories)): - dist_matrix = lattice.get_all_distances( - coords_ref, trajectories[it, indices, :] - ) + dist_matrix = lattice.get_all_distances(coords_ref, trajectories[it, indices, :]) labels = np.where(dist_matrix == np.min(dist_matrix, axis=0)[None, :])[0] count.update(labels) @@ -397,16 +383,17 @@

    Source code for pymatgen.analysis.diffusion.aimd.pathway

    self.nsteps = len(trajectories) self.site_occ = site_occ -
    [docs] def get_average_site_occupancy(self, indices): - """ - Get the average site occupancy over a subset of reference sites. - """ +
    +[docs] + def get_average_site_occupancy(self, indices): + """Get the average site occupancy over a subset of reference sites.""" return np.sum(self.site_occ[indices]) / len(indices)
    -
    [docs] @classmethod - def from_diffusion_analyzer( - cls, coords_ref, diffusion_analyzer, species=("Li", "Na") - ): + +
    +[docs] + @classmethod + def from_diffusion_analyzer(cls, coords_ref, diffusion_analyzer, species=("Li", "Na")): """ Create a SiteOccupancyAnalyzer object using a diffusion_analyzer object. @@ -417,7 +404,6 @@

    Source code for pymatgen.analysis.diffusion.aimd.pathway

    pymatgen.analysis.diffusion_analyzer.DiffusionAnalyzer object species(list of str): list of species that are of interest. """ - trajectories = [] # Initial structure. @@ -427,7 +413,9 @@

    Source code for pymatgen.analysis.diffusion.aimd.pathway

    for s in diffusion_analyzer.get_drift_corrected_structures(): trajectories.append(s.frac_coords) - return SiteOccupancyAnalyzer(structure, coords_ref, trajectories, species)
    + return SiteOccupancyAnalyzer(structure, coords_ref, trajectories, species)
    +
    +
    @@ -442,7 +430,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.pathway

    +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/aimd/rdf.html b/docs/_modules/pymatgen/analysis/diffusion/aimd/rdf.html index 908ab60..2cc3af8 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/aimd/rdf.html +++ b/docs/_modules/pymatgen/analysis/diffusion/aimd/rdf.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.aimd.rdf — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.aimd.rdf — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -49,9 +49,8 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    # Copyright (c) Materials Virtual Lab. # Distributed under the terms of the BSD License. -""" -RDF implementation. -""" +"""RDF implementation.""" + from __future__ import annotations from collections import Counter @@ -68,7 +67,9 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    from pymatgen.util.plotting import pretty_plot -
    [docs]class RadialDistributionFunction: +
    +[docs] +class RadialDistributionFunction: """ Calculate the average radial distribution function for a given set of structures. @@ -99,7 +100,6 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    reference_indices ([int]): set this option along with 'indices' parameter to compute radial distribution function. """ - if ngrid < 2: raise ValueError("ngrid should be greater than 1!") if sigma <= 0: @@ -142,11 +142,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    self.rho = rho # This is the average density for fcoords, ref_fcoords, latt in zip(fcoords_list, ref_fcoords_list, lattices): - dcf = ( - fcoords[:, None, None, :] - + images[None, None, :, :] - - ref_fcoords[None, :, None, :] - ) + dcf = fcoords[:, None, None, :] + images[None, None, :, :] - ref_fcoords[None, :, None, :] dcc = latt.get_cartesian_coords(dcf) d2 = np.sum(dcc**2, axis=3) dists = [ @@ -176,18 +172,14 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    ) # additional dr factor renormalises overlapping gaussians. - raw_rdf[indx] += ( - dn / float(len(reference_indices)) / ff / rho / len(fcoords_list) - ) + raw_rdf[indx] += dn / float(len(reference_indices)) / ff / rho / len(fcoords_list) self.structures = structures self.cell_range = cell_range self.rmax = rmax self.ngrid = ngrid self.species = {structures[0][i].species_string for i in indices} - self.reference_species = { - structures[0][i].species_string for i in reference_indices - } + self.reference_species = {structures[0][i].species_string for i in reference_indices} self.indices = indices self.reference_indices = reference_indices self.dr = dr @@ -200,7 +192,9 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    self.peak_r = [self.interval[i] for i in self.peak_indices] self.peak_rdf = [self.rdf[i] for i in self.peak_indices] -
    [docs] @classmethod +
    +[docs] + @classmethod def from_species( cls, structures: list, @@ -229,15 +223,9 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    eg: species=["H"], reference_species=["O"] to compute O-H pair distribution in a water MD simulation. """ - indices = [ - j for j, site in enumerate(structures[0]) if site.specie.symbol in species - ] + indices = [j for j, site in enumerate(structures[0]) if site.specie.symbol in species] if reference_species: - reference_indices = [ - j - for j, site in enumerate(structures[0]) - if site.specie.symbol in reference_species - ] + reference_indices = [j for j, site in enumerate(structures[0]) if site.specie.symbol in reference_species] if len(reference_indices) < 1: raise ValueError("Given reference species are not in the structure!") @@ -254,26 +242,22 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    reference_indices=reference_indices, )
    + @property def coordination_number(self): """ - returns running coordination number + returns running coordination number. Returns: numpy array """ # Note: The average density from all input structures is used here. intervals = np.append(self.interval, self.interval[-1] + self.dr) - return np.cumsum( - self.raw_rdf - * self.rho - * 4.0 - / 3.0 - * np.pi - * (intervals[1:] ** 3 - intervals[:-1] ** 3) - ) + return np.cumsum(self.raw_rdf * self.rho * 4.0 / 3.0 * np.pi * (intervals[1:] ** 3 - intervals[:-1] ** 3)) -
    [docs] def get_rdf_plot( +
    +[docs] + def get_rdf_plot( self, label: str | None = None, xlim: tuple = (0.0, 8.0), @@ -289,7 +273,6 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    ylim (list): Set the y limits of the current axes. loc_peak (bool): Label peaks if True. """ - if label is None: symbol_list = [e.symbol for e in self.structures[0].composition] symbol_list = [symbol for symbol in symbol_list if symbol in self.species] @@ -312,8 +295,8 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    label="Peaks", ) - plt.xlabel("$r$ ($\\rm\\AA$)") - plt.ylabel("$g(r)$") + plt.set_xlabel("$r$ ($\\rm\\AA$)") + plt.set_ylabel("$g(r)$") plt.legend(loc="upper right", fontsize=36) plt.xlim(xlim[0], xlim[1]) plt.ylim(ylim[0], ylim[1]) @@ -321,7 +304,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    return plt
    -
    [docs] def export_rdf(self, filename: str): + +
    +[docs] + def export_rdf(self, filename: str): """ Output RDF data to a csv file. @@ -340,13 +326,15 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    for r, gr in zip(self.interval, self.rdf): f.write(delimiter.join([str(v) for v in [r, gr]])) - f.write("\n")
    + f.write("\n")
    +
    -
    [docs]class RadialDistributionFunctionFast: - """ - Fast radial distribution analysis. - """ + +
    +[docs] +class RadialDistributionFunctionFast: + """Fast radial distribution analysis.""" def __init__( self, @@ -414,9 +402,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    self.neighbor_elements = [elements[i] for i in self.neighbor_indices] self.density = [{}] * len(self.structures) # type: list[dict] - self.natoms = [ - i.composition.to_data_dict["unit_cell_composition"] for i in self.structures - ] + self.natoms = [i.composition.to_data_dict["unit_cell_composition"] for i in self.structures] for s_index, natoms in enumerate(self.natoms): for i, j in natoms.items(): @@ -429,23 +415,24 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    def _dist_to_counts(self, d): """ - Convert a distance array for counts in the bin + Convert a distance array for counts in the bin. Args: d: (1D np.array) + Returns: 1D array of counts in the bins centered on self.r """ counts = np.zeros((self.ngrid,)) - indices = np.array( - np.floor((d - self.rmin + 0.5 * self.dr) / self.dr), dtype=int - ) + indices = np.array(np.floor((d - self.rmin + 0.5 * self.dr) / self.dr), dtype=int) unique, val_counts = np.unique(indices, return_counts=True) counts[unique] = val_counts return counts -
    [docs] def get_rdf( +
    +[docs] + def get_rdf( self, ref_species: str | list[str], species: str | list[str], @@ -458,27 +445,26 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    species (list of species or just single specie str): the species that we are interested in. The rdfs are calculated on these species. is_average (bool): whether to take the average over - all structures + all structures. Returns: (x, rdf) x is the radial points, and rdf is the rdf value. """ if self.n_jobs > 1: all_rdfs = Parallel(n_jobs=self.n_jobs)( - self.get_one_rdf(ref_species, species, i) - for i in range(self.n_structures) + self.get_one_rdf(ref_species, species, i) for i in range(self.n_structures) ) all_rdfs = [i[1] for i in all_rdfs] else: - all_rdfs = [ - self.get_one_rdf(ref_species, species, i)[1] - for i in range(self.n_structures) - ] + all_rdfs = [self.get_one_rdf(ref_species, species, i)[1] for i in range(self.n_structures)] if is_average: all_rdfs = np.mean(all_rdfs, axis=0) return self.r, all_rdfs
    -
    [docs] def get_one_rdf( + +
    +[docs] + def get_one_rdf( self, ref_species: str | list[str], species: str | list[str], @@ -486,7 +472,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    ): """ Get the RDF for one structure, indicated by the index of the structure - in all structures + in all structures. Args: ref_species (list of species or just single specie str): the reference species. @@ -521,9 +507,12 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    rdf_temp = gaussian_filter1d(rdf_temp, self.sigma) return self.r, rdf_temp
    -
    [docs] def get_coordination_number(self, ref_species, species, is_average=True): + +
    +[docs] + def get_coordination_number(self, ref_species, species, is_average=True): """ - returns running coordination number + returns running coordination number. Args: ref_species (list of species or just single specie str): the reference species. @@ -540,18 +529,17 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    if isinstance(species, str): species = [species] density = [sum(i[j] for j in species) for i in self.density] - cn = [ - np.cumsum(rdf * density[i] * 4.0 * np.pi * self.r**2 * self.dr) - for i, rdf in enumerate(all_rdf) - ] + cn = [np.cumsum(rdf * density[i] * 4.0 * np.pi * self.r**2 * self.dr) for i, rdf in enumerate(all_rdf)] if is_average: cn = np.mean(cn, axis=0) - return self.r, cn
    + return self.r, cn
    +
    + def _get_neighbor_list(structure, r) -> tuple: """ - Thin wrapper to enable parallel calculations + Thin wrapper to enable parallel calculations. Args: structure (pymatgen Structure): pymatgen structure @@ -575,7 +563,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.rdf

    +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/aimd/tests/test_clustering.html b/docs/_modules/pymatgen/analysis/diffusion/aimd/tests/test_clustering.html index c8085f9..a1c952b 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/aimd/tests/test_clustering.html +++ b/docs/_modules/pymatgen/analysis/diffusion/aimd/tests/test_clustering.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.aimd.tests.test_clustering — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.aimd.tests.test_clustering — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -61,8 +61,12 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_clustering

    < from pymatgen.util.coord import pbc_diff -
    [docs]class KmeansTest(unittest.TestCase): -
    [docs] def test_cluster(self): +
    +[docs] +class KmeansTest(unittest.TestCase): +
    +[docs] + def test_cluster(self): data = np.random.uniform(size=(10, 5)) data = list(data) d2 = np.random.uniform(size=(10, 5)) + ([5] * 5) @@ -82,11 +86,17 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_clustering

    < if np.allclose(c1, a): same = True break - assert same
    + assert same
    +
    + -
    [docs]class KmeansPBCTest(unittest.TestCase): -
    [docs] def test_cluster(self): +
    +[docs] +class KmeansPBCTest(unittest.TestCase): +
    +[docs] + def test_cluster(self): lattice = Lattice.cubic(4) pts = [] @@ -105,11 +115,9 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_clustering

    < if np.allclose(pbc_diff(c1, c2), [0, 0, 0], atol=0.1): found = True break - assert found
    - + assert found
    +
    -if __name__ == "__main__": - unittest.main()
    @@ -124,7 +132,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_clustering

    < - +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/aimd/tests/test_pathway.html b/docs/_modules/pymatgen/analysis/diffusion/aimd/tests/test_pathway.html index bee999e..38e3702 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/aimd/tests/test_pathway.html +++ b/docs/_modules/pymatgen/analysis/diffusion/aimd/tests/test_pathway.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.aimd.tests.test_pathway — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.aimd.tests.test_pathway — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -59,10 +59,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_pathway

    import numpy as np -from pymatgen.analysis.diffusion.aimd.pathway import ( - ProbabilityDensityAnalysis, - SiteOccupancyAnalyzer, -) +from pymatgen.analysis.diffusion.aimd.pathway import ProbabilityDensityAnalysis, SiteOccupancyAnalyzer from pymatgen.analysis.diffusion.analyzer import DiffusionAnalyzer from pymatgen.core import Structure from pymatgen.io.vasp import Chgcar @@ -70,8 +67,12 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_pathway

    tests_dir = os.path.dirname(os.path.abspath(__file__)) -
    [docs]class ProbabilityDensityTest(unittest.TestCase): -
    [docs] def test_probability(self): +
    +[docs] +class ProbabilityDensityTest(unittest.TestCase): +
    +[docs] + def test_probability(self): traj_file = os.path.join(tests_dir, "cNa3PS4_trajectories.npy") struc_file = os.path.join(tests_dir, "cNa3PS4.cif") @@ -87,7 +88,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_pathway

    self.assertAlmostEqual(pda.Pr.min(), 0.0, 12) self.assertAlmostEqual(Pr_tot, 1.0, 12)
    -
    [docs] def test_probability_classmethod(self): + +
    +[docs] + def test_probability_classmethod(self): file = os.path.join(tests_dir, "cNa3PS4_pda.json") data = json.load(open(file)) diff_analyzer = DiffusionAnalyzer.from_dict(data) @@ -103,7 +107,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_pathway

    self.assertAlmostEqual(pda.Pr.min(), 0.0, 12) self.assertAlmostEqual(Pr_tot, 1.0, 12)
    -
    [docs] def test_generate_stable_sites(self): + +
    +[docs] + def test_generate_stable_sites(self): file = os.path.join(tests_dir, "cNa3PS4_pda.json") data = json.load(open(file)) diff_analyzer = DiffusionAnalyzer.from_dict(data) @@ -124,7 +131,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_pathway

    assert s.composition["X"] == 50 self.assertAlmostEqual(s[177].frac_coords[2], 0.57446809)
    -
    [docs] def test_to_chgcar(self): + +
    +[docs] + def test_to_chgcar(self): file = os.path.join(tests_dir, "cNa3PS4_pda.json") data = json.load(open(file)) diff_analyzer = DiffusionAnalyzer.from_dict(data) @@ -136,11 +146,17 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_pathway

    pda.to_chgcar("CHGCAR.PDA") chgcar = Chgcar.from_file("CHGCAR.PDA") assert pda.structure.species == chgcar.structure.species - os.remove("CHGCAR.PDA")
    + os.remove("CHGCAR.PDA")
    +
    + -
    [docs]class SiteOccupancyTest(unittest.TestCase): -
    [docs] def test_site_occupancy(self): +
    +[docs] +class SiteOccupancyTest(unittest.TestCase): +
    +[docs] + def test_site_occupancy(self): traj_file = os.path.join(tests_dir, "cNa3PS4_trajectories.npy") struc_file = os.path.join(tests_dir, "cNa3PS4.cif") @@ -159,7 +175,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_pathway

    self.assertAlmostEqual(site_occ[15], 0.875, 12) assert len(coords_ref) == 48
    -
    [docs] def test_site_occupancy_classmethod(self): + +
    +[docs] + def test_site_occupancy_classmethod(self): file = os.path.join(tests_dir, "cNa3PS4_pda.json") data = json.load(open(file)) diff_analyzer = DiffusionAnalyzer.from_dict(data) @@ -175,11 +194,9 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_pathway

    self.assertAlmostEqual(np.sum(site_occ), len(coords_ref), 12) self.assertAlmostEqual(site_occ[1], 0.98, 12) self.assertAlmostEqual(site_occ[26], 0.97, 12) - assert len(coords_ref) == 48
    - + assert len(coords_ref) == 48
    +
    -if __name__ == "__main__": - unittest.main()
    @@ -194,7 +211,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_pathway

    - +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/aimd/tests/test_rdf.html b/docs/_modules/pymatgen/analysis/diffusion/aimd/tests/test_rdf.html index c7409af..7e18b3a 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/aimd/tests/test_rdf.html +++ b/docs/_modules/pymatgen/analysis/diffusion/aimd/tests/test_rdf.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.aimd.tests.test_rdf — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.aimd.tests.test_rdf — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -60,8 +60,12 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_rdf

    tests_dir = os.path.dirname(os.path.abspath(__file__)) -
    [docs]class RDFTest(unittest.TestCase): -
    [docs] def test_rdf(self): +
    +[docs] +class RDFTest(unittest.TestCase): +
    +[docs] + def test_rdf(self): # Parse the DiffusionAnalyzer object from json file directly obj = loadfn(os.path.join(tests_dir, "cNa3PS4_pda.json")) @@ -81,7 +85,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_rdf

    self.assertAlmostEqual(r[np.argmax(s_na_rdf)], 2.9000, 4)
    -
    [docs] def test_rdf_coordination_number(self): + +
    +[docs] + def test_rdf_coordination_number(self): # create a simple cubic lattice coords = np.array([[0.5, 0.5, 0.5]]) atom_list = ["S"] @@ -92,11 +99,9 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_rdf

    rdf = RadialDistributionFunctionFast( structures=[structure], rmax=5.0, sigma=0.01, ngrid=500 ) - assert np.round(rdf.get_coordination_number("S", "S")[1][110], 2) == 6.0
    - + assert np.round(rdf.get_coordination_number("S", "S")[1][110], 2) == 6.0
    +
    -if __name__ == "__main__": - unittest.main()
    @@ -111,7 +116,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_rdf

    - +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/aimd/tests/test_van_hove.html b/docs/_modules/pymatgen/analysis/diffusion/aimd/tests/test_van_hove.html index d5e70ac..c2ce69d 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/aimd/tests/test_van_hove.html +++ b/docs/_modules/pymatgen/analysis/diffusion/aimd/tests/test_van_hove.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.aimd.tests.test_van_hove — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.aimd.tests.test_van_hove — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -61,20 +61,21 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_van_hove

    import matplotlib as mpl import numpy as np +import pytest from monty.serialization import loadfn -from pymatgen.analysis.diffusion.aimd.van_hove import ( - EvolutionAnalyzer, - RadialDistributionFunction, - VanHoveAnalysis, -) +from pymatgen.analysis.diffusion.aimd.van_hove import EvolutionAnalyzer, RadialDistributionFunction, VanHoveAnalysis mpl.use("pdf") tests_dir = os.path.dirname(os.path.abspath(__file__)) -
    [docs]class VanHoveTest(unittest.TestCase): -
    [docs] def test_van_hove(self): +
    +[docs] +class VanHoveTest(unittest.TestCase): +
    +[docs] + def test_van_hove(self): # Parse the DiffusionAnalyzer object from json file directly obj = loadfn(os.path.join(tests_dir, "cNa3PS4_pda.json")) @@ -91,11 +92,17 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_van_hove

    check = np.shape(vh.gsrt) == (20, 101) and np.shape(vh.gdrt) == (20, 101) assert check self.assertAlmostEqual(vh.gsrt[0, 0], 3.98942280401, 10) - self.assertAlmostEqual(vh.gdrt[10, 0], 9.68574868168, 10)
    + self.assertAlmostEqual(vh.gdrt[10, 0], 9.68574868168, 10)
    +
    + -
    [docs]class RDFTest(unittest.TestCase): -
    [docs] def test_rdf(self): +
    +[docs] +class RDFTest(unittest.TestCase): +
    +[docs] + def test_rdf(self): # Parse the DiffusionAnalyzer object from json file directly obj = loadfn(os.path.join(tests_dir, "cNa3PS4_pda.json")) @@ -165,7 +172,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_van_hove

    self.assertAlmostEqual(obj_1.rho, obj_2.rho) self.assertAlmostEqual(obj_1.rdf[0], obj_2.rdf[0])
    -
    [docs] def test_rdf_coordination_number(self): + +
    +[docs] + def test_rdf_coordination_number(self): # create a simple cubic lattice coords = np.array([[0.5, 0.5, 0.5]]) atom_list = ["S"] @@ -178,7 +188,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_van_hove

    ) assert rdf.coordination_number[100] == 6.0
    -
    [docs] def test_rdf_two_species_coordination_number(self): + +
    +[docs] + def test_rdf_two_species_coordination_number(self): # create a structure with interpenetrating simple cubic lattice coords = np.array([[0.0, 0.0, 0.0], [0.5, 0.5, 0.5]]) atom_list = ["S", "Zn"] @@ -196,7 +209,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_van_hove

    ) assert rdf.coordination_number[100] == 8.0
    -
    [docs] def setUp(self): + +
    +[docs] + def setUp(self): coords = np.array([[0.5, 0.5, 0.5]]) atom_list = ["S"] lattice = Lattice.from_parameters( @@ -204,33 +220,51 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_van_hove

    ) self.structure = Structure(lattice, atom_list, coords)
    -
    [docs] def test_raises_valueerror_if_ngrid_is_less_than_2(self): - with self.assertRaises(ValueError): + +
    +[docs] + def test_raises_valueerror_if_ngrid_is_less_than_2(self): + with pytest.raises(ValueError): RadialDistributionFunction.from_species( structures=[self.structure], ngrid=1 )
    -
    [docs] def test_raises_ValueError_if_sigma_is_not_positive(self): - with self.assertRaises(ValueError): + +
    +[docs] + def test_raises_ValueError_if_sigma_is_not_positive(self): + with pytest.raises(ValueError): RadialDistributionFunction.from_species( structures=[self.structure], sigma=0 )
    -
    [docs] def test_raises_ValueError_if_species_not_in_structure(self): - with self.assertRaises(ValueError): + +
    +[docs] + def test_raises_ValueError_if_species_not_in_structure(self): + with pytest.raises(ValueError): RadialDistributionFunction.from_species( structures=[self.structure], species=["Cl"] )
    -
    [docs] def test_raises_ValueError_if_reference_species_not_in_structure(self): - with self.assertRaises(ValueError): + +
    +[docs] + def test_raises_ValueError_if_reference_species_not_in_structure(self): + with pytest.raises(ValueError): RadialDistributionFunction.from_species( structures=[self.structure], species=["S"], reference_species=["Cl"] - )
    + )
    +
    + -
    [docs]class EvolutionAnalyzerTest(unittest.TestCase): -
    [docs] def test_get_df(self): +
    +[docs] +class EvolutionAnalyzerTest(unittest.TestCase): +
    +[docs] + def test_get_df(self): # Parse the DiffusionAnalyzer object from json file directly obj = loadfn(os.path.join(tests_dir, "cNa3PS4_pda.json")) @@ -248,11 +282,9 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_van_hove

    and ("Na", "Na") in eva.pairs ) assert check - self.assertAlmostEqual(max(np.array(rdf)[0]), 1.772465, 4)
    - + self.assertAlmostEqual(max(np.array(rdf)[0]), 1.772465, 4)
    +
    -if __name__ == "__main__": - unittest.main()
    @@ -267,7 +299,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.tests.test_van_hove

    - +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/aimd/van_hove.html b/docs/_modules/pymatgen/analysis/diffusion/aimd/van_hove.html index 3071330..90947ef 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/aimd/van_hove.html +++ b/docs/_modules/pymatgen/analysis/diffusion/aimd/van_hove.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.aimd.van_hove — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.aimd.van_hove — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -49,9 +49,8 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    # Copyright (c) Materials Virtual Lab. # Distributed under the terms of the BSD License. -""" -Van Hove analysis for correlations. -""" +"""Van Hove analysis for correlations.""" + from __future__ import annotations import itertools @@ -76,16 +75,18 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    __date__ = "Aug 9, 2017" -
    [docs]class VanHoveAnalysis: +
    +[docs] +class VanHoveAnalysis: """ - Class for van Hove function analysis. In particular, self-part (Gs) and - distinct-part (Gd) of the van Hove correlation function G(r,t) - for given species and given structure are computed. If you use this class, - please consider citing the following paper: - - Zhu, Z.; Chu, I.-H.; Deng, Z. and Ong, S. P. "Role of Na+ Interstitials - and Dopants in Enhancing the Na+ Conductivity of the Cubic Na3PS4 - Superionic Conductor". Chem. Mater. (2015), 27, pp 8318-8325 + Class for van Hove function analysis. + + In particular, self-part (Gs) and distinct-part (Gd) of the van Hove correlation function G(r,t) for given species + and given structure are computed. If you use this class, please consider citing the following paper:: + + Zhu, Z.; Chu, I.-H.; Deng, Z. and Ong, S. P. "Role of Na+ Interstitials + and Dopants in Enhancing the Na+ Conductivity of the Cubic Na3PS4 + Superionic Conductor". Chem. Mater. (2015), 27, pp 8318-8325 """ def __init__( @@ -125,7 +126,6 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    will be selected for the analysis. If this is given, "species" parameter will be ignored. """ - # initial check if step_skip <= 0: raise ValueError("skip_step should be >=1!") @@ -151,17 +151,11 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    structure = diffusion_analyzer.structure if indices is None: - indices = [ - j for j, site in enumerate(structure) if site.specie.symbol in species - ] + indices = [j for j, site in enumerate(structure) if site.specie.symbol in species] ref_indices = indices if reference_species: - ref_indices = [ - j - for j, site in enumerate(structure) - if site.specie.symbol in reference_species - ] + ref_indices = [j for j, site in enumerate(structure) if site.specie.symbol in reference_species] rho = float(len(indices)) / lattice.volume @@ -186,11 +180,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    tracking_ions = np.array(tracking_ions) # type: ignore ref_ions = np.array(ref_ions) # type: ignore - gaussians = ( - norm.pdf(interval[:, None], interval[None, :], sigma) - / float(avg_nsteps) - / float(len(ref_indices)) - ) + gaussians = norm.pdf(interval[:, None], interval[None, :], sigma) / float(avg_nsteps) / float(len(ref_indices)) # calculate self part of van Hove function image = np.array([0, 0, 0]) @@ -199,15 +189,11 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    it0 = min(it * step_skip, ntsteps) for it1 in range(avg_nsteps): dists = [ - lattice.get_distance_and_image( - tracking_ions[it1][u], tracking_ions[it0 + it1][u], jimage=image - )[0] + lattice.get_distance_and_image(tracking_ions[it1][u], tracking_ions[it0 + it1][u], jimage=image)[0] for u in range(len(indices)) ] - r_indices = [ - int(dist / dr) for dist in filter(lambda e: e < rmax, dists) - ] + r_indices = [int(dist / dr) for dist in filter(lambda e: e < rmax, dists)] dns.update(r_indices) # type: ignore for indx, dn in dns.most_common(ngrid): @@ -245,9 +231,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    if u != v or j != indx0 ] - r_indices = [ - int(dist / dr) for dist in filter(lambda e: e < rmax, dists) - ] + r_indices = [int(dist / dr) for dist in filter(lambda e: e < rmax, dists)] dns.update(r_indices) for indx, dn in dns.most_common(ngrid): @@ -264,12 +248,13 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    # time interval (in ps) in gsrt and gdrt. self.timeskip = self.obj.time_step * self.obj.step_skip * step_skip / 1000.0 -
    [docs] def get_3d_plot(self, figsize: tuple = (12, 8), mode: str = "distinct"): +
    +[docs] + def get_3d_plot(self, figsize: tuple = (12, 8), mode: str = "distinct"): """ Plot 3D self-part or distinct-part of van Hove function, which is specified by the input argument 'type'. """ - assert mode in ["distinct", "self"] if mode == "distinct": @@ -277,17 +262,13 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    vmax = 4.0 cb_ticks = [0, 1, 2, 3, 4] cb_label = "$G_d$($t$,$r$)" - elif mode == "self": + else: grt = self.gsrt.copy() vmax = 1.0 cb_ticks = [0, 1] cb_label = r"4$\pi r^2G_s$($t$,$r$)" - y = ( - np.arange(np.shape(grt)[1]) - * self.interval[-1] - / float(len(self.interval) - 1) - ) + y = np.arange(np.shape(grt)[1]) * self.interval[-1] / float(len(self.interval) - 1) x = np.arange(np.shape(grt)[0]) * self.timeskip X, Y = np.meshgrid(x, y, indexing="ij") @@ -300,8 +281,8 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    labelsize = int(figsize[0] * 3) plt.pcolor(X, Y, grt, cmap="jet", vmin=grt.min(), vmax=vmax) - plt.xlabel("Time (ps)", size=labelsize) - plt.ylabel(r"$r$ ($\AA$)", size=labelsize) + plt.set_xlabel("Time (ps)", size=labelsize) + plt.set_ylabel(r"$r$ ($\AA$)", size=labelsize) plt.axis([x.min(), x.max(), y.min(), y.max()]) cbar = plt.colorbar(ticks=cb_ticks) @@ -311,8 +292,14 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    return plt
    -
    [docs] def get_1d_plot( - self, mode: str = "distinct", times: list = [0.0], colors: list | None = None + +
    +[docs] + def get_1d_plot( + self, + mode: str = "distinct", + times: list | None = None, + colors: list | None = None, ): """ Plot the van Hove function at given r or t. @@ -324,6 +311,8 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    colors (list strings/tuples): Additional color settings. If not set, seaborn.color_plaette("Set1", 10) will be used. """ + if times is None: + times = [0.0] if colors is None: import seaborn as sns @@ -336,7 +325,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    grt = self.gdrt.copy() ylabel = "$G_d$($t$,$r$)" ylim = [-0.005, 4.0] - elif mode == "self": + else: grt = self.gsrt.copy() ylabel = r"4$\pi r^2G_s$($t$,$r$)" ylim = [-0.005, 1.0] @@ -348,28 +337,26 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    index = min(index, np.shape(grt)[0] - 1) new_time = index * self.timeskip label = str(new_time) + " ps" - plt.plot( - self.interval, grt[index], color=colors[i], label=label, linewidth=4.0 - ) + plt.plot(self.interval, grt[index], color=colors[i], label=label, linewidth=4.0) - plt.xlabel(r"$r$ ($\AA$)") - plt.ylabel(ylabel) + plt.set_xlabel(r"$r$ ($\AA$)") + plt.set_ylabel(ylabel) plt.legend(loc="upper right", fontsize=36) plt.xlim(0.0, self.interval[-1] - 1.0) plt.ylim(ylim[0], ylim[1]) plt.tight_layout() - return plt
    + return plt
    +
    -
    [docs]class EvolutionAnalyzer: - """ - Analyze the evolution of structures during AIMD simulations. - """ - def __init__( - self, structures: list, rmax: float = 10, step: int = 1, time_step: int = 2 - ): +
    +[docs] +class EvolutionAnalyzer: + """Analyze the evolution of structures during AIMD simulations.""" + + def __init__(self, structures: list, rmax: float = 10, step: int = 1, time_step: int = 2): """ Initialization the EvolutionAnalyzer from MD simulations. From the structures obtained from MD simulations, we can analyze the structure @@ -397,7 +384,9 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    self.step = step self.time_step = time_step -
    [docs] @staticmethod +
    +[docs] + @staticmethod def get_pairs(structure: Structure): """ Get all element pairs in a structure. @@ -413,7 +402,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    return list(pairs)
    -
    [docs] @staticmethod + +
    +[docs] + @staticmethod def rdf(structure: Structure, pair: tuple, ngrid: int = 101, rmax: float = 10): """ Process rdf from a given structure and pair. @@ -438,7 +430,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    return r.rdf
    -
    [docs] @staticmethod + +
    +[docs] + @staticmethod def atom_dist( structure: Structure, specie: str, @@ -461,9 +456,9 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    density (np.array): atomic concentration along one direction. """ if direction in ["a", "b", "c"]: - l = getattr(structure.lattice, direction) + latt_len = getattr(structure.lattice, direction) ind = ["a", "b", "c"].index(direction) - assert window <= l, "Window range exceeds valid bounds!" + assert window <= latt_len, "Window range exceeds valid bounds!" else: raise ValueError("Choose from a, b and c!") @@ -471,21 +466,20 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    atom_total = structure.composition[specie] density = [] - for i in np.linspace(0, l - window, ngrid): + for i in np.linspace(0, latt_len - window, ngrid): atoms = [] for j in [-1, 0, 1]: - temp = [ - s - for s in atom_list - if i - window < s.coords[ind] % l + l * j < i + window - ] + temp = [s for s in atom_list if i - window < s.coords[ind] % latt_len + latt_len * j < i + window] atoms.extend(temp) density.append(len(atoms) / atom_total) return np.array(density)
    -
    [docs] def get_df(self, func: Callable, save_csv: str | None = None, **kwargs): + +
    +[docs] + def get_df(self, func: Callable, save_csv: str | None = None, **kwargs): """ Get the data frame for a given pair. This step would be very slow if there are hundreds or more structures to parse. @@ -502,6 +496,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    df = EvolutionAnalyzer.get_df( func=EvolutionAnalyzer.atom_dist, specie="Na") save_csv (str): save pandas DataFrame to csv. + **kwargs: Pass-through to func. Returns: pandas.DataFrame object: index is the radial distance in Angstrom, @@ -524,7 +519,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    return df
    -
    [docs] @staticmethod + +
    +[docs] + @staticmethod def get_min_dist(df: pd.DataFrame, tol: float = 1e-10): """ Get the shortest pair distance from the given DataFrame. @@ -544,7 +542,10 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    return float(col) raise RuntimeError("Getting min dist failed.")
    -
    [docs] @staticmethod + +
    +[docs] + @staticmethod def plot_evolution_from_data( df: pd.DataFrame, x_label: str | None = None, @@ -557,7 +558,6 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    implement in the future. Args: - df (pandas.DataFrame): input DataFrame object, index is the radial distance in Angstrom, and column is the time step in ps. x_label (str): x label @@ -593,15 +593,18 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    plt.xticks(rotation="horizontal") - plt.xlabel(x_label, fontsize=30) - plt.ylabel("Time (ps)", fontsize=30) + plt.set_xlabel(x_label, fontsize=30) + plt.set_ylabel("Time (ps)", fontsize=30) plt.yticks(rotation="horizontal") plt.tight_layout() return plt
    -
    [docs] def plot_rdf_evolution( + +
    +[docs] + def plot_rdf_evolution( self, pair: tuple, cmap=plt.cm.plasma, # pylint: disable=E1101 @@ -616,17 +619,19 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    cmocean.cm.thermal is recommended df (DataFrame): external data, index is the radial distance in Angstrom, and column is the time step in ps. + Returns: matplotlib.axes._subplots.AxesSubplot object """ if df is None: df = self.get_df(func=EvolutionAnalyzer.rdf, pair=pair) x_label, cb_label = f"$r$ ({pair[0]}-{pair[1]}) ($\\rm\\AA$)", "$g(r)$" - return self.plot_evolution_from_data( - df=df, x_label=x_label, cb_label=cb_label, cmap=cmap - )
    + return self.plot_evolution_from_data(df=df, x_label=x_label, cb_label=cb_label, cmap=cmap)
    + -
    [docs] def plot_atomic_evolution( +
    +[docs] + def plot_atomic_evolution( self, specie: str, direction: str = "c", @@ -642,20 +647,19 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    cmap (color map): the color map used in heat map. df (DataFrame): external data, index is the atomic distance in Angstrom, and column is the time step in ps. + Returns: matplotlib.axes._subplots.AxesSubplot object """ if df is None: - df = self.get_df( - func=EvolutionAnalyzer.atom_dist, specie=specie, direction=direction - ) + df = self.get_df(func=EvolutionAnalyzer.atom_dist, specie=specie, direction=direction) x_label, cb_label = ( f"Atomic distribution along {direction}", "Probability", ) - return self.plot_evolution_from_data( - df=df, x_label=x_label, cb_label=cb_label, cmap=cmap - )
    + return self.plot_evolution_from_data(df=df, x_label=x_label, cb_label=cb_label, cmap=cmap)
    +
    +
    @@ -670,7 +674,7 @@

    Source code for pymatgen.analysis.diffusion.aimd.van_hove

    +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/analyzer.html b/docs/_modules/pymatgen/analysis/diffusion/analyzer.html index 68cc543..eb71b2b 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/analyzer.html +++ b/docs/_modules/pymatgen/analysis/diffusion/analyzer.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.analyzer — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.analyzer — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -46,12 +46,9 @@

    Navigation

    Source code for pymatgen.analysis.diffusion.analyzer

    -# Copyright (c) Pymatgen Development Team.
    -# Distributed under the terms of the MIT License.
    +"""A module to perform diffusion analyses.
     
    -"""
    -A module to perform diffusion analyses (e.g. calculating diffusivity from
    -mean square displacements etc.). If you use this module, please consider
    +For example, calculating diffusivity from mean square displacements etc.). If you use this module, please consider
     citing the following papers::
     
         Ong, S. P., Mo, Y., Richards, W. D., Miara, L., Lee, H. S., & Ceder, G.
    @@ -64,6 +61,7 @@ 

    Source code for pymatgen.analysis.diffusion.analyzer

    Li10GeP2S12 Lithium Super Ionic Conductor Material. Chemistry of Materials, 24(1), 15-17. doi:10.1021/cm203303y """ + from __future__ import annotations import multiprocessing @@ -73,10 +71,7 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    import scipy.constants as const from monty.json import MSONable -from pymatgen.analysis.structure_matcher import ( - OrderDisorderElementComparator, - StructureMatcher, -) +from pymatgen.analysis.structure_matcher import OrderDisorderElementComparator, StructureMatcher from pymatgen.core.periodic_table import get_el_sp from pymatgen.core.structure import Structure from pymatgen.io.vasp.outputs import Vasprun @@ -90,7 +85,9 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    __date__ = "5/2/13" -
    [docs]class DiffusionAnalyzer(MSONable): +
    +[docs] +class DiffusionAnalyzer(MSONable): """ Class for performing diffusion analysis. @@ -311,9 +308,7 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    max_dt = min(len(indices) * nsteps // self.min_obs, nsteps) if min_dt >= max_dt: raise ValueError("Not enough data to calculate diffusivity") - timesteps = np.arange( - min_dt, max_dt, max(int((max_dt - min_dt) / 200), 1) - ) + timesteps = np.arange(min_dt, max_dt, max(int((max_dt - min_dt) / 200), 1)) dt = timesteps * self.time_step * self.step_skip @@ -328,7 +323,7 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    # calculate regional msd and number of diffusing specie in those regions msd_c_range = np.zeros_like(dt, dtype=np.double) msd_c_range_components = np.zeros((*dt.shape, 3)) - + indices_c_range = [] for i, n in enumerate(timesteps): if not smoothed: dx = dc[:, i : i + 1, :] @@ -348,50 +343,38 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    # Get regional msd if c_ranges: - indices_c_range = [] if not c_range_include_edge: for index in indices: if any( - lower < structures[i][index].c < upper - and lower < structures[i + 1][index].c < upper + lower < structures[i][index].c < upper and lower < structures[i + 1][index].c < upper for (lower, upper) in c_ranges ): indices_c_range.append(index) else: for index in indices: if any( - lower <= structures[i][index].c <= upper - or lower <= structures[i + 1][index].c <= upper + lower <= structures[i][index].c <= upper or lower <= structures[i + 1][index].c <= upper for (lower, upper) in c_ranges ): indices_c_range.append(index) msd_c_range[i] = np.average(sq_disp_ions[:, i][indices_c_range]) - msd_c_range_components[i] = np.average( - dcomponents[indices_c_range] ** 2, axis=(0, 1) - ) + msd_c_range_components[i] = np.average(dcomponents[indices_c_range] ** 2, axis=(0, 1)) # Get mscd sq_chg_disp = np.sum(dx[indices, :, :], axis=0) ** 2 mscd[i] = np.average(np.sum(sq_chg_disp, axis=1), axis=0) / len(indices) - conv_factor = get_conversion_factor( - self.structure, self.specie, self.temperature - ) - self.diffusivity, self.diffusivity_std_dev = get_diffusivity_from_msd( - msd, dt, smoothed - ) + conv_factor = get_conversion_factor(self.structure, self.specie, self.temperature) + self.diffusivity, self.diffusivity_std_dev = get_diffusivity_from_msd(msd, dt, smoothed) ( self.chg_diffusivity, self.chg_diffusivity_std_dev, ) = get_diffusivity_from_msd(mscd, dt, smoothed) diffusivity_components = np.zeros(3) diffusivity_components_std_dev = np.zeros(3) - for i in range(3): - diffusivity_components[i], diffusivity_components_std_dev[i] = ( - np.array( - get_diffusivity_from_msd(msd_components[:, i], dt, smoothed) - ) - * 3 + for j in range(3): + diffusivity_components[j], diffusivity_components_std_dev[j] = ( + np.array(get_diffusivity_from_msd(msd_components[:, j], dt, smoothed)) * 3 ) self.diffusivity_components = diffusivity_components self.diffusivity_components_std_dev = diffusivity_components_std_dev @@ -401,9 +384,7 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    self.chg_conductivity = self.chg_diffusivity * conv_factor self.chg_conductivity_std_dev = self.chg_diffusivity_std_dev * conv_factor self.conductivity_components = self.diffusivity_components * conv_factor - self.conductivity_components_std_dev = ( - self.diffusivity_components_std_dev * conv_factor - ) + self.conductivity_components_std_dev = self.diffusivity_components_std_dev * conv_factor if c_ranges: ( @@ -412,42 +393,23 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    ) = get_diffusivity_from_msd(msd_c_range, dt, smoothed) diffusivity_c_range_components = np.zeros(3) diffusivity_c_range_components_std_dev = np.zeros(3) - ( - diffusivity_c_range_components[i], - diffusivity_c_range_components_std_dev[i], - ) = ( - np.array( - get_diffusivity_from_msd( - msd_c_range_components[:, i], dt, smoothed - ) - ) - * 3 - ) + for j in range(3): + ( + diffusivity_c_range_components[j], + diffusivity_c_range_components_std_dev[j], + ) = np.array(get_diffusivity_from_msd(msd_c_range_components[:, j], dt, smoothed)) * 3 self.diffusivity_c_range_components = diffusivity_c_range_components - self.diffusivity_c_range_components_std_dev = ( - diffusivity_c_range_components_std_dev - ) + self.diffusivity_c_range_components_std_dev = diffusivity_c_range_components_std_dev - n_specie_c_range = np.average([len(i) for i in indices_c_range]) - vol_c_range = np.sum( - [ - max(min(upper, 1), 0) - max(min(lower, 1), 0) - for (upper, lower) in c_ranges - ] - ) + n_specie_c_range = np.average([len(j) for j in indices_c_range]) + vol_c_range = np.sum([max(min(upper, 1), 0) - max(min(lower, 1), 0) for (upper, lower) in c_ranges]) n_density_c_range = n_specie_c_range / vol_c_range conv_factor_c_range = conv_factor / len(indices) * n_density_c_range - self.conductivity_c_range = ( - self.diffusivity_c_range * conv_factor_c_range - ) - self.conductivity_c_range_std_dev = ( - self.diffusivity_c_range_std_dev * conv_factor_c_range - ) - self.conductivity_c_range_components = ( - self.diffusivity_c_range_components * conv_factor_c_range - ) + self.conductivity_c_range = self.diffusivity_c_range * conv_factor_c_range + self.conductivity_c_range_std_dev = self.diffusivity_c_range_std_dev * conv_factor_c_range + self.conductivity_c_range_components = self.diffusivity_c_range_components * conv_factor_c_range self.conductivity_c_range_components_std_dev = ( self.diffusivity_c_range_components_std_dev * conv_factor_c_range ) @@ -456,9 +418,7 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    self.drift = drift self.corrected_displacements = dc self.max_ion_displacements = np.max(np.sum(dc**2, axis=-1) ** 0.5, axis=1) - self.max_framework_displacement = np.max( - self.max_ion_displacements[framework_indices] - ) + self.max_framework_displacement = np.max(self.max_ion_displacements[framework_indices]) self.msd = msd self.mscd = mscd self.haven_ratio = self.diffusivity / self.chg_diffusivity @@ -468,14 +428,18 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    self.indices = indices self.framework_indices = framework_indices -
    [docs] def get_drift_corrected_structures(self, start=None, stop=None, step=None): +
    +[docs] + def get_drift_corrected_structures(self, start=None, stop=None, step=None): """ Returns an iterator for the drift-corrected structures. Use of iterator is to reduce memory usage as # of structures in MD can be huge. You don't often need all the structures all at once. Args: - start, stop, step (int): applies a start/stop/step to the iterator. + start(int): Applies a start to the iterator. + stop (int): Applies a stop to the iterator. + step (int): Applies a step to the iterator. Faster than applying it after generation, as it reduces the number of structures created. """ @@ -493,14 +457,17 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    coords_are_cartesian=True, )
    -
    [docs] def get_summary_dict(self, include_msd_t=False, include_mscd_t=False): + +
    +[docs] + def get_summary_dict(self, include_msd_t=False, include_mscd_t=False): """ Provides a summary of diffusion information. Args: include_msd_t (bool): Whether to include mean square displace and time data with the data. - include_msd_t (bool): Whether to include mean square charge displace and + include_mscd_t (bool): Whether to include mean square charge displace and time data with the data. Returns: @@ -533,7 +500,10 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    d["mscd"] = self.mscd.tolist() return d
    -
    [docs] def get_framework_rms_plot(self, plt=None, granularity=200, matching_s=None): + +
    +[docs] + def get_framework_rms_plot(self, granularity=200, matching_s=None): """ Get the plot of rms framework displacement vs time. Useful for checking for melting, especially if framework atoms can move via paddle-wheel @@ -541,23 +511,20 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    but doesn't constitute melting). Args: - plt (matplotlib.pyplot): If plt is supplied, changes will be made - to an existing plot. Otherwise, a new plot will be created. granularity (int): Number of structures to match matching_s (Structure): Optionally match to a disordered structure instead of the first structure in the analyzer. Required when a secondary mobile ion is present. + Notes: The method doesn't apply to NPT-AIMD simulation analysis. """ from pymatgen.util.plotting import pretty_plot if self.lattices is not None and len(self.lattices) > 1: - warnings.warn( - "Note the method doesn't apply to NPT-AIMD simulation analysis!" - ) + warnings.warn("Note the method doesn't apply to NPT-AIMD simulation analysis!") - plt = pretty_plot(12, 8, plt=plt) + plt = pretty_plot(12, 8) step = (self.corrected_displacements.shape[1] - 1) // (granularity - 1) f = (matching_s or self.structure).copy() f.remove_species([self.specie]) @@ -586,12 +553,15 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    plt.plot(plot_dt, rms[:, 0], label="RMS") plt.plot(plot_dt, rms[:, 1], label="max") plt.legend(loc="best") - plt.xlabel(f"Timestep ({unit})") - plt.ylabel("normalized distance") + plt.set_xlabel(f"Timestep ({unit})") + plt.set_ylabel("normalized distance") plt.tight_layout() return plt
    -
    [docs] def get_msd_plot(self, plt=None, mode="specie"): + +
    +[docs] + def get_msd_plot(self, mode="specie"): """ Get the plot of the smoothed msd vs time graph. Useful for checking convergence. This can be written to an image file. @@ -605,7 +575,7 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    """ from pymatgen.util.plotting import pretty_plot - plt = pretty_plot(12, 8, plt=plt) + plt = pretty_plot(12, 8) if np.max(self.dt) > 100000: plot_dt = self.dt / 1000 unit = "ps" @@ -615,9 +585,7 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    if mode == "species": for sp in sorted(self.structure.composition.keys()): - indices = [ - i for i, site in enumerate(self.structure) if site.specie == sp - ] + indices = [i for i, site in enumerate(self.structure) if site.specie == sp] sd = np.average(self.sq_disp_ions[indices, :], axis=0) plt.plot(plot_dt, sd, label=str(sp)) plt.legend(loc=2, prop={"size": 20}) @@ -637,15 +605,18 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    plt.plot(plot_dt, self.msd_components[:, 2], "b") plt.legend(["Overall", "a", "b", "c"], loc=2, prop={"size": 20}) - plt.xlabel(f"Timestep ({unit})") + plt.set_xlabel(f"Timestep ({unit})") if mode == "mscd": - plt.ylabel("MSCD ($\\AA^2$)") + plt.set_ylabel("MSCD ($\\AA^2$)") else: - plt.ylabel("MSD ($\\AA^2$)") + plt.set_ylabel("MSD ($\\AA^2$)") plt.tight_layout() return plt
    -
    [docs] def plot_msd(self, mode="default"): + +
    +[docs] + def plot_msd(self, mode="default"): """ Plot the smoothed msd vs time graph. Useful for checking convergence. @@ -658,7 +629,10 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    """ self.get_msd_plot(mode=mode).show()
    -
    [docs] def export_msdt(self, filename): + +
    +[docs] + def export_msdt(self, filename): """ Writes MSD data to a csv file that can be easily plotted in other software. @@ -675,13 +649,14 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    f.write("# ") f.write(delimiter.join(["t", "MSD", "MSD_a", "MSD_b", "MSD_c", "MSCD"])) f.write("\n") - for dt, msd, msdc, mscd in zip( - self.dt, self.msd, self.msd_components, self.mscd - ): + for dt, msd, msdc, mscd in zip(self.dt, self.msd, self.msd_components, self.mscd): f.write(delimiter.join([str(v) for v in [dt, msd, *list(msdc), mscd]])) f.write("\n")
    -
    [docs] @classmethod + +
    +[docs] + @classmethod def from_structures( cls, structures, @@ -718,21 +693,20 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    typically need to supply both variables. This stipulates the initial structure from which the current set of displacements are computed. - \\*\\*kwargs: kwargs supported by the :class:`DiffusionAnalyzer`_. + **kwargs: kwargs supported by the :class:`DiffusionAnalyzer`_. Examples include smoothed, min_obs, avg_nsteps. """ - p, l = [], [] - for i, s in enumerate(structures): - if i == 0: - structure = s + p, lattices = [], [] + structure = structures[0] + for s in structures: p.append(np.array(s.frac_coords)[:, None]) - l.append(s.lattice.matrix) + lattices.append(s.lattice.matrix) if initial_structure is not None: p.insert(0, np.array(initial_structure.frac_coords)[:, None]) - l.insert(0, initial_structure.lattice.matrix) + lattices.insert(0, initial_structure.lattice.matrix) else: p.insert(0, p[0]) - l.insert(0, l[0]) + lattices.insert(0, lattices[0]) p = np.concatenate(p, axis=1) dp = p[:, 1:] - p[:, :-1] @@ -740,11 +714,11 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    f_disp = np.cumsum(dp, axis=1) c_disp = [] for i in f_disp: - c_disp.append([np.dot(d, m) for d, m in zip(i, l[1:])]) + c_disp.append([np.dot(d, m) for d, m in zip(i, lattices[1:])]) disp = np.array(c_disp) # If is NVT-AIMD, clear lattice data. - l = np.array([l[0]]) if np.array_equal(l[0], l[-1]) else np.array(l) + lattices = np.array([lattices[0]]) if np.array_equal(lattices[0], lattices[-1]) else np.array(lattices) if initial_disp is not None: disp += initial_disp[:, None, :] @@ -755,14 +729,15 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    temperature, time_step, step_skip=step_skip, - lattices=l, + lattices=lattices, **kwargs, )
    -
    [docs] @classmethod - def from_vaspruns( - cls, vaspruns, specie, initial_disp=None, initial_structure=None, **kwargs - ): + +
    +[docs] + @classmethod + def from_vaspruns(cls, vaspruns, specie, initial_disp=None, initial_structure=None, **kwargs): r""" Convenient constructor that takes in a list of Vasprun objects to perform diffusion analysis. @@ -783,22 +758,20 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    typically need to supply both variables. This stipulates the initial stricture from which the current set of displacements are computed. - \\*\\*kwargs: kwargs supported by the :class:`DiffusionAnalyzer`_. + **kwargs: kwargs supported by the :class:`DiffusionAnalyzer`_. Examples include smoothed, min_obs, avg_nsteps. """ def get_structures(vaspruns): + step_skip = vaspruns[0].ionic_step_skip or 1 + final_structure = vaspruns[0].initial_structure + temperature = vaspruns[0].parameters["TEEND"] + time_step = vaspruns[0].parameters["POTIM"] for i, vr in enumerate(vaspruns): if i == 0: - step_skip = vr.ionic_step_skip or 1 - final_structure = vr.initial_structure - temperature = vr.parameters["TEEND"] - time_step = vr.parameters["POTIM"] yield step_skip, temperature, time_step # check that the runs are continuous - fdist = pbc_diff( - vr.initial_structure.frac_coords, final_structure.frac_coords - ) + fdist = pbc_diff(vr.initial_structure.frac_coords, final_structure.frac_coords) if np.any(fdist > 0.001): raise ValueError("initial and final structures do not match.") final_structure = vr.final_structure @@ -821,7 +794,10 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    **kwargs, )
    -
    [docs] @classmethod + +
    +[docs] + @classmethod def from_files( cls, filepaths, @@ -864,7 +840,7 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    typically need to supply both variables. This stipulates the initial structure from which the current set of displacements are computed. - \\*\\*kwargs: kwargs supported by the :class:`DiffusionAnalyzer`_. + **kwargs: kwargs supported by the :class:`DiffusionAnalyzer`_. Examples include smoothed, min_obs, avg_nsteps. """ if ncores is not None and len(filepaths) > 1: @@ -894,10 +870,11 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    **kwargs, )
    -
    [docs] def as_dict(self): - """ - Returns: MSONable dict - """ + +
    +[docs] + def as_dict(self): + """Returns: MSONable dict.""" return { "@module": self.__class__.__module__, "@class": self.__class__.__name__, @@ -913,11 +890,14 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    "lattices": self.lattices.tolist(), }
    -
    [docs] @classmethod + +
    +[docs] + @classmethod def from_dict(cls, d): """ Args: - d (dict): Dict representation + d (dict): Dict representation. Returns: DiffusionAnalyzer """ @@ -933,10 +913,14 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    smoothed=d.get("smoothed", "max"), avg_nsteps=d.get("avg_nsteps", 1000), lattices=np.array(d.get("lattices", [d["structure"]["lattice"]["matrix"]])), - )
    + )
    +
    + -
    [docs]def get_conversion_factor(structure, species, temperature): +
    +[docs] +def get_conversion_factor(structure, species, temperature): """ Conversion factor to convert between cm^2/s diffusivity measurements and mS/cm conductivity measurements based on number of atoms of diffusing @@ -954,36 +938,26 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    Conductivity (in mS/cm) = Conversion Factor * Diffusivity (in cm^2/s) """ df_sp = get_el_sp(species) - z = ( - df_sp.oxi_state - if hasattr(df_sp, "oxi_state") - else df_sp.full_electronic_structure[-1][2] - ) + z = df_sp.oxi_state if hasattr(df_sp, "oxi_state") else df_sp.full_electronic_structure[-1][2] n = structure.composition[species] vol = structure.volume * 1e-24 # units cm^3 - return ( - 1000 - * n - / (vol * const.N_A) - * z**2 - * (const.N_A * const.e) ** 2 - / (const.R * temperature) - )
    + return 1000 * n / (vol * const.N_A) * z**2 * (const.N_A * const.e) ** 2 / (const.R * temperature)
    + def _get_vasprun(args): - """ - Internal method to support multiprocessing. - """ + """Internal method to support multiprocessing.""" return Vasprun(args[0], ionic_step_skip=args[1], parse_dos=False, parse_eigen=False) -
    [docs]def fit_arrhenius(temps, diffusivities): +
    +[docs] +def fit_arrhenius(temps, diffusivities): """ - Returns Ea, c, standard error of Ea from the Arrhenius fit: - D = c * exp(-Ea/kT) + Returns Ea, c, standard error of Ea from the Arrhenius fit. + D = c * exp(-Ea/kT). Args: temps ([float]): A sequence of temperatures. units: K @@ -997,17 +971,16 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    w, res, _, _ = np.linalg.lstsq(a, logd, rcond=None) w = np.array(w) n = len(temps) - std_Ea = ( - (res[0] / (n - 2) / (n * np.var(t_1))) ** 0.5 * const.k / const.e - if n > 2 - else None - ) + std_Ea = (res[0] / (n - 2) / (n * np.var(t_1))) ** 0.5 * const.k / const.e if n > 2 else None return -w[0] * const.k / const.e, np.exp(w[1]), std_Ea
    -
    [docs]def get_diffusivity_from_msd(msd, dt, smoothed="max"): + +
    +[docs] +def get_diffusivity_from_msd(msd, dt, smoothed="max"): """ - Returns diffusivity and standard deviation of diffusivity given by: + Returns diffusivity and standard deviation of diffusivity. D = 1 / 2dt * <mean square displacement> @@ -1021,17 +994,17 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    msd ([float]): A sequence of mean square displacements. units: Å^2 dt ([float]): A sequence of time steps corresponding to MSD. units: fs smoothed (str): Whether to smooth the MSD, and what mode to smooth. - Supported modes are: - - i. "max", which tries to use the maximum # - of data points for each time origin, subject to a - minimum # of observations given by min_obs, and then - weights the observations based on the variance - accordingly. This is the default. - ii. "constant", in which each timestep is averaged over - the number of time_steps given by min_steps. - iii. None / False / any other false-like quantity. No - smoothing. + Supported modes are:: + + i. "max", which tries to use the maximum # + of data points for each time origin, subject to a + minimum # of observations given by min_obs, and then + weights the observations based on the variance + accordingly. This is the default. + ii. "constant", in which each timestep is averaged over + the number of time_steps given by min_steps. + iii. None / False / any other false-like quantity. No + smoothing. """ def weighted_lstsq(a, b): @@ -1066,9 +1039,12 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    return diffusivity, diffusivity_std_dev
    -
    [docs]def get_extrapolated_diffusivity(temps, diffusivities, new_temp): + +
    +[docs] +def get_extrapolated_diffusivity(temps, diffusivities, new_temp): """ - Returns (Arrhenius) extrapolated diffusivity at new_temp + Returns (Arrhenius) extrapolated diffusivity at new_temp. Args: temps ([float]): A sequence of temperatures. units: K @@ -1083,7 +1059,10 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    return c * np.exp(-Ea / (const.k / const.e * new_temp))
    -
    [docs]def get_extrapolated_conductivity(temps, diffusivities, new_temp, structure, species): + +
    +[docs] +def get_extrapolated_conductivity(temps, diffusivities, new_temp, structure, species): """ Returns extrapolated mS/cm conductivity. @@ -1098,12 +1077,15 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    Returns: (float) Conductivity at extrapolated temp in mS/cm. """ - return get_extrapolated_diffusivity( - temps, diffusivities, new_temp - ) * get_conversion_factor(structure, species, new_temp)
    + return get_extrapolated_diffusivity(temps, diffusivities, new_temp) * get_conversion_factor( + structure, species, new_temp + )
    -
    [docs]def get_arrhenius_plot(temps, diffusivities, diffusivity_errors=None, **kwargs): + +
    +[docs] +def get_arrhenius_plot(temps, diffusivities, diffusivity_errors=None, **kwargs): r""" Returns an Arrhenius plot. @@ -1113,7 +1095,7 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    from DiffusionAnalyzer.diffusivity). diffusivity_errors ([float]): A sequence of errors for the diffusivities. If None, no error bar is plotted. - \\*\\*kwargs: + **kwargs: Any keyword args supported by matplotlib.pyplot.plot. Returns: @@ -1151,10 +1133,11 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    fontsize=30, transform=plt.axes().transAxes, ) - plt.ylabel("D (cm$^2$/s)") - plt.xlabel("1000/T (K$^{-1}$)") + plt.set_ylabel("D (cm$^2$/s)") + plt.set_xlabel("1000/T (K$^{-1}$)") plt.tight_layout() return plt
    +
    @@ -1169,7 +1152,7 @@

    Source code for pymatgen.analysis.diffusion.analyzer

    +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/neb/full_path_mapper.html b/docs/_modules/pymatgen/analysis/diffusion/neb/full_path_mapper.html index d73603f..7ad2d64 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/neb/full_path_mapper.html +++ b/docs/_modules/pymatgen/analysis/diffusion/neb/full_path_mapper.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.neb.full_path_mapper — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.neb.full_path_mapper — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -46,11 +46,8 @@

    Navigation

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    -# Copyright (c) Materials Virtual Lab.
    -# Distributed under the terms of the BSD License.
    -"""
    -Migraiton Graph Analysis
    -"""
    +"""Migration Graph Analysis."""
    +
     from __future__ import annotations
     
     __author__ = "Jimmy Shen"
    @@ -69,15 +66,8 @@ 

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    import numpy as np from monty.json import MSONable -from pymatgen.analysis.diffusion.neb.pathfinder import ( - ChgcarPotential, - MigrationHop, - NEBPathfinder, -) -from pymatgen.analysis.diffusion.neb.periodic_dijkstra import ( - get_optimal_pathway_rev, - periodic_dijkstra, -) +from pymatgen.analysis.diffusion.neb.pathfinder import ChgcarPotential, MigrationHop, NEBPathfinder +from pymatgen.analysis.diffusion.neb.periodic_dijkstra import get_optimal_pathway_rev, periodic_dijkstra from pymatgen.analysis.diffusion.utils.parse_entries import process_entries from pymatgen.analysis.graphs import StructureGraph from pymatgen.analysis.local_env import MinimumDistanceNN, NearNeighbors @@ -92,9 +82,12 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    logger = logging.getLogger(__name__) -
    [docs]def generic_groupby(list_in: list, comp: Callable = operator.eq): +
    +[docs] +def generic_groupby(list_in: list, comp: Callable = operator.eq): """ - Group a list of unsortable objects + Group a list of unsortable objects. + Args: list_in: A list of generic objects comp: (Default value = operator.eq) The comparator @@ -118,7 +111,10 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    return list_out
    -
    [docs]class MigrationGraph(MSONable): + +
    +[docs] +class MigrationGraph(MSONable): """ A python object for handling the migratrion graph of a given base structure and mobile specie sites within that base structure. @@ -141,6 +137,7 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    connecting all sites as specified by the migration graph. The sites are decorated with Migration graph objects and then grouped together based on their equivalence. + Args: structure: Structure with base framework and mobile sites. When used with structure_is_base = True, only the base framework @@ -166,22 +163,16 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    @property def only_sites(self) -> Structure: - """ - A structure that only contains the migrating species - """ + """A structure that only contains the migrating species.""" return self.m_graph.structure @property def host_structure(self) -> Structure: - """ - A structure that only contains the non-migrating species - """ + """A structure that only contains the non-migrating species.""" host_struct = self.structure.copy() rm_sites = set() for isite in self.only_sites: - neighbors_ = host_struct.get_neighbors_in_shell( - isite.coords, r=0.0, dr=0.05, include_index=True - ) + neighbors_ = host_struct.get_neighbors_in_shell(isite.coords, r=0.0, dr=0.05, include_index=True) if len(neighbors_) == 0: continue for n_ in neighbors_: @@ -191,9 +182,7 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    @property def symm_structure(self) -> SymmetrizedStructure: - """ - The symmetrized structure with the present item's symprec value - """ + """The symmetrized structure with the present item's symprec value.""" a = SpacegroupAnalyzer(self.structure, symprec=self.symprec) sym_struct = a.get_symmetrized_structure() if not isinstance(sym_struct, SymmetrizedStructure): @@ -202,9 +191,7 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    @property def unique_hops(self): - """ - The unique hops dictionary keyed by the hop label - """ + """The unique hops dictionary keyed by the hop label.""" # reversed so that the first instance represents the group of distinct hops ihop_data = list(reversed(list(self.m_graph.graph.edges(data=True)))) for u, v, d in ihop_data: @@ -213,14 +200,16 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    d["hop_distance"] = d["hop"].length return {d["hop_label"]: d for u, v, d in ihop_data} -
    [docs] @classmethod - def with_base_structure( - cls, base_structure: Structure, m_graph: StructureGraph, **kwargs - ) -> MigrationGraph: +
    +[docs] + @classmethod + def with_base_structure(cls, base_structure: Structure, m_graph: StructureGraph, **kwargs) -> MigrationGraph: """ Args: - base_structure: base framework structure that does not contain any - migrating sites. + base_structure: base framework structure that does not contain any migrating sites. + m_graph: The StructureGraph object that defines the migration network. + **kwargs: Passthrough for kwargs. + Returns: A constructed MigrationGraph object """ @@ -228,16 +217,22 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    structure = Structure.from_sites(sites) return cls(structure=structure, m_graph=m_graph, **kwargs)
    -
    [docs] @classmethod + +
    +[docs] + @classmethod def with_local_env_strategy( cls, structure: Structure, migrating_specie: str, nn: NearNeighbors, **kwargs ) -> MigrationGraph: """ Using a specific nn strategy to get the connectivity graph between all the migrating ion sites. + Args: structure: Input structure that contains all sites. migrating_specie: The specie that migrates. E.g. "Li". nn: The specific local environment object used to connect the migrating ion sites. + **kwargs: Passthrough for kwargs. + Returns: A constructed MigrationGraph object """ @@ -245,16 +240,24 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    migration_graph = StructureGraph.with_local_env_strategy(only_sites, nn) return cls(structure=structure, m_graph=migration_graph, **kwargs)
    -
    [docs] @classmethod + +
    +[docs] + @classmethod def with_distance( cls, structure: Structure, migrating_specie: str, max_distance: float, **kwargs ) -> MigrationGraph: """ Using a specific nn strategy to get the connectivity graph between all the migrating ion sites. + Args: + structure: Input structure that contains all sites. + migrating_specie: The specie that migrates. E.g. "Li". max_distance: Maximum length of NEB path in the unit of Angstrom. Defaults to None, which means you are setting the value to the min cutoff until finding 1D or >1D percolating paths. + **kwargs: Passthrough for kwargs. + Returns: A constructed MigrationGraph object """ @@ -265,7 +268,10 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    ) return cls(structure=structure, m_graph=migration_graph, **kwargs)
    -
    [docs] @staticmethod + +
    +[docs] + @staticmethod def get_structure_from_entries( entries: list[ComputedStructureEntry], migrating_ion_entry: ComputedEntry, @@ -278,12 +284,13 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    Args: entries: list of entries, must contain a mixture of inserted and empty structures. migrating_ion_entry: The metallic phase of the working ion, used to calculate insertion energies. + **kwargs: Passthrough for kwargs. Additional Kwargs: symprec: symmetry parameter for SpacegroupAnalyzer ltol: Fractional length tolerance for StructureMatcher stol: Site tolerance for StructureMatcher - angle_tol: Angle tolerance fro StructureMatcher and SpacegroupAnalyzer + angle_tol: Angle tolerance for StructureMatcher and SpacegroupAnalyzer only_single_cat: If True, only use single cation insertions so the site energy is more accurate use_strict_tol: halve the ltol and stol parameter for more strict matching. @@ -339,13 +346,14 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    res.append(struct) return res
    + def _get_pos_and_migration_hop(self, u, v, w): """ insert a single MigrationHop object on a graph edge Args: u (int): index of initial node v (int): index of final node - w (int): index for multiple edges that share the same two nodes + w (int): index for multiple edges that share the same two nodes. """ edge = self.m_graph.graph[u][v][w] i_site = self.only_sites.sites[u] @@ -360,30 +368,23 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    edge["ipos_cart"] = np.dot(i_site.frac_coords, self.only_sites.lattice.matrix) edge["epos_cart"] = np.dot(e_site.frac_coords, self.only_sites.lattice.matrix) - edge["hop"] = MigrationHop( - i_site, e_site, self.symm_structure, symprec=self.symprec - ) + edge["hop"] = MigrationHop(i_site, e_site, self.symm_structure, symprec=self.symprec) def _populate_edges_with_migration_hops(self): - """ - Populate the edges with the data for the Migration Paths - """ + """Populate the edges with the data for the Migration Paths.""" list(starmap(self._get_pos_and_migration_hop, self.m_graph.graph.edges)) def _group_and_label_hops(self): - """ - Group the MigrationHop objects together and label all the symmetrically equlivaelnt hops with the same label - """ + """Group the MigrationHop objects together and label all the symmetrically equlivaelnt hops with the same label.""" hops = list(nx.get_edge_attributes(self.m_graph.graph, "hop").items()) labs = generic_groupby(hops, comp=lambda x, y: x[1] == y[1]) - new_attr = { - g_index: {"hop_label": labs[edge_index]} - for edge_index, (g_index, _) in enumerate(hops) - } + new_attr = {g_index: {"hop_label": labs[edge_index]} for edge_index, (g_index, _) in enumerate(hops)} nx.set_edge_attributes(self.m_graph.graph, new_attr) return new_attr -
    [docs] def add_data_to_similar_edges( +
    +[docs] + def add_data_to_similar_edges( self, target_label: int | str, data: dict, @@ -395,61 +396,63 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    target_label: The edge uniqueness label are adding data data: The data to passed to the different edges m_hop: If the data is an array, and m_hop is set, it uses the reference migration path to - determine whether the data needs to be flipped so that 0-->1 is different from 1-->0 + determine whether the data needs to be flipped so that 0-->1 is different from 1-->0. """ - for _u, _v, d in self.m_graph.graph.edges(data=True): if d["hop_label"] == target_label: d.update(data) - if m_hop is not None: - # Try to override the data. - if not m_hop.symm_structure.spacegroup.are_symmetrically_equivalent( - [m_hop.isite], [d["hop"].isite] - ): - # "The data going to this edge needs to be flipped" - for k in data: - if isinstance(data[k], (np.ndarray, np.generic)): - raise Warning( - "The data provided will only be flipped " - "if it a list" - ) - if not isinstance(data[k], list): - continue - d[k] = d[k][::-1] # flip the data in the array
    - -
    [docs] def assign_cost_to_graph(self, cost_keys=["hop_distance"]): + # Try to override the data. + if m_hop is not None and not m_hop.symm_structure.spacegroup.are_symmetrically_equivalent( + [m_hop.isite], [d["hop"].isite] + ): + # "The data going to this edge needs to be flipped" + for k in data: + if isinstance(data[k], (np.ndarray, np.generic)): + raise Warning("The data provided will only be flipped if it a list") + if not isinstance(data[k], list): + continue + d[k] = d[k][::-1] # flip the data in the array
    + + +
    +[docs] + def assign_cost_to_graph(self, cost_keys=None): """ Read the data dict on each add and populate a cost key Args: cost_keys: a list of keys for data on each edge. - The SC Graph is decorated with a "cost" key that is the product of the different keys here + The SC Graph is decorated with a "cost" key that is the product of the different keys here. """ + if cost_keys is None: + cost_keys = ["hop_distance"] for k, v in self.unique_hops.items(): cost_val = np.prod([v[ik] for ik in cost_keys]) self.add_data_to_similar_edges(k, {"cost": cost_val})
    -
    [docs] def get_path(self, max_val=100000, flip_hops=True): + +
    +[docs] + def get_path(self, max_val=100000, flip_hops=True): """ obtain a pathway through the material using hops that are in the current graph Basic idea: Get an endpoint p1 in the graph that is outside the current unit cell Ask the graph for a pathway that connects to p1 from either within the (0,0,0) cell or any other neighboring UC not containing p1. + Args: max_val: Filter the graph by a cost flip_hops: If true, hops in paths returned will be flipped so isites and esites match to form a coherent path. If false, hops will retain their original orientation from the migration graph. + Returns: Generator for list of Dicts: Each dict contains the information of a hop """ - if len(self.unique_hops) != len(self.unique_hops): - logger.error( - f"There are {len(self.unique_hops)} SC hops but {len(self.unique_hops)} UC hops in {self}" - ) + logger.error(f"There are {len(self.unique_hops)} SC hops but {len(self.unique_hops)} UC hops in {self}") # for u, v, k, d in self.m_graph.graph.edges(data=True, keys=True): for u in self.m_graph.graph.nodes(): @@ -463,9 +466,7 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    for tmp_u, tmp_v, tmp_k in cut_edges: path_graph.remove_edge(tmp_u, tmp_v, key=tmp_k) # populate the entire graph with multiple images - best_ans, path_parent = periodic_dijkstra( - path_graph, sources={u}, weight="cost", max_image=2 - ) + best_ans, path_parent = periodic_dijkstra(path_graph, sources={u}, weight="cost", max_image=2) # find a way to a u site that is not in the (0,0,0) image all_paths = [] for idx, jimage in path_parent: @@ -488,9 +489,7 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    # displacement +/- (jimage1 - jimage2) is present on of of the edges # Note: there should only ever be one valid to_jimage for a u->v pair i1_, i2_ = sorted((idx1, idx2)) - all_edge_data = [ - *path_graph.get_edge_data(i1_, i2_, default={}).items() - ] + all_edge_data = [*path_graph.get_edge_data(i1_, i2_, default={}).items()] image_diff = np.subtract(jimage2, jimage1) found_ = 0 for _k, tmp_d in all_edge_data: @@ -504,9 +503,18 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    else: yield u, path_hops
    -
    [docs] def get_summary_dict(self, added_keys: list[str] | None = None) -> dict: + +
    +[docs] + def get_summary_dict(self, added_keys: list[str] | None = None) -> dict: """ - Dictionary format, for saving to database + Dictionary format, for saving to database. + + Args: + added_keys: a list of keys for data on each edge. + + Returns: + Dict. """ hops = [] keys = ["hop_label", "to_jimage", "ipos", "epos", "ipos_cart", "epos_cart"] @@ -525,8 +533,8 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    unique_hops = [] for d in self.unique_hops.values(): - new_hop["iindex"] = d["iindex"] - new_hop["eindex"] = d["eindex"] + new_hop["iindex"] = d["iindex"] # type: ignore + new_hop["eindex"] = d["eindex"] # type: ignore unique_hops.append(get_keys(d)) unique_hops = sorted(unique_hops, key=lambda x: x["hop_label"]) @@ -537,13 +545,15 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    migrating_specie=list(self.only_sites.composition.as_dict().keys()), hops=hops, unique_hops=unique_hops, - )
    + )
    +
    -
    [docs]class ChargeBarrierGraph(MigrationGraph): - """ - A Migration graph with additional charge density analysis on the charge density of the host material - """ + +
    +[docs] +class ChargeBarrierGraph(MigrationGraph): + """A Migration graph with additional charge density analysis on the charge density of the host material.""" def __init__( self, @@ -555,13 +565,15 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    ): """ Construct the MigrationGraph object using a VolumetricData object. - The graph is constructure using the structure, and cost values are assigned based on charge density analysis. + The graph is constructed using the structure, and cost values are assigned based on charge density analysis. + Args: + structure (Structure): Input structure. + m_graph (StructureGraph): Input structure graph. potential_field: Input VolumetricData object that describes the field does not have to contains all the metastable sites. - migrating_specie (Specie-like): The specie that migrates. E.g., - "Li". - symprec (float): Symmetry precision to determine equivalence. + potential_data_key (str): Key for potential data. + **kwargs: Passthru for kwargs. """ self.potential_field = potential_field self.potential_data_key = potential_data_key @@ -569,18 +581,11 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    self._setup_grids() def _setup_grids(self): - """Populate the internal varialbes used for defining the grid points in the charge density analysis""" - + """Populate the internal variables used for defining the grid points in the charge density analysis.""" # set up the grid - aa = np.linspace( - 0, 1, len(self.potential_field.get_axis_grid(0)), endpoint=False - ) - bb = np.linspace( - 0, 1, len(self.potential_field.get_axis_grid(1)), endpoint=False - ) - cc = np.linspace( - 0, 1, len(self.potential_field.get_axis_grid(2)), endpoint=False - ) + aa = np.linspace(0, 1, len(self.potential_field.get_axis_grid(0)), endpoint=False) + bb = np.linspace(0, 1, len(self.potential_field.get_axis_grid(1)), endpoint=False) + cc = np.linspace(0, 1, len(self.potential_field.get_axis_grid(2)), endpoint=False) # move the grid points to the center aa, bb, dd = map(_shift_grid, [aa, bb, cc]) @@ -599,20 +604,14 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    def _dist_mat(self, pos_frac): # return a matrix that contains the distances to pos_frac - aa = np.linspace( - 0, 1, len(self.potential_field.get_axis_grid(0)), endpoint=False - ) - bb = np.linspace( - 0, 1, len(self.potential_field.get_axis_grid(1)), endpoint=False - ) - cc = np.linspace( - 0, 1, len(self.potential_field.get_axis_grid(2)), endpoint=False - ) + aa = np.linspace(0, 1, len(self.potential_field.get_axis_grid(0)), endpoint=False) + bb = np.linspace(0, 1, len(self.potential_field.get_axis_grid(1)), endpoint=False) + cc = np.linspace(0, 1, len(self.potential_field.get_axis_grid(2)), endpoint=False) aa, bb, cc = map(_shift_grid, [aa, bb, cc]) AA, BB, CC = np.meshgrid(aa, bb, cc, indexing="ij") dist_from_pos = self.potential_field.structure.lattice.get_all_distances( - fcoords1=np.vstack([AA.flatten(), BB.flatten(), CC.flatten()]).T, - fcoords2=pos_frac, + np.vstack([AA.flatten(), BB.flatten(), CC.flatten()]).T, + pos_frac, ) return dist_from_pos.reshape(AA.shape) @@ -627,15 +626,9 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    mid_struct = self.potential_field.structure.copy() # the moving ion is always inserted on the zero index - start_struct.insert( - 0, migration_hop.isite.species_string, ipos, properties=dict(magmom=0) - ) - end_struct.insert( - 0, migration_hop.isite.species_string, epos, properties=dict(magmom=0) - ) - mid_struct.insert( - 0, migration_hop.isite.species_string, mpos, properties=dict(magmom=0) - ) + start_struct.insert(0, migration_hop.isite.species_string, ipos, properties=dict(magmom=0)) + end_struct.insert(0, migration_hop.isite.species_string, epos, properties=dict(magmom=0)) + mid_struct.insert(0, migration_hop.isite.species_string, mpos, properties=dict(magmom=0)) chgpot = ChgcarPotential(self.potential_field, normalize=False) return NEBPathfinder( @@ -647,10 +640,8 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    mid_struct=mid_struct, ) - def _get_avg_chg_at_max( - self, migration_hop, radius=None, chg_along_path=False, output_positions=False - ): - """obtain the maximum average charge along the path + def _get_avg_chg_at_max(self, migration_hop, radius=None, chg_along_path=False, output_positions=False): + """Obtain the maximum average charge along the path Args: migration_hop (MigrationHop): MigrationPath object that represents a given hop radius (float, optional): radius of sphere to perform the average. @@ -661,12 +652,12 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    output_positions (bool, optional): If True, also return the entire list of average charges along the path for plotting. Defaults to False. + Returns: [float]: maximum of the charge density, (optional: entire list of charge density) """ - if radius is None: - rr = self._tube_radius - if rr <= 0: + rr = radius or self._tube_radius + if rr <= 0: # type: ignore raise ValueError("The integration radius must be positive.") npf = self._get_pathfinder_from_hop(migration_hop) @@ -676,9 +667,7 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    for ict in centers: dist_mat = self._dist_mat(ict) mask = dist_mat < rr - vol_sphere = self.potential_field.structure.volume * ( - mask.sum() / self.potential_field.ngridpts - ) + vol_sphere = self.potential_field.structure.volume * (mask.sum() / self.potential_field.ngridpts) avg_chg.append( np.sum(self.potential_field.data[self.potential_data_key] * mask) / self.potential_field.ngridpts @@ -695,17 +684,16 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    Calculate the amount of charge that a migrating ion has to move through in order to complete a hop Args: migration_hop: MigrationHop object that represents a given hop - mask_file_seedname(string): seedname for output of the migration path masks (for debugging and - visualization) (Default value = None) + mask_file_seedname(string): seed name for output of the migration path masks (for debugging and + visualization) (Default value = None). + Returns: float: The total charge density in a tube that connects two sites of a given edges of the graph """ try: - self._tube_radius + _ = self._tube_radius except NameError: - logger.warning( - "The radius of the tubes for charge analysis need to be defined first." - ) + logger.warning("The radius of the tubes for charge analysis need to be defined first.") ipos = migration_hop.isite.frac_coords epos = migration_hop.esite.frac_coords @@ -713,15 +701,10 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    cart_epos = np.dot(epos, self.potential_field.structure.lattice.matrix) pbc_mask = np.zeros(self._uc_grid_shape, dtype=bool).flatten() for img in self._images: - grid_pos = np.dot( - self._fcoords + img, self.potential_field.structure.lattice.matrix - ) - proj_on_line = np.dot(grid_pos - cart_ipos, cart_epos - cart_ipos) / ( - np.linalg.norm(cart_epos - cart_ipos) - ) + grid_pos = np.dot(self._fcoords + img, self.potential_field.structure.lattice.matrix) + proj_on_line = np.dot(grid_pos - cart_ipos, cart_epos - cart_ipos) / (np.linalg.norm(cart_epos - cart_ipos)) dist_to_line = np.linalg.norm( - np.cross(grid_pos - cart_ipos, cart_epos - cart_ipos) - / (np.linalg.norm(cart_epos - cart_ipos)), + np.cross(grid_pos - cart_ipos, cart_epos - cart_ipos) / (np.linalg.norm(cart_epos - cart_ipos)), axis=-1, ) @@ -753,7 +736,9 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    / self.potential_field.structure.volume ) -
    [docs] def populate_edges_with_chg_density_info(self, tube_radius=1): +
    +[docs] + def populate_edges_with_chg_density_info(self, tube_radius=1): """ Args: tube_radius: Tube radius. @@ -769,8 +754,7 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    v["hop"], chg_along_path=True, output_positions=True ) images = [ - {"position": ifrac, "average_charge": ichg} - for ifrac, ichg in zip(frac_coords_list, avg_chg_list) + {"position": ifrac, "average_charge": ichg} for ifrac, ichg in zip(frac_coords_list, avg_chg_list) ] v.update( dict( @@ -781,11 +765,14 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    ) self.add_data_to_similar_edges(k, {"max_avg_chg": max_chg})
    -
    [docs] def get_least_chg_path(self): + +
    +[docs] + def get_least_chg_path(self): """ obtain an intercolating pathway through the material that has the least amount of charge Returns: - list of hops + list of hops. """ min_chg = 100000000 min_path = [] @@ -799,22 +786,26 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    min_path = path return min_path
    -
    [docs] def get_summary_dict(self, add_keys: list[str] | None = None): - """ - Dictionary format, for saving to database - """ + +
    +[docs] + def get_summary_dict(self, add_keys: list[str] | None = None): + """Dictionary format, for saving to database.""" a_keys = ["max_avg_chg", "chg_total"] if add_keys is not None: a_keys += add_keys - return super().get_summary_dict(added_keys=a_keys)
    + return super().get_summary_dict(added_keys=a_keys)
    +
    + # Utility functions -
    [docs]def get_only_sites_from_structure( - structure: Structure, migrating_specie: str -) -> Structure: +
    +[docs] +def get_only_sites_from_structure(structure: Structure, migrating_specie: str) -> Structure: """ Get a copy of the structure with only the migrating sites. + Args: structure: The full_structure that contains all the sites migrating_specie: The name of migrating species @@ -830,35 +821,34 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    return Structure.from_sites(migrating_ion_sites)
    + def _shift_grid(vv): """ Move the grid points by half a step so that they sit in the center Args: - vv: equally space grid points in 1-D + vv: equally space grid points in 1-D. """ step = vv[1] - vv[0] return vv + step / 2.0 -
    [docs]def get_hop_site_sequence( - hop_list: list[dict], start_u: int | str, key: str | None = None -) -> list: +
    +[docs] +def get_hop_site_sequence(hop_list: list[dict], start_u: int | str, key: str | None = None) -> list: """ Read in a list of hop dictionaries and print the sequence of sites (and relevant property values if any). + Args: hop_list: a list of the data on a sequence of hops start_u: the site index of the starting sites key (optional): property to track in a hop (e.g.: "hop_distance") + Returns: String representation of the hop sequence (and property values if any) """ hops = iter(hop_list) ihop = next(hops) - site_seq = ( - [ihop["eindex"], ihop["iindex"]] - if ihop["eindex"] == start_u - else [ihop["iindex"], ihop["eindex"]] - ) + site_seq = [ihop["eindex"], ihop["iindex"]] if ihop["eindex"] == start_u else [ihop["iindex"], ihop["eindex"]] for ihop in hops: if ihop["iindex"] == site_seq[-1]: @@ -878,7 +868,10 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    return site_seq
    -
    [docs]def order_path(hop_list: list[dict], start_u: int | str) -> list[dict]: + +
    +[docs] +def order_path(hop_list: list[dict], start_u: int | str) -> list[dict]: """ Takes a list of hop dictionaries and flips hops (switches isite and esite) as needed to form a coherent path / sequence of sites according to @@ -886,6 +879,7 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    For example if hop_list = [{iindex:0, eindex:1, etc.}, {iindex:0, eindex:1, etc.}] then the output is [{iindex:0, eindex:1, etc.}, {iindex:1, eindex:0, etc.}] so that the following hop iindex matches the previous hop's eindex. + Args: hop_list: a list of the data on a sequence of hops start_u: the site index of the starting sites @@ -934,6 +928,7 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    return ordered_path
    + """ Note the current pathway algorithm no longer needs supercells but the following functions might still be useful for other applications @@ -948,10 +943,10 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    # Utility Functions for comparing UC and SC hops -
    [docs]def almost(a, b): - """ - return true if the values are almost equal - """ +
    +[docs] +def almost(a, b): + """Return true if the values are almost equal.""" SMALL_VAL = 1e-4 try: return all(almost(i, j) for i, j in zip(list(a), list(b))) @@ -961,18 +956,22 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    raise NotImplementedError
    -
    [docs]def check_uc_hop(sc_hop, uc_hop): + +
    +[docs] +def check_uc_hop(sc_hop, uc_hop): """ See if hop in the 2X2X2 supercell and a unit cell hop - are equilvalent under lattice translation + are equivalent under lattice translation. + Args: sc_hop: MigrationHop object form pymatgen-diffusion. uc_hop: MigrationHop object form pymatgen-diffusion. + Return: - image vector of lenght 3 + image vector of length 3 Is the UC hop flip of the SC hop """ - directions = np.array( [ [0, 0, 0], @@ -1006,12 +1005,17 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    return None
    -
    [docs]def map_hop_sc2uc(sc_hop: MigrationHop, mg: MigrationGraph): + +
    +[docs] +def map_hop_sc2uc(sc_hop: MigrationHop, mg: MigrationGraph): """ Map a given hop in the SC onto the UC. + Args: sc_hop: MigrationHop object form pymatgen-diffusion. mg: MigrationGraph object from pymatgen-diffusion. + Note: For now assume that the SC is exactly 2x2x2 of the UC. Can add in the parsing of different SC's later @@ -1032,6 +1036,7 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    hop_label=d["hop_label"], ) raise AssertionError("Looking for a SC hop without a matching UC hop")
    +
    @@ -1046,7 +1051,7 @@

    Source code for pymatgen.analysis.diffusion.neb.full_path_mapper

    - +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/neb/io.html b/docs/_modules/pymatgen/analysis/diffusion/neb/io.html index 178a184..1a17fb4 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/neb/io.html +++ b/docs/_modules/pymatgen/analysis/diffusion/neb/io.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.neb.io — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.neb.io — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -49,9 +49,8 @@

    Source code for pymatgen.analysis.diffusion.neb.io

    # Copyright (c) Materials Virtual Lab. # Distributed under the terms of the BSD License. -""" -Generate input fiels for NEB calculations. -""" +"""Generate input fields for NEB calculations.""" + from __future__ import annotations import copy @@ -62,16 +61,16 @@

    Source code for pymatgen.analysis.diffusion.neb.io

    __author__ = "Austen" -
    [docs]class MVLCINEBEndPointSet(MITRelaxSet): - """ - Class for writing NEB end points relaxation inputs. - """ +
    +[docs] +class MVLCINEBEndPointSet(MITRelaxSet): + """Class for writing NEB end points relaxation inputs.""" def __init__(self, structure, **kwargs): r""" Args: structure: Structure - \*\*kwargs: Keyword args supported by VaspInputSets. + **kwargs: Keyword args supported by VaspInputSets. """ user_incar_settings = kwargs.get("user_incar_settings", {}) defaults = { @@ -92,18 +91,21 @@

    Source code for pymatgen.analysis.diffusion.neb.io

    super().__init__(structure, **kwargs)
    -
    [docs]class MVLCINEBSet(MITNEBSet): + +
    +[docs] +class MVLCINEBSet(MITNEBSet): """ MAVRL-tested settings for CI-NEB calculations. Note that these parameters requires the VTST modification of VASP from the Henkelman group. See - http://theory.cm.utexas.edu/vtsttools/ + http://theory.cm.utexas.edu/vtsttools/. """ def __init__(self, structures, **kwargs): r""" Args: - structure: Structure - \*\*kwargs: Keyword args supported by VaspInputSets. + structures: Input structures. + **kwargs: Keyword args supported by VaspInputSets. """ user_incar_settings = kwargs.get("user_incar_settings", {}) @@ -133,7 +135,10 @@

    Source code for pymatgen.analysis.diffusion.neb.io

    super().__init__(structures, **kwargs)
    -
    [docs]def get_endpoints_from_index(structure, site_indices): + +
    +[docs] +def get_endpoints_from_index(structure, site_indices): """ This class reads in one perfect structure and the two endpoint structures are generated using site_indices. @@ -146,7 +151,6 @@

    Source code for pymatgen.analysis.diffusion.neb.io

    endpoints (list of Structure): a two-element list of two endpoints Structure object. """ - if len(site_indices) != 2 or len(set(site_indices)) != 2: raise ValueError("Invalid indices!") if structure[site_indices[0]].specie != structure[site_indices[1]].specie: @@ -173,13 +177,18 @@

    Source code for pymatgen.analysis.diffusion.neb.io

    return [s_0, s_1]
    -
    [docs]def get_endpoint_dist(ep_0, ep_1): + +
    +[docs] +def get_endpoint_dist(ep_0, ep_1): """ Calculate a list of site distances between two endpoints, assuming periodic boundary conditions. + Args: ep_0 (Structure): the first endpoint structure. ep_1 (Structure): the second endpoint structure. + Returns: dist (list): a list of distances between two structures. """ @@ -195,6 +204,7 @@

    Source code for pymatgen.analysis.diffusion.neb.io

    distances.append(d) return distances
    +
    @@ -209,7 +219,7 @@

    Source code for pymatgen.analysis.diffusion.neb.io

    +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/neb/pathfinder.html b/docs/_modules/pymatgen/analysis/diffusion/neb/pathfinder.html index 847f1d7..8b2f0bf 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/neb/pathfinder.html +++ b/docs/_modules/pymatgen/analysis/diffusion/neb/pathfinder.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.neb.pathfinder — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.neb.pathfinder — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -49,9 +49,8 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    # Copyright (c) Materials Virtual Lab. # Distributed under the terms of the BSD License. -""" -Algorithms for NEB migration path analysis. -""" +"""Algorithms for NEB migration path analysis.""" + from __future__ import annotations import itertools @@ -67,10 +66,7 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    from monty.json import MSONable from scipy.interpolate import interp1d -from pymatgen.analysis.diffusion.utils.supercells import ( - get_sc_fromstruct, - get_start_end_structures, -) +from pymatgen.analysis.diffusion.utils.supercells import get_sc_fromstruct, get_start_end_structures from pymatgen.core import PeriodicSite, Site, Structure from pymatgen.core.periodic_table import get_el_sp from pymatgen.io.vasp.inputs import Poscar @@ -84,7 +80,9 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    # TODO: (1) ipython notebook example files, unittests -
    [docs]class IDPPSolver: +
    +[docs] +class IDPPSolver: """ A solver using image dependent pair potential (IDPP) algo to get an improved initial NEB path. For more details about this algo, please refer to @@ -99,7 +97,6 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    structures (list of pmg_structure) : Initial guess of the NEB path (including initial and final end-point structures). """ - latt = structures[0].lattice natoms = structures[0].num_sites nimages = len(structures) - 2 @@ -130,9 +127,7 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    weights = np.zeros_like(target_dists, dtype=np.float64) for ni in range(nimages): avg_dist = (target_dists[ni] + structures[ni + 1].distance_matrix) / 2.0 - weights[ni] = 1.0 / ( - avg_dist**4 + np.eye(natoms, dtype=np.float64) * 1e-8 - ) + weights[ni] = 1.0 / (avg_dist**4 + np.eye(natoms, dtype=np.float64) * 1e-8) for ni, i in itertools.product(range(nimages + 2), range(natoms)): frac_coords = structures[ni][i].frac_coords @@ -140,22 +135,20 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    if ni not in [0, nimages + 1]: for j in range(i + 1, natoms): - img = latt.get_distance_and_image( - frac_coords, structures[ni][j].frac_coords - )[1] + img = latt.get_distance_and_image(frac_coords, structures[ni][j].frac_coords)[1] translations[ni - 1, i, j] = latt.get_cartesian_coords(img) translations[ni - 1, j, i] = -latt.get_cartesian_coords(img) - self.init_coords = np.array(init_coords).reshape( - nimages + 2, natoms, 3 - ) # pylint: disable=E1121 + self.init_coords = np.array(init_coords).reshape(nimages + 2, natoms, 3) # pylint: disable=E1121 self.translations = translations self.weights = weights self.structures = structures self.target_dists = target_dists self.nimages = nimages -
    [docs] def run( +
    +[docs] + def run( self, maxiter=1000, tol=1e-5, @@ -191,7 +184,6 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    Returns: [Structure] Complete IDPP path (including end-point structures) """ - coords = self.init_coords.copy() old_funcs = np.zeros((self.nimages,), dtype=np.float64) idpp_structures = [self.structures[0]] @@ -200,9 +192,7 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    indices = list(range(len(self.structures[0]))) else: species = [get_el_sp(sp) for sp in species] - indices = [ - i for i, site in enumerate(self.structures[0]) if site.specie in species - ] + indices = [i for i, site in enumerate(self.structures[0]) if site.specie in species] if len(indices) == 0: raise ValueError("The given species are not in the system!") @@ -212,15 +202,11 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    # Get the sets of objective functions, true and total force # matrices. funcs, true_forces = self._get_funcs_and_forces(coords) - tot_forces = self._get_total_forces( - coords, true_forces, spring_const=spring_const - ) + tot_forces = self._get_total_forces(coords, true_forces, spring_const=spring_const) # Each atom is allowed to move up to max_disp disp_mat = step_size * tot_forces[:, indices, :] - disp_mat = np.where( - np.abs(disp_mat) > max_disp, np.sign(disp_mat) * max_disp, disp_mat - ) + disp_mat = np.where(np.abs(disp_mat) > max_disp, np.sign(disp_mat) * max_disp, disp_mat) coords[1 : (self.nimages + 1), indices] += disp_mat max_force = np.abs(tot_forces[:, indices, :]).max() @@ -232,9 +218,7 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    old_funcs = funcs else: - warnings.warn( - "Maximum iteration number is reached without convergence!", UserWarning - ) + warnings.warn("Maximum iteration number is reached without convergence!", UserWarning) for ni in range(self.nimages): # generate the improved image structure @@ -257,9 +241,16 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    return idpp_structures
    -
    [docs] @classmethod + +
    +[docs] + @classmethod def from_endpoints( - cls, endpoints, nimages=5, sort_tol=1.0, interpolate_lattices=False + cls, + endpoints, + nimages: int = 5, + sort_tol: float = 1.0, + interpolate_lattices: bool = False, ): """ A class method that starts with end-point structures instead. The @@ -272,6 +263,7 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    sort_tol (float): Distance tolerance (in Angstrom) used to match the atomic indices between start and end structures. Need to increase the value in some cases. + interpolate_lattices (bool): Whether to interpolate lattices between the start and end structures. """ try: images = endpoints[0].interpolate( @@ -283,8 +275,7 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    except Exception as e: if "Unable to reliably match structures " in str(e): warnings.warn( - "Auto sorting is turned off because it is unable" - " to match the end-point structures!", + "Auto sorting is turned off because it is unable" " to match the end-point structures!", UserWarning, ) images = endpoints[0].interpolate( @@ -298,10 +289,11 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    return IDPPSolver(images)
    + def _get_funcs_and_forces(self, x): """ Calculate the set of objective functions as well as their gradients, - i.e. "effective true forces" + i.e. "effective true forces". """ funcs = [] funcs_prime = [] @@ -314,11 +306,7 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    vec = [x[ni + 1, i] - x[ni + 1] - trans[ni, i] for i in range(natoms)] trial_dist = np.linalg.norm(vec, axis=2) - aux = ( - (trial_dist - target_dists[ni]) - * weights[ni] - / (trial_dist + np.eye(natoms, dtype=np.float64)) - ) + aux = (trial_dist - target_dists[ni]) * weights[ni] / (trial_dist + np.eye(natoms, dtype=np.float64)) # Objective function func = np.sum((trial_dist - target_dists[ni]) ** 2 * weights[ni]) @@ -331,15 +319,19 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    return 0.5 * np.array(funcs), -2 * np.array(funcs_prime) -
    [docs] @staticmethod +
    +[docs] + @staticmethod def get_unit_vector(vec): """ Calculate the unit vector of a vector. + Args: vec: Vector. """ return vec / np.sqrt(np.sum(vec**2))
    + def _get_total_forces(self, x, true_forces, spring_const): """ Calculate the total force on each image structure, which is equal to @@ -347,7 +339,6 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    tangent. Note that the spring force is the modified version in the literature (e.g. Henkelman et al., J. Chem. Phys. 113, 9901 (2000)). """ - total_forces = [] natoms = np.shape(true_forces)[1] @@ -360,24 +351,21 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    tangent = self.get_unit_vector(tangent) # Spring force - spring_force = ( - spring_const * (np.linalg.norm(vec1) - np.linalg.norm(vec2)) * tangent - ) + spring_force = spring_const * (np.linalg.norm(vec1) - np.linalg.norm(vec2)) * tangent # Total force flat_ft = true_forces[ni - 1].copy().flatten() - total_force = true_forces[ni - 1] + ( - spring_force - np.dot(flat_ft, tangent) * tangent - ).reshape(natoms, 3) + total_force = true_forces[ni - 1] + (spring_force - np.dot(flat_ft, tangent) * tangent).reshape(natoms, 3) total_forces.append(total_force) return np.array(total_forces)
    -
    [docs]class MigrationHop(MSONable): - """ - A convenience container representing a migration path. - """ + +
    +[docs] +class MigrationHop(MSONable): + """A convenience container representing a migration path.""" def __init__( self, @@ -392,8 +380,9 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    isite: Initial site esite: End site symm_structure: SymmetrizedStructure - host_symm_struct: SymmetrizedStructure of the host structure, used to for its spacegroup - symprec: used to determine equivalence + host_symm_struct: SymmetrizedStructure of the host structure, used to for + its spacegroup + symprec: used to determine equivalence. """ self.isite = isite self.esite = esite @@ -402,11 +391,13 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    self.symm_structure = symm_structure self.host_symm_struct = host_symm_struct self.symprec = symprec - self.msite = PeriodicSite( - esite.specie, (isite.frac_coords + esite.frac_coords) / 2, esite.lattice - ) + self.msite = PeriodicSite(esite.specie, (isite.frac_coords + esite.frac_coords) / 2, esite.lattice) - sg = self.host_symm_struct.spacegroup if host_symm_struct else self.symm_structure.spacegroup # type: ignore + sg = ( + self.host_symm_struct.spacegroup # type: ignore[union-attr] + if host_symm_struct + else self.symm_structure.spacegroup # type: ignore[union-attr] + ) for i, sites in enumerate(self.symm_structure.equivalent_sites): if sg.are_symmetrically_equivalent([isite], [sites[0]]): self.iindex = i @@ -434,24 +425,21 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    break if self.iindex is None: - raise RuntimeError( - f"No symmetrically equivalent site was found for {isite}" - ) + raise RuntimeError(f"No symmetrically equivalent site was found for {isite}") if self.eindex is None: - raise RuntimeError( - f"No symmetrically equivalent site was found for {esite}" - ) + raise RuntimeError(f"No symmetrically equivalent site was found for {esite}") def __repr__(self): ifc = self.isite.frac_coords efc = self.esite.frac_coords + wyk_symbols = self.symm_structure.wyckoff_symbols return ( f"Path of {self.length:.4f} A from {self.isite.specie} " f"[{ifc[0]:.3f}, {ifc[1]:.3f}, {ifc[2]:.3f}] " - f"(ind: {self.iindex}, Wyckoff: {self.symm_structure.wyckoff_symbols[self.iindex]}) " + f"(ind: {self.iindex}, Wyckoff: {wyk_symbols[self.iindex]}) " f"to {self.esite.specie} " f"[{efc[0]:.3f}, {efc[1]:.3f}, {efc[2]:.3f}] " - f"(ind: {self.eindex}, Wyckoff: {self.symm_structure.wyckoff_symbols[self.eindex]})" + f"(ind: {self.eindex}, Wyckoff: {wyk_symbols[self.eindex]})" ) @property @@ -481,7 +469,9 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    self.symprec, ) -
    [docs] def get_structures(self, nimages=5, vac_mode=True, idpp=False, **idpp_kwargs): +
    +[docs] + def get_structures(self, nimages=5, vac_mode=True, idpp=False, **idpp_kwargs): r""" Generate structures for NEB calculation. @@ -502,27 +492,19 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    idpp (bool): Defaults to False. If True, the generated structures will be run through the IDPPSolver to generate a better guess for the minimum energy path. - \*\*idpp_kwargs: Passthrough kwargs for the IDPPSolver.run. + **idpp_kwargs: Passthrough kwargs for the IDPPSolver.run. Returns: [Structure] Note that the first site of each structure is always the migrating ion. This makes it easier to perform subsequent analysis. """ - migrating_specie_sites, other_sites = self._split_migrating_and_other_sites( - vac_mode - ) + migrating_specie_sites, other_sites = self._split_migrating_and_other_sites(vac_mode) - start_structure = Structure.from_sites( - [self.isite, *migrating_specie_sites, *other_sites] - ) - end_structure = Structure.from_sites( - [self.esite, *migrating_specie_sites, *other_sites] - ) + start_structure = Structure.from_sites([self.isite, *migrating_specie_sites, *other_sites]) + end_structure = Structure.from_sites([self.esite, *migrating_specie_sites, *other_sites]) - structures = start_structure.interpolate( - end_structure, nimages=nimages + 1, pbc=False - ) + structures = start_structure.interpolate(end_structure, nimages=nimages + 1, pbc=False) if idpp: solver = IDPPSolver(structures) @@ -530,6 +512,7 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    return structures
    + def _split_migrating_and_other_sites(self, vac_mode): migrating_specie_sites = [] other_sites = [] @@ -537,10 +520,7 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    if site.specie != self.isite.specie: other_sites.append(site) else: - if ( - self.isite.distance(site) <= 1e-8 - or self.esite.distance(site) <= 1e-8 - ): + if self.isite.distance(site) <= 1e-8 or self.esite.distance(site) <= 1e-8: migrating_specie_sites.append(site) continue @@ -548,7 +528,9 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    other_sites.append(site) return migrating_specie_sites, other_sites -
    [docs] def get_sc_structures( +
    +[docs] + def get_sc_structures( self, vac_mode: bool, min_atoms: int = 80, @@ -557,7 +539,8 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    tol: float = 1e-5, ) -> tuple[Structure, Structure, Structure]: """ - Construct supercells that represents the start and end positions for migration analysis. + Construct supercells that represents the start and end positions for migration + analysis. Args: vac_mode: If true simulate vacancy diffusion. @@ -573,9 +556,7 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    If in vacancy mode, the base structure is the fully intercalated structure """ - migrating_specie_sites, other_sites = self._split_migrating_and_other_sites( - vac_mode - ) + migrating_specie_sites, other_sites = self._split_migrating_and_other_sites(vac_mode) if vac_mode: base_struct = Structure.from_sites(other_sites + migrating_specie_sites) else: @@ -596,22 +577,29 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    ) return start_struct, end_struct, base_sc
    -
    [docs] def write_path(self, fname, **kwargs): + +
    +[docs] + def write_path(self, fname, **kwargs): r""" Write the path to a file for easy viewing. Args: fname (str): File name. - \*\*kwargs: Kwargs supported by NEBPath.get_structures. + **kwargs: Kwargs supported by NEBPath.get_structures. """ sites = [] for st in self.get_structures(**kwargs): sites.extend(st) st = Structure.from_sites(sites) - st.to(filename=fname)
    + st.to(filename=fname)
    +
    + -
    [docs]class DistinctPathFinder: +
    +[docs] +class DistinctPathFinder: """ Determines symmetrically distinct paths between existing sites. The path info can then be used to set up either vacancy or interstitial @@ -684,7 +672,9 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    else: self.max_path_length = max_path_length -
    [docs] def get_paths(self): +
    +[docs] + def get_paths(self): """ Returns: [MigrationHop] All distinct migration paths. @@ -693,16 +683,17 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    for sites in self.symm_structure.equivalent_sites: if sites[0].specie == self.migrating_specie: site0 = sites[0] - for nn in self.symm_structure.get_neighbors( - site0, r=round(self.max_path_length, 3) + 0.01 - ): + for nn in self.symm_structure.get_neighbors(site0, r=round(self.max_path_length, 3) + 0.01): if nn.specie == self.migrating_specie: path = MigrationHop(site0, nn, self.symm_structure) paths.add(path) return sorted(paths, key=lambda p: p.length)
    -
    [docs] def write_all_paths(self, fname, nimages=5, **kwargs): + +
    +[docs] + def write_all_paths(self, fname, nimages=5, **kwargs): r""" Write a file containing all paths, using hydrogen as a placeholder for the images. H is chosen as it is the smallest atom. This is extremely @@ -711,22 +702,24 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    Args: fname (str): Filename nimages (int): Number of images per path. - \*\*kwargs: Passthrough kwargs to path.get_structures. + **kwargs: Passthrough kwargs to path.get_structures. """ sites = [] for p in self.get_paths(): - structures = p.get_structures( - nimages=nimages, species=[self.migrating_specie], **kwargs - ) + structures = p.get_structures(nimages=nimages, species=[self.migrating_specie], **kwargs) sites.append(structures[0][0]) sites.append(structures[-1][0]) for s in structures[1:-1]: sites.append(PeriodicSite("H", s[0].frac_coords, s.lattice)) - sites.extend(structures[0].sites[1:]) - Structure.from_sites(sites).to(filename=fname)
    + sites.extend(structures[0].sites[1:]) # type: ignore + Structure.from_sites(sites).to(filename=fname)
    +
    + -
    [docs]class NEBPathfinder: +
    +[docs] +class NEBPathfinder: """ General pathfinder for interpolating between two structures, where the interpolating path is calculated with the elastic band method with @@ -740,17 +733,17 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    Ceder, The Journal of Chemical Physics 145 (7), 074112 """ - def __init__( - self, start_struct, end_struct, relax_sites, v, n_images=20, mid_struct=None - ): + def __init__(self, start_struct, end_struct, relax_sites, v, n_images=20, mid_struct=None): """ Args: - start_struct, end_struct: Endpoint structures to interpolate + start_struct: Starting structure + end_struct: End structure to interpolate relax_sites: List of site indices whose interpolation paths should be relaxed v: Static potential field to use for the elastic band relaxation n_images: Number of interpolation images to generate - mid_struct: (optional) additional structure between the start and end structures to help. + mid_struct: (optional) additional structure between the start and end + structures to help. """ self.__s1 = start_struct self.__s2 = end_struct @@ -761,7 +754,9 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    self.__images = None self.interpolate() -
    [docs] def interpolate(self): +
    +[docs] + def interpolate(self): """ Finds a set of n_images from self.s1 to self.s2, where all sites except for the ones given in relax_sites, the interpolation is linear (as in @@ -773,20 +768,15 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    The final number of images will still be n_images. """ if self.__mid is not None: - # to make arithmetic easier we will do the interpolation in two parts with n images each - # then just take every other image at the end, this results in exactly n images - images_0 = self.__s1.interpolate( - self.__mid, nimages=self.__n_images, interpolate_lattices=False - )[:-1] - images_1 = self.__mid.interpolate( - self.__s2, nimages=self.__n_images, interpolate_lattices=False - ) + # to make arithmetic easier we will do the interpolation in two parts with n + # images each then just take every other image at the end, this results in + # exactly n images + images_0 = self.__s1.interpolate(self.__mid, nimages=self.__n_images, interpolate_lattices=False)[:-1] + images_1 = self.__mid.interpolate(self.__s2, nimages=self.__n_images, interpolate_lattices=False) images = images_0 + images_1 images = images[::2] else: - images = self.__s1.interpolate( - self.__s2, nimages=self.__n_images, interpolate_lattices=False - ) + images = self.__s1.interpolate(self.__s2, nimages=self.__n_images, interpolate_lattices=False) for site_i in self.__relax_sites: start_f = images[0].sites[site_i].frac_coords end_f = images[-1].sites[site_i].frac_coords @@ -805,13 +795,13 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    for image_i, image in enumerate(images): image.translate_sites( site_i, - NEBPathfinder.__d2f(path[image_i], self.__v) - - image.sites[site_i].frac_coords, + NEBPathfinder.__d2f(path[image_i], self.__v) - image.sites[site_i].frac_coords, frac_coords=True, to_unit_cell=True, ) self.__images = images
    + @property def images(self): """ @@ -820,10 +810,15 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    """ return self.__images -
    [docs] def plot_images(self, outfile): +
    +[docs] + def plot_images(self, outfile): """ - Generates a POSCAR with the calculated diffusion path with respect to the first endpoint. - :param outfile: Output file for the POSCAR. + Generates a POSCAR with the calculated diffusion path with respect to the first + endpoint. + + Args: + outfile: Output file for the POSCAR. """ sum_struct = self.__images[0].sites for image in self.__images: @@ -841,7 +836,10 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    p = Poscar(sum_struct) p.write_file(outfile)
    -
    [docs] @staticmethod + +
    +[docs] + @staticmethod def string_relax( start, end, @@ -894,11 +892,7 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    # logger.debug(f"Getting path from {start} to {end} (coords wrt V grid)") # Set parameters - dr = ( - np.array([1 / V.shape[0], 1 / V.shape[1], 1 / V.shape[2]]) - if not dr - else np.array(dr, dtype=float) - ) + dr = np.array([1 / V.shape[0], 1 / V.shape[1], 1 / V.shape[2]]) if not dr else np.array(dr, dtype=float) keff = k * dr * n_images h0 = h @@ -925,25 +919,18 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    dV = np.gradient(V) # Evolve string - for step in range(0, max_iter): + for step in range(max_iter): # Gradually decay step size to prevent oscillations - h = ( - h0 * np.exp(-2 * (step - min_iter) / max_iter) - if step > min_iter - else h0 - ) + h = h0 * np.exp(-2 * (step - min_iter) / max_iter) if step > min_iter else h0 # Calculate forces acting on string d = V.shape s0 = s.copy() # store copy for endpoint fixing below (fixes GH 2732) edV = np.array( [ [ - dV[0][int(pt[0]) % d[0]][int(pt[1]) % d[1]][int(pt[2]) % d[2]] - / dr[0], - dV[1][int(pt[0]) % d[0]][int(pt[1]) % d[1]][int(pt[2]) % d[2]] - / dr[0], - dV[2][int(pt[0]) % d[0]][int(pt[1]) % d[1]][int(pt[2]) % d[2]] - / dr[0], + dV[0][int(pt[0]) % d[0]][int(pt[1]) % d[1]][int(pt[2]) % d[2]] / dr[0], + dV[1][int(pt[0]) % d[0]][int(pt[1]) % d[1]][int(pt[2]) % d[2]] / dr[0], + dV[2][int(pt[0]) % d[0]][int(pt[1]) % d[1]][int(pt[2]) % d[2]] / dr[0], ] for pt in s ] @@ -957,16 +944,8 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    ds_plus[0] = ds_plus[0] - ds_plus[0] ds_minus[-1] = ds_minus[-1] - ds_minus[-1] Fpot = edV - Fel = ( - keff - * (la.norm(ds_plus) - la.norm(ds0_plus)) - * (ds_plus / la.norm(ds_plus)) - ) - Fel += ( - keff - * (la.norm(ds_minus) - la.norm(ds0_minus)) - * (ds_minus / la.norm(ds_minus)) - ) + Fel = keff * (la.norm(ds_plus) - la.norm(ds0_plus)) * (ds_plus / la.norm(ds_plus)) + Fel += keff * (la.norm(ds_minus) - la.norm(ds0_minus)) * (ds_minus / la.norm(ds_minus)) s -= h * (Fpot + Fel) # Fix endpoints @@ -984,9 +963,7 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    tol = la.norm((s - s0) * dr) / n_images / h if tol > 1e10: - raise ValueError( - "Pathfinding failed, path diverged! Consider reducing h to avoid divergence." - ) + raise ValueError("Pathfinding failed, path diverged! Consider reducing h to avoid " "divergence.") if step > min_iter and tol < max_tol: logger.debug(f"Converged at {step=}") @@ -996,6 +973,7 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    logger.debug(f"{step=} - ds = {tol}") return s
    + @staticmethod def __f2d(frac_coords, v): """ @@ -1020,7 +998,10 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    )
    -
    [docs]class StaticPotential: + +
    +[docs] +class StaticPotential: """ Defines a general static potential for diffusion calculations. Implements grid-rescaling and smearing for the potential grid. Also provides a @@ -1035,16 +1016,24 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    self.__v = pot self.__s = struct -
    [docs] def get_v(self): +
    +[docs] + def get_v(self): """Returns the potential.""" return self.__v
    -
    [docs] def normalize(self): + +
    +[docs] + def normalize(self): """Sets the potential range 0 to 1.""" self.__v = self.__v - np.amin(self.__v) self.__v = self.__v / np.amax(self.__v)
    -
    [docs] def rescale_field(self, new_dim): + +
    +[docs] + def rescale_field(self, new_dim): """ Changes the discretization of the potential field by linear interpolation. This is necessary if the potential field @@ -1057,27 +1046,23 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    """ v_dim = self.__v.shape padded_v = np.lib.pad(self.__v, ((0, 1), (0, 1), (0, 1)), mode="wrap") - ogrid_list = np.array( - [ - list(c) - for c in list(np.ndindex(v_dim[0] + 1, v_dim[1] + 1, v_dim[2] + 1)) - ] - ) - v_ogrid = padded_v.reshape( - ((v_dim[0] + 1) * (v_dim[1] + 1) * (v_dim[2] + 1), -1) - ) + ogrid_list = np.array([list(c) for c in list(np.ndindex(v_dim[0] + 1, v_dim[1] + 1, v_dim[2] + 1))]) + v_ogrid = padded_v.reshape(((v_dim[0] + 1) * (v_dim[1] + 1) * (v_dim[2] + 1), -1)) ngrid_a, ngrid_b, ngrid_c = np.mgrid[ 0 : v_dim[0] : v_dim[0] / new_dim[0], 0 : v_dim[1] : v_dim[1] / new_dim[1], 0 : v_dim[2] : v_dim[2] / new_dim[2], ] - v_ngrid = scipy.interpolate.griddata( - ogrid_list, v_ogrid, (ngrid_a, ngrid_b, ngrid_c), method="linear" - ).reshape((new_dim[0], new_dim[1], new_dim[2])) + v_ngrid = scipy.interpolate.griddata(ogrid_list, v_ogrid, (ngrid_a, ngrid_b, ngrid_c), method="linear").reshape( + (new_dim[0], new_dim[1], new_dim[2]) + ) self.__v = v_ngrid
    -
    [docs] def gaussian_smear(self, r): + +
    +[docs] + def gaussian_smear(self, r): """ Applies an isotropic Gaussian smear of width (standard deviation) r to the potential field. This is necessary to avoid finding paths through @@ -1111,9 +1096,9 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    for g_b in np.arange(-2 * r_disc[1], 2 * r_disc[1] + 1, 1): for g_c in np.arange(-2 * r_disc[2], 2 * r_disc[2] + 1, 1): g = np.array([g_a / v_dim[0], g_b / v_dim[1], g_c / v_dim[2]]).T - gauss_dist[int(g_a + r_disc[0])][int(g_b + r_disc[1])][ - int(g_c + r_disc[2]) - ] = (la.norm(np.dot(self.__s.lattice.matrix, g)) / r) + gauss_dist[int(g_a + r_disc[0])][int(g_b + r_disc[1])][int(g_c + r_disc[2])] = ( + la.norm(np.dot(self.__s.lattice.matrix, g)) / r + ) gauss = scipy.stats.norm.pdf(gauss_dist) gauss = gauss / np.sum(gauss, dtype=float) padded_v = np.pad( @@ -1122,10 +1107,14 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    mode="wrap", ) smeared_v = scipy.signal.convolve(padded_v, gauss, mode="valid") - self.__v = smeared_v
    + self.__v = smeared_v
    +
    + -
    [docs]class ChgcarPotential(StaticPotential): +
    +[docs] +class ChgcarPotential(StaticPotential): """Implements a potential field based on the charge density output from VASP.""" def __init__(self, chgcar, smear=False, normalize=True): @@ -1146,7 +1135,10 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    self.normalize()
    -
    [docs]class FreeVolumePotential(StaticPotential): + +
    +[docs] +class FreeVolumePotential(StaticPotential): """ Implements a potential field based on geometric distances from atoms in the structure - basically, the potential @@ -1177,15 +1169,16 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    for b_d in np.arange(0, dim[1], 1): for c_d in np.arange(0, dim[2], 1): coords_f = np.array([a_d / dim[0], b_d / dim[1], c_d / dim[2]]) - d_f = sorted( - s.get_sites_in_sphere(coords_f, s.lattice.a), key=lambda x: x[1] - )[0][1] + d_f = sorted(s.get_sites_in_sphere(coords_f, s.lattice.a), key=lambda x: x[1])[0][1] # logger.debug(d_f) gauss_dist[int(a_d)][int(b_d)][int(c_d)] = d_f / r return scipy.stats.norm.pdf(gauss_dist)
    -
    [docs]class MixedPotential(StaticPotential): + +
    +[docs] +class MixedPotential(StaticPotential): """Implements a potential that is a weighted sum of some other potentials.""" def __init__(self, potentials, coefficients, smear=False, normalize=True): @@ -1206,6 +1199,7 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    self.gaussian_smear(2) if normalize: self.normalize()
    +
    @@ -1220,7 +1214,7 @@

    Source code for pymatgen.analysis.diffusion.neb.pathfinder

    +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/neb/periodic_dijkstra.html b/docs/_modules/pymatgen/analysis/diffusion/neb/periodic_dijkstra.html index 7ce7d0d..4b1ce7c 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/neb/periodic_dijkstra.html +++ b/docs/_modules/pymatgen/analysis/diffusion/neb/periodic_dijkstra.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.neb.periodic_dijkstra — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.neb.periodic_dijkstra — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -48,9 +48,9 @@

    Navigation

    Source code for pymatgen.analysis.diffusion.neb.periodic_dijkstra

     # Copyright (c) Materials Virtual Lab.
     # Distributed under the terms of the BSD License.
    -"""
    -Dijkstra's path search on a graph where the nodes are on a periodic graph
    -"""
    +"""Dijkstra's path search on a graph where the nodes are on a periodic graph."""
    +
    +from __future__ import annotations
     
     __author__ = "Jimmy Shen"
     __copyright__ = "Copyright 2021, The Materials Project"
    @@ -61,18 +61,25 @@ 

    Source code for pymatgen.analysis.diffusion.neb.periodic_dijkstra

    import heapq import math from collections import defaultdict -from typing import Callable, Dict, Set +from typing import TYPE_CHECKING, Callable import numpy as np -from networkx.classes.graph import Graph -from pymatgen.analysis.graphs import StructureGraph +if TYPE_CHECKING: + from networkx.classes.graph import Graph + + from pymatgen.analysis.graphs import StructureGraph -def _get_adjacency_with_images(G: Graph) -> Dict: + +def _get_adjacency_with_images(G: Graph) -> dict: """ Return an adjacency dictionary with properly oriented "to_image" values. Note: the current implementation assumes that the original "to_jimage" value always corresponds to a an edge u -> v where u <= v. + + Args: + G (pymatgen.analysis.graphs.StructureGraph): Structure graph. + Returns: dict: Nested dictionary with [start][end][edge_key][data_field] """ @@ -96,13 +103,15 @@

    Source code for pymatgen.analysis.diffusion.neb.periodic_dijkstra

    # Make sure all the to_jimages are pointing in the correct direction for u, value1 in p_graph.items(): for v, value2 in value1.items(): - for k, d in value2.items(): + for d in value2.values(): if u > v: d["to_jimage"] = tuple(np.multiply(-1, d["to_jimage"])) return p_graph -
    [docs]def periodic_dijkstra( +
    +[docs] +def periodic_dijkstra( G: Graph, sources: set, weight: str = "weight", @@ -118,16 +127,16 @@

    Source code for pymatgen.analysis.diffusion.neb.periodic_dijkstra

    G (Graph): The graph object with additional "to_jimage" fields to indicate edges across periodic images. sources (set): the index of the source node - target (int, optional): The index of of target node, if None populate all nodes. Defaults to None. + weight: the weight of the edges. max_image (int, optional): Defaults to 3. target_reached (callable, optional): A function of (site_index, jimage) used to check for stop iteration. This function is always called on the top of heap so it might miss the optimal path but often can find a "good enough" path very quickly. + Returns: best_ans: a dictionary of the best cost found to periodic node keyed by (site_index, jimage) path_parent: dictionary of optimal path parent for each node given in index-image pairs. """ - conn_dict = _get_adjacency_with_images(G.to_undirected()) # use a default dict since we don't know how far out to search @@ -144,7 +153,7 @@

    Source code for pymatgen.analysis.diffusion.neb.periodic_dijkstra

    if min_val < best_ans[(cur_idx, cur_image)]: best_ans[(cur_idx, cur_image)] = min_val for next_node, keyed_data in conn_dict[cur_idx].items(): - for k, d in keyed_data.items(): + for d in keyed_data.values(): # get the node index, image pair new_image = tuple(np.add(cur_image, d["to_jimage"])) next_index_pair = (next_node, new_image) @@ -162,9 +171,12 @@

    Source code for pymatgen.analysis.diffusion.neb.periodic_dijkstra

    return best_ans, path_parent
    -
    [docs]def periodic_dijkstra_on_sgraph( + +
    +[docs] +def periodic_dijkstra_on_sgraph( sgraph: StructureGraph, - sources: Set, + sources: set, weight: str = "weight", max_image: int = 1, target_reached: Callable = lambda idx, jimage: False, @@ -177,11 +189,12 @@

    Source code for pymatgen.analysis.diffusion.neb.periodic_dijkstra

    Args: sgraph (Graph): The StructureGraph object used for path searching sources (set): the index of the source node - target (int, optional): The index of of target node, if None populate all nodes. Defaults to None. + weight: the weight of the edges. max_image (int, optional): Defaults to 3. target_reached (callable, optional): A function of (site_index, jimage) used to check for stop iteration. This function is always called on the top of heap so it might miss the optimal path but often can find a "good enough" path very quickly. + Returns: best_ans: a dictionary of the best cost found to periodic node keyed by (site_index, jimage) path_parent: dictionary of optimal path parent for each node given in index-image pairs. @@ -197,15 +210,17 @@

    Source code for pymatgen.analysis.diffusion.neb.periodic_dijkstra

    return best_ans, path_parent
    -
    [docs]def get_optimal_pathway_rev(path_parent: dict, leaf_node: tuple): - """ - follow a leaf node all the way up to source. - """ + +
    +[docs] +def get_optimal_pathway_rev(path_parent: dict, leaf_node: tuple): + """Follow a leaf node all the way up to source.""" cur = leaf_node while cur in path_parent: yield cur cur = path_parent[cur] yield cur
    +
    @@ -220,7 +235,7 @@

    Source code for pymatgen.analysis.diffusion.neb.periodic_dijkstra

    - +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/neb/tests/test_full_path_mapper.html b/docs/_modules/pymatgen/analysis/diffusion/neb/tests/test_full_path_mapper.html index a7232a5..fd34c1c 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/neb/tests/test_full_path_mapper.html +++ b/docs/_modules/pymatgen/analysis/diffusion/neb/tests/test_full_path_mapper.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -74,14 +74,21 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper< __date__ = "April 10, 2019" -
    [docs]class MigrationGraphSimpleTest(unittest.TestCase): -
    [docs] def setUp(self): +
    +[docs] +class MigrationGraphSimpleTest(unittest.TestCase): +
    +[docs] + def setUp(self): struct = Structure.from_file(f"{dir_path}/full_path_files/MnO2_full_Li.vasp") self.fpm = MigrationGraph.with_distance( structure=struct, migrating_specie="Li", max_distance=4 )
    -
    [docs] def test_get_pos_and_migration_hop(self): + +
    +[docs] + def test_get_pos_and_migration_hop(self): """ Make sure that we can populate the graph with MigrationHop Objects """ @@ -90,14 +97,23 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper< self.fpm.m_graph.graph[0][1][1]["hop"].length, 3.571248, 4 )

    -
    [docs] def test_get_summary_dict(self): + +
    +[docs] + def test_get_summary_dict(self): summary_dict = self.fpm.get_summary_dict() - assert "hop_label", summary_dict["hops"][0] - assert "hop_label", summary_dict["unique_hops"][0]
    + assert "hop_label" in summary_dict["hops"][0] + assert "hop_label" in summary_dict["unique_hops"][0]
    +
    + -
    [docs]class MigrationGraphFromEntriesTest(unittest.TestCase): -
    [docs] def setUp(self): +
    +[docs] +class MigrationGraphFromEntriesTest(unittest.TestCase): +
    +[docs] + def setUp(self): self.test_ents_MOF = loadfn( f"{dir_path}/full_path_files/Mn6O5F7_cat_migration.json" ) @@ -111,7 +127,10 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper< migrating_ion_entry=self.li_ent, )[0]

    -
    [docs] def test_m_graph_from_entries_failed(self): + +
    +[docs] + def test_m_graph_from_entries_failed(self): # only base s_list = MigrationGraph.get_structure_from_entries( entries=[self.test_ents_MOF["ent_base"]], @@ -125,30 +144,44 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper< ) assert len(s_list) == 0

    -
    [docs] def test_m_graph_construction(self): + +
    +[docs] + def test_m_graph_construction(self): assert self.full_struct.composition["Li"] == 8 mg = MigrationGraph.with_distance( self.full_struct, migrating_specie="Li", max_distance=4.0 ) - assert len(mg.m_graph.structure) == 8
    + assert len(mg.m_graph.structure) == 8
    +
    -
    [docs]class MigrationGraphComplexTest(unittest.TestCase): -
    [docs] def setUp(self): + +
    +[docs] +class MigrationGraphComplexTest(unittest.TestCase): +
    +[docs] + def setUp(self): struct = Structure.from_file(f"{dir_path}/full_path_files/MnO2_full_Li.vasp") self.fpm_li = MigrationGraph.with_distance( structure=struct, migrating_specie="Li", max_distance=4 ) - # Particularity difficult pathfinding since both the starting and ending positions are outside the unit cell + # Particularity difficult path finding since both the starting and ending + # positions are outside the unit cell struct = Structure.from_file(f"{dir_path}/full_path_files/Mg_2atom.vasp") self.fpm_mg = MigrationGraph.with_distance( structure=struct, migrating_specie="Mg", max_distance=2 )
    -
    [docs] def test_group_and_label_hops(self): + +
    +[docs] + def test_group_and_label_hops(self): """ - Check that the set of end points in a group of similiarly labeled hops are all the same + Check that the set of end points in a group of similarly labeled hops are all + the same. """ edge_labs = np.array( [d["hop_label"] for u, v, d in self.fpm_li.m_graph.graph.edges(data=True)] @@ -169,9 +202,12 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper< for end_point_labels in sub_set: assert sorted(end_point_labels) == sorted(sub_set[0])

    -
    [docs] def test_unique_hops_dict(self): + +
    +[docs] + def test_unique_hops_dict(self): """ - Check that the unique hops are inequilvalent + Check that the unique hops are inequivalent """ unique_list = [v for k, v in self.fpm_li.unique_hops.items()] all_pairs = [ @@ -183,7 +219,10 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper< for migration_hop in all_pairs: assert migration_hop[0]["hop"] != migration_hop[1]["hop"]

    -
    [docs] def test_add_data_to_similar_edges(self): + +
    +[docs] + def test_add_data_to_similar_edges(self): # passing normal data self.fpm_li.add_data_to_similar_edges(0, {"key0": "data"}) for _u, _v, d in self.fpm_li.m_graph.graph.edges(data=True): @@ -212,7 +251,10 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper< if d["hop_label"] == 2: assert d["key2"] == [3, 2, 1]

    -
    [docs] def test_assign_cost_to_graph(self): + +
    +[docs] + def test_assign_cost_to_graph(self): self.fpm_li.assign_cost_to_graph() # use 'hop_distance' for _u, _v, d in self.fpm_li.m_graph.graph.edges(data=True): self.assertAlmostEqual(d["cost"], d["hop_distance"], 4) @@ -221,7 +263,10 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper< for _u, _v, d in self.fpm_li.m_graph.graph.edges(data=True): self.assertAlmostEqual(d["cost"], d["hop_distance"] ** 2, 4)

    -
    [docs] def test_periodic_dijkstra(self): + +
    +[docs] + def test_periodic_dijkstra(self): self.fpm_li.assign_cost_to_graph() # use 'hop_distance' # test the connection graph @@ -237,7 +282,10 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper< ] assert neg_image in opposite_connections

    -
    [docs] def test_get_path(self): + +
    +[docs] + def test_get_path(self): self.fpm_li.assign_cost_to_graph() # use 'hop_distance' paths = [*self.fpm_li.get_path(flip_hops=False)] p_strings = { @@ -263,7 +311,10 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper< } assert "1->0->1" in p_strings

    -
    [docs] def test_get_key_in_path(self): + +
    +[docs] + def test_get_key_in_path(self): self.fpm_li.assign_cost_to_graph() # use 'hop_distance' paths = [*self.fpm_li.get_path(flip_hops=False)] hop_seq_info = [ @@ -282,13 +333,19 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper< assert distances == hop_seq_info[u][1] print(distances, hop_seq_info[u][1])

    -
    [docs] def test_not_matching_first(self): + +
    +[docs] + def test_not_matching_first(self): structure = Structure.from_file(f"{dir_path}/pathfinder_files/Li6MnO4.json") fpm_lmo = MigrationGraph.with_distance(structure, "Li", max_distance=4) for _u, _v, d in fpm_lmo.m_graph.graph.edges(data=True): assert d["hop"].eindex in {0, 1}
    -
    [docs] def test_order_path(self): + +
    +[docs] + def test_order_path(self): # add list data to migration graph - to test if list data is flipped for n, hop_d in self.fpm_li.unique_hops.items(): data = {"data": [hop_d["iindex"], hop_d["eindex"]]} @@ -307,11 +364,17 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper< for h, ord_h in zip(hop_list, ordered): if h["iindex"] != ord_h["iindex"]: # check only if hop was flipped assert h["data"][0] == ord_h["data"][-1] - assert h["data"][-1] == ord_h["data"][0]

    + assert h["data"][-1] == ord_h["data"][0]
    +
    + -
    [docs]class ChargeBarrierGraphTest(unittest.TestCase): -
    [docs] def setUp(self): +
    +[docs] +class ChargeBarrierGraphTest(unittest.TestCase): +
    +[docs] + def setUp(self): self.full_sites_MOF = loadfn( f"{dir_path}/full_path_files/LixMn6O5F7_full_sites.json" ) @@ -327,9 +390,12 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper< ) self.cbg._tube_radius = 10000

    -
    [docs] def test_integration(self): + +
    +[docs] + def test_integration(self): """ - Sanity check: for a long enough diagonaly hop, if we turn the radius of the tube way up, it should cover the entire unit cell + Sanity check: for a long enough diagonally hop, if we turn the radius of the tube way up, it should cover the entire unit cell """ total_chg_per_vol = ( self.cbg.potential_field.data["total"].sum() @@ -363,7 +429,10 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper< 3, )

    -
    [docs] def test_populate_edges_with_chg_density_info(self): + +
    +[docs] + def test_populate_edges_with_chg_density_info(self): """ Test that all of the sites with similar lengths have similar charge densities, this will not always be true, but it valid in this Mn6O5F7 @@ -382,14 +451,15 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper< if 1.05 > length / prv[0] > 0.95: self.assertAlmostEqual(chg, prv[1], 3)

    -
    [docs] def test_get_summary_dict(self): - summary_dict = self.cbg.get_summary_dict() - assert "chg_total", summary_dict["hops"][0] - assert "chg_total", summary_dict["unique_hops"][0]
    +
    +[docs] + def test_get_summary_dict(self): + summary_dict = self.cbg.get_summary_dict() + assert "chg_total", summary_dict["hops"][0] # noqa: PLW0129 + assert "chg_total", summary_dict["unique_hops"][0] # noqa: PLW0129
    +
    -if __name__ == "__main__": - unittest.main()
    @@ -404,7 +474,7 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper< - +

    diff --git a/docs/_modules/pymatgen/analysis/diffusion/neb/tests/test_io.html b/docs/_modules/pymatgen/analysis/diffusion/neb/tests/test_io.html index e16f5de..e72bfdb 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/neb/tests/test_io.html +++ b/docs/_modules/pymatgen/analysis/diffusion/neb/tests/test_io.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.neb.tests.test_io — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.neb.tests.test_io — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -64,17 +64,24 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_io

    test_dir = os.path.join(os.path.abspath(os.path.dirname(__file__))) -
    [docs]def get_path(path_str, dirname="./"): +
    +[docs] +def get_path(path_str, dirname="./"): cwd = os.path.abspath(os.path.dirname(__file__)) return os.path.join(cwd, dirname, path_str)
    -
    [docs]class MVLCINEBEndPointSetTest(unittest.TestCase): + +
    +[docs] +class MVLCINEBEndPointSetTest(unittest.TestCase): endpoint = Structure.from_file(get_path("POSCAR0", dirname="io_files")) -
    [docs] def test_incar(self): +
    +[docs] + def test_incar(self): m = MVLCINEBEndPointSet(self.endpoint) - incar_string = m.incar.get_string(sort_keys=True, pretty=True) + incar_string = m.incar.get_str(sort_keys=True, pretty=True) incar_expect = """ALGO = Fast EDIFF = 5e-05 EDIFFG = -0.02 @@ -86,6 +93,7 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_io

    ISPIN = 2 ISYM = 0 LCHARG = False +LDAU = False LMAXMIX = 4 LORBIT = 11 LREAL = Auto @@ -98,7 +106,10 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_io

    SIGMA = 0.05""" assert incar_string == incar_expect
    -
    [docs] def test_incar_user_setting(self): + +
    +[docs] + def test_incar_user_setting(self): user_incar_settings = { "ALGO": "Normal", "EDIFFG": -0.05, @@ -107,7 +118,7 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_io

    "NSW": 100, } m = MVLCINEBEndPointSet(self.endpoint, user_incar_settings=user_incar_settings) - incar_string = m.incar.get_string(sort_keys=True) + incar_string = m.incar.get_str(sort_keys=True) incar_expect = """ALGO = Normal EDIFF = 5e-05 EDIFFG = -0.05 @@ -119,6 +130,7 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_io

    ISPIN = 2 ISYM = 0 LCHARG = False +LDAU = False LMAXMIX = 4 LORBIT = 11 LREAL = Auto @@ -131,19 +143,22 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_io

    NSW = 100 PREC = Accurate SIGMA = 0.05""" - assert incar_string.strip() == incar_expect.strip()
    + assert incar_string.strip() == incar_expect.strip()
    +
    -
    [docs]class MVLCINEBSetTest(unittest.TestCase): - structures = [ - Structure.from_file(get_path("POSCAR" + str(i), dirname="io_files")) - for i in range(3) - ] -
    [docs] def test_incar(self): +
    +[docs] +class MVLCINEBSetTest(unittest.TestCase): + structures = [Structure.from_file(get_path("POSCAR" + str(i), dirname="io_files")) for i in range(3)] + +
    +[docs] + def test_incar(self): m = MVLCINEBSet(self.structures) - incar_string = m.incar.get_string(sort_keys=True) + incar_string = m.incar.get_str(sort_keys=True) incar_expect = """ALGO = Fast EDIFF = 5e-05 EDIFFG = -0.02 @@ -159,6 +174,7 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_io

    ISYM = 0 LCHARG = False LCLIMB = True +LDAU = False LMAXMIX = 4 LORBIT = 0 LREAL = Auto @@ -173,10 +189,13 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_io

    SPRING = -5""" assert incar_string.strip() == incar_expect.strip()
    -
    [docs] def test_incar_user_setting(self): + +
    +[docs] + def test_incar_user_setting(self): user_incar_settings = {"IOPT": 3, "EDIFFG": -0.05, "NPAR": 4, "ISIF": 3} m = MVLCINEBSet(self.structures, user_incar_settings=user_incar_settings) - incar_string = m.incar.get_string(sort_keys=True, pretty=True) + incar_string = m.incar.get_str(sort_keys=True, pretty=True) incar_expect = """ALGO = Fast EDIFF = 5e-05 EDIFFG = -0.05 @@ -192,6 +211,7 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_io

    ISYM = 0 LCHARG = False LCLIMB = True +LDAU = False LMAXMIX = 4 LORBIT = 0 LREAL = Auto @@ -205,43 +225,44 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_io

    PREC = Accurate SIGMA = 0.05 SPRING = -5""" - assert incar_string.strip() == incar_expect.strip()
    + assert incar_string.strip() == incar_expect.strip()
    +
    + -
    [docs]class UtilityTest(unittest.TestCase): +
    +[docs] +class UtilityTest(unittest.TestCase): """ Unit test for outside methods in io.py """ structure = Structure.from_file(get_path("POSCAR", dirname="io_files")) -
    [docs] def test_get_endpoints_from_index(self): - endpoints = get_endpoints_from_index( - structure=self.structure, site_indices=[0, 1] - ) +
    +[docs] + def test_get_endpoints_from_index(self): + endpoints = get_endpoints_from_index(structure=self.structure, site_indices=[0, 1]) ep_0 = endpoints[0].as_dict() ep_1 = endpoints[1].as_dict() - ep_0_expect = Structure.from_file( - get_path("POSCAR_ep0", dirname="io_files") - ).as_dict() - ep_1_expect = Structure.from_file( - get_path("POSCAR_ep1", dirname="io_files") - ).as_dict() + ep_0_expect = Structure.from_file(get_path("POSCAR_ep0", dirname="io_files")).as_dict() + ep_1_expect = Structure.from_file(get_path("POSCAR_ep1", dirname="io_files")).as_dict() assert ep_0 == ep_0_expect assert ep_1 == ep_1_expect
    -
    [docs] def test_get_endpoint_dist(self): + +
    +[docs] + def test_get_endpoint_dist(self): ep0 = Structure.from_file(get_path("POSCAR_ep0", dirname="io_files")) ep1 = Structure.from_file(get_path("POSCAR_ep1", dirname="io_files")) distances = get_endpoint_dist(ep0, ep1) self.assertAlmostEqual(max(distances), 6.3461081051543893, 7) - assert min(distances) == 0.0
    - + assert min(distances) == 0.0
    +
    -if __name__ == "__main__": - unittest.main()
    @@ -256,7 +277,7 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_io

    - +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/neb/tests/test_pathfinder.html b/docs/_modules/pymatgen/analysis/diffusion/neb/tests/test_pathfinder.html index f5cb264..5782f0f 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/neb/tests/test_pathfinder.html +++ b/docs/_modules/pymatgen/analysis/diffusion/neb/tests/test_pathfinder.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.neb.tests.test_pathfinder — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.neb.tests.test_pathfinder — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -57,11 +57,7 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_pathfinder

    import numpy as np from pymatgen.analysis.diffusion.neb.full_path_mapper import MigrationGraph -from pymatgen.analysis.diffusion.neb.pathfinder import ( - DistinctPathFinder, - IDPPSolver, - MigrationHop, -) +from pymatgen.analysis.diffusion.neb.pathfinder import DistinctPathFinder, IDPPSolver, MigrationHop from pymatgen.analysis.diffusion.utils.supercells import get_start_end_structures from pymatgen.core import Composition, PeriodicSite, Structure from pymatgen.symmetry.analyzer import SpacegroupAnalyzer @@ -72,18 +68,25 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_pathfinder

    __date__ = "March 14, 2017" -
    [docs]def get_path(path_str, dirname="./"): +
    +[docs] +def get_path(path_str, dirname="./"): cwd = os.path.abspath(os.path.dirname(__file__)) return os.path.join(cwd, dirname, path_str)
    -
    [docs]class IDPPSolverTest(unittest.TestCase): + +
    +[docs] +class IDPPSolverTest(unittest.TestCase): init_struct = Structure.from_file(get_path("CONTCAR-0", dirname="pathfinder_files")) final_struct = Structure.from_file( get_path("CONTCAR-1", dirname="pathfinder_files") ) -
    [docs] def test_idpp_from_ep(self): +
    +[docs] + def test_idpp_from_ep(self): obj = IDPPSolver.from_endpoints( [self.init_struct, self.final_struct], nimages=3, sort_tol=1.0 ) @@ -115,7 +118,10 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_pathfinder

    new_path[4][47].frac_coords, np.array([0.59767531, 0.12640952, 0.37745006]) )
    -
    [docs] def test_idpp_from_ep_diff_latt(self): + +
    +[docs] + def test_idpp_from_ep_diff_latt(self): # This is the same test as test_idpp_from_ep where we want to interpolate # different lattices. @@ -213,7 +219,10 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_pathfinder

    ), )
    -
    [docs] def test_idpp(self): + +
    +[docs] + def test_idpp(self): images = self.init_struct.interpolate( self.final_struct, nimages=4, autosort_tol=1.0 ) @@ -238,11 +247,17 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_pathfinder

    ) assert np.allclose( new_path[4][47].frac_coords, np.array([0.59767531, 0.12640952, 0.37745006]) - )
    + )
    +
    -
    [docs]class DistinctPathFinderTest(PymatgenTest): -
    [docs] def test_get_paths(self): + +
    +[docs] +class DistinctPathFinderTest(PymatgenTest): +
    +[docs] + def test_get_paths(self): s = self.get_structure("LiFePO4") # Only one path in LiFePO4 with 4 A. p = DistinctPathFinder(s, "Li", max_path_length=4) @@ -287,16 +302,25 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_pathfinder

    for f in glob.glob("pathfindertest_*.cif"): os.remove(f)
    -
    [docs] def test_max_path_length(self): + +
    +[docs] + def test_max_path_length(self): s = Structure.from_file(get_path("LYPS.cif", dirname="pathfinder_files")) dp1 = DistinctPathFinder(s, "Li", perc_mode="1d") self.assertAlmostEqual(dp1.max_path_length, 4.11375354207, 7) dp2 = DistinctPathFinder(s, "Li", 5, perc_mode="1d") - self.assertAlmostEqual(dp2.max_path_length, 5.0, 7)
    + self.assertAlmostEqual(dp2.max_path_length, 5.0, 7)
    +
    + -
    [docs]class MigrationHopTest(PymatgenTest): -
    [docs] def setUp(self): +
    +[docs] +class MigrationHopTest(PymatgenTest): +
    +[docs] + def setUp(self): self.lifepo = self.get_structure("LiFePO4") m_graph = MigrationGraph.with_distance( self.lifepo, max_distance=4.0, migrating_specie="Li" @@ -309,11 +333,17 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_pathfinder

    symm_structure = a.get_symmetrized_structure() self.m_hop = MigrationHop(i_site, e_site, symm_structure)
    -
    [docs] def test_msonable(self): + +
    +[docs] + def test_msonable(self): hop_dict = self.m_hop.as_dict() - assert type(hop_dict) == dict
    + assert isinstance(hop_dict, dict)
    + -
    [docs] def test_get_start_end_structs_from_hop(self): +
    +[docs] + def test_get_start_end_structs_from_hop(self): dist_ref = self.m_hop.length base = self.lifepo.copy() base.remove_species(["Li"]) @@ -328,7 +358,10 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_pathfinder

    end_site = next(filter(lambda x: x.species_string == "Li", end.sites)) self.assertAlmostEqual(start_site.distance(end_site), dist_ref, 3)
    -
    [docs] def test_get_start_end_structs_from_hop_vac(self): + +
    +[docs] + def test_get_start_end_structs_from_hop_vac(self): dist_ref = self.m_hop.length start, end, b_sc = get_start_end_structures( self.m_hop.isite, @@ -351,7 +384,10 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_pathfinder

    end.remove_sites(s2) self.assertAlmostEqual(start.sites[0].distance(end.sites[0]), dist_ref, 3)
    -
    [docs] def test_get_sc_structures(self): + +
    +[docs] + def test_get_sc_structures(self): dist_ref = self.m_hop.length start, end, b_sc = self.m_hop.get_sc_structures(vac_mode=False) start_site = next(filter(lambda x: x.species_string == "Li", start.sites)) @@ -360,14 +396,15 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_pathfinder

    assert b_sc.composition == Composition("Fe24 P24 O96") self.assertAlmostEqual(start_site.distance(end_site), dist_ref, 3)
    -
    [docs] def test_get_sc_structures_vacmode(self): + +
    +[docs] + def test_get_sc_structures_vacmode(self): start, end, b_sc = self.m_hop.get_sc_structures(vac_mode=True) assert start.composition == end.composition == Composition("Li23 Fe24 P24 O96") - assert b_sc.composition == Composition("Li24 Fe24 P24 O96")
    - + assert b_sc.composition == Composition("Li24 Fe24 P24 O96")
    +
    -if __name__ == "__main__": - unittest.main()
    @@ -382,7 +419,7 @@

    Source code for pymatgen.analysis.diffusion.neb.tests.test_pathfinder

    - +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/tests/test_analyzer.html b/docs/_modules/pymatgen/analysis/diffusion/tests/test_analyzer.html index 08c7665..3dcb23a 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/tests/test_analyzer.html +++ b/docs/_modules/pymatgen/analysis/diffusion/tests/test_analyzer.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.tests.test_analyzer — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.tests.test_analyzer — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -59,11 +59,7 @@

    Source code for pymatgen.analysis.diffusion.tests.test_analyzer

    import pytest import scipy.constants as const -from pymatgen.analysis.diffusion.analyzer import ( - DiffusionAnalyzer, - fit_arrhenius, - get_conversion_factor, -) +from pymatgen.analysis.diffusion.analyzer import DiffusionAnalyzer, fit_arrhenius, get_conversion_factor from pymatgen.core.lattice import Lattice from pymatgen.core.structure import Structure from pymatgen.util.testing import PymatgenTest @@ -71,15 +67,22 @@

    Source code for pymatgen.analysis.diffusion.tests.test_analyzer

    module_dir = os.path.dirname(os.path.abspath(__file__)) -
    [docs]class FuncTest(PymatgenTest): -
    [docs] def test_get_conversion_factor(self): +
    +[docs] +class FuncTest(PymatgenTest): +
    +[docs] + def test_get_conversion_factor(self): s = PymatgenTest.get_structure("LiFePO4") # large tolerance because scipy constants changed between 0.16.1 and 0.17 self.assertAlmostEqual( 41370704.343540139, get_conversion_factor(s, "Li", 600), delta=20 )
    -
    [docs] def test_fit_arrhenius(self): + +
    +[docs] + def test_fit_arrhenius(self): Ea = 0.5 k = const.k / const.e c = 12 @@ -95,11 +98,17 @@

    Source code for pymatgen.analysis.diffusion.tests.test_analyzer

    r2 = fit_arrhenius([1, 2], [10, 10]) self.assertAlmostEqual(r2[0], 0) self.assertAlmostEqual(r2[1], 10) - assert r2[2] is None
    + assert r2[2] is None
    +
    + -
    [docs]class DiffusionAnalyzerTest(PymatgenTest): -
    [docs] def test_init(self): +
    +[docs] +class DiffusionAnalyzerTest(PymatgenTest): +
    +[docs] + def test_init(self): # Diffusion vasprun.xmls are rather large. We are only going to use a # very small preprocessed run for testing. Note that the results are # unreliable for short runs. @@ -253,7 +262,7 @@

    Source code for pymatgen.analysis.diffusion.tests.test_analyzer

    self.assertAlmostEqual(d.chg_conductivity, 1.06440821953e-09, 4) # Can't average over 2000 steps because this is a 1000-step run. - self.assertRaises( + self.assertRaises( # noqa: PT027 ValueError, DiffusionAnalyzer, d.structure, @@ -290,7 +299,10 @@

    Source code for pymatgen.analysis.diffusion.tests.test_analyzer

    assert data[:, -1] == pytest.approx(d.mscd) os.remove("test.csv")
    -
    [docs] def test_init_npt(self): + +
    +[docs] + def test_init_npt(self): # Diffusion vasprun.xmls are rather large. We are only going to use a # very small preprocessed run for testing. Note that the results are # unreliable for short runs. @@ -475,7 +487,7 @@

    Source code for pymatgen.analysis.diffusion.tests.test_analyzer

    self.assertAlmostEqual(d.chg_conductivity, 554.5240271992852, 6) # Can't average over 2000 steps because this is a 1000-step run. - self.assertRaises( + self.assertRaises( # noqa: PT027 ValueError, DiffusionAnalyzer, d.structure, @@ -514,7 +526,10 @@

    Source code for pymatgen.analysis.diffusion.tests.test_analyzer

    assert data[:, -1] == pytest.approx(d.mscd) os.remove("test.csv")
    -
    [docs] def test_from_structure_NPT(self): + +
    +[docs] + def test_from_structure_NPT(self): coords1 = np.array([[0.0, 0.0, 0.0], [0.5, 0.5, 0.5]]) coords2 = np.array([[0.0, 0.0, 0.0], [0.6, 0.6, 0.6]]) coords3 = np.array([[0.0, 0.0, 0.0], [0.7, 0.7, 0.7]]) @@ -541,7 +556,9 @@

    Source code for pymatgen.analysis.diffusion.tests.test_analyzer

    ) assert d.disp[1] == pytest.approx( np.array([[0.0, 0.0, 0.0], [0.21, 0.21, 0.21], [0.40, 0.40, 0.40]]) - )
    + )
    +
    +
    @@ -556,7 +573,7 @@

    Source code for pymatgen.analysis.diffusion.tests.test_analyzer

    - +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/tests/test_pathfinder.html b/docs/_modules/pymatgen/analysis/diffusion/tests/test_pathfinder.html index 5788e44..86616df 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/tests/test_pathfinder.html +++ b/docs/_modules/pymatgen/analysis/diffusion/tests/test_pathfinder.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.tests.test_pathfinder — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.tests.test_pathfinder — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -57,14 +57,20 @@

    Source code for pymatgen.analysis.diffusion.tests.test_pathfinder

    module_dir = os.path.dirname(os.path.abspath(__file__)) -
    [docs]class PathfinderTest(PymatgenTest): -
    [docs] def test_mhop_msonable(self): +
    +[docs] +class PathfinderTest(PymatgenTest): +
    +[docs] + def test_mhop_msonable(self): file_path = os.path.join(module_dir, "migration_graph_spinel_MgMn2O4.json") spinel_mg = loadfn(file_path) hop = spinel_mg.unique_hops[0]["hop"] hop_dict = hop.as_dict() - assert type(hop_dict) == dict
    + assert isinstance(hop_dict, dict)
    +
    +
    @@ -79,7 +85,7 @@

    Source code for pymatgen.analysis.diffusion.tests.test_pathfinder

    - +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/utils/edge_data_from_sc.html b/docs/_modules/pymatgen/analysis/diffusion/utils/edge_data_from_sc.html index ae83adf..0d5fa99 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/utils/edge_data_from_sc.html +++ b/docs/_modules/pymatgen/analysis/diffusion/utils/edge_data_from_sc.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.utils.edge_data_from_sc — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.utils.edge_data_from_sc — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -49,9 +49,8 @@

    Source code for pymatgen.analysis.diffusion.utils.edge_data_from_sc

    # Copyright (c) Materials Virtual Lab. # Distributed under the terms of the BSD License. -""" -Function to add edge data to MigrationGraph through 2 SC structures -""" +"""Function to add edge data to MigrationGraph through 2 SC structures.""" + from __future__ import annotations __author__ = "Haoming Li" @@ -64,13 +63,8 @@

    Source code for pymatgen.analysis.diffusion.utils.edge_data_from_sc

    import numpy as np -from pymatgen.analysis.diffusion.neb.full_path_mapper import ( - MigrationGraph, - MigrationHop, -) -from pymatgen.analysis.diffusion.utils.parse_entries import ( - get_matched_structure_mapping, -) +from pymatgen.analysis.diffusion.neb.full_path_mapper import MigrationGraph, MigrationHop +from pymatgen.analysis.diffusion.utils.parse_entries import get_matched_structure_mapping from pymatgen.analysis.structure_matcher import StructureMatcher from pymatgen.core.structure import PeriodicSite, Structure from pymatgen.symmetry.analyzer import SpacegroupAnalyzer @@ -78,7 +72,9 @@

    Source code for pymatgen.analysis.diffusion.utils.edge_data_from_sc

    logger = logging.getLogger(__name__) -
    [docs]def add_edge_data_from_sc( +
    +[docs] +def add_edge_data_from_sc( mg: MigrationGraph, i_sc: Structure, e_sc: Structure, @@ -87,15 +83,17 @@

    Source code for pymatgen.analysis.diffusion.utils.edge_data_from_sc

    use_host_sg: bool = True, ) -> None: """ - Add a data entry and key to edges within FullPathMapper object with the same hop_label. - These hops are equivalent by symmetry to the 2 positions given in the supercell structures. + Add a data entry and key to edges within FullPathMapper object with the same + hop_label. These hops are equivalent by symmetry to the 2 positions given in the + supercell structures. Args: + mg: MigrationGraph object. i_sc: Supercell structure containing working ion at initial position e_sc: Supercell structure containing working ion at ending position data_array: The data to be added to the edges key: Key of the edge attribute to be added - use_host_sg: Flag t whether or not to use the host structure's spacegroup to initiate MigrationHop + use_host_sg: Flag whether to use the host structure's spacegroup to initiate MigrationHop Returns: None @@ -104,30 +102,29 @@

    Source code for pymatgen.analysis.diffusion.utils.edge_data_from_sc

    i_wi = [x for x in i_sc.sites if x.species_string == wi] e_wi = [x for x in e_sc.sites if x.species_string == wi] if len(i_wi) != 1 or len(e_wi) != 1: - raise ValueError( - "The number of working ions in each supercell structure should be one" - ) + raise ValueError("The number of working ions in each supercell structure should be one") isite, esite = i_wi[0], e_wi[0] uhop_index, mh_from_sc = get_unique_hop(mg, i_sc, isite, esite, use_host_sg) add_dict = {key: data_array} - mg.add_data_to_similar_edges( - target_label=uhop_index, data=add_dict, m_hop=mh_from_sc - )
    + mg.add_data_to_similar_edges(target_label=uhop_index, data=add_dict, m_hop=mh_from_sc)
    -
    [docs]def get_uc_pos( + +
    +[docs] +def get_uc_pos( isite: PeriodicSite, esite: PeriodicSite, uc: Structure, sc: Structure, sm: StructureMatcher, ) -> tuple[PeriodicSite, PeriodicSite, PeriodicSite]: - """Take positions in the supercel and transform into the unitcell positions + """Take positions in the supercell and transform into the unit cell positions. Args: isite: initial site in the SC esite: ending site in the SC - uc: Unit Cell structre + uc: Unit Cell structure sc: Super Cell structure sm: StructureMatcher object with the working ion ignored @@ -136,10 +133,7 @@

    Source code for pymatgen.analysis.diffusion.utils.edge_data_from_sc

    """ mapping = get_matched_structure_mapping(base=uc, inserted=sc, sm=sm) if mapping is None: - raise ValueError( - "Cannot obtain inverse mapping, consider lowering tolerances " - "in StructureMatcher" - ) + raise ValueError("Cannot obtain inverse mapping, consider lowering tolerances " "in StructureMatcher") sc_m, total_t = mapping sc_ipos = isite.frac_coords sc_ipos_t = sc_ipos - total_t @@ -172,19 +166,20 @@

    Source code for pymatgen.analysis.diffusion.utils.edge_data_from_sc

    return p0, p1, p2
    + def _get_first_close_site(frac_coord, structure, stol=0.1): for site in structure.sites: - dist, image = structure.lattice.get_distance_and_image( - frac_coord, site.frac_coords - ) + dist, image = structure.lattice.get_distance_and_image(frac_coord, site.frac_coords) if dist < stol: return np.add(site.frac_coords, image) return frac_coord -
    [docs]def mh_eq(mh1, mh2): +
    +[docs] +def mh_eq(mh1, mh2): """ - Allow for symmetric matching of MigrationPath objects with variable precession + Allow for symmetric matching of MigrationPath objects with variable precession. Args: mh1: MigrationHop object @@ -197,35 +192,33 @@

    Source code for pymatgen.analysis.diffusion.utils.edge_data_from_sc

    return mh1 == mh2
    -
    [docs]def get_unique_hop( + +
    +[docs] +def get_unique_hop( mg: MigrationGraph, sc: Structure, isite: PeriodicSite, esite: PeriodicSite, use_host_sg: bool = True, ) -> tuple[int, MigrationHop]: - """Get the unique hop label that correspond to two end positions in the SC + """Get the unique hop label that correspond to two end positions in the SC. Args: mg: Object containing the migration analysis sc: Structure of the supercell used for the NEB calculation isite: Initial position in the supercell esite: Final position in the supercell - use_host_sg: Flag t whether or not to use the host structure's spacegroup to initiate MigrationHop + use_host_sg: Flag t whether or not to use the host structure's spacegroup to + initiate MigrationHop Returns: - The index of the unique hop, the MigrationHop object trasformed from the SC + The index of the unique hop, the MigrationHop object transformed from the SC """ - sm = StructureMatcher( - ignored_species=[ - next(iter(mg.m_graph.graph.edges(data=True)))[2]["hop"].isite.specie.name - ] - ) + sm = StructureMatcher(ignored_species=[next(iter(mg.m_graph.graph.edges(data=True)))[2]["hop"].isite.specie.name]) uc_isite, uc_msite, uc_esite = get_uc_pos(isite, esite, mg.symm_structure, sc, sm) if use_host_sg: - base_ss = SpacegroupAnalyzer( - mg.host_structure, symprec=mg.symprec - ).get_symmetrized_structure() + base_ss = SpacegroupAnalyzer(mg.host_structure, symprec=mg.symprec).get_symmetrized_structure() mh_from_sc = MigrationHop( uc_isite, uc_esite, @@ -234,9 +227,7 @@

    Source code for pymatgen.analysis.diffusion.utils.edge_data_from_sc

    symprec=mg.symprec, ) else: - mh_from_sc = MigrationHop( - uc_isite, uc_esite, symm_structure=mg.symm_structure, symprec=mg.symprec - ) + mh_from_sc = MigrationHop(uc_isite, uc_esite, symm_structure=mg.symm_structure, symprec=mg.symprec) result = [] for k, v in mg.unique_hops.items(): # tolerance may be changed here @@ -248,10 +239,9 @@

    Source code for pymatgen.analysis.diffusion.utils.edge_data_from_sc

    if len(result) == 0: raise ValueError("No matches between UC and SC") - assert mg.symm_structure.spacegroup.are_symmetrically_equivalent( - [uc_msite], [mh_from_sc.msite] - ) + assert mg.symm_structure.spacegroup.are_symmetrically_equivalent([uc_msite], [mh_from_sc.msite]) return result[0], mh_from_sc
    +
    @@ -266,7 +256,7 @@

    Source code for pymatgen.analysis.diffusion.utils.edge_data_from_sc

    - +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/utils/maggma.html b/docs/_modules/pymatgen/analysis/diffusion/utils/maggma.html index b754539..cab8098 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/utils/maggma.html +++ b/docs/_modules/pymatgen/analysis/diffusion/utils/maggma.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.utils.maggma — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.utils.maggma — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -51,8 +51,9 @@

    Source code for pymatgen.analysis.diffusion.utils.maggma

    """ Functions for querying Materials Project style MongoStores that contains cathode materials The functions are isolated from the rest of the package so -that the rest of the package will not depend on Maggma +that the rest of the package will not depend on Maggma. """ + from __future__ import annotations __author__ = "Jimmy Shen" @@ -74,7 +75,9 @@

    Source code for pymatgen.analysis.diffusion.utils.maggma

    logger.setLevel(logging.INFO) -
    [docs]def get_entries_from_dbs( +
    +[docs] +def get_entries_from_dbs( structure_group_store: MongoStore, material_store: MongoStore, migrating_ion: str, @@ -87,12 +90,11 @@

    Source code for pymatgen.analysis.diffusion.utils.maggma

    Args: structure_group_store: Electrode documents one per each similar group of insertion materials, can also use any db that contains a - material_store: Material documenets one per each similar structure ( + material_store: Material documents one per each similar structure ( multiple tasks) migrating_ion: The name of the migrating ion - material_ids list with topotactic structures + material_id: Material id """ - with structure_group_store as store: sg_doc = store.query_one({structure_group_store.key: material_id}) ignored_species = migrating_ion @@ -113,6 +115,7 @@

    Source code for pymatgen.analysis.diffusion.utils.maggma

    base_entries.append(entry) return base_entries, inserted_entries
    +
    @@ -127,7 +130,7 @@

    Source code for pymatgen.analysis.diffusion.utils.maggma

    +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/utils/parse_entries.html b/docs/_modules/pymatgen/analysis/diffusion/utils/parse_entries.html index b0de48c..277924d 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/utils/parse_entries.html +++ b/docs/_modules/pymatgen/analysis/diffusion/utils/parse_entries.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.utils.parse_entries — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.utils.parse_entries — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -49,9 +49,8 @@

    Source code for pymatgen.analysis.diffusion.utils.parse_entries

    # Copyright (c) Materials Virtual Lab. # Distributed under the terms of the BSD License. -""" -Functions for combining many ComputedEntry objects into MigrationGraph objects. -""" +"""Functions for combining many ComputedEntry objects into MigrationGraph objects.""" + from __future__ import annotations import logging @@ -82,7 +81,9 @@

    Source code for pymatgen.analysis.diffusion.utils.parse_entries

    logger.setLevel(logging.INFO) -
    [docs]def process_entries( +
    +[docs] +def process_entries( base_entries: list[ComputedStructureEntry], inserted_entries: list[ComputedStructureEntry], migrating_ion_entry: ComputedEntry, @@ -92,25 +93,28 @@

    Source code for pymatgen.analysis.diffusion.utils.parse_entries

    angle_tol: float = 5.0, ) -> list[dict]: """ - Process a list of base entries and inserted entries to create input for migration path analysis Each inserted - entries can be mapped to more than one base entry. Return groups of structures decorated with the working ions - to indicate the metastable sites, ranked by the number of working ion sites (highest number is the first). + Process a list of base entries and inserted entries to create input for migration + path analysis Each inserted entries can be mapped to more than one base entry. + Return groups of structures decorated with the working ions to indicate the + metastable sites, ranked by the number of working ion sites (highest number is the + first). Args: - base_entries: Full list of base entires - inserted_entries: Full list of inserted entires - migrating_ion_entry: The metallic phase of the working ion, used to calculate insertion energies. + base_entries: Full list of base entries + inserted_entries: Full list of inserted entries + migrating_ion_entry: The metallic phase of the working ion, used to calculate + insertion energies. symprec: symmetry parameter for SpacegroupAnalyzer ltol: Fractional length tolerance for StructureMatcher stol: Site tolerance for StructureMatcher - angle_tol: Angle tolerance fro StructureMatcher and SpacegroupAnalyzer + angle_tol: Angle tolerance for StructureMatcher and SpacegroupAnalyzer only_single_cat: If True, only use single cation insertions so the site energy is more accurate use_strict_tol: halve the ltol and stol parameter for more strict matching. Returns: - list: List of dictionaries that each contain - {'base' : Structure Object of host, 'inserted' : Structure object of all inserted sites} + list: List of dictionaries that each contain {'base': Structure Object of host, + 'inserted': Structure object of all inserted sites} """ working_ion = str(migrating_ion_entry.composition.elements[0]) sm_no_wion = StructureMatcher( @@ -124,23 +128,16 @@

    Source code for pymatgen.analysis.diffusion.utils.parse_entries

    # grouping of inserted structures with base structures all_sga = [ - SpacegroupAnalyzer( - itr_base_ent.structure, symprec=symprec, angle_tolerance=angle_tol - ) + SpacegroupAnalyzer(itr_base_ent.structure, symprec=symprec, angle_tolerance=angle_tol) for itr_base_ent in base_entries ] entries_with_num_symmetry_ops = [ - (ient, len(all_sga[itr_ent].get_space_group_operations())) - for itr_ent, ient in enumerate(base_entries) + (ient, len(all_sga[itr_ent].get_space_group_operations())) for itr_ent, ient in enumerate(base_entries) ] - entries_with_num_symmetry_ops = sorted( - entries_with_num_symmetry_ops, key=lambda x: x[0].energy_per_atom - ) - entries_with_num_symmetry_ops = sorted( - entries_with_num_symmetry_ops, key=lambda x: x[1], reverse=True - ) + entries_with_num_symmetry_ops = sorted(entries_with_num_symmetry_ops, key=lambda x: x[0].energy_per_atom) + entries_with_num_symmetry_ops = sorted(entries_with_num_symmetry_ops, key=lambda x: x[1], reverse=True) entries_with_num_symmetry_ops = sorted( entries_with_num_symmetry_ops, key=lambda x: x[0].structure.num_sites, @@ -170,14 +167,13 @@

    Source code for pymatgen.analysis.diffusion.utils.parse_entries

    struct_wo_sym_ops = _filter_and_merge(mapped_cell.get_sorted_structure()) if struct_wo_sym_ops is None: logger.warning( - f"No meta-stable sites were found during symmetry mapping for base {base_ent.entry_id}." - "Consider playing with the various tolerances (ltol, stol, angle_tol)." + f"No meta-stable sites were found during symmetry mapping for base " + f"{base_ent.entry_id}. Consider playing with the various tolerances " + "(ltol, stol, angle_tol)." ) continue - struct_sym = get_sym_migration_ion_sites( - base_ent.structure, struct_wo_sym_ops, working_ion - ) + struct_sym = get_sym_migration_ion_sites(base_ent.structure, struct_wo_sym_ops, working_ion) results.append( { "base": base_ent.structure, @@ -186,14 +182,13 @@

    Source code for pymatgen.analysis.diffusion.utils.parse_entries

    ) results = filter(lambda x: len(x["inserted"]) != 0, results) # type: ignore - return sorted( - results, key=lambda x: x["inserted"].composition[working_ion], reverse=True - )
    + return sorted(results, key=lambda x: x["inserted"].composition[working_ion], reverse=True)
    + -
    [docs]def get_matched_structure_mapping( - base: Structure, inserted: Structure, sm: StructureMatcher -): +
    +[docs] +def get_matched_structure_mapping(base: Structure, inserted: Structure, sm: StructureMatcher): """ Get the mapping from the inserted structure onto the base structure, assuming that the inserted structure sans the working ion is some kind @@ -211,9 +206,7 @@

    Source code for pymatgen.analysis.diffusion.utils.parse_entries

    s1, s2 = sm._process_species([base, inserted]) fu, _ = sm._get_supercell_size(s1, s2) try: - val, dist, sc_m, total_t, mapping = sm._strict_match( - s1, s2, fu=fu, s1_supercell=True - ) + val, dist, sc_m, total_t, mapping = sm._strict_match(s1, s2, fu=fu, s1_supercell=True) except TypeError: return None sc = s1 * sc_m @@ -221,17 +214,21 @@

    Source code for pymatgen.analysis.diffusion.utils.parse_entries

    return sc_m, total_t
    -
    [docs]def get_inserted_on_base( + +
    +[docs] +def get_inserted_on_base( base_ent: ComputedStructureEntry, inserted_ent: ComputedStructureEntry, migrating_ion_entry: ComputedEntry, sm: StructureMatcher, ) -> Structure | None: """ - For a structured-matched pair of base and inserted entries, map all of the Li positions in the inserted entry to - positions in the base entry and return a new structure where all the sites are decorated with the insertion - energy. Since the calculation of the insertion energy needs the energy of the metallic working ion, - a `migrating_ion_entry` must also be provided. + For a structured-matched pair of base and inserted entries, map all of the Li + positions in the inserted entry to positions in the base entry and return a new + structure where all the sites are decorated with the insertion energy. Since the + calculation of the insertion energy needs the energy of the metallic working ion, a + `migrating_ion_entry` must also be provided. Args: base_ent: The entry for the host structure @@ -242,9 +239,7 @@

    Source code for pymatgen.analysis.diffusion.utils.parse_entries

    Returns: List of entries for each working ion in the list of """ - mapped_result = get_matched_structure_mapping( - base_ent.structure, inserted_ent.structure, sm - ) + mapped_result = get_matched_structure_mapping(base_ent.structure, inserted_ent.structure, sm) if mapped_result is None: return None @@ -267,7 +262,10 @@

    Source code for pymatgen.analysis.diffusion.utils.parse_entries

    return new_struct
    -
    [docs]def get_sym_migration_ion_sites( + +
    +[docs] +def get_sym_migration_ion_sites( base_struct: Structure, inserted_struct: Structure, migrating_ion: str, @@ -275,13 +273,14 @@

    Source code for pymatgen.analysis.diffusion.utils.parse_entries

    angle_tol: float = 5.0, ) -> Structure: """ - Take one inserted entry then map out all symmetry equivalent copies of the cation sites in base entry. - Each site is decorated with the insertion energy calculated from the base and inserted entries. + Take one inserted entry then map out all symmetry equivalent copies of the cation + sites in base entry. Each site is decorated with the insertion energy calculated + from the base and inserted entries. Args: - inserted_entry: entry that contains cation - base_struct_entry: the entry containing the base structure - migrating_ion_entry: the name of the migrating species + base_struct: the base structure. + inserted_struct: inserted structure. + migrating_ion: Ion that migrates. symprec: the symprec tolerance for the space group analysis angle_tol: the angle tolerance for the space group analysis @@ -302,7 +301,7 @@

    Source code for pymatgen.analysis.diffusion.utils.parse_entries

    sym_migration_struct = Structure.from_sites(sym_migration_ion_sites) for op in sa.get_space_group_operations(): struct_tmp = sym_migration_struct.copy() - struct_tmp.apply_operation(symmop=op, fractional=True) + struct_tmp.apply_operation(op, fractional=True) for isite in struct_tmp.sites: if isite.species_string == wi_: sym_migration_struct.insert( @@ -314,24 +313,22 @@

    Source code for pymatgen.analysis.diffusion.utils.parse_entries

    # must clean up as you go or the number of sites explodes if len(sym_migration_struct) > 1: - sym_migration_struct.merge_sites( - tol=SITE_MERGE_R, mode="average" - ) # keeps removing duplicates + sym_migration_struct.merge_sites(tol=SITE_MERGE_R, mode="average") # keeps removing duplicates return sym_migration_struct
    + def _filter_and_merge(inserted_structure: Structure) -> Structure | None: """ - For each site in a structure, split it into a migration sublattice where all sites contain the "insertion_energy" - property and a host lattice. For each site in the migration sublattice if there is collision with the host sites, - remove the migration site. Finally merge all the migration sites. + For each site in a structure, split it into a migration sublattice where all sites + contain the "insertion_energy" property and a host lattice. For each site in the + migration sublattice if there is collision with the host sites, remove the migration + site. Finally merge all the migration sites. """ migration_sites = [] base_sites = [] for i_site in inserted_structure: - if "insertion_energy" in i_site.properties and isinstance( - i_site.properties["insertion_energy"], float - ): + if "insertion_energy" in i_site.properties and isinstance(i_site.properties["insertion_energy"], float): migration_sites.append(i_site) else: base_sites.append(i_site) @@ -350,7 +347,9 @@

    Source code for pymatgen.analysis.diffusion.utils.parse_entries

    return res -
    [docs]def get_insertion_energy( +
    +[docs] +def get_insertion_energy( base_entry: ComputedStructureEntry, inserted_entry: ComputedStructureEntry, migrating_ion_entry: ComputedEntry, @@ -362,9 +361,11 @@

    Source code for pymatgen.analysis.diffusion.utils.parse_entries

    inserted_entry: The entry for the inserted structure migrating_ion_entry: The entry for the metallic phase of the working ion Returns: - The insertion energy defined as (E[inserted] - (E[Base] + n * E[working_ion]))/(n) + float: insertion energy defined as + (E[inserted] - (E[Base] + n * E[working_ion])) / n Where n is the number of working ions and E[inserted]. - Additionally, and E[base] and E[inserted] are for structures of the same size (sans working ion) + Additionally, and E[base] and E[inserted] are for structures of the same size + (sans working ion). """ wi_ = str(migrating_ion_entry.composition.elements[0]) comp_inserted_no_wi = inserted_entry.composition.as_dict() @@ -378,6 +379,7 @@

    Source code for pymatgen.analysis.diffusion.utils.parse_entries

    n_wi = inserted_entry.composition[wi_] return (e_insert - (e_base + n_wi * e_wi)) / n_wi
    +
    @@ -392,7 +394,7 @@

    Source code for pymatgen.analysis.diffusion.utils.parse_entries

    - +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/utils/supercells.html b/docs/_modules/pymatgen/analysis/diffusion/utils/supercells.html index a8a7a25..8a2a506 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/utils/supercells.html +++ b/docs/_modules/pymatgen/analysis/diffusion/utils/supercells.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.utils.supercells — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.utils.supercells — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -46,11 +46,8 @@

    Navigation

    Source code for pymatgen.analysis.diffusion.utils.supercells

    -# Copyright (c) Materials Virtual Lab.
    -# Distributed under the terms of the BSD License.
    -"""
    -Functions for creating supercells for NEB calculations
    -"""
    +"""Functions for creating supercells for NEB calculations."""
    +
     from __future__ import annotations
     
     import logging
    @@ -60,9 +57,7 @@ 

    Source code for pymatgen.analysis.diffusion.utils.supercells

    # from ase.build import find_optimal_cell_shape, get_deviation_from_optimal_cell_shape # from pymatgen.io.ase import AseAtomsAdaptor from pymatgen.core import PeriodicSite, Structure -from pymatgen.transformations.advanced_transformations import ( - CubicSupercellTransformation, -) +from pymatgen.transformations.advanced_transformations import CubicSupercellTransformation __author__ = "Jimmy Shen" __copyright__ = "Copyright 2019, The Materials Project" @@ -72,10 +67,12 @@

    Source code for pymatgen.analysis.diffusion.utils.supercells

    logger = logging.getLogger(__name__) -# Helper functions for MigraionHop.get_sc_struture +# Helper functions for MigrationHop.get_sc_struture -
    [docs]def get_sc_fromstruct( +
    +[docs] +def get_sc_fromstruct( base_struct: Structure, min_atoms: int = 80, max_atoms: int = 240, @@ -105,6 +102,7 @@

    Source code for pymatgen.analysis.diffusion.utils.supercells

    return struct_sc
    + def _get_sc_from_struct_pmg( base_struct: Structure, min_atoms: int = 80, @@ -112,7 +110,7 @@

    Source code for pymatgen.analysis.diffusion.utils.supercells

    min_length: float = 10.0, ) -> list[list[int]] | None: """ - Generate the best supercell from a unitcell using the pymatgen CubicSupercellTransformation + Generate the best supercell from a unitcell using the pymatgen CubicSupercellTransformation. Args: base_struct: structure of the unit cell @@ -124,9 +122,7 @@

    Source code for pymatgen.analysis.diffusion.utils.supercells

    3x3 matrix: supercell matrix """ - cst = CubicSupercellTransformation( - min_atoms=min_atoms, max_atoms=max_atoms, min_length=min_length - ) + cst = CubicSupercellTransformation(min_atoms=min_atoms, max_atoms=max_atoms, min_length=min_length) try: cst.apply_transformation(base_struct) @@ -135,54 +131,9 @@

    Source code for pymatgen.analysis.diffusion.utils.supercells

    return cst.transformation_matrix -# Something is broken with how ASE generates supercells -# now many calls to `find_optimal_cell_shape` results in -# `Failed to find a transformation matrix` -# So remove this funtionality now in favour of decreasing the max_length -# -# def _get_sc_from_struct_ase( -# base_struct: Structure, min_atoms: int=80, max_atoms: int=240 -# ) -> List[List[int]]: -# """generate the best supercell from a unitcell using ASE's method, is slower but more exhaustive -# -# Args: -# base_struct (pymatgen.Structure): unit cell -# min_atoms (int, optional): Minimum number of atoms in the desired supercell. Defaults to 80. -# -# Returns: -# 3x3 matrix: supercell matrix -# """ -# -# num_cells_min = int(np.ceil(min_atoms / base_struct.num_sites)) -# num_cells_max = int(np.ceil(max_atoms / base_struct.num_sites)) -# -# atoms = AseAtomsAdaptor().get_atoms(base_struct) -# res = [] -# for icell in range(num_cells_min, num_cells_max): -# if icell % 2 != 0 and icell % 3 != 0: -# continue # cells with many factors are more likely to be square -# logger.info(f"Getting cell shape {icell} x unit cell") -# sc_mat = find_optimal_cell_shape(atoms.cell, icell, "sc") -# if sc_mat is None: -# continue -# deviation = get_deviation_from_optimal_cell_shape(np.dot(sc_mat, atoms.cell)) -# dd = {"deviation": deviation, "P1": sc_mat} -# # base_struct_sc.to('poscar', f'/Users/lik/Desktop/enpoints_{base_struct_sc.num_sites}.vasp') -# res.append(dd) -# if deviation < 0.3: -# logger.debug("Found good cell") -# return sc_mat -# -# else: -# best_case = min(res, key=lambda x: x["deviation"]) -# logger.warning( -# f"Could not find case with deviation from cubic was less than 0.3 using the ASE cubic supercell finder \ -# \nThe best one had a deviation of {best_case['deviation']}" -# ) -# return best_case["P1"] - - -
    [docs]def get_start_end_structures( +
    +[docs] +def get_start_end_structures( isite: PeriodicSite, esite: PeriodicSite, base_struct: Structure, @@ -195,10 +146,14 @@

    Source code for pymatgen.analysis.diffusion.utils.supercells

    Obtain the starting and terminating structures in a supercell for NEB calculations. Args: + isite: Initial site index. + esite: End site index. hop: object presenting the migration event base_struct: unit cell representation of the structure sc_mat: supercell transformation to create the simulation cell for the NEB calc - tol: toleranace for identifying isite/esite within base_struct + vac_mode: Vacuum mode. + debug: debug mode. + tol: toleranace for identifying isite/esite within base_struct. Returns: initial structure, final structure, empty structure all in the supercell @@ -240,22 +195,13 @@

    Source code for pymatgen.analysis.diffusion.utils.supercells

    if debug: icart = base_sc.lattice.get_cartesian_coords(ipos_sc) ecart = base_sc.lattice.get_cartesian_coords(epos_sc) - assert ( - abs( - np.linalg.norm(icart - ecart) - - np.linalg.norm(isite.coords - esite.coords) - ) - < 1e-5 - ) - i_ref_ = PeriodicSite( - species=esite.species_string, coords=ipos_sc, lattice=base_sc.lattice - ) - e_ref_ = PeriodicSite( - species=esite.species_string, coords=epos_sc, lattice=base_sc.lattice - ) + assert abs(np.linalg.norm(icart - ecart) - np.linalg.norm(isite.coords - esite.coords)) < 1e-5 + i_ref_ = PeriodicSite(species=esite.species_string, coords=ipos_sc, lattice=base_sc.lattice) + e_ref_ = PeriodicSite(species=esite.species_string, coords=epos_sc, lattice=base_sc.lattice) start_struct = remove_site_at_pos(start_struct, e_ref_, tol) end_struct = remove_site_at_pos(end_struct, i_ref_, tol) return start_struct, end_struct, base_sc
    +
    @@ -270,7 +216,7 @@

    Source code for pymatgen.analysis.diffusion.utils.supercells

    - +
    diff --git a/docs/_modules/pymatgen/analysis/diffusion/utils/tests/test_edge_data_from_sc.html b/docs/_modules/pymatgen/analysis/diffusion/utils/tests/test_edge_data_from_sc.html index 26238d4..f85ed3b 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/utils/tests/test_edge_data_from_sc.html +++ b/docs/_modules/pymatgen/analysis/diffusion/utils/tests/test_edge_data_from_sc.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -56,11 +56,7 @@

    Source code for pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_ import pytest from pymatgen.analysis.diffusion.neb.full_path_mapper import MigrationGraph -from pymatgen.analysis.diffusion.utils.edge_data_from_sc import ( - add_edge_data_from_sc, - get_uc_pos, - get_unique_hop, -) +from pymatgen.analysis.diffusion.utils.edge_data_from_sc import add_edge_data_from_sc, get_uc_pos, get_unique_hop from pymatgen.analysis.structure_matcher import StructureMatcher from pymatgen.core.structure import PeriodicSite, Structure @@ -86,7 +82,9 @@

    Source code for pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_ ) -
    [docs]def test_add_edge_data_from_sc(): +
    +[docs] +def test_add_edge_data_from_sc(): errors = [] test_key = "test_key" @@ -113,10 +111,13 @@

    Source code for pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_ if not all(i == hop_labels[0] for i in hop_labels): errors.append("Not all data are added to the same unique hop") - assert not errors, "errors occured:\n" + "\n".join(errors)

    + assert not errors, "errors occurred:\n" + "\n".join(errors)
    + -
    [docs]def test_get_uc_pos(): +
    +[docs] +def test_get_uc_pos(): errors = [] # set up parameters to initiate get_uc_pos @@ -159,10 +160,13 @@

    Source code for pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_ if not test_p2.__eq__(p2): errors.append("Ending site does not match") - assert not errors, "errors occured:\n" + "\n".join(errors)

    + assert not errors, "errors occurred:\n" + "\n".join(errors)
    -
    [docs]def test_get_unique_hop_host(): + +
    +[docs] +def test_get_unique_hop_host(): results = get_unique_hop( mg_Mg, mg_input_struct_i, @@ -173,8 +177,11 @@

    Source code for pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_ assert results[0] == 2

    -
    [docs]def test_get_unique_host_nonhost(): - with pytest.raises(Exception) as exc_info: + +
    +[docs] +def test_get_unique_host_nonhost(): + with pytest.raises(RuntimeError) as exc_info: get_unique_hop( mg_Mg, mg_input_struct_i, @@ -182,8 +189,12 @@

    Source code for pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_ mg_input_struct_e[0], use_host_sg=False, ) - expected_exception = "No symmetrically equivalent site was found for [0.53593472 2.8352428 4.54752366] Mg" - assert exc_info.value.args[0] == expected_exception

    + + assert exc_info.value.args[0] == ( + "No symmetrically equivalent site was found for [0.53593472 " + "2.8352428 4.54752366] Mg" + )
    +
    @@ -198,7 +209,7 @@

    Source code for pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_ - +

    diff --git a/docs/_modules/pymatgen/analysis/diffusion/utils/tests/test_parse_entries.html b/docs/_modules/pymatgen/analysis/diffusion/utils/tests/test_parse_entries.html index 56eb80b..f655f4e 100644 --- a/docs/_modules/pymatgen/analysis/diffusion/utils/tests/test_parse_entries.html +++ b/docs/_modules/pymatgen/analysis/diffusion/utils/tests/test_parse_entries.html @@ -1,15 +1,15 @@ - + - pymatgen.analysis.diffusion.utils.tests.test_parse_entries — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.utils.tests.test_parse_entries — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -74,8 +74,12 @@

    Source code for pymatgen.analysis.diffusion.utils.tests.test_parse_entries__date__ = "April 10, 2019" -
    [docs]class ParseEntriesTest(unittest.TestCase): -
    [docs] def setUp(self): +
    +[docs] +class ParseEntriesTest(unittest.TestCase): +
    +[docs] + def setUp(self): d = loadfn(f"{dir_path}/parse_entry_test_vars.json") struct_uc = d["struct_uc"] self.li_ent = d["li_ent"] @@ -107,6 +111,7 @@

    Source code for pymatgen.analysis.diffusion.utils.tests.test_parse_entriesself.base, self.inserted_2Li, self.li_ent, self.sm )

    + def _is_valid_inserted_ent(self, mapped_struct): res = True for isite in mapped_struct.sites: @@ -118,7 +123,9 @@

    Source code for pymatgen.analysis.diffusion.utils.tests.test_parse_entriesreturn False return res -
    [docs] def test_get_inserted_on_base(self): +
    +[docs] + def test_get_inserted_on_base(self): mapped_struct = get_inserted_on_base( self.base, self.inserted_1Li1, self.li_ent, self.sm ) @@ -135,7 +142,10 @@

    Source code for pymatgen.analysis.diffusion.utils.tests.test_parse_entriesassert self._is_valid_inserted_ent(mapped_struct) assert mapped_struct[0].properties["insertion_energy"] == 4.0

    -
    [docs] def test_process_ents(self): + +
    +[docs] + def test_process_ents(self): base_2_ent = ComputedStructureEntry( structure=self.base.structure * [[1, 1, 0], [1, -1, 0], [0, 0, 2]], energy=self.base.energy * 4, @@ -150,7 +160,10 @@

    Source code for pymatgen.analysis.diffusion.utils.tests.test_parse_entriesif i_insert_site.species_string == "Li": assert i_insert_site.properties["insertion_energy"] == 4

    -
    [docs] def test_filter_and_merge(self): + +
    +[docs] + def test_filter_and_merge(self): combined_struct = Structure.from_sites( self.struct_inserted_1Li1.sites + self.struct_inserted_1Li2.sites @@ -161,7 +174,10 @@

    Source code for pymatgen.analysis.diffusion.utils.tests.test_parse_entriesif i_insert_site.species_string == "Li": assert i_insert_site.properties["insertion_energy"] in {4.5, 5.5}

    -
    [docs] def test_get_insertion_energy(self): + +
    +[docs] + def test_get_insertion_energy(self): insert_energy = get_insertion_energy(self.base, self.inserted_1Li1, self.li_ent) basex2_ = ComputedStructureEntry( structure=self.base.structure * [1, 1, 2], energy=self.base.energy * 2 @@ -172,7 +188,10 @@

    Source code for pymatgen.analysis.diffusion.utils.tests.test_parse_entriesinsert_energy = get_insertion_energy(self.base, self.inserted_2Li, self.li_ent) self.assertAlmostEqual(insert_energy, 4)

    -
    [docs] def test_get_all_sym_sites(self): + +
    +[docs] + def test_get_all_sym_sites(self): struct11 = get_sym_migration_ion_sites( self.base.structure, self.inserted_1Li1.structure, migrating_ion="Li" ) @@ -184,11 +203,9 @@

    Source code for pymatgen.analysis.diffusion.utils.tests.test_parse_entriesstruct22 = get_sym_migration_ion_sites( self.base.structure, self.inserted_2Li.structure, migrating_ion="Li" ) - assert struct22.composition["Li"] == 8

    - + assert struct22.composition["Li"] == 8
    +
    -if __name__ == "__main__": - unittest.main()
    @@ -203,7 +220,7 @@

    Source code for pymatgen.analysis.diffusion.utils.tests.test_parse_entries - +

    diff --git a/docs/_static/basic.css b/docs/_static/basic.css index cfc60b8..f316efc 100644 --- a/docs/_static/basic.css +++ b/docs/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -237,6 +237,10 @@ a.headerlink { visibility: hidden; } +a:visited { + color: #551A8B; +} + h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, diff --git a/docs/_static/doctools.js b/docs/_static/doctools.js index d06a71d..4d67807 100644 --- a/docs/_static/doctools.js +++ b/docs/_static/doctools.js @@ -4,7 +4,7 @@ * * Base JavaScript utilities for all Sphinx HTML documentation. * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/docs/_static/documentation_options.js b/docs/_static/documentation_options.js index a81e935..13e0e86 100644 --- a/docs/_static/documentation_options.js +++ b/docs/_static/documentation_options.js @@ -1,6 +1,5 @@ -var DOCUMENTATION_OPTIONS = { - URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '2023.8.15', +const DOCUMENTATION_OPTIONS = { + VERSION: '2024.6.10', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/_static/language_data.js b/docs/_static/language_data.js index 250f566..367b8ed 100644 --- a/docs/_static/language_data.js +++ b/docs/_static/language_data.js @@ -5,7 +5,7 @@ * This script contains the language-specific data used by searchtools.js, * namely the list of stopwords, stemmer, scorer and splitter. * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -13,7 +13,7 @@ var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; -/* Non-minified version is copied as a separate JS file, is available */ +/* Non-minified version is copied as a separate JS file, if available */ /** * Porter Stemmer diff --git a/docs/_static/searchtools.js b/docs/_static/searchtools.js index 97d56a7..92da3f8 100644 --- a/docs/_static/searchtools.js +++ b/docs/_static/searchtools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for the full-text search. * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -57,12 +57,12 @@ const _removeChildren = (element) => { const _escapeRegExp = (string) => string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -const _displayItem = (item, searchTerms) => { +const _displayItem = (item, searchTerms, highlightTerms) => { const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; - const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; const [docName, title, anchor, descr, score, _filename] = item; @@ -75,28 +75,35 @@ const _displayItem = (item, searchTerms) => { if (dirname.match(/\/index\/$/)) dirname = dirname.substring(0, dirname.length - 6); else if (dirname === "index/") dirname = ""; - requestUrl = docUrlRoot + dirname; + requestUrl = contentRoot + dirname; linkUrl = requestUrl; } else { // normal html builders - requestUrl = docUrlRoot + docName + docFileSuffix; + requestUrl = contentRoot + docName + docFileSuffix; linkUrl = docName + docLinkSuffix; } let linkEl = listItem.appendChild(document.createElement("a")); linkEl.href = linkUrl + anchor; linkEl.dataset.score = score; linkEl.innerHTML = title; - if (descr) + if (descr) { listItem.appendChild(document.createElement("span")).innerHTML = " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } else if (showSearchSummary) fetch(requestUrl) .then((responseData) => responseData.text()) .then((data) => { if (data) listItem.appendChild( - Search.makeSearchSummary(data, searchTerms) + Search.makeSearchSummary(data, searchTerms, anchor) ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); }); Search.output.appendChild(listItem); }; @@ -109,26 +116,43 @@ const _finishSearch = (resultCount) => { ); else Search.status.innerText = _( - `Search finished, found ${resultCount} page(s) matching the search query.` - ); + "Search finished, found ${resultCount} page(s) matching the search query." + ).replace('${resultCount}', resultCount); }; const _displayNextItem = ( results, resultCount, - searchTerms + searchTerms, + highlightTerms, ) => { // results left, load the summary and display it // this is intended to be dynamic (don't sub resultsCount) if (results.length) { - _displayItem(results.pop(), searchTerms); + _displayItem(results.pop(), searchTerms, highlightTerms); setTimeout( - () => _displayNextItem(results, resultCount, searchTerms), + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), 5 ); } // search finished, update title and status message else _finishSearch(resultCount); }; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; /** * Default splitQuery function. Can be overridden in ``sphinx.search`` with a @@ -152,13 +176,26 @@ const Search = { _queued_query: null, _pulse_status: -1, - htmlToText: (htmlString) => { + htmlToText: (htmlString, anchor) => { const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); - htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + for (const removalQuery of [".headerlinks", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content const docContent = htmlElement.querySelector('[role="main"]'); - if (docContent !== undefined) return docContent.textContent; + if (docContent) return docContent.textContent; + console.warn( - "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." ); return ""; }, @@ -231,16 +268,7 @@ const Search = { else Search.deferQuery(query); }, - /** - * execute search (requires search index to be loaded) - */ - query: (query) => { - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const titles = Search._index.titles; - const allTitles = Search._index.alltitles; - const indexEntries = Search._index.indexentries; - + _parseQuery: (query) => { // stem the search terms and add them to the correct list const stemmer = new Stemmer(); const searchTerms = new Set(); @@ -276,16 +304,32 @@ const Search = { // console.info("required: ", [...searchTerms]); // console.info("excluded: ", [...excludedTerms]); - // array of [docname, title, anchor, descr, score, filename] - let results = []; + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename]. + const normalResults = []; + const nonMainIndexResults = []; + _removeChildren(document.getElementById("search-progress")); - const queryLower = query.toLowerCase(); + const queryLower = query.toLowerCase().trim(); for (const [title, foundTitles] of Object.entries(allTitles)) { - if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { for (const [file, id] of foundTitles) { let score = Math.round(100 * queryLower.length / title.length) - results.push([ + normalResults.push([ docNames[file], titles[file] !== title ? `${titles[file]} > ${title}` : title, id !== null ? "#" + id : "", @@ -300,46 +344,47 @@ const Search = { // search for explicit entries in index directives for (const [entry, foundEntries] of Object.entries(indexEntries)) { if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { - for (const [file, id] of foundEntries) { - let score = Math.round(100 * queryLower.length / entry.length) - results.push([ + for (const [file, id, isMain] of foundEntries) { + const score = Math.round(100 * queryLower.length / entry.length); + const result = [ docNames[file], titles[file], id ? "#" + id : "", null, score, filenames[file], - ]); + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } } } } // lookup as object objectTerms.forEach((term) => - results.push(...Search.performObjectSearch(term, objectTerms)) + normalResults.push(...Search.performObjectSearch(term, objectTerms)) ); // lookup as search terms in fulltext - results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); // let the scorer override scores with a custom scoring function - if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); - - // now sort the results by score (in opposite order of appearance, since the - // display function below uses pop() to retrieve items) and then - // alphabetically - results.sort((a, b) => { - const leftScore = a[4]; - const rightScore = b[4]; - if (leftScore === rightScore) { - // same score: sort alphabetically - const leftTitle = a[1].toLowerCase(); - const rightTitle = b[1].toLowerCase(); - if (leftTitle === rightTitle) return 0; - return leftTitle > rightTitle ? -1 : 1; // inverted is intentional - } - return leftScore > rightScore ? 1 : -1; - }); + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; // remove duplicate search results // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept @@ -353,14 +398,19 @@ const Search = { return acc; }, []); - results = results.reverse(); + return results.reverse(); + }, + + query: (query) => { + const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); + const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); // for debugging //Search.lastresults = results.slice(); // a copy // console.info("search results:", Search.lastresults); // print the results - _displayNextItem(results, results.length, searchTerms); + _displayNextItem(results, results.length, searchTerms, highlightTerms); }, /** @@ -458,14 +508,18 @@ const Search = { // add support for partial matches if (word.length > 2) { const escapedWord = _escapeRegExp(word); - Object.keys(terms).forEach((term) => { - if (term.match(escapedWord) && !terms[word]) - arr.push({ files: terms[term], score: Scorer.partialTerm }); - }); - Object.keys(titleTerms).forEach((term) => { - if (term.match(escapedWord) && !titleTerms[word]) - arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); - }); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } } // no match but word was a required one @@ -488,9 +542,8 @@ const Search = { // create the mapping files.forEach((file) => { - if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) - fileMap.get(file).push(word); - else fileMap.set(file, [word]); + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); }); }); @@ -541,8 +594,8 @@ const Search = { * search summary for a given text. keywords is a list * of stemmed words. */ - makeSearchSummary: (htmlText, keywords) => { - const text = Search.htmlToText(htmlText); + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); if (text === "") return null; const textLower = text.toLowerCase(); diff --git a/docs/_static/sphinx_highlight.js b/docs/_static/sphinx_highlight.js index aae669d..8a96c69 100644 --- a/docs/_static/sphinx_highlight.js +++ b/docs/_static/sphinx_highlight.js @@ -29,14 +29,19 @@ const _highlight = (node, addItems, text, className) => { } span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); parent.insertBefore( span, parent.insertBefore( - document.createTextNode(val.substr(pos + text.length)), + rest, node.nextSibling ) ); node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); if (isInSVG) { const rect = document.createElementNS( @@ -140,5 +145,10 @@ const SphinxHighlight = { }, }; -_ready(SphinxHighlight.highlightSearchWords); -_ready(SphinxHighlight.initEscapeListener); +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/docs/_themes/README.html b/docs/_themes/README.html index c3e1b19..7cf396f 100644 --- a/docs/_themes/README.html +++ b/docs/_themes/README.html @@ -1,16 +1,16 @@ - + - + - krTheme Sphinx Style — pymatgen-diffusion 2023.8.15 documentation + krTheme Sphinx Style — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

    Navigation

  • modules |
  • - +
    @@ -46,7 +46,7 @@

    Navigation

    -

    krTheme Sphinx Style

    +

    krTheme Sphinx Style

    This repository contains sphinx styles Kenneth Reitz uses in most of his projects. It is a drivative of Mitsuhiko’s themes for Flask and Flask related projects. To use this style in your Sphinx documentation, follow @@ -89,7 +89,7 @@

    This Page

    rel="nofollow">Show Source
    - +

    diff --git a/docs/change_log.html b/docs/change_log.html index 1fb3755..7cc99c2 100644 --- a/docs/change_log.html +++ b/docs/change_log.html @@ -1,16 +1,16 @@ - + - + - Change Log — pymatgen-diffusion 2023.8.15 documentation + Change Log — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

    Navigation

  • modules |
  • - +
    @@ -46,28 +46,28 @@

    Navigation

    -

    Change Log

    +

    Change Log

    -

    v2023.8.15

    +

    v2023.8.15

    • Complete migration of pymatgen.analysis.pathfinder over to pymatgen-analysis.diffusion.

    -

    v2022.4.22

    +

    v2022.4.22

    • Make MigrationHop MSONAble. (@acrutt)

    -

    v2021.4.29

    +

    v2021.4.29

    • Fixed msite calc order (@hmlli)

    • Removed magmom (@jmmshn)

    -

    v2021.3.6

    +

    v2021.3.6

    • Fix for bad release due to error in MANIFEST.in.

    • DiffusionAnalyzer has been migration from pymatgen to pymatgen.analysis.diffusion.analyzer for a more @@ -75,26 +75,26 @@

      v2021.3.6 -

      v2021.3.5

      +

      v2021.3.5

      • pymatgen-diffusion is now released as a namespace package pymatgen-analysis-diffusion on PyPI. It should be imported via pymatgen.analysis.diffusion instead pymatgen_diffusion.

    -

    v2019.2.28

    +

    v2019.2.28

    • Py3k cleanup.

    -

    v2018.1.4

    +

    v2018.1.4

    • Compatibility with pymatgen v2018+.

    -

    v0.3.0

    +

    v0.3.0

    • NEB tools, including an implementation of an IDPP solver.

    @@ -136,7 +136,7 @@

    This Page

    rel="nofollow">Show Source
    - +
    diff --git a/docs/doctrees/_themes/README.doctree b/docs/doctrees/_themes/README.doctree index b0bddb0f9273cd6cdd8d2b976854a35556ef0ce2..11c515c346ad2b1c6596e79eeec167a30d594d06 100644 GIT binary patch delta 25 hcmcbldqS6`fpzNMjVvelH(%qQ&Bz$Ixkxa96#$1d34H(n delta 36 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

    D%pp#zmPY1Kj)k)OMb?O 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�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

    C|9iT3ET_K;dee+hpI8~vhjjngq~y+ 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ⅅ_cW=CR{X+q>qjICp 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 N5i0M0I3BMz{tNRu^WOjf literal 2135639 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 }Lq<38^R!C&QmcQN$t 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

    F*kR-tN`$_f#1}?KALm)Vm%&p%hLN zzHXlN+U#pD``XXGZe(8{Mv40%d^EkA#gzk1s-}aSgZDfVE|eZ`{qlf2z7JrCe9ur7 z9(>q0`tkFiMU^H<$L#H#8P9=+Nq#%`9o`jLX1PDdgqJWA2rm%e*NCP0W%yV*1s|*N z;|0_3F^C@rXW-)r{1|D%$9eei7cKbsEBrWWFMKS*kLG^(*oPkzH^Rqt_;EgJ;Vt-q z8S)F8K1^ z03SDl#oj*ay#;<^v7`^^=pIhmefkwOcOPWxVktwYaR}~5+yU0wr<8fdcair3zd%PZ{d~b-?gwF*H z6`U>mT8*M8>Ve^O85wSAgUjs`UIV$0l#!?NO2rI245{c3pgbt0v_@j zQ$h_Osi6EBP9>c2YO!`5)CsG(=QwR4 z;_Vs}^3dcWQ%i~tIOg>c1O!vfOgdmWG;FB@=KDI}pHT;Jsb8)tgNP0|Dq$e5cMs`V z?_T&C_3mST+)sZ5RBexUUf}z#v7RSC^nKQQ0xWav4vQaYZsfh6sdqZ3r|HReZA%E=lNqL<%r&J*g1J%BWGE(xp3^#M7=Q$ zp_YjWFkkf=FS+bCoje&ZzvMq!HvZ6_N(*Z8qe+IN+G@+%`n5?1Gz@!*#s0!yR-ciqn-U zwM55?DV;z`PjKUEZewyk3}8!bPo+_>VSEr^+fk~xwG#C5!u&AgQw^VSb|F`;S4M`{ z6o%KVd(rCBTGw5>Zrzz@dbymBEE$0kLL5ZMT0qE!70`mtHaK#qQ~{=MIy+kJ@_yX2 z2cyj4C@*rit=$1*ycE2Q3OK(z@F+BAD`936!wih;GB|XjQ7OXtXqym~;Pz4@{^jOS zZtWQi>N8gjpH*-IxYrJ^E={jpvu@p*b^Co6jbfkwOaI?J`ZG_1>4)8*Fq-2gE=45E zU?(b`koH-m(LVjDT)c6!Z@2sjl#{1GD{hoaW8|Tz@e9*DSBP|!);$Q+yFmu%cpM*gbV|N-fM-gY!tfcW6o`nqe;ggPLhM&{*I_RD9h85GreNgy#x>6gf zk2g20TLYSO&*T^#Eyuy5d8>EWyYc*B*LxLSs7VF<6gASj|=@B4YSwfK(=RH$-9WyyI~6 zPGiK0J1^j=!%^&9W%jlMvon;ms0rUEocI?NWPGc?$oR$_AY-{? z)wLLjeTdMa+);4z%l_i#7juA{Wmr0aoE$A?Vjf`%M!c$E<@i4YJx#&J^wBqi^ueb< z^ZiyZpgXz0r^ib45r!3UUBSv=f3b4v9AM=b)%EpJ6Rozo)PK-_g!vfavVxh7{l&}% z!i;B{*m=1HR0fHi9IDWIUS|bR?Xf_WfjVl~vDYgtpfX@D4po@F=C50$q6{x6*t*jKuI!A(!0j(%9UGdQ z`-q5gS57?XKg1YJzM)|4T^3j~;IVhw@z{qgpfcbw4po@P7GmT>#T&b%VC-`iuw~~n z26BJ->?umj$45kz%a;1j`HyfT8C+KI^-T+W8F1Lw?Ktd57El>*7>6ptVN@AeSu1Ac zV-<}3$^y3R9L7NIGlwZ*M4x?PILv>}e}r>ba9P3EQ~#*1Zu{}jJcMmb-LO+Epfcbv z4wW5;4O_sLox>Q&{pGM{aTbY*O#8ePWw(>!Uh*GjtQY@?!iK+Rfm8!UccC2{?y`W& zfDJiRVK!VuYXK?>`85S+6Bf{AXG8{ce;M)EApXggL3~_9xi2T4^dI6*n{-3L+AS7X zGvKrv?KthV7El>*8iy*(Y3a(Z-(vw=c0OYu_mt1<8q;jo>%Lae>+qIINVR;y45p#fH2u%m<6?9fRx7qQH90V1jj?2-e!ro}Zha_wG6lTAGEA z_)1RRo8ea4#KV>FENls&!s-Y$+lcoN@*n>BYF0g+e)A!S66w-95nIvQiwy(;NpM1R zTk7(WJg*fOKrRj(KsVwa>o{`l%ckqK*8YOmtk(*c?YMjtvuv;RRSsWJUBX{e=hlxW zh)=i{b0>9|-UEOuX{pcqDt04RB3kN$se3tN5IDcmUES_|^Drr9!r^|cb z1xAK1Lw{z0Ta{Pk4e#E+LSvmJz}J*R-{C9Raiv}%le{(yWx@~+VjwE!OicB89L$L^ z^z`fQ)483PoN=VB05gmu!9BB#VXf)`|A3a3WqH&u(xCZr%X{KQBp z?J>xWtTaQ3-sxXcjQFn=a5AU*1_M7b2_7NN4FYS=RvEv|$i^7+m^(A)O&twQu*TFuvs|j> zc$e6AG3fiJz+dvnN2HOLrY2z{1|{yY(Qksp%}Gqf4X$AxR6G*0G$iBW*>i`FTns+e z$oP;GNpn1TlF~{M4bwY-6H3!6E1177kA3Cbjs2LIvBR#iKnjo-ltfx}{E(9;a0165MUTvyijg)Qj#M^(kZd!nwop z(_^qaAz@kO@&q)?k0B}(@f@og=BiT}&pYQ1&nL&=`DGHGWo~Y^%421BPcFBkRd(P9 zB2>CBvueQ^#hr7lsUn`wRB1ZX#p@vNz3J9qXF$CMiTUVW)#|lX{z`kWxv8woiCFM1wi%Q^xWK=MKvoVz7LP zECw;uFjh*5vcNAF%0-L0zVskt z@QZVY!7VWu+^t}+ELkmy{nn{6ec6u9XlF@;d9s;^m}oKC*PdjIesk_Hx-|x)O$npT z>q$+bz62GC_A91N17fULB^Bu8$6;$Imtl%U;ZD&8YDYMjtk`slfu7~Mfs}1X+7Af? zG6jA#cND{nWQpujx^E22)w#z5kf|9o0f5wyKBzYZLR>Eg_joZ z-HEXm>7chwBk%y64{3Co5Ra+i}Z!s~!xs8Z3A zTLRgH`YZ4TI5Z67YzsU)oC*rLG+j4`f&Z~R#pX<-4WVT$zCl+eDo~VSFhqpI99Blv zJX=9~29Q;(>Gp0B)f3BbFOFNQiy`skMXP}& zx}n*gUn~$qqwq2m9|3YJas$jVNv)6X57on&vtAXnpVoi0U!_6&wa-^qLr)Bgoh^^pdz7Rlr-!Ky~E-pG}Ub7uyNF^yluSQtk!3s z9d>>;0}iZ}3w|VMO?WgUb0MYpYBV@w%x|PW(pdPyvB3Sn36hvLse?*lui25$%dPzATqTcWiH8=9!Pt`k} z+%~A;1r7leR8w`Bd_x&;t+(U-2>`@~cO5oNRf9yfBWNja{_&boJ_aQqk%|hkfS?_)vhIBfznsv#6qtr^OX)F^W zd^&O>9f)*`oP)RCFlzhkcc%R5&Uu*P((cifo7O zDTw|uGE0z8ntARa{}v{De~MP$K=(%0Pm3_e%&V z;_qKnFg-A~>p(nPBZy1%v2md6j?`qoP;2XDPMbk<#I5eBh~?g>i?0;SQZ#{bM-hu!Z^c5W1CNla zar5zJc6G3b@TV#PeoYzUD-wD$k=uwHa4U_`q=_t||0*0tdeN5&5ElJJ{A)$O`&*}* z@UcRpq_#5&`J^$8G7I@yjNeghHz!}IaRJAW9y;_8IdAQCA=D0`-X@g0#SKDYPgYc@ zO{>6tq_@m21p0%7NR2?_&Flib0I;QsGhI;_;F_nKY3_n7@F-NH5GX z^25TMh2XL-fEfUu28Dt9h6_PFR2sQB6L?w{IGIJ#JyHIbbsr{Ln#jmPba~eN%8!4&K1wD$DuTYzf=UN53L4G4qh_lf|ekS z!EX8shU^HDy|`Nm3RAFi=%`A5AqOXM%+wpWIEZ&B%VJ~za!}#4HMWKb(FM2+N{F3r zBT|GLh!)8Bhp@_93DZTg-!`xGZqeCD;Iae%|C>3e4x*rx^F(HL5 zgJQN$5wvU}mm8oI6-Y~gQNo0Y4Kx6qyf1hM5`7xQN$dfBXaK zZ&kc7VWXttHU2H$?12dbi4OUt+y-^)ZUQN#@cMTTSX#h{8KcG){*7x&c8g#txZ7b zFfaYi44g#o+Yqk>w*o$&ypDycpx@em>D$Mo@6E;cOf_8vxT$VJi2n^tV!qy5M3EeyMV z-z)5zOhP+LUGThFZM7U^Si22KeJ|E#JBuN)exkAu4sL@}irW+T)7uNim`nTs{ERc% zYF>vIPCw2`j=E2!kUjJMJxoFQC51LW>_2U8WrO^lEp6g*gL#`_U&n-OoC@SgQMS<~ zwg6gZ8|`von#GT25K+r3f{ht|SYZSCWd%4Gl}*`$xo=LHgTu5QcgMhL1tcW6Fqz$WW0p8a587!u!)yE<0nh~QEQUiraUX{d z@CFBu@lzUx{UorvYupVwfVpUU2ICEoD!&1~;n>qLSQ;Ipu*7O-9mFIs4;q3YIOX@# zuz7!c#|o~vz`mXqPsd&dC!s@BA;_bK*+0zkFNZ=ePH_gKwp7R{ggRf>MQ5_XK^VR) zkqrv2D#CK&8}&0vlSvw9Ju#0x78=%uV)14V=CLW(Y4Qm@S&UDFVo#;+hhEt#e^Fg6gTH&UsG7qv+j1_gZztlC|gw1=9;zlYO zH8)09u~mxUV)z)3F+pwJZbE?rP{iQ)wBXG4$$GtW&g1)PX`tpe`;*8TC?*B2Vl zB!^mT6vj^)P$mtw%a}1TYp@4l0~{Un?BuoC_52ZOXR8YfKl@2n6&$1;RrMR)wsY0S zt(R?vbMHYvjlP)u#hg;V3GQ18T?dLP*K}zW44qg1IqoD6Ky;rSd_53solVeTW+xN9 ztGDtk^w&Fyj2iugH?!-nvVx3V-py#|d4zWT8L^i}yW-94+I1mvkUC0sNg3hMZ_@W=q8KB( zbs02lwsAj;ZaoHvkzTjT=nw1GMC@yIYuC4SodM$gzp`v0%L>0H;W?AS|M8qF{LY_q zrK6nlhE=TU)o{iai@f3M@+-vSxRwAP^a-n$|+Ot_(v3?ZtATP5^DB5QbHOvi#L0qW|3SW zHA|P25$;OpE0dbNf<|c4L>4uB6%Hf4nw8NXRZyk`5cn-1DC>)Rkc_ziR z-k1Zjda9jo2d+6(go<%gp#lnKh1O|$&F8*Ns+^B`rchRgR*!-uosberc2Obe)5TIM z{+t?S-c$8P1tw zP&^Sdp;k}}rI&o-==fqs-h4<;xp_A4-2w=KS|$l~TRKZ%KO}BVn7sy`f8()GDB}gi zCX|CMweo{bezUK?H}XR^VH+jr`|{vy=iHh75UiSXYX!gbRw39z%`Ty~k2Fx=twUzb zXlu5}h(C2I!+FeTJAZX#l_p*iUEvv~h=@WCbcA^e-taefmuQb#5oFPR5~{5p(F zB4lU2po)Q{d0}*YEeT!TaY!+CASHlsn4GNJd8U?AA!QCS=F0WbtQULWZVXH458VAP z;Gg~-xJ$?BvNLyAAeQezZMzzNb&ih=Z?+Q%)NSlA-ehUzq99J`mFUQ1<9`&{0NUzK z>5Y^He%f}o)rQmfM!;`p=kY?6q7;fe>K;Z93n<}NYpwIFvfE;2yJq9n+0>i7Q3Uqk6XD}>{Pjri>rwaxN9)q(dQ~76!;bYtSECorg+wukBOHwbVmen;i(Yfel;{5xs)c za~^9?*I>e#U=No|&#Pe~<&Gik?o}V`VmaDf=fNYyzfrIo7^bjoTGDoJ0V}O7;@gM#SF-`u%yWv-?|DY%z z--mc!A}+wcjQ9}}O&MbrvFpJ0B=`~eh$C^yOBzu1vPt1T+IbFfyP{KS?r~6hA#evP z#-(Bn1AUOnS;3^hYQ2T4#Sl-V{nxo>eWC>?&Wihm%ZiwPKpAc-O`Rm*fy;6v z>tDtQ4=R`eMmQuTpdVJC$V?wm0{U~_%JR zJ&x0wdtVg3Cv8ve+*geW&zlf| zVN^)ksb-SR5rN^)*g_!!!>ZO-h0p>+Vv?=;6=BT_@i0y6d2iWUzy<0$$;PMHBzpvZ z(IlIGSxvG7AFxjo>>)b&NFNTDPfvoN`1zKT?4XylQ|!(IN655MjLaf1{@kdW9JH5* zMF?&q^WHmPiY13=&)&WMlonX*5oZNah(&%@oIB*Khw4nFv1Vm*tT|IGxg$>SptIuK zbEU%Xq)eAfZ>#%~b|Uiz?zbv`-UA_U<~cs7%%sBKin_Zxp)sA2`WxsYaSr<)cz}6` z2&-0ZV>MP}4*O?8W80#z9;wVo(f#nU%CdmNRGLZG71~`N#Ydo&G_=dIv=W1UZw5gK z=KJB0%)D|ikZ>$Ux)lz>NViB5;BRHvx0w&yB<%7EXufA*ms>J4rU|=rC&S?qc8OVB z6dc}V(I#e;0dGg#fZqcw&q>hb-N@yV!}@W9^wKnl29=%dKq>b zX#B*0%ORP8e_DZ0wMZI86s!BW!z*UspTve~27W32B1MC8b^00b!szN9 zyQC=EA0+f;K~^yb{vM6cq=_tZ;2+^Iq&YB(Zo(W`Mt^t?oQQqx9Ju>iC&sa+LW`s} zBKpu|TKWZJT12L$D5Yjj9&bWSOFw1{g_xFp1j!mG$&l8-bX98iAgzpnR{EG@Q-riqi+&>4%I9j#~K9}U9Y!W=?Kf~N8 z-BA^P(_hSdh*9=JSoD(PwDUHo(81pdy&krJYCH6i7#Q7xD{r(K#G&deRiT81*v>42YckP@m?n{nq>;7dlB3}x zA1#H>5je*=>ZhM-~LF$yq=cOpi1?(BT;6KawF6O?%e7h}BX~29hv17i91ylyi z$Dy)gzP%Q(WoJGHa(|g`sXy=bStuXT8uM4K^lvi$!V3yR{hERFS-?Pr zZ85*7z;~Yod>AUo0d}8S9xiKu&rXUxb<4bt8D`**MDV!{9IH851pEy0 z9xVbs3cq3(0p$>czY3_!D4_^O+%ljPD_~CecExoBZ$P(yE1Gvbwy9p*RNOA?o31((9E56Jxf!>C38j8$l~yKuwhyp7LtNK zvUYL!G04c3LI6`b-HY`(}Yv@pfV$rO&MfmO5J^UEGcAm z@2|I^!0CQgw7-m})Uj7v6{!68;*C4D;VI&*G$2%gg7WqaEb5OJhlg_TxpoMDLk)em zRVp}FLTkLZ3Oro{_?uV>Keu}TUsx@T0#4e)YimQ-3WdTo3B{wN*q|RnON<#Ve5?5s zG(nifs`^pTFfa#o9?2`mo4SdwHvokhB)0L6SqBfx0q1$URp;qx39VUhyjVBqW4K)n z8U=hDhP0C=(fzc30ecD|++@627Wwly3~7-cO>@E`KgVR4v}Z?1dyPuk^ZJD?nLWc< z2Z`KC486!Xc`AA$pr~wEb3tv{AwUpbSF{(u{tnPzibIivxrp0o zl56p6U`n$U3vTqpSuy`jO@xp65-K2^xz&b+(GR9Z;zS&iHh;6ebH`2QIA)Bz(iwm_7E20W*WCi6SC6v&VkoE%b}VEY`LyhN|n~^ zfzA^6la8tKR>Cp@Jq{%);gpA2?+6NZbl(3FVq={C?b$@H4Esuk~xU_-={Z-wN z)MF;yP&TGqX5H|*V4+T&334b8`wrak<*LWkkyZ{Bog!UV#Otq-FAdi*QaO?DBO+Jyv+G81JlQg?P&{xd!MNLi3ZfGbpn`lebV{JIC%GUn6>e2#8ugOf zY?2$YsaVT_V*@j1I46$JQDN%Zz`GRRs=&OuIF9GX^Rn^O9;LA5*kSS0ZV_h5aDF{Z zn_;JQ%bx|qth@$`;830(Lt~W*2j|;+;hcAjfFVF3VA!!C;&3FGu~$mGIzCLhu{b^l zFh|ie77GydOpClhsD8jJI#UZ{fo_IV>R@Kxpl#hSGsh~Y5Np6d9$*O&)1+uXu>sq@ zVN*Gc$C<8|T{?}gR?jutr73(AJUBX8Km_X|N$(wh9bM6~{zZiy7u>5?b|(6R^OEq~ zeoO4AQL%V)ZdB|udOJShp*=F;;5({b=ZlEr_c?NMz5jq022e%Xc`b^ z-Q!mG=SubInRW{*&otq|B9^J)8d;hW7oavZl+(bhDLOP13=!{EsoT%22S3-;DVEF7 z8y4?pmHGJ_aB!(q>AwKSnn34lMF#trrezt}ssu)-jt7=*g!G<9uj9?^dOasdu1?0~8_Hh+fnD}BYLJ%X^w6HXlgTPY-&M^Vy=PPW|y!)MTC5|`>Zt-p! zt4R}C)a`>fjP&YOCdB{G-nRhARaA-QOF{>d04fLymjI>{k_klRGY~M4@G%fRiHL+a z^mN~u>6@PJp+6Z0<$+&fWll_tx!Ob#D)o0PEiA+)vf1^Q%+moH`X&w~2Jns@vXQJ$_O3Ng|jEgC!v* zlm4AHX0WXKx7)mW_0@a_owIhW!?NJW@Px9vU``HCkq#TAt%!ryMDnbz85$^TW=R7W z(J$9J;1loX?NCV^KH>3Xa|Tn!lhi{dY5gZ+kuXY<4x`XW zs|6I|B#{5MjrPtBP6ELcC$k-)d>~?H{bROJh@JIn9+{fKWq~2F@mx)44Cits6?~&W zWzT|d_!irEzVRLKi#DFqFRP8`LF#Fr3cjtUP1%95nr`R$d0BRzi@y4~{rnA)sfler z7rht7Pq7KT?T$mjX$j69fNkgKxgnRhv^jm>+l+n{a-k+JX}lSIIH56}>ND7kj`R-`1%pnD?c3oU>B~X_tj_b1r^;M78O2bbZ#2}*vNt`3Al_~S zLAy8I6Da7njQV(sZc>jsmM^@CB<>wDSL6o@?%!aJdy{?Yw?Ok|5ub=8iM_M0p~m{S zPyN3BBIBJifQ%*5)Zz0|WS4sEOT;J26NOPe+h5##dIoTFU@((vF%$C&;YGTyVCCEW z#mb{Ift4WIuE$FB6^0dYU%|@1_7^KZn*po@u1j=`Qc)itJJB7iYDh`(fU1uaBrUvK zZxCr_Jrm747n+Bhf74CVhgm>nu=$ZgWw&qjSPR&)?^|Uco2>QBr?45{G(Bj6N`pP5 zr`R#y1r|^lFdv7?j`^;zfGs=oF_8Pqe7S6zZdjnlfONYULxt^Ke}A;1bN!o&w!Ogu zJ_Ckl@a0M;yT&w|rhBh>X3M7OV|#i`dhMK!8Ededj3D(guqAv?anZXSYZOhxCH}BN z?=83s;P^Cdr)kyx2p%k9&C-(>$PH2bksw*+~6m1q#&- zuQQetXe6p^e+e6A=Ukz5kP8Uy=00wu?tVzPlVBTlz`SfTbqx}nF(D(k9Y|1-@0>1Z zc22_5dT9!t(IO9XD?>W2=w&xb-|4L}hf)_>N93MmKU3gNeiGqFU zzJmOP_vq1(3GjK)u$h-nPC+p}*J}|DLrOux`7~j>GskL}%ssa|AKfo($*daAiAm&C zV(z%GfA6nun}upc;mxEWM2t3*eaAl_#bCkSV&Cz1sfqn%-|-9c(nPCl zdViJozT>1GGwFtNjVTw&l`+)~=ScAxr#Mn;l-T(!+eO4bwDSVCPJm?xS!~W0x3;@l zPsmhLqBn|YC{GlzcoXuICN6Kn(;PEG9o$C9)u;n}sOvTTe&L0LKi@IW)8g1YWsLVH z^ky+eA^Pv5F`6`yMf5+2!$>dsG6BM(pNN00==c8WL=!$%Xq41;CLzDom`0g}e0>mT z6nlKPLlzHhjfL7*?MWBPO~EeQ79{wL!*VNWktKy56_J+iD~Q~iFS84Q{vjb!BhdIT zyFjNY0Px=lJ()-%r?L>{|D^GmG?7J^e}ltFFU&IX!@``1d#y0{{_2=sJge|sQhS*M z`1{6m$t=M8ZFP`=ck0E|g!3b_{c31f>wm$AGou{NP3XyDd_pA?+8HbTx zImpNlD~CkfYn4OquVznmkR(_$DV~+aG|#Mfp4!JPmz(UW=`)J?qdrn*qU-Zj0>T2? zO$?#2fbd~mtoP)2)eLcb>ZDq;_HX|yIyWKnr<#9^dYc`_-&Dld@|T9w!P zt0%`k?j$^9Ql~9re#)v&uY77B_l)f0{;PadkWjdvCzjDDTzr^a;Yz_WMc+#I6?Oal zgkDW_WklWnJ&o0*i7e{&A8;7y)vZj3u)0m8gI3-4{_07(k2?u5ne^{N#tfEK|L*Ji zxDS1oUc;COD#xSHYfGVFf3+MJ(8cFk)kY$favyhMLw|s+!u{U2T}&8B7=^eQ`+4d2 zZ9g}*L<)NBWD5ugm~4`oAaiC;dgzUPffoJ)!?;0hPhtE)JF5w!C@w>Q_n{rIo|6%?xA{ zJJMYAW_(ZRQ5L8)*dlj0G!JWDQ|4P`0hIysaj5K=?^FxevhN9HAorK~a@iAlsReor zNOuuqDEmF3FSUTrfZ-W@xzfq5G0mRP-Uirg*%Nw9j}=+39icHJ4J_LTO0S36Zbo*5 zz8cw&c7%4}SL}|^kh$*f2i5J7_3hWV-Jp_b%{KPET$$BDGpFATy3_DP-7DCMy1`C1 zlf9sQ?n^P)r!5ph!Y)Ix6Lg;mN?q8_NrZ?+tN>t}FiE^G(jn>ov|r{>P&E>N-hRRXBuwjyI+ z%$I^9rtzjoS^2iQQe5ehmgtrFv+yVNXgw`y$P-GeMF{IuPwTN>_;IN?42X__3 z|D<0)KSqc*8Mhp`Hr@UCI1WP!T;trCu=|r^G)&^2yFdTfFKo$d8jhqVaw(BEE?C(6 zt7-qF+gYVh6z)tKM8rfh+5h=jWA2PZz5kq=*kAU4p7?IPDl`$|NKktvG^|y?_)x2W zQ|r6P4o_vqi9A&}>;(xBSd3dJ?F}?;lO|;S=lw5mm%;web8r~x^`A_Xu)0a4iB{e8 z{wnYNpGiGt(hbKOQ!cY^cq+kLNjXuoxD{zuA1R_dnXf1d8?r?Vp|K(HVRjWJ=W#3J zl^-ah?I!eVqIEd$3dMB`jn<@zEQ;&@;xN)HE}0Zz#g#}2t>Wta)srK^I|&b&)aisV zKV?;?`&WWDoKXw=fgKFr&$5HMzL2j95(@VrVi}FX#fRAyu9V2F=v(Q&qHg~_p;r@K z8Bw?2rm>ndkwx8p4~LOn-O7XrtJ_36Xw_}+ulAV)@63X!Fjx{|GU?w3jTtPf{@vFT zyqDdl*Dxl6%JC@l+7f8kUkk_iZ1A~OwUJ1rOz=)@XeJW8Pe>R^7=@VNeM0C@K5k`qof;V$SSwJBYygzB{4igF97%DMK$mHT761?xVg+e5F ztMMo`5@dlPk>IVyMZ+TwI$vU3#!x$j)%_Bss-SjdfX72Hy| zYVLdV3!ofy)$i@NYMBL823*CVvg4{}Tfml`s~E_+a+O_Unk3d3gTwp3D1X6hJzJ7k zPcpSEdu6r83_Y0cBRHM}oXkj8>n3DV%4)p`e#K_B_A+4oG}rZ}7>mn$m6(AgGEOPl z84Q~Ad9M#%?t+KD-f~J%kGG8n^fsE#2>gG0%ynpyv^H2Ifl=r$k_Ma?wJ=Ms5PVa` z^H7|oTj@ah-ncv7XihnuR%z6AN-gI&EC4LN#>&4JZ*t1e=dfEC>x{Ys&Py5{r_!je z#FHZ0P)fA!x)rBXs}Ug5r+BLbFV)L#P&SxN^nWqShO+mjJBB^E@0zdfg)Cg? z9t$W$dc&lx1{CQHxPZ)<-cYuMLZmmSt8{gJY=I$>-k`d_!Yk#Z^aipGdZstvTP(fd zRVbj8-ax-*WqQMNG3YzeERDO9jpnYQ=6GvpqSj~^S2@Lq^AQ|%Jgwp43~3F~&eEnc zbU(Wf1=3@NNiO-VFaf?zja80$!GwK}`lP!(LWBVg!6s^c4#sG+RPWSE&1!pU!}^m> zTH}nD+T}5Ds|>YxK1R@8I1S?&@r|n?Qr%0+^71a^eY5pTmb8mIquuQn+_DAqk@tfT zQ>;!;YoBt_#EZp#BjS~C+Qoc$#ed42Rdh$8^T(oy4`MJnL&zXF{s1%&7%&Zvf8GKr zgD@tC$}Wug4GY+^hcOw*CKG2u%Ebp5Rl+G3%R-vR=bdQc#S-aF|1HL0$`ggterAC; z15W!f8*8HXy&Wec`8>aL16c1yw7papE%^%(;>S3a|A zOp}%oV~}|Fqpp~BX&F&FUt?nSO2>#9a$pKXaCih}mBa??jkgl3HG0zpT`*;Er7HlXY2Opuan=~Ou4oov9K8eGSA_q7# zCS**=gb7Cu66vCi9Q6LGG9!YZ5H|^^i2Y)c5pkz6aU+p|H&GMmGa}YY3v3ab+!~iJ z1&V}LNxmdR^QDwEIrkm*TCM*pvXq(s&r49)LQDLNVIp2j;6q)n>9s_f{Dpb%*Y{*1 z#+=eZ6a10JXVQeM3B0es=LY!;3vd|eHGz!$uqH^vy;c+S{_5GuT&sw1Qfrw+_$S6x z$t=S63EzcN+~(&}laX-A1ZG5%#ZE6_R%Hpz|3jlW)bio*{lpsBOyfIv@LFQ%yQomcyMAL1# z^>$#KN419RVo{Wa{6L}J>G{f(&>7E%hP9RjKFqE&q+%+{V5R%YShpthY9jm*{jr6{ zYSKg&{c$M{Bfb8R2@%#GiFDBFkKSLsel|&q!UIXLXVO;djd?($tt_ArsR*~*>P(S} zfUC2NsR%dPLLpKS)Fp6ewTSWD7d$7FV7|4{c3Zwd#Z0Az?4H5^Z^~B*oDE>aE!sm6 zZ#e`&K6HT!^6A@Q8esALz!`(NY*RS5Y`t{*+Km^&9vtxZKx7#wA2wyQs;yuKV8c8k z+zvT3QnsWZ=iT`tC(gxjXdJez_)VmjsO~+6ddUZeEiTs3R47m3En*5mK&yv-i-_A%-K1eRI;VJ2&{r8?ERSD3GcrN+@Rf6 zm{c&{s-#IQIX6RMiQh%qbdtb1ZIF*~YP>7h@4Dy*)gkGkQE@k{B-g6Da+R+OqLnWW zlCk5z#$-u-qzK2i%!MOMdc`-Q-E}{@4<+OH^pOq?3@23_t|6UIlD=h7{343mfHQSw zoI%9#r_elzwrO1ZHx^JCL>xI(-NlN+>86V~F8WhYe1^V->=8!>vWZ2MkU{Ynqe?h~ z;$TH<2-XW{<}ASX{KrgLuv?0fa4hg-z**0N<}EmDzyc}*&f-voIcu@6idC$M+Y08+ zw16=?hcVD|Sk|No= z;8$!UTeTSc__dRajkux#5?Psz{ID_~fY_&xTJH`=Y|-P?8gDeDn0b!^1ufnJ!PnVh2?P>h=GS1u6lNBZg_CDL!^|(l zKr)1sH?k;jW7vb@g#*qeccj#*wW$CHCU~vkrMAc25)}4;8-BdFz&GC~?xjx?F}^on ztO~#G-Ow-~QR^JU=Q=}?eRXag$WdfGsn5vVVG>1rI}O%?3s=J8oe9~U3|~dn_am11 zVW-fW(adz9z+;ob4x3yk$uM56Ln=ahYJ!ekL+#B{56+o#RYsDJ)2^AjT2PO$s zAf8YrpHZ>GcyHAJ<~dN~8=Mv6t#SoE3C#*+oE8QOn8V~VB=wYB+991`{IvwWut2b2 z$S*Sl#|J0zp_Uud7j^(@s5b0;yrb~oj}m&a7@r7E{*cCJ(u5pbFilf<42K~F7triU zNK=rJ9}X@g;$EvidVh6CFPYeT)7!aJ?7iu(H4gq0B?JGFLN?%aln(mTL_QR5NE$^Z zjr1jBZis{#m`1XILWCLKWDA7|GvMs3b<8HEC5VE~ue60igc(#5NHsnzFeF^ks_h;& zLy~qp{u)Nr+a--}F_-jn?}uOHlBQo)F6qGF>XSQqEjnCVo$+x9Y7bT5WP=`i9na6; zl9s#ar(62s_!XYqJya+t*E$uKJn`)f=ap)hB`9u|D?|Klg0p&g7_F*w?h_}Pu$Agu({r8wb9eSqF zzZ@kI>p3Nbb79N;T@8w9il=K>aH#0ma=L^nCX zAA?`9PVlG|;yc2R?~Ro>XShUS=119#Km>*i%sJ_u;cG5!Hg;DltTrYyLNPb9QXLuT zv?#Z-4x6(es}p{QT-auxDk|_73c%{pLO1g!_%(&&d0)4u7(E|X&;#_;IiHK(zb;oI z)`9P==>1B4(k)zC!ku~GG7Dvb$qy7N&G~@LR+*_JywAVK@samguyVh>&sU528q89s zINWH|$cy;mF{mPg6<-_v>I3r5U@KGW+D@qnRiybQMo2KLFz;Wb)GmPwusudDLi|@C z7}2cbko~FT;)b3nxIZdi+zXfB;n1+}qmI;i#fL(Xs1#4XUts~_RyBy&EoFo!CG=&X z1B6p>EsfBmi7ZaR^*9X4DTvcRf>TgNf7mIQh<&Y7u=iJ+a$#|WcuAc`CS#MR!qbe2 z7xCd8LQSOKn-tOv5TWXUFWCPGk>4juGmIg_1(Urhqb5wx@g_7wh2c%hX!u;$FG;43n+xoc&RNE!e@+gYDS;&Z>b3blVTA+vq07L!Ci%d zcPDU<1^R_C@pf$3#Fz+26;~J0>$*xcdttW691l1TqFvn$mCGDuo@eZC@}Yu@2lB-Q znZJLS4`}#cc0NLM=E6r70wH1#ss*enIg5rx>_J^Bh505a_OKZc(>wNnZ?V|Jckvg+ z9_ZJsj6Ixyv2ygl_lP;1Z5ea$o9}0=A*LFN-))hlukt8=Qr0_EpJRwnRhhW0$nUR^ zv}RLqmcYR;quq5sypIG91YQH5R5;UpsY<1Q0$~TO=DnzEHeJ%ifgdy`qG#ZST?oxv zc>fQ#fXcuP%b^OpVGmsC%SeEIG6SXiiU6Eo0cCb~ECb#|{U<~L<`R8OEDzC`#vL0Y zr`{aIRKWVP<><2`qmIWwP`d{--H}S8JncO?4_Me+is@Rf0A~{OO~njS?}q&uXs#J? z!(N1FCO7PM_!aAh6}sGazdlQkg*dmXL`sH=UnqLn$nCoMQkZYTDP{?Y$53;JmC8~Q zk5ysKsZB-DuSUF@&2&lmDZ){^ug+hL@-I=)lHi~CCLo@#nY71^qprB%_pNjNpJPPyI{?wcEpd6PFG+<>UM zGrDhf*+L=QH|qST&P)~<67Cz-zWpm$T8uR3> z0EudYd2hvg{<1>TdeQsn?J(wrl(U?`bh|#A%QsX$K zr()Y3pJ=V|Ee3EsgVsyPfIV3GT3rx?o+&zP(T5^T6#%c99J9Ev=105hzH3&xutNCs zWh`>&#na*l<>Nn^(Ylac_n&*=6xPsVHl4Fi6tW#1#bYnBnK-SEgyuWL8v4g75aATz zQ_+v0#0py^J%bwa!fw2SxiQRGTZ<9RYlNB5GX+DZ^cO?x^T&`zefL1O#s?K6Xx`Hi zB>^MP5+9UzAVAf_*Az3DfZHQj`vc5g{qr?JV%1yG2Zm5HM^hPp;XhwH?cD{By2}*R z5$8dY2*E^T4z>|YA&DNOJ-SVjZ%`j}FZBYtT=A72}@B}|86cp z>GQ@ot+Y4#Qz>jxZx0qWIUAg^vl{9+PZZZ~F0I?OeO191(V};IsH-zFbmh0oR+^bw zQsjR^L8)q!m?$=`&TfMtQzQG(bTyALR}C-$EcJj&v>-z;QgZFE7~-o`ihV=D{wwpv ze&8?k{tq@xI*gC*MjD+3ML&!brD!=rP(+dRPFL#sOc4dEY75rQ0aznZ9EyIhESfGG zw6D&__eG%!bg=~$gtPHJY?z#lLOmkiYMqS_L(#WYub9UAZ$F2mhk&7r=~KQ=CDY0& z?ii^xO6{GL2f7hz%U;{Tf*z!QVLOZ1Ke*>a|O2zaVGv0haou=$pU!*l{_6NtBCT*rQll0Vg>daXXv`^`rXtVq)6_(I zB{!igw33uv=tXy6bYM+^OvFw8K9G%mMQ-u#)T%%+md9VZeqFGwAgUch3pPc&gq|tn zSp8wW-ZGIoj!U5}p92kRwIx2xPg|au(3-^y(j<_8f{lb5lITGStQ1nLO0sS%|2gW)8nujHdX&sLvETA$-Am>np6UfsQN`H<8 zY}wPs8OSDPOF~dnBcY4^naby(VuWz>R>6O|dF$ z{!InGi!I8 z74f;rLVQvcJ=xc+M@E|)6m-B$rweQKx5&vI3K(i=L^q2kP({SGZo`Htt|izKC-i>C zwFb=MTE5PYI&9O1vmVG7d%{8c0ccq3pv8wmtW}zshqFGP(3%AY2nQ`6L+%dRZ}tn| zuM^Tu#w&Xi4kGhqE{)jUBYV=ohAB_6$2{6S-6CpzZzDQL2MhiBPMC zWKvs^$-Q^FgNS0i-|PRg3sAKef0jp*4#!2(`$^kh@wuyyQ6xHbzALgf5Z%t^;M8|Np5PFr5A$PrccfSCBJ0aa<%vtp6J8>B4^eV@sv0nXT zzc9rCA}tx#tN2XIom#!x`>Tspy_!`kC~}ICQ1HQ>Cj_5fC@ zfNiHxEf{~%9vVf2nS5kwNx{~M`C?0~<%`g;S>T#$1i@*D@LV{}LS#g;lIloSy@3`D zi)1A=dJyKUq+}&p@})>t!uMFR(sm>>B`eXdS(&VK0Y+ii!KYXnerTjrZa11%d$0#n z=PO0}>u1W+De)tO1MQ#=C~O6R-E^!D1so43Hi#r_&whGrgX&DKc}LL#IX^kGJ<1A8(lfd@Palf)*#SFA-jpCkk#p z)?eH_kUwrr=3c>gn&gWZjpV%yQ8Me2FB$+woeELd}vdeuTg9 zpMLVi;jwdAT>gbb5EkPf!M3dOFRnZv%Tm!H>vRkavo+A{X4)RgvbpU^7YHR2RjLO;KTd4sTAC)yb-5335SljPHA_k zS}P6LTvlApg;Nk|O(6i;U8>QhRJR7F7B``QR-xEwL3ukUl~-~`8;y!H+HqTuYU{Qp z$Z0!Xg7opxW}`E~s@$phDo-KSr*IC4RW$TZ6=ql0A-dT-A(MnwYPg!+7cDO){{O6C z;-~v7q6Szuwy(hT$SIZ;Jst_Tm zfrx=*lEAXumN`Sy(+(LYJ)3{BVkj2;A2%j4y zfxHZdkxqPNf`r94ksd_CxIj+tuMUl2TZIfsO=J?_oyKIyEWqbTOM0hBB}Yhfw+jy- zH}3sK2-y71P92UDbhfy)-BodLW^^i67W|4_D^C>UK7h;-tg2L{Y{H-s+5P|_m+AG0 zY~w>+uj!}bv?W`L>4*zYaB*8IhK(hmg7X+Yvs82S0|eAu)>2$ zZD$hj_Z!nkBj6TLh%juy777s@!^J_y;MlLJ34^j;LBLhfB*9&Uf`yOi<=I3$IQqq^ zXc0DSvMLIPVXut%eFh3}OPs|t8nto{!2G&mw?(1T<{s-shweJc^{sg-0!fO$2aNH-S2zSu`vHxT^ax%#%q0Tr$^E z1aR>^7Qo$vWTpTv{hE~lT&l>x{h25mLs;XIEqb+ z08coSd$@*}K4GFE-1+c@|1=W3RUVQ}MRyePwWIh90ynxj(;#3w0nM9fbP+e>x?Pmt zu2Ex=fbG0WTZ;nu8C&4P%L)Rz{YAi@89=~NRrGyiM2`_%?7!&0!psJ7Tfxk``-_=- z7&T3+L43plDua>&9I9|Nh=rt7RkZPY3eG-f0bTZb5DaJ&!=k5@*)^sKb;l@eZx>=} z)`hx<0ID9L?wG*@8Z&~m?a*HTL){293w8ezf8js2Ez zHSPw_dwiwh@RH|TzuJH_2hurbLG|{EySvK5$q-1E-x{s%hA8;()SxPFxwNQA>whZ4 zQ_XbU_-Z- z7t=POazOge6f!URxXi`*k=dJv4U-O=&u}*%ZkU-n+{hUM9JAG2q|FFD!jkr7mUjUs z2(~EEqEdx45lk^D)nG*gd7b`)Har+`wl^RFyp0(ZC8z1us+g+bZ;1mpuiJvxAiDz& zC3I?#bpr9%Yda;V84fRx!XL_AVVNIvs9|XonrgKR*f=J$@U}5uq*ZH7Ks%FT)$$mJ z0o=%L4O*|@tN4y2_d%S9Sta|=uoPxIs{hQmP$S4;##wt_12#l9OBFbh3AqK-bE!7f zszT;X2avr5h}7bwnM|(>3d{lb*Yp5cI6B6n&7YQ4XDp1Nr^rFbj)FR7EripeDRF+13jN2&kh}i-QNIBGAtBvl%(DLTZiUYc@^Bu*VWiW49FxZS z?>GIzl+2!C{g=p{TK(7itJ75dN6Vaa0eJ_z)u--PgWgx<+tX|nd2`GoFb&> zQu5G?$6Q#@!GZ$z5mP9N)_0)v*zxw0xVZq1wWUQOdtsokEvO`bPg+o3z#Uux;j0z? zsRK?UFOmsMgyp+9%+aV4+DAYBZ~()j9;lz?y?i z2G~NWFkY>*Z!x*4G2C*SyUG95a(s`I1FsCh69zK$S1(Mu)zL9%A3ImRQMN|xE;Xwq zIB2U-DudofjbEFBrS=#s$^BKiJ5uVvZtFr}1?=}gCs-Rs39E3nJPtrd-okH6yWy~| zQQX4;KML5p*g%0p9AZqUKu))y2P|g;{ux@g!QT?pD8SHQ(;2~)+}c`om+QcyzTO7^ z0Pg+Rr{ZUW>rWYUiZ9-H`PK`!p1*GWDrYkw1`jp^T-B=JuW;*?mNQvxk2N59yyOhm zO7&gvr0$*pr=GzvkiZY{Dja}Tuef#C{!Yva6bn|k(M5@fkSHrYaa)n~6F#AzC{5Hn z7gRAl9}5j@mnZm8J3XhK4d;V6`-?N?hoL*l_y!YtvKXJ3x=*F?nKY4QCOi{|k!~iG z5g(p-67jB`coM$~J8CY-OSewnF@Fy1LWBPlKF+Uwg-@=^mrsK2Lz3Th8T0d~*aQ(d z4t5#E$0>^HlkPw6=krY<%weW_(hQtr@Ugu&-37J-T=!qoLQQOF^k4c8Wzx6HSZzm4 z&@pNvybSMN({EczD;+b}GqGm{7}GZkiAVck7^?hnbN~6{aK<06>KlKYWNPW^=PcAv?x`?kEWYqAXWetZYu>nC{mDO}*h;>Yp#BuuVcwpYN zHxCDw3sG}C96k2_JWMP3BZUeN_MZwzvO#{zmI`r^U*2ZesxcuDr-I0>KH3(*u&>kt z3b6}e%f~GPM5#!!HAr%Mc7L%lF#}i$sy66w5_y3z65Lhr(d{oj z_T-Nb6QfV)DNVwB%zWk@hbWnK3G;^oR6P>rV+IpU6A`Q(1nu=dVIHAo3G<)EU-(Zy zVg8szizqH@ULp)z3ogYr1LFt0(do11i+`dodC|s9*+2s7oB}?@@l=QozVeAdxxxC^k%)qk?-ev^WpyE5*f4yoVRYKPZNM zw%`ilZnSW~ft{zFm^~%xkBD^9ExzFq4a=rARR1ksG>U-iFQ8$-8ck%8@*?<9r~#FD z=J}#?Kc#O?XKW|PstCIBF{F+Vr_C2Vq+b9pg@(=61#*E9EKDnrU@fHUzB6g zIA3aYzc3}UXEu^6zU1_%ld6`(fb_^{{eYH%q4LwuHaYerDD759}B)A%Fi4XJBmSYL6 zS@465U1#pLuZZc+BTYArd&keFmug77e)0P~Q#@g~v`h_W(J;T~Ekvp~8 zviDanQnh7Bd89w^Go%v~c}{{NlX|_xn6)Bte^d2(vhR(O%ho~WXtjx33dLL#B-$rf zkHSHvs77&H!QzAYvYpV1pCT-3v?4y#YQ@}@(4z^xnP?DBW}!77p)r~?kwpppEe<1{ z5|WW0mia{7Yh}LoSIQCjs_HEs$-AnEv~*v=?&44DrOSj_IckJVFMx)%>q2~(U8bcmr5fwA z6MD56tB~y@X{;tqWRdM-a2V-iTP8wSwi9WfmF?bN4H&Yr!j4JJXA<_g#w5xt>;plK zXpnkHu2)J#`w@KD7sp@I%XAPQP`Es}s~~WDzC14E`BFllW{$>(+2whuiYFf-tk3X6 zWz^M#{!PR(GHZ{}s7;#4BH6oe80jQiCP!GZ6RDwdW5-S`g4ruhw>F9;cdSk8#eK_hh68-^^0_$E9E}H zfj*8BCc^a(?kJ;hQ7A%W)q=v`59Ny;k(v0QEq@EnLImf+Sr#H9ast($k?QcbXjtR~ zssY6?Cneb9R5foCR; zH#svbA^GoFNzJMTNb;+So|yaRz(7ItTa^NhEs-Vl@Apx))cv!4BlS<_9+BA*&ip$% znZ7=q`j+K)ggHG;vizO~&6`E@MD`4~b3}#M<z6^0=HWQ~y@7j0gS4QFM6vP09pP1~fKT*I)Who`mN31vBfDO}n zQ!qFBqxaA3uKV*vqwxB@7aG=j@$sQfxXiP=KAX^*#%NAr1>v3NW5_*J_;9}f{t6-8 zWX!VD(KNg3>o^R_=}6N_e0CSdq;bB&Px^%^nLWc^&_wRkdO>@CWs%*L)ToKk#f^R8 zH+r`*r$qds@1!Qur?Bn^*kfKXv?M0uvS~*!~C@6@d>S2j6rBiK8D=2 z<@5Rl@X3U9lQGNM(%TFCZ;;(}3JxQkw&a*J)|MCb3sW+ChP7oPcWSj|@2_SeyDJHb zOzL%sF>7U3uTNZd*LC@_ozRMH!lEW}j1RS1F?S{OhJ@ZsGzcfN(3-EKF`6`yMG4)C z!$_xuWaNisJ`wj?neY9TNp@FKYnf#CT4Rc6WY+=;5i)*9 zGX7@1G9{MqU&n?`mhjq;@g{a2JDnV=ix{)hM0Fu!lNJ;Q)MNQ#N0|QqWXs=zvk<|# zaF&ILh>)@BiBera77dG#vFgMOb5c^sm~6rnA!B@xg^Uk+5Png}n0{po8HYz*^j>%? z7^x@v0ot|xAth_ME45K)x2|`aYoUs8r{+$(p0Z0wd_3TPJP>@$Zo$V`oESeYd7ps2 zjytElPthNy7{^}1Jcp|Qme7ptZNPiv*q>(>$m$-@YIK@qcbYZv^u=@L+%R4A4u`*6 z=6FZYpAJ{dKba4m91jp}^-iGcbKvT&f(zfSxrXlk3SQglt)<@sbX`Z+ljwRfT)m^9 zUGKT@Ys*~kdF;>g>FFtSJ(aGf;e&bJ>G)@%H^}~+L66R)>jt>)@y>$l*dFf%@W*== zwtEi#dN%&r6x`d4zmCRx=i{$q@YjX#YpmmKfj?Wli|BeW-txSy@W(pbf;%yq}@MZm5D6jBZz_k+B=Aw>+$kGZ-&bs@G|rkxK!}+!aLz| zDP7(Qzg~owW$%E?$932Y&AbB5WJPYg7;sl=m&XR3VJN~4`B`nZIni|K3@k|Ba+-~r z>%fhX>UDHJ9{h5fF4Pi-;^iZ7bAT7!VWT+>$vyS3>p^STS#Qxl-PemDU7c>xyKp5AhT&}n<$2Hki|u?*nHkYE0Qk`RhObSt|i zOU=<140U3n(L|gKPf@A$!E&wCY7Jh)ZI4EMBc4qKYWkX?fx_nNO5+nXC=6e%munp; zDbI=qx^NP*DB!+(bO_3xHJN^Oap**;SsHh)zIrwM zkFkOp{N*pqxq3DHkH5gM!>Di_z-pxd#NwjEMva5F81=uv8KBIdjG!}*IO;Nnppk0L zohY@(f`f9H4<+(cM$K*6QFALpO;}I;;i4*>EC9zw5J-5O#O_jSqS>hrTsK~G5Y`qx zg&R<~qF5O3z}v%cU_`S5x*SestUE3D+74-Tc(IHEMA2s@2f;JQF*?@DRJqIfT?GIuTG25XR;F~m^`bb9Y zZ){O3tdn08CL?s;unkV`;ip0QyMdMSgK6Jz2~JKbz$Q#Q&&Sz3FggIU+C|kB`WY;z zW(h4B+e*}*2Yy!Y^}F6a1NyVT^yet_)pz~L`&tBJj9Hl`%nV#73;oHMCnp)=U}cb@ zC8R&&L`ZoeOVD~iLPpKGj_??fpkWw z^dQD{FQ5@*(xwavIdK99D+4F+g$sHlhFZI-69MuWg1N2@p2`Tm#umXsr|u+tMmXYS z+t85$y3!eGvh@j^6gNT+m`b%ZQ7e^+VOp@H3C^6u!|7n{(yqdXzP|=;@zd#GWdsS> z)I!sR1q*&w7pl-;Yr9P5T``5Op6{#0|SbEeOg;od7 zpoLdq2~x&tMI!tVp6H&U1KJQz03A@3J%#)kMt-6>^LL=Ad~;^-t{GU|9>S)YKhA_X z!~6O+DdSAj8q?=FO=}#i4AUB0!p6;N$`g4~oAVc$7q`EUoz%LChRky4*5|KyL*`Ih zz~T&XH7j)2a>tNa{623LXxe_j4IG(DChh$K`%MU}C8Kc9eaJk2qS+jm*Dy1||F9Bo0lfji1PUvCoIa@rFF6j9 zr%}i}DS$v!Ayx-dn?D`XygJ2FA$P+n8ne(~X55aw!mK=jNii@f!Xz3@y8-UNN!=KS zNwNwnY@B7wohBqof-3A0Ud-4oBahkmk#KNCuzc~}r z>@iH;y?G|4S>D&Z*;Omk9yzI24ps)$`V3{74YY%*S#>YTiuIA~iuJ4UiuJ&45q%$? zZ+|H99?7KijSS>J*#a3i-5$^Q?*{~Rrse0v36PJ0(zW=Hz}yoW6PC&Ueug8#>O;^QEb)Bo4w8_DVa z$B6X*zq}ik5>KW73-^DKC5c+5{~rZ}=TlYDdk!*W5ie)J#Y933(*KcwEd8IW?4{6` zEHR<3x((3)3^AP5GbCx{f~Disay*KE>0KnzC2=l zi#A2_C6k?;bP5OS3PgP{8Gy1*uWOgF!L0g7M(r1DQ7imz zpCe30cpzh*xDS75N!iV*SyIs%+e*}?e+yXg$MA}o(58zSU!Mnk=?z#5evgwO-q)kq zWr#6PPBO&7${<5Z!n#jB;uYnIEJ44^EOx(`rDCcJ|_CwPs3jeIEsycFKH zQu}e7z;_Q6pv{a~01OE^aRLV`11B89OmykEP1W}n^IS&qYFi`=y}FWc8qupKZWkwj z`ssZ^p%>g0iyLLPxV7EYx;7->4MN*KHxb7ewVJ5-gL4m9IOoNzMRZREw@J>%gjCu=&;f#g4u@%qY-9bI8tkr^tszj_)1}8 z{=N)c+ZMPub;q~JOc1o0=+6e66a6_@8R*Y`x0R@!qAENn|}}AC`=pKi1IyKz~WTdQZ{XVhak;F zcQ)9Z=+42)K=%xr5PxlpV4=$XgYX%l{1dv%&gZJox}iHOfFkqr356t4_aE?=LMq*v z(EZDpT&{+``fkqhz81h3Gp^nk+vlVMI9M5UKzN^_F9F1C;fJ#BUk9kjsQcFtHX|A! zQTLw>-zYFfbpJ+Mz~XfOp^V2i5Tu!OKO1aLbmw4YpnF_uzJk}d7i9YHv_-R+0j?sf zM(DraCVBh#4bLw7{eVfC?6;##oE67`$9=m0**j-oMRXX`Si7OGzR!xhuU#a^nY1HQ z1vzO)4ps*37?Ydt6Onj1=DDmJ-vkKBI5*x-IF0B=ISt>3D5Orj_rRzAGlEwBNCxwL zwqVB1lzcncy9w@0yugN@6EASEGVp>nD__B}_AMFVU$jNIm^1&9@EhTaCr=8ukM$7O zcb|M1AlZKM3_Ed}{T7IY&l$ge=L}4^Wi=J5{xyx={8So%f=av8j51!UZG%lD)$ zfi^QbB-p@n;t38`geNe`)S?TKyZ^x5faDeNs?hil{F~r9~Cg<+2!#9$1_YW7j`|r9Jx_K&hU!>S(%iVt=P>rjS zqIVoJ~?#rd%ueo}S*8O+?D-O!SPn4KUdE*0Jetl^t-&vU+CK70RQO1p~JC81}s zD)}Pxm{G_6CE+r>Y=Mm90G=NIO@cZT2e5(X!~q=`Q<|}wrAIYfwl`U$;9Q$vC$q4;3ro{X3hZd9jOxFIqF9_Zqo(V0=Q`T2PUwzl2 zystSh#+db0?>(kMi!$cPNrpIB8DvPw&G%W5CUWJ8EI}s%5;AJgBH=M2L6O{hAE1y- zcxOnwM!-hClmXsg3viq^<>~RK(+DzYQ-*|`IDvzeffM4w`#$~&$8j&nXnu(;nuTV) zg0LFli~TlG?Bh4Y-}`^DLSm@>maI%Fip;eVKIp0nJnqx|Lo+c?@*NJXnV2VeU!&Qz zBU1%AX-5uL2JILV-}i|~yd3jf){VDi*NwNv>qa@0??V()C*HdxmLq88k7O|4Z3|}H zOv&rw-$QU`nkm`PbK(UKRt8?sM)rOD6OOfS$q4_PEyBf|`B}nmWX{}Y!oW}lAI^Mv zGS}|Q4Fkk?PaeW2PP5+tvGC>bw=*%#@_OkH&BQdz`+6k1YGv9ZC)LWq%Ai_xp?#l{ z#NoP^WX1ZM?27f*@rqT7<@->D=i39nD0q(`mcEgJTmtV|t)%0o+h;Iya}l(e(M7=q zo)b@Sup&HxfhvnGMEw7a_X3gw*D;I#OKxx3CB)kvSaCrzXm5;!sikIylgUd_sa?mH?atL1j z=hJZcJzP58D;Ca~bHlXvD)#3!@CRJPH?u#tus^S7f8N0U+{*sE5&mqM>)nQb095$n z-2oS9>VWxh>wwm4rZ1oN?u1)Ar;Dkx7`kU~hVyZ->OIt?r?ORUz0!hO^=&u@y6u#l z;aaJ_3!c>7Gn`J{y$;UR#8*4@YP|wAro`S+;_b|>DQf(56djeSL44T4h9p6u)QD4z zy=)+&ObzJmx}O;wGK~z^eFDnc|DLZCXRe zbx-1v0ppDdoB`m!Fi_YA2Msiuh<|(n=M6O7!9t-r;H(%gT?c1!^K!>ce)1_EiG;O} z;USzLKJFY>a2zUrTxyq`i3XhJ)uMAy-4Yf_#y!G~W_7e$Ujs$Ns9qWNUBZvXp*A(O zfS)&p;b^AaytMNuoR&~`hNtkAA$Y=|hhFRW-K1L`9fMvF3gxrm5|oUlLlEEz)po9z zUHqa{h9jmba8?u^5Ji=qq1ZEiUSWqt4HT+4UOZ~44JSXrprK3y8+R}aJTwi z&C)3L13$2FYDk<173^tkIm$5b`xbTtJ>j`j&N_$ASAf5zIvjck;540)Qmy5#tzl8@ zYdZi*wG9AoZD2Qyo_HFTzx})D-FycMEM9&F7ZYV?kjjC~$5J^ujPbTYU$XKGrE)wU zYNk>_L&}WUKa|E$zm&$+IV+7Lh0>V!@u!pq9KiCF(il^f##NsH`5eQ`r{K~jrGd=H zlm_1~dMxy%R~oMOHnK6iyWr1O?;Y$P_s~CrxwjR~FsW#QBwg!Uo zIs3QKq`R_5Cvfm!c^6Cpz8+>}byI(( zSR=0w6w7Py7oO~%#Txk)423D_J<*1{JJ!7jCfU}y*4R|XUDtFc8m)EySl9XpT^k^D zU8PZO4K-Ws;3W;#2jHD)M(ue(Ql2OnyDK`dd@%ObXv5x}cyI0k zFohSwz;+*~;jNeH9?XMJkri)b44n|hWmNmlJm~M7gUNh9kNvp-{%l#~T?l`+dM||Q zE#4NoUPRZ6;R>evR{F;!aNRl0Eye2rD7I)3qu?nK_rtLCOStXOO3C{e1Njr|&!^}Q zZ@GgllMR}Pv#p)suy*M#0V6P=cqn5y{4l2Lv6pDMJ4CDWOb7<>Fj&4FI0i(OX!(J{ zf?q|hAhndU(0)1Eur#cLW|{?yTe~Ou`avi9Bb{1pXrj~}8yYW7Kt18<*G_NkuITku zwL$N#?)4rvJc5ft*6ztY--qK+8( z^R~99OH411oxqf1%;>te+fMxh1HtUS&NmU(2@?Tqu6090c*xYy(7?phAesy?XgHM_ z*7UuArlbp(UJ`WmQ=yY22j)G6R%Q&+HGUj@UrQyFIgs|jUi$6$5 zWL6Js-xw=$EwIR1-(n7{q~Jr%^b(lbi2&0qtQBW4NlpBEVgXHN)6*9-3+{0E3wG8K z^ryoOp`W0+ef&bS%ub-|bKvT&f(u`Qtf9MTm2dUd((eJfuA}QobUhia-ciu5_gwe| z-q`1{KhLM9r_l9Ox}Js)=6R>%pM~Ba`*Q|8I+Ly&;JU{<3$9~(ycfV9?^)RHIr!_@ z_-j*eZ!`Wn8t&1A>^R~htatV8v(CtgpynLm%6aH@XUJ6(5AVljB{yG+4 zFVT}>{P!|^Qifk!7LVO|i&w#WEAX8W__fCy#eW}x?~K8(Tf8b=J-9+gyXYS^xO$86 zm2vua9j<%42L2wape~w#pIg0a;R-JF7W@Hcc!&L&WPhgEpO?{}qIde2ps`c%@+F*B zK986G#moQTZF;fojKIboKQQ;Y*|Mp zCFMMZzw+~N?20zrt=XD6X^Cf$4bpn_Z&F6x9T<-hKl7{sRbvr)_d9a5i+cr?w)JPkONT& z((-74dhcy8mbf{x=-s0}>3%cXT@e;E?C9J<=l=xYLqO3T2%ZdV^WRzHj1K`vO^nGe z2kR1g(h_eIM%O^t6xYUhp#4bItySbttBnENfi?hvb2$38HE>0v2BCFWVwE>Rz*YXV z0{5m%s+HvZ6@L8JaN%aseL-XQM`7(gv@fa2I9cOb2QzZIzdp9NG4m-m3`f5K3iYPdgGKxLreIIbcTjZod&1M6r> zzD49TKEaT0K3V=(K$RTK`|g2Fccju7htme9$3D?r1pmVA*VEo=pa4B=qb1Uw?jGB7 z4xa8VfzMlzRaS*l3#V`C9tfUEzQ(awm30@x=WL?e%9Z}j=yRZz=Rq)jy@Sb^sl%={ zqp9de0WW@!Nk~}i4-agUfc#{E_;OS9!hEubf8oEukTnB-HhSFUCX z5*5AkV2vX!y}I*Oul64@p~M>sl}@yv(&fF@vYX)rwyIf42#u@;4qz@t6*m8-0^jKt z@EIrx24AjpvTMw{32+9X+ocdE^}ZjhzhYd0Ay?BYRg#O- zii}=ex=uK{GTmJWtL18C+Is|6jokxi9bTUHeg(Oxd|GqjPc)x z4Fv8Ca5CKu-%6qx(5VQH;Ty28~ z3jJ9Sj;T-I;ysLTF!sb>#Ij$On$MA+M@1dR6-O5HMU|omY3$%~bDOD;}l+#kpDN~FT_7c`xuwO4oLi9Hxh8{y+ zBoR5XNh;;goiz@(48l5E+Q|0fkN2=GZdw z)9zBO!*=jG5TdV+)?u4!uqigghk=eM46>rhVqwUG&==Mr;v5em3=MV?W2m@U9flqe zAo|LwG(y`bp27*ki6U?B?~}ZF?+X;%d=1N9bF5;}bO-8H7LQJ=;0bLT(#|rg7jhY$NMz)EKm8S4J!!xO#cyd07K9xp(itAfX^yJfJkOV z3Z(NkBYHwt+uWcUapBTZvjpUT4Sec!AwN)X_^o_#C<;P7iVcVCXTV{&LR4TYdk-&E zcrJKQ^on4G$C=k*_UfKLj)_`rP@9mL0)ai(DQ=^`v|E0avvw_P><1=g&qzJ7FMwwq zDxh9iaZz=Jw0VBXAxhWX<>4MwG)EsR$o{u{kzD}b7=QkP_>;QT{xvs+W+6HT}56h~@}Qk%qm+tfHF!c95& zpxOdk9A~f!YDg#>;yUiNohleaF4O=?korZuWtH!Py9&>rnJ>=^89$A9UL)i9FuRN| zB*dws@UY5|C1<8e6Z>2GsG$G5i_e}UaZc(j~>uorU^l~i|AS~C3_}9vH@2}Pv zF|b0Uq{cIe_VbO2#I-|Mv@M|c8W;&oJM6VpFro-LnkZJj0y?0EbkrlZP>2d*svQ`b zo^#(bKpER7L5|c=%>|=$DCKiUGIC>xpe)G_jd?*)EFVU-8Mwn#hSjLMNr{2a& z0cCQb7Y3UylxnU+5RIxv!h^BKM9AGSwXVCuGNi=D5Znp@5Iot)ub;u3~lk9X}&MIzhpg#!))N-_s^2h&d6@Wk3Ek$Ulj zNsj3%XdYCg=}xFKETA$-mgG>GCQDvu0hK|rB!?=TEV&#_4Ovb2bS>%~=tS`a_@U}@ z-C;3;xEWRUd?jy&Vn8G%PhzHtw84RlQ9cO^zxInYe6+(y2J=nM-Jy=RVKH69b^Ra|}00;>Mw z>N6Hlnd2&1j22)`aur#BV*!?t9Nl;Zs3zR^>2K|1K;)#&G)o$b>D83?AG1K50X_Ld z7ET(UyCKB;8&q=sy9HDRDdQX}Q(XPg0xEM{h0aRoGDcH;qcH+-@K=ltdanU%?)Yu& z-NRb!q=lgtEIQlQcA)4-YuaBB9|@Ub%rV0dspH-_0gJc;#YW&00KI0u1JRf!w>@Uv z;T?}uoYfx2<5H|0d-)e*MjjaR5qcd2D4B8p;`5MW$-j6e{EGK4Mpv=EcTwksl~=^z zua5W@CF(O4UZx1OiEnY$CUC`IS}nx&M;cA=9-P)Pi$NSQ z&P$dCreYh|W~f=JR6DH=CntExj!)B?DxT>+Q6#gY$V)0udzMh-wbAan|Gcj|UDFXN zn74lr3QiuZa6~}Sus1FKwW#N8iPT)s7`alECkhvIqhtwWLgQ04G4S_5^DsS`n$mBz zfXcv>=1_%=*10FESc88nxO$%jRN2i{25iLqNk}LZ7ABw9gt_`^qKA&KaTBj-Ok=Lb z2)6es#8klcvoRokYK*y>N}79w$YZb($Ww%dH9*sho3LL;+K>tRcknCTgiSY{_-5_t zmbi>FbtTSWW?db@4FZ`-rtTB62jIsFc&TR5*cdODRIvwOFE&iUT7eQ&rSsI>a*=c% z-dJ~(G#gO%K3E?Pvpy2ib(NVyS-&e!6utP{d~qPsc7F{G!;rN(p!i(yhKhXl)j`|k zQ7cd`ElQc8!t5KO(#GA8nx!*_A&?K(EE{#Og|w z=`fc=8kYwDX;)V#e--$GR#)rs7p<=7m(}V@ufKb9g&4EC@tuuXDUPWdGt128+n%)v zBAC9-hJ1D~Wcpcfbb*YsELH1D%0V$9%iR zhLZ+PUIY78%UHI;-9RUyN=wd}sZ@L=vSKiIhd9gBk$p`)eQ;K)W;wTdTJu*u1czYDq?q~L?#jeV?{P00cunp%#hYL?AHbeNKG68p@ND4$uL(nV^h!~o9Z3H1$ zr-Ya1Hw0V2`&OMeL0bK_=!_Q^e!V$eOk4stL-T0Vg?u5siVNRq0hK{ynL}l&l-_Fr zm4Q;?P=!-!4&3Hf!}pn_M=FipBav8X)CF!mhEKeuD*625x!|RoG2GAC@*gR+*QF?kM=$VgXrpS3Lu`zr3|nUDNr9 zh_csW|3&{5hAVMfL0H8CVFnC#jU9tEEub=BFb-9i!4}eLSw$Par{L@+3+S>l83Q_3 zCbMfy6A$XW&YFesAa4>3fF7Zpn1KcB)d&VJf%ax5v;z?U+WLqiU~!!fAz$J@{nDKH zoBJrlhDB-Z%OWk8VFQ7;29{{)OLMM_Da|Yu^YLb)?yz_HR}6N0yr9rDpT>y&p>~AODEP=(-+VD8)(eDcqTE> zBe=PdnCk0TJoB&^1)! zaPa7G6-&#ps$EoJj>>Do?qVw8g^7Nm(qRx6WTwIs4vjL~?p2VdI+HbW7`sdllW9NV z*`ECMmd&N|SilreZ_t7ImnEkTAp$&alJ=9cGH?NZAs68$@j`LfZBM$uX2eCSoKh1? zKw&E202PK~j4AP@Ux?Ff6|mjFWyQ|{9cebk#Q~S9u{C?aR5@G zO3$z^YN!?|=!9CWfHf(7g@LswokqFbnW(yz0SEMwdW5DZpE~N+T__xgl~AV&P~Wl+ z^;c0_VQWm`KurQtKv2LGUy5ThR+5#!4vbZC;SfM-6!T0Y6@ponS72RWPGBz7g^kXH zTPd^~u)}!FZHlU_@ULo9sa59JV+}Orpv0Wi9cjf8tOhyRXzo%Jsam5GSL{#Wer9p6 zh~OXlFM^9TA{egodhLsm5j!p5ablu?y@sl-A>ybF&h};p$_Y2>H6{cqpNXk^4OO%S zwcPd##sUvc@wp#miv&f?)?qW^2?T|FSWiIz3RfKRuxw}LXDUdFc`4(HgP|ugW1X8H zqPVS4_Pou=EdGQfww;(S4n<;H5gR7^Sgb$+hx){}hw~_I%g&7UtJns{h*C71*W4a~ z;+9lJryy*aI@mri75HXK(F+&14Nh!SmXyI=g+0&97quc^?i}JqX1vGMLdEA|{h`VQ z`|8Z?vZ-c@9c7eBokiRwy)&t3=MUxAolT>(F!@Cd#WNYAQkO@)oICU_%cB-xktTS_ zg|%8cD7qBGO1v|l*%)Qw;{uHYidtYuu+lDuAyVh_!c~#+p_Y%d!K-jp zRun)|f0-1(m@(ZrcI_3w3;bY;Q#_~9s8N07Y8}d2!5XFIOpdWd2fS3Om%&iO^>k~j z(W$|D$0eK47v`wAi-3$Wb%@&vQXkA$7=*xoijc~5O+?`FVRnIEfT;5k!Fpo1lo39f z(3gpqGWFZTV5%(x7SB)`OXYp~kVfVS7zy}&Ve>3(}3&d^O5K7}C6N+rKNEpCgf zvdmDeH0;&}v0N$C0tC+ocrc)hz@USLAJ;hJL*PM{b7+IJk<`=rCQ9uwSbbI8rZ}hX zg2qJZ@`BIQ^MEq9CcLL8xpj}|r#;O)k|jg=#AtW>HBZJ?9c<1#NBJg6G}HQU4KU)1 za7y1n@)!PV%+^sKDU5brl=4Apfrimca#_!T<}FgLw_8AEkgCa{GELPSwt&hYRg*&% zrt5)$YV(QOt9;>n_(IJjXj?!Y8}G-GUX{i;)QFx=u3ktmB$fNZMW|f7P|6e$OVJ6& zKBk1)V=-I_ z>J|V7X^Tu5=o*R}YGhNG*aUDEU=y@(xVlF{SV}^*gw@Xie93>zm(FxcnMS^2K`#Sr ze3K0zB5{K%V6c-%f$E}5B66gkLBx?U=b8qgZLDTW?e6&Z~f;?Qu#eaD2f)8 zG(gkwgm2?bcBfcCWgw~?DpOJ2WC4|dsB);nqIy^i`F*o79t=9m9mrYky|o$)Pf>$M&EFR0jKSEOGS} z3#iO-72X|`uC(#rTfmlmZxBPIj(g(-tmk^gt})HtpcoIQw*d|Dpa#P%+#A#l#VitB z?LBr7#SA}i^F{D{0^nt4b`Y^$9<+(*kI1%E9B$D!z%vxC-_cF*ocq<_RtL5ZMR@es ziYxynF#}VhMP-?muqi2girSUeKuYw5^_JUgQ!D~Y8)Hf`rL40IO-K!PT9D-HQ1rr2 z3zi+YgOu8ipE#X*_1X@kI=5Qvb;^H-cmt+m;!52AoUP_DjS7EZuM?#fCWXQ;><}X! zZWA(q7$p8@e93X)2zv=X#ngN_1g_aEO|4-$$QVY!+btJ@D%Cb77O>;q@HlR0v+VB= z!8Cld>Y!7<195J%pRGX9U`KV=tw1{s%vBhvRVN^k+G!!QrM7d@+O=n$jC~5YDRcj1 zxPOwm@V|2SDU9cVaX7;~9_9D|aIUN)mw}k-GBb3MgSdHs+b^QN_DZ3anIs;h^rTS%qa z+<=pXA#gt0EKQ6h1`o0In1q+NL-SynnJy|vETA%2 zRC1`o%eUoWDO6DyeXL-zZ2@!kWgQzzWQCBBG@r1nyOgMtY1oy96;c ztCw}hrIGd?E4rAG2a*+`*QtP#8DG)84e3BDx_jYQbVV0GjrfbX6H?$PZXG94pIMKC z2!_1%J$-SB`sHqkwt2D@6-LEi3!UTQR%Td$(bC8--42_XQ8zj;-}(!mKvxdJL;u)o zoR8_;8(O6Kt>HpX?5ZP`I@6si+U9-*X{qM#*l=IOxIY~mX2QwH^FE~~Q0C#?jaT7{ zcH6mp^ER#r)g8JeX9Xg91!A799N`^YVNNs~l@3yjuWWWYJgLfaU<&md58 zg^ri@1Y++^Z$~ip-gK7@APVw7tDvMW$e+)U|7qySYCR=35ekCxHp2vsD5HeQgR_fR zt*OGxR%?=kXI`y+7g0^CweR6CTCLG9yVY8NjQ*|GR^UO_=wV4(p-_jR0fL?4pn$DasU%96>a`a1#8c- zfG_*PgMn=_cZjtDpG8Fe+dM{@@CtaTs#ttn#H@OQ7yWk_n;j_bD=0hL0%Zn_b_N@c z>8kf)3#bejjYAb?v<0ZMRkX2N3dVL=z?PlK7|6LYnO$R=)osj_;mt)%1qydI1}zWQ z%_XkQ1vqAOZqX!xtxXKHW}w{n#z%dGQ%Q7ndp z2xKuFg6v+^7;Zz7KCC;@RGci~$_R?(j6#$MRz`64s@trVY7oZ5AR?MpY~_TNwRknI za;HhLLW%|y&MCF3Wv5zkOKRk;uN^5G;x-En5$940uSoYV8;mi|tqQJU*3@4<-)&=v z*R5A38o0k?0wS%f3LDXzaRaQQ8=ZCws7_qta|Fbrp*oNYWxF=EcF_~|4OR@4`3+*Y zyeJoic%ci5-?~s%3(90+r6S&C@uW5If2&xV*a%b{YS2q{w>mmD+-M?~zUW-JED_$B zI9a$%LM!<0{x?E$3hh6`QiS_Hg<;cK=4pi6y9XPl*^+xF-U&A{dORX+M#N25HmT_S z>vAP<6P%$}^nRs2=@u?6VHr43)Iq@(W^~FA6eK>BFA_!FqzAEKibjhm3RgPX0|9fW zn{)zS*J0hH^QtvKgQRJok{|Q7`gUcswneZ4RNQ#MT?KL9%NKE?vc-3Z*%;a4>Z0It z-GY>Tb!5WWl`$kW6)~QAd*DRPqraswm;`P33@b{We1oAObH7w^36{@_PBh+Yg*-x-|z-JGMMtJf(F%SBGapHr<1`5!} zNU7F>3VGBC)}+J^(1L<_2&y>36f|0`gT(|t;Ik4QWM81^jO;1DvH+`18O%yiwv<+k z3S&z56|&C%rk+DAXd+nik3CoupC_~CNB2d-D9BA3VcOnG7Z^F*q5Oc6scf>D#O zpj5Sv8i@1<2Bu1=aQs<}seGd^6>MzD7aL*@xBwcqGMWS@Awp-Gla??}a@tc9ArF-D zM8V-$zBm*d^Ek8f`;O>bxPR;mdo(49nGZ zuZP2nRAQxFkK(PE64m>Ap=lieJW`hWEuyq);=A) zd5|(x(gy9d|RJYHBAGv|>w*`sfg>KnQ_TgO2|;y|l(zy?WPVsX5w$T9Ie5 z=7MH+`nE>Vdrv4I^tn6EJg)6t*B*3MGVHHBYmIYe#ch?Ll-lS}Yob(k2c6&@XXROE zNv)B0>Hzkks&M}anNt&W^-MSDKAzB+P8S($yhB*cG*Tq$D2`(OK@`^RclPywe?0d} zsmWgnvDJ}!x%YXIyE+nHRHoeDNAVgcFAWc5$=iq_qxU-mAqc{SvmUnfL6&`7MN=hC zNY$J8K9WJfzxUr@)L7)-RZxG}-|A&qgL;#6?q$$C_!T4j<3lm0aG955Eub>kAJ3sO zRaNUOpfXTZ9I7xipM~oJ-Spv;xYsga0XCv)@r@RviSy9Qc5aXQF9by9`Y#(aJhj6| z2IKd+JJj*M$YQ((JjJ0(UT-|ZpVx!wdox-ADxhTxK(i4>2Ug!m6_^>ER6A7+Oj=;T zm{huzfI-?0lUQ9taWsh-7b2x;31jPUO4Ewo_My-B(KM&SVm|iYW~h&SLzyA&upov3 z4&TUzZ8}5TYXOx3i*Tq+XNW(ufXZNo;82BUh=YBt!jy?0hDcULp^p@jf5BoHaonDM zY6wA-S@AqXT$O_X!%*H|5nt>t?|jiLM)tqWTfN$U$mAApC^Y-21ja&LW|$>D#AQy<+-?>7w^@ ze71}X!N76|=1>dU@9Ez%xB9aQI5R*q%k?1uc-(rThwZn@V!Q^k1&1nG;T{-JP8Hl! zEnv$=3kj0G5hUQwcnfcf#h{G|Vkf}dwYm%;B!_Bm(VdMsyQ@+=Dtl$|#*9Dk&O}iB zci=~v@hsk5NGrl>Zp;7Ts;Mn7-z(Ld+eDEdk>%t-G1(r*L z(ML7wg&p!7w=IiT0E@ zue}wBZ#2g(a2+eC4(=*=zCT|)i~P3tLc?hKp(z}fdWp}qQ7QWB!u(LB3^}Ri$OLJU zsrhaivITdFOwD&PtfkJ>EXR0^{F6>`-l)|eh&wS>Y7s->q=9FdV(van32WGq#gLR) zF4fAN8f;48JO>YfL1Dgt;BW$?#d@O@ri*<;p~klo_`m{{f&st5P^o1=e4fmJ7j4I_ zI(cDH8FfyStOWG*CO-rb+%B5+!S>(RHq?t z57-3Kia)Rsy*H>2u6!F*N8AYYA~9(hQkb_;a=>7LAND%vIPeSjtT_eQ(0tDUrI>BQ zkUyPozY)Hhy54OTYV8Ibwsl^!ROXG<-1;b0d#t%ltS!bq^s^Q&#nB!Hy$Yw$KkBM*To;Fs2SHX7R3G#VoZ2>*fHgmR_oh(f=C0ZwzK=zNE!fUa-bsv+9#;=n6mX%$FZY$B;g_ z%2sxTNscU?(Ih|57K(HxxrMqD>EfynI4rvf>EdjEMbC8c*CJ`D)Y;AWi_*pE*Q`tz zUrpJdo$>Kfa|#LMj;5~_MAtzN%*!u5Q263gQ9=c=N)2C_q%(gE znnxdWC?g)ymlew}oX-4L7El>PyE#;*$!g!SfXX0QjYAdA7+OwQERxFbQD>3H@)L^@ z#Km;d=c(nC#9b;V_yU{#76$pmRsVh1n^hjNK zmc?+*iC`+st1X~15M~Kicg&pwjz0KL@>F-{_BinHGz;+hkF@hFpfX2VvOKXP;FL*h zy9HQAYOP-f9x^V`t(gq6IW1?jx&`74=*gintOD z#!`#`yu|{x?6pG~B6ZvwCtwM?IUb-HUT1P9H>OD;j#-3wA4ZEH*tWPFLO8NkULY^Q zydHXp-c|I_CoRYjH?s5-I|DfL%>GdT+^o7ugpwltvp3pjWBTVYJy!9(l0IWb9W10G zBJyV7!WmEc{0HPtO8WdU{E8-hMm-3As^_sia1)o{DG3@2hx~u`-ULpLqdFY6ZfRx9 zCzzYI3}_^;#*$AgTk;`Wval_LC1VF8)}z_p-D%CSo8hSt?drqu8})WqSHF5!y?XD} zt6PaJ4vRulf~Qu=b@hed7{S0jgy(tbASj3r8JMloKFp(m>=`^r1XDhvr4e_DSiDEX z_~AZ@v6{UYyjdzAj+2MTm+T}k>|J_KDT2B8G)4uZ-#F{Beha?={KLGbi|~qhPuZ1| z_f#Tda0f*cFl-|$Zg|RBvLbsG{HNRV`cLVnGJ8+&oy*=+Wy}t~)2Aw$MeUIvK%-ac zI9*oih*FU4YjrG*UZp|irz3Y8T&334I##80W-@jxtVV>@DA;M8Rp0uGWWM9mi29Js73b(U6VtwdzIpuW2_y>6Mi7KatJbtxdA-nVWys$uia2y} zXOyBA&6)*kKkat=(FYb@iswN0m{6s9kG%+DPM~>8eX|!jKxH9wAynzBgV>fa!Y_dX zZ26W5C-kO&?)3vliDu@eq;A`(A=Gx}~jZl+ex&{sdZw zX5HI?=eY?N6K`%bK7p{1jUoN)^JN+cWRXC1dQ1|Hwm$Icob^V1Z7r&><%QdtsJyv% zLqy?qWE^a;y;Nu7jHa2{$79D_A##kphI}cfnN88J(a1O(hi0}kI*e8A-izQeL;J7r ziW%DM%FWOg=op-#{fsc#7_yzxjO^zKRaC-k>Q<#y#FOpe2#!X*Soil7d!5N9Ka<(O zzGp5Q*s<|C7}x5_EAieAhGG2=L=36GTTk*|OzF&Ecm)=dJi=-eJ*4v+x7Xqi$c*rP9Z$VxggnM{0$GCZAqWS@nEs{x=xvPY|AOuvjOlsb1cVq? z!+nsm5Gprg`bY=ZX1_7bQKA{SZpL&^9@oC}N#K(iH>T63DrQKZ45Zc#>9{6|jOcaH zQZu4sV$Ds$PZMFYF``e)U_|#YpxwG4s`AV}vA$+Je+m&3H=a);U&?7bQ?zsAIYt}f zjGNtf-j3ih448MA{StuFP|9uI~w zT_Iwb)0ncwu?;#vzV~L;3_Ek!jjXAg3{!H8_Iob4EQ0T{ljhMAn zP}pFq26xKdzEV{^lKXti-X6T+&1!!{QXU}Vq7$@fPEC>&%|b6>$8ih&e)6T97CI#d zx6orWGfv~#E%aX^xXeO-6t9?t&aT`nbb*e+S?JG%^M0@G_#^CO#FQkGON6R&^l!($ zli4=^{9JZ$#|P|Sm_JELA0gcx46A&_{lL)%Z<)1=`|&BAnKX!nNr12##o5*>AJSp% z9$K84=;L0Vz;WCjCr`-4aFULyK^o%;lnK@#2$35SVSsiMq`k8=Sm-S{AQ zjx3M!ps8kg#0JeRk0po&A*?o*$9l9CIO+LuxtI$cW~jnGUs>1zW(==d+T&NF+G8U{`Log+RyP zY>QLTR2{+OW$6M;*yvxbmReAOE86bAGq0tQ@YSpqhfr3*TWDgIsB~2b-a(&qzoAUj z37;=e9BlBUOTd)42BkYk#+#+diFjjSda)-hndY_?TPjDx$#00)tTGZJvDPzGpDi;~ z8SOaf?2}ZN$KIxSst1T@QYBz*Yuu31Ss!c-gw-hCwzfuFhqe39bJ+?`kcO1w{j z9`^+%wjdM8>va?gu{Mx9PozD8V!d;_dxex=-Ad{_=E#g7J0rQRJM7(pLc-DVto`srP4N**&A)k zO!unBULd5t-vRt22T}Ijf-{i{{58g51|4G0s@mej#tAFW3i}HNRiMiD@xp!(Ld~p% zNMQ8}D@(#Rq841F#a%++-#QT3V$b*g@G;rS^74NJy(?Bd)NC-3%|ez#sBC5Vi4IU% z$Z`mkD$6U9$=+k(`2}myVzdUb=F7u>;le>4e0joBr5nqdXlvGGF*GUj|1Z zahGMnz{R>vldJ|92s7=+4c>{o&HT0Rg)7}(o47U&{kGj_^u|z9t%2B5lB4NbVtJ)` zc1^{O3j;k{=VN_R0HKdt);#_QcFbxXOPt_>&v>?uTJ!h{x;Vv?Oz@63hNmLn$tAHM zJKI4v+JHSjSbJC;pi`e3s>uyxtO9amE$b)cxUZDI*k2sVV@v)KI>t4!>D(NAZZe?x zTbuiVGGbMxeN&VBlqFI;nSd1~zMBo!MlFY3$fCr^b9TPHunT!k$Ok#fA2uHO_6U8_ z6{Wq{nBrl zxz%CxvYhoI=-9j%NSe?!&OrqBg>xK4K$f%qK!5o|7G$Bbkjg3f%UQ2S(z0OJDR{+# zUF^y!*d^?U;O`D6Rk1`^Czub12;k|uFI{xlVNmojMbC7_S!cVU{Tsl!+g;1dol&SY zkB8*+4sl(U(`4o5RrI|<2Dk2}f=fSKXhmff;z6pEh*mUpj_|$L8*svfKv(Gi)BxwW z+u)5=8>RLk6w10JMM+tQvUa9)X3}^Tt|WxjPHAZi8Ch~=s}5`TpXPihD`M1?Al4B? z8$|XYpX8KhWICJB5hfIufw*}BR|)h9#t{T#;Ho?W@*bh9pgFXUi+z1(q_VF3dHUc>|bw>eH)kmbVeX9dh7HTMjN~5So^&XBYQ*`Qm z4&WyleX}b%bvxrQgQBo!RU5lgn+0TaY9E726XwT>WpvyYh$K~yO&z7SkD79!)*lnu z{)z*^EnLZ8vcl|CYbT={_gg5E+-p9bAK%)#p% zpt6wD5Gq?a-Q)n3g`9>^sdBoAEzbl&(yN}4CJR|WcnAq&@tCQ}!HSvBLa;d_v)S#0>raHYqF6~|8$ z6@FS8R+8euF%J!o2VY2xUodY>wdV_3@%gu0fv2S70jiUJxiVHMd-XcHWZ?+(aX7rS z;lZ(d>_k?Gf7T&hQ`uK(PkAf>%iH6(_xo^6t2h}p^6h$f-g;`t?yyD=!taPAK z>(spPYTIRXJ_oyx#9@KlW}MZK68q-sebR36XeP$t4nfx`=imDX z!hnCTIe~;|x-SO~Iln#*eA%cKy$k)ZQm5L6g02k@&yN}Q_D@vc6yTa)s<*tUMu#03 z-16IPc7DQyKg9OKV{_ayUjr5^ciN4yG1%kQu2kXZ;rb}HTz{e0XnLFApGm)2Zd6O` zedJ0w2)o#4tib1F@ySUnkG zrZ))h9M|8`%jo{m(6JM%$h;6lpk1I$%M1CfE5pj@KIKm;U7A&t644G}lhJ)@Q>dJh zKf1pWNz0=9oA8Q7_u18~jP9Sw;(66Zxl|qT>-%soE3=S#$N8`9OPpW-@*pGr4<%Wo zItYD={nzX9)B&+kReZ0w-7ht_`<3yDJ&k7T5K0TU5*gpHRmD0jU?in8)1uSD7l^Rh zX*+H8D$@dX>ace2oAYS_f?+X34gWPO&mJkUme+KmzrG7J^_* z8n_1tNnVcK|=hPM=-*1Rr4>X3!z_tZHMBYSV|zCwMu7>LBM6 zJm5fZi@?J-`50~U2_ABQ%0jk7sBC5X*A7rw$aV;oD%-j835LF7w#`iPkWZfblTWZ1 z;5IL8tr>8z5_>ex=)}60Q?*LX`Sp7Ako$x222sI92a;JJWDUctb!~}r9H6q0$Pg-9 ziF}R&R2C8$LZ#C1h(ucV$lz06A|!vI!!Ytm>1usBFYJE0P|d#|{VK+BCT(NQx`UPF zzGNHR;6P7{Y=b{!2+fgg@TU&&S zQj~$9)O_YUyu`F7+*wJv2rKLWax{fp$TpunSpA;TNn62Qtc#Ipt5vAKHX&6Ede$ zpUNruL+0y|w0uK6Uhxg_c$F_?o@>m{`+~-9K^yNy!5~BLh2YI!0$XJfEB`xfJS!R- z@gbiphRm*PhP?M~=mh0f*lh!<0dP^NT5Gi0m=pjxX0^s>rwT{3Ow~&5alc*^k?r)- zRI8`EXWG6~lOOv<}mHp5fcw6m5>)AZ6s;b5~lM?(KF3$6MMuG z=-_Wct4SSsy=Y|<(yBuDcJraO!j>Ve3D%hw(wZkQqmN!b;-lX~M}N~`NB>9tAH89w z=utl1;HpZHoM0SL63t7&EOc1}R|AASO5`OBOmMY^!RJDMGvkhcDmu4f89y8W_eFdZ zukg=TO$WEZqwdmB8LyrWt-7~^D&SU9j52%;aXG#$^lXY3LEF%wVjf3Xo<~>M9=&Uft4B>hB+aTr{fkkTV*^CJLde#vGQ^9 zB|GI4_AV1VDT*~Z813}vw34w-ogE5eHs1af!DaU9eR##}Rd(fMyafUsgFCI{lJbOK z-aFDM<5_6A&A5%$W?cO9S&ca%{T6o7Q{o>gwAgTmJwEIdJL&NFYhqqz(+_<_M_=tW>PKYTy92&@|+_hyh)Jp*$k6PA6z_(_tii%c zkh9=7D0_loXQPGnGk~y%g_STcp<^`+{s8)$SqlqCz%8tckpc0~$ii9?*BnXFnize! zMe!r-EQ_6`?;QQcPM;ZAcm`a!Y4en;;D27LgWKo)YSk;%M`33vZsqjY-_UdjjWDpj zDpfGbFxt_nkNQnGL=HCVl_7r8ge`oy@vc#iA|_mUZIIF_N)HvnCuYYo%W$ zdY6l>-Md0FFv&k;M@dxKb_Z3K;_+qstk8r#1SVcCCzlWe&3sIwOunCO;!PotjA>kh z9kbPj)D1B0WRGc_RjHN6eQzJ^4R16(*b9q$x+mJ+sYBafgDz~hy<#(-Aqh1-Djk9(!64U^&sDxvs6sv8kqYEH;KeZHG1Mku`%imn6872`H$%~g(jEwpZ1m3A z1J*!$E!Yqd1Au|BDP!0g>YECUiHCzkx zUR{r#*FTD@QGg=|F9~{U`Nhf2m?5WhL73vpI+cWOFffJ9vi4r+-frfQi?2}0%1FUI ztTSy{d$Of?8FA>`5yP_e+k_539xNRm>^~iB=1WOb!-_gVSp;_@N`%PG#ufD^0Ky(C z>V$y_`O+}>0qAdLSJXHHzM?+%`*4MSMl0&074?_2sE(0{FBa~?{=^)U61>nC)vwx$ zrUERQQIny$+^M%3%{H4U`I@&Ct!;&_J6|*ofely3q9s=ig|KXn$BW@?^ct{CFM-is z^simbauTs!iQN*~feH0&0gC8~CnBi?k~2-@X%@CzvK|uCGiSud6CBO_s{l$V@k)8t` z+u0S`iWCuGOUa=J^yPB0N(p^x^ z4?~+Hn9@Gd0za%D9#)epUu}!Sx-7;<@WAj*bGo=wnsV} zz^~o*{*a$gv)7+uXVt*pSaS~6t@zJsZ|x?gMIuF^Czm}g@yk(rzL(X|hNzL3BY)XV zczIT?*Xy6_es+$nT$6ZA8q?bPH7_$nG}R-p$0cCrBU;!3Fi`dn=rIgHhUdqSwvOT8?_*?@xe?+#$)Bmo0rAS8ez?&A5*^LEp*{?=iv)+8`l zcNUwbxy+e5O2WQ$#Ax2NKjZAG`X7(cErJMn`neZN!p2bx&f(%Nk?AKtXg#Uhcpi_3 z?j3aZY6qw+NFPFFtGmy1fXYI5hft}ydzr8SBYO5y-3#CiDoWcNAWvf4?3$awkV|V^ z#97CdNV^?|YC)tBD$N-A!-zQHbn=Ik0DB#vvS4UOTunJZWsj@$Nsd(=A}Z-d2dHu~ zE9}Njt(MZ$%HRYr%>fpZ30DH9j*^CHKbbr}c_|rjus)$IfES{toWI!}LbW>_sAhqe z_dxd!6UiqWpt6v=5Gq?8^?3)VEaWbPN}WiCfXhSYK}5`+GYJX?A@ltXpeJ#y#Y~c0 zIKReu$CgSDI}Fu=N+DFXGs$BPP+4%aBd(VHz}}3s$5r}FvJm}Ylv|H?0LzM7UwSqy zKbJNAF>u&{n{B$wfyia}a1xlN0DGNj%lGRYkY+*4P&;jb9a*biHjT%fKePalIB#R5 zltK$?BPHdz4p3QC=5o~JmpMRXkE85?4s#C}Ih?UDz_gu%&UVHgs>0IfyZitxEHFd$$FaF6;2q9k(m z7>{jYP(@iWY;7fA!V{mGrSe`rVjO9~hmu?yyp;&nD0t;d5dU1cdT0ZrrTQLwxiQI5 zL3amVRs22fBHTeOt~mCfDpxZ8$in6QC<20QX^7txq)Jl5;e;pCbq=AJBp2|%BA5aJ zpW*UZpC#YVO(~hQ^LN-WOWKi24V?;^%V%xb*#@;V4!UQu>9=6>7~3Zn=>wE*p-PyJ z5^8{|CTi&Rt5d@5_w^TtGUewh(6OCi5DJXkgo0$qney`~S14r459M;oW!l_rlk!97 zN0s0Dk@EAuNL-fk^IN=PDL?FLR;K*C5KWCny*kBmep(}AaD*aO^yKHUfNoC5guqFTGiq2m(Dec(rW0-=4WuUvJv9}^=smtf@6nbhq{sizdiu?iJamly zx$eDlE_ukzrE<0U0OWqeeFGQvgN-6OCnOTZy5AWIv23pToR^8_Q5()WvHOHg*6MT< zD=L$fX5kTA4c$9L5zcmi%EIRwLS^fx+vWh3h3_eZN~5So^&W{trUQ$vb^t%gAkXd> zIia^+%;mVfl5tnx*wn@f(Y!Bmzt%GuRN8*6$MGW3V9ts%(jcpmlIMLk3I?`1sG2WjO9?W?r9b!PB*C)h&4Gmv0LkN3*#7Nn!{|Hh0n%%GM3eW~n} z#O#{RmLBuoB%6&M^CtibdU(te1}5w~jp>ho{$|!=jw9e6^MyZxEBrI^m_I#rVU*-K zkI5K!tR0EH3m2q~=e+x&t$y1pK?#G&smR?VENc%>as^Lzb&C1R#XQaZ(!vie+Vk@t z#yZuiT!zD&aBc)SbRu$k3wOBaSQreuz>Qun)qDg=JoQ@aB#IWDdgtN*hy^o*3?Ya| z{Y9opBuVNu|M4NXEamLJgkUVik6Z{IrpW+M%atdF7lKFVlkSqsS#?!~yTn~WvZoUO za+6FtlAnSdGe@$NaVtmi$zl=3g%@g(c$1A*tAYhdq$G(mR;VmlzfG{RuD@83uHm)N zaZcATA~vUM_=&6w3yxaOIm*KT9K|zvLU4Fle{m=|>p9qQ9?pubwzFj{#9kmn+|#Ea z#+T>a`IA#T&(=RMS*?^S?dhAlOE7zi;eHLsI!UIA!4{lz^kIkH6nqJq1Z-~pGF<7q zeO|<<@2Zd47OJaVyO0qMq+(y#STl)w2O?yIgX&+Z{v0}%g`24zqq1vCgd>;)#B?*1 z*}`@_!tn;YVi68@H7g?=m)1&?d{cAzlukK!L}Qb1Q)N7`qe#9#$Oy*k$(O>q&GB%B z0piJ0dtwZeCz{2}_~~Vh`o)dOVXrox;caHBVizOudC2vUeQa%(CMQw~bsa(ArP^J2 zMwH*3$aQwcUY=;h9s1|GpPWpiB*iyaEpl41RW?_> zW>JyqXs%`DYNDHjrS8#bELOgz`O3lr`dR4SA+qsR2dFGOpdnPY9?%CJptA6QhES=r zJUp(NB9iy;Z_#%M!5?)PMACvWZa_`^b(*=<^VBAT8qT-%>F12|`o_XGmWk#;lTnYq zWl(8Rk7IDc5p-tLM?`5o4p3PLbqJNM zP@m=im4#4;P^m(_BAM7d#9Doe5PgfoK=KLpKu>e-87R4cabX_>oRg@p0!}-7{er_F zOBViv$^t1XC8;(H5t9UaEci64b79xaM)&&%0m2^c_k@87BZQ(7F!*lhZ)V-^I0Ei| ze<{is{u#O7k0cgmlDj=dAnt#>9eWc-yp_BCt(TRs2I6>SpI>Li!^86hpl*1hjyc_| zthjWoC)kWxPYBQ_B=IIB$|apGKp3?8^y;fMp+E05ZL> z4tuSpZ<&szd9m#PTcBECy|LdbwOSnr!mtnyawc$TrRDhtO64}hgibjC|BHe~S8Og0 zZ7#v4hf%f(16xDI%@!s#LktJcukf3AD8|mst6F#_hTj~*uaqLEH0+n~K_=R`pCSAd z=5u<5b;Z+8A6_@SZuQ!=o8XVr`5!}EP?!kSDp-|&kB@E7iZxx&uCK0uAgo`vZugL^ zfw<3awpeTl-r%jU^R>|*41jWD6k<@mKMJ+}8(yhgZgc=T>|;*@qGIid26Ry_wP3GW zv_?B-A<3BgJu26&c10yFcdt4X=G=j@;)6H5*^wC^yy2G2+!(gCVMq3gGd~jDcq@^7 z>Z~=HUP(r!svCn_uw!PoEa5ul4RFILOf!u=F&8;iQ``Y8z5|EjX{JPqF%|+Wy~}jk z=AFmpc4P0^j|Kb~4us{;e;luvcbQ$yO7HTvMicy|Be-_Y?OHzD+O;e{K1jdv1@bcm z+}f3;BBrQ(sn)f-SILMTlAVh=fcfd-4~Q`S3$lf<95V@H9{2B;^v`uaHmBUbaSV$! zlIr`-OxcJ^3EtTx=8(ICK8n0V)e; zP6(B)GiTvXtR*C{aOQ+isr2km8Oz5zz@9YKW_Qf?VMG2g0CW=f^eAJw#$l`$+!I38 zqb7o0#`4(?VC5u1{xX&(67(ozd8xx#tw~_AxUBV)siP$9OFvp@#7X!2_qei~u`-r{ z1ClLpGX~u!Nnels1qU3UvLJm3m96f6l><~3x;unQ)!qFlWBDcr$ded1yXMYc#&Vjo zjxCYi=P*64sZ#`5b9P~~J++`yG<2OB4V zX%4Vfn5K@BhS_s6aqG+w;YnC>1>Z$WTdZExDp38gJrDb-z1^IIt?U}C54Pw30w*WU zem!i@;~d6np)5kE(#0~Ng!)PcuyT?hzwK!vK@Z#W42Q8=lfX?dLz7YNdFm~avoYv; zA1I9;LDz(V3BQ7dyMKiKW;W=GBj7>T-N-HYXB2cjT>5pABCauo$^F9jVpqa%1}Y3%WxBjV3wA!iiSsQ8cVTrdEDPr2)#{;Aiv@-J zQH%;fG^hsMmKzg1xP`7%?_^o4M-&#r@KJLVgJJE)5bpOvcN2CPJE^G10%8zct4+dQ z4JbAixuoDgo~vJ6VHLtQtQ+=xezhL1+U4R)hCTDM-54h0@w7&#J=uZiS}R*$*t`59 zerLDW!tivd%|dTujcT>A9|wfEhuBwipc*|Nj@l{8nYQL#DiUg!Gu8iF3sw=-O+?Ev|HrZ`F3 zF-CG5R0lg|+o0qegC=O^N^Q@Pvj_^4xz;1!e+P;VCXu?FA{tPLGA!>#v{SdA9TQf+ zxxcuS+wxuo9XrK)<$fk4hcWJ&M$!Mo?OH5k+;oLP?q{OhPPt99qiiD1)NE1tE@eLx z-_Mp|KhuYhxGduQVZ34yXLgk@;;fFk5Zrt>n4=;Od~LM1Vl8I&bXu^VbZy<=vlchh ztVJtmEo9ZfhMKjt#%QPNPx~}$Qg&2~Ix32eiqKI}-I?Qs9hHK=Uc|C6KhFN)>UZJ~ zI4ev5jM7Tv=>9{z$JXBS?Rd4jxYg)1%dm5kb@8~RhaH9`#gB)7FM$pG?4M4k{(lVF zD#0@VqV2&m+3&O9H&_inVP@4ZyZZ<<+a9cC*G2YwGW%V}e%Hfq@MP#WI2EognHQYK z|2dsKJ%jz8$$p=W59SAF;XjLl4g8<8*`ssV??(8&DcA(R6E_9t!9T%Mu-^;t>Zy2j zp}2PuUOf%(ZN;mn6Qhu65=_G7_TXChg{5!{{&~rC(Bc2==l@Lce_qW0`P5ILuTQ{F zD|m^#b8{(J#aZzS?iZA%yjX1jlf8O6z@ImM4SsIJpT~Uzex8g!pTwWf z;Lpf6;m60Hh4;hH5dJjqr;R@sd<%ZI;?MSP!_Q9qdG2@N=L-D!0sj0He?EZcrn9r+ zu~>J&%6nrGl7N*h!F=d|Wl-ZHJ-}ssCwSQ+#&WOV|GX0Z0cN<7|8q0{=TG=Qujc=} zhX3+qk$f?MF9;PvqH64+mI`E>ARxZDlQ^-&Y|DLIVYa5p(^>9xN)&^mq!=Lj?dWvS#Nf(7p?8-%dJST57FZ0C&RL+L_ja@= z=(HB#8)DgUaMVn5Q21^19l!7Rmo)so2A-<;#Wx)An@c$iNX@)@P;~lZcRD4inZ;7g zAo?{qNTt(3Q!}>@3cc@gN3TK6{P2M^F}M$&s$zg|2r=-3w=nBIxDEc<9=whJ@ecNf zP*0sb-Icv^^(&3(;3u#qjcp5)%hR739u$IK(kI>3y}uK=b%th-WqQ1-=lZjeUaXNYG;dmpe9coFhh4WZ@jiQ?1_6hlJNIhSNs)=Cr4nM961k97S6+y!FhOcrBR%m z+A!KEL)ucf0Wo?dWt2>gP)(^z;5A$Qy5EE?i?9I380uKXueR7u!0i`Z09yd7Y7RWahGGL609}$2=1$iM0p8ZEt{0Gu`tqd;X=Hw*k5?s*mny zzyVx4q3UR%T!js$7#-IbGkUiwCVVC~HWy6K~a~ zP2dKKYFM&OCyUs7w0y|WLqKPy^L14i*k+6#lhT>V9bl0KiLlzmfV7OhcL7p4KQGo{ z?f&I#Q#FZf8j2-|pt{ZM*aR+%cz~CWNo+wh$|@Z%g5eD`%(L+k2HBHNZk-wOi+f8}zmpkH8sXMoD}&uN-CYDlS1Y5_!D=9rOkcczzF055?5Gr7 zEp(EGvw6^86b35KTR@!4kqz9yz!Q01A^6uYNifTbihcpJcSWfS^_Yh)!uFlhIcT9d_=-)W~GgbLR`B+ybY?O!*ZmBr~Z}>@KZP0Dod9KqFWm@(YJ{l$vm41XLE16?u3yhS&o_k^B2g5t(K9 zb?jJ~B7o`5S%zN%CtXZ?#+IA~5c8xbnwR47!rt}PuJv~6C+ICdn)K9-8Nx(S$LnE-ZDsyvDi8)QwGB@`=S14p|E}bc;@H=2gR)eCpx~i>v=H`ZmUb4wK@y6g9 zWL%b*Tf!@rn9HtuC+0Gj9aA&RagOtdSQqs_8o>OsXGJb12fr-%+F|3*xL-H>)`i0h zx*w!J_Jr6lq#w3*5FN4CrRgtQN9@Z}Ix{I83r8%%YA5iT>q9zX_vx^9-#Tj@vB;Ow zH>o;cm&e#DT5(5<+Aywx9gz9ujr#b75F2Qf$KjfQ?%)jwg3;l6oUj*T@)3bzp;TCx8WrC&m+hfVb>H1#i-fpF@akO;0zKeA>7^myq4tTI|y8b-}U8Ps# zUnS;$bd%8OJ_q7*X(e*z8T0weO2MgMLJy*h9dNmhO=v- zzd<`)5oYdmJ?uZ>3jd6pu6P{|KssGxT8*2!E$krf{K@WgJ=MnP3JxRC^4VOji*P6c zCTg{6F4y5qE?4FAn#1)-{AAqWx(pny{3SXw9i0N3ac0WlZao6NXQzZI3ln$ilc6(v zcPry8=5A%&#@ww>7iO#KZVizZa-MXy&I$8{%LMYDohcW0aWK!-T4a;BlXX7c5IhZw zcGb!H(aX+%{^gghZTl_sMYQ}j`dN9R%;s%t0jo4u#@i0X$5}-IED{aHw4q*j=)W6k z`qy?UO{l+sdu*S-Yv(RZ6swF?%G^T>brqg}{>~j9s}PP&F81qt{b~*BkB>JSoynrN z)Axra+U>~=C!Y+@8_lU=xmN5zqD84y^hY}8Iytgt!Vt=9X4xR9?4Cww zpy(A=(tR1k->?`3Y+NLD-Mi1SLkG8Sv%W-(g-t0y8Wc>TqnoLLPO~x{oCiII40;ZB z&KAdri+nsjHx?v(w3_rC6p#4}`b650n9^f@C3ej8j-20tx^vrO-svy4q}TLX#`;`D z7bSSi@wrshike_6GLy$V?M=-*wDFkN8OS!`AM%KFi|*y4o*N$Xx22H40Sl7$w{k2P zqb2w}o%W6%^R$k0vBn$Oh#ZijvW5c`(qlg13WfBTqY`tPk)+3bmn#&~V@_uZD*O%@ zk{)xq&{DN^Zjbr*Vd&gr{vcj4k2$-Vl^*j8u!90NV9~M3k@c}GX4OM_wDw+PR`W?J;W;rGA47_ZwFTu_ zgJQ_zE&Y}Lx$d9OI_Go(PL1B&AxWkP^STdrAvTI0Yu;P>l+7>v7NOKJ4_i~p#$&qz zy0>!{q<8{{SZA8Y7Du%{6%F#KK*M^v5L+`?G(4;SXs}WJ5~l`-Xo3I*%Mc}kL1%|U z^tT}B)SDDqmC_-aFch;x^bzQ9&<;_AnL9+UM2zB}QQ6F6HIRdlcFg zR#n+Oq(9gkZf}Ajn4)|ptBHwIUJ2X`EjW3tz2C<&llvQ(QO6VNhWX)fm}v)fpeo?K zDG%*|Bh*Gq%_*pcRv(2dJlrugw1K&OaDrL4fw_CeDzN`ebmWQ95j4e09bwCzQG!#f zgY~?FmXH0X_W(^r4?-0%VgLWdh>1$y?V!tgm1V)D{9Kw+xuCp&U;+finUX^uW!AZ+GCwaVJQ9RZ|o)8?q zqrW(m9=qGH<2)R-9QnvA;E8Opl||30>##SP4Dh3U8elxk#5Wc!M_2lR$!eusX;0rQ zqfP(n~Mq+;J4|1}z$!5M+prgTu za;l~ZKn)yC zbq_tk)E70q&CQ5bdkS)hSk6#3H%M_FXVDY%&voBBtDQxJMdXrP-Ew`rfsheVbO+Kh z@kZ1}^CBfQVKZIqJ|X6*I(EhK+dxbkf6~d&y`7~eeIKEgml=R3vCcGq(&2F_Fd`I~MvIw4VuK z=63gs#ffeo<^`JyKc%tHhs?_S4(JvDbzn-8g({z?- zq{r=A=6;!blN9Hl7ZZf^$qQq@JMW(0TRFk-F@HajG{GU7x~m+PrC zV0cW*TQ;_S=?LZLHaAyEMU@G z!ufBlU-fHH;g1Js*m4Z=WW)ImnzH3ticnMglgKrFM6moA@`;${sgT+5YKS5!+P~r` zN)~N=X!>e)(dND~GSUS1*-`&x{+7cCr9dA69owx+;sPCf6L65-0~Z{F!^kGkA?j64 zxDZ*6DnWjWFhpTc=nA1Sx`tJ7+1bj3xa6$?|IYpnH0j4;jA$ zWzLlTPR!6BRnwW?AY{9>zhrwI41p7?3(Us-Hp}@s?+x%JFyZf_gOpJ%m25{FF%>2m z>d(o@?&$BxWIZZ5vcvhvZf7HN&@p!+wpf&qBga9a5n~9Mw9p#jH?We27GA08ev#USZ^%n6GLz2BUoqYF(+_9D6_ih$tDJfc6&m^?gTP^$ zm**SZqIcXKbIowdj-(km=jfEI=N!eDrMo`kc}KB#CW7tl=@Pe~CZ5TqD+#afaK&qe zbB`oA*5@C|S9u-0q;rr?I=?#Jfa=*3HF^3`tuhWLBf(A{sNT|^fTWC4b*fd-wgA|? zNqGJvI&0?PdFiwHFm@a-Z$pU%s<7|pZoT11u+c8sJTYD_HFrSmn|ixas#=_aBxwX& zhoNRvdeu$Yx~P0IF>90#pDGuN6Om3+zEvo*;Xkx$1ZV4un>cY-sQO^5x zSi5)4c7>#|uT1_^^Nf#FxR3h6wWmbWJgVcSm!`>+Rh&SI;Fk!3$ZUK7cp$dJtb1Yx zQHlnvr|vH1Z$}NZyj}G<^HD`N38IF60Z>|+Ar`eD7en`Uv2l&zWybD&)|r;EyF8|i zB8(I?lq_PcqUYQL7~UfYSvgpQJdKY*J;`a_MhY4HO`uxm0F^~a(GaRG97Pgm(nU-51iDQQ&^3-SY0d7jVGaC|R;|=*U)zD%wKaWnsQ;ccFH)u)Xw`e-c({{+w^q=} zEkcFPUdu$os10Ya*nNVsD;-c~A$L37*vxl;%7V>8s8lvvh;{=-8^1*`)^dO?Ka+8g z`^sc)of&fKd(S-muHA5I<`cxE(JD_8`)`;PWp4e?lTH##7?PN~HQap}`is0d8BY?k z@-)Ox6hqi~j{Q547xB-ixGi3X3Q88YjadNP{QC-aASPQ_m1Hm7usyA~tyrjulXHu3 za&A%Lzqqpv>$x;)ncf zxB3b(ARP@~My`rG8vX)r#6?=ob9v6T+9XftZ9&nMN#QBLbEn~qA2=s)6!yfhS}ElT z+=1?m`gKSXp7I)NlED!aUI=?sy_?JZweu5pdd=oiufw&BGBa6@1vAA=EFZRRiJSi6?UK_gE zft_QJ)CXI{TG56VxG@Bo^H3idD^KwEi){DySf%P0R&Ks{>*n(>U%5Kwky6jiik8G= zUWslJp;+`tT+VX~h0Kqi2OR^JnMfz?p}^--!O#!$w?_Jox(9D~D@WdgH{1s3BZx?Y zN3+gswqyJs@SoiT8fs^m%KI4WBKvlXi+o+;o>1qXnDc;WsMvji;VV3|-|M>~7)5k61nqfI&=S>cF`GwpM^IB7?}ILQGDxt-wGu9{Hhdf{a5Wa`S|#Xod~ zLgso=i;2!%4j7WTUUVU?S}iHLUVQsxujBr1MRsP#{k;XRSfUrZ>YeDtg89szx&;^e zB&*FJ>Nxxiy zsAR2lU<4f?BUQgX-k#XF9SRRX;Bu-q+4RdB*A>?f<5uZ1IQaUr~ev8N@!fK~bv_OuGT;8R_+WqjXk6h{;m~zVCF-fiC-m9brWRm+A z9ZA9sY9MHy5M}~Rg0CP5#t`On#Y(I{@+a-+2bExHLY)Hj^t*&6Y)KWnPq6zFd+gd& zD*6F*Z?~Ay#6`wEzsow);+{vTN-sj77W*`}WH{0v6IA_fu&8=$22gce(rgf+OAqE9 zsWgvT^7Xd%lwj-lUxLgChafco3}S1;SjR&5;4ZL@A3xIpDvQ8g2$dGt!%3GSZy~!y zFm|c~Z21Fw9Aq0S)LufD$IOig4LY|i30p-iIG2gL1Xq_j;L0Lwe6bsMy}$t~3+@V` zQn_mZ7;zM5><+=#gac&xd5Z%)Sl&8Pv0fug==`-zw2azt4vXCcr1iU<*`L%>lane8z$9E1$V_W=KxxZBx#!d6Vb z%0jk0gRi6rkCta}Of1hp`G}S>@Nd|0e9^U-zd<7!52SqFV6o-O6!<25&u(o%d6Hxb z{1`g3&lF%R!ZHOI+ptW52sa_8$f*BZUYT>&Mh3HUUW7;xvFqU1$RzQ=|CjJaTwIjE z|5e99qT+=@ei>3ytXAAr?Lx!2e=iZ zQXgx;fx9eEpblrWKnYC98-VBm9L(!=COscEazOZMUkTcjA$6dMHN|{5dIb(>O+$5F|#uP78L)zqlQdCaBQjViX<1n^^!-eZl*~0Ox2kSOs6oqO zE^Dimy*{gBiPIL3!$774a0`FKZxy|ZisQxMp_P|bR*HE*=NH`{NsKuCF~Rj!DMWNY zl;oaW98t_=svY%$4~?v2tgxfjI$R#ZB$XBNgp9YA@@0qdo&bu4Yu12`*QSfOWolcf zwt>Tl6{?{oYTPJg(bYIH)FLdYv@j-G^?qx0FTRGnsY@%6GgYJujI^F}N&oY#DHP(- zUHU(#xW>K0ShZ2&|6o zkCi&rb_;D;9-`epQ7KP=ZCQfZWvbC(hACLNtOPC?xkLL()eaPjXGvI~S?XT7({7B7 zc^%k+TlKI)09v=}FGM4F6a0hTuLc;Qco%Kyw3$kC?GweLJtcDZuKvoQ)I0BFROa)K zrg!jRe!a7Z5s_+~@E#fCCsV#=qbNc)l)C0)Y>YNt#C1*Za(LaMhVG|u7}<4AoB*n> zNyWcW*Ytkt_BkU=ghA2Tb8+i%QA=S#m45J3Mf)7n!Rb6s&?V*}8 zS=Gwo|7ZT1!x*JnSpXedy4se(If0`MbaqVJs+FZUjO=P9P5@P{q~hPGR(iiRY{kHY z5z{))CE5?oyl8(#gv30|A`^?2xUGOEAPV~grFzf5YOKQZh zJ7j#9r+g`wu6ZsSpG_BeOqg9bjO@B5j(k;<1jjEW@TS(VVyeM%Y^Pt&k^s8408N5WvusUGhJEDSo; zgC%tYx8jc7uOialf>#f~RW~V_yc?6m8>fTYpm9&B4sjr}L}J9{9B?~+SS&|VvP6PD z#NotIBt(;lyF`yXL;#~2-^M5lQ6M95Kf#V!1WqC&H3Fw30(6J3zAUP%cyVKLw|72- z%tZWO#KjfgB)608UM2W=tiSkRA!Fuw|21@Mx26tJDs2QrX-*sAhptda8{zx?#gN>c zMrB0hou0eX7IQ;k+E0w%O}sI9#(x7x-g_+kJQJ_j_B3|&MYwl!@Fn*9W&8~>e=90* zA+)i$`Alq2Te}~sjQS(6R?cP}U6#)}Qoc4w8);L*?4o?WFjgcg^q4vlNhLLv%BPZ(7l~*PuUc48S6~jwzN#h zLWB)HWqnE5CThVMU)&`qspUe+>*pN?d3x|4*u;O$P2-QVe?ryy6Jh&S_;74@-n`fW zJd3>b5GplqectI5b?`Sq+RYA7<xN1AZ#zwT@j|s_hFZpFw^r2+Ha_RU1K@~_xAG|a6wd)=uP~;|<^wInpJ7zu_ zsTWdxG=0dDKAxH9GJd=Tlm{;MqUl@DYt3rpKmJ#7RhAn~G6Z`JbR6YBYnf#DP%2RR z)$A!BSwgTUrF_Y>h)LPaAk#exYdE`spu78#}iBB*xsq_ z!BT!>;be?4Xf~CKsZkeAv9zR~=4cs8uvbR93rm9viVg3DLzm(?!iUc2t%)Z-G=0@V zJON3Og5n0k0=z@UcOd0U4&#&J*gd}NQaY<#b{5n@Kbh_czfRHk zw)Gvol+H{_$)dg^!fK}=HP^hX?|7UJYxg6wJ}8*LTd~|KHP7wX#OCp0BZ)1@ynVWk zC*jmJ&@@l1Hi0a`X$XRFo2#MD%(4}&DfGbSVs67l4YbIo`ka~5(M^J_OYE^_6Z_l> z-S;i_xtVpQ#Xc8+jxu6`JY;BKcL)y3gT=wf4B()@$MwB1Z4Dz1aaOi}+y( zl^XQTdR*Td9iYn}{N+H~n0(p{BTJ$hh_S;7p)mk2L9oAqgW!!`+e4-=HJYu&aUPNF(e# zEd3k2!at*mcz7KyC}l`FW(x73+0po#ShQG$ln=&neZM2%QtyK5As+m3earp_kQXM zyE}!8D2Ai1fcivU*@v_*DD1%t5kWW#59y==8?E8>Kyu`{AX8s-lW_Tq`inyuMt%Ww z9A$YV1)}h|X{zN4q>vd8WJGBlYnGr*TEUfULy#bjIl8VUTGb%f&hGoq5igorgi*pF+-DeDt**e1y-_ z`KYglL8g5!7bpE|zc|SO3Yq-yJXa`W@&g)GPKzj6l4GMQ6f*gNF1zRo-vL815rDdB zRO>M%5g^-PkWcvyuru3j`&7JQxex4WRwe?Rx9!3mJ9ajz`(WuX6+d#NHLHh*U2bUuV#-P1)IkloCiWZ1Y zYNKvPOlrec74ZiIH5Gf**hJ`k=-$p}tMRmqAeM4;W(e-|Ce`c;?py&VpkD3Jc`9q* zBn(L~yEbXBh5lwLxP!3s;LaQH3jd6PJ9w=HcVZ&L9cd@yYeJb@1$S~Dck~wWWoig% zaT=TBj^2eG$8}hAqz@6&_oRH@sK0VVTK)pQXD79kCrPB`gV33Mq=m5vi?lGdVUd;y zHzB9UVGd{k?>cRO=YT zKFzZ#gDP`ZUV8HOk=r;shMTVyF43M6eBVDHd6Z5w%1EwF>+~#JO0BuoVQqMMijhe@7^H9UccATiPG78t}H8f}e=P zi0wM0rbpb^V4H$N^lKuKZV{BN8x+bys4^d0bOezm3b*o%4B-4h4Pa9)ng_%1 zy2Vb@%{UBenlnLAcbcY3oH3-=`>p5oU%L@Xra_>s6Kz7jk1_q^V4z6%H%=fHem(w4zJ@?(pP8`z)&Vc9(#K-K_Yn>D^G}_YF|Cth)xYkw##0;weQ~mRfqd zJnkG8MX4`z^71@>C7ZT7CvQ!)lQH!|C{tF|EUgZ z_mgwTr>yW`ii>%LA|u4&Qy&todZ&&f;e9jEGmon|fh55P5Co&Ec~d^glTz{^=&RK) zo5lj=4=n)IwM=vzwb3??B{X3ZWb8gc=H2$lv~f=VJ#=qpW@^GAoztIYooQbCWqmH4 z`R&1?wyfnjKxM&NAyg`BEdT?AB8}Z4_$oR;mY=;i zz=LJ4Cz&m;2q`+V9hdY{)SNS3aub5otqw@F*tNIWjR~)CfXadiL#R|H%(^+W>;PSU zM&v;El@Z-KGlX_~n?|!LwA+26ak12^&}_m;h0Up<^k$e82OaTcv0c8S?~jo;S)tk2 z!Bsb&qR~|i>8QT!lZ}{2Dk~c^ce!)@Psp@y6(;_(^T`?;{K>Gp2THd#VRz5|N_!&F zZ4B$wR@*O)Vr5uggu}Q`8cV{WQyNFaBWMrL{i62F**@Dc5OtAi#=DHACpR)@eclQZWV35I|<4@%_cP67q>Y?(~G6gtVs&-<`r z7Wt84iB{iyIHEqbSd@{6K2&wxA{L%9RTd@q7(~B(_=re z&;<+Zak)QA5 zFk(>voT7L+*jPf6EC(B+-!1a<>p`I`ger67=V(nfsF9xVoN)KD--t1SnPVj1i#TZ#@<43D2yr2vyR0(`-PSXwK&Vt#(ui z2`jgCeTH?By*}{9-t~d^z&Xr5SW#$O5e%hO9kr<#d|rRKTi#$?%B@QFI6vvUT#&J_|ZUT!INUtzfZIpQ3Z#+l@t1v(gVAXH3E6CdM&aaQd+Ne=mEzW4KmD=SAl=dMk zr%)-wnrjrpfpD}tR|IU426>62XxznedWzn5ACeRyZxOPAnk?%Ob;iC@wF4)A)FBbF z2Iq%BGGdzIkPcHKRq{5WTDQNVB~`~wjA{nefe-Vmjzx?%)F24&kuknA-+J}zk`clMY0&4=Pp`D*0)u{XfI{x${Isj- zBNJJ0J!}_$4+kO>S>Edkg-m3jP6xW&cfgR`$4Omn>cT%|A1Algdls=qn?5XJjgrcX zSmTw=MoyN@f<6i16dllU^22yudI$24NA`isq0v;bcVLQw6c%}={6%i*JIY70=I?a> zW-euFsDotr4BNr?kv;k7=`k;|(p>@QlafMos!So`G_%hhg7Ps)Y??T9`2PXtij5gm z46PG~j!WsxG<{km4k4^|ic5=P%fz9jI;@8PJ6;0%Ex1?7f;m!QHEK#}Pswz;T1S&m zSq75k$sJ0dN>D%$jJZP#KyJi<)chavP~DhH9x`i)-66w2*M9gm`3Gl1_jZm9jiY6@ z&zU(oGsG)Oal<}z0BK)YB89=SP{U}4cMBOQ~VRNZk?qG^6^M#@H;c@E&Hy@P3>*COc$x^da z!#_88&u7+&2zc-XWuA_R7F-1+nagF%?Vn6~FtFgM5Gs|Y7OltG zfMP7XM{u^n0lNHL#ep6yR}IODFhYaQRtvFF^qBJ%zeSL=$^l6hjCCS(@1U$scYw-* zu|lXc#$u)gMcE>LkKk;x19bTrivvAa##%wGst6T2b1f4Mqc)twV)qHkUg&@_3pTsT zjm-iFs4Unlgi2+zg=nx+wDDU6V+R~y%g-zVYYi5 zP-nqxpLJuluR1_w!E7N^Dzhzs)ip&NyF>8xpaW$2S&aicSXKijk#2YbetAErPM*9bn7PUL54UvX@(D zhR8&M+bH-5t|NsfW_Cp;R!}!!uV_TV@PwO1!{co*?iq|mY(j=)(TFW@MWYeSoft(R zj-q2uiaNwd#-k2zC%%A`s6#X?I6Mue+<;1j6-e;&_B3Dz7iRzQshal% zB?%#65Vni>L#%HoHn_!9zmOLfD@{V>L-?vFW7zUp@MVaVGxYILsbSAAju*X){rX(*mY!*%Oq0Wzl6e~;xsVVNlX?G8#mWiyoAv^G~=>s&irLeK)* z!L(DY5Ik&%Ru+Os=#%cy4h%#3pfO~jYnBcWe?X{HCSYVU7gDGrx2j!(9kZ=!QZb^7 zX^>mho)dciJ;-wA8PJzOh^p49dG$_h57a^hO)1n~bRHd1t3#lBK*6MCD~n(P2|kIt z1iRPw7rQc7`8wzrkjZGPZB@gEGTcpRn!QM2mTeBVq$lJhY`zDMq?mlqgovKYMyc`?u~iMz27>^os$VirhQ4X#!^BoVSt}$V^+6uzct0Q zoZ>d?BKt~a7(M?<7MQL2x_9@S*~DBRmHghq{D?l2Pz-KA;5pCtzL z1>_!)Z9>J*hNDCLNTL5c$4|1*<3rO|vkQIJ4GP~&`I^HRrQm;?jnSryxZnr3!|N8i z6d%N4WEcE60aU?H#lKPTd%v}ml94r7#p zznYEFri(m+U&LW#7yLK@RKZWhzftgezjX!?{On9jq&)32xupCkYjWk5@|uWc#zlQ6 z%-H-mQaIVGQLaF$<|r>FgBAd0npL41X$=LwF*bzv_=(Y@9ZWo9W&-i6^j-kOVy9#Y z5W7!kQ0}kDNPA#}(ZH|>z=t!Z77nC*%|@m}CXs5P!^UXSMIN!o+Z(TJoh9^v$21qW&@j`2Y=2jf&7GOE2alH|(r%F{kXMU7v1=v1D6b5Wy=KfFa zf{oRS(oF;z?j}k>-X`e1v%m5pb;2DCy#}3t4`)s%{6osuYy?`<34hPVXwyX=op28h zBfCzB6F}7osrWbQgx+tR;mFK{CDT5WOX6?0CRc8Wzb>9F5SRM%y?vEty91GqFi627 z8YM6eIxSEFAn<4*L@^TxIaEsrAo$XN14FrE5S~NLx~Ym^9c@8%gSBPQAMhfEhu~nR z_Jr8>p=$`5r$Dp>eMHFeSbwERYKmVmvKTZ4KAbsCanyYC*KEXG(-cQQ$95Z6@@R@< za2VM&MVtVtrbxxVQB(AOYtIY_0Ab%WkaB62M`vEEd?ZW`k#+E(j0!9w_+d$Kf)bqA zRvGn2hrLFB{$#;}G$E;W!7;kyV{&f({MiI&>_z!qdD!mBZ4iI35j!nx+D}wB6K`b46Y?P+Er!glY=(Tx z&q3wQL?NpSE~|`VN@t^fabwae@MGt|^^kqj|LW=Pnb}(xj zAQ2VoZ?GDRaGUK2OsPY4imXG$NMK)vDr8HdSl1u}noxO{QqE|ea-=EzO*%Uzr8Cot z!lDWl!fK~zwVlRrH)wCA>$-vD=;;HWje`0J_I4 z4F$*ZHc-gmZvxd`2dEZ7-ft;!G7J|HzXl+<`5r=Lt9hmzpt8_BAyg_Q7vf|g&}Cfz zvt=o7OHlbI4nQZRqsARD6Mx-Z0y_`dQF!c^k()Z(Lqf{q5pHDcWl$UTd}?FDYFb}bYP*6#rJc*T zJT~7)^wf9TEn=;r=b_;8dxWlcIndQ&r``Mb7;FXiZylhr5Zn+dTfzOJ15_4*8$#7* z!TpW{&;u6S;B5d?szCl5G%yF3tod)S0{M)XAr0sDB-_%FB$DrA*SjWqlY1(HB|gG#IR`ueDk^N0iou{wTGds3{kF{V}2YE(f|>D9s&=BG!Vx z#{nt}!4ILb75qsDs4N6OgldKb|K$#YnstJIJ!7*zOjM4X@m2>U+H;0&LAk$jfXbqR zi6gE)?f{iNuG~sr+~WXS{?Zp5k%OIW9-r)Zjphn{T3Hgl5Vhd5iMUH9k?%U7&0-Sy z7Ig36vU%76DvL=ZgvxdjdCUPS3-%A8QYR5*$6&g-m~__B5sT~>2>GUo5QjfPVGC`FXiJ@DPk zpA7B-OvFyt4*nEB6Au9{jliVfyfy_K!-}F1{0)4J*ROzJz}mFDhmbCJBAr+XhAw>1 zJSQd2nS^8GVUOTe=uAdFx?!k0X>a}hQnNmNbMPgEgE7#T@rp6kKjUDIO`zv=JiLKS zHAh3m9P!9^c5(D@_@bCm@IK^~_~{!j!y9p#QnSm>I3LS#L2`KoYhvLw%MEWrUO41I zv|z(4?r$wYd7CiVgzit_a^%_xG15OwK&2@(20l-VT?(YkX`ayNXR7aHkro-R;zSfs z`~e}&KlYb2GCA^Y>{yu%a49v&@=lLqaei;@TBu7&ef9{oDVRl9Ryb%Nq#>c zcmWi9Y~loaBb+r=U3N4J`XXg7!sCV0shTlpeE4EBavcUIsk#(8PNOP5Pp9fqF-k(w zv=?(xbPg=^iND2ODlDp_a#Zv(cH9>w)F4 zQz52gx_VfOu#Wzip#McFG|a_3FX+KM_&l9?wj>FV1Lnwh(>|Mv-L9N@b}NLAW#lrp zof~#oj$$!PDDdKY{|$PxS?Mh-~ff(0rhoPYew!zL0i{pc_(*3ebyBUxgUitC=_FHFh>-w#?y9NWtpnq z!UGHAsnGJc?QPlf9Lau!qV|o%9SW(V&wgt4|HOgUKV8^YDvvdgLLruuAvaGs4evrz&@SWc3AqJfJ?ueXCnLsg;h|WtV|?!bny zs|DK1jiz6OjjWwAY<=^Kv5gS@XtG=CynB@d<)d{95bc-noG6g5r>G-?9?X;F{;&Gy zx_>vP_8I7W7u$L8fI^+|8DdGvAL`k7D<}lAp&ANY8a0fX@HMQwP1xpPosPmCZeSam zEa!h`vyXLt&|?lzS%h{&sBA;K%a)jDd=suLB3L0*Dm@pX4ivOZkL>ccguqXB06Ni0 zy^MubYEb!Nx<@uX12`?Ni~i|YQZMsT$6e9PkA6G=ZuX;Fq!)0!+L$jXnf5>846RD% zu?bUDL^D12Vwq?iwc#=vyH99%t^*A%5Og-fw6&04<^Yw2kcLp%3hC7jP+16R2$d?N zq)dCdjIySLyfp`q^NA>fA-9B97~hyQpFIQGlKMsmyxEi5Hv8iB4p3QSUpR`zUpPQz zk1I9%V*az0!_M#q;r$Ofz?DDmf+KOTQ^Ijc3zSITC(Q}bdM0WU%?aW@LEOC#h_evM zd!T!CuPb(NuWgjybb!iYP6(m0RTMvVfXagTL#X;XC;Zw0JMJj(c{4|9SesgGGY zP#Zmj%63lh9H6q86C80>bb!iUEYvw+0r+XCieq<(ay!QXvi!3GN8?~;g(sLCR1r$F znc?+^K_waduRA2)jau_LBL0Bj@d^h#T1*npgYF$BiLwJ!7L!B>mF*;PtpijR(hx$W zP7=8jw_o7^cD{)sL*jO(1^!DJ_w-?^a3uI`4w$nixb0MNhXYg=Q-ve0KH&hBJ+9QL zVj+6&sjB0*h?4uf18n&x3y#RaP8P?&fjUaeBEp6?O?0yyiuFAQR9Vai4?y=0^TE#? zpt6_`La1!#ga37a%7W!XsQNx1tXO7m0MCy3Ucbg3gotLc#q5ompee0e@5V_?CXr+)|p{5PeRBx_#p<`L}9X{ zzDkq0>IW-0p6)?k#K59{#A_W$o>T2{C~|wzYXEuDq^HB$=EEM}d*y?i*FdwpP^$iDP z44$oi z-KV9eLr(YD(VQ?`k;0{6^h;py4SGj2-*w71HLpUpc?<4DJsGaLv`TL`A*b<1zU8^= zrQ@WqI@-G`H$=y5S&1S`l`)v`VY$j^;(@tzghOH)fPW>Ol<7LzkS#z zQEIlm5^R`)(*rztau9BosEJLVrFyA4)vCxt&AF5f?lWXPbf$ywCTTKtzw9BC@yYq+ zG=e7J7t?0Z!a#S6UP{2ADdr|`c?z}UZqaSnG21OFMFp20gWN58a+HmV+d<$k8jvZF z88`{N3P%LPk>BM~y*vfyeU6QFT2P8V<)AE?z)JF>kS@oFkwfr#I)|*cM++HR+81*1%gt

    H~LYvvi~JP5iX=fFRH6YO^23AXWh6l=MR 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 z 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 diff --git a/docs/doctrees/index.doctree b/docs/doctrees/index.doctree index 12f85ab0795deeb9b84bf07b72fad965d73056be..d04685ea85123e4cccf163ab75cb3b44043c6bad 100644 GIT binary patch delta 243 zcmeynnDO&sMwSNFsV_FN=(}vTb(zh`xMK57R~dFjfyw86)fsswZ}c~q?B^@b!Og1uJnvDB%q#&Ct$5G0M;1 ziZLFnE(S?mAQpAPlWhak87skR%iwCIk*!pj%ogazI2o*D0$hn0TQJzT$%g~20IFw8 A=>Px# delta 280 zcmeyonDOsoMwSNFsh>8o=(}+Bu;rJQ6qJ@s@!M?dGMkZc<>vFQGVF|klk5G}nfO>H zGg`|}=JgYp?BXlW!NbD9P@0s*J6XYBWpcl-DWeWpl_pG;Afwu3c|U1Xb!mP!jBa3c z&Zz3dcmql^w6l;5jblszD~v@`IQhLlE3%>HlZ^w^8LPl*%hA;G2B8_MGWkz{8{-tP R;)!UA*@D4}C+`fj0s!{OOV9uS diff --git a/docs/doctrees/modules.doctree b/docs/doctrees/modules.doctree index 9d321538f7644c01ddde5aefee2ea560e36b02fe..f52d3185bf68259cc06a087214b3665e5a5853b4 100644 GIT binary patch delta 25 hcmX>px?hx~fpzMZjV$MwH{W5N&B)lixq>y26##)C2}1w? delta 36 scmdlldQz07fpzM>jV$Mwxq8_0OG^q$OQ!g3zQjD6k+EfS9%~>g00E^9X#fBK diff --git a/docs/doctrees/pymatgen.analysis.diffusion.aimd.clustering.doctree b/docs/doctrees/pymatgen.analysis.diffusion.aimd.clustering.doctree index 78f0694fb17e98ba2d64005d3ec762ee297b7513..2b6d8cff1b9ee30b25725c8a1b342c89b1d98ccd 100644 GIT binary patch delta 6367 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 Ln#Z^9mHFa-*4|-B delta 6484 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 diff --git a/docs/doctrees/pymatgen.analysis.diffusion.aimd.rdf.doctree b/docs/doctrees/pymatgen.analysis.diffusion.aimd.rdf.doctree index f12e093dd2fc4e4bd85b6361f7151c7f57361a93..403e68806b8e65ffb32ae473c89222f4eab633f0 100644 GIT binary patch delta 13585 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 K-kj^&NB#rk_PvDw diff --git a/docs/doctrees/pymatgen.analysis.diffusion.aimd.tests.test_rdf.doctree b/docs/doctrees/pymatgen.analysis.diffusion.aimd.tests.test_rdf.doctree index 6c754f84fb34ba1df70afa2698683e22b85b595d..a0e0d9bcb3584fdf8bf77f2004892d884b37dbcb 100644 GIT binary patch delta 442 zcmdnuG2fG=fpzMXjVzNz+&J>`bu;r)QY)r(_OR#W!d$;?ZiGMQ0IZ1YW#T1LkGlkEhpd3G~0Fl5MN zFlWg2oS!V9v}&@xkl6rY1Q;aEV+vI+UP>v@c z6Mkg9nfyi~k>@OkBj?SSA)U2j@&{ono*i)Wfkw=iw6yyR6v$c#BL0DhMR3+)AgeQL z37A|8CYOQ9|+@c{f*wFuzIH+)ALZNp=rH+qrIVFZT%~*)=iESN1?;wFgRiz|H9-*M~+4U z0$3L=pWyPb*E+V1OEp5UCB$ELf~955eV)-~-e6x-=d5)(?jib5kQe<7 zT(N|Z^RRtP8FW?{(=g59W=kojM|+pc@sBX@hGGZbBqqe=6JGQJ)L5OQ2)?zJ(&ZGg z6)UOYo3lb~T)MHGEASn~!JraJ?G%1d(nqs&ezVk`iq?Gyj{ln$QCMF!S#9Juc!Ue6 zcC@OIkT`VwpOuC=KjxnX-g2(ZIeTB(xb`=asGn9T``2#R7=`6XvqE8BY}pWx%D(vvEzvi^dZNDJ&*ITuWJt>i+O?r%3*oq3&!s@tlv^~& zptlV%Y0FdQ6V+t!@sN`CVmf#ZB$he>*Zvpg89q=%HH0>;1?PFS@eKGIgRQn1uBdOrOsj^e`RI9HgIlnUs^>Ewl|m zKbZy2_??iOITNZ=pI3bs*`OrdHrqx|O42@m(wivcX1C$R>^;gLI+FB+AU)wNgGxH- z10I#6ZnOlcu%3eSw>jqo>1{gNsCT2H8u@<2->&VRmvVfn3Vpc~;dIVi)tA8HjiOKA zo?Adwqv+E>qhFt9qL`cIKt*n|5|54~4Td|p*=n%26e{VYMLa4=ZDm?<2EpUDqQSH86G)kV{1&P!yc~<%J?8RI+`v7b&%vKuFkvuhmr^Zi7=jrBA z$luX&g*7xa>G@Oqh5d{xKt3Z90%^+-dG zf}aZ}!tmm`iZ6jB!M^fcu&HPv9cvQ(7;f_G#~jphvxV@Stw~8jN3ur1fGt~%@K$0; zCcPhRC#;dNQV6e2RW9JCSAN{?K;N=iId*TAHQp-1dZH>?Xz_kRwnIyI}l^5{TZa0B7riGjkx9~ZI9yh^_m_+gg4`iS- zD>jo{7FYR{LXLC6Br&8M;~IWL%A=zE5L(6^u#Cp?_IcPN%m@m$!+BRR b_%>wW9FyUzf^EhH`<3P6rfgdEYh~nr7l*RM delta 2711 zcmZ{mYfMx}6vv%mcX_xMFceT=SCj&l6?v%$MFl|~f{JB%D3*s7vmMJWg(av}5F52x zti}Vuh>uvTNsS`ps;Si|YKdtvZB6^7wHj*Erm;3{qKzAhrgLVN-6hp8lQT1C|L1qk zJ@=kHaGzYbOSIdyU8m~@v=4(#-d5Y&*0<_5b?)iVJIy+)y>T<&2UuhQU^`Kf$9 znaVdtco-g!2Q?LO^a+8#jYb&B(Li6tWWA>#v_|aK{LZ68du9+FBJgv}G&)FNAk&;| z(OI4{yt6o1F6B9)y{pqQDvV}}$?}F^;ts|_VhLwA;F`fk3L(L0rlk~auQ8Bv&SHQ; z;~Y`~e;HG0Ed^WUT)mJ>;Bs6F&Q+QKrVr6V%4vqZ4o=+ zN=y{#fsvRn+C_P)r2!(#r|b*#bgqa;P$78RO?>z{-71r&(zXQi+nUq5l z;tb?22>FAb$ewtFmgtE`6ni2R%eP!mg)>Zq!=WJ5WGsSDUb{>3)%LhRLbYDweL#r% zwJDn@#LJaUkeA4&H+~HzUgF7(O-LsWT^%eLTIZZlf^Z|B({l=ghN*BZYli+ghL*Jn zf_D?rg0s1sM9x7=Am>12MzAu082XEHU}55QUibDm6T~H5rEj`W^{X+KQ0;gG17rb2 z=6nb%7wcegQWQj_ELPkOY@sc!iLcte zXdY2~H9VetlHnTB7x|e*)K`OjK{U{xSvKC~$>`}|=@6W?Qwhh7#MEhA71eo&L4R&q zNFhIvm_=v_%pwhT@(cRnvn5SV&hqR6IJs1E)~ffi1Bg=VmTr=qtxIEQt>j$m$+;Ij z9qb@P=cXx5xRIPyZq6zXF~Ql(4v3{s=kJ6k%LJ$Xl1sDW2WRu{ zgWJo3;bFld#eK&0PIul0Pr($Ukw zmO$33%}Nw*B&NT1ycrb#31awNE8!=S(~OqjG;6UN0w;VW@PpRw7X$|10N6gyN4bH+ zL}Kw#Hjrz8D>s*4PTJ=C=3n8<) zhyfa^M#w0vs=h@>wFi^pAg5+6Ddsn?lOpwA%~YZ zlr^K5gKdM<^@U26J6M6v)gT2PLj1S9K|bOqvO)HvB^qSE?tcw3%8N0fLF`x^iPX)j z>THlBF14dBwWC5!4XA4&ejPenv%R6&-nl~EwV{WQJL*i!FJ3XH(7Bf{O&z}0+WI>C z=7zea&TX9xFZMK9W^C)6#d^W?PN7ezH;-%RIPZMlw?cBgv276lpWvS**2No{;ok^0 zh6|2hX2u2Q7(0UtjtQp0w-!IdY%MPMsblAH!OsTM^W+%5nXC~P>?@XsjQAj$JCqGJ Uo84-&*Ht&xZQz{hH}zTMKOjOQRR910 diff --git a/docs/doctrees/pymatgen.analysis.diffusion.aimd.van_hove.doctree b/docs/doctrees/pymatgen.analysis.diffusion.aimd.van_hove.doctree index d943c19b8297b9410b5bfaae146b7ab31b110e60..9f6610cb4bd39e5de176eb8e47d245e0898843cf 100644 GIT binary patch delta 16564 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 delta 16086 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 z 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 delta 43 zcmeBInW@6kz&e$0BMUzlR}Wi$X-Pq8$rQiM!d$Z%8F@CZ=gwwf4B9L$@P!co9!w1t diff --git a/docs/doctrees/pymatgen.analysis.diffusion.neb.doctree b/docs/doctrees/pymatgen.analysis.diffusion.neb.doctree index f3d5eb03a75b0c961035e9ccb03058a9b492e45b..3f3b36f19c5a6888f87f45af5ed31ba19ccc8399 100644 GIT binary patch delta 54 zcmdm_x> delta 58 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 ZSDV8c7V*v;t^E@zxyz=Vok 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 diff --git a/docs/doctrees/pymatgen.analysis.diffusion.neb.pathfinder.doctree b/docs/doctrees/pymatgen.analysis.diffusion.neb.pathfinder.doctree index 0ed549bf6ccb29a37c679adf3c008b97070c81c7..ca86e849b7750a51776a953f15e3171fbf57422c 100644 GIT binary patch delta 20708 zcmbt6cYIYv)}BdwDUbA?m%Nu=UK*hpg-}FF6bUUzks1ikkOY!|1*w8TvXq_3tfJCU zM8FUrG=+#tS*55fD4<|nR;1`E*uQgT?tLY&yYctsk9Y6PoHl3XoH=u5ZhqcmSar@b@in3iS-L>N;66yDvc?1D~&Go6Emkkx5mlQ^8o7j^_W~% z&jc7C4@*;$68P*F4Su!kjyoi{sjiV}BM?J6aSx0V!;o8{axD znr(NJnl1ZR7JJQ2oO}ZAgg1EC)b_rT{vt`3&rUr`&y0l`(PGc7b zKn@SJ?qloScb6`F1-!p?R?oy1t$DD5> z-{Mz`VrahSb8Y zYGDLl-0d#ob3|P;N)Iy1XnwuhP&h9{)9Ba9Tie$2nfIKOdfLLGJ*AsKB|&)OUH5ha*49%x+$^439LF!j`9V7Wq*p)I zS5~uoJ*B%G>Z#o2y?lS~6gI(=JS?@5`%CAe`t)G46a;(RQ)E2=IqWYA|8WV!(mi?e z(>ca)lwXaDEe&f>{V9cAAe>tUL^4|tpHnzA)S>%E>a5iLUVf!;v@wm4mD)o*r7vup zbKh&g4kBmrTjTn@3kP`40~6U9>ZEjArwGSH%#_=Df_+bIdF-mEn%GydE7H_)Vl#u6 zvlsI45*PDeSh|lF%Hd?>dr7X_8TnOypePh6%PD=8|6G&|SFvlka2a)*z^{dSu}hx( zdZ&24dcZi=m6+wRyS=0!a5pa+n1C+F@0k=f*hP*3Uedx$Uee_hw^o|Fy`+WVgDmWB zzHCq@WF{@_PA_R;nlOC_SF$=O4Ak;#gCkk3mx$>GNjzsrJibee`4R&z@z;i=^8o`A zd1VhTb_#X(V;a1Vy-P>UTLxHp*A)h12S1kyXr;BYq^3SY4zHq1oA%b9$f-sDU^ z?j>h(YO7{4u0s6epd`s>KF)KE4+ap#$HO)Py&&Hj6)OB61g}tXiIUqnJGXO+TgdIW ziBC_#fX16cM*;i6OIWLL7XRiY!x}8(R8QuWQ{CBhFOhXGY~qywqCkTRX$Fp%%2Ew7@<=qG)?=lKnR&{{0@hX4-)*mFW`nSffWO3#3(Cdv1)@fKWruQGxG;V6|=u6jD-qgg@&=vAkL?Qm2FfQ*oqj)MH-`vv@&1` zL7^#N!7j>x<+7I}U8$Cj~kC;$d5kBx^B z>??yfGaeGzKb7JrV)??LB9`yCWqf;I$v{RdA&q0k8-cJfWHGvX+i8Df;JJ?nH|{K% z4&ci#+N?YP7ot%UUuV?vzy#FFMH@L|gNcw#wm{xox)big+IFm?H-#(Eksq3LFBNdn zfp)yBEuH0J3!3L*+W;6ZK}Rdl(LCqjI~f)Tbfg9<0^frK@ogDWO)l#Ue~}0aB?7}o zx9|t)K^O~Mh);eBc1qZ7iug8OQa*xVfk3zFptSa7d8@_3Xv>*^}2xqQ;(F%wIw{){NS=NH2ozG{9u z_M)#o=`GJ8o0_qu8`9>~KT)4r>QNWag0lEaDzt|^5^tw3hcgB2sFL!bGojvxNy=y& zHZ+`1W*?~zvYo!m8FXgf_=;SA^kz9TJ^7%IqWR;$TP!pYocBpBro-1HSupQf9fm}R zCV29qC9yo<%W(9qxW9%FSzh{(9U$Hb;6U$W4890q$=6w^<&4Bz`WJeeA$$I*JE4z6 zL&m;6{p6H9f?eb0GiE5p7L%Lpl&`oR2*G-nd-_T7N;K|a28CAoDmT9!BD(mXK~KlF zG+uep$bRw_<~9%~UiX3c|D}Q|Kf4Mv9?Ntd3@bv}A|`OE+8`R|UNE2=EUsN6mlDYuetRKbVV+R5IkVv&1|G8VyBibbB|2cFI~x|orS z@@Fh+&(Q8E0JdhsyNrw4h_4Mv>0X>2X>#K4Q5+|mOF3!p2zp)A>%EOu{59^{(Ugb#_QRcXavY@r1 zAVm@dA0!GsMnC%sJxG*NyC|p`jOWnyI+#;wkw`OVW}1sjOR7strkblOXlW^#T3Jyx zrnmQ+tKDJeH25HAu@Jbq~i87teX`qZTLsY&b8@-C3ZPPp{xJ(oVc z-`YMQMd}kiuula|h^E%0ex-lFze~$YSIa11YyHY5?TxC>C@Del(T!QP2 zGP#1LrAL^hWQl4ohbyAm%i(mPz1(SfSD@y9nAVOsoUgqeK1-Bru11TOKj?&-k| z&p)ZH_PpkW*(~2*t=rxGl^4qQ*Mm>i!JjXF{xI(u>(9rm%wxs=IF;49-2nyAq#S~H z6mni$*@I2?m*M6lf1HwX-^EJQD~6j!7aZxNidJ_(9?D7O`nPmaoH{9;)CzwdxaI-l z5MrvFRGz=ovL44tmW=iD>(x3RZCmRv{g>GC1_lKbe-x|?rEqYS zzw~9hs7Ep!+(EQWwjur$4z_7Ctz;a{*dZn3sw<{)%hFIDu_~IqN8owv2oikAAvEtZE zRvx`4fWNlaAES>H2s71U3xAj~9LLDFJ{hPiypL(s*JnXfSKvtwdK?bdV{X2-+|4b%Esf2gu! zRw&Flc1)}YXt2T(J0@0Wn3TuU#|r1DH9#8Alx^uODnJ=eXh2Kj*%_!C&l`a}sj;Kc zN`tM8Cp>_RC#7*|<3R@RAVVvkz4LW;Fi_0Ng^9RjSlukMs%Maf;-{ZL%I$gTI+m+oYy)-kX+z1j6o=h(*pkniFUgM9%+#q#s@7e_~^E02tCM)Ud0kF zx|ajxq8qWdmh~WJd8{Bv2~rTG2|_E~P!~Z42gya(93*3aVXYMhDWW(~z~hc3ARFHH z^$GMKY3>ekmL~FzN7xc2%_2>jMb6T!bCG7Xi!>WrD-BX4X%LL}~iqgQgEYy1X-x9wd}G*m=N$ z4(&rz)P<_hgsN~BsOx@_0-aq8O`UWWD)%3)6>2X6>X9_2%3BacmMWOGyqAebi7i@xc4nFJN9$QiJs@q; z13vCKwu2s|hh26(P=s_TP_2|_(6juQ=6MReMa@`#^6_~7$MFQ{&KoY^MtQJ59s3l7 zI2_b&7$}?i_Y1^BpZ+0=NI{5PZchc`$yPk?ALWH!4tc6%UbwdYNgt<$TIeJw)H0JH z$WUtr@=#0fjF8r+&1-P0Wlx*?VL=O)Fh8f#=H9gL#YIg73_RFEa93VljepONjJE-^KUQj6w@|A8(#4bD^9S63v%%{>h0M1H$qed zcjF%)z$vLj+8Cci0ys(R34+fF^_B#|$q<`akGVm z@{<=M*?>?xdxY26zj$sMJZ5JJ=Vt5Spw3d<>r#O8-N zCsI@nNmt&SF#FJHbXIBtVv)q(tckC+?sc?c=*W&J@v%`8pW-Q(>5uW$EY^%xKu0kz zhNzh8*$|4U)ZLM0GE2D?xqK%OSK05NaGCv<0pK)c~{fuLH>9U z%7U?05w>B17@tYiRpzS7G2==mPOYe^blPnp z01^}*G6=;*B24Q8r17!;PUW*Ybb>$ZB!7`4#glFj;Er3zSU&mRCdd+xy5Z#lx=VA@ zE)=aw{cxNpb>2B#E-3l9S-|}ps+=xGy!hjMdZqmNue|?_Wq8x%;*A8SUkmSjvk&VR zff1|RKeN6OjmK|33#=qUTG5yYS1YQDxUCh9iIARe&T<2^V_2XJB#&@59F>8jS>&94 z*5;^w8nGn8Zcj*rjACR2|Ld>AS(B2cv4u2m-(H$VCCvv?n#Ks34F9r)G?WbgAJSZO zNTX5wL!&5nWkxZ@5BIFJEz_E#RSkOn3?*slSN6O<>y)GC0_fF|2uLHOLL#C1`^+ma z0=g?owDfd|bQuBYFHQzRY)d!RB~lK+Lv{&Rmq_Y2REp~X(80dmwW8Z)k@i8*s6OpX zRrdXFs)qWm!EA7b5fSc?4%?}!kN{NA#6EWz3-2jF>e`VOT|0Z*t{qWbyJTlzP7mq+yi~0_dpKkgPAefSv|4B5DW#aXSF2|Sy`fQJ2J?M!h-B* zH6?E0-1+~{x#+)g9`&C%PyT;#t_a3H&-ss>FV-f7+P=iWz$MUS%qg)W7KA`PE)XgT z>4^@N&TeD`BF}DCN9(c3#%R$u6pD=_XxgaMPOk_Vc8Cu{p+ESDq%au0{2sjc*$}Pr zpznskVYVe&CVJRA(Uh*CjnqM;iDANs2t7;?wGl9hT_k`!b{=orVUTb>T6B+uu2iH& z`{QUCC7g~H7bD?$<`W}fJ!2%SXN))&g@%engatP-^Cc7gva79DbJ4rKDBWd=4!Va$mU zYvW)D6$xXe#DLRcbs{A2fX-g*!)Uq0!$GP__dI|)acn%z1c>EvtHpeX*lam>g@Avg@dgcj#no1VxMSGADhJdOthWLipIw}l)QVD zh#Jy-YX_6Gv-4TdktLdxoyD12+F4MnZf8-k;>BzzGIk&m%FZk%WoPj@FoDI#D&yLd z18=jqSY=!tWA*vc4hf-gAy+MpDyrJTN;ZH1@>suEl@jY0>y${HD3SGi*!WnLNS#Cy zIVDn~s4NqyEdo5GMM)=oP_hL%tZD~URK$tT3S*_+_Kp?JCm_D5zCEmGY^4%rg(l1j zO&EE^w%tXT20TB&>)115WioYVYehneBoaPIq!qDENA83gMrD%eZ@Ns<-1pxNC)hVi zqOUcHFrgq1lBGm<#F1`w_23rBNg@{4N+lshk_aCp5%P&EfLEzV0)62k(0yIeKsplB zJeC(H9b8@<-Pr6!Me-&&V#-joUb=AFJ67JJ?is5#4DC>GOk?GuqMW=*x$FVC-iJ|M zeRd=_UF!}>AbuJGnW8cgJYa^ROLspXj*~l&Tq3VhS#cz*at;>f*{!9raEK_CHG_so zrm|ip)kr7ta@?PG60i4!3Um@pcoTCdus7q>q2bXuwQ|21hZd=BYrYXjw>6u^x!!o2 z^Hb`l^d#|bP)F6l<|p)uhEy}Qq%@9pf|il>wq0@30%;$9un#1#@8iTj`#^l;zY$p9 zVC#tJLifgz1xE9L2w%~sFD_QU#3?ttM&%+8V-md!!4wu`)>RWs zZ&EeEW~rLY)*Pt*g!?QUyFGEDVL5aaUlhW0-H$$XABHR?j!5q^^U-~}v*BjtQj5*%I`4YwtifnuMt{gd>dK2H zm|J?WCDbvQxe#V?XA$%<<`W6!#gfd*i|r@^8(WF|2f%gqyjdQNZYSC0de=Y*CL8k8 z{g=lexSt&-fIRkhv+`emH*5Zju62JQk#z&TXjcB~E0V>@e+eqz&VL~-GEIDtX(ERU zgYmN)szuX0Oqxq$Z=0pBs2u`RSd2xA5@C_18DSB9i*YHzBAI5WxNgJP1L0{O|E5`) zWdn+f=kHrk$+(ZlKI@j0M7>qhG#{seyi5I)Sz6LhB(JojQ5JlY(`A&U^+{oxF7~AG z3d$8JKA3-{IcdL1T1M0*pUHMUlNF!;oDOd4Gz>-pTVPR!x!9r%bAd%SOv79xMjYw5 zcNgC}+$eq+0l91~DNmj1>kv5FYY-n#^~Kzgu!!L&L-d8%4$`FjVu3YSMCC*9AUmmA z-g9Y@7pgDG7WSn@#tSzrYI1*RkqbHCXCIH^rWIRhayM9b|4~B#SET8f*ocZJ6bu2! zJSIyrTo5~JkTspfVzY)r2H_&I%;T*`$tjOF*P?9V2@BbT%HypkeM)O6jmI}C>UlhR z*WJt-(v&ihSr%y`oUT+)j;B1Hx>7woUS6q&M@eRt%BzW2sl0jdl*$X09Aqj_a;*c* z$>fWoPw?{crT||Nf`dR5DZBR!3ZwC}#S1)w-3iYVU76bxmnI^lEnX(~8dSBG-P=NV zG*))Yte*r=!n+EH@_UElrAZu)7n5ulEn|^P=xvk`P3TQ*#OS)495~k%&h>Z^ zQHD_*776Eyj$^-s{RoRqkaic9AerE!TlhWV=gGL=z;{9l$0`S-rR7k|dMTV93a3Yc zm{fr`)UinLUG4B>tNT%*lylpHdPiH`gkN!>t)eD$Tb)JYq-+T1tBVaiouJ#$B6^dy zx+p=~>VL7J{Zrs!VCxc;4ZWJ6Y-nAAZbNKUg4kaLKe1-&g)*8|NM94;03y`D4t6?0 z`uGp1H_FE!PY{vQP?=X%%Qr49$EU#%@DgJdZxideUz6d439!83{+KQM+iiAgp$4TC_D&d4)jum{+I(DYv^)9 ztpgit6t-NJTy!9<@F1#!tPm9@?;x&7a9H6%8WCxQI}`DZin#YSfM{xv zE4r;ikGd+-mt`Spr}&t3ym;-zvuF8u2RpIwDY%b~QLIKvR+f>svWjsqaU)91A_Ov3oK$2t&lEga;VI)2!&b(W2);$g7tWn`?RXAId#JEK;jA4=Zym|{x zmpZ6q=M>Hvg>xoJ{85L|I~ED&)GauN{sO%*e-f}5(%IMyC273IqW56;l~AC0JA2f0k$uhJ~lWc8lHu_ zjr$xj9K)f(aQU}&5FpA|fUn@s;p9YU>7I5fy@c8IV*8SWlTPZ}WYKX2+;2Qa#FRhU zo!o?*k2MUJO`01@2fG~Y-z7_TGXF)uKQ~ddLxTy{V7yRI-)XXO%Ze1^ZmobFJBGTT zY638br?>_z5f>dnPSjBl_=$HY9lf-Rqp0BEzKR zst;P2#EF~9hQi|APT%B;n(7IY%1Y3$iVYjU!c&&|i+yV$0X8WtGW3^H$k0PxvUk<) zO`}Eommrw{(9+qu6cwWI6d9r{O_3oAN}-1+nRW`uUk&VMSfvc$b9$2l`?(s}R$b%8 zL8PqRqL(o#inBj(BX|P)HAT4!chT@BIxBJ&zoyt-#myAF$h(PD6-ReL@*$GI)J2e+ z4hbVtRnYJEDr|skMTr8Ej8ywPNJ$l;o6+2QIa+(TwC>!D;mRmS>u{G=3|ER^x}&uU zFMnXHKVQ{Qq*9eCI&8&Ag{vxxR1k<_4P3+ z2R7hI-9-oXd4+w|fqgzzByPi9`fm<&1k%tCZ-Xu@EKP=XL1}VZlbEKqH9=|Oxkfy# zYMUnWpxCP6blnaESfRq{rEnh9aC)VQWSqxrqQb#e4d>_%7{q2PoEZvdv4%4vO>EnV z=RVIX9BkEahBZME+o5n8B#uaUAD4I1XhWJP*o8=7jgU=`~`02t1s%ayiWx){<7v#ChtmYa?f5x>&JM%=g*zX=bDS3kmTlF5!#7$egK z9E1WY62>qWjOK$do;|HNEKu+Z(#5p5pg+SR!OwGn@AWpUWsM4ctAgK}F7A2y5je*@GGveOHiwKYGQ^;xa2P*Tv||@iatD@& z6ln*BeC4|AYjy0v@{qAwk?ZJpP@SS1 zP0w1@4h%mOpdFZGAa`JSR=ETF_&n@pNP>1?yB!P`TV=>}_7m6)?0{7}QMrJy)PnyR z=M=G!8>aUO%Vf*3+C9gF&tMF@MgV#2vQ^sAWvhtz95seTvb#&9G5lvH*odCv^ye@J z*T7r@%j72_yjWkY@;$&ge6B&o(Zo<1T~(UGsWb8;hFF>BB3IzF_}##{{``G zn7>25R$;yZ@3C!};_4OH<^2prr1U3Vx(d7Cq|`~sal$s)4k{uB46Od1DOO*DdGLjz zA@{#pGi_=wlJN1~pArHA(-}p`kz1&|Bf-MnQefNYq0Em+2|W5p_Z#D=oFwOYN5|&YV@GSWUEL&ui#S_Pj>*yjABDiaqAY=R zhs5Szu=9%?BD|nFU;Qh7+=?)=^Yd@%{B{ycc79)$$omZ=`xl6W>U^zJ=No@RxAvCS z`KKH(&06PcojI${pC#I|^XKSIcK+O-@BC9JJRQz-`UB?a#`*Ohkok;><+C5`iZEQ) zBoM!QvO@w_v(d~iTe@LGw%tbE)hq3Sba*rqw`@64E--c{yRPZ#@-4b*o2~0AKU=JI zV}p%uSflCciqus~lhvKAWvqL)IO)l5u!3yq`HHi3&o_uLBtzWEhSU)4pKxN`NV)pNpM$!IVMuVNrHanYbip^~oSo&8nkxkouSwCp-!?82X_I`8r^lS|}3(Zdh@ZPc)^s?>rxyL5>#c9Vp-i)&>L) z5k-Xv8Y@LP1wm<|r+^?uMFhpWv!KE^Gy8iD@H_7N^2cv~TV{4Hp3!0DJ4_RzRw%xZQYv?0Pr++CCKj+6HW6(vt||X6EH_7_5voD-X*wuC^i|5hAUJGx?n9A>r3q1HR$2#+}6906P973+Ao zK+WPSAulh_fM4XUWUh3$oGbjir6rpWhFVMRc- zS*bR02agup=`F-$J-nY|_@tCnWwk)ab?hyZGkxsO zAS-H)NyNfDxjZ9I%o1|a=#hogY##*pSmT8csxGLv51|HnudT3EjA0?6yb^mtg~dKc z$T>e{s-BCXtyu3Rlh<3+>cx-=FUl`6!#1e~MM^zqc8AK)GtkUv@O%@373D$~U^FWHzML&d)Qu2`%{hL++tr1V6#_yy(H z8&c%*7R%+At#~|S$?pryBFh_DNtVl7_7r#FYnNRAVsD(nV(%zRTPLYgd%;I;DfE*E z`?W0Siakq$rj(DZo>V?&{Mhkh>KEDn>Xf0uBMZ+y7Ml@CmJDkXMROGQPr(VlYIQe0 z!&@6EB3t%dfHI>LpfzI+!gH0^=AnXx$!u-V$Z+U2aUXDcC z?8EW#pGca@Bq4qxX{zkm=3RUeNww}I$w%8hDE4TIb~8o0-6=ZZLD6S7rRe0XQnZ^X zLi|M0ZuvyJ9{41RcDYluwY+^Wh)5q2k_h#YmkXk(U@583Mx!QXOKX?B0ORvz_{gx& zY=(4fHlJIR4q_~A7fFbTm{583_A^*vRWjjZtV(k7;1qcv)=&KCC5umHi*u;RgR|kZ z+}RNr>|@Im`13a&#swEtQ1mMopRR$4pVXL2>#>wV-h zIZOH#-zMsOKh#g67Jxm_Q2@PDrBT!@nWy0Z%o4)b-2 z;2lE*5ps2}=Cbf-D8YuFR6#!~(tOqa;m{eTIY-s{s;(n&tyt(pRO=Xu5GmS;x(KwV`ts*^v}Xqh zlLvdoiD2LBzQzkkp8gsy%OSl=OsT}3{u&{^+iNqxTQs3MI0VAw{@x#m*L~Tm z!C|Ju+SeR#fZ!5vLhaX<^z8{3xpP^OS)501QQNU_X}b`9p&<-nXb_Iz3L^hKm#R5%6 z9Txd9P$z2!brW@Z+$_hqNrO|_I#2nMcEbTVX>g9%?@P)}f^X~(1*Q-Zw~hl)^H9J~E`GX%1R}Gn`;FHfpcZ4HB_-F2jJ`p_8@<4qtA}7fHrbVWua&l!0OmamfHV>6*i$WRoaAXvUEbK z%(}lnjO4My^w?qY{rlUCVLVn04qz3hp--Wx3FTZKMn!S-P%PLKX1m6vN=wW_*urC< z*C?Nt*D8mL=k?HMd8n`jI2WrdM1{^inp(0&WB}U(vdH%EwWm^bNswFOBGsDp;A{RT za;-J_U-ZTn@vi{32-#(5@2wLjXMivTYHf}RWNkJDI_ z-Fn8$;?qF(zefYv|6-y2Z{w%g;u2O|3&Djz$3oERdqm^D5V+Is5v3l*fwiOUo#j)X zWdr)}MTv4*QFF)Aax_r&vqH4M{x@gc4l&pFM+LFR_X;A9Z;K1M;Fqlq#y~cKjIVx=~0RSPib5gQ6_iXoI10OI@r?oEu^4&?eVfT{Wd< zR87@{4zl;$Sm+=p&7B0}c_9=%gqQQlkRJCTX2N92Q`wcC6({x#3vn z2a#j7b}X+fn}nOvn(AC@<@kxExO>78=tnIYykbN4ocbB{SrtA@f?W(IFK&EW7%wNI8Tp4R)C8 z_+a@#{XM4nBzhe+jSk|dsrQQ8Kuiv1>rp4R!8-g{iDWC4!P-_91Z!KFi@4BM<_Bq~ zJn^wQu{M}(WmPcS3KlL~c?ByjTiF`yw3SzhB)6bxJk!Qze8-LYVDLU95&a^|l&CdO!TMrm@e z(B#mbcB%(CwI1X=bgSebMj{6bA_t2f);@;?lQY~wj&lX9M2**qDzN_rW zoH6O;@q&q$$1^6h86E7MG;M8oHV~khEN#$k=p;^JxS?yv9;T?`HU-MiP3^&qW3yp8MS2OvhZ)bPrLj) z(@^cjA-uC5yE7ZV4r^#l$aNYT73$E?gisl~>o(J30@oV)KnQAR#@4yJb_-0UCBLrs z)~dw=xEaB(Y?@MAS#JzY38e+YqGqQ_4$^`cJSMz0SC3T&QF9uuULR-BynTs^4t&K#b(DupozpMVmc?uwaMP8)rlR*)vqT z^WeRUaMdGniK5k-A}pLP6cg6E*GbVfqR1v@h4LEn+N~0WNQo#ch$t*F_Kn4YiF(qL zDAWF_aLGy3H<~CcTts=ves6e$kIll|iSh}%MM)u2A_@y43XA9u@5O?N`pT223m-m< zA68Fm7Hz}$+hO4%s?YUA_3|L9->njbNQo#ch$t*F4%K3|V%N!BSu)T^6yTh0Uoigg zJPa=#bk%9PuyE1!c={oB{*ZEte3y~6CSP)%U4ESUgeCVWWpC?@d{_!m&%2w~^$%8R|A}*Z1 zBc?LG*qe%ZaNOxY0d+dIB`w3<^r}^x@LSZYI2`DR-=L>E!nkl}_!f064~Dz<4RxQ) zHuBadBmR*G*q2HSwLAVY7Ocb3;fAg_!;@~P>KLBf7RupCVW|AzM0Z$AR6H8#7qA-V z)c%SSxet9V;U(^W*5|0e8=w+ zVE@9XfX)#JV6kKS&I=iEuX7S?m~;M4D946u_Y)moxpR?4&itxelty4M7{S{q98Bw0 zZiKw!>z=UKFr?{wH$LqtQ@QtdD6c@caQd|l6ZUjD8 z!ZAj=UyO=E$8M1UKerL%qhzO_6X1TNN#{t%$>fWXvY{|oHk8GQ+9*zOF@6qStPwKf zm(K|UX17cWab5%U@F>~-Nrs4Qi$&+(F*P4WevyKji;?R4axjZ+Q92U(_V=!MkWN!E*clCm zMcvhOaYlokx)Chv+64SSfQCi^RIr&R!{XdEo9y$QFSf8F4luJLHYQuqfKj4##YGql z?VYe~G;ABQS^;SRbW@0h%xI@sZ4QL{L|iocDRZwFH2W#6 z-My%T=oann8jmeX{!g@YL2zTOFc6M*BBV{)q-gEGjLwgW86Pc#~6=K3i%u%<6Uvr1@3W)J~dEe%~MX1P^aP4kBOlj&*&C zBsC}=QnLPo?e>T@zPoC`(PDJ0$A@=>PCa5N`i_HSCnm9WbffWH|QV%)NJc5uS!mSbHNaR;fCd@3c$DM28zH}Tlfah zc5cxTH#X5a^n^v7xDD=wPaM!@aYTckbAe;aMSf=TxkJJf~vg z;`J(z)lHA)i>!EF`LJeyTq=UQMX@ocL%f=BI~0jN8bt@kD3@zqNZ(HHbsx8|9sd0e zylA=5!gg3^xy}x2;~jQ5BVNt#0R2pl69R2V^DJzKfgPb-CFemN=H0zjLq~X5)Wy45 z*c0*E!W7~{3wzw6Eo@jPSR-D>TdH`?t`T{~i$_@K+z?&&c^@mTbENm;ok`IBM3Y+* zbOzOpeFUxmu3!$)QC0{G$_h2ctA(AR8X8rrTxca;MD&Vqr8N)00&Fpk}Y*obUn21=oN;sIHGJo}eJ8W-iv zKSWwtQ<~7h^aMD~U39H23~v*jM9R=ZeW-R7K@xi?#9$<%ppGPn$*M+w(>!-o*SRSC zOq7c{NgBhssGvlAW1kU}_{Tou&3mB=eMS>rml^^hJy9o@@>KGl$VohG#wN5don1;! zq+34D2}SzC?ZSmFPYk{=L;_5_wO>(>LB43K3XKzEhx(Dw8s}o4wSWa@ zcEt`q5Hoz@cqLKw9R=M@s|bPiS$LO$Vuue#q0od1>%~IzR^v+GZE+2U;~j9ca%|_7 zE;5M~aaE#rS@EOc9%#+IoI1`=Vnf728zSEhzMK0U+2bxrPQTS1k-7V=D@5nb{1)OP z3&esfFh5ECGzPa5`AKYnHk=GCFe^!i9c#*9vihwblDpntOiyAPoSvjg%W)x@t|6v6 zAe{D>j+oK@B9qwu!jfY|su z7k7$oR$haLS@jx>Ra%29th@$e4K-B*;oU_sN5jm}FiQ;>tm1kvR%sZlk#=$F?pzY<_^Bky%@t6)*6e-sMpZ{{j@})9!Ux|Cbw90=hv08NPW1|w_K^F< zK`Ux1Ut<)XS!MIGG;y57r*ELaKUfrUO_@b}Y2_3hPs1weZ*2;$!8nglP?GLv*Bl>M zRkvDrMO?G$aJ%IL@T$N@wk6E5mTOxIOJ-a0!MqR!*vB4(dC-D-3xzG2_12cGwoJun z)|Skgo|Vj+o}R2VeZe$X1Vc2y01Yr8S&e!K?iB+xKtC72ba)cx=&>{OSS*U8yQr$^ z5F}UG1H}vt^NiB(p9oI79<421(4 zY@Y@@;R3@JJl}^48VYM!R9X6Y6FFV`{8wT-2D)GiGr=(k**oTFusg;kz zFcF@{KCF2f`!It|HTemc1b4cCZr4D!r>WLY;x_Jf4b;vP=*pAOO}_YakSbaQfokwm za0gVlP?TvDWohc{Q+Up7jEfXy8doXfg5_EVX@?JwFf(dWKEBW3b_$~5AqS6o$BimP z*I-q{YM2~saSD3L%L2pt-`hS@(Ni0eb+7t=U2CVN^3Y2tjEIXZw0VdyZ86Z}uuEw=Hg0s%h?BcwWB+uAa}J<4cFqCm9PD_+#w?ix`<65v8{hFX zOeY(rYrpE$GZ3$4Z@_3dHJySKk(BQ27-C97yhg;*DjlQR*=oZ}5TY(U1HtO#Mu

    N0xzbRS`k7W<;JI@3^JO;bMR*&hNP2w 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 delta 5161 zcmc&&4NP0t74E&Z;lW6OP)zvo;~CsyjB(8ZCD8m}g+Kxc>6WIHmMj=BF)!36_<0G9 z0-^b7GdXS8ak{Quvr5yZEUC71ZmKR-r?yg;RgIc7+LS3^I$l?|cGDoPhmh74!uHR>v}f3KU~z;Zup+9)MrFea%ONc2IcN=W~)B2ggNU=F_8KDRHSk6=G*c1h8XE8-H-7dm}w1&Q4VwY=1(h^6S_InvX(s*z@Jmyt=l6P!OVnZR9)b1PchR2kUqy+gS z7e6(2`2a$W=VBIjSD@(SMg6V7+`Z+DDnZ*X5el7VDjGDV`nqdqvw>~4plw(qoN+o; zq8u%T#fTDd2JX*`uwvuAu&lf$tZfwK$A?7o_^ z`tK)J@A$!@tA}KEe^nP}7n0chMT-B+3IDb$8TjYy0%MmV>hqiG2=KKZyZzcANZlY-bbW)Os*bacp0I`ixLGc#6)o0#BIW3`}HBDmXKoulB9!}_p`7XTrs{_1B# z)sLw^deI>2$I<9#)1SqzcDp#XyN904iJq*|SN@LXzSO_@}o@U$1sqx7tyvhz=z~#jnI~f|)^iIgNMVSZ>Dd7np z7a2||6bw%c`9g^cdJ9Z9w=I-Izi-}(wdVSRTn^DP6YN>>hmKe6Auglv?K>QBX|;QC z*D&8A_Gd6Jbq_TzJ?=n?%DHDDdp_-&NeH(zlgyD@4<_pE zCJd<;cKB@7R$6a@$p?269|J|bCN6)l??Q^=6xejbj>U%?cQSTLKmW;ZlO-A_t){7N4>&0l|RL*ijG-Y#?6LwT540R*g!e!9#sQO$ocX zR9&gxoZ&&Azmk2tvf|gaY9_z2nlr6g#VQBanhN4qwI+W`(VDSqePNOt$qI&*@vsu@ ziGBI;mk2o-o9q9?P_vJ{_#`%=NKU}}gb%;^_(J%Fi{tS5K$me2yI_u< ag?VpbAuwUfKHkX1h*&N&#Vmtc$$tRFEf#wK diff --git a/docs/doctrees/pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.doctree b/docs/doctrees/pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.doctree index 7ef03707e80581affe85a1fa8c3716fb65bb9dce..aaff73ee474b39aebbfeaaef14a8ac5cedce190d 100644 GIT binary patch delta 5802 zcmb7IdsLNG7WbUXG?wrF@BoC3z3tpr`Ui2woseF z7FKf|Cft7k(n1D9+OTBJJt5BF(&$>aCv+M=#eg-1u#ccSsL1?Z+G`g*@So6UwR7|m zp22Lx#7PDnuMUC3`NORzUE;+#*d6vjkd+S@AdVncXhd~L3U-eT3KX44ZxL_F@u(c% zhK{iTFv6CqXNSjfHX14-r?3(FJCO;@Is&&V#YG}iMAyNVd#CadT&foam+md{$)pu_ zk;~zHXec~2VwRRj9HnC~^1@yPqYI`VNB^{91YV`XD`<9!HbA&0`EcrC)c zHJ`)oqG&DBLjewLVUvPNk)yDc5hbye{T{YJ7NK7lWiqfjLgrPCyY!wYe+Eg>Q?2yo z0N8>6FY{^zu1bQ_Y1S^@QQ*ABtkYVEqrh!)fz$OdqZvP;Fudqq@qxmy$>R)#;S1y_ z3||r@F?{*E7`#X<+;}evu8&O(`p&igd)NN&e|vxB`yo)*@__!@xC+L(0gB7VbBh5j z9tK_I!HmPjgwe*w&<(x%u?cC6M;K((_M&WuZNgz%{AQl0_Iwu~%qGAu@uT^4#VBke z#=?Xoo^605ZL{#@VnPg$HNd6zaCqT)FBq5Tt9gpU1EOmTVz>c*+7rZkmCbLV%?skZ zZ8woG?OuToNx#@=`=2CM*g%7)>3@+5!8s!-7gsJO>hJK&aBY0!7S_B`V{p^Jm#6D}LkHkAf= zcJnltKXoUog!+^laBE)#@RS_>xwIBLtJkNDVcJ=eBU4>`Lnv$E(X<4}O&J7!O}_lJ z0mjc=I9TGlDell(yD)m8YdhjXA#U0v?Hjiq-3CYY?B$x5%#SnfNsE`vkM2IlQGSd> zX)3lx5hY`56!YC{d*_amD}_N2S4&(@!DTap@oP6fYSPlToBX zSJMM+E53r+GecnVj8x4%Au@3(!VY+7Hk%AZ4-I9BFm7&v6Z2w{U>C*skeE#~g_cP? z<;^57XI0aZTxXF;g0>Dh3R*c)5?VPy8+BLEAl#M?TjzU2`NLfjRt%IajD%sCfv{uN ze7;>mdbf3LbgO0W3AEf?tz>*j2qJYYNk@x=*~Vz?{jM&aO%j zS3E%k7$t~d_>dsF=H_X)X|n?HtsBI*eMBON;4!#Kfruqaf`~Oj+t|Q7QzJ zMOdnbKvWX-uR@N}ed6kH ztS5C(yz7Y1f3Nd{3pxIf`cx3?Up$u^y~)#@dFxZ3OlBJMcIgp-GgMBN&cIn|s@u|3 zevTpL{FXKI0;xI6 z*S}phk!ks)fHGjQQv7If3eT5{vt00BUf|Sw1Ff`+YScRtURj=@6%#}0p6Bg~(Y!ta zN%v;tDBW9#lDfC_Pxo}V_O!DEo-NtPI~9fwefx@JX6*px^H1KP)IZ><{ui{! zF20iL&tI9Zogju%|Bze#Lmsk}>HmuyrT))EN%ep3ulmPI-{yEBXFvA~TuzRF`c)hF zK$EN$7Cq~^sZ6t&P#fikP@KR3idvn{EhZU2UMA0a5l>6)VhTQFuKBNdObaER0%I~c zZsCC}23}b+%I~?N<=FN+vaCk(0vtSdeoZ&Y3)|Z*C(T3`w$(%&hhk9q#|MJvBSYC^ z0a4N(3rrM>HKQx`TJgze#It;eHjGhnQTLFU?_!8X?+%Up*nlZX8J7lE^5Jiqo& zjBNl>K7m&gBGoW%fbQ}bwqCzeo{1$++TFSy z5gAaBFp+ngWVhIX;zoNnVvlvu)Td+glu1s+j>?bS?R`gnOB(XXFFTuplXn4>Dr_six6trlye(HA8Pwg0B=QyT&%X zwkn9xzDo(=vTYn=b_r!>)i%bP(NJ-)ann`K%-AztVhnCo|1A5(rPX=-F*;{5%hhjH zk7rsg2~hE{6eloHPt;7}xn>!tbIcT|eiGVEQBF(kVk2ZXj)d21r)W#vhi97|QM#Ac z()saPmV2_=EPKW5K1We0X-AHVy}d-q*xPHS*t@IZ&PZUG$TG{~e(t4@3Gn#zXgIUA zfxoX{cImD4>CD>YKKoO+-tYzQQV2WyAiPYg?BWMRxJmnzUX;I%Ds=d*s~zs!n?k0gypg_7SY<;mo4_JNd1F;KPlYu-zm z$^u}Gvbd!7=&i4T$8%zJ!bcm0=ey(JA)zp&G+~* z1-TP-@SOQeiq`4Y=cEO0G_*MO-Oq6`!9Uyw{&`w%7vCWKP1;F%QI34m34I{!d+TL> zO~LPQFZe;hf3weV1mEcEgzrt1gzxR!U-%sge!(LaD1Z9^nSjb)YL*|uiGSgB;#Zr!97o=?gz~hQmMJ z&C_Cuqiit5SGu3d%8)*y31$Iul$ReTO2T|x!n~`pf`G8BXsgKCDo}S)xl&C|zMi~N0xe*^_hY$>%3$De~@ zB^>)G!+Zrf`1kZU{yjYor~e*a@e%#Sq2H$>jDCU9k4jNR1O3qxw`iarPU1B7M}mIJ zh(!9VrvDV8mInH`7guPYFJqBRUpMrHDYnr-pK9VZ4fH7@a%rI6UL253t9L$1k%saRut*scyP)_)0Ta2N1TF!iSSDbiC{eg? zVo(l@D=iIy`O3;MA#KcDImxWXTFqM1WTs84HCd|`HyWBb`<(lnu|GJRZ-4vyo!@?) zv(FtrsOdVO(Kc$I3wnQ08y7KCS5>{aYGe5}duyA?IW4cMd#r&!2US%+Qe9QYA8Un3 zJsfe8&`SiS&ND;ydNaA8wnn8Anj12`w{x ziz*H_N}wbm8nVpGO`o77W-+l&X6NB|<}~HJ4@%R+^TPDh&yNjoF*D$7P|jfFHzDxQ z^dPl5W(%d$sGH3cHDc-4)cC}E2p#f}Z}w=Nk>q#ztcK*Ta)~7WG0p_} zk3Hm@DYQQ^1D>3f6?WaN`K4R)OR4$&a42*iPF3^o-AU*#6#kriFA0E}IWb_qFAN0* zdtxB_PQ7*&Pm3|N^uBCDCPVM+bY+Y~Iinh-fvl!IB$*x`H3eD!s<-JV&o+L`huI@RBGF5|)j! zpHR!e2=p(Fg-;jERjzr~ysU8+#Y@!S@6P-WJPHB+BJ(eMt)u~-JfX4vuH>1DGm$(~ zq4&YiQ1n~Apf#E8!0*iL15T(T8>Z!4;syoVWN`Y5N%#JbDfO zv2c}_kmW)_emneSQ9en5*xV?Z?C))034ZNh6~e&xayKivD3B4G?avKNHO+P}fLKMT zq1(7X=6(at1pNl2ulUf1iPbsKzcv8=x-%+hgR~_AQMT*thZ>zX|QQ^2FZk`(kPm$#l&#Yt&nu9CEdI=ixdk=B;9l^ zW`>gPgNB*i$R(0*6V3$RreERPzjl}xr>%I9&~7(T+No7*iZul4Hf1QC9{g7%+t2c2 zVcoh=s4SgCItA+vAJ)V8g@av0)^|fv*=pq#lt|WgWGzlHI9+x>*$m&7MFz*#S<7Q< z%PPz5@;rmL%2MR3Fwd*q_9pud`wYHcUO}efj5C1;`7)f{FjKMn&_#FLieEDR87SLlO^^$z zA<`$O|+% zB4}dg#0B1+({}av&LxC&yIgA8&f%QC?1Iduy*wGv!r&ueJm&vyx`zyjXWl>Y=he+~ z$z}e$nD)70MeFnmNAYf*6mM7zQJa>%h&tFiZI^+n$3U$Wy%WCTQTmzx6KbM&LZPd7 z>Out>xvesC*gN^@Mek&UmAhl8NzZqqJb%63(>ReZ7~6e+pnw&9(~D|aODG|JVA&I| z%;1_%%yFHXn6{PBS%?u0rNQB_spX$^TnED$3!r3Q51*=Jzm?GCs3EU7mIM2L!1hV8 zAdpPQ4SJD|w)T0{!ZrD|B2O>UQCK+28c@~2n&94NN|X&A0{MDpI=)0(B?r7YEb%C` z=rP4i`Cd!G$g`ru>96VaiX!lnLI&!pT={eh~iHdDUgd+lP+PI}Gl)Oi+8D zUrLk-2EL+M`|K*!KoS6Lql8>o^Sebv620);Yf7j{cGV zV>lOejuTg%+fhOKy$1ar0ld!17$hEDPW_FrYPXqR3VV+(_NPWqnbTmSxE~2vQRkfo zaX;!fcAbu)0ddNmT;B;iY7oUv;y935)cWe<*XgK1)OzEIgJe_y-)Iy^$|9fTFzdRwL}pz#&P3LA8!_vA`lwNKq?s+`j5-!V&mYd2ghVjs zB|R~91crN!ka?E>so}t0J40S~*=rhfuX;PxQ}Y#%0y{6gu;7g)bWnQXgpU_KMJxxq zCcQA{O{;PqB{Ie*U0#>~AHMlK`P%J?K99~#>4}qWPPim`f&{ueL2)KLK?8ry6Mg83 zY#2Cw3PX+CUs6F3WW5#w*>9U*EV7VJ4s>rJ;i~0KI#I$ot~1zifg;#L%YvMKi>KjS zp9lSpK(WC)gPx6_IQZr8*4cVf96m@(L!f3TO$qSi5IDiLou9y1vd`+5i9m diff --git a/docs/doctrees/pymatgen.analysis.diffusion.neb.tests.test_io.doctree b/docs/doctrees/pymatgen.analysis.diffusion.neb.tests.test_io.doctree index bea4af8a651c3fe4f87c71cd7077b79843455f45..b8934684b1532086466d4f2338a9ac6f3640c849 100644 GIT binary patch delta 3212 zcmb7GeNdFu8t?)VWC-KH6De&Fz6fubvAxF-yGy(k>nril z7CJP($D+owW!?(>E)Oe3d&>-&p+`s+l`oc*msC`&^{(+ZZtx^|3Oo}%CeQtz>u@6_ zSI>6EGX5Qd|71>tC3#Lhz`%K^9Zt=Ogr?MZSd+X^8(??cC2bsHh(S$b4a{<V0E9YY7xnG=P(4CfPJ2wgk-bl%`C!oIQL#dcd zyJKnx@72Y`h=1Wnqv)6GNx6QeUruRbY#yA-bdalTuKxAR1g6cUTPY-mc!W#$HqUy9 z&*jR!R33KkDdpZ8bk7N^(jK=xLIUMt8g!-2)6#B&YD&qlZ$gQ3v66Pu#Y%o#7vXYB z98}MK+P*Dp*ATXA_#L}deQ~h2GgDtaC!g_s9N3PT>~9#U6PE3;lOU&O3Y-r_vKD`Q6(YLlIR!6B=W4hzu^ZCp96cbcKAx}2JP?UqEKx&>7qWx~}GNDUOc)}mcGQg2F zCraYZpcXj_tFwM2!<-%`4E#09wg|5b0Z-CvvNtjI7~(i!ncs%zV<0J~i%o)yIlZ_B za%IoWolT0DW*o1o*sbhcXx0>uszOm0nN`wb0NuO~foTFL`~+1g8V zt!lh2Cb$~7kFPUfvn`3F=snkb@i6JZiKb!E1O2sA<9bos$i$WrhrK2_8{Sb^u(WQ$ z_%BhQ8t*IG$;SH%_SKD_cB|2#0U0&hViMZWc!PCwtqeK|4sKq-F3G?zKxtkN1RBQ3 z>Ao;>^DibjKHt>O;1^74e7=_vMXQL!I5P$|EaG9?)&lJpGF0XKK?b4ya1#`bPZAoa zD3WO>qewQ>`24Xj&TM--6vn#^)jZ#9&=t$oS8k7Gwp?;dm7)-;8-qO8to&bKrivK; z3+4ZMIP}^Yt&l#H|Ji0Lf|flB#SG;C7L+Le>uD$bub2KO-dP#oN-$Y#rhZV~1vxxD z-2wTX@%Eiz>|J5(T@w42><5Y>=IJMV8H}~<+L6k2$^*7JGDMr%V2H>M5RGnw0e=S+ zy^+B`4W~;p&Ttw}n4vnOfe$DQqKmU;q6>aeNsuqtSr}?c=RcER5gmv4f_)A9cBa@y zgJIHZ;zd7ReG9huAXJR^sTc)mk}XITTWOjF(@J~E7PK*Dp%L298cKH9B z#q0@08{v$a-9hfM=(X7!8GB*WNt7m(HU2^cT3^b^h4ki)s0;16E;!q~gzZ3eCoIi# z*j^)5S$JO%>UJO0r@Zsb81|lmE1tmiz$XV>?4R-*2?xIuTBjnnOGoHjuWC&l1N8^) zg(HE)QE;LKh5|8cD?}e&%KD+GJ%OErm)obroyQxE47QAf*xl01{`vcdsmsL$uzsyh#jV;Z*_=@2ni zNj1R_(;0`cz47cig%T~h;+jYz#bJ>KrH5B*G4!Dt;f4z1#z+{5Lv#8N>ZmaCX(z+T zw^A4n+{v7}!1vL2hTm_0>|;-o-?o)>vnt;yDjy_#vRWGvighZ8yF0SkN(zD(StZ+q zqS!*_!{T-5?s!34M;|JR6;@e{6=8G&q9|HWqN3PCI~m2EKN7{|pj+EdbEC)xN8BKr ze}tji!q9CJ`nF`F@9lh;u|CQK>(VD5oyD-n26YF#(lmkp7j1XS#{<4MKJ0po{bU^B z>taFoRL&wKHxY|mf#z;Ek0!w){8-rYCwg?C-NK#}tqa`=xqF(@Sv_7HN6~Lt1O|`X z2MN7Vyn|9)Fivs^DPn@NA~0FU!Ph%cJ53Um zjy#SMkHgmrgEL#<#m}5IXXp__k7|*MKL$bXSMe4t^!^g-@FyzhX(7I+g?`Us0oGK| zKTf<)3lXo_O7lttBd*gzvn7gXp#~Klv`}t0__XKC$|}5N6(vvMGp^iUrECArWxoP^ C+ZRg! delta 2888 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 Rh-uF5VnYn-@gEAwe*h{iBKQCR delta 3560 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 delta 1352 zcmaJ>T}%{L6!y#rD$cqPD((-nuw5B;MW2BmhJ-}poAEc{L1W@WV{9sk2{AFY)y4mN?v#Oj@#V}n-<b;l8PFY3@u99N z6R==`QE149YTm+a>Mfk{RJrCzb`#KF-jCP3>!b<5$#SnW1{f>avGgGorrBeD!G>%P z{^a{oxk+5077RZd$N2KkUE_{A3B9XS@%v(bWQMcs7YZ*aj5_F7jt1Bn5zq370|oWg zls^PgzBKC?+*Y;f0he2vHO_*P@Hicaf*a$dKFGnUqMb{ll#ymJei05QiZ&@h;%tWs zE(?3HxHzaN^Q7=?Wq?d-4V<)1HWCsh18|-oG^{=^JHf@x?2eWL``h*9@X8g&|Eg=Tj&Ii~~ zk!`#XX?%#!sWB=!mNZ@pKn0D4%2H&~o@fW3XfM3N!EiHV;dJ<8ScJ+F=5dDPE3A_{emsiHMA{<$r<6N&f1$XL`ZCgKpDqPOH4D`DxCOP8sls43&&-c__Pmx zn{};>I&U#2@pQ<-r|WjlBl)M~D?ftwKa0Ys=wmpukK0t9W_QtC-{cyn8~Zdy=K2_M z-oVD4K4OnJYxgllNc17lhx?%OR_lyF9saer@FQyR72lfOWh{rgWAw*h?G)&9VAZ5dtHOpU Kj9PbNyWl+u429DG diff --git a/docs/doctrees/pymatgen.analysis.diffusion.tests.test_pathfinder.doctree b/docs/doctrees/pymatgen.analysis.diffusion.tests.test_pathfinder.doctree index 42dafc01f1e9fe68cc4ec6c6d105a03b6adb1587..eaea58b56a105cecc176577ec4adfe7602bec346 100644 GIT binary patch delta 251 zcmeBlxZ}Xuz&bThVI%8uQ8$jfeBI2vl+=nTojvS%`7kCQOjtKHucW9FD9Hnrgz*J| zDw6Z_N`U-g-O2k!r389Fno24QQj1edN;31(CtnvWx7*Cfz>u{NL~H>Oi{PxqKvrkg z5-_@>GSTfpu!sMwUPQ(1bVFa@=FwoXRzu Sk&$~dBTqI9W8mUk0VV+Fco^9L delta 92 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 O-lTFE98P{?1^X{#gBL>p delta 3644 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 diff --git a/docs/doctrees/pymatgen.analysis.diffusion.utils.maggma.doctree b/docs/doctrees/pymatgen.analysis.diffusion.utils.maggma.doctree index a817934dd68084027e5a06c52a7af55ae19b0d14..54df5413bf75a3948fac8175c5c48b5c3ccd21ab 100644 GIT binary patch delta 372 zcmX>W-WbZ-z&f=|Ya?qVGvnFG^~`6u^rmF6$4j85a^)@T8o)={do%}&cY4U$* zlgaMV%LJW$6H8KyG81zYQu32ab5rv+|ChF9Qj^Ms3dd)rDCp`cz*S|YfDP5ia%Ey* zn5-jcGI@=h-Q<(ff|L6d1o(k=aU&_6oS-1RdA@=VBWn*+LFJUm9~719S(q6Zdf4-m zvPvooQm16Gg18(hsm002{JebK%)FG;iYc8v?0NYxCLc^#H#M)Ms1hj21C@mF1%WD( z^Yco8{9?Ew{=9scSZbaqL?g&3kcGvmB_)}8>6;Uk5*at2QJ&4n=(IUQ^)WM>1khbs fqLTwPg?T~D&f*Nk+9?`9kwQ&x#*WQI&hsukbXc3;(=kwe4%R}Z}_}OTg1h$=XaLsvLzj8AW zq)&qwg$d5Oq(|~?=Td>3<)WWqk@X2jUUwJMp&>^xiFPPqa#0mEL2F3A30e_S-ZJ_*gkuW$!gIThdQs`r4}tn@118cee&>jaI%md(yPo z4~>8nwa$+MSxlCg7^IrRw{%(x3CDZ#VlSb+kgTYotnP;J3pH}D*)gZ(RFa7_6Y5s} zxb?y`aXxqan>Bwy6R`z-a9QpJT{5EM+A|w9hCFKOufi7Kw0C3Q8(o19g;%-jWAhIi CE8Hgl diff --git a/docs/doctrees/pymatgen.analysis.diffusion.utils.parse_entries.doctree b/docs/doctrees/pymatgen.analysis.diffusion.utils.parse_entries.doctree index 2ddfb78112cdb3f5d5829f829d889b9c78d83024..11e3120bf9e04183a180306df66e32a1e1f29b1a 100644 GIT binary patch delta 6893 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 delta 5737 zcmb7IdsviJ8uy%GW?%*c6j4B6xX3VEhH%Kdlq)_yl@d2oR+Fnh%nUGGX3)heU}+R- z^`cLirQ{`Dyb-xpYC=zLc2&~n*?MwITld+G-6-m@+HALd-}B8k^NqUO?mypm&U@bX zcYf!5?|I+%d_Qeh4R27X+tgb>8|+iZL@)#Fii~GExF;eF+h0e{9P&Fdk_ZFa{nH9p<~Xj5V6( zjC(DK4=;kks4)2YT^%}0!%VYZMzX^MneROuZAf-jIGl!+4b8PSM~%VO;4pPtwI$uw z@UH)8WVn^l!`fG^H+(u%t}e#r&>@BffL zqd^y};e8~v1RO?tbUmD{ebH|Io(7&=YvE@#P_Skay;>H}pjS`qZTyS|h7Owe8yaXj z8V?yoh5VYNJt}GAYp5uhEJ-q!X?d>(GN;UEixDFoV%oI<3$-$DJTmaf(hKZC97_Xo*D^e*17Ls4z}~ff7v;b)>U$j#}cZh}NyoN>Qniv%ey< zXbSKAsn(Vrl&ytWGHQ z*H8DiyA@@E21hB|DAZ~DIs(M@b)z7QIz;dV4;TuF;LAcF6Ff=;-KrnRs{S1~P0Moo zeNgdS0=tCbXl`EuyS9eOOx+g4H(Jy}XOofrKo%UnJ1u-=35N~M1$Z9&nxbJK&jJ`(`FNdAj`TI55H+k7A?hj}W(-lEX(>ca9wzS= zA!?ouTh!gyZ7;`c(iIJj6;Tk-q7V9x=9ePY6)i@r)^LN<=BjoYY!1Wn3TL&U+Tm($ zHS6GL%PdTWe{Wg)OA3kb*$N$7AXaesKo~@=Jjd_RQN&|qLKu<|A_7P;vckZJ%Whwk zo1SKKIIEjo)m3F;MnihKG&R<66)r<%gTqyU8ivXW7baa`tzoduoXJ)R#Pi1|@)bG? zYqM4msMyauYfN6ta!kyT65y?Hy1i)_?I~(Hbt1+#>L|uq?xZa!bGn*aDqUV)R8>lt zZdz0dkdU+?#}G3;^d>vGO1Q;{m&0z)YIcg%+`IGU)foTl>;{QzOLMhiX$VG3+o4<< zn+`)!PlO+Q|xy1ky-3L55Kd5-`uk|^NagM zI0Z9=A!cWk%ph`Y3x*py0Q6l)#Z2_Nyf&X+WH91maCBWO=CV@h=z5GGlxedc;L0bwh)`?_C*=ecHo!Um*vH}+BWv`^Pwy3=i(^__`NNc=OFS6o7 zz0#DD5Bj&9e6IK$XsXS&Afl9So}iY8H>M3|W# z&qD$|H5c7CaHL{O5>NEejVl>1@*SeP>wEr+9zJ>OAvPDvyR!J~K;p#Qn?lk+f3{cQsz=l z32^5@)K-vvds{y1@sNE^B6~!T#SW1@CCFlj$e!~d`>sURt@wqQ|2ZYu?{6k6DRcE$ z`pW)p?OI6KZsg-hHd)SrGG8=M@O@`{K2IAfE*{Bag$KKp~v!oW|z`Q;=ZAVj_wyDEMl^q>w6G zrAraF?Kr-P#xP2-bxLKLNWRSbPDX`FuU-@?dnq(yp|VRa?oz!J7Db`5H<&`D9tQSJ z2|7+xrOM<5j5sYxFzLl2x{tpYg};10-9HuEp$BG#>Rb(2tRTS(m-~lL$$^D9R<6+`UcD#|u%BuxF$Jd81<@(@1YLbP zjuJw6M~QIich}gD9@Fn6Q+%mjInMD#`rpd>@-_H_V3F`o1>;%58#mSpuLV=Bz%xU| z-Q652djJ*-xcH$HNddamMymdd1~_ygD$rn*>sl0KpD_DjLAr_bf^@4tZ+n_FKW}?R z=!O_jAZrU@_KB20Z*@4A=1diL;9tSu%i>27H;4LC6PIjWCebTa(u1(m>D)yF$?hw* zIkC>>bamT%v1EC~eh{B_aR3itE3d_xY8}MeSR+m)UA*f(lNS3-N(B&}54iw(!6(Gf z?YjeMcy8a+k*cBn)DqQ@X!%q_{i%aZOxLApXmK^RxVrQDcf9c|)!K+hYHhcj20ESAIQ+AQ<1qK^0u~RCpFK0>B>fPhpNsha1|Rg72d_!^ Vpvx4-A$(w=weoEpgUt7H{tYx>oC*K{ diff --git a/docs/doctrees/pymatgen.analysis.diffusion.utils.supercells.doctree b/docs/doctrees/pymatgen.analysis.diffusion.utils.supercells.doctree index 45aaf88cf669deea8b688d862b2956dd58282d72..c2da9323974a9deac84781b601ccc08b2ff8e066 100644 GIT binary patch delta 2420 zcmZ`*YfO_@80MVPE2you1-TZ%R_I!V77@HuL=c3c1QeN6xplOk+A6dvE+lwakjZYm zH7-*(&0?};nYwlR<&=R&&0<8O{_uxGXO@^PYRHx?W--~h(DKoZAN~5h=Xu`edCvEp zbK3BI^vBOg+9y5k@qZ&dEYf(ZQ%-FBklP36g>eo}Ls$ zy$~*5hb~0*Ueq?Aub5u%l-}PZZRlQ9Z;b0bVS1#XdM_h-V^FoC4kH;n(QW`&auIqB z`KwG=Cj(8LjTC(=7vbz!w1}bjHPK2j;&KivW-VnSWk%d2gH|=|{={Lzol|521sTL! zli;>igAdd8emZiIh@FVCX>~3VW27_>jZIB3dCew#RR(t}ZFrb`*^KxuXATdQneaIG zAjoj}3OvE%)l?MW=Q223l1p1eZ}Y&~2Bd>Km3FL=GpTGjo4W>D%S||6&ZeS)E9EP3 znVdZ)D&>$kyCK5x&Y6mMHpS4KB+5p(>MTMQ_{V8N z<)E&!V~c{UjU@QBScmH=V*}8YYJq1PO{g=yWw}*rrNnBjeV-|Ge+mkAc#)HF@jD^cEUcXIE zslpP12rm@maub{lixcnDN0d>G2zwZgHax|DDxkE<4C*W?oZfUjae`3kBMi0)RiN26 z4-Rc!kCd>w$pVf%xk9ESFnzioZA*iNjRomx-fnNeZLnAjRX%UP+q%=hYIbT`hnlqT zwk;FokbZluf%FF3$bl<0{L%-8&^w`nq2ACUl7u4sz14a$Y8hwV|Hw`2ATwQp)0MEt zl#5beVr%yNWOpP=xvwKOhGJdYV(=)23x`q*)D4(*pdlxUKQcesq(WUYp(~ z3VRK#Tiy5?Hysgm&rjal+P;04zk|KQ&8_Xh;4T9#*~_b3vk*;C>2=R%l%`0`Q%e-< zh*CV~{=bR*b=nShTdMx{v{mR;Gp!to#F!_DbVS~I6?VmE|L(1Y(*tkod8XX zJ#kok_SLm4*L_EngfHkB@IAfzlHI}C7M)i3n%oZv=h^iFyIu@`+p+_NO>HL;dKSLg z{#0VTLc1=JOZTAC*SgEi{>P9FD^Osd+ml81u5bx%byj0*0?hYZkzJ-1qv1!M&FEj8 Cr3mr> delta 1921 zcmZuyTTE0}6rFwMO?gORMvcJ>J%8ST*ex&~HlAE2PZ&??p&ZZX%dJt#yf-S@heebcJr+F@Js4dkre5R{DCBS3?J)L&K@sYe*S*bCBW;r7zg03{coFrefnOmw=%MbUK7pIrwnZ z&p6SX&sMyU^uUd)cd@Sw7)W>E#nmp$ltHJH9FiVCX}cObTU-O|JDzmn2jzBl+knkm z3fO%EW@eZ0Xsoh;{bj)L^CfT_Zy%7Vuvp9`X56gUT6P@L);1d8Y z<}q?HsHBNf@SwlO19c*Kc!8bbz?ueVPpGve)HpA`eW^)0D&@*I@mxg^4kk1QRn7N= z=Ah6#ozNV_$CY((p2s7$VjOR7WuMN=5;aNIzpe|W6SCJ;*&l@Lbs_s(LiRf1`WARR zC;Q5xH86|4RUVdU5;n~m@r#y)`0v66kT+7@jPrn!rvUL6Gr&JmeVo|j1#2@2TW9fJ zwTA@-Qp)Y>TGJ^o%@k|JyEdU(K>`>=Km`-Ny~j~S(sG_SnW3YnN+=Mw!-!=^1B z$P@9tQaejCb5SUyiBd>IOKlZY^Ca&ImtAL0$ZF7b4Z3IBa_Gh*b!+D|B3dG6b1}S2 z2^T8$B|Mo_%(cx;@G;jH#f*w#&WV^8GpZJIQ3#Eqb!# zX`SDGh#?CsnNri4mf@U~V3-+P&YoB>>?^>y*A3q$oS2?>!ht^q$61dO%=X%LNEtTuMF#dq2BM9z?(Q=H{+PaJMqgm({45&! uhpkGWH#9J~Kh#h6rOXpU{Zc+%opKhY_HJV*Qn0;u%5;e@HWhO!JK;ZTj${}B diff --git a/docs/doctrees/pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc.doctree b/docs/doctrees/pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc.doctree index 91d91023718f52739f2f6ff99f237c0b7e25cb42..debbed9541d9cbf105583fccd42339f6ca08ab49 100644 GIT binary patch delta 707 zcmZ{iL1@!p6vy}2W*e7oF}gH#i?$R*?MB6eh`V@E&^bIPo~BOL=<6pY(8H)lW!K@!i$^bl-}0TCTIqoAU2weBZ+-7H!Mr_v)XaG0TpAGd>rtjUs0?y$i4&nsL!E>n&ut^gmC!}6z8jUaXV7O05AZTl7hLq+!3Y z%Q0`1>_s2Ll)F5kM+Z`ASf_L9LK6Gf#2?tF7pbhYh5KiL4{XpW{rGO&h{Ac4EFC+H zZ&(5b2C&7FLfVnM^|0gNnumdh?>v0(;RkvwT?k%{mH~34C^KLL=amA;hS(CHV6Y-> zYO9c^t7#1kno={M)01>5l@}vTHphkKsjE)OMd5@{EJNSblVh13DZGry=7rs2SA?`9 z`5)Qmz5Ml-LNX^<9WR3H{LNem$!da(E{!WRqmDo&WUGmxCVR<+)d=*X@``XGHaldq zcjWLgX6p#M#nyzhBl$O*7JSo}Ah?xz2JkgVOl}Vz{K%JBmmk%JWL>YA;a}m`eI^=S j6?1j}5bKhXorMC;XSesQV~^=#Njx{Jh{Fjk<}Sl8zi#XD delta 620 zcmeBhTj|Quz&dr_MwWO^9rnEZ%)FG;iYc8vJWyt8UP)0Ukk6l&pPZjp0^}A$geKcb zicQ|fXSrFK%Z8Eh#N-5S3&taxXL8FkavsT$$zaZq&A2xCAWxs@sUEhX)U=fR)q%!~{S8SAoGK-78&wV^X(V`s)DkYhIQ<6FeYC_6b(z?xBV^IQRKMt(_1JcSpeBx72ZCy>gLpUf$&!voR|aaoqwWJh5u z9x;#r)ac0%BrK#NKmzNsB0EuK<4 wB?~0cS)8F*J4GXF%jA3oZ$^#DyA>Xb?9VuoB?8g}3jM515RtcelVTVn00V}^N&o-= diff --git a/docs/doctrees/pymatgen.analysis.diffusion.utils.tests.test_maggma.doctree b/docs/doctrees/pymatgen.analysis.diffusion.utils.tests.test_maggma.doctree index e5016fa63420569d05d2df594068f95706fce7a5..70409151e110aa55ba523c1bde932a3f3a473616 100644 GIT binary patch delta 107 zcmeCxeGvW0r7zNBYdZ-yXWG~?%E)stTf)P)77V{ z&N<(A&Z!?X-v8037VJO0Ei(}&XFV1KNg8lz^jeVmMa&ar9+>?fnzv0yw{mu0rbX^^ zqZcs47hx3SJTY$>-KOa(jAXC;epPZ`g=tcME*hdKR^Kum(b5eSs)$d$(ywIWn5hv@ zdMshlScb9}gu`JWp`zy$D=wAn(cgPs%toV_-Hy|sfF4o{tt)TvGurOulr79Dd&jub zHZz8^DI<1t%d3qcmUXkV!I55x!i1ZnV!-q|Qz{P!1-55xwHyYL?6T@dOiBpx+(=mL zp4NgQn+yibKgs!!<`jBWu@Sv8Vp}{XHpNY`EcSHT|EA=*>`O5&ct7V^D*Khix|PMc zwZ;0_uk>=M>Pb&y*3u9?d}qY1!=+*%7IY&_0)95-D(6Mi=sO*=aIMtr-`16>nbpx z@<>e?CL;u$e$54;Csmqr+1bC{36nA+uX4_PqrY;66ZU3yVIFth1-$}j`xkuKft%a( z#*-mpPZjwLG`D9~=T5;o(5j$Xrt zx^@BZ5jJQa`AoRA&f@4mW{gN_ErTO?e##9w{9DleMv0$4Ull*SUJapsg|q$yXO@}z zmYM9|3PRcVfFKAUB%|Bu@G9{z@7P<1ix!Z(*6JW9kc8rS6auYN=3gouG-JtWi-}`# zLgtAl<`EI#4(T*}!X- z$>(aj&<&dyfLFaXETYI!{yn|!snqx2T_ufpAnv_ukbOwxP;dc@2-?h=5v^>Iv4bo#TjVAL3E0WAGN?^GU2~J-ZgqLF>IQ| z2@wB+SN@6Gb3$EnrC8;@e_-O@pEOZ_CN3fsdQ{R9|G4aeA!6yAmZN-827&mS%NOGN zl`;PhdEjB42ZY@paeBGG3!MI;<8<+3@srsA|LN7(TL8e~eeqEI?09!^VL?26*NC6% zrsEZxVThBhm9VS7kYmBgzkEt-RTON$tMpusg2iu-@6g76clR8oLkU7?2#$|^O z@sjIJK0fa24o$qIpHVqWWW=Zy^|Cx2p+a;WT0^CZMdolpuUB(;fMG%FE$X&k5;*=|e`VP(V4)uq&`yJ*s;RZ%G-(*pNHmD*5-AoIW70Mim?IYbntIKnS z*1=#9Fft~KGYmG|f&|194A;wHkw+M9Q7J(EBE7}J4VNJG?l4VNk}5v+@^DdaQ4^jN zv3E91^VmSrrkXVK{4}QCUP9$_PQoK@CEoo|39sr}v10i_*~T8}P3k^#jCp@!X;yS5m+Is4M%d7kE;U`Y^hbeT=sD(W=7?JPZ|rD3%gy*Kw}PQ~$?K#OiW zy^}puU*DX4G54{)MrS~*NdXf@wjqW^Xd?UVXYuUxtHSxg%oaEi4AUY z|3s8YUIeL!&Iz-w@iW{eaBuoc8zsK-PD2^G5Z(5IP_jWp2Pt>CT0sLa+r(icz+iC( zrCa4RZx}}QDnLI=Pgn%~nZ+VcNLv7xZ{S)9u5v?!=#EW65l==4#3+nIWnR7Zf^KI# z^I#MXRQlFnnOPPStlMx89 zLJ=K72yiIR^^Eq`YzLb{Xesb3C_JEhvbT-iosm*=WW~@ntOwL5(ls2WuaeL`AHN8U zA9wIa>K2KqBcVz5#kmxBaIJYsF^Sz*ajgHK-NOxJ*mNWJzN5*5rLE>u1g9~F9QI-sqExBL*WAQ!>vPC~p@&2z4tmbiJi zFa!YNK^oNxuTqRV_sMJ2ALnM>Zb*9rqLUI8bt^` zoB^42^{b`)0Yc*)^Ewy;RWY~*ktTr&w_r`KGvbX}Y{PmZO#G+_2u35i2VM_||4XWL HwPEi+m~12s diff --git a/docs/doctrees/pymatgen.analysis.diffusion.utils.tests.test_parse_entries.doctree b/docs/doctrees/pymatgen.analysis.diffusion.utils.tests.test_parse_entries.doctree index aee6afdf3d63c60665695ad07b57851f1b3332bb..8dffe15938d5605bea2375fff04a7a5187743471 100644 GIT binary patch delta 1234 zcma)+T}V@57{~XXGilP9T3MpU`LX6UrqfKtY_bT!8;eXSh%QodbbQG(YZG%~X#_Pm z75S{IZlbOt6z%lkMP)Z4N+wAJg;!nD)s zJrI-xi-k@zo7z#$q|_6p;#BAHDUZ*1e9q$w9%n)IcIb~BM~KzUx=mWi$qojl_8rCo zZ=fcBC*+o$NK4Rq7${p5oC3_rg~S2lRb93=Y)jHkX!jJrhw^r*9u4CKN@1V#pj4U~ z%=&Y^O~GDf82BMn9G|O9@q3`eCFw1D4-xBSHo<%a64U2g4Md7Xa;aFu* zTHSiy`hjnt!CXRcAvgj<0p0>^EMZ{S%eE^8r-gJ6nr9Xg-{{FXZcKaC)OnCX=L65 z-TPbZ&FC1+9+5A$=f63)*yovJ{M!AfI5k(9QWru`jstGhwFG0SQ6s5QTxB#$|5JCJ z=r7;lQ`*d3M_< f-hJv|ABW=gqJtQ4J?SzA{Q9&42m5rb`6T%V>5*cr delta 985 zcmY+DUr19?9LINdueQxQFidT3UY(0;jyC38sSSyqB1{beeTZm-2G;{kWorKz_!2po zMEur6L`hFQWT2ghd{YF)ETLZVQ3~IJ*^`5aI=^$aIbVK!@Avn;zx(0-&Uu^u@t|s^ z>go5srK-iox?{<)(d4bf-CQQC6(#&>Y+~&vpAqs2R$WoD&i=YOiMCEG7Sm%YW;5M^ zCnx4$!yQ%8gjbFRD_sTM6SL)sj%)_0_{-aFA8&SBToi8}QZE1mi6_(b?mcFwu1G6^TOdrFBz918EfM zvOnHP=GiM z?iIJ%qri4+79!zp6zoIUs;v3v?1GR;>p1zvXb8YVa7j~YcK zu!K5-1q(qJ1S2tHx*We#jtg}p&OS#T5l6OqY-)0RYBD#-uAO^M$QzdL{;3!<_+pxu zRMwu1-%d>48&9Ni=^VvICS`ilxzjWag=oL+H+RhD>a(53b@Bz{|x?GB0?r X=>!%$J#-TbZi{;H8wMNc8z%n&LQWO| diff --git a/docs/doctrees/pymatgen.analysis.doctree b/docs/doctrees/pymatgen.analysis.doctree index b15b35c65a1c6927b3dcc8f4273890c3a1fc949d..84008baa931c173621467a4190671af7ffff0c01 100644 GIT binary patch delta 33 pcmbO%)hWf=z&iCG&qme_tef|<&Sqp>yE&TOkA?B`=2hI8i~!3o3)27q delta 44 zcmeB_nk>cIz&e$KcO&ZtR<0hl{L+$w(vm5Do42ygW@KEqIgs6th4IVg1>Bj807EAZ A@c;k- diff --git a/docs/doctrees/pymatgen.doctree b/docs/doctrees/pymatgen.doctree index 8b6cb2225ed1cdd32c8a22479b08ed23db869032..d48b0d7517664715b8e212fbf95456b01d391d93 100644 GIT binary patch delta 32 ocmeAZZ4qT@V4YgIk;RgEvpe%_M#kLDk6Bz<7&mX$?Gt5bV4d2$k;RgktA{PWw4|W4WQyNrTjtq}jCq@HvbeG^ZrLo)naT(NGa3!c diff --git a/docs/doctrees/pymatgen_diffusion.aimd.doctree b/docs/doctrees/pymatgen_diffusion.aimd.doctree index bf44d207b3ebfdc8b18d67f67f5f4c8c202e1f5b..167b6064cb5d1940c66ce7a4e49fbc54f86d76c6 100644 GIT binary patch delta 25 hcmZ3WHcgGCfpsePMwVmTo3C)sW@I$jT)?}56##Gf2zCGf delta 36 scmbQHwm^-gfpx0rMwVmTTs>_0r6mQWB~$!1pW>d)$Y{7Zjduep0OuSGoB#j- diff --git a/docs/doctrees/pymatgen_diffusion.doctree b/docs/doctrees/pymatgen_diffusion.doctree index e617b76784e86169f9360d0c92af7bb22c964a40..70a1bb9532575910266954f8d5702fb2c3f3cca5 100644 GIT binary patch delta 25 hcmZ1>HBXAAfpx0zMivpa%}Q*u85y^4-p8KB3IJiq2ax~( delta 36 scmbOywL*%efpx0vMivn^t{%4h(vpJGk|}*&GVa*Cg*}TE0MQN$w*UYD diff --git a/docs/doctrees/pymatgen_diffusion.neb.doctree b/docs/doctrees/pymatgen_diffusion.neb.doctree index d41e806fa336d0ebbce6020e203f640363511018..40bd23c91ad24baffe95266df5b98bde06ef0477 100644 GIT binary patch delta 25 hcmcblc0!G%fpx0wMwTDko7s3~Gcp=%Uc|eB6##c%2%`W1 delta 36 scmX@1c1ew;fpx0;MwTDkTs>_0r6mQWB~$!1|KXm^$Y{8E2JZ$|00JKk$N&HU diff --git a/docs/genindex.html b/docs/genindex.html index 03c49c1..e6fc10e 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -1,15 +1,15 @@ - + - Index — pymatgen-diffusion 2023.8.15 documentation + Index — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -34,7 +34,7 @@

    Navigation

    - +
  • modules |
  • @@ -359,8 +359,6 @@

    L

    M

      -
    • maggma_stores() (in module pymatgen.analysis.diffusion.utils.tests.test_maggma) -
    • map_hop_sc2uc() (in module pymatgen.analysis.diffusion.neb.full_path_mapper)
    • mh_eq() (in module pymatgen.analysis.diffusion.utils.edge_data_from_sc) @@ -440,8 +438,6 @@

      M

    • pymatgen.analysis.diffusion.utils.supercells
    • pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc -
    • -
    • pymatgen.analysis.diffusion.utils.tests.test_maggma
    • pymatgen.analysis.diffusion.utils.tests.test_parse_entries
    • @@ -717,13 +713,6 @@

      P

      -
    • - pymatgen.analysis.diffusion.utils.tests.test_maggma - -
    • @@ -813,8 +802,6 @@

      S

      T

      - - -
      - + diff --git a/docs/index.html b/docs/index.html index 9186727..0efc61f 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,16 +1,16 @@ - + - + - Introduction — pymatgen-diffusion 2023.8.15 documentation + Introduction — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -39,7 +39,7 @@

      Navigation

    • next |
    • - + @@ -50,7 +50,7 @@

      Navigation

      -

      Introduction

      +

      Introduction

      This is an add-on to pymatgen for diffusion analysis that is developed by the Materials Virtual Lab. Note that it relies on pymatgen for structural manipulations, file io, and preliminary analyses. In particular, pymatgen’s @@ -61,11 +61,11 @@

      Introduction -

      Change Log

      +

      Change Log

      Change log

      -

      Features (non-exhaustive!)

      +

      Features (non-exhaustive!)

      1. Van-Hove analysis

      2. Probability density

      3. @@ -73,7 +73,7 @@

        Features (non-exhaustive!) -

        API documentation

        +

        API documentation

        For detailed documentation of all modules and classes, please refer to the API docs.

        @@ -87,23 +87,23 @@

        API documentation -

        Citing

        +

        Citing

        If you use this package, please consider citing the relevant publications documented in each analysis.

      -

      Contributing

      +

      Contributing

      We welcome contributions in all forms. If you’d like to contribute, please fork this repository, make changes and send us a pull request!

      -

      Acknowledgements

      +

      Acknowledgements

      This code is funded by the National Science Foundation’s Designing Materials to Revolutionize and Engineer our Future (DMREF) program under Grant No. 1436976.

      -

      License

      +

      License

      Pymatgen is released under the MIT License. The terms of the license are as follows:

      Copyright (c) 2015, Regents of the University of California
      @@ -137,7 +137,7 @@ 

      License -

      Our Copyright Policy

      +

      Our Copyright Policy

      This software is Copyright© 2015 The Regents of the University of California.
       All Rights Reserved.
       
      @@ -176,7 +176,7 @@ 

      Our Copyright Policy

      -

      Indices and tables

      +

      Indices and tables

      - + diff --git a/docs/modules.html b/docs/modules.html index 5d5cbc8..90c752e 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -1,16 +1,16 @@ - + - + - pymatgen — pymatgen-diffusion 2023.8.15 documentation + pymatgen — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -43,7 +43,7 @@

      Navigation

    • previous |
    • - + @@ -54,7 +54,7 @@

      Navigation

      -

      pymatgen

      +

      pymatgen

      - +
      diff --git a/docs/objects.inv b/docs/objects.inv index eac2a09017df030f16b1eb7e39498e66386b8dcd..014968f818b7363f8e1b8d29fe21d268d3064dd4 100644 GIT binary patch delta 3193 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 delta 3219 zcmV;E3~clA8H^f`Nd_}6I4&_YkxxD|903rRVwk0U0<)NBbvGD*ZNVaCX7Mlxau$XhtKD~efX(xz5PXua1UG`e;#Znd zb$BF9>W`mVi|^ne*x{H6V7(Q(6KXMJYx)biCftNfixYtr(L)5kruu^_A{W7>(6&fZ z%_WLR6@n}PN^unJk_gY%aWA?z{u_TqMUGkIFiNYL!JK<_uOrSyERi5vgMpP2^tDhV z1WMpR)emLt7Vq_tO59jNyeblwi`4@=XrEP05+0;It=yPI#9P=}s0HBbpb`2F#}ucJ zRJ!ZYzdcurJ!I0T^-rMK%@~wn^9N!@_UeXcE_hCaI?T>P-g7RrXH<5|;1Pd0DTJN7 zWKJRqU2P}Dur6Y}MS03qIE-g3RWSQB%H3|M-%i6diKXIr2W;@d&=Jl&{{8GO~ups71m3)q+3)|EvKEl_Q$94qb&RUZf8uV!F{8_NUqET z+toR7^X9j^fJC;_OU%Urdv1Tjr$+2-EP{`k6B_sPm_29^#PB8v-mZ0JM@`Gt7khjj zV@=*}S4(%dA$)pZQi}1u`4nV(%+QYSiMMf76^ycwx{{|oPpzk3#WcnkO&4uirfTI@ zXoNjY1UPbRO-r$sME#L3q)E!bfvF@CeZy%%o`m26(X9#g59<&fSVpedo1V zE|B*dWH%46Pspd6S_M}h(W8Bk1_&7k*6J&Z7 zSwc(Xm);D-I}9zAxNZ19JD!XilKkN8Trn|8xolW&Tmt4 z=z$neyDYK{i$kC>X`Kw+0Jqk>rP|>WVn-M)K#9

      TD)prLOMW+v|)t+Y@0^BDXkF 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 Fzj|NdHKzao diff --git a/docs/py-modindex.html b/docs/py-modindex.html index 66674ec..b04a5ce 100644 --- a/docs/py-modindex.html +++ b/docs/py-modindex.html @@ -1,15 +1,15 @@ - + - Python Module Index — pymatgen-diffusion 2023.8.15 documentation + Python Module Index — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -37,7 +37,7 @@

      Navigation

    • modules |
    • - + @@ -204,11 +204,6 @@

      Python Module Index

          pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc
          - pymatgen.analysis.diffusion.utils.tests.test_maggma -
          @@ -227,7 +222,7 @@

      Python Module Index

    • Documentation overview
    • - + diff --git a/docs/pymatgen.analysis.diffusion.aimd.clustering.html b/docs/pymatgen.analysis.diffusion.aimd.clustering.html index f815bc1..bd9aa8c 100644 --- a/docs/pymatgen.analysis.diffusion.aimd.clustering.html +++ b/docs/pymatgen.analysis.diffusion.aimd.clustering.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.aimd.clustering module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.aimd.clustering module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,13 +46,13 @@

      Navigation

      -

      pymatgen.analysis.diffusion.aimd.clustering module

      +

      pymatgen.analysis.diffusion.aimd.clustering module

      This module implements clustering algorithms to determine centroids, with adaption for periodic boundary conditions. This can be used, for example, to determine likely atomic positions from MD trajectories.

      -class Kmeans(max_iterations: int = 1000)[source]
      +class Kmeans(max_iterations: int = 1000)[source]

      Bases: object

      Simple kmeans clustering.

      @@ -62,7 +62,7 @@

      Navigation

      -cluster(points, k, initial_centroids=None)[source]
      +cluster(points, k, initial_centroids=None)[source]
      Parameters:
        @@ -86,7 +86,7 @@

        Navigation

        -static get_centroids(points, labels, k, centroids)[source]
        +static get_centroids(points, labels, k, centroids)[source]

        Each centroid is the geometric mean of the points that have that centroid’s label. Important: If a centroid is empty (no points have that centroid’s label) you should randomly re-initialize it.

        @@ -104,7 +104,7 @@

        Navigation

        -static get_labels(points, centroids)[source]
        +static get_labels(points, centroids)[source]

        For each element in the dataset, chose the closest centroid. Make that centroid the element’s label.

        @@ -119,7 +119,7 @@

        Navigation

        -should_stop(old_centroids, centroids, iterations)[source]
        +should_stop(old_centroids, centroids, iterations)[source]

        Check for stopping conditions.

        Parameters:
        @@ -136,7 +136,7 @@

        Navigation

        -class KmeansPBC(lattice, max_iterations=1000)[source]
        +class KmeansPBC(lattice, max_iterations=1000)[source]

        Bases: Kmeans

        A version of KMeans that work with PBC. Distance metrics have to change, as well as new centroid determination. The points supplied should be @@ -151,7 +151,7 @@

        Navigation

        -get_centroids(points, labels, k, centroids)[source]
        +get_centroids(points, labels, k, centroids)[source]

        Each centroid is the geometric mean of the points that have that centroid’s label. Important: If a centroid is empty (no points have that centroid’s label) you should randomly re-initialize it.

        @@ -169,7 +169,7 @@

        Navigation

        -get_labels(points, centroids)[source]
        +get_labels(points, centroids)[source]

        For each element in the dataset, chose the closest centroid. Make that centroid the element’s label.

        @@ -184,7 +184,7 @@

        Navigation

        -should_stop(old_centroids, centroids, iterations)[source]
        +should_stop(old_centroids, centroids, iterations)[source]

        Check for stopping conditions.

        Parameters:
        @@ -201,7 +201,7 @@

        Navigation

        -get_random_centroid(points)[source]
        +get_random_centroid(points)[source]

        Generate a random centroid based on points.

        Parameters:
        @@ -212,7 +212,7 @@

        Navigation

        -get_random_centroids(points, k)[source]
        +get_random_centroids(points, k)[source]

        Generate k random centroids based on points.

        Parameters:
        @@ -268,7 +268,7 @@

        This Page

        rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.aimd.html b/docs/pymatgen.analysis.diffusion.aimd.html index df6582d..c6d698a 100644 --- a/docs/pymatgen.analysis.diffusion.aimd.html +++ b/docs/pymatgen.analysis.diffusion.aimd.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.aimd package — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.aimd package — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,14 +46,14 @@

      Navigation

      -

      pymatgen.analysis.diffusion.aimd package

      +

      pymatgen.analysis.diffusion.aimd package

      -

      Subpackages

      +

      Subpackages

      -

      Submodules

      +

      Submodules

      @@ -167,7 +167,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.aimd.pathway.html b/docs/pymatgen.analysis.diffusion.aimd.pathway.html index fc17832..b9de7c4 100644 --- a/docs/pymatgen.analysis.diffusion.aimd.pathway.html +++ b/docs/pymatgen.analysis.diffusion.aimd.pathway.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.aimd.pathway module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.aimd.pathway module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,12 +46,13 @@

      Navigation

      -

      pymatgen.analysis.diffusion.aimd.pathway module

      -

      Algorithms for diffusion pathway analysis

      +

      pymatgen.analysis.diffusion.aimd.pathway module

      +

      Algorithms for diffusion pathway analysis.

      -class ProbabilityDensityAnalysis(structure, trajectories, interval=0.5, species=('Li', 'Na'))[source]
      +class ProbabilityDensityAnalysis(structure, trajectories, interval=0.5, species=('Li', 'Na'))[source]

      Bases: object

      +

      Probability density analysis class.

      Compute the time-averaged probability density distribution of selected species on a “uniform” (in terms of fractional coordinates) 3-D grid. Note that int_{Omega}d^3rP(r) = 1

      @@ -59,18 +60,15 @@

      Navigation

      Zhu, Z.; Chu, I.-H.; Deng, Z. and Ong, S. P. “Role of Na+ Interstitials and Dopants in Enhancing the Na+ Conductivity of the Cubic Na3PS4 Superionic Conductor”. Chem. Mater. (2015), 27, pp 8318-8325.

      -

      Initialization. -:param structure: crystal structure -:type structure: Structure -:param trajectories: ionic trajectories of the structure

      -
      -

      from MD simulations. It should be (1) stored as 3-D array [ -Ntimesteps, Nions, 3] where 3 refers to a,b,c components; -(2) in fractional coordinates.

      -
      +

      Initialization.

      Parameters:
        +
      • structure (Structure) – crystal structure

      • +
      • trajectories (numpy array) – ionic trajectories of the structure +from MD simulations. It should be (1) stored as 3-D array [ +Ntimesteps, Nions, 3] where 3 refers to a,b,c components; +(2) in fractional coordinates.

      • interval (float) – the interval between two nearest grid points (in Angstrom)

      • species (list of str) – list of species that are of interest

      • @@ -79,7 +77,7 @@

        Navigation

      -classmethod from_diffusion_analyzer(diffusion_analyzer, interval=0.5, species=('Li', 'Na'))[source]
      +classmethod from_diffusion_analyzer(diffusion_analyzer, interval=0.5, species=('Li', 'Na'))[source]

      Create a ProbabilityDensityAnalysis from a diffusion_analyzer object.

      Parameters:
      @@ -96,7 +94,7 @@

      Navigation

      -generate_stable_sites(p_ratio=0.25, d_cutoff=1.0)[source]
      +generate_stable_sites(p_ratio=0.25, d_cutoff=1.0)[source]

      Obtain a set of low-energy sites from probability density function with given probability threshold ‘p_ratio’. The set of grid points with probability density higher than the threshold will further be clustered @@ -120,14 +118,14 @@

      Navigation

      -get_full_structure()[source]
      +get_full_structure()[source]

      Generate the structure with the low-energy sites included. In the end, a pymatgen Structure object will be returned.

      -to_chgcar(filename='CHGCAR.vasp')[source]
      +to_chgcar(filename='CHGCAR.vasp')[source]

      Save the probability density distribution in the format of CHGCAR, which can be visualized by VESTA.

      @@ -136,13 +134,13 @@

      Navigation

      -class SiteOccupancyAnalyzer(structure, coords_ref, trajectories, species=('Li', 'Na'))[source]
      +class SiteOccupancyAnalyzer(structure, coords_ref, trajectories, species=('Li', 'Na'))[source]

      Bases: object

      A class that analyzes the site occupancy of given species using MD trajectories. The occupancy of a site is determined based on the shortest distance scheme.

      -site_occ
      +site_occ
      N x 1 numpy array that stores the occupancy of all sites associated with
      @@ -151,21 +149,21 @@

      Navigation

      -coords_ref
      +coords_ref
      N x 3 numpy array of fractional coordinates of all reference sites.
      -nsites
      +nsites
      Number of reference sites.
      -structure
      +structure
      Initial structure.
      @@ -185,7 +183,7 @@

      Navigation

      -classmethod from_diffusion_analyzer(coords_ref, diffusion_analyzer, species=('Li', 'Na'))[source]
      +classmethod from_diffusion_analyzer(coords_ref, diffusion_analyzer, species=('Li', 'Na'))[source]

      Create a SiteOccupancyAnalyzer object using a diffusion_analyzer object.

      Parameters:
      @@ -202,7 +200,7 @@

      Navigation

      -get_average_site_occupancy(indices)[source]
      +get_average_site_occupancy(indices)[source]

      Get the average site occupancy over a subset of reference sites.

      @@ -253,7 +251,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.aimd.rdf.html b/docs/pymatgen.analysis.diffusion.aimd.rdf.html index 97ea184..ba58c1f 100644 --- a/docs/pymatgen.analysis.diffusion.aimd.rdf.html +++ b/docs/pymatgen.analysis.diffusion.aimd.rdf.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.aimd.rdf module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.aimd.rdf module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,11 +46,11 @@

      Navigation

      -

      pymatgen.analysis.diffusion.aimd.rdf module

      +

      pymatgen.analysis.diffusion.aimd.rdf module

      RDF implementation.

      -class RadialDistributionFunction(structures: list, indices: list, reference_indices: list, ngrid: int = 101, rmax: float = 10.0, cell_range: int = 1, sigma: float = 0.1)[source]
      +class RadialDistributionFunction(structures: list, indices: list, reference_indices: list, ngrid: int = 101, rmax: float = 10.0, cell_range: int = 1, sigma: float = 0.1)[source]

      Bases: object

      Calculate the average radial distribution function for a given set of structures.

      @@ -74,8 +74,8 @@

      Navigation

      -property coordination_number
      -

      returns running coordination number

      +property coordination_number +

      returns running coordination number.

      Returns:

      numpy array

      @@ -85,7 +85,7 @@

      Navigation

      -export_rdf(filename: str)[source]
      +export_rdf(filename: str)[source]

      Output RDF data to a csv file.

      Parameters:
      @@ -98,7 +98,7 @@

      Navigation

      -classmethod from_species(structures: list, ngrid: int = 101, rmax: float = 10.0, cell_range: int = 1, sigma: float = 0.1, species: tuple | list = ('Li', 'Na'), reference_species: tuple | list | None = None)[source]
      +classmethod from_species(structures: list, ngrid: int = 101, rmax: float = 10.0, cell_range: int = 1, sigma: float = 0.1, species: tuple | list = ('Li', 'Na'), reference_species: tuple | list | None = None)[source]

      Initialize using species.

      Parameters:
      @@ -126,7 +126,7 @@

      Navigation

      -get_rdf_plot(label: str | None = None, xlim: tuple = (0.0, 8.0), ylim: tuple = (-0.005, 3.0), loc_peak: bool = False)[source]
      +get_rdf_plot(label: str | None = None, xlim: tuple = (0.0, 8.0), ylim: tuple = (-0.005, 3.0), loc_peak: bool = False)[source]

      Plot the average RDF function.

      Parameters:
      @@ -144,7 +144,7 @@

      Navigation

      -class RadialDistributionFunctionFast(structures: Structure | list[pymatgen.core.structure.Structure], rmin: float = 0.0, rmax: float = 10.0, ngrid: float = 101, sigma: float = 0.0, n_jobs=None)[source]
      +class RadialDistributionFunctionFast(structures: Structure | list[Structure], rmin: float = 0.0, rmax: float = 10.0, ngrid: float = 101, sigma: float = 0.0, n_jobs=None)[source]

      Bases: object

      Fast radial distribution analysis.

      This method calculates rdf on np.linspace(rmin, rmax, ngrid) points.

      @@ -162,8 +162,8 @@

      Navigation

      -get_coordination_number(ref_species, species, is_average=True)[source]
      -

      returns running coordination number

      +get_coordination_number(ref_species, species, is_average=True)[source] +

      returns running coordination number.

      Parameters:
        @@ -182,9 +182,9 @@

        Navigation

        -get_one_rdf(ref_species: str | list[str], species: str | list[str], index=0)[source]
        +get_one_rdf(ref_species: str | list[str], species: str | list[str], index=0)[source]

        Get the RDF for one structure, indicated by the index of the structure -in all structures

        +in all structures.

        Parameters:
          @@ -203,7 +203,7 @@

          Navigation

          -get_rdf(ref_species: str | list[str], species: str | list[str], is_average=True)[source]
          +get_rdf(ref_species: str | list[str], species: str | list[str], is_average=True)[source]
          Parameters:
            @@ -212,7 +212,7 @@

            Navigation

          • species (list of species or just single specie str) – the species that we are interested in. The rdfs are calculated on these species.

          • is_average (bool) – whether to take the average over -all structures

          • +all structures.

          Returns:
          @@ -265,7 +265,7 @@

          This Page

          rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.aimd.tests.test_clustering.html b/docs/pymatgen.analysis.diffusion.aimd.tests.test_clustering.html index 825d3db..0ccdb07 100644 --- a/docs/pymatgen.analysis.diffusion.aimd.tests.test_clustering.html +++ b/docs/pymatgen.analysis.diffusion.aimd.tests.test_clustering.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.aimd.tests.test_clustering module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.aimd.tests.test_clustering module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,31 +46,31 @@

      Navigation

      -

      pymatgen.analysis.diffusion.aimd.tests.test_clustering module

      +

      pymatgen.analysis.diffusion.aimd.tests.test_clustering module

      -class KmeansPBCTest(methodName='runTest')[source]
      +class KmeansPBCTest(methodName='runTest')[source]

      Bases: TestCase

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -test_cluster()[source]
      +test_cluster()[source]
      -class KmeansTest(methodName='runTest')[source]
      +class KmeansTest(methodName='runTest')[source]

      Bases: TestCase

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -test_cluster()[source]
      +test_cluster()[source]
      @@ -112,7 +112,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.aimd.tests.test_pathway.html b/docs/pymatgen.analysis.diffusion.aimd.tests.test_pathway.html index 106ff54..ca0945a 100644 --- a/docs/pymatgen.analysis.diffusion.aimd.tests.test_pathway.html +++ b/docs/pymatgen.analysis.diffusion.aimd.tests.test_pathway.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.aimd.tests.test_pathway module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.aimd.tests.test_pathway module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,51 +46,51 @@

      Navigation

      -

      pymatgen.analysis.diffusion.aimd.tests.test_pathway module

      +

      pymatgen.analysis.diffusion.aimd.tests.test_pathway module

      -class ProbabilityDensityTest(methodName='runTest')[source]
      +class ProbabilityDensityTest(methodName='runTest')[source]

      Bases: TestCase

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -test_generate_stable_sites()[source]
      +test_generate_stable_sites()[source]
      -test_probability()[source]
      +test_probability()[source]
      -test_probability_classmethod()[source]
      +test_probability_classmethod()[source]
      -test_to_chgcar()[source]
      +test_to_chgcar()[source]
      -class SiteOccupancyTest(methodName='runTest')[source]
      +class SiteOccupancyTest(methodName='runTest')[source]

      Bases: TestCase

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -test_site_occupancy()[source]
      +test_site_occupancy()[source]
      -test_site_occupancy_classmethod()[source]
      +test_site_occupancy_classmethod()[source]
      @@ -136,7 +136,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.aimd.tests.test_rdf.html b/docs/pymatgen.analysis.diffusion.aimd.tests.test_rdf.html index 51bd1e3..767bd00 100644 --- a/docs/pymatgen.analysis.diffusion.aimd.tests.test_rdf.html +++ b/docs/pymatgen.analysis.diffusion.aimd.tests.test_rdf.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.aimd.tests.test_rdf module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.aimd.tests.test_rdf module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,22 +46,22 @@

      Navigation

      -

      pymatgen.analysis.diffusion.aimd.tests.test_rdf module

      +

      pymatgen.analysis.diffusion.aimd.tests.test_rdf module

      -class RDFTest(methodName='runTest')[source]
      +class RDFTest(methodName='runTest')[source]

      Bases: TestCase

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -test_rdf()[source]
      +test_rdf()[source]
      -test_rdf_coordination_number()[source]
      +test_rdf_coordination_number()[source]
      @@ -100,7 +100,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.aimd.tests.test_van_hove.html b/docs/pymatgen.analysis.diffusion.aimd.tests.test_van_hove.html index 922b845..44e5174 100644 --- a/docs/pymatgen.analysis.diffusion.aimd.tests.test_van_hove.html +++ b/docs/pymatgen.analysis.diffusion.aimd.tests.test_van_hove.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.aimd.tests.test_van_hove module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.aimd.tests.test_van_hove module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,81 +46,81 @@

      Navigation

      -

      pymatgen.analysis.diffusion.aimd.tests.test_van_hove module

      +

      pymatgen.analysis.diffusion.aimd.tests.test_van_hove module

      -class EvolutionAnalyzerTest(methodName='runTest')[source]
      +class EvolutionAnalyzerTest(methodName='runTest')[source]

      Bases: TestCase

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -test_get_df()[source]
      +test_get_df()[source]
      -class RDFTest(methodName='runTest')[source]
      +class RDFTest(methodName='runTest')[source]

      Bases: TestCase

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -setUp()[source]
      +setUp()[source]

      Hook method for setting up the test fixture before exercising it.

      -test_raises_ValueError_if_reference_species_not_in_structure()[source]
      +test_raises_ValueError_if_reference_species_not_in_structure()[source]
      -test_raises_ValueError_if_sigma_is_not_positive()[source]
      +test_raises_ValueError_if_sigma_is_not_positive()[source]
      -test_raises_ValueError_if_species_not_in_structure()[source]
      +test_raises_ValueError_if_species_not_in_structure()[source]
      -test_raises_valueerror_if_ngrid_is_less_than_2()[source]
      +test_raises_valueerror_if_ngrid_is_less_than_2()[source]
      -test_rdf()[source]
      +test_rdf()[source]
      -test_rdf_coordination_number()[source]
      +test_rdf_coordination_number()[source]
      -test_rdf_two_species_coordination_number()[source]
      +test_rdf_two_species_coordination_number()[source]
      -class VanHoveTest(methodName='runTest')[source]
      +class VanHoveTest(methodName='runTest')[source]

      Bases: TestCase

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -test_van_hove()[source]
      +test_van_hove()[source]
      @@ -173,7 +173,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.aimd.van_hove.html b/docs/pymatgen.analysis.diffusion.aimd.van_hove.html index 0dd0c1e..9006aac 100644 --- a/docs/pymatgen.analysis.diffusion.aimd.van_hove.html +++ b/docs/pymatgen.analysis.diffusion.aimd.van_hove.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.aimd.van_hove module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.aimd.van_hove module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,11 +46,11 @@

      Navigation

      -

      pymatgen.analysis.diffusion.aimd.van_hove module

      +

      pymatgen.analysis.diffusion.aimd.van_hove module

      Van Hove analysis for correlations.

      -class EvolutionAnalyzer(structures: list, rmax: float = 10, step: int = 1, time_step: int = 2)[source]
      +class EvolutionAnalyzer(structures: list, rmax: float = 10, step: int = 1, time_step: int = 2)[source]

      Bases: object

      Analyze the evolution of structures during AIMD simulations.

      Initialization the EvolutionAnalyzer from MD simulations. From the @@ -76,7 +76,7 @@

      Navigation

      -static atom_dist(structure: Structure, specie: str, ngrid: int = 101, window: float = 1, direction: str = 'c')[source]
      +static atom_dist(structure: Structure, specie: str, ngrid: int = 101, window: float = 1, direction: str = 'c')[source]

      Get atomic distribution for a given specie.

      Parameters:
      @@ -100,7 +100,7 @@

      Navigation

      -get_df(func: Callable, save_csv: str | None = None, **kwargs)[source]
      +get_df(func: Callable, save_csv: str | None = None, **kwargs)[source]

      Get the data frame for a given pair. This step would be very slow if there are hundreds or more structures to parse.

      @@ -126,6 +126,7 @@

      Navigation

    • save_csv (str) – save pandas DataFrame to csv.

    • +
    • **kwargs – Pass-through to func.

    • Returns:
      @@ -143,7 +144,7 @@

      Navigation

      -static get_min_dist(df: DataFrame, tol: float = 1e-10)[source]
      +static get_min_dist(df: DataFrame, tol: float = 1e-10)[source]

      Get the shortest pair distance from the given DataFrame.

      Parameters:
      @@ -161,7 +162,7 @@

      Navigation

      -static get_pairs(structure: Structure)[source]
      +static get_pairs(structure: Structure)[source]

      Get all element pairs in a structure.

      Parameters:
      @@ -175,7 +176,7 @@

      Navigation

      -plot_atomic_evolution(specie: str, direction: str = 'c', cmap=<matplotlib.colors.LinearSegmentedColormap object>, df: ~pandas.core.frame.DataFrame = None)[source]
      +plot_atomic_evolution(specie: str, direction: str = 'c', cmap=<matplotlib.colors.LinearSegmentedColormap object>, df: ~pandas.core.frame.DataFrame = None)[source]

      Plot the atomic distribution evolution with time for a given species.

      Parameters:
      @@ -195,7 +196,7 @@

      Navigation

      -static plot_evolution_from_data(df: ~pandas.core.frame.DataFrame, x_label: str | None = None, cb_label: str | None = None, cmap=<matplotlib.colors.ListedColormap object>)[source]
      +static plot_evolution_from_data(df: ~pandas.core.frame.DataFrame, x_label: str | None = None, cb_label: str | None = None, cmap=<matplotlib.colors.ListedColormap object>)[source]

      Plot the evolution with time for a given DataFrame. It can be RDF, atomic distribution or other characterization data we might implement in the future.

      @@ -218,7 +219,7 @@

      Navigation

      -plot_rdf_evolution(pair: tuple, cmap=<matplotlib.colors.ListedColormap object>, df: ~pandas.core.frame.DataFrame = None)[source]
      +plot_rdf_evolution(pair: tuple, cmap=<matplotlib.colors.ListedColormap object>, df: ~pandas.core.frame.DataFrame = None)[source]

      Plot the RDF evolution with time for a given pair.

      Parameters:
      @@ -238,7 +239,7 @@

      Navigation

      -static rdf(structure: Structure, pair: tuple, ngrid: int = 101, rmax: float = 10)[source]
      +static rdf(structure: Structure, pair: tuple, ngrid: int = 101, rmax: float = 10)[source]

      Process rdf from a given structure and pair.

      Parameters:
      @@ -259,15 +260,16 @@

      Navigation

      -class VanHoveAnalysis(diffusion_analyzer: DiffusionAnalyzer, avg_nsteps: int = 50, ngrid: int = 101, rmax: float = 10.0, step_skip: int = 50, sigma: float = 0.1, cell_range: int = 1, species: tuple | list = ('Li', 'Na'), reference_species: tuple | list | None = None, indices: list | None = None)[source]
      +class VanHoveAnalysis(diffusion_analyzer: DiffusionAnalyzer, avg_nsteps: int = 50, ngrid: int = 101, rmax: float = 10.0, step_skip: int = 50, sigma: float = 0.1, cell_range: int = 1, species: tuple | list = ('Li', 'Na'), reference_species: tuple | list | None = None, indices: list | None = None)[source]

      Bases: object

      -

      Class for van Hove function analysis. In particular, self-part (Gs) and -distinct-part (Gd) of the van Hove correlation function G(r,t) -for given species and given structure are computed. If you use this class, -please consider citing the following paper:

      -

      Zhu, Z.; Chu, I.-H.; Deng, Z. and Ong, S. P. “Role of Na+ Interstitials -and Dopants in Enhancing the Na+ Conductivity of the Cubic Na3PS4 -Superionic Conductor”. Chem. Mater. (2015), 27, pp 8318-8325

      +

      Class for van Hove function analysis.

      +

      In particular, self-part (Gs) and distinct-part (Gd) of the van Hove correlation function G(r,t) for given species +and given structure are computed. If you use this class, please consider citing the following paper:

      +
      Zhu, Z.; Chu, I.-H.; Deng, Z. and Ong, S. P. "Role of Na+ Interstitials
      +and Dopants in Enhancing the Na+ Conductivity of the Cubic Na3PS4
      +Superionic Conductor". Chem. Mater. (2015), 27, pp 8318-8325
      +
      +

      Initiation.

      Parameters:
      @@ -296,7 +298,7 @@

      Navigation

      -get_1d_plot(mode: str = 'distinct', times: list = [0.0], colors: list | None = None)[source]
      +get_1d_plot(mode: str = 'distinct', times: list | None = None, colors: list | None = None)[source]

      Plot the van Hove function at given r or t.

      Parameters:
      @@ -313,7 +315,7 @@

      Navigation

      -get_3d_plot(figsize: tuple = (12, 8), mode: str = 'distinct')[source]
      +get_3d_plot(figsize: tuple = (12, 8), mode: str = 'distinct')[source]

      Plot 3D self-part or distinct-part of van Hove function, which is specified by the input argument ‘type’.

      @@ -365,7 +367,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.analyzer.html b/docs/pymatgen.analysis.diffusion.analyzer.html index 6368aff..83ac134 100644 --- a/docs/pymatgen.analysis.diffusion.analyzer.html +++ b/docs/pymatgen.analysis.diffusion.analyzer.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.analyzer module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.analyzer module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,9 +46,9 @@

      Navigation

      -

      pymatgen.analysis.diffusion.analyzer module

      -

      A module to perform diffusion analyses (e.g. calculating diffusivity from -mean square displacements etc.). If you use this module, please consider +

      pymatgen.analysis.diffusion.analyzer module

      +

      A module to perform diffusion analyses.

      +

      For example, calculating diffusivity from mean square displacements etc.). If you use this module, please consider citing the following papers:

      Ong, S. P., Mo, Y., Richards, W. D., Miara, L., Lee, H. S., & Ceder, G.
       (2013). Phase stability, electrochemical stability and ionic conductivity
      @@ -63,7 +63,7 @@ 

      Navigation

      -class DiffusionAnalyzer(structure, displacements, specie, temperature, time_step, step_skip, smoothed='max', min_obs=30, avg_nsteps=1000, lattices=None, c_ranges=None, c_range_include_edge=False, structures=None)[source]
      +class DiffusionAnalyzer(structure, displacements, specie, temperature, time_step, step_skip, smoothed='max', min_obs=30, avg_nsteps=1000, lattices=None, c_ranges=None, c_range_include_edge=False, structures=None)[source]

      Bases: MSONable

      Class for performing diffusion analysis.

      This constructor is meant to be used with pre-processed data. @@ -138,13 +138,13 @@

      Navigation

      -as_dict()[source]
      -

      Returns: MSONable dict

      +as_dict()[source] +

      Returns: MSONable dict.

      -export_msdt(filename)[source]
      +export_msdt(filename)[source]

      Writes MSD data to a csv file that can be easily plotted in other software.

      @@ -158,10 +158,10 @@

      Navigation

      -classmethod from_dict(d)[source]
      +classmethod from_dict(d)[source]
      Parameters:
      -

      d (dict) – Dict representation

      +

      d (dict) – Dict representation.

      Returns: DiffusionAnalyzer

      @@ -169,7 +169,7 @@

      Navigation

      -classmethod from_files(filepaths, specie, step_skip=10, ncores=None, initial_disp=None, initial_structure=None, **kwargs)[source]
      +classmethod from_files(filepaths, specie, step_skip=10, ncores=None, initial_disp=None, initial_structure=None, **kwargs)[source]

      Convenient constructor that takes in a list of vasprun.xml paths to perform diffusion analysis.

      @@ -202,7 +202,7 @@

      Navigation

      typically need to supply both variables. This stipulates the initial structure from which the current set of displacements are computed.

      -
    • \*\*kwargs – kwargs supported by the :class:`DiffusionAnalyzer`_. +

    • **kwargs – kwargs supported by the :class:`DiffusionAnalyzer`_. Examples include smoothed, min_obs, avg_nsteps.

    • @@ -211,7 +211,7 @@

      Navigation

      -classmethod from_structures(structures, specie, temperature, time_step, step_skip, initial_disp=None, initial_structure=None, **kwargs)[source]
      +classmethod from_structures(structures, specie, temperature, time_step, step_skip, initial_disp=None, initial_structure=None, **kwargs)[source]

      Convenient constructor that takes in a list of Structure objects to perform diffusion analysis.

      @@ -237,7 +237,7 @@

      Navigation

      typically need to supply both variables. This stipulates the initial structure from which the current set of displacements are computed.

      -
    • \*\*kwargs – kwargs supported by the :class:`DiffusionAnalyzer`_. +

    • **kwargs – kwargs supported by the :class:`DiffusionAnalyzer`_. Examples include smoothed, min_obs, avg_nsteps.

    • @@ -246,7 +246,7 @@

      Navigation

      -classmethod from_vaspruns(vaspruns, specie, initial_disp=None, initial_structure=None, **kwargs)[source]
      +classmethod from_vaspruns(vaspruns, specie, initial_disp=None, initial_structure=None, **kwargs)[source]

      Convenient constructor that takes in a list of Vasprun objects to perform diffusion analysis.

      @@ -267,7 +267,7 @@

      Navigation

      typically need to supply both variables. This stipulates the initial stricture from which the current set of displacements are computed.

      -
    • \*\*kwargs – kwargs supported by the :class:`DiffusionAnalyzer`_. +

    • **kwargs – kwargs supported by the :class:`DiffusionAnalyzer`_. Examples include smoothed, min_obs, avg_nsteps.

    • @@ -276,20 +276,16 @@

      Navigation

      -get_drift_corrected_structures(start=None, stop=None, step=None)[source]
      +get_drift_corrected_structures(start=None, stop=None, step=None)[source]

      Returns an iterator for the drift-corrected structures. Use of iterator is to reduce memory usage as # of structures in MD can be huge. You don’t often need all the structures all at once.

      Parameters:
        -
      • start (int) – applies a start/stop/step to the iterator. -Faster than applying it after generation, as it reduces the -number of structures created.

      • -
      • stop (int) – applies a start/stop/step to the iterator. -Faster than applying it after generation, as it reduces the -number of structures created.

      • -
      • step (int) – applies a start/stop/step to the iterator. +

      • start (int) – Applies a start to the iterator.

      • +
      • stop (int) – Applies a stop to the iterator.

      • +
      • step (int) – Applies a step to the iterator. Faster than applying it after generation, as it reduces the number of structures created.

      @@ -299,7 +295,7 @@

      Navigation

      -get_framework_rms_plot(plt=None, granularity=200, matching_s=None)[source]
      +get_framework_rms_plot(granularity=200, matching_s=None)[source]

      Get the plot of rms framework displacement vs time. Useful for checking for melting, especially if framework atoms can move via paddle-wheel or similar mechanism (which would show up in max framework displacement @@ -307,8 +303,6 @@

      Navigation

      Parameters:
        -
      • plt (matplotlib.pyplot) – If plt is supplied, changes will be made -to an existing plot. Otherwise, a new plot will be created.

      • granularity (int) – Number of structures to match

      • matching_s (Structure) – Optionally match to a disordered structure instead of the first structure in the analyzer. Required when @@ -322,7 +316,7 @@

        Navigation

        -get_msd_plot(plt=None, mode='specie')[source]
        +get_msd_plot(mode='specie')[source]

        Get the plot of the smoothed msd vs time graph. Useful for checking convergence. This can be written to an image file.

        @@ -340,14 +334,14 @@

        Navigation

        -get_summary_dict(include_msd_t=False, include_mscd_t=False)[source]
        +get_summary_dict(include_msd_t=False, include_mscd_t=False)[source]

        Provides a summary of diffusion information.

        Parameters:
        • include_msd_t (bool) – Whether to include mean square displace and time data with the data.

        • -
        • include_msd_t – Whether to include mean square charge displace and +

        • include_mscd_t (bool) – Whether to include mean square charge displace and time data with the data.

        @@ -359,7 +353,7 @@

        Navigation

        -plot_msd(mode='default')[source]
        +plot_msd(mode='default')[source]

        Plot the smoothed msd vs time graph. Useful for checking convergence.

        Parameters:
        @@ -376,9 +370,9 @@

        Navigation

        -fit_arrhenius(temps, diffusivities)[source]
        +fit_arrhenius(temps, diffusivities)[source]
        -
        Returns Ea, c, standard error of Ea from the Arrhenius fit:

        D = c * exp(-Ea/kT)

        +
        Returns Ea, c, standard error of Ea from the Arrhenius fit.

        D = c * exp(-Ea/kT).

        @@ -394,7 +388,7 @@

        Navigation

        -get_arrhenius_plot(temps, diffusivities, diffusivity_errors=None, **kwargs)[source]
        +get_arrhenius_plot(temps, diffusivities, diffusivity_errors=None, **kwargs)[source]

        Returns an Arrhenius plot.

        Parameters:
        @@ -404,7 +398,7 @@

        Navigation

        from DiffusionAnalyzer.diffusivity).

      • diffusivity_errors ([float]) – A sequence of errors for the diffusivities. If None, no error bar is plotted.

      • -
      • \*\*kwargs – Any keyword args supported by matplotlib.pyplot.plot.

      • +
      • **kwargs – Any keyword args supported by matplotlib.pyplot.plot.

      Returns:
      @@ -415,7 +409,7 @@

      Navigation

      -get_conversion_factor(structure, species, temperature)[source]
      +get_conversion_factor(structure, species, temperature)[source]

      Conversion factor to convert between cm^2/s diffusivity measurements and mS/cm conductivity measurements based on number of atoms of diffusing species. Note that the charge is based on the oxidation state of the @@ -438,8 +432,8 @@

      Navigation

      -get_diffusivity_from_msd(msd, dt, smoothed='max')[source]
      -

      Returns diffusivity and standard deviation of diffusivity given by:

      +get_diffusivity_from_msd(msd, dt, smoothed='max')[source] +

      Returns diffusivity and standard deviation of diffusivity.

      D = 1 / 2dt * <mean square displacement>

      @@ -475,7 +469,7 @@

      Navigation

      -get_extrapolated_conductivity(temps, diffusivities, new_temp, structure, species)[source]
      +get_extrapolated_conductivity(temps, diffusivities, new_temp, structure, species)[source]

      Returns extrapolated mS/cm conductivity.

      Parameters:
      @@ -496,8 +490,8 @@

      Navigation

      -get_extrapolated_diffusivity(temps, diffusivities, new_temp)[source]
      -

      Returns (Arrhenius) extrapolated diffusivity at new_temp

      +get_extrapolated_diffusivity(temps, diffusivities, new_temp)[source] +

      Returns (Arrhenius) extrapolated diffusivity at new_temp.

      Parameters:
        @@ -562,7 +556,7 @@

        This Page

        rel="nofollow">Show Source
      - +
      diff --git a/docs/pymatgen.analysis.diffusion.html b/docs/pymatgen.analysis.diffusion.html index 9fd56f3..031228d 100644 --- a/docs/pymatgen.analysis.diffusion.html +++ b/docs/pymatgen.analysis.diffusion.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion package — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion package — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,9 +46,9 @@

      Navigation

      -

      pymatgen.analysis.diffusion package

      +

      pymatgen.analysis.diffusion package

      -

      Subpackages

      +

      Subpackages

      @@ -328,7 +328,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.neb.full_path_mapper.html b/docs/pymatgen.analysis.diffusion.neb.full_path_mapper.html index a5c774e..d91715a 100644 --- a/docs/pymatgen.analysis.diffusion.neb.full_path_mapper.html +++ b/docs/pymatgen.analysis.diffusion.neb.full_path_mapper.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.neb.full_path_mapper module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.neb.full_path_mapper module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,44 +46,43 @@

      Navigation

      -

      pymatgen.analysis.diffusion.neb.full_path_mapper module

      -

      Migraiton Graph Analysis

      +

      pymatgen.analysis.diffusion.neb.full_path_mapper module

      +

      Migration Graph Analysis.

      -class ChargeBarrierGraph(structure: Structure, m_graph: StructureGraph, potential_field: VolumetricData, potential_data_key: str, **kwargs)[source]
      +class ChargeBarrierGraph(structure: Structure, m_graph: StructureGraph, potential_field: VolumetricData, potential_data_key: str, **kwargs)[source]

      Bases: MigrationGraph

      -

      A Migration graph with additional charge density analysis on the charge density of the host material

      +

      A Migration graph with additional charge density analysis on the charge density of the host material.

      Construct the MigrationGraph object using a VolumetricData object. -The graph is constructure using the structure, and cost values are assigned based on charge density analysis. -:param potential_field: Input VolumetricData object that describes the field does

      -
      -

      not have to contains all the metastable sites.

      -
      +The graph is constructed using the structure, and cost values are assigned based on charge density analysis.

      Parameters:
        -
      • migrating_specie (Specie-like) – The specie that migrates. E.g., -“Li”.

      • -
      • symprec (float) – Symmetry precision to determine equivalence.

      • +
      • structure (Structure) – Input structure.

      • +
      • m_graph (StructureGraph) – Input structure graph.

      • +
      • potential_field – Input VolumetricData object that describes the field does +not have to contains all the metastable sites.

      • +
      • potential_data_key (str) – Key for potential data.

      • +
      • **kwargs – Passthru for kwargs.

      -get_least_chg_path()[source]
      +get_least_chg_path()[source]

      obtain an intercolating pathway through the material that has the least amount of charge -:returns: list of hops

      +:returns: list of hops.

      -get_summary_dict(add_keys: list[str] | None = None)[source]
      -

      Dictionary format, for saving to database

      +get_summary_dict(add_keys: list[str] | None = None)[source] +

      Dictionary format, for saving to database.

      -populate_edges_with_chg_density_info(tube_radius=1)[source]
      +populate_edges_with_chg_density_info(tube_radius=1)[source]
      Parameters:

      tube_radius – Tube radius.

      @@ -95,7 +94,7 @@

      Navigation

      -class MigrationGraph(structure: Structure, m_graph: StructureGraph, symprec=0.1, vac_mode=False)[source]
      +class MigrationGraph(structure: Structure, m_graph: StructureGraph, symprec=0.1, vac_mode=False)[source]

      Bases: MSONable

      A python object for handling the migratrion graph of a given base structure and mobile specie sites within that base structure.

      @@ -106,15 +105,13 @@

      Navigation

      all mobile sites occupied. A potential_field graph is generated by connecting all sites as specified by the migration graph. The sites are decorated with Migration graph objects and then grouped -together based on their equivalence. -:param structure: Structure with base framework and mobile sites.

      -
      -

      When used with structure_is_base = True, only the base framework -structure, does not contain any migrating sites.

      -
      +together based on their equivalence.

      Parameters:
        +
      • structure – Structure with base framework and mobile sites. +When used with structure_is_base = True, only the base framework +structure, does not contain any migrating sites.

      • m_graph – The StructureGraph object that defines the migration network

      • symprec (float) – Symmetry precision to determine equivalence @@ -125,27 +122,27 @@

        Navigation

      -add_data_to_similar_edges(target_label: int | str, data: dict, m_hop: MigrationHop | None = None)[source]
      +add_data_to_similar_edges(target_label: int | str, data: dict, m_hop: MigrationHop | None = None)[source]

      Insert data to all edges with the same label :param target_label: The edge uniqueness label are adding data :param data: The data to passed to the different edges :param m_hop: If the data is an array, and m_hop is set, it uses the reference migration path to -:param determine whether the data needs to be flipped so that 0–>1 is different from 1–>0:

      +:param determine whether the data needs to be flipped so that 0–>1 is different from 1–>0.:

      -assign_cost_to_graph(cost_keys=['hop_distance'])[source]
      +assign_cost_to_graph(cost_keys=None)[source]

      Read the data dict on each add and populate a cost key :param cost_keys: a list of keys for data on each edge.

      -

      The SC Graph is decorated with a “cost” key that is the product of the different keys here

      +

      The SC Graph is decorated with a “cost” key that is the product of the different keys here.

      -get_path(max_val=100000, flip_hops=True)[source]
      +get_path(max_val=100000, flip_hops=True)[source]

      obtain a pathway through the material using hops that are in the current graph Basic idea:

      @@ -174,7 +171,7 @@

      Navigation

      -static get_structure_from_entries(entries: list[ComputedStructureEntry], migrating_ion_entry: ComputedEntry, **kwargs) list[Structure][source]
      +static get_structure_from_entries(entries: list[ComputedStructureEntry], migrating_ion_entry: ComputedEntry, **kwargs) list[Structure][source]

      Read in a list of base entries and inserted entries. Return a list of structures that contains metastable sites for the migration species decorated with a “insertion_energy” property.

      @@ -182,6 +179,7 @@

      Navigation

      • entries – list of entries, must contain a mixture of inserted and empty structures.

      • migrating_ion_entry – The metallic phase of the working ion, used to calculate insertion energies.

      • +
      • **kwargs – Passthrough for kwargs.

      @@ -189,7 +187,7 @@

      Navigation

      Additional Kwargs:

      symprec: symmetry parameter for SpacegroupAnalyzer ltol: Fractional length tolerance for StructureMatcher stol: Site tolerance for StructureMatcher -angle_tol: Angle tolerance fro StructureMatcher and SpacegroupAnalyzer +angle_tol: Angle tolerance for StructureMatcher and SpacegroupAnalyzer only_single_cat: If True, only use single cation insertions so the site energy is more accurate use_strict_tol: halve the ltol and stol parameter for more strict matching.

      @@ -206,41 +204,52 @@

      Navigation

      -get_summary_dict(added_keys: list[str] | None = None) dict[source]
      -

      Dictionary format, for saving to database

      +get_summary_dict(added_keys: list[str] | None = None) dict[source] +

      Dictionary format, for saving to database.

      +
      +
      Parameters:
      +

      added_keys – a list of keys for data on each edge.

      +
      +
      Returns:
      +

      Dict.

      +
      +
      -property host_structure: Structure
      -

      A structure that only contains the non-migrating species

      +property host_structure: Structure +

      A structure that only contains the non-migrating species.

      -property only_sites: Structure
      -

      A structure that only contains the migrating species

      +property only_sites: Structure +

      A structure that only contains the migrating species.

      -property symm_structure: SymmetrizedStructure
      -

      The symmetrized structure with the present item’s symprec value

      +property symm_structure: SymmetrizedStructure +

      The symmetrized structure with the present item’s symprec value.

      -property unique_hops
      -

      The unique hops dictionary keyed by the hop label

      +property unique_hops +

      The unique hops dictionary keyed by the hop label.

      -classmethod with_base_structure(base_structure: Structure, m_graph: StructureGraph, **kwargs) MigrationGraph[source]
      +classmethod with_base_structure(base_structure: Structure, m_graph: StructureGraph, **kwargs) MigrationGraph[source]
      Parameters:
      -

      base_structure – base framework structure that does not contain any -migrating sites.

      +
        +
      • base_structure – base framework structure that does not contain any migrating sites.

      • +
      • m_graph – The StructureGraph object that defines the migration network.

      • +
      • **kwargs – Passthrough for kwargs.

      • +
      Returns:

      A constructed MigrationGraph object

      @@ -250,30 +259,40 @@

      Navigation

      -classmethod with_distance(structure: Structure, migrating_specie: str, max_distance: float, **kwargs) MigrationGraph[source]
      -

      Using a specific nn strategy to get the connectivity graph between all the migrating ion sites. -:param max_distance: Maximum length of NEB path in the unit

      -
      -

      of Angstrom. Defaults to None, which means you are setting the -value to the min cutoff until finding 1D or >1D percolating paths.

      -
      +classmethod with_distance(structure: Structure, migrating_specie: str, max_distance: float, **kwargs) MigrationGraph[source] +

      Using a specific nn strategy to get the connectivity graph between all the migrating ion sites.

      -
      Returns:
      -

      A constructed MigrationGraph object

      +
      Parameters:
      +
        +
      • structure – Input structure that contains all sites.

      • +
      • migrating_specie – The specie that migrates. E.g. “Li”.

      • +
      • max_distance – Maximum length of NEB path in the unit +of Angstrom. Defaults to None, which means you are setting the +value to the min cutoff until finding 1D or >1D percolating paths.

      • +
      • **kwargs – Passthrough for kwargs.

      • +
      +
      +
      Returns:
      +

      A constructed MigrationGraph object

      -classmethod with_local_env_strategy(structure: Structure, migrating_specie: str, nn: NearNeighbors, **kwargs) MigrationGraph[source]
      -

      Using a specific nn strategy to get the connectivity graph between all the migrating ion sites. -:param structure: Input structure that contains all sites. -:param migrating_specie: The specie that migrates. E.g. “Li”. -:param nn: The specific local environment object used to connect the migrating ion sites.

      +classmethod with_local_env_strategy(structure: Structure, migrating_specie: str, nn: NearNeighbors, **kwargs) MigrationGraph[source] +

      Using a specific nn strategy to get the connectivity graph between all the migrating ion sites.

      -
      Returns:
      -

      A constructed MigrationGraph object

      +
      Parameters:
      +
        +
      • structure – Input structure that contains all sites.

      • +
      • migrating_specie – The specie that migrates. E.g. “Li”.

      • +
      • nn – The specific local environment object used to connect the migrating ion sites.

      • +
      • **kwargs – Passthrough for kwargs.

      • +
      +
      +
      Returns:
      +

      A constructed MigrationGraph object

      @@ -282,20 +301,24 @@

      Navigation

      -almost(a, b)[source]
      -

      return true if the values are almost equal

      +almost(a, b)[source] +

      Return true if the values are almost equal.

      -check_uc_hop(sc_hop, uc_hop)[source]
      +check_uc_hop(sc_hop, uc_hop)[source]

      See if hop in the 2X2X2 supercell and a unit cell hop -are equilvalent under lattice translation -:param sc_hop: MigrationHop object form pymatgen-diffusion. -:param uc_hop: MigrationHop object form pymatgen-diffusion.

      +are equivalent under lattice translation.

      -
      Returns:
      -

      image vector of lenght 3 +

      Parameters:
      +
        +
      • sc_hop – MigrationHop object form pymatgen-diffusion.

      • +
      • uc_hop – MigrationHop object form pymatgen-diffusion.

      • +
      +
      +
      Returns:
      +

      image vector of length 3 Is the UC hop flip of the SC hop

      @@ -303,54 +326,71 @@

      Navigation

      -generic_groupby(list_in: list, comp: ~typing.Callable = <built-in function eq>)[source]
      -

      Group a list of unsortable objects -:param list_in: A list of generic objects -:param comp: (Default value = operator.eq) The comparator

      +generic_groupby(list_in: list, comp: ~typing.Callable = <built-in function eq>)[source] +

      Group a list of unsortable objects.

      -
      Returns:
      -

      [int] list of labels for the input list

      +
      Parameters:
      +
        +
      • list_in – A list of generic objects

      • +
      • comp – (Default value = operator.eq) The comparator

      • +
      +
      +
      Returns:
      +

      [int] list of labels for the input list

      -get_hop_site_sequence(hop_list: list[dict], start_u: int | str, key: str | None = None) list[source]
      -

      Read in a list of hop dictionaries and print the sequence of sites (and relevant property values if any). -:param hop_list: a list of the data on a sequence of hops -:param start_u: the site index of the starting sites -:param key: property to track in a hop (e.g.: “hop_distance”) -:type key: optional

      +get_hop_site_sequence(hop_list: list[dict], start_u: int | str, key: str | None = None) list[source] +

      Read in a list of hop dictionaries and print the sequence of sites (and relevant property values if any).

      -
      Returns:
      -

      String representation of the hop sequence (and property values if any)

      +
      Parameters:
      +
        +
      • hop_list – a list of the data on a sequence of hops

      • +
      • start_u – the site index of the starting sites

      • +
      • key (optional) – property to track in a hop (e.g.: “hop_distance”)

      • +
      +
      +
      Returns:
      +

      String representation of the hop sequence (and property values if any)

      -get_only_sites_from_structure(structure: Structure, migrating_specie: str) Structure[source]
      -

      Get a copy of the structure with only the migrating sites. -:param structure: The full_structure that contains all the sites -:param migrating_specie: The name of migrating species

      +get_only_sites_from_structure(structure: Structure, migrating_specie: str) Structure[source] +

      Get a copy of the structure with only the migrating sites.

      -
      Returns:
      -

      Structure with all possible migrating ion sites

      +
      Parameters:
      +
        +
      • structure – The full_structure that contains all the sites

      • +
      • migrating_specie – The name of migrating species

      • +
      -
      Return type:
      -

      Structure

      +
      Returns:
      +

      Structure with all possible migrating ion sites

      +
      +
      Return type:
      +

      Structure

      -map_hop_sc2uc(sc_hop: MigrationHop, mg: MigrationGraph)[source]
      -

      Map a given hop in the SC onto the UC. -:param sc_hop: MigrationHop object form pymatgen-diffusion. -:param mg: MigrationGraph object from pymatgen-diffusion.

      +map_hop_sc2uc(sc_hop: MigrationHop, mg: MigrationGraph)[source] +

      Map a given hop in the SC onto the UC.

      +
      +
      Parameters:
      +
        +
      • sc_hop – MigrationHop object form pymatgen-diffusion.

      • +
      • mg – MigrationGraph object from pymatgen-diffusion.

      • +
      +
      +

      Note

      For now assume that the SC is exactly 2x2x2 of the UC. @@ -363,18 +403,22 @@

      Navigation

      -order_path(hop_list: list[dict], start_u: int | str) list[dict][source]
      +order_path(hop_list: list[dict], start_u: int | str) list[dict][source]

      Takes a list of hop dictionaries and flips hops (switches isite and esite) as needed to form a coherent path / sequence of sites according to get_hop_site_sequence(). For example if hop_list = [{iindex:0, eindex:1, etc.}, {iindex:0, eindex:1, etc.}] then the output is [{iindex:0, eindex:1, etc.}, {iindex:1, eindex:0, etc.}] so that -the following hop iindex matches the previous hop’s eindex. -:param hop_list: a list of the data on a sequence of hops -:param start_u: the site index of the starting sites

      +the following hop iindex matches the previous hop’s eindex.

      -
      Returns:
      -

      a list of the data on a sequence of hops with hops in coherent orientation

      +
      Parameters:
      +
        +
      • hop_list – a list of the data on a sequence of hops

      • +
      • start_u – the site index of the starting sites

      • +
      +
      +
      Returns:
      +

      a list of the data on a sequence of hops with hops in coherent orientation

      @@ -436,7 +480,7 @@

      This Page

      rel="nofollow">Show Source
      - +
      diff --git a/docs/pymatgen.analysis.diffusion.neb.html b/docs/pymatgen.analysis.diffusion.neb.html index b3f927c..b4edc13 100644 --- a/docs/pymatgen.analysis.diffusion.neb.html +++ b/docs/pymatgen.analysis.diffusion.neb.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.neb package — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.neb package — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,14 +46,14 @@

      Navigation

      -

      pymatgen.analysis.diffusion.neb package

      +

      pymatgen.analysis.diffusion.neb package

      -

      Subpackages

      +

      Subpackages

      -

      Submodules

      +

      Submodules

      @@ -177,7 +177,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.neb.io.html b/docs/pymatgen.analysis.diffusion.neb.io.html index e13c6d9..fb80b8e 100644 --- a/docs/pymatgen.analysis.diffusion.neb.io.html +++ b/docs/pymatgen.analysis.diffusion.neb.io.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.neb.io module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.neb.io module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,11 +46,11 @@

      Navigation

      -

      pymatgen.analysis.diffusion.neb.io module

      -

      Generate input fiels for NEB calculations.

      +

      pymatgen.analysis.diffusion.neb.io module

      +

      Generate input fields for NEB calculations.

      -class MVLCINEBEndPointSet(structure, **kwargs)[source]
      +class MVLCINEBEndPointSet(structure, **kwargs)[source]

      Bases: MITRelaxSet

      Class for writing NEB end points relaxation inputs.

      @@ -65,15 +65,15 @@

      Navigation

      -class MVLCINEBSet(structures, **kwargs)[source]
      +class MVLCINEBSet(structures, **kwargs)[source]

      Bases: MITNEBSet

      MAVRL-tested settings for CI-NEB calculations. Note that these parameters requires the VTST modification of VASP from the Henkelman group. See -http://theory.cm.utexas.edu/vtsttools/

      +http://theory.cm.utexas.edu/vtsttools/.

      Parameters:
        -
      • structure – Structure

      • +
      • structures – Input structures.

      • **kwargs – Keyword args supported by VaspInputSets.

      @@ -82,26 +82,28 @@

      Navigation

      -get_endpoint_dist(ep_0, ep_1)[source]
      +get_endpoint_dist(ep_0, ep_1)[source]

      Calculate a list of site distances between two endpoints, assuming periodic -boundary conditions. -:param ep_0: the first endpoint structure. -:type ep_0: Structure -:param ep_1: the second endpoint structure. -:type ep_1: Structure

      +boundary conditions.

      -
      Returns:
      -

      a list of distances between two structures.

      +
      Parameters:
      +
        +
      • ep_0 (Structure) – the first endpoint structure.

      • +
      • ep_1 (Structure) – the second endpoint structure.

      • +
      -
      Return type:
      -

      dist (list)

      +
      Returns:
      +

      a list of distances between two structures.

      +
      +
      Return type:
      +

      dist (list)

      -get_endpoints_from_index(structure, site_indices)[source]
      +get_endpoints_from_index(structure, site_indices)[source]

      This class reads in one perfect structure and the two endpoint structures are generated using site_indices.

      @@ -157,7 +159,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.neb.pathfinder.html b/docs/pymatgen.analysis.diffusion.neb.pathfinder.html index 64bb6c6..e2eb8da 100644 --- a/docs/pymatgen.analysis.diffusion.neb.pathfinder.html +++ b/docs/pymatgen.analysis.diffusion.neb.pathfinder.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.neb.pathfinder module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.neb.pathfinder module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,11 +46,11 @@

      Navigation

      -

      pymatgen.analysis.diffusion.neb.pathfinder module

      +

      pymatgen.analysis.diffusion.neb.pathfinder module

      Algorithms for NEB migration path analysis.

      -class ChgcarPotential(chgcar, smear=False, normalize=True)[source]
      +class ChgcarPotential(chgcar, smear=False, normalize=True)[source]

      Bases: StaticPotential

      Implements a potential field based on the charge density output from VASP.

      @@ -69,7 +69,7 @@

      Navigation

      -class DistinctPathFinder(structure, migrating_specie, max_path_length=None, symprec=0.1, perc_mode='>1d')[source]
      +class DistinctPathFinder(structure, migrating_specie, max_path_length=None, symprec=0.1, perc_mode='>1d')[source]

      Bases: object

      Determines symmetrically distinct paths between existing sites. The path info can then be used to set up either vacancy or interstitial @@ -93,7 +93,7 @@

      Navigation

      -get_paths()[source]
      +get_paths()[source]
      Returns:

      [MigrationHop] All distinct migration paths.

      @@ -103,7 +103,7 @@

      Navigation

      -write_all_paths(fname, nimages=5, **kwargs)[source]
      +write_all_paths(fname, nimages=5, **kwargs)[source]

      Write a file containing all paths, using hydrogen as a placeholder for the images. H is chosen as it is the smallest atom. This is extremely useful for path visualization in a standard software like VESTA.

      @@ -122,7 +122,7 @@

      Navigation

      -class FreeVolumePotential(struct, dim, smear=False, normalize=True)[source]
      +class FreeVolumePotential(struct, dim, smear=False, normalize=True)[source]

      Bases: StaticPotential

      Implements a potential field based on geometric distances from atoms in the structure - basically, the potential @@ -143,7 +143,7 @@

      Navigation

      -class IDPPSolver(structures)[source]
      +class IDPPSolver(structures)[source]

      Bases: object

      A solver using image dependent pair potential (IDPP) algo to get an improved initial NEB path. For more details about this algo, please refer to @@ -157,7 +157,7 @@

      Navigation

      -classmethod from_endpoints(endpoints, nimages=5, sort_tol=1.0, interpolate_lattices=False)[source]
      +classmethod from_endpoints(endpoints, nimages: int = 5, sort_tol: float = 1.0, interpolate_lattices: bool = False)[source]

      A class method that starts with end-point structures instead. The initial guess for the IDPP algo is then constructed using linear interpolation.

      @@ -169,6 +169,7 @@

      Navigation

    • sort_tol (float) – Distance tolerance (in Angstrom) used to match the atomic indices between start and end structures. Need to increase the value in some cases.

    • +
    • interpolate_lattices (bool) – Whether to interpolate lattices between the start and end structures.

    • @@ -176,14 +177,18 @@

      Navigation

      -static get_unit_vector(vec)[source]
      -

      Calculate the unit vector of a vector. -:param vec: Vector.

      +static get_unit_vector(vec)[source] +

      Calculate the unit vector of a vector.

      +
      +
      Parameters:
      +

      vec – Vector.

      +
      +
      -run(maxiter=1000, tol=1e-05, gtol=0.001, step_size=0.05, max_disp=0.05, spring_const=5.0, species=None)[source]
      +run(maxiter=1000, tol=1e-05, gtol=0.001, step_size=0.05, max_disp=0.05, spring_const=5.0, species=None)[source]

      Perform iterative minimization of the set of objective functions in an NEB-like manner. In each iteration, the total force matrix for each image is constructed, which comprises both the spring forces and true @@ -218,7 +223,7 @@

      Navigation

      -class MigrationHop(isite: Site, esite: Site, symm_structure: SymmetrizedStructure, host_symm_struct: SymmetrizedStructure = None, symprec: float = 0.001)[source]
      +class MigrationHop(isite: Site, esite: Site, symm_structure: SymmetrizedStructure, host_symm_struct: SymmetrizedStructure = None, symprec: float = 0.001)[source]

      Bases: MSONable

      A convenience container representing a migration path.

      @@ -227,15 +232,17 @@

      Navigation

    • isite – Initial site

    • esite – End site

    • symm_structure – SymmetrizedStructure

    • -
    • host_symm_struct – SymmetrizedStructure of the host structure, used to for its spacegroup

    • -
    • symprec – used to determine equivalence

    • +
    • host_symm_struct – SymmetrizedStructure of the host structure, used to for +its spacegroup

    • +
    • symprec – used to determine equivalence.

    • -get_sc_structures(vac_mode: bool, min_atoms: int = 80, max_atoms: int = 240, min_length: float = 10.0, tol: float = 1e-05) tuple[pymatgen.core.structure.Structure, pymatgen.core.structure.Structure, pymatgen.core.structure.Structure][source]
      -

      Construct supercells that represents the start and end positions for migration analysis.

      +get_sc_structures(vac_mode: bool, min_atoms: int = 80, max_atoms: int = 240, min_length: float = 10.0, tol: float = 1e-05) tuple[Structure, Structure, Structure][source] +

      Construct supercells that represents the start and end positions for migration +analysis.

      Parameters:
        @@ -257,7 +264,7 @@

        Navigation

        -get_structures(nimages=5, vac_mode=True, idpp=False, **idpp_kwargs)[source]
        +get_structures(nimages=5, vac_mode=True, idpp=False, **idpp_kwargs)[source]

        Generate structures for NEB calculation.

        Parameters:
        @@ -291,14 +298,14 @@

        Navigation

        -property length
        +property length

        Returns: (float) Length of migration path.

        -write_path(fname, **kwargs)[source]
        +write_path(fname, **kwargs)[source]

        Write the path to a file for easy viewing.

        Parameters:
        @@ -314,7 +321,7 @@

        Navigation

        -class MixedPotential(potentials, coefficients, smear=False, normalize=True)[source]
        +class MixedPotential(potentials, coefficients, smear=False, normalize=True)[source]

        Bases: StaticPotential

        Implements a potential that is a weighted sum of some other potentials.

        @@ -332,7 +339,7 @@

        Navigation

        -class NEBPathfinder(start_struct, end_struct, relax_sites, v, n_images=20, mid_struct=None)[source]
        +class NEBPathfinder(start_struct, end_struct, relax_sites, v, n_images=20, mid_struct=None)[source]

        Bases: object

        General pathfinder for interpolating between two structures, where the interpolating path is calculated with the elastic band method with @@ -347,26 +354,27 @@

        Navigation

        Parameters:
          -
        • start_struct – Endpoint structures to interpolate

        • -
        • end_struct – Endpoint structures to interpolate

        • +
        • start_struct – Starting structure

        • +
        • end_struct – End structure to interpolate

        • relax_sites – List of site indices whose interpolation paths should be relaxed

        • v – Static potential field to use for the elastic band relaxation

        • n_images – Number of interpolation images to generate

        • -
        • mid_struct – (optional) additional structure between the start and end structures to help.

        • +
        • mid_struct – (optional) additional structure between the start and end +structures to help.

        -property images
        +property images

        Returns a list of structures interpolating between the start and endpoint structures.

        -interpolate()[source]
        +interpolate()[source]

        Finds a set of n_images from self.s1 to self.s2, where all sites except for the ones given in relax_sites, the interpolation is linear (as in pymatgen.core.structure.interpolate), and for the site indices given @@ -378,14 +386,19 @@

        Navigation

        -plot_images(outfile)[source]
        -

        Generates a POSCAR with the calculated diffusion path with respect to the first endpoint. -:param outfile: Output file for the POSCAR.

        +plot_images(outfile)[source] +

        Generates a POSCAR with the calculated diffusion path with respect to the first +endpoint.

        +
        +
        Parameters:
        +

        outfile – Output file for the POSCAR.

        +
        +
        -static string_relax(start, end, V, n_images=25, dr=None, h=3.0, k=0.17, min_iter=100, max_iter=10000, max_tol=5e-06)[source]
        +static string_relax(start, end, V, n_images=25, dr=None, h=3.0, k=0.17, min_iter=100, max_iter=10000, max_tol=5e-06)[source]

        Implements path relaxation via the elastic band method. In general, the method is to define a path by a set of points (images) connected with bands with some elasticity constant k. The images then relax along the @@ -425,7 +438,7 @@

        Navigation

        -class StaticPotential(struct, pot)[source]
        +class StaticPotential(struct, pot)[source]

        Bases: object

        Defines a general static potential for diffusion calculations. Implements grid-rescaling and smearing for the potential grid. Also provides a @@ -440,7 +453,7 @@

        Navigation

        -gaussian_smear(r)[source]
        +gaussian_smear(r)[source]

        Applies an isotropic Gaussian smear of width (standard deviation) r to the potential field. This is necessary to avoid finding paths through narrow minima or nodes that may exist in the field (although any @@ -455,19 +468,19 @@

        Navigation

        -get_v()[source]
        +get_v()[source]

        Returns the potential.

        -normalize()[source]
        +normalize()[source]

        Sets the potential range 0 to 1.

        -rescale_field(new_dim)[source]
        +rescale_field(new_dim)[source]

        Changes the discretization of the potential field by linear interpolation. This is necessary if the potential field obtained from DFT is strangely skewed, or is too fine or coarse. Obeys @@ -547,7 +560,7 @@

        This Page

        rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.neb.periodic_dijkstra.html b/docs/pymatgen.analysis.diffusion.neb.periodic_dijkstra.html index 91fe6a4..aeb9a3c 100644 --- a/docs/pymatgen.analysis.diffusion.neb.periodic_dijkstra.html +++ b/docs/pymatgen.analysis.diffusion.neb.periodic_dijkstra.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.neb.periodic_dijkstra module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.neb.periodic_dijkstra module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,17 +46,17 @@

      Navigation

      -

      pymatgen.analysis.diffusion.neb.periodic_dijkstra module

      -

      Dijkstra’s path search on a graph where the nodes are on a periodic graph

      +

      pymatgen.analysis.diffusion.neb.periodic_dijkstra module

      +

      Dijkstra’s path search on a graph where the nodes are on a periodic graph.

      -get_optimal_pathway_rev(path_parent: dict, leaf_node: tuple)[source]
      -

      follow a leaf node all the way up to source.

      +get_optimal_pathway_rev(path_parent: dict, leaf_node: tuple)[source] +

      Follow a leaf node all the way up to source.

      -periodic_dijkstra(G: ~networkx.classes.graph.Graph, sources: set, weight: str = 'weight', max_image: int = 2, target_reached: ~typing.Callable = <function <lambda>>)[source]
      +periodic_dijkstra(G: Graph, sources: set, weight: str = 'weight', max_image: int = 2, target_reached: Callable = <function <lambda>>)[source]

      Find the lowest cost pathway from a source point in the periodic graph. Since the search can move many cells away without finding the target we have to limit how many cells away from (0,0,0) to search.

      @@ -66,7 +66,7 @@

      Navigation

    • G (Graph) – The graph object with additional “to_jimage” fields to indicate edges across periodic images.

    • sources (set) – the index of the source node

    • -
    • target (int, optional) – The index of of target node, if None populate all nodes. Defaults to None.

    • +
    • weight – the weight of the edges.

    • max_image (int, optional) – Defaults to 3.

    • target_reached (callable, optional) – A function of (site_index, jimage) used to check for stop iteration. This function is always called on the top of heap so it might miss the optimal path but @@ -85,7 +85,7 @@

      Navigation

      -periodic_dijkstra_on_sgraph(sgraph: ~pymatgen.analysis.graphs.StructureGraph, sources: ~typing.Set, weight: str = 'weight', max_image: int = 1, target_reached: ~typing.Callable = <function <lambda>>)[source]
      +periodic_dijkstra_on_sgraph(sgraph: StructureGraph, sources: set, weight: str = 'weight', max_image: int = 1, target_reached: Callable = <function <lambda>>)[source]

      Find the lowest cost pathway from a source point in the periodic graph. Since the search can move many cells away without finding the target we have to limit how many cells away from (0,0,0) to search.

      @@ -94,7 +94,7 @@

      Navigation

      • sgraph (Graph) – The StructureGraph object used for path searching

      • sources (set) – the index of the source node

      • -
      • target (int, optional) – The index of of target node, if None populate all nodes. Defaults to None.

      • +
      • weight – the weight of the edges.

      • max_image (int, optional) – Defaults to 3.

      • target_reached (callable, optional) – A function of (site_index, jimage) used to check for stop iteration. This function is always called on the top of heap so it might miss the optimal path but @@ -143,7 +143,7 @@

        This Page

        rel="nofollow">Show Source
    • - + diff --git a/docs/pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.html b/docs/pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.html index cf3a957..a61e65e 100644 --- a/docs/pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.html +++ b/docs/pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,34 +46,34 @@

      Navigation

      -

      pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper module

      +

      pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper module

      -class ChargeBarrierGraphTest(methodName='runTest')[source]
      +class ChargeBarrierGraphTest(methodName='runTest')[source]

      Bases: TestCase

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -setUp()[source]
      +setUp()[source]

      Hook method for setting up the test fixture before exercising it.

      -test_get_summary_dict()[source]
      +test_get_summary_dict()[source]
      -test_integration()[source]
      -

      Sanity check: for a long enough diagonaly hop, if we turn the radius of the tube way up, it should cover the entire unit cell

      +test_integration()[source] +

      Sanity check: for a long enough diagonally hop, if we turn the radius of the tube way up, it should cover the entire unit cell

      -test_populate_edges_with_chg_density_info()[source]
      +test_populate_edges_with_chg_density_info()[source]

      Test that all of the sites with similar lengths have similar charge densities, this will not always be true, but it valid in this Mn6O5F7

      @@ -82,113 +82,114 @@

      Navigation

      -class MigrationGraphComplexTest(methodName='runTest')[source]
      +class MigrationGraphComplexTest(methodName='runTest')[source]

      Bases: TestCase

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -setUp()[source]
      +setUp()[source]

      Hook method for setting up the test fixture before exercising it.

      -test_add_data_to_similar_edges()[source]
      +test_add_data_to_similar_edges()[source]
      -test_assign_cost_to_graph()[source]
      +test_assign_cost_to_graph()[source]
      -test_get_key_in_path()[source]
      +test_get_key_in_path()[source]
      -test_get_path()[source]
      +test_get_path()[source]
      -test_group_and_label_hops()[source]
      -

      Check that the set of end points in a group of similiarly labeled hops are all the same

      +test_group_and_label_hops()[source] +

      Check that the set of end points in a group of similarly labeled hops are all +the same.

      -test_not_matching_first()[source]
      +test_not_matching_first()[source]
      -test_order_path()[source]
      +test_order_path()[source]
      -test_periodic_dijkstra()[source]
      +test_periodic_dijkstra()[source]
      -test_unique_hops_dict()[source]
      -

      Check that the unique hops are inequilvalent

      +test_unique_hops_dict()[source] +

      Check that the unique hops are inequivalent

      -class MigrationGraphFromEntriesTest(methodName='runTest')[source]
      +class MigrationGraphFromEntriesTest(methodName='runTest')[source]

      Bases: TestCase

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -setUp()[source]
      +setUp()[source]

      Hook method for setting up the test fixture before exercising it.

      -test_m_graph_construction()[source]
      +test_m_graph_construction()[source]
      -test_m_graph_from_entries_failed()[source]
      +test_m_graph_from_entries_failed()[source]
      -class MigrationGraphSimpleTest(methodName='runTest')[source]
      +class MigrationGraphSimpleTest(methodName='runTest')[source]

      Bases: TestCase

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -setUp()[source]
      +setUp()[source]

      Hook method for setting up the test fixture before exercising it.

      -test_get_pos_and_migration_hop()[source]
      +test_get_pos_and_migration_hop()[source]

      Make sure that we can populate the graph with MigrationHop Objects

      -test_get_summary_dict()[source]
      +test_get_summary_dict()[source]
      @@ -254,7 +255,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.neb.tests.test_io.html b/docs/pymatgen.analysis.diffusion.neb.tests.test_io.html index 35c530a..d22545d 100644 --- a/docs/pymatgen.analysis.diffusion.neb.tests.test_io.html +++ b/docs/pymatgen.analysis.diffusion.neb.tests.test_io.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.neb.tests.test_io module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.neb.tests.test_io module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,58 +46,58 @@

      Navigation

      -

      pymatgen.analysis.diffusion.neb.tests.test_io module

      +

      pymatgen.analysis.diffusion.neb.tests.test_io module

      -class MVLCINEBEndPointSetTest(methodName='runTest')[source]
      +class MVLCINEBEndPointSetTest(methodName='runTest')[source]

      Bases: TestCase

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -endpoint = Structure Summary Lattice     abc : 8.815000056846058 8.815000056846058 9.131710473490111  angles : 61.14080369885537 61.14080369885537 59.9999995733517  volume : 510.2218449146199       A : -4.4075 -7.634014 -0.0       B : 4.4075 -7.634014 0.0       C : -0.0 -5.089343 7.582     pbc : True True True PeriodicSite: Na (0.0, 0.0, 0.0) [0.0, 0.0, 0.0] PeriodicSite: Zr (9.811e-17, -10.18, 0.4774) [0.6457, 0.6457, 0.06296] PeriodicSite: Zr (-2.422e-17, -5.089, 4.268) [0.1457, 0.1457, 0.563] PeriodicSite: Zr (-7.549e-17, -10.18, 7.105) [0.3543, 0.3543, 0.937] PeriodicSite: Zr (-9.811e-17, -15.27, 3.314) [0.8543, 0.8543, 0.437] PeriodicSite: P (-1.837, -7.634, 5.686) [0.4584, 0.0416, 0.75] PeriodicSite: P (3.122, -9.86, 5.686) [0.0416, 0.75, 0.75] PeriodicSite: P (-1.285, -13.04, 5.686) [0.75, 0.4584, 0.75] PeriodicSite: P (-3.122, -10.5, 1.895) [0.9584, 0.25, 0.25] PeriodicSite: P (1.285, -7.315, 1.895) [0.25, 0.5416, 0.25] PeriodicSite: P (1.837, -12.72, 1.895) [0.5416, 0.9584, 0.25] PeriodicSite: O (1.696, -15.14, 6.924) [0.495, 0.8797, 0.9132] PeriodicSite: O (-0.7387, -16.8, 6.924) [0.8797, 0.7121, 0.9132] PeriodicSite: O (-0.9569, -13.86, 6.924) [0.7121, 0.495, 0.9132] PeriodicSite: O (-3.451, -11.32, 3.133) [0.995, 0.2121, 0.4132] PeriodicSite: O (0.7387, -6.621, 3.133) [0.2121, 0.3797, 0.4132] PeriodicSite: O (2.712, -12.6, 3.133) [0.3797, 0.995, 0.4132] PeriodicSite: O (-1.696, -5.215, 0.6581) [0.505, 0.1203, 0.0868] PeriodicSite: O (0.7387, -3.558, 0.6581) [0.1203, 0.2879, 0.0868] PeriodicSite: O (0.9569, -6.495, 0.6581) [0.2879, 0.505, 0.0868] PeriodicSite: O (3.451, -9.039, 4.449) [0.005, 0.7879, 0.5868] PeriodicSite: O (-0.7387, -13.74, 4.449) [0.7879, 0.6203, 0.5868] PeriodicSite: O (-2.712, -7.76, 4.449) [0.6203, 0.005, 0.5868] PeriodicSite: O (0.9463, -11.46, 1.798) [0.564, 0.7787, 0.2372] PeriodicSite: O (-1.581, -10.36, 1.798) [0.7787, 0.4201, 0.2372] PeriodicSite: O (0.6342, -8.72, 1.798) [0.4201, 0.564, 0.2372] PeriodicSite: O (3.773, -11.26, 5.589) [0.064, 0.9201, 0.7372] PeriodicSite: O (-2.827, -12.9, 5.589) [0.9201, 0.2787, 0.7372] PeriodicSite: O (-0.9463, -6.368, 5.589) [0.2787, 0.064, 0.7372] PeriodicSite: O (-0.9463, -8.9, 5.784) [0.436, 0.2213, 0.7628] PeriodicSite: O (1.581, -9.999, 5.784) [0.2213, 0.5799, 0.7628] PeriodicSite: O (-0.6342, -11.64, 5.784) [0.5799, 0.436, 0.7628] PeriodicSite: O (-3.773, -9.093, 1.993) [0.936, 0.0799, 0.2628] PeriodicSite: O (2.827, -7.454, 1.993) [0.0799, 0.7213, 0.2628] PeriodicSite: O (0.9463, -13.99, 1.993) [0.7213, 0.936, 0.2628]
      +endpoint = Structure Summary Lattice     abc : 8.815000056846058 8.815000056846058 9.131710473490111  angles : 61.14080369885537 61.14080369885537 59.9999995733517  volume : 510.2218449146199       A : -4.4075 -7.634014 -0.0       B : 4.4075 -7.634014 0.0       C : -0.0 -5.089343 7.582     pbc : True True True PeriodicSite: Na (0.0, 0.0, 0.0) [0.0, 0.0, 0.0] PeriodicSite: Zr (9.811e-17, -10.18, 0.4774) [0.6457, 0.6457, 0.06296] PeriodicSite: Zr (-2.422e-17, -5.089, 4.268) [0.1457, 0.1457, 0.563] PeriodicSite: Zr (-7.549e-17, -10.18, 7.105) [0.3543, 0.3543, 0.937] PeriodicSite: Zr (-9.811e-17, -15.27, 3.314) [0.8543, 0.8543, 0.437] PeriodicSite: P (-1.837, -7.634, 5.686) [0.4584, 0.0416, 0.75] PeriodicSite: P (3.122, -9.86, 5.686) [0.0416, 0.75, 0.75] PeriodicSite: P (-1.285, -13.04, 5.686) [0.75, 0.4584, 0.75] PeriodicSite: P (-3.122, -10.5, 1.895) [0.9584, 0.25, 0.25] PeriodicSite: P (1.285, -7.315, 1.895) [0.25, 0.5416, 0.25] PeriodicSite: P (1.837, -12.72, 1.895) [0.5416, 0.9584, 0.25] PeriodicSite: O (1.696, -15.14, 6.924) [0.495, 0.8797, 0.9132] PeriodicSite: O (-0.7387, -16.8, 6.924) [0.8797, 0.7121, 0.9132] PeriodicSite: O (-0.9569, -13.86, 6.924) [0.7121, 0.495, 0.9132] PeriodicSite: O (-3.451, -11.32, 3.133) [0.995, 0.2121, 0.4132] PeriodicSite: O (0.7387, -6.621, 3.133) [0.2121, 0.3797, 0.4132] PeriodicSite: O (2.712, -12.6, 3.133) [0.3797, 0.995, 0.4132] PeriodicSite: O (-1.696, -5.215, 0.6581) [0.505, 0.1203, 0.0868] PeriodicSite: O (0.7387, -3.558, 0.6581) [0.1203, 0.2879, 0.0868] PeriodicSite: O (0.9569, -6.495, 0.6581) [0.2879, 0.505, 0.0868] PeriodicSite: O (3.451, -9.039, 4.449) [0.005, 0.7879, 0.5868] PeriodicSite: O (-0.7387, -13.74, 4.449) [0.7879, 0.6203, 0.5868] PeriodicSite: O (-2.712, -7.76, 4.449) [0.6203, 0.005, 0.5868] PeriodicSite: O (0.9463, -11.46, 1.798) [0.564, 0.7787, 0.2372] PeriodicSite: O (-1.581, -10.36, 1.798) [0.7787, 0.4201, 0.2372] PeriodicSite: O (0.6342, -8.72, 1.798) [0.4201, 0.564, 0.2372] PeriodicSite: O (3.773, -11.26, 5.589) [0.064, 0.9201, 0.7372] PeriodicSite: O (-2.827, -12.9, 5.589) [0.9201, 0.2787, 0.7372] PeriodicSite: O (-0.9463, -6.368, 5.589) [0.2787, 0.064, 0.7372] PeriodicSite: O (-0.9463, -8.9, 5.784) [0.436, 0.2213, 0.7628] PeriodicSite: O (1.581, -9.999, 5.784) [0.2213, 0.5799, 0.7628] PeriodicSite: O (-0.6342, -11.64, 5.784) [0.5799, 0.436, 0.7628] PeriodicSite: O (-3.773, -9.093, 1.993) [0.936, 0.0799, 0.2628] PeriodicSite: O (2.827, -7.454, 1.993) [0.0799, 0.7213, 0.2628] PeriodicSite: O (0.9463, -13.99, 1.993) [0.7213, 0.936, 0.2628]
      -test_incar()[source]
      +test_incar()[source]
      -test_incar_user_setting()[source]
      +test_incar_user_setting()[source]
      -class MVLCINEBSetTest(methodName='runTest')[source]
      +class MVLCINEBSetTest(methodName='runTest')[source]

      Bases: TestCase

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -structures = [Structure Summary Lattice     abc : 8.815000056846058 8.815000056846058 9.131710473490111  angles : 61.14080369885537 61.14080369885537 59.9999995733517  volume : 510.2218449146199       A : -4.4075 -7.634014 -0.0       B : 4.4075 -7.634014 0.0       C : -0.0 -5.089343 7.582     pbc : True True True PeriodicSite: Na (0.0, 0.0, 0.0) [0.0, 0.0, 0.0] PeriodicSite: Zr (9.811e-17, -10.18, 0.4774) [0.6457, 0.6457, 0.06296] PeriodicSite: Zr (-2.422e-17, -5.089, 4.268) [0.1457, 0.1457, 0.563] PeriodicSite: Zr (-7.549e-17, -10.18, 7.105) [0.3543, 0.3543, 0.937] PeriodicSite: Zr (-9.811e-17, -15.27, 3.314) [0.8543, 0.8543, 0.437] PeriodicSite: P (-1.837, -7.634, 5.686) [0.4584, 0.0416, 0.75] PeriodicSite: P (3.122, -9.86, 5.686) [0.0416, 0.75, 0.75] PeriodicSite: P (-1.285, -13.04, 5.686) [0.75, 0.4584, 0.75] PeriodicSite: P (-3.122, -10.5, 1.895) [0.9584, 0.25, 0.25] PeriodicSite: P (1.285, -7.315, 1.895) [0.25, 0.5416, 0.25] PeriodicSite: P (1.837, -12.72, 1.895) [0.5416, 0.9584, 0.25] PeriodicSite: O (1.696, -15.14, 6.924) [0.495, 0.8797, 0.9132] PeriodicSite: O (-0.7387, -16.8, 6.924) [0.8797, 0.7121, 0.9132] PeriodicSite: O (-0.9569, -13.86, 6.924) [0.7121, 0.495, 0.9132] PeriodicSite: O (-3.451, -11.32, 3.133) [0.995, 0.2121, 0.4132] PeriodicSite: O (0.7387, -6.621, 3.133) [0.2121, 0.3797, 0.4132] PeriodicSite: O (2.712, -12.6, 3.133) [0.3797, 0.995, 0.4132] PeriodicSite: O (-1.696, -5.215, 0.6581) [0.505, 0.1203, 0.0868] PeriodicSite: O (0.7387, -3.558, 0.6581) [0.1203, 0.2879, 0.0868] PeriodicSite: O (0.9569, -6.495, 0.6581) [0.2879, 0.505, 0.0868] PeriodicSite: O (3.451, -9.039, 4.449) [0.005, 0.7879, 0.5868] PeriodicSite: O (-0.7387, -13.74, 4.449) [0.7879, 0.6203, 0.5868] PeriodicSite: O (-2.712, -7.76, 4.449) [0.6203, 0.005, 0.5868] PeriodicSite: O (0.9463, -11.46, 1.798) [0.564, 0.7787, 0.2372] PeriodicSite: O (-1.581, -10.36, 1.798) [0.7787, 0.4201, 0.2372] PeriodicSite: O (0.6342, -8.72, 1.798) [0.4201, 0.564, 0.2372] PeriodicSite: O (3.773, -11.26, 5.589) [0.064, 0.9201, 0.7372] PeriodicSite: O (-2.827, -12.9, 5.589) [0.9201, 0.2787, 0.7372] PeriodicSite: O (-0.9463, -6.368, 5.589) [0.2787, 0.064, 0.7372] PeriodicSite: O (-0.9463, -8.9, 5.784) [0.436, 0.2213, 0.7628] PeriodicSite: O (1.581, -9.999, 5.784) [0.2213, 0.5799, 0.7628] PeriodicSite: O (-0.6342, -11.64, 5.784) [0.5799, 0.436, 0.7628] PeriodicSite: O (-3.773, -9.093, 1.993) [0.936, 0.0799, 0.2628] PeriodicSite: O (2.827, -7.454, 1.993) [0.0799, 0.7213, 0.2628] PeriodicSite: O (0.9463, -13.99, 1.993) [0.7213, 0.936, 0.2628], Structure Summary Lattice     abc : 8.815000056846058 8.815000056846058 9.131710473490111  angles : 61.14080369885537 61.14080369885537 59.9999995733517  volume : 510.2218449146199       A : -4.4075 -7.634014 -0.0       B : 4.4075 -7.634014 0.0       C : -0.0 -5.089343 7.582     pbc : True True True PeriodicSite: Na (0.0, -5.089, 1.895) [0.25, 0.25, 0.25] PeriodicSite: Zr (1.35e-16, -10.18, 0.4774) [0.6457, 0.6457, 0.06296] PeriodicSite: Zr (1.269e-17, -5.089, 4.268) [0.1457, 0.1457, 0.563] PeriodicSite: Zr (1.096e-16, -10.18, 7.105) [0.3543, 0.3543, 0.937] PeriodicSite: Zr (-1.35e-16, -15.27, 3.314) [0.8543, 0.8543, 0.437] PeriodicSite: P (-1.837, -7.634, 5.686) [0.4584, 0.0416, 0.75] PeriodicSite: P (3.122, -9.86, 5.686) [0.0416, 0.75, 0.75] PeriodicSite: P (-1.285, -13.04, 5.686) [0.75, 0.4584, 0.75] PeriodicSite: P (-3.122, -10.5, 1.895) [0.9584, 0.25, 0.25] PeriodicSite: P (1.285, -7.315, 1.895) [0.25, 0.5416, 0.25] PeriodicSite: P (1.837, -12.72, 1.895) [0.5416, 0.9584, 0.25] PeriodicSite: O (1.696, -15.14, 6.924) [0.495, 0.8797, 0.9132] PeriodicSite: O (-0.7387, -16.8, 6.924) [0.8797, 0.7121, 0.9132] PeriodicSite: O (-0.9569, -13.86, 6.924) [0.7121, 0.495, 0.9132] PeriodicSite: O (-3.451, -11.32, 3.133) [0.995, 0.2121, 0.4132] PeriodicSite: O (0.7387, -6.621, 3.133) [0.2121, 0.3797, 0.4132] PeriodicSite: O (2.712, -12.6, 3.133) [0.3797, 0.995, 0.4132] PeriodicSite: O (-1.696, -5.215, 0.6581) [0.505, 0.1203, 0.0868] PeriodicSite: O (0.7387, -3.558, 0.6581) [0.1203, 0.2879, 0.0868] PeriodicSite: O (0.9569, -6.495, 0.6581) [0.2879, 0.505, 0.0868] PeriodicSite: O (3.451, -9.039, 4.449) [0.005, 0.7879, 0.5868] PeriodicSite: O (-0.7387, -13.74, 4.449) [0.7879, 0.6203, 0.5868] PeriodicSite: O (-2.712, -7.76, 4.449) [0.6203, 0.005, 0.5868] PeriodicSite: O (0.9463, -11.46, 1.798) [0.564, 0.7787, 0.2372] PeriodicSite: O (-1.581, -10.36, 1.798) [0.7787, 0.4201, 0.2372] PeriodicSite: O (0.6342, -8.72, 1.798) [0.4201, 0.564, 0.2372] PeriodicSite: O (3.773, -11.26, 5.589) [0.064, 0.9201, 0.7372] PeriodicSite: O (-2.827, -12.9, 5.589) [0.9201, 0.2787, 0.7372] PeriodicSite: O (-0.9463, -6.368, 5.589) [0.2787, 0.064, 0.7372] PeriodicSite: O (-0.9463, -8.9, 5.784) [0.436, 0.2213, 0.7628] PeriodicSite: O (1.581, -9.999, 5.784) [0.2213, 0.5799, 0.7628] PeriodicSite: O (-0.6342, -11.64, 5.784) [0.5799, 0.436, 0.7628] PeriodicSite: O (-3.773, -9.093, 1.993) [0.936, 0.0799, 0.2628] PeriodicSite: O (2.827, -7.454, 1.993) [0.0799, 0.7213, 0.2628] PeriodicSite: O (0.9463, -13.99, 1.993) [0.7213, 0.936, 0.2628], Structure Summary Lattice     abc : 8.815000056846058 8.815000056846058 9.131710473490111  angles : 61.14080369885537 61.14080369885537 59.9999995733517  volume : 510.2218449146199       A : -4.4075 -7.634014 -0.0       B : 4.4075 -7.634014 0.0       C : -0.0 -5.089343 7.582     pbc : True True True PeriodicSite: Na (0.0, -10.18, 3.791) [0.5, 0.5, 0.5] PeriodicSite: Zr (9.811e-17, -10.18, 0.4774) [0.6457, 0.6457, 0.06296] PeriodicSite: Zr (-2.422e-17, -5.089, 4.268) [0.1457, 0.1457, 0.563] PeriodicSite: Zr (-7.549e-17, -10.18, 7.105) [0.3543, 0.3543, 0.937] PeriodicSite: Zr (-9.811e-17, -15.27, 3.314) [0.8543, 0.8543, 0.437] PeriodicSite: P (-1.837, -7.634, 5.686) [0.4584, 0.0416, 0.75] PeriodicSite: P (3.122, -9.86, 5.686) [0.0416, 0.75, 0.75] PeriodicSite: P (-1.285, -13.04, 5.686) [0.75, 0.4584, 0.75] PeriodicSite: P (-3.122, -10.5, 1.895) [0.9584, 0.25, 0.25] PeriodicSite: P (1.285, -7.315, 1.895) [0.25, 0.5416, 0.25] PeriodicSite: P (1.837, -12.72, 1.895) [0.5416, 0.9584, 0.25] PeriodicSite: O (1.696, -15.14, 6.924) [0.495, 0.8797, 0.9132] PeriodicSite: O (-0.7387, -16.8, 6.924) [0.8797, 0.7121, 0.9132] PeriodicSite: O (-0.9569, -13.86, 6.924) [0.7121, 0.495, 0.9132] PeriodicSite: O (-3.451, -11.32, 3.133) [0.995, 0.2121, 0.4132] PeriodicSite: O (0.7387, -6.621, 3.133) [0.2121, 0.3797, 0.4132] PeriodicSite: O (2.712, -12.6, 3.133) [0.3797, 0.995, 0.4132] PeriodicSite: O (-1.696, -5.215, 0.6581) [0.505, 0.1203, 0.0868] PeriodicSite: O (0.7387, -3.558, 0.6581) [0.1203, 0.2879, 0.0868] PeriodicSite: O (0.9569, -6.495, 0.6581) [0.2879, 0.505, 0.0868] PeriodicSite: O (3.451, -9.039, 4.449) [0.005, 0.7879, 0.5868] PeriodicSite: O (-0.7387, -13.74, 4.449) [0.7879, 0.6203, 0.5868] PeriodicSite: O (-2.712, -7.76, 4.449) [0.6203, 0.005, 0.5868] PeriodicSite: O (0.9463, -11.46, 1.798) [0.564, 0.7787, 0.2372] PeriodicSite: O (-1.581, -10.36, 1.798) [0.7787, 0.4201, 0.2372] PeriodicSite: O (0.6342, -8.72, 1.798) [0.4201, 0.564, 0.2372] PeriodicSite: O (3.773, -11.26, 5.589) [0.064, 0.9201, 0.7372] PeriodicSite: O (-2.827, -12.9, 5.589) [0.9201, 0.2787, 0.7372] PeriodicSite: O (-0.9463, -6.368, 5.589) [0.2787, 0.064, 0.7372] PeriodicSite: O (-0.9463, -8.9, 5.784) [0.436, 0.2213, 0.7628] PeriodicSite: O (1.581, -9.999, 5.784) [0.2213, 0.5799, 0.7628] PeriodicSite: O (-0.6342, -11.64, 5.784) [0.5799, 0.436, 0.7628] PeriodicSite: O (-3.773, -9.093, 1.993) [0.936, 0.0799, 0.2628] PeriodicSite: O (2.827, -7.454, 1.993) [0.0799, 0.7213, 0.2628] PeriodicSite: O (0.9463, -13.99, 1.993) [0.7213, 0.936, 0.2628]]
      +structures = [Structure Summary Lattice     abc : 8.815000056846058 8.815000056846058 9.131710473490111  angles : 61.14080369885537 61.14080369885537 59.9999995733517  volume : 510.2218449146199       A : -4.4075 -7.634014 -0.0       B : 4.4075 -7.634014 0.0       C : -0.0 -5.089343 7.582     pbc : True True True PeriodicSite: Na (0.0, 0.0, 0.0) [0.0, 0.0, 0.0] PeriodicSite: Zr (9.811e-17, -10.18, 0.4774) [0.6457, 0.6457, 0.06296] PeriodicSite: Zr (-2.422e-17, -5.089, 4.268) [0.1457, 0.1457, 0.563] PeriodicSite: Zr (-7.549e-17, -10.18, 7.105) [0.3543, 0.3543, 0.937] PeriodicSite: Zr (-9.811e-17, -15.27, 3.314) [0.8543, 0.8543, 0.437] PeriodicSite: P (-1.837, -7.634, 5.686) [0.4584, 0.0416, 0.75] PeriodicSite: P (3.122, -9.86, 5.686) [0.0416, 0.75, 0.75] PeriodicSite: P (-1.285, -13.04, 5.686) [0.75, 0.4584, 0.75] PeriodicSite: P (-3.122, -10.5, 1.895) [0.9584, 0.25, 0.25] PeriodicSite: P (1.285, -7.315, 1.895) [0.25, 0.5416, 0.25] PeriodicSite: P (1.837, -12.72, 1.895) [0.5416, 0.9584, 0.25] PeriodicSite: O (1.696, -15.14, 6.924) [0.495, 0.8797, 0.9132] PeriodicSite: O (-0.7387, -16.8, 6.924) [0.8797, 0.7121, 0.9132] PeriodicSite: O (-0.9569, -13.86, 6.924) [0.7121, 0.495, 0.9132] PeriodicSite: O (-3.451, -11.32, 3.133) [0.995, 0.2121, 0.4132] PeriodicSite: O (0.7387, -6.621, 3.133) [0.2121, 0.3797, 0.4132] PeriodicSite: O (2.712, -12.6, 3.133) [0.3797, 0.995, 0.4132] PeriodicSite: O (-1.696, -5.215, 0.6581) [0.505, 0.1203, 0.0868] PeriodicSite: O (0.7387, -3.558, 0.6581) [0.1203, 0.2879, 0.0868] PeriodicSite: O (0.9569, -6.495, 0.6581) [0.2879, 0.505, 0.0868] PeriodicSite: O (3.451, -9.039, 4.449) [0.005, 0.7879, 0.5868] PeriodicSite: O (-0.7387, -13.74, 4.449) [0.7879, 0.6203, 0.5868] PeriodicSite: O (-2.712, -7.76, 4.449) [0.6203, 0.005, 0.5868] PeriodicSite: O (0.9463, -11.46, 1.798) [0.564, 0.7787, 0.2372] PeriodicSite: O (-1.581, -10.36, 1.798) [0.7787, 0.4201, 0.2372] PeriodicSite: O (0.6342, -8.72, 1.798) [0.4201, 0.564, 0.2372] PeriodicSite: O (3.773, -11.26, 5.589) [0.064, 0.9201, 0.7372] PeriodicSite: O (-2.827, -12.9, 5.589) [0.9201, 0.2787, 0.7372] PeriodicSite: O (-0.9463, -6.368, 5.589) [0.2787, 0.064, 0.7372] PeriodicSite: O (-0.9463, -8.9, 5.784) [0.436, 0.2213, 0.7628] PeriodicSite: O (1.581, -9.999, 5.784) [0.2213, 0.5799, 0.7628] PeriodicSite: O (-0.6342, -11.64, 5.784) [0.5799, 0.436, 0.7628] PeriodicSite: O (-3.773, -9.093, 1.993) [0.936, 0.0799, 0.2628] PeriodicSite: O (2.827, -7.454, 1.993) [0.0799, 0.7213, 0.2628] PeriodicSite: O (0.9463, -13.99, 1.993) [0.7213, 0.936, 0.2628], Structure Summary Lattice     abc : 8.815000056846058 8.815000056846058 9.131710473490111  angles : 61.14080369885537 61.14080369885537 59.9999995733517  volume : 510.2218449146199       A : -4.4075 -7.634014 -0.0       B : 4.4075 -7.634014 0.0       C : -0.0 -5.089343 7.582     pbc : True True True PeriodicSite: Na (0.0, -5.089, 1.895) [0.25, 0.25, 0.25] PeriodicSite: Zr (1.35e-16, -10.18, 0.4774) [0.6457, 0.6457, 0.06296] PeriodicSite: Zr (1.269e-17, -5.089, 4.268) [0.1457, 0.1457, 0.563] PeriodicSite: Zr (1.096e-16, -10.18, 7.105) [0.3543, 0.3543, 0.937] PeriodicSite: Zr (-1.35e-16, -15.27, 3.314) [0.8543, 0.8543, 0.437] PeriodicSite: P (-1.837, -7.634, 5.686) [0.4584, 0.0416, 0.75] PeriodicSite: P (3.122, -9.86, 5.686) [0.0416, 0.75, 0.75] PeriodicSite: P (-1.285, -13.04, 5.686) [0.75, 0.4584, 0.75] PeriodicSite: P (-3.122, -10.5, 1.895) [0.9584, 0.25, 0.25] PeriodicSite: P (1.285, -7.315, 1.895) [0.25, 0.5416, 0.25] PeriodicSite: P (1.837, -12.72, 1.895) [0.5416, 0.9584, 0.25] PeriodicSite: O (1.696, -15.14, 6.924) [0.495, 0.8797, 0.9132] PeriodicSite: O (-0.7387, -16.8, 6.924) [0.8797, 0.7121, 0.9132] PeriodicSite: O (-0.9569, -13.86, 6.924) [0.7121, 0.495, 0.9132] PeriodicSite: O (-3.451, -11.32, 3.133) [0.995, 0.2121, 0.4132] PeriodicSite: O (0.7387, -6.621, 3.133) [0.2121, 0.3797, 0.4132] PeriodicSite: O (2.712, -12.6, 3.133) [0.3797, 0.995, 0.4132] PeriodicSite: O (-1.696, -5.215, 0.6581) [0.505, 0.1203, 0.0868] PeriodicSite: O (0.7387, -3.558, 0.6581) [0.1203, 0.2879, 0.0868] PeriodicSite: O (0.9569, -6.495, 0.6581) [0.2879, 0.505, 0.0868] PeriodicSite: O (3.451, -9.039, 4.449) [0.005, 0.7879, 0.5868] PeriodicSite: O (-0.7387, -13.74, 4.449) [0.7879, 0.6203, 0.5868] PeriodicSite: O (-2.712, -7.76, 4.449) [0.6203, 0.005, 0.5868] PeriodicSite: O (0.9463, -11.46, 1.798) [0.564, 0.7787, 0.2372] PeriodicSite: O (-1.581, -10.36, 1.798) [0.7787, 0.4201, 0.2372] PeriodicSite: O (0.6342, -8.72, 1.798) [0.4201, 0.564, 0.2372] PeriodicSite: O (3.773, -11.26, 5.589) [0.064, 0.9201, 0.7372] PeriodicSite: O (-2.827, -12.9, 5.589) [0.9201, 0.2787, 0.7372] PeriodicSite: O (-0.9463, -6.368, 5.589) [0.2787, 0.064, 0.7372] PeriodicSite: O (-0.9463, -8.9, 5.784) [0.436, 0.2213, 0.7628] PeriodicSite: O (1.581, -9.999, 5.784) [0.2213, 0.5799, 0.7628] PeriodicSite: O (-0.6342, -11.64, 5.784) [0.5799, 0.436, 0.7628] PeriodicSite: O (-3.773, -9.093, 1.993) [0.936, 0.0799, 0.2628] PeriodicSite: O (2.827, -7.454, 1.993) [0.0799, 0.7213, 0.2628] PeriodicSite: O (0.9463, -13.99, 1.993) [0.7213, 0.936, 0.2628], Structure Summary Lattice     abc : 8.815000056846058 8.815000056846058 9.131710473490111  angles : 61.14080369885537 61.14080369885537 59.9999995733517  volume : 510.2218449146199       A : -4.4075 -7.634014 -0.0       B : 4.4075 -7.634014 0.0       C : -0.0 -5.089343 7.582     pbc : True True True PeriodicSite: Na (0.0, -10.18, 3.791) [0.5, 0.5, 0.5] PeriodicSite: Zr (9.811e-17, -10.18, 0.4774) [0.6457, 0.6457, 0.06296] PeriodicSite: Zr (-2.422e-17, -5.089, 4.268) [0.1457, 0.1457, 0.563] PeriodicSite: Zr (-7.549e-17, -10.18, 7.105) [0.3543, 0.3543, 0.937] PeriodicSite: Zr (-9.811e-17, -15.27, 3.314) [0.8543, 0.8543, 0.437] PeriodicSite: P (-1.837, -7.634, 5.686) [0.4584, 0.0416, 0.75] PeriodicSite: P (3.122, -9.86, 5.686) [0.0416, 0.75, 0.75] PeriodicSite: P (-1.285, -13.04, 5.686) [0.75, 0.4584, 0.75] PeriodicSite: P (-3.122, -10.5, 1.895) [0.9584, 0.25, 0.25] PeriodicSite: P (1.285, -7.315, 1.895) [0.25, 0.5416, 0.25] PeriodicSite: P (1.837, -12.72, 1.895) [0.5416, 0.9584, 0.25] PeriodicSite: O (1.696, -15.14, 6.924) [0.495, 0.8797, 0.9132] PeriodicSite: O (-0.7387, -16.8, 6.924) [0.8797, 0.7121, 0.9132] PeriodicSite: O (-0.9569, -13.86, 6.924) [0.7121, 0.495, 0.9132] PeriodicSite: O (-3.451, -11.32, 3.133) [0.995, 0.2121, 0.4132] PeriodicSite: O (0.7387, -6.621, 3.133) [0.2121, 0.3797, 0.4132] PeriodicSite: O (2.712, -12.6, 3.133) [0.3797, 0.995, 0.4132] PeriodicSite: O (-1.696, -5.215, 0.6581) [0.505, 0.1203, 0.0868] PeriodicSite: O (0.7387, -3.558, 0.6581) [0.1203, 0.2879, 0.0868] PeriodicSite: O (0.9569, -6.495, 0.6581) [0.2879, 0.505, 0.0868] PeriodicSite: O (3.451, -9.039, 4.449) [0.005, 0.7879, 0.5868] PeriodicSite: O (-0.7387, -13.74, 4.449) [0.7879, 0.6203, 0.5868] PeriodicSite: O (-2.712, -7.76, 4.449) [0.6203, 0.005, 0.5868] PeriodicSite: O (0.9463, -11.46, 1.798) [0.564, 0.7787, 0.2372] PeriodicSite: O (-1.581, -10.36, 1.798) [0.7787, 0.4201, 0.2372] PeriodicSite: O (0.6342, -8.72, 1.798) [0.4201, 0.564, 0.2372] PeriodicSite: O (3.773, -11.26, 5.589) [0.064, 0.9201, 0.7372] PeriodicSite: O (-2.827, -12.9, 5.589) [0.9201, 0.2787, 0.7372] PeriodicSite: O (-0.9463, -6.368, 5.589) [0.2787, 0.064, 0.7372] PeriodicSite: O (-0.9463, -8.9, 5.784) [0.436, 0.2213, 0.7628] PeriodicSite: O (1.581, -9.999, 5.784) [0.2213, 0.5799, 0.7628] PeriodicSite: O (-0.6342, -11.64, 5.784) [0.5799, 0.436, 0.7628] PeriodicSite: O (-3.773, -9.093, 1.993) [0.936, 0.0799, 0.2628] PeriodicSite: O (2.827, -7.454, 1.993) [0.0799, 0.7213, 0.2628] PeriodicSite: O (0.9463, -13.99, 1.993) [0.7213, 0.936, 0.2628]]
      -test_incar()[source]
      +test_incar()[source]
      -test_incar_user_setting()[source]
      +test_incar_user_setting()[source]
      -class UtilityTest(methodName='runTest')[source]
      +class UtilityTest(methodName='runTest')[source]

      Bases: TestCase

      Unit test for outside methods in io.py

      Create an instance of the class that will use the named test @@ -105,24 +105,24 @@

      Navigation

      not have a method with the specified name.

      -structure = Structure Summary Lattice     abc : 8.815000056846058 8.815000056846058 9.131710473490111  angles : 61.14080369885537 61.14080369885537 59.9999995733517  volume : 510.2218449146199       A : -4.4075 -7.634014 -0.0       B : 4.4075 -7.634014 0.0       C : -0.0 -5.089343 7.582     pbc : True True True PeriodicSite: Na (0.0, 0.0, 0.0) [0.0, 0.0, 0.0] PeriodicSite: Na (0.0, -10.18, 3.791) [0.5, 0.5, 0.5] PeriodicSite: Zr (9.811e-17, -10.18, 0.4774) [0.6457, 0.6457, 0.06296] PeriodicSite: Zr (-2.422e-17, -5.089, 4.268) [0.1457, 0.1457, 0.563] PeriodicSite: Zr (-7.549e-17, -10.18, 7.105) [0.3543, 0.3543, 0.937] PeriodicSite: Zr (-9.811e-17, -15.27, 3.314) [0.8543, 0.8543, 0.437] PeriodicSite: P (-1.837, -7.634, 5.686) [0.4584, 0.0416, 0.75] PeriodicSite: P (3.122, -9.86, 5.686) [0.0416, 0.75, 0.75] PeriodicSite: P (-1.285, -13.04, 5.686) [0.75, 0.4584, 0.75] PeriodicSite: P (-3.122, -10.5, 1.895) [0.9584, 0.25, 0.25] PeriodicSite: P (1.285, -7.315, 1.895) [0.25, 0.5416, 0.25] PeriodicSite: P (1.837, -12.72, 1.895) [0.5416, 0.9584, 0.25] PeriodicSite: O (1.696, -15.14, 6.924) [0.495, 0.8797, 0.9132] PeriodicSite: O (-0.7387, -16.8, 6.924) [0.8797, 0.7121, 0.9132] PeriodicSite: O (-0.9569, -13.86, 6.924) [0.7121, 0.495, 0.9132] PeriodicSite: O (-3.451, -11.32, 3.133) [0.995, 0.2121, 0.4132] PeriodicSite: O (0.7387, -6.621, 3.133) [0.2121, 0.3797, 0.4132] PeriodicSite: O (2.712, -12.6, 3.133) [0.3797, 0.995, 0.4132] PeriodicSite: O (-1.696, -5.215, 0.6581) [0.505, 0.1203, 0.0868] PeriodicSite: O (0.7387, -3.558, 0.6581) [0.1203, 0.2879, 0.0868] PeriodicSite: O (0.9569, -6.495, 0.6581) [0.2879, 0.505, 0.0868] PeriodicSite: O (3.451, -9.039, 4.449) [0.005, 0.7879, 0.5868] PeriodicSite: O (-0.7387, -13.74, 4.449) [0.7879, 0.6203, 0.5868] PeriodicSite: O (-2.712, -7.76, 4.449) [0.6203, 0.005, 0.5868] PeriodicSite: O (0.9463, -11.46, 1.798) [0.564, 0.7787, 0.2372] PeriodicSite: O (-1.581, -10.36, 1.798) [0.7787, 0.4201, 0.2372] PeriodicSite: O (0.6342, -8.72, 1.798) [0.4201, 0.564, 0.2372] PeriodicSite: O (3.773, -11.26, 5.589) [0.064, 0.9201, 0.7372] PeriodicSite: O (-2.827, -12.9, 5.589) [0.9201, 0.2787, 0.7372] PeriodicSite: O (-0.9463, -6.368, 5.589) [0.2787, 0.064, 0.7372] PeriodicSite: O (-0.9463, -8.9, 5.784) [0.436, 0.2213, 0.7628] PeriodicSite: O (1.581, -9.999, 5.784) [0.2213, 0.5799, 0.7628] PeriodicSite: O (-0.6342, -11.64, 5.784) [0.5799, 0.436, 0.7628] PeriodicSite: O (-3.773, -9.093, 1.993) [0.936, 0.0799, 0.2628] PeriodicSite: O (2.827, -7.454, 1.993) [0.0799, 0.7213, 0.2628] PeriodicSite: O (0.9463, -13.99, 1.993) [0.7213, 0.936, 0.2628]
      +structure = Structure Summary Lattice     abc : 8.815000056846058 8.815000056846058 9.131710473490111  angles : 61.14080369885537 61.14080369885537 59.9999995733517  volume : 510.2218449146199       A : -4.4075 -7.634014 -0.0       B : 4.4075 -7.634014 0.0       C : -0.0 -5.089343 7.582     pbc : True True True PeriodicSite: Na (0.0, 0.0, 0.0) [0.0, 0.0, 0.0] PeriodicSite: Na (0.0, -10.18, 3.791) [0.5, 0.5, 0.5] PeriodicSite: Zr (9.811e-17, -10.18, 0.4774) [0.6457, 0.6457, 0.06296] PeriodicSite: Zr (-2.422e-17, -5.089, 4.268) [0.1457, 0.1457, 0.563] PeriodicSite: Zr (-7.549e-17, -10.18, 7.105) [0.3543, 0.3543, 0.937] PeriodicSite: Zr (-9.811e-17, -15.27, 3.314) [0.8543, 0.8543, 0.437] PeriodicSite: P (-1.837, -7.634, 5.686) [0.4584, 0.0416, 0.75] PeriodicSite: P (3.122, -9.86, 5.686) [0.0416, 0.75, 0.75] PeriodicSite: P (-1.285, -13.04, 5.686) [0.75, 0.4584, 0.75] PeriodicSite: P (-3.122, -10.5, 1.895) [0.9584, 0.25, 0.25] PeriodicSite: P (1.285, -7.315, 1.895) [0.25, 0.5416, 0.25] PeriodicSite: P (1.837, -12.72, 1.895) [0.5416, 0.9584, 0.25] PeriodicSite: O (1.696, -15.14, 6.924) [0.495, 0.8797, 0.9132] PeriodicSite: O (-0.7387, -16.8, 6.924) [0.8797, 0.7121, 0.9132] PeriodicSite: O (-0.9569, -13.86, 6.924) [0.7121, 0.495, 0.9132] PeriodicSite: O (-3.451, -11.32, 3.133) [0.995, 0.2121, 0.4132] PeriodicSite: O (0.7387, -6.621, 3.133) [0.2121, 0.3797, 0.4132] PeriodicSite: O (2.712, -12.6, 3.133) [0.3797, 0.995, 0.4132] PeriodicSite: O (-1.696, -5.215, 0.6581) [0.505, 0.1203, 0.0868] PeriodicSite: O (0.7387, -3.558, 0.6581) [0.1203, 0.2879, 0.0868] PeriodicSite: O (0.9569, -6.495, 0.6581) [0.2879, 0.505, 0.0868] PeriodicSite: O (3.451, -9.039, 4.449) [0.005, 0.7879, 0.5868] PeriodicSite: O (-0.7387, -13.74, 4.449) [0.7879, 0.6203, 0.5868] PeriodicSite: O (-2.712, -7.76, 4.449) [0.6203, 0.005, 0.5868] PeriodicSite: O (0.9463, -11.46, 1.798) [0.564, 0.7787, 0.2372] PeriodicSite: O (-1.581, -10.36, 1.798) [0.7787, 0.4201, 0.2372] PeriodicSite: O (0.6342, -8.72, 1.798) [0.4201, 0.564, 0.2372] PeriodicSite: O (3.773, -11.26, 5.589) [0.064, 0.9201, 0.7372] PeriodicSite: O (-2.827, -12.9, 5.589) [0.9201, 0.2787, 0.7372] PeriodicSite: O (-0.9463, -6.368, 5.589) [0.2787, 0.064, 0.7372] PeriodicSite: O (-0.9463, -8.9, 5.784) [0.436, 0.2213, 0.7628] PeriodicSite: O (1.581, -9.999, 5.784) [0.2213, 0.5799, 0.7628] PeriodicSite: O (-0.6342, -11.64, 5.784) [0.5799, 0.436, 0.7628] PeriodicSite: O (-3.773, -9.093, 1.993) [0.936, 0.0799, 0.2628] PeriodicSite: O (2.827, -7.454, 1.993) [0.0799, 0.7213, 0.2628] PeriodicSite: O (0.9463, -13.99, 1.993) [0.7213, 0.936, 0.2628]
      -test_get_endpoint_dist()[source]
      +test_get_endpoint_dist()[source]
      -test_get_endpoints_from_index()[source]
      +test_get_endpoints_from_index()[source]
      -get_path(path_str, dirname='./')[source]
      +get_path(path_str, dirname='./')[source]
      @@ -173,7 +173,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.neb.tests.test_pathfinder.html b/docs/pymatgen.analysis.diffusion.neb.tests.test_pathfinder.html index c50ec6d..f31f24a 100644 --- a/docs/pymatgen.analysis.diffusion.neb.tests.test_pathfinder.html +++ b/docs/pymatgen.analysis.diffusion.neb.tests.test_pathfinder.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.neb.tests.test_pathfinder module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.neb.tests.test_pathfinder module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,103 +46,103 @@

      Navigation

      -

      pymatgen.analysis.diffusion.neb.tests.test_pathfinder module

      +

      pymatgen.analysis.diffusion.neb.tests.test_pathfinder module

      -class DistinctPathFinderTest(methodName='runTest')[source]
      +class DistinctPathFinderTest(methodName='runTest')[source]

      Bases: PymatgenTest

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -test_get_paths()[source]
      +test_get_paths()[source]
      -test_max_path_length()[source]
      +test_max_path_length()[source]
      -class IDPPSolverTest(methodName='runTest')[source]
      +class IDPPSolverTest(methodName='runTest')[source]

      Bases: TestCase

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -final_struct = Structure Summary Lattice     abc : 10.411723299877 12.0783517723596 9.47759961582329  angles : 90.0 90.0 90.0  volume : 1191.8693444977544       A : 10.411723299877 0.0 0.0       B : 0.0 12.0783517723596 0.0       C : 0.0 0.0 9.47759961582329     pbc : True True True PeriodicSite: Li (5.185, 6.182, 2.417) [0.498, 0.5118, 0.2551] PeriodicSite: Li (5.227, 11.94, 2.321) [0.502, 0.9882, 0.2449] PeriodicSite: Li (5.182, 12.07, 7.085) [0.4977, 0.999, 0.7475] PeriodicSite: Li (5.23, 6.051, 7.132) [0.5023, 0.501, 0.7525] PeriodicSite: Li (0.0005125, 3.018, 0.004327) [4.922e-05, 0.2499, 0.0004565] PeriodicSite: Li (10.41, 3.021, 4.734) [1.0, 0.2501, 0.4995] PeriodicSite: Li (10.41, 9.058, 0.003074) [0.9995, 0.75, 0.0003243] PeriodicSite: Li (0.005658, 9.059, 4.736) [0.0005434, 0.75, 0.4997] PeriodicSite: Li (5.206, 3.02, 2.369) [0.5, 0.25, 0.25] PeriodicSite: Li (5.206, 3.02, 7.108) [0.5, 0.25, 0.75] PeriodicSite: Li (5.206, 9.059, 7.108) [0.5, 0.75, 0.75] PeriodicSite: Li (10.41, 12.06, 0.008545) [0.9997, 0.9989, 0.0009016] PeriodicSite: Li (0.003162, 12.07, 4.738) [0.0003037, 0.9996, 0.5] PeriodicSite: Li (10.41, 6.043, 0.0004624) [0.9997, 0.5004, 4.879e-05] PeriodicSite: Li (0.002981, 6.053, 4.73) [0.0002863, 0.5011, 0.4991] PeriodicSite: Fe (8.141, 1.511, 2.487) [0.7819, 0.1251, 0.2624] PeriodicSite: Fe (8.141, 1.506, 7.228) [0.7819, 0.1247, 0.7626] PeriodicSite: Fe (8.1, 7.569, 2.472) [0.778, 0.6266, 0.2608] PeriodicSite: Fe (8.137, 7.545, 7.235) [0.7816, 0.6247, 0.7633] PeriodicSite: Fe (2.947, 1.502, 4.613) [0.283, 0.1243, 0.4867] PeriodicSite: Fe (2.938, 1.504, 9.355) [0.2822, 0.1245, 0.9871] PeriodicSite: Fe (2.957, 7.578, 4.609) [0.284, 0.6274, 0.4863] PeriodicSite: Fe (2.96, 7.565, 9.381) [0.2842, 0.6264, 0.9898] PeriodicSite: Fe (2.27, 4.528, 2.252) [0.2181, 0.3749, 0.2376] PeriodicSite: Fe (2.271, 4.533, 6.988) [0.2181, 0.3753, 0.7374] PeriodicSite: Fe (2.312, 10.55, 2.267) [0.222, 0.8734, 0.2392] PeriodicSite: Fe (2.274, 10.57, 6.982) [0.2184, 0.8753, 0.7367] PeriodicSite: Fe (7.465, 4.537, 0.1261) [0.717, 0.3757, 0.0133] PeriodicSite: Fe (7.473, 4.535, 4.861) [0.7178, 0.3755, 0.5129] PeriodicSite: Fe (7.455, 10.54, 0.1303) [0.716, 0.8726, 0.01374] PeriodicSite: Fe (7.452, 10.55, 4.836) [0.7158, 0.8736, 0.5102] PeriodicSite: P (6.198, 1.507, 0.3753) [0.5953, 0.1248, 0.0396] PeriodicSite: P (6.211, 1.514, 5.111) [0.5966, 0.1253, 0.5393] PeriodicSite: P (6.196, 7.548, 0.3633) [0.5951, 0.6249, 0.03833] PeriodicSite: P (6.22, 7.514, 5.12) [0.5974, 0.6221, 0.5402] PeriodicSite: P (0.9887, 1.504, 1.99) [0.09496, 0.1245, 0.2099] PeriodicSite: P (0.9865, 1.513, 6.727) [0.09475, 0.1253, 0.7098] PeriodicSite: P (0.9818, 7.544, 1.993) [0.0943, 0.6246, 0.2102] PeriodicSite: P (0.9911, 7.546, 6.738) [0.09519, 0.6248, 0.7109] PeriodicSite: P (4.214, 4.532, 4.364) [0.4047, 0.3752, 0.4604] PeriodicSite: P (4.2, 4.526, 9.105) [0.4034, 0.3747, 0.9607] PeriodicSite: P (4.216, 10.57, 4.376) [0.4049, 0.8751, 0.4617] PeriodicSite: P (4.191, 10.6, 9.097) [0.4026, 0.8779, 0.9598] PeriodicSite: P (9.423, 4.535, 2.749) [0.905, 0.3755, 0.2901] PeriodicSite: P (9.425, 4.526, 7.489) [0.9053, 0.3747, 0.7902] PeriodicSite: P (9.43, 10.57, 2.746) [0.9057, 0.8754, 0.2898] PeriodicSite: P (9.421, 10.57, 7.479) [0.9048, 0.8752, 0.7891] PeriodicSite: O (6.223, 1.527, 3.577) [0.5977, 0.1264, 0.3775] PeriodicSite: O (6.209, 1.513, 8.315) [0.5964, 0.1252, 0.8774] PeriodicSite: O (6.275, 7.44, 3.601) [0.6027, 0.616, 0.38] PeriodicSite: O (6.212, 7.545, 8.293) [0.5966, 0.6247, 0.875] PeriodicSite: O (0.9902, 1.512, 3.526) [0.0951, 0.1252, 0.372] PeriodicSite: O (0.9889, 1.512, 8.264) [0.09498, 0.1252, 0.8719] PeriodicSite: O (0.9898, 7.548, 3.529) [0.09506, 0.6249, 0.3724] PeriodicSite: O (0.9929, 7.54, 8.274) [0.09536, 0.6243, 0.873] PeriodicSite: O (4.189, 4.512, 1.161) [0.4023, 0.3736, 0.1225] PeriodicSite: O (4.202, 4.527, 5.901) [0.4036, 0.3748, 0.6226] PeriodicSite: O (4.137, 10.68, 1.137) [0.3973, 0.884, 0.12] PeriodicSite: O (4.2, 10.57, 5.923) [0.4034, 0.8753, 0.625] PeriodicSite: O (9.422, 4.527, 1.213) [0.9049, 0.3748, 0.128] PeriodicSite: O (9.423, 4.527, 5.953) [0.905, 0.3748, 0.6281] PeriodicSite: O (9.422, 10.57, 1.209) [0.9049, 0.8751, 0.1276] PeriodicSite: O (9.419, 10.58, 5.943) [0.9046, 0.8757, 0.627] PeriodicSite: O (9.968, 1.514, 1.379) [0.9574, 0.1253, 0.1455] PeriodicSite: O (9.966, 1.522, 6.119) [0.9572, 0.126, 0.6456] PeriodicSite: O (9.963, 7.543, 1.383) [0.9569, 0.6245, 0.1459] PeriodicSite: O (9.972, 7.541, 6.125) [0.9578, 0.6243, 0.6462] PeriodicSite: O (4.766, 1.52, 0.9751) [0.4577, 0.1259, 0.1029] PeriodicSite: O (4.778, 1.513, 5.718) [0.4589, 0.1253, 0.6033] PeriodicSite: O (4.763, 7.503, 0.9219) [0.4574, 0.6212, 0.09727] PeriodicSite: O (4.78, 7.542, 5.712) [0.4591, 0.6244, 0.6027] PeriodicSite: O (0.4439, 4.526, 3.36) [0.04263, 0.3747, 0.3545] PeriodicSite: O (0.4458, 4.517, 8.098) [0.04282, 0.374, 0.8544] PeriodicSite: O (0.4487, 10.57, 3.356) [0.0431, 0.8755, 0.3541] PeriodicSite: O (0.4398, 10.58, 8.092) [0.04224, 0.8757, 0.8538] PeriodicSite: O (5.646, 4.519, 3.764) [0.5423, 0.3741, 0.3971] PeriodicSite: O (5.634, 4.526, 8.498) [0.5411, 0.3747, 0.8967] PeriodicSite: O (5.649, 10.61, 3.817) [0.5426, 0.8788, 0.4027] PeriodicSite: O (5.632, 10.58, 8.505) [0.5409, 0.8756, 0.8973] PeriodicSite: O (6.938, 0.2665, 0.9991) [0.6664, 0.02207, 0.1054] PeriodicSite: O (6.962, 0.2813, 5.739) [0.6687, 0.02329, 0.6056] PeriodicSite: O (6.942, 6.299, 0.9884) [0.6668, 0.5215, 0.1043] PeriodicSite: O (6.941, 6.283, 5.805) [0.6667, 0.5202, 0.6125] PeriodicSite: O (1.738, 2.739, 1.363) [0.1669, 0.2268, 0.1439] PeriodicSite: O (1.739, 2.746, 6.102) [0.167, 0.2274, 0.6438] PeriodicSite: O (1.729, 8.776, 1.362) [0.1661, 0.7266, 0.1437] PeriodicSite: O (1.728, 8.787, 6.117) [0.1659, 0.7275, 0.6454] PeriodicSite: O (3.459, 3.3, 3.737) [0.3322, 0.2732, 0.3942] PeriodicSite: O (3.461, 3.288, 8.468) [0.3324, 0.2722, 0.8934] PeriodicSite: O (3.389, 9.374, 3.797) [0.3255, 0.7761, 0.4006] PeriodicSite: O (3.444, 9.36, 8.482) [0.3308, 0.7749, 0.895] PeriodicSite: O (8.688, 5.775, 3.373) [0.8344, 0.4782, 0.3559] PeriodicSite: O (8.691, 5.764, 8.119) [0.8347, 0.4773, 0.8567] PeriodicSite: O (8.685, 11.81, 3.366) [0.8342, 0.9781, 0.3552] PeriodicSite: O (8.669, 11.8, 8.11) [0.8326, 0.9771, 0.8557] PeriodicSite: O (3.473, 5.773, 3.74) [0.3336, 0.4779, 0.3946] PeriodicSite: O (3.45, 5.758, 8.477) [0.3313, 0.4767, 0.8944] PeriodicSite: O (3.469, 11.82, 3.75) [0.3332, 0.9785, 0.3957] PeriodicSite: O (3.47, 11.83, 8.412) [0.3333, 0.9798, 0.8875] PeriodicSite: O (8.674, 3.3, 3.375) [0.8331, 0.2732, 0.3561] PeriodicSite: O (8.673, 3.293, 8.114) [0.833, 0.2726, 0.8562] PeriodicSite: O (8.682, 9.342, 3.377) [0.8339, 0.7734, 0.3563] PeriodicSite: O (8.684, 9.33, 8.099) [0.8341, 0.7725, 0.8546] PeriodicSite: O (6.952, 2.739, 1.002) [0.6678, 0.2268, 0.1058] PeriodicSite: O (6.951, 2.752, 5.749) [0.6676, 0.2278, 0.6066] PeriodicSite: O (7.022, 8.744, 0.9423) [0.6745, 0.7239, 0.09942] PeriodicSite: O (6.967, 8.757, 5.734) [0.6692, 0.7251, 0.605] PeriodicSite: O (1.724, 0.2638, 1.366) [0.1656, 0.02184, 0.1441] PeriodicSite: O (1.721, 0.2747, 6.097) [0.1653, 0.02274, 0.6433] PeriodicSite: O (1.726, 6.303, 1.372) [0.1658, 0.5219, 0.1448] PeriodicSite: O (1.743, 6.316, 6.107) [0.1674, 0.5229, 0.6443]
      +final_struct = Structure Summary Lattice     abc : 10.411723299877 12.0783517723596 9.47759961582329  angles : 90.0 90.0 90.0  volume : 1191.8693444977544       A : 10.411723299877 0.0 0.0       B : 0.0 12.0783517723596 0.0       C : 0.0 0.0 9.47759961582329     pbc : True True True PeriodicSite: Li (5.185, 6.182, 2.417) [0.498, 0.5118, 0.2551] PeriodicSite: Li (5.227, 11.94, 2.321) [0.502, 0.9882, 0.2449] PeriodicSite: Li (5.182, 12.07, 7.085) [0.4977, 0.999, 0.7475] PeriodicSite: Li (5.23, 6.051, 7.132) [0.5023, 0.501, 0.7525] PeriodicSite: Li (0.0005125, 3.018, 0.004327) [4.922e-05, 0.2499, 0.0004565] PeriodicSite: Li (10.41, 3.021, 4.734) [1.0, 0.2501, 0.4995] PeriodicSite: Li (10.41, 9.058, 0.003074) [0.9995, 0.75, 0.0003243] PeriodicSite: Li (0.005658, 9.059, 4.736) [0.0005434, 0.75, 0.4997] PeriodicSite: Li (5.206, 3.02, 2.369) [0.5, 0.25, 0.25] PeriodicSite: Li (5.206, 3.02, 7.108) [0.5, 0.25, 0.75] PeriodicSite: Li (5.206, 9.059, 7.108) [0.5, 0.75, 0.75] PeriodicSite: Li (10.41, 12.06, 0.008545) [0.9997, 0.9989, 0.0009016] PeriodicSite: Li (0.003162, 12.07, 4.738) [0.0003037, 0.9996, 0.5] PeriodicSite: Li (10.41, 6.043, 0.0004624) [0.9997, 0.5004, 4.879e-05] PeriodicSite: Li (0.002981, 6.053, 4.73) [0.0002863, 0.5011, 0.4991] PeriodicSite: Fe (8.141, 1.511, 2.487) [0.7819, 0.1251, 0.2624] PeriodicSite: Fe (8.141, 1.506, 7.228) [0.7819, 0.1247, 0.7626] PeriodicSite: Fe (8.1, 7.569, 2.472) [0.778, 0.6266, 0.2608] PeriodicSite: Fe (8.137, 7.545, 7.235) [0.7816, 0.6247, 0.7633] PeriodicSite: Fe (2.947, 1.502, 4.613) [0.283, 0.1243, 0.4867] PeriodicSite: Fe (2.938, 1.504, 9.355) [0.2822, 0.1245, 0.9871] PeriodicSite: Fe (2.957, 7.578, 4.609) [0.284, 0.6274, 0.4863] PeriodicSite: Fe (2.96, 7.565, 9.381) [0.2842, 0.6264, 0.9898] PeriodicSite: Fe (2.27, 4.528, 2.252) [0.2181, 0.3749, 0.2376] PeriodicSite: Fe (2.271, 4.533, 6.988) [0.2181, 0.3753, 0.7374] PeriodicSite: Fe (2.312, 10.55, 2.267) [0.222, 0.8734, 0.2392] PeriodicSite: Fe (2.274, 10.57, 6.982) [0.2184, 0.8753, 0.7367] PeriodicSite: Fe (7.465, 4.537, 0.1261) [0.717, 0.3757, 0.0133] PeriodicSite: Fe (7.473, 4.535, 4.861) [0.7178, 0.3755, 0.5129] PeriodicSite: Fe (7.455, 10.54, 0.1303) [0.716, 0.8726, 0.01374] PeriodicSite: Fe (7.452, 10.55, 4.836) [0.7158, 0.8736, 0.5102] PeriodicSite: P (6.198, 1.507, 0.3753) [0.5953, 0.1248, 0.0396] PeriodicSite: P (6.211, 1.514, 5.111) [0.5966, 0.1253, 0.5393] PeriodicSite: P (6.196, 7.548, 0.3633) [0.5951, 0.6249, 0.03833] PeriodicSite: P (6.22, 7.514, 5.12) [0.5974, 0.6221, 0.5402] PeriodicSite: P (0.9887, 1.504, 1.99) [0.09496, 0.1245, 0.2099] PeriodicSite: P (0.9865, 1.513, 6.727) [0.09475, 0.1253, 0.7098] PeriodicSite: P (0.9818, 7.544, 1.993) [0.0943, 0.6246, 0.2102] PeriodicSite: P (0.9911, 7.546, 6.738) [0.09519, 0.6248, 0.7109] PeriodicSite: P (4.214, 4.532, 4.364) [0.4047, 0.3752, 0.4604] PeriodicSite: P (4.2, 4.526, 9.105) [0.4034, 0.3747, 0.9607] PeriodicSite: P (4.216, 10.57, 4.376) [0.4049, 0.8751, 0.4617] PeriodicSite: P (4.191, 10.6, 9.097) [0.4026, 0.8779, 0.9598] PeriodicSite: P (9.423, 4.535, 2.749) [0.905, 0.3755, 0.2901] PeriodicSite: P (9.425, 4.526, 7.489) [0.9053, 0.3747, 0.7902] PeriodicSite: P (9.43, 10.57, 2.746) [0.9057, 0.8754, 0.2898] PeriodicSite: P (9.421, 10.57, 7.479) [0.9048, 0.8752, 0.7891] PeriodicSite: O (6.223, 1.527, 3.577) [0.5977, 0.1264, 0.3775] PeriodicSite: O (6.209, 1.513, 8.315) [0.5964, 0.1252, 0.8774] PeriodicSite: O (6.275, 7.44, 3.601) [0.6027, 0.616, 0.38] PeriodicSite: O (6.212, 7.545, 8.293) [0.5966, 0.6247, 0.875] PeriodicSite: O (0.9902, 1.512, 3.526) [0.0951, 0.1252, 0.372] PeriodicSite: O (0.9889, 1.512, 8.264) [0.09498, 0.1252, 0.8719] PeriodicSite: O (0.9898, 7.548, 3.529) [0.09506, 0.6249, 0.3724] PeriodicSite: O (0.9929, 7.54, 8.274) [0.09536, 0.6243, 0.873] PeriodicSite: O (4.189, 4.512, 1.161) [0.4023, 0.3736, 0.1225] PeriodicSite: O (4.202, 4.527, 5.901) [0.4036, 0.3748, 0.6226] PeriodicSite: O (4.137, 10.68, 1.137) [0.3973, 0.884, 0.12] PeriodicSite: O (4.2, 10.57, 5.923) [0.4034, 0.8753, 0.625] PeriodicSite: O (9.422, 4.527, 1.213) [0.9049, 0.3748, 0.128] PeriodicSite: O (9.423, 4.527, 5.953) [0.905, 0.3748, 0.6281] PeriodicSite: O (9.422, 10.57, 1.209) [0.9049, 0.8751, 0.1276] PeriodicSite: O (9.419, 10.58, 5.943) [0.9046, 0.8757, 0.627] PeriodicSite: O (9.968, 1.514, 1.379) [0.9574, 0.1253, 0.1455] PeriodicSite: O (9.966, 1.522, 6.119) [0.9572, 0.126, 0.6456] PeriodicSite: O (9.963, 7.543, 1.383) [0.9569, 0.6245, 0.1459] PeriodicSite: O (9.972, 7.541, 6.125) [0.9578, 0.6243, 0.6462] PeriodicSite: O (4.766, 1.52, 0.9751) [0.4577, 0.1259, 0.1029] PeriodicSite: O (4.778, 1.513, 5.718) [0.4589, 0.1253, 0.6033] PeriodicSite: O (4.763, 7.503, 0.9219) [0.4574, 0.6212, 0.09727] PeriodicSite: O (4.78, 7.542, 5.712) [0.4591, 0.6244, 0.6027] PeriodicSite: O (0.4439, 4.526, 3.36) [0.04263, 0.3747, 0.3545] PeriodicSite: O (0.4458, 4.517, 8.098) [0.04282, 0.374, 0.8544] PeriodicSite: O (0.4487, 10.57, 3.356) [0.0431, 0.8755, 0.3541] PeriodicSite: O (0.4398, 10.58, 8.092) [0.04224, 0.8757, 0.8538] PeriodicSite: O (5.646, 4.519, 3.764) [0.5423, 0.3741, 0.3971] PeriodicSite: O (5.634, 4.526, 8.498) [0.5411, 0.3747, 0.8967] PeriodicSite: O (5.649, 10.61, 3.817) [0.5426, 0.8788, 0.4027] PeriodicSite: O (5.632, 10.58, 8.505) [0.5409, 0.8756, 0.8973] PeriodicSite: O (6.938, 0.2665, 0.9991) [0.6664, 0.02207, 0.1054] PeriodicSite: O (6.962, 0.2813, 5.739) [0.6687, 0.02329, 0.6056] PeriodicSite: O (6.942, 6.299, 0.9884) [0.6668, 0.5215, 0.1043] PeriodicSite: O (6.941, 6.283, 5.805) [0.6667, 0.5202, 0.6125] PeriodicSite: O (1.738, 2.739, 1.363) [0.1669, 0.2268, 0.1439] PeriodicSite: O (1.739, 2.746, 6.102) [0.167, 0.2274, 0.6438] PeriodicSite: O (1.729, 8.776, 1.362) [0.1661, 0.7266, 0.1437] PeriodicSite: O (1.728, 8.787, 6.117) [0.1659, 0.7275, 0.6454] PeriodicSite: O (3.459, 3.3, 3.737) [0.3322, 0.2732, 0.3942] PeriodicSite: O (3.461, 3.288, 8.468) [0.3324, 0.2722, 0.8934] PeriodicSite: O (3.389, 9.374, 3.797) [0.3255, 0.7761, 0.4006] PeriodicSite: O (3.444, 9.36, 8.482) [0.3308, 0.7749, 0.895] PeriodicSite: O (8.688, 5.775, 3.373) [0.8344, 0.4782, 0.3559] PeriodicSite: O (8.691, 5.764, 8.119) [0.8347, 0.4773, 0.8567] PeriodicSite: O (8.685, 11.81, 3.366) [0.8342, 0.9781, 0.3552] PeriodicSite: O (8.669, 11.8, 8.11) [0.8326, 0.9771, 0.8557] PeriodicSite: O (3.473, 5.773, 3.74) [0.3336, 0.4779, 0.3946] PeriodicSite: O (3.45, 5.758, 8.477) [0.3313, 0.4767, 0.8944] PeriodicSite: O (3.469, 11.82, 3.75) [0.3332, 0.9785, 0.3957] PeriodicSite: O (3.47, 11.83, 8.412) [0.3333, 0.9798, 0.8875] PeriodicSite: O (8.674, 3.3, 3.375) [0.8331, 0.2732, 0.3561] PeriodicSite: O (8.673, 3.293, 8.114) [0.833, 0.2726, 0.8562] PeriodicSite: O (8.682, 9.342, 3.377) [0.8339, 0.7734, 0.3563] PeriodicSite: O (8.684, 9.33, 8.099) [0.8341, 0.7725, 0.8546] PeriodicSite: O (6.952, 2.739, 1.002) [0.6678, 0.2268, 0.1058] PeriodicSite: O (6.951, 2.752, 5.749) [0.6676, 0.2278, 0.6066] PeriodicSite: O (7.022, 8.744, 0.9423) [0.6745, 0.7239, 0.09942] PeriodicSite: O (6.967, 8.757, 5.734) [0.6692, 0.7251, 0.605] PeriodicSite: O (1.724, 0.2638, 1.366) [0.1656, 0.02184, 0.1441] PeriodicSite: O (1.721, 0.2747, 6.097) [0.1653, 0.02274, 0.6433] PeriodicSite: O (1.726, 6.303, 1.372) [0.1658, 0.5219, 0.1448] PeriodicSite: O (1.743, 6.316, 6.107) [0.1674, 0.5229, 0.6443]
      -init_struct = Structure Summary Lattice     abc : 10.411723299877 12.0783517723596 9.47759961582329  angles : 90.0 90.0 90.0  volume : 1191.8693444977544       A : 10.411723299877 0.0 0.0       B : 0.0 12.0783517723596 0.0       C : 0.0 0.0 9.47759961582329     pbc : True True True PeriodicSite: Li (5.187, 8.921, 2.417) [0.4982, 0.7386, 0.255] PeriodicSite: Li (5.206, 12.08, 2.369) [0.5, 1.0, 0.25] PeriodicSite: Li (5.206, 12.08, 7.108) [0.5, 1.0, 0.75] PeriodicSite: Li (5.206, 6.039, 7.108) [0.5, 0.5, 0.75] PeriodicSite: Li (10.41, 3.032, 0.007788) [0.9997, 0.251, 0.0008217] PeriodicSite: Li (0.002969, 3.023, 4.739) [0.0002851, 0.2503, 0.5] PeriodicSite: Li (10.41, 9.055, 4.493e-05) [0.9997, 0.7497, 4.741e-06] PeriodicSite: Li (0.002765, 9.046, 4.731) [0.0002656, 0.749, 0.4992] PeriodicSite: Li (5.224, 3.158, 2.322) [0.5018, 0.2614, 0.245] PeriodicSite: Li (5.182, 3.031, 7.084) [0.4977, 0.2509, 0.7475] PeriodicSite: Li (5.23, 9.047, 7.132) [0.5023, 0.7491, 0.7525] PeriodicSite: Li (0.0003644, 0.0009345, 0.005748) [3.5e-05, 7.737e-05, 0.0006065] PeriodicSite: Li (10.41, 12.08, 4.733) [1.0, 0.9999, 0.4994] PeriodicSite: Li (10.41, 6.039, 0.003601) [0.9995, 0.5, 0.00038] PeriodicSite: Li (0.005541, 6.039, 4.735) [0.0005322, 0.5, 0.4996] PeriodicSite: Fe (8.142, 1.509, 2.487) [0.782, 0.1249, 0.2624] PeriodicSite: Fe (8.141, 1.513, 7.228) [0.7819, 0.1253, 0.7627] PeriodicSite: Fe (8.101, 7.529, 2.472) [0.7781, 0.6233, 0.2608] PeriodicSite: Fe (8.137, 7.552, 7.234) [0.7816, 0.6253, 0.7633] PeriodicSite: Fe (2.947, 1.518, 4.614) [0.283, 0.1257, 0.4868] PeriodicSite: Fe (2.938, 1.517, 9.355) [0.2822, 0.1256, 0.9871] PeriodicSite: Fe (2.956, 7.52, 4.607) [0.2839, 0.6226, 0.4861] PeriodicSite: Fe (2.959, 7.533, 9.38) [0.2842, 0.6237, 0.9897] PeriodicSite: Fe (2.311, 4.549, 2.267) [0.2219, 0.3767, 0.2392] PeriodicSite: Fe (2.274, 4.526, 6.982) [0.2184, 0.3747, 0.7367] PeriodicSite: Fe (2.27, 10.57, 2.252) [0.218, 0.8751, 0.2376] PeriodicSite: Fe (2.271, 10.56, 6.988) [0.2181, 0.8747, 0.7373] PeriodicSite: Fe (7.455, 4.558, 0.1314) [0.7161, 0.3774, 0.01386] PeriodicSite: Fe (7.453, 4.546, 4.836) [0.7158, 0.3763, 0.5103] PeriodicSite: Fe (7.465, 10.56, 0.1251) [0.717, 0.8743, 0.0132] PeriodicSite: Fe (7.473, 10.56, 4.861) [0.7178, 0.8744, 0.5129] PeriodicSite: P (6.198, 1.511, 0.3753) [0.5953, 0.1251, 0.0396] PeriodicSite: P (6.211, 1.505, 5.111) [0.5966, 0.1246, 0.5393] PeriodicSite: P (6.196, 7.55, 0.3633) [0.5951, 0.6251, 0.03833] PeriodicSite: P (6.22, 7.584, 5.119) [0.5974, 0.6279, 0.5401] PeriodicSite: P (0.9888, 1.515, 1.99) [0.09497, 0.1255, 0.2099] PeriodicSite: P (0.9865, 1.506, 6.728) [0.09474, 0.1247, 0.7099] PeriodicSite: P (0.9815, 7.554, 1.992) [0.09427, 0.6254, 0.2102] PeriodicSite: P (0.9909, 7.552, 6.737) [0.09517, 0.6252, 0.7109] PeriodicSite: P (4.216, 4.528, 4.375) [0.4049, 0.3749, 0.4617] PeriodicSite: P (4.192, 4.495, 9.098) [0.4026, 0.3721, 0.9599] PeriodicSite: P (4.214, 10.57, 4.364) [0.4047, 0.8749, 0.4604] PeriodicSite: P (4.2, 10.57, 9.105) [0.4034, 0.8754, 0.9607] PeriodicSite: P (9.43, 4.524, 2.747) [0.9057, 0.3746, 0.2898] PeriodicSite: P (9.421, 4.526, 7.479) [0.9048, 0.3747, 0.7891] PeriodicSite: P (9.423, 10.56, 2.749) [0.905, 0.8745, 0.2901] PeriodicSite: P (9.425, 10.57, 7.488) [0.9053, 0.8753, 0.7901] PeriodicSite: O (6.222, 1.492, 3.577) [0.5976, 0.1236, 0.3775] PeriodicSite: O (6.21, 1.505, 8.315) [0.5965, 0.1246, 0.8774] PeriodicSite: O (6.274, 7.658, 3.601) [0.6026, 0.634, 0.3799] PeriodicSite: O (6.211, 7.552, 8.293) [0.5965, 0.6252, 0.8751] PeriodicSite: O (0.9903, 1.507, 3.526) [0.09511, 0.1248, 0.372] PeriodicSite: O (0.9896, 1.508, 8.264) [0.09505, 0.1248, 0.872] PeriodicSite: O (0.99, 7.55, 3.529) [0.09508, 0.6251, 0.3723] PeriodicSite: O (0.9927, 7.558, 8.273) [0.09534, 0.6258, 0.8729] PeriodicSite: O (4.137, 4.42, 1.138) [0.3974, 0.366, 0.1201] PeriodicSite: O (4.201, 4.527, 5.923) [0.4035, 0.3748, 0.6249] PeriodicSite: O (4.189, 10.59, 1.161) [0.4024, 0.8764, 0.1225] PeriodicSite: O (4.202, 10.57, 5.901) [0.4035, 0.8754, 0.6226] PeriodicSite: O (9.422, 4.528, 1.21) [0.9049, 0.3749, 0.1277] PeriodicSite: O (9.419, 4.52, 5.943) [0.9047, 0.3742, 0.6271] PeriodicSite: O (9.421, 10.57, 1.213) [0.9049, 0.8752, 0.128] PeriodicSite: O (9.422, 10.57, 5.952) [0.905, 0.8752, 0.628] PeriodicSite: O (9.968, 1.505, 1.378) [0.9574, 0.1246, 0.1454] PeriodicSite: O (9.966, 1.497, 6.12) [0.9572, 0.1239, 0.6457] PeriodicSite: O (9.962, 7.555, 1.383) [0.9568, 0.6255, 0.1459] PeriodicSite: O (9.972, 7.557, 6.124) [0.9577, 0.6257, 0.6462] PeriodicSite: O (4.766, 1.5, 0.9756) [0.4577, 0.1242, 0.1029] PeriodicSite: O (4.778, 1.506, 5.719) [0.4589, 0.1247, 0.6034] PeriodicSite: O (4.763, 7.596, 0.9216) [0.4574, 0.6289, 0.09724] PeriodicSite: O (4.779, 7.556, 5.71) [0.459, 0.6256, 0.6024] PeriodicSite: O (0.4493, 4.523, 3.356) [0.04315, 0.3745, 0.3541] PeriodicSite: O (0.44, 4.521, 8.092) [0.04226, 0.3743, 0.8538] PeriodicSite: O (0.4436, 10.57, 3.36) [0.0426, 0.8754, 0.3546] PeriodicSite: O (0.4459, 10.58, 8.097) [0.04283, 0.8761, 0.8543] PeriodicSite: O (5.649, 4.483, 3.817) [0.5426, 0.3711, 0.4028] PeriodicSite: O (5.633, 4.522, 8.507) [0.541, 0.3744, 0.8976] PeriodicSite: O (5.646, 10.58, 3.763) [0.5423, 0.8758, 0.3971] PeriodicSite: O (5.633, 10.57, 8.497) [0.5411, 0.8753, 0.8966] PeriodicSite: O (6.951, 0.2785, 1.003) [0.6676, 0.02306, 0.1058] PeriodicSite: O (6.95, 0.266, 5.748) [0.6675, 0.02202, 0.6065] PeriodicSite: O (7.022, 6.354, 0.9424) [0.6744, 0.5261, 0.09944] PeriodicSite: O (6.966, 6.34, 5.733) [0.669, 0.5249, 0.6049] PeriodicSite: O (1.725, 2.756, 1.366) [0.1657, 0.2281, 0.1441] PeriodicSite: O (1.721, 2.745, 6.097) [0.1653, 0.2272, 0.6433] PeriodicSite: O (1.726, 8.795, 1.372) [0.1657, 0.7282, 0.1447] PeriodicSite: O (1.743, 8.782, 6.106) [0.1674, 0.7271, 0.6442] PeriodicSite: O (3.469, 3.278, 3.752) [0.3332, 0.2714, 0.3959] PeriodicSite: O (3.47, 3.264, 8.411) [0.3333, 0.2702, 0.8875] PeriodicSite: O (3.472, 9.327, 3.74) [0.3335, 0.7722, 0.3946] PeriodicSite: O (3.448, 9.342, 8.477) [0.3312, 0.7734, 0.8944] PeriodicSite: O (8.683, 5.756, 3.377) [0.8339, 0.4765, 0.3563] PeriodicSite: O (8.683, 5.767, 8.099) [0.834, 0.4775, 0.8545] PeriodicSite: O (8.674, 11.8, 3.375) [0.8331, 0.9768, 0.3561] PeriodicSite: O (8.673, 11.81, 8.114) [0.833, 0.9774, 0.8561] PeriodicSite: O (3.39, 5.725, 3.796) [0.3256, 0.474, 0.4006] PeriodicSite: O (3.446, 5.739, 8.484) [0.331, 0.4751, 0.8951] PeriodicSite: O (3.461, 11.8, 3.736) [0.3324, 0.9769, 0.3942] PeriodicSite: O (3.462, 11.81, 8.468) [0.3325, 0.978, 0.8935] PeriodicSite: O (8.686, 3.283, 3.367) [0.8343, 0.2718, 0.3553] PeriodicSite: O (8.669, 3.296, 8.111) [0.8326, 0.2729, 0.8558] PeriodicSite: O (8.687, 9.323, 3.373) [0.8343, 0.7719, 0.3559] PeriodicSite: O (8.691, 9.334, 8.119) [0.8347, 0.7728, 0.8567] PeriodicSite: O (6.94, 2.751, 0.9992) [0.6665, 0.2278, 0.1054] PeriodicSite: O (6.963, 2.736, 5.739) [0.6688, 0.2266, 0.6056] PeriodicSite: O (6.942, 8.8, 0.9868) [0.6668, 0.7286, 0.1041] PeriodicSite: O (6.942, 8.815, 5.805) [0.6667, 0.7298, 0.6125] PeriodicSite: O (1.738, 0.2801, 1.364) [0.1669, 0.02319, 0.1439] PeriodicSite: O (1.739, 0.2732, 6.102) [0.167, 0.02262, 0.6439] PeriodicSite: O (1.729, 6.322, 1.362) [0.1661, 0.5235, 0.1437] PeriodicSite: O (1.729, 6.311, 6.117) [0.166, 0.5225, 0.6455]
      +init_struct = Structure Summary Lattice     abc : 10.411723299877 12.0783517723596 9.47759961582329  angles : 90.0 90.0 90.0  volume : 1191.8693444977544       A : 10.411723299877 0.0 0.0       B : 0.0 12.0783517723596 0.0       C : 0.0 0.0 9.47759961582329     pbc : True True True PeriodicSite: Li (5.187, 8.921, 2.417) [0.4982, 0.7386, 0.255] PeriodicSite: Li (5.206, 12.08, 2.369) [0.5, 1.0, 0.25] PeriodicSite: Li (5.206, 12.08, 7.108) [0.5, 1.0, 0.75] PeriodicSite: Li (5.206, 6.039, 7.108) [0.5, 0.5, 0.75] PeriodicSite: Li (10.41, 3.032, 0.007788) [0.9997, 0.251, 0.0008217] PeriodicSite: Li (0.002969, 3.023, 4.739) [0.0002851, 0.2503, 0.5] PeriodicSite: Li (10.41, 9.055, 4.493e-05) [0.9997, 0.7497, 4.741e-06] PeriodicSite: Li (0.002765, 9.046, 4.731) [0.0002656, 0.749, 0.4992] PeriodicSite: Li (5.224, 3.158, 2.322) [0.5018, 0.2614, 0.245] PeriodicSite: Li (5.182, 3.031, 7.084) [0.4977, 0.2509, 0.7475] PeriodicSite: Li (5.23, 9.047, 7.132) [0.5023, 0.7491, 0.7525] PeriodicSite: Li (0.0003644, 0.0009345, 0.005748) [3.5e-05, 7.737e-05, 0.0006065] PeriodicSite: Li (10.41, 12.08, 4.733) [1.0, 0.9999, 0.4994] PeriodicSite: Li (10.41, 6.039, 0.003601) [0.9995, 0.5, 0.00038] PeriodicSite: Li (0.005541, 6.039, 4.735) [0.0005322, 0.5, 0.4996] PeriodicSite: Fe (8.142, 1.509, 2.487) [0.782, 0.1249, 0.2624] PeriodicSite: Fe (8.141, 1.513, 7.228) [0.7819, 0.1253, 0.7627] PeriodicSite: Fe (8.101, 7.529, 2.472) [0.7781, 0.6233, 0.2608] PeriodicSite: Fe (8.137, 7.552, 7.234) [0.7816, 0.6253, 0.7633] PeriodicSite: Fe (2.947, 1.518, 4.614) [0.283, 0.1257, 0.4868] PeriodicSite: Fe (2.938, 1.517, 9.355) [0.2822, 0.1256, 0.9871] PeriodicSite: Fe (2.956, 7.52, 4.607) [0.2839, 0.6226, 0.4861] PeriodicSite: Fe (2.959, 7.533, 9.38) [0.2842, 0.6237, 0.9897] PeriodicSite: Fe (2.311, 4.549, 2.267) [0.2219, 0.3767, 0.2392] PeriodicSite: Fe (2.274, 4.526, 6.982) [0.2184, 0.3747, 0.7367] PeriodicSite: Fe (2.27, 10.57, 2.252) [0.218, 0.8751, 0.2376] PeriodicSite: Fe (2.271, 10.56, 6.988) [0.2181, 0.8747, 0.7373] PeriodicSite: Fe (7.455, 4.558, 0.1314) [0.7161, 0.3774, 0.01386] PeriodicSite: Fe (7.453, 4.546, 4.836) [0.7158, 0.3763, 0.5103] PeriodicSite: Fe (7.465, 10.56, 0.1251) [0.717, 0.8743, 0.0132] PeriodicSite: Fe (7.473, 10.56, 4.861) [0.7178, 0.8744, 0.5129] PeriodicSite: P (6.198, 1.511, 0.3753) [0.5953, 0.1251, 0.0396] PeriodicSite: P (6.211, 1.505, 5.111) [0.5966, 0.1246, 0.5393] PeriodicSite: P (6.196, 7.55, 0.3633) [0.5951, 0.6251, 0.03833] PeriodicSite: P (6.22, 7.584, 5.119) [0.5974, 0.6279, 0.5401] PeriodicSite: P (0.9888, 1.515, 1.99) [0.09497, 0.1255, 0.2099] PeriodicSite: P (0.9865, 1.506, 6.728) [0.09474, 0.1247, 0.7099] PeriodicSite: P (0.9815, 7.554, 1.992) [0.09427, 0.6254, 0.2102] PeriodicSite: P (0.9909, 7.552, 6.737) [0.09517, 0.6252, 0.7109] PeriodicSite: P (4.216, 4.528, 4.375) [0.4049, 0.3749, 0.4617] PeriodicSite: P (4.192, 4.495, 9.098) [0.4026, 0.3721, 0.9599] PeriodicSite: P (4.214, 10.57, 4.364) [0.4047, 0.8749, 0.4604] PeriodicSite: P (4.2, 10.57, 9.105) [0.4034, 0.8754, 0.9607] PeriodicSite: P (9.43, 4.524, 2.747) [0.9057, 0.3746, 0.2898] PeriodicSite: P (9.421, 4.526, 7.479) [0.9048, 0.3747, 0.7891] PeriodicSite: P (9.423, 10.56, 2.749) [0.905, 0.8745, 0.2901] PeriodicSite: P (9.425, 10.57, 7.488) [0.9053, 0.8753, 0.7901] PeriodicSite: O (6.222, 1.492, 3.577) [0.5976, 0.1236, 0.3775] PeriodicSite: O (6.21, 1.505, 8.315) [0.5965, 0.1246, 0.8774] PeriodicSite: O (6.274, 7.658, 3.601) [0.6026, 0.634, 0.3799] PeriodicSite: O (6.211, 7.552, 8.293) [0.5965, 0.6252, 0.8751] PeriodicSite: O (0.9903, 1.507, 3.526) [0.09511, 0.1248, 0.372] PeriodicSite: O (0.9896, 1.508, 8.264) [0.09505, 0.1248, 0.872] PeriodicSite: O (0.99, 7.55, 3.529) [0.09508, 0.6251, 0.3723] PeriodicSite: O (0.9927, 7.558, 8.273) [0.09534, 0.6258, 0.8729] PeriodicSite: O (4.137, 4.42, 1.138) [0.3974, 0.366, 0.1201] PeriodicSite: O (4.201, 4.527, 5.923) [0.4035, 0.3748, 0.6249] PeriodicSite: O (4.189, 10.59, 1.161) [0.4024, 0.8764, 0.1225] PeriodicSite: O (4.202, 10.57, 5.901) [0.4035, 0.8754, 0.6226] PeriodicSite: O (9.422, 4.528, 1.21) [0.9049, 0.3749, 0.1277] PeriodicSite: O (9.419, 4.52, 5.943) [0.9047, 0.3742, 0.6271] PeriodicSite: O (9.421, 10.57, 1.213) [0.9049, 0.8752, 0.128] PeriodicSite: O (9.422, 10.57, 5.952) [0.905, 0.8752, 0.628] PeriodicSite: O (9.968, 1.505, 1.378) [0.9574, 0.1246, 0.1454] PeriodicSite: O (9.966, 1.497, 6.12) [0.9572, 0.1239, 0.6457] PeriodicSite: O (9.962, 7.555, 1.383) [0.9568, 0.6255, 0.1459] PeriodicSite: O (9.972, 7.557, 6.124) [0.9577, 0.6257, 0.6462] PeriodicSite: O (4.766, 1.5, 0.9756) [0.4577, 0.1242, 0.1029] PeriodicSite: O (4.778, 1.506, 5.719) [0.4589, 0.1247, 0.6034] PeriodicSite: O (4.763, 7.596, 0.9216) [0.4574, 0.6289, 0.09724] PeriodicSite: O (4.779, 7.556, 5.71) [0.459, 0.6256, 0.6024] PeriodicSite: O (0.4493, 4.523, 3.356) [0.04315, 0.3745, 0.3541] PeriodicSite: O (0.44, 4.521, 8.092) [0.04226, 0.3743, 0.8538] PeriodicSite: O (0.4436, 10.57, 3.36) [0.0426, 0.8754, 0.3546] PeriodicSite: O (0.4459, 10.58, 8.097) [0.04283, 0.8761, 0.8543] PeriodicSite: O (5.649, 4.483, 3.817) [0.5426, 0.3711, 0.4028] PeriodicSite: O (5.633, 4.522, 8.507) [0.541, 0.3744, 0.8976] PeriodicSite: O (5.646, 10.58, 3.763) [0.5423, 0.8758, 0.3971] PeriodicSite: O (5.633, 10.57, 8.497) [0.5411, 0.8753, 0.8966] PeriodicSite: O (6.951, 0.2785, 1.003) [0.6676, 0.02306, 0.1058] PeriodicSite: O (6.95, 0.266, 5.748) [0.6675, 0.02202, 0.6065] PeriodicSite: O (7.022, 6.354, 0.9424) [0.6744, 0.5261, 0.09944] PeriodicSite: O (6.966, 6.34, 5.733) [0.669, 0.5249, 0.6049] PeriodicSite: O (1.725, 2.756, 1.366) [0.1657, 0.2281, 0.1441] PeriodicSite: O (1.721, 2.745, 6.097) [0.1653, 0.2272, 0.6433] PeriodicSite: O (1.726, 8.795, 1.372) [0.1657, 0.7282, 0.1447] PeriodicSite: O (1.743, 8.782, 6.106) [0.1674, 0.7271, 0.6442] PeriodicSite: O (3.469, 3.278, 3.752) [0.3332, 0.2714, 0.3959] PeriodicSite: O (3.47, 3.264, 8.411) [0.3333, 0.2702, 0.8875] PeriodicSite: O (3.472, 9.327, 3.74) [0.3335, 0.7722, 0.3946] PeriodicSite: O (3.448, 9.342, 8.477) [0.3312, 0.7734, 0.8944] PeriodicSite: O (8.683, 5.756, 3.377) [0.8339, 0.4765, 0.3563] PeriodicSite: O (8.683, 5.767, 8.099) [0.834, 0.4775, 0.8545] PeriodicSite: O (8.674, 11.8, 3.375) [0.8331, 0.9768, 0.3561] PeriodicSite: O (8.673, 11.81, 8.114) [0.833, 0.9774, 0.8561] PeriodicSite: O (3.39, 5.725, 3.796) [0.3256, 0.474, 0.4006] PeriodicSite: O (3.446, 5.739, 8.484) [0.331, 0.4751, 0.8951] PeriodicSite: O (3.461, 11.8, 3.736) [0.3324, 0.9769, 0.3942] PeriodicSite: O (3.462, 11.81, 8.468) [0.3325, 0.978, 0.8935] PeriodicSite: O (8.686, 3.283, 3.367) [0.8343, 0.2718, 0.3553] PeriodicSite: O (8.669, 3.296, 8.111) [0.8326, 0.2729, 0.8558] PeriodicSite: O (8.687, 9.323, 3.373) [0.8343, 0.7719, 0.3559] PeriodicSite: O (8.691, 9.334, 8.119) [0.8347, 0.7728, 0.8567] PeriodicSite: O (6.94, 2.751, 0.9992) [0.6665, 0.2278, 0.1054] PeriodicSite: O (6.963, 2.736, 5.739) [0.6688, 0.2266, 0.6056] PeriodicSite: O (6.942, 8.8, 0.9868) [0.6668, 0.7286, 0.1041] PeriodicSite: O (6.942, 8.815, 5.805) [0.6667, 0.7298, 0.6125] PeriodicSite: O (1.738, 0.2801, 1.364) [0.1669, 0.02319, 0.1439] PeriodicSite: O (1.739, 0.2732, 6.102) [0.167, 0.02262, 0.6439] PeriodicSite: O (1.729, 6.322, 1.362) [0.1661, 0.5235, 0.1437] PeriodicSite: O (1.729, 6.311, 6.117) [0.166, 0.5225, 0.6455]
      -test_idpp()[source]
      +test_idpp()[source]
      -test_idpp_from_ep()[source]
      +test_idpp_from_ep()[source]
      -test_idpp_from_ep_diff_latt()[source]
      +test_idpp_from_ep_diff_latt()[source]
      -class MigrationHopTest(methodName='runTest')[source]
      +class MigrationHopTest(methodName='runTest')[source]

      Bases: PymatgenTest

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -setUp()[source]
      +setUp()[source]

      Hook method for setting up the test fixture before exercising it.

      -test_get_sc_structures()[source]
      +test_get_sc_structures()[source]
      -test_get_sc_structures_vacmode()[source]
      +test_get_sc_structures_vacmode()[source]
      -test_get_start_end_structs_from_hop()[source]
      +test_get_start_end_structs_from_hop()[source]
      -test_get_start_end_structs_from_hop_vac()[source]
      +test_get_start_end_structs_from_hop_vac()[source]
      -test_msonable()[source]
      +test_msonable()[source]
      -get_path(path_str, dirname='./')[source]
      +get_path(path_str, dirname='./')[source]
      @@ -197,7 +197,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.tests.test_analyzer.html b/docs/pymatgen.analysis.diffusion.tests.test_analyzer.html index 9c1d460..25b3be4 100644 --- a/docs/pymatgen.analysis.diffusion.tests.test_analyzer.html +++ b/docs/pymatgen.analysis.diffusion.tests.test_analyzer.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.tests.test_analyzer module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.tests.test_analyzer module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,46 +46,46 @@

      Navigation

      -

      pymatgen.analysis.diffusion.tests.test_analyzer module

      +

      pymatgen.analysis.diffusion.tests.test_analyzer module

      -class DiffusionAnalyzerTest(methodName='runTest')[source]
      +class DiffusionAnalyzerTest(methodName='runTest')[source]

      Bases: PymatgenTest

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -test_from_structure_NPT()[source]
      +test_from_structure_NPT()[source]
      -test_init()[source]
      +test_init()[source]
      -test_init_npt()[source]
      +test_init_npt()[source]
      -class FuncTest(methodName='runTest')[source]
      +class FuncTest(methodName='runTest')[source]

      Bases: PymatgenTest

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -test_fit_arrhenius()[source]
      +test_fit_arrhenius()[source]
      -test_get_conversion_factor()[source]
      +test_get_conversion_factor()[source]
      @@ -130,7 +130,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.tests.test_pathfinder.html b/docs/pymatgen.analysis.diffusion.tests.test_pathfinder.html index 575c191..876b15e 100644 --- a/docs/pymatgen.analysis.diffusion.tests.test_pathfinder.html +++ b/docs/pymatgen.analysis.diffusion.tests.test_pathfinder.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.tests.test_pathfinder module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.tests.test_pathfinder module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,17 +46,17 @@

      Navigation

      -

      pymatgen.analysis.diffusion.tests.test_pathfinder module

      +

      pymatgen.analysis.diffusion.tests.test_pathfinder module

      -class PathfinderTest(methodName='runTest')[source]
      +class PathfinderTest(methodName='runTest')[source]

      Bases: PymatgenTest

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -test_mhop_msonable()[source]
      +test_mhop_msonable()[source]
      @@ -94,7 +94,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.utils.edge_data_from_sc.html b/docs/pymatgen.analysis.diffusion.utils.edge_data_from_sc.html index 8ac3ce6..3247fe9 100644 --- a/docs/pymatgen.analysis.diffusion.utils.edge_data_from_sc.html +++ b/docs/pymatgen.analysis.diffusion.utils.edge_data_from_sc.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.utils.edge_data_from_sc module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.utils.edge_data_from_sc module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,21 +46,23 @@

      Navigation

      -

      pymatgen.analysis.diffusion.utils.edge_data_from_sc module

      -

      Function to add edge data to MigrationGraph through 2 SC structures

      +

      pymatgen.analysis.diffusion.utils.edge_data_from_sc module

      +

      Function to add edge data to MigrationGraph through 2 SC structures.

      -add_edge_data_from_sc(mg: MigrationGraph, i_sc: Structure, e_sc: Structure, data_array: list, key: str = 'custom_key', use_host_sg: bool = True) None[source]
      -

      Add a data entry and key to edges within FullPathMapper object with the same hop_label. -These hops are equivalent by symmetry to the 2 positions given in the supercell structures.

      +add_edge_data_from_sc(mg: MigrationGraph, i_sc: Structure, e_sc: Structure, data_array: list, key: str = 'custom_key', use_host_sg: bool = True) None[source] +

      Add a data entry and key to edges within FullPathMapper object with the same +hop_label. These hops are equivalent by symmetry to the 2 positions given in the +supercell structures.

      Parameters:
        +
      • mg – MigrationGraph object.

      • i_sc – Supercell structure containing working ion at initial position

      • e_sc – Supercell structure containing working ion at ending position

      • data_array – The data to be added to the edges

      • key – Key of the edge attribute to be added

      • -
      • use_host_sg – Flag t whether or not to use the host structure’s spacegroup to initiate MigrationHop

      • +
      • use_host_sg – Flag whether to use the host structure’s spacegroup to initiate MigrationHop

      Returns:
      @@ -71,14 +73,14 @@

      Navigation

      -get_uc_pos(isite: PeriodicSite, esite: PeriodicSite, uc: Structure, sc: Structure, sm: StructureMatcher) tuple[pymatgen.core.sites.PeriodicSite, pymatgen.core.sites.PeriodicSite, pymatgen.core.sites.PeriodicSite][source]
      -

      Take positions in the supercel and transform into the unitcell positions

      +get_uc_pos(isite: PeriodicSite, esite: PeriodicSite, uc: Structure, sc: Structure, sm: StructureMatcher) tuple[PeriodicSite, PeriodicSite, PeriodicSite][source] +

      Take positions in the supercell and transform into the unit cell positions.

      Parameters:
      • isite – initial site in the SC

      • esite – ending site in the SC

      • -
      • uc – Unit Cell structre

      • +
      • uc – Unit Cell structure

      • sc – Super Cell structure

      • sm – StructureMatcher object with the working ion ignored

      @@ -91,8 +93,8 @@

      Navigation

      -get_unique_hop(mg: MigrationGraph, sc: Structure, isite: PeriodicSite, esite: PeriodicSite, use_host_sg: bool = True) tuple[int, pymatgen.analysis.diffusion.neb.pathfinder.MigrationHop][source]
      -

      Get the unique hop label that correspond to two end positions in the SC

      +get_unique_hop(mg: MigrationGraph, sc: Structure, isite: PeriodicSite, esite: PeriodicSite, use_host_sg: bool = True) tuple[int, MigrationHop][source] +

      Get the unique hop label that correspond to two end positions in the SC.

      Parameters:
        @@ -100,19 +102,20 @@

        Navigation

      • sc – Structure of the supercell used for the NEB calculation

      • isite – Initial position in the supercell

      • esite – Final position in the supercell

      • -
      • use_host_sg – Flag t whether or not to use the host structure’s spacegroup to initiate MigrationHop

      • +
      • use_host_sg – Flag t whether or not to use the host structure’s spacegroup to +initiate MigrationHop

      Returns:
      -

      The index of the unique hop, the MigrationHop object trasformed from the SC

      +

      The index of the unique hop, the MigrationHop object transformed from the SC

      -mh_eq(mh1, mh2)[source]
      -

      Allow for symmetric matching of MigrationPath objects with variable precession

      +mh_eq(mh1, mh2)[source] +

      Allow for symmetric matching of MigrationPath objects with variable precession.

      Parameters:
        @@ -159,7 +162,7 @@

        This Page

        rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.utils.html b/docs/pymatgen.analysis.diffusion.utils.html index 0222940..09b061c 100644 --- a/docs/pymatgen.analysis.diffusion.utils.html +++ b/docs/pymatgen.analysis.diffusion.utils.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.utils package — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.utils package — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,14 +46,14 @@

      Navigation

      -

      pymatgen.analysis.diffusion.utils package

      +

      pymatgen.analysis.diffusion.utils package

      -

      Subpackages

      +

      Subpackages

      -

      Submodules

      +

      Submodules

      @@ -119,7 +119,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.utils.maggma.html b/docs/pymatgen.analysis.diffusion.utils.maggma.html index 44865bb..351c1d0 100644 --- a/docs/pymatgen.analysis.diffusion.utils.maggma.html +++ b/docs/pymatgen.analysis.diffusion.utils.maggma.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.utils.maggma module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.utils.maggma module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,13 +46,13 @@

      Navigation

      -

      pymatgen.analysis.diffusion.utils.maggma module

      +

      pymatgen.analysis.diffusion.utils.maggma module

      Functions for querying Materials Project style MongoStores that contains cathode materials The functions are isolated from the rest of the package so -that the rest of the package will not depend on Maggma

      +that the rest of the package will not depend on Maggma.

      -get_entries_from_dbs(structure_group_store: MongoStore, material_store: MongoStore, migrating_ion: str, material_id: str)[source]
      +get_entries_from_dbs(structure_group_store: MongoStore, material_store: MongoStore, migrating_ion: str, material_id: str)[source]

      Get the entries needed to construct a migration from a database that contains topotactically matched structures.

      @@ -60,10 +60,10 @@

      Navigation

      • structure_group_store – Electrode documents one per each similar group of insertion materials, can also use any db that contains a

      • -
      • material_store – Material documenets one per each similar structure ( +

      • material_store – Material documents one per each similar structure ( multiple tasks)

      • migrating_ion – The name of the migrating ion

      • -
      • structures (material_ids list with topotactic) –

      • +
      • material_id – Material id

      @@ -99,7 +99,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.utils.parse_entries.html b/docs/pymatgen.analysis.diffusion.utils.parse_entries.html index 0c5f03d..7faa908 100644 --- a/docs/pymatgen.analysis.diffusion.utils.parse_entries.html +++ b/docs/pymatgen.analysis.diffusion.utils.parse_entries.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.utils.parse_entries module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.utils.parse_entries module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,15 +46,16 @@

      Navigation

      -

      pymatgen.analysis.diffusion.utils.parse_entries module

      +

      pymatgen.analysis.diffusion.utils.parse_entries module

      Functions for combining many ComputedEntry objects into MigrationGraph objects.

      -get_inserted_on_base(base_ent: ComputedStructureEntry, inserted_ent: ComputedStructureEntry, migrating_ion_entry: ComputedEntry, sm: StructureMatcher) Structure | None[source]
      -

      For a structured-matched pair of base and inserted entries, map all of the Li positions in the inserted entry to -positions in the base entry and return a new structure where all the sites are decorated with the insertion -energy. Since the calculation of the insertion energy needs the energy of the metallic working ion, -a migrating_ion_entry must also be provided.

      +get_inserted_on_base(base_ent: ComputedStructureEntry, inserted_ent: ComputedStructureEntry, migrating_ion_entry: ComputedEntry, sm: StructureMatcher) Structure | None[source] +

      For a structured-matched pair of base and inserted entries, map all of the Li +positions in the inserted entry to positions in the base entry and return a new +structure where all the sites are decorated with the insertion energy. Since the +calculation of the insertion energy needs the energy of the metallic working ion, a +migrating_ion_entry must also be provided.

      Parameters:
        @@ -72,23 +73,31 @@

        Navigation

        -get_insertion_energy(base_entry: ComputedStructureEntry, inserted_entry: ComputedStructureEntry, migrating_ion_entry: ComputedEntry) float[source]
        +get_insertion_energy(base_entry: ComputedStructureEntry, inserted_entry: ComputedStructureEntry, migrating_ion_entry: ComputedEntry) float[source]

        Calculate the insertion energy for a given inserted entry :param base_entry: The entry for the host structure :param inserted_entry: The entry for the inserted structure :param migrating_ion_entry: The entry for the metallic phase of the working ion

        Returns:
        -

        The insertion energy defined as (E[inserted] - (E[Base] + n * E[working_ion]))/(n) -Where n is the number of working ions and E[inserted]. -Additionally, and E[base] and E[inserted] are for structures of the same size (sans working ion)

        +

        +
        insertion energy defined as

        (E[inserted] - (E[Base] + n * E[working_ion])) / n

        +
        +
        +

        Where n is the number of working ions and E[inserted]. +Additionally, and E[base] and E[inserted] are for structures of the same size +(sans working ion).

        +

        +
        +
        Return type:
        +

        float

        -get_matched_structure_mapping(base: Structure, inserted: Structure, sm: StructureMatcher)[source]
        +get_matched_structure_mapping(base: Structure, inserted: Structure, sm: StructureMatcher)[source]

        Get the mapping from the inserted structure onto the base structure, assuming that the inserted structure sans the working ion is some kind of SC of the base.

        @@ -112,15 +121,16 @@

        Navigation

        -get_sym_migration_ion_sites(base_struct: Structure, inserted_struct: Structure, migrating_ion: str, symprec: float = 0.01, angle_tol: float = 5.0) Structure[source]
        -

        Take one inserted entry then map out all symmetry equivalent copies of the cation sites in base entry. -Each site is decorated with the insertion energy calculated from the base and inserted entries.

        +get_sym_migration_ion_sites(base_struct: Structure, inserted_struct: Structure, migrating_ion: str, symprec: float = 0.01, angle_tol: float = 5.0) Structure[source] +

        Take one inserted entry then map out all symmetry equivalent copies of the cation +sites in base entry. Each site is decorated with the insertion energy calculated +from the base and inserted entries.

        Parameters:
          -
        • inserted_entry – entry that contains cation

        • -
        • base_struct_entry – the entry containing the base structure

        • -
        • migrating_ion_entry – the name of the migrating species

        • +
        • base_struct – the base structure.

        • +
        • inserted_struct – inserted structure.

        • +
        • migrating_ion – Ion that migrates.

        • symprec – the symprec tolerance for the space group analysis

        • angle_tol – the angle tolerance for the space group analysis

        @@ -133,28 +143,34 @@

        Navigation

        -process_entries(base_entries: list[ComputedStructureEntry], inserted_entries: list[ComputedStructureEntry], migrating_ion_entry: ComputedEntry, symprec: float = 0.01, ltol: float = 0.2, stol: float = 0.3, angle_tol: float = 5.0) list[dict][source]
        -

        Process a list of base entries and inserted entries to create input for migration path analysis Each inserted -entries can be mapped to more than one base entry. Return groups of structures decorated with the working ions -to indicate the metastable sites, ranked by the number of working ion sites (highest number is the first).

        +process_entries(base_entries: list[ComputedStructureEntry], inserted_entries: list[ComputedStructureEntry], migrating_ion_entry: ComputedEntry, symprec: float = 0.01, ltol: float = 0.2, stol: float = 0.3, angle_tol: float = 5.0) list[dict][source] +

        Process a list of base entries and inserted entries to create input for migration +path analysis Each inserted entries can be mapped to more than one base entry. +Return groups of structures decorated with the working ions to indicate the +metastable sites, ranked by the number of working ion sites (highest number is the +first).

        Parameters:
          -
        • base_entries – Full list of base entires

        • -
        • inserted_entries – Full list of inserted entires

        • -
        • migrating_ion_entry – The metallic phase of the working ion, used to calculate insertion energies.

        • +
        • base_entries – Full list of base entries

        • +
        • inserted_entries – Full list of inserted entries

        • +
        • migrating_ion_entry – The metallic phase of the working ion, used to calculate +insertion energies.

        • symprec – symmetry parameter for SpacegroupAnalyzer

        • ltol – Fractional length tolerance for StructureMatcher

        • stol – Site tolerance for StructureMatcher

        • -
        • angle_tol – Angle tolerance fro StructureMatcher and SpacegroupAnalyzer

        • +
        • angle_tol – Angle tolerance for StructureMatcher and SpacegroupAnalyzer

        • only_single_cat – If True, only use single cation insertions so the site energy is more accurate use_strict_tol: halve the ltol and stol parameter for more strict matching.

        Returns:
        -

        List of dictionaries that each contain -{‘base’ : Structure Object of host, ‘inserted’ : Structure object of all inserted sites}

        +

        +
        List of dictionaries that each contain {‘base’: Structure Object of host,

        ’inserted’: Structure object of all inserted sites}

        +
        +
        +

        Return type:

        list

        @@ -196,7 +212,7 @@

        This Page

        rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.utils.supercells.html b/docs/pymatgen.analysis.diffusion.utils.supercells.html index bfcdb83..69c3188 100644 --- a/docs/pymatgen.analysis.diffusion.utils.supercells.html +++ b/docs/pymatgen.analysis.diffusion.utils.supercells.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.utils.supercells module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.utils.supercells module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,11 +46,11 @@

      Navigation

      -

      pymatgen.analysis.diffusion.utils.supercells module

      -

      Functions for creating supercells for NEB calculations

      +

      pymatgen.analysis.diffusion.utils.supercells module

      +

      Functions for creating supercells for NEB calculations.

      -get_sc_fromstruct(base_struct: Structure, min_atoms: int = 80, max_atoms: int = 240, min_length: float = 10.0) list[list[int]][source]
      +get_sc_fromstruct(base_struct: Structure, min_atoms: int = 80, max_atoms: int = 240, min_length: float = 10.0) list[list[int]][source]

      Generate the best supercell from a unitcell. The CubicSupercellTransformation from PMG is much faster but don’t iterate over as many supercell configurations so it’s less able to find the best configuration in a give cell size. @@ -76,15 +76,19 @@

      Navigation

      -get_start_end_structures(isite: PeriodicSite, esite: PeriodicSite, base_struct: Structure, sc_mat: list[list[int | float]], vac_mode: bool, debug: bool = False, tol: float = 1e-05) tuple[pymatgen.core.structure.Structure, pymatgen.core.structure.Structure, pymatgen.core.structure.Structure][source]
      +get_start_end_structures(isite: PeriodicSite, esite: PeriodicSite, base_struct: Structure, sc_mat: list[list[int | float]], vac_mode: bool, debug: bool = False, tol: float = 1e-05) tuple[Structure, Structure, Structure][source]

      Obtain the starting and terminating structures in a supercell for NEB calculations.

      Parameters:
        +
      • isite – Initial site index.

      • +
      • esite – End site index.

      • hop – object presenting the migration event

      • base_struct – unit cell representation of the structure

      • sc_mat – supercell transformation to create the simulation cell for the NEB calc

      • -
      • tol – toleranace for identifying isite/esite within base_struct

      • +
      • vac_mode – Vacuum mode.

      • +
      • debug – debug mode.

      • +
      • tol – toleranace for identifying isite/esite within base_struct.

      Returns:
      @@ -124,7 +128,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc.html b/docs/pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc.html index fdf4b59..916c3fc 100644 --- a/docs/pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc.html +++ b/docs/pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,25 +46,25 @@

      Navigation

      -

      pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc module

      +

      pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc module

      -test_add_edge_data_from_sc()[source]
      +test_add_edge_data_from_sc()[source]
      -test_get_uc_pos()[source]
      +test_get_uc_pos()[source]
      -test_get_unique_hop_host()[source]
      +test_get_unique_hop_host()[source]
      -test_get_unique_host_nonhost()[source]
      +test_get_unique_host_nonhost()[source]
      @@ -100,7 +100,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.diffusion.utils.tests.test_maggma.html b/docs/pymatgen.analysis.diffusion.utils.tests.test_maggma.html index 58b4bfc..207da55 100644 --- a/docs/pymatgen.analysis.diffusion.utils.tests.test_maggma.html +++ b/docs/pymatgen.analysis.diffusion.utils.tests.test_maggma.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.utils.tests.test_maggma module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.utils.tests.test_maggma module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -45,18 +45,8 @@

      Navigation

      -
      -

      pymatgen.analysis.diffusion.utils.tests.test_maggma module

      -
      -
      -maggma_stores()[source]
      -
      - -
      -
      -test(maggma_stores)[source]
      -
      - +
      +

      pymatgen.analysis.diffusion.utils.tests.test_maggma module

      @@ -65,18 +55,7 @@

      Navigation

      diff --git a/docs/pymatgen.analysis.diffusion.utils.tests.test_parse_entries.html b/docs/pymatgen.analysis.diffusion.utils.tests.test_parse_entries.html index 3a5edfe..0a146f3 100644 --- a/docs/pymatgen.analysis.diffusion.utils.tests.test_parse_entries.html +++ b/docs/pymatgen.analysis.diffusion.utils.tests.test_parse_entries.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis.diffusion.utils.tests.test_parse_entries module — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis.diffusion.utils.tests.test_parse_entries module — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,43 +46,43 @@

      Navigation

      -

      pymatgen.analysis.diffusion.utils.tests.test_parse_entries module

      +

      pymatgen.analysis.diffusion.utils.tests.test_parse_entries module

      -class ParseEntriesTest(methodName='runTest')[source]
      +class ParseEntriesTest(methodName='runTest')[source]

      Bases: TestCase

      Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

      -setUp()[source]
      +setUp()[source]

      Hook method for setting up the test fixture before exercising it.

      -test_filter_and_merge()[source]
      +test_filter_and_merge()[source]
      -test_get_all_sym_sites()[source]
      +test_get_all_sym_sites()[source]
      -test_get_inserted_on_base()[source]
      +test_get_inserted_on_base()[source]
      -test_get_insertion_energy()[source]
      +test_get_insertion_energy()[source]
      -test_process_ents()[source]
      +test_process_ents()[source]
      @@ -125,7 +125,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen.analysis.html b/docs/pymatgen.analysis.html index f490867..2b321ed 100644 --- a/docs/pymatgen.analysis.html +++ b/docs/pymatgen.analysis.html @@ -1,16 +1,16 @@ - + - + - pymatgen.analysis namespace — pymatgen-diffusion 2023.8.15 documentation + pymatgen.analysis namespace — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,9 +46,9 @@

      Navigation

      -

      pymatgen.analysis namespace

      +

      pymatgen.analysis namespace

      -

      Subpackages

      +

      Subpackages

      - +
      diff --git a/docs/pymatgen.html b/docs/pymatgen.html index 7fc1529..fab5784 100644 --- a/docs/pymatgen.html +++ b/docs/pymatgen.html @@ -1,16 +1,16 @@ - + - + - pymatgen namespace — pymatgen-diffusion 2023.8.15 documentation + pymatgen namespace — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -39,7 +39,7 @@

      Navigation

    • previous |
    • - + @@ -51,7 +51,7 @@

      Navigation

      -

      pymatgen namespace

      +

      pymatgen namespace

      @@ -75,7 +75,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen_diffusion.aimd.html b/docs/pymatgen_diffusion.aimd.html index f0a0928..eaa14ef 100644 --- a/docs/pymatgen_diffusion.aimd.html +++ b/docs/pymatgen_diffusion.aimd.html @@ -1,16 +1,16 @@ - + - + - pymatgen_diffusion.aimd package — pymatgen-diffusion 2023.8.15 documentation + pymatgen_diffusion.aimd package — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,29 +46,29 @@

      Navigation

      -

      pymatgen_diffusion.aimd package

      +

      pymatgen_diffusion.aimd package

      -

      Subpackages

      +

      Subpackages

      -

      Submodules

      +

      Submodules

      -

      pymatgen_diffusion.aimd.clustering module

      +

      pymatgen_diffusion.aimd.clustering module

      -

      pymatgen_diffusion.aimd.pathway module

      +

      pymatgen_diffusion.aimd.pathway module

      -

      pymatgen_diffusion.aimd.rdf module

      +

      pymatgen_diffusion.aimd.rdf module

      -

      pymatgen_diffusion.aimd.van_hove module

      +

      pymatgen_diffusion.aimd.van_hove module

      -

      Module contents

      +

      Module contents

      @@ -106,7 +106,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen_diffusion.html b/docs/pymatgen_diffusion.html index 81bfab7..9bc485c 100644 --- a/docs/pymatgen_diffusion.html +++ b/docs/pymatgen_diffusion.html @@ -1,16 +1,16 @@ - + - + - pymatgen_diffusion package — pymatgen-diffusion 2023.8.15 documentation + pymatgen_diffusion package — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,9 +46,9 @@

      Navigation

      -

      pymatgen_diffusion package

      +

      pymatgen_diffusion package

      -

      Subpackages

      +

      Subpackages

      @@ -112,7 +112,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/pymatgen_diffusion.neb.html b/docs/pymatgen_diffusion.neb.html index 9275cc0..a141962 100644 --- a/docs/pymatgen_diffusion.neb.html +++ b/docs/pymatgen_diffusion.neb.html @@ -1,16 +1,16 @@ - + - + - pymatgen_diffusion.neb package — pymatgen-diffusion 2023.8.15 documentation + pymatgen_diffusion.neb package — pymatgen-diffusion 2024.6.10 documentation - - - + + + @@ -35,7 +35,7 @@

      Navigation

    • modules |
    • - + @@ -46,29 +46,29 @@

      Navigation

      -

      pymatgen_diffusion.neb package

      +

      pymatgen_diffusion.neb package

      -

      Subpackages

      +

      Subpackages

      -

      Submodules

      +

      Submodules

      -

      pymatgen_diffusion.neb.full_path_mapper module

      +

      pymatgen_diffusion.neb.full_path_mapper module

      -

      pymatgen_diffusion.neb.io module

      +

      pymatgen_diffusion.neb.io module

      -

      pymatgen_diffusion.neb.pathfinder module

      +

      pymatgen_diffusion.neb.pathfinder module

      -

      pymatgen_diffusion.neb.periodic_dijkstra module

      +

      pymatgen_diffusion.neb.periodic_dijkstra module

      -

      Module contents

      +

      Module contents

      @@ -106,7 +106,7 @@

      This Page

      rel="nofollow">Show Source
      - + diff --git a/docs/search.html b/docs/search.html index 295edee..2078e09 100644 --- a/docs/search.html +++ b/docs/search.html @@ -1,22 +1,23 @@ - + - Search — pymatgen-diffusion 2023.8.15 documentation + Search — pymatgen-diffusion 2024.6.10 documentation - - - + + + - - + + + @@ -40,7 +41,7 @@

      Navigation

    • modules |
    • - + @@ -75,10 +76,7 @@

      Search

      - -
      - -
      +
      diff --git a/docs/searchindex.js b/docs/searchindex.js index d88cf3d..ff12f08 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["_themes/README", "change_log", "index", "modules", "pymatgen", "pymatgen.analysis", "pymatgen.analysis.diffusion", "pymatgen.analysis.diffusion.aimd", "pymatgen.analysis.diffusion.aimd.clustering", "pymatgen.analysis.diffusion.aimd.pathway", "pymatgen.analysis.diffusion.aimd.rdf", "pymatgen.analysis.diffusion.aimd.tests.test_clustering", "pymatgen.analysis.diffusion.aimd.tests.test_pathway", "pymatgen.analysis.diffusion.aimd.tests.test_rdf", "pymatgen.analysis.diffusion.aimd.tests.test_van_hove", "pymatgen.analysis.diffusion.aimd.van_hove", "pymatgen.analysis.diffusion.analyzer", "pymatgen.analysis.diffusion.neb", "pymatgen.analysis.diffusion.neb.full_path_mapper", "pymatgen.analysis.diffusion.neb.io", "pymatgen.analysis.diffusion.neb.pathfinder", "pymatgen.analysis.diffusion.neb.periodic_dijkstra", "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper", "pymatgen.analysis.diffusion.neb.tests.test_io", "pymatgen.analysis.diffusion.neb.tests.test_pathfinder", "pymatgen.analysis.diffusion.tests.test_analyzer", "pymatgen.analysis.diffusion.tests.test_pathfinder", "pymatgen.analysis.diffusion.utils", "pymatgen.analysis.diffusion.utils.edge_data_from_sc", "pymatgen.analysis.diffusion.utils.maggma", "pymatgen.analysis.diffusion.utils.parse_entries", "pymatgen.analysis.diffusion.utils.supercells", "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc", "pymatgen.analysis.diffusion.utils.tests.test_maggma", "pymatgen.analysis.diffusion.utils.tests.test_parse_entries", "pymatgen_diffusion", "pymatgen_diffusion.aimd", "pymatgen_diffusion.neb"], "filenames": ["_themes/README.rst", "change_log.rst", "index.rst", "modules.rst", "pymatgen.rst", "pymatgen.analysis.rst", "pymatgen.analysis.diffusion.rst", "pymatgen.analysis.diffusion.aimd.rst", "pymatgen.analysis.diffusion.aimd.clustering.rst", "pymatgen.analysis.diffusion.aimd.pathway.rst", "pymatgen.analysis.diffusion.aimd.rdf.rst", "pymatgen.analysis.diffusion.aimd.tests.test_clustering.rst", "pymatgen.analysis.diffusion.aimd.tests.test_pathway.rst", "pymatgen.analysis.diffusion.aimd.tests.test_rdf.rst", "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.rst", "pymatgen.analysis.diffusion.aimd.van_hove.rst", "pymatgen.analysis.diffusion.analyzer.rst", "pymatgen.analysis.diffusion.neb.rst", "pymatgen.analysis.diffusion.neb.full_path_mapper.rst", "pymatgen.analysis.diffusion.neb.io.rst", "pymatgen.analysis.diffusion.neb.pathfinder.rst", "pymatgen.analysis.diffusion.neb.periodic_dijkstra.rst", "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.rst", "pymatgen.analysis.diffusion.neb.tests.test_io.rst", "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.rst", "pymatgen.analysis.diffusion.tests.test_analyzer.rst", "pymatgen.analysis.diffusion.tests.test_pathfinder.rst", "pymatgen.analysis.diffusion.utils.rst", "pymatgen.analysis.diffusion.utils.edge_data_from_sc.rst", "pymatgen.analysis.diffusion.utils.maggma.rst", "pymatgen.analysis.diffusion.utils.parse_entries.rst", "pymatgen.analysis.diffusion.utils.supercells.rst", "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc.rst", "pymatgen.analysis.diffusion.utils.tests.test_maggma.rst", "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.rst", "pymatgen_diffusion.rst", "pymatgen_diffusion.aimd.rst", "pymatgen_diffusion.neb.rst"], "titles": ["krTheme Sphinx Style", "Change Log", "Introduction", "pymatgen", "pymatgen namespace", "pymatgen.analysis namespace", "pymatgen.analysis.diffusion package", "pymatgen.analysis.diffusion.aimd package", "pymatgen.analysis.diffusion.aimd.clustering module", "pymatgen.analysis.diffusion.aimd.pathway module", "pymatgen.analysis.diffusion.aimd.rdf module", "pymatgen.analysis.diffusion.aimd.tests.test_clustering module", "pymatgen.analysis.diffusion.aimd.tests.test_pathway module", "pymatgen.analysis.diffusion.aimd.tests.test_rdf module", "pymatgen.analysis.diffusion.aimd.tests.test_van_hove module", "pymatgen.analysis.diffusion.aimd.van_hove module", "pymatgen.analysis.diffusion.analyzer module", "pymatgen.analysis.diffusion.neb package", "pymatgen.analysis.diffusion.neb.full_path_mapper module", "pymatgen.analysis.diffusion.neb.io module", "pymatgen.analysis.diffusion.neb.pathfinder module", "pymatgen.analysis.diffusion.neb.periodic_dijkstra module", "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper module", "pymatgen.analysis.diffusion.neb.tests.test_io module", "pymatgen.analysis.diffusion.neb.tests.test_pathfinder module", "pymatgen.analysis.diffusion.tests.test_analyzer module", "pymatgen.analysis.diffusion.tests.test_pathfinder module", "pymatgen.analysis.diffusion.utils package", "pymatgen.analysis.diffusion.utils.edge_data_from_sc module", "pymatgen.analysis.diffusion.utils.maggma module", "pymatgen.analysis.diffusion.utils.parse_entries module", "pymatgen.analysis.diffusion.utils.supercells module", "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc module", "pymatgen.analysis.diffusion.utils.tests.test_maggma module", "pymatgen.analysis.diffusion.utils.tests.test_parse_entries module", "pymatgen_diffusion package", "pymatgen_diffusion.aimd package", "pymatgen_diffusion.neb package"], "terms": {"thi": [0, 2, 8, 9, 10, 15, 16, 19, 20, 21, 22], "repositori": [0, 2], "contain": [0, 1, 18, 20, 28, 29, 30], "kenneth": 0, "reitz": 0, "us": [0, 2, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 34], "most": [0, 18], "hi": 0, "project": [0, 29], "It": [0, 1, 9, 15, 16], "i": [0, 1, 2, 8, 9, 10, 15, 16, 18, 20, 21, 30, 31], "driv": 0, "mitsuhiko": 0, "": [0, 2, 8, 9, 15, 16, 18, 21, 28, 31], "theme": 0, "flask": 0, "relat": [0, 16], "To": [0, 15, 16], "your": [0, 20], "document": [0, 29], "follow": [0, 2, 9, 15, 16, 18, 20, 21], "guid": 0, "put": 0, "folder": 0, "_theme": 0, "doc": [0, 2], "altern": [0, 20], "you": [0, 2, 8, 9, 15, 16, 18, 20], "can": [0, 8, 9, 15, 16, 18, 20, 21, 22, 29, 30, 31], "also": [0, 20, 29, 30], "git": 0, "submodul": [0, 5, 35], "check": [0, 2, 8, 16, 20, 21, 22], "out": [0, 2, 30], "content": [0, 5], "add": [0, 2, 18, 28], "conf": 0, "py": [0, 23], "sy": 0, "path": [0, 2, 16, 18, 20, 21, 30], "append": 0, "o": [0, 10, 16, 23, 24], "abspath": 0, "html_theme_path": 0, "html_theme": 0, "kr": 0, "The": [0, 2, 8, 9, 10, 15, 16, 18, 20, 21, 28, 29, 30, 31], "exist": [0, 16, 20], "standard": [0, 16, 20], "larg": [0, 20], "kr_small": 0, "small": 0, "one": [0, 10, 15, 16, 19, 29, 30], "page": [0, 2], "intend": 0, "veri": [0, 15, 21], "addon": 0, "librari": 0, "complet": [1, 20], "migrat": [1, 2, 18, 20, 28, 29, 30, 31], "pymatgen": [1, 2], "analysi": [1, 2], "pathfind": [1, 5, 6, 17, 28, 35], "over": [1, 9, 10, 16, 31], "diffus": [1, 2, 5], "make": [1, 2, 8, 16, 20, 22], "migrationhop": [1, 5, 6, 17, 18, 20, 22, 28], "msonabl": [1, 16, 18, 20], "acrutt": 1, "fix": [1, 20], "msite": 1, "calc": [1, 31], "order": [1, 16], "hmlli": 1, "remov": [1, 20], "magmom": 1, "jmmshn": 1, "bad": 1, "releas": [1, 2], "due": 1, "error": [1, 2, 16], "manifest": 1, "diffusionanalyz": [1, 2, 5, 6, 9, 15, 16], "ha": [1, 2, 9, 16, 18], "been": [1, 2], "from": [1, 2, 8, 9, 15, 16, 18, 19, 20, 21, 28, 29, 30, 31], "analyz": [1, 5, 6, 9, 15], "more": [1, 2, 9, 15, 18, 20, 30], "self": [1, 15, 20], "suit": 1, "tool": [1, 17], "now": [1, 18], "namespac": [1, 2, 3], "packag": [1, 2, 5, 29], "pypi": 1, "should": [1, 8, 9, 16, 18, 20, 22], "import": [1, 8], "via": [1, 16, 20], "instead": [1, 16, 20], "pymatgen_diffus": 1, "py3k": 1, "cleanup": 1, "compat": 1, "neb": [1, 5, 6, 28, 31, 35], "includ": [1, 2, 9, 10, 15, 16, 20], "an": [1, 2, 11, 12, 13, 14, 15, 16, 18, 20, 22, 23, 24, 25, 26, 34], "implement": [1, 8, 10, 15, 20], "idpp": [1, 2, 20], "solver": [1, 20], "develop": 2, "materi": [2, 16, 18, 29], "virtual": [2, 20], "lab": 2, "note": [2, 9, 15, 16, 19, 20], "reli": 2, "structur": [2, 5, 6, 7, 9, 10, 15, 16, 18, 19, 20, 23, 24, 28, 29, 30, 31], "manipul": 2, "file": [2, 10, 16, 20], "io": [2, 5, 6, 17, 23, 35], "preliminari": 2, "analys": [2, 16], "In": [2, 9, 15, 20], "particular": [2, 15], "heavili": 2, "purpos": 2, "provid": [2, 8, 16, 20, 30], "other": [2, 15, 16, 18, 20], "trajectori": [2, 8, 9, 16], "extract": 2, "class": [2, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 34], "alwai": [2, 10, 15, 20, 21, 22], "scientif": 2, "work": [2, 8, 18, 20, 28, 30], "progress": 2, "pl": 2, "back": 2, "detail": [2, 20], "van": [2, 15], "hove": [2, 15], "probabl": [2, 9], "densiti": [2, 9, 15, 18, 20, 22], "cluster": [2, 5, 6, 7, 9, 35], "e": [2, 10, 15, 16, 18, 20, 30], "g": [2, 15, 16, 18, 20, 21], "k": [2, 8, 16, 20], "mean": [2, 8, 16, 18, 20], "period": [2, 8, 19, 20, 21], "boundari": [2, 8, 19, 20], "condit": [2, 8, 19, 20], "find": [2, 18, 20, 21, 31], "For": [2, 8, 16, 18, 20, 30], "all": [2, 9, 10, 15, 16, 18, 20, 21, 22, 30, 31], "modul": [2, 5], "pleas": [2, 9, 15, 16, 20], "refer": [2, 9, 10, 18, 20], "If": [2, 8, 9, 10, 15, 16, 18, 20, 30], "consid": [2, 9, 15, 16, 20], "relev": [2, 18], "public": 2, "each": [2, 8, 16, 18, 20, 21, 29, 30], "we": [2, 10, 15, 20, 21, 22, 31], "welcom": 2, "form": [2, 18, 20], "d": [2, 9, 16], "like": [2, 8, 16, 18, 20], "fork": 2, "send": 2, "u": 2, "pull": 2, "request": 2, "code": [2, 18], "fund": 2, "nation": 2, "scienc": [2, 16], "foundat": 2, "design": 2, "revolution": 2, "engin": 2, "futur": [2, 15], "dmref": 2, "program": 2, "under": [2, 18], "grant": 2, "No": [2, 16], "1436976": 2, "mit": 2, "term": [2, 9], "ar": [2, 8, 9, 10, 15, 16, 18, 19, 20, 21, 22, 28, 29, 30], "c": [2, 9, 15, 16, 23, 24], "2015": [2, 9, 15], "regent": 2, "univers": 2, "california": 2, "right": 2, "reserv": 2, "redistribut": 2, "sourc": [2, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34], "binari": 2, "without": [2, 21], "modif": [2, 19], "permit": 2, "met": 2, "1": [2, 9, 10, 15, 16, 18, 20, 21, 23, 24], "must": [2, 16, 18, 30], "retain": [2, 18], "abov": [2, 9], "notic": 2, "list": [2, 8, 9, 10, 15, 16, 18, 19, 20, 28, 29, 30, 31], "disclaim": 2, "2": [2, 9, 15, 16, 20, 21, 23, 24, 28, 30], "reproduc": 2, "distribut": [2, 9, 10, 15, 20], "3": [2, 9, 10, 16, 18, 20, 21, 23, 24, 30], "neither": 2, "name": [2, 11, 12, 13, 14, 18, 20, 22, 23, 24, 25, 26, 29, 30, 34], "holder": 2, "nor": 2, "its": [2, 16, 20], "contributor": 2, "mai": [2, 9, 16, 20], "endors": 2, "promot": 2, "product": [2, 18], "deriv": 2, "softwar": [2, 16, 20], "specif": [2, 18], "prior": 2, "written": [2, 10, 16], "permiss": 2, "BY": 2, "THE": 2, "AND": 2, "AS": 2, "ani": [2, 15, 16, 18, 20, 29], "express": 2, "OR": 2, "impli": 2, "warranti": 2, "BUT": 2, "NOT": 2, "limit": [2, 10, 21], "TO": 2, "OF": 2, "merchant": 2, "fit": [2, 16], "FOR": 2, "A": [2, 8, 9, 10, 15, 16, 18, 19, 20, 21, 23, 24], "IN": 2, "NO": 2, "event": [2, 18, 31], "shall": 2, "BE": 2, "liabl": 2, "direct": [2, 10, 15, 16], "indirect": 2, "incident": 2, "special": 2, "exemplari": 2, "consequenti": 2, "damag": 2, "procur": 2, "substitut": 2, "good": [2, 16, 20, 21], "servic": 2, "loss": 2, "data": [2, 8, 10, 15, 16, 18, 20, 28], "profit": 2, "busi": 2, "interrupt": 2, "howev": 2, "caus": 2, "ON": 2, "theori": [2, 19], "liabil": 2, "whether": [2, 10, 16, 18, 20, 28], "contract": 2, "strict": [2, 18, 30], "tort": 2, "neglig": 2, "otherwis": [2, 10, 16, 20], "aris": [2, 16], "wai": [2, 21, 22], "even": [2, 20], "IF": 2, "advis": 2, "possibl": [2, 18, 20, 31], "SUCH": 2, "copi": [2, 18, 30], "modifi": 2, "educ": 2, "research": [2, 20], "fee": 2, "agreement": 2, "herebi": 2, "paragraph": 2, "three": [2, 10, 15, 20], "appear": 2, "commerci": 2, "obtain": [2, 9, 15, 16, 18, 20, 30, 31], "contact": 2, "technologi": 2, "transfer": 2, "offic": 2, "9500": 2, "gilman": 2, "drive": 2, "mail": 2, "0910": 2, "la": 2, "jolla": 2, "ca": 2, "92093": 2, "858": 2, "534": 2, "5815": 2, "invent": 2, "ucsd": 2, "edu": [2, 19], "suppli": [2, 8, 16], "accompani": 2, "doe": [2, 11, 12, 13, 14, 18, 20, 22, 23, 24, 25, 26, 34], "warrant": 2, "oper": [2, 18], "uninterrupt": 2, "free": 2, "end": [2, 9, 16, 19, 20, 22, 28], "user": 2, "understand": 2, "wa": 2, "exclus": 2, "reason": [2, 20], "parti": 2, "lost": 2, "ITS": 2, "hereund": 2, "basi": 2, "oblig": 2, "mainten": 2, "support": [2, 10, 16, 19, 20], "updat": 2, "enhanc": [2, 9, 15], "index": [2, 8, 10, 15, 18, 21, 28], "search": [2, 21], "aimd": [5, 6, 16, 35], "kmean": [5, 6, 7, 8], "get_centroid": [5, 6, 7, 8], "get_label": [5, 6, 7, 8], "should_stop": [5, 6, 7, 8], "kmeanspbc": [5, 6, 7, 8], "get_random_centroid": [5, 6, 7, 8], "pathwai": [5, 6, 7, 17, 18, 21, 35], "probabilitydensityanalysi": [5, 6, 7, 9], "from_diffusion_analyz": [5, 6, 7, 9], "generate_stable_sit": [5, 6, 7, 9], "get_full_structur": [5, 6, 7, 9], "to_chgcar": [5, 6, 7, 9], "siteoccupancyanalyz": [5, 6, 7, 9], "site_occ": [5, 6, 7, 9], "coords_ref": [5, 6, 7, 9], "nsite": [5, 6, 7, 9], "get_average_site_occup": [5, 6, 7, 9], "rdf": [5, 6, 7, 15, 35], "radialdistributionfunct": [5, 6, 7, 10], "coordination_numb": [5, 6, 7, 10], "export_rdf": [5, 6, 7, 10], "from_speci": [5, 6, 7, 10], "get_rdf_plot": [5, 6, 7, 10], "radialdistributionfunctionfast": [5, 6, 7, 10], "get_coordination_numb": [5, 6, 7, 10], "get_one_rdf": [5, 6, 7, 10], "get_rdf": [5, 6, 7, 10], "van_hov": [5, 6, 7, 35], "evolutionanalyz": [5, 6, 7, 15], "atom_dist": [5, 6, 7, 15], "get_df": [5, 6, 7, 15], "get_min_dist": [5, 6, 7, 15], "get_pair": [5, 6, 7, 15], "plot_atomic_evolut": [5, 6, 7, 15], "plot_evolution_from_data": [5, 6, 7, 15], "plot_rdf_evolut": [5, 6, 7, 15], "vanhoveanalysi": [5, 6, 7, 15], "get_1d_plot": [5, 6, 7, 15], "get_3d_plot": [5, 6, 7, 15], "full_path_mapp": [5, 6, 17, 35], "chargebarriergraph": [5, 6, 17, 18], "get_least_chg_path": [5, 6, 17, 18], "get_summary_dict": [5, 6, 16, 17, 18], "populate_edges_with_chg_density_info": [5, 6, 17, 18], "migrationgraph": [5, 6, 17, 18, 28, 30], "add_data_to_similar_edg": [5, 6, 17, 18], "assign_cost_to_graph": [5, 6, 17, 18], "get_path": [5, 6, 17, 18, 20, 23, 24], "get_structure_from_entri": [5, 6, 17, 18], "host_structur": [5, 6, 17, 18], "only_sit": [5, 6, 17, 18], "symm_structur": [5, 6, 17, 18, 20], "unique_hop": [5, 6, 17, 18], "with_base_structur": [5, 6, 17, 18], "with_dist": [5, 6, 17, 18], "with_local_env_strategi": [5, 6, 17, 18], "almost": [5, 6, 17, 18], "check_uc_hop": [5, 6, 17, 18], "generic_groupbi": [5, 6, 17, 18], "get_hop_site_sequ": [5, 6, 17, 18], "get_only_sites_from_structur": [5, 6, 17, 18], "map_hop_sc2uc": [5, 6, 17, 18], "order_path": [5, 6, 17, 18], "mvlcinebendpointset": [5, 6, 17, 19], "mvlcinebset": [5, 6, 17, 19], "get_endpoint_dist": [5, 6, 17, 19], "get_endpoints_from_index": [5, 6, 17, 19], "chgcarpotenti": [5, 6, 17, 20], "distinctpathfind": [5, 6, 17, 20], "write_all_path": [5, 6, 17, 20], "freevolumepotenti": [5, 6, 17, 20], "idppsolv": [5, 6, 17, 20], "from_endpoint": [5, 6, 17, 20], "get_unit_vector": [5, 6, 17, 20], "run": [5, 6, 8, 10, 16, 17, 20], "get_sc_structur": [5, 6, 17, 20], "get_structur": [5, 6, 17, 20], "length": [5, 6, 17, 18, 20, 22, 30, 31], "write_path": [5, 6, 17, 20], "mixedpotenti": [5, 6, 17, 20], "nebpathfind": [5, 6, 17, 20], "imag": [5, 6, 10, 15, 16, 17, 18, 20, 21], "interpol": [5, 6, 17, 20], "plot_imag": [5, 6, 17, 20], "string_relax": [5, 6, 17, 20], "staticpotenti": [5, 6, 17, 20], "gaussian_smear": [5, 6, 17, 20], "get_v": [5, 6, 17, 20], "normal": [5, 6, 17, 20], "rescale_field": [5, 6, 17, 20], "periodic_dijkstra": [5, 6, 17, 35], "get_optimal_pathway_rev": [5, 6, 17, 21], "periodic_dijkstra_on_sgraph": [5, 6, 17, 21], "util": [5, 6], "edge_data_from_sc": [5, 6, 27], "add_edge_data_from_sc": [5, 6, 27, 28], "get_uc_po": [5, 6, 27, 28], "get_unique_hop": [5, 6, 27, 28], "mh_eq": [5, 6, 27, 28], "maggma": [5, 6, 27], "get_entries_from_db": [5, 6, 27, 29], "parse_entri": [5, 6, 27], "get_inserted_on_bas": [5, 6, 27, 30], "get_insertion_energi": [5, 6, 27, 30], "get_matched_structure_map": [5, 6, 27, 30], "get_sym_migration_ion_sit": [5, 6, 27, 30], "process_entri": [5, 6, 27, 30], "supercel": [5, 6, 10, 15, 18, 20, 27, 28, 30], "get_sc_fromstruct": [5, 6, 27, 31], "get_start_end_structur": [5, 6, 27, 31], "as_dict": [5, 6, 16], "export_msdt": [5, 6, 16], "from_dict": [5, 6, 16], "from_fil": [5, 6, 16, 20], "from_structur": [5, 6, 16], "from_vasprun": [5, 6, 16], "get_drift_corrected_structur": [5, 6, 16], "get_framework_rms_plot": [5, 6, 16], "get_msd_plot": [5, 6, 16], "plot_msd": [5, 6, 16], "fit_arrheniu": [5, 6, 16], "get_arrhenius_plot": [5, 6, 16], "get_conversion_factor": [5, 6, 16], "get_diffusivity_from_msd": [5, 6, 16], "get_extrapolated_conduct": [5, 6, 16], "get_extrapolated_diffus": [5, 6, 16], "simul": [7, 9, 10, 15, 16, 20, 31], "algorithm": [8, 9, 20], "determin": [8, 9, 16, 18, 20], "centroid": 8, "adapt": 8, "exampl": [8, 16, 18], "atom": [8, 10, 15, 16, 20, 31], "posit": [8, 16, 20, 28, 30], "md": [8, 9, 10, 15, 16], "max_iter": 8, "int": [8, 10, 15, 16, 18, 19, 20, 21, 28, 31], "1000": [8, 16, 20], "base": [8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 25, 26, 30, 34], "object": [8, 9, 10, 15, 16, 18, 19, 20, 21, 22, 28, 30, 31], "simpl": 8, "paramet": [8, 9, 10, 15, 16, 18, 19, 20, 21, 28, 29, 30, 31], "maximum": [8, 10, 15, 16, 18, 20, 31], "number": [8, 9, 10, 15, 16, 18, 20, 30, 31], "iter": [8, 16, 20, 21, 31], "algo": [8, 20], "point": [8, 9, 10, 15, 16, 19, 20, 21, 22], "initial_centroid": 8, "none": [8, 10, 15, 16, 18, 20, 21, 28, 30], "ndarrai": [8, 16], "mxn": 8, "where": [8, 9, 16, 20, 21, 30], "m": [8, 16], "featur": 8, "n": [8, 9, 30], "np": [8, 10, 15, 16], "arrai": [8, 9, 10, 15, 16, 18], "initi": [8, 9, 10, 15, 16, 20, 28, 31], "guess": [8, 16, 20], "random": 8, "return": [8, 9, 10, 15, 16, 18, 19, 20, 21, 28, 30, 31], "final": [8, 20, 28, 31], "label": [8, 10, 15, 18, 22, 28], "ss": 8, "sum": [8, 20], "squar": [8, 16], "distanc": [8, 9, 15, 19, 20], "type": [8, 9, 15, 16, 18, 19, 20, 21, 30, 31], "static": [8, 15, 18, 20], "geometr": [8, 20, 31], "have": [8, 11, 12, 13, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 34], "empti": [8, 18, 31], "randomli": 8, "re": [8, 28], "element": [8, 10, 15, 16, 19, 20], "dataset": 8, "chose": 8, "closest": 8, "old_centroid": 8, "stop": [8, 16, 21], "old": 8, "thu": 8, "far": 8, "lattic": [8, 16, 18, 20, 23, 24, 31], "version": 8, "pbc": [8, 23, 24], "metric": 8, "chang": [8, 16, 20], "well": [8, 20], "new": [8, 16, 20, 30], "fraction": [8, 9, 16, 18, 30], "coordin": [8, 9, 10, 20], "gener": [8, 9, 16, 18, 19, 20, 31], "interv": [9, 15], "0": [9, 10, 15, 18, 20, 21, 23, 24, 30, 31], "5": [9, 20, 23, 24, 30], "speci": [9, 10, 15, 16, 18, 20, 30], "li": [9, 10, 15, 16, 18, 20, 24, 30], "na": [9, 10, 15, 23], "comput": [9, 10, 15, 16], "time": [9, 15, 16], "averag": [9, 10, 15, 16], "select": [9, 15], "uniform": 9, "grid": [9, 10, 15, 20], "int_": 9, "omega": 9, "3rp": 9, "r": [9, 15, 20], "cite": [9, 15, 16, 20], "paper": [9, 15, 16], "zhu": [9, 15], "z": [9, 15, 16], "chu": [9, 15], "h": [9, 10, 15, 16, 20], "deng": [9, 15], "ong": [9, 15, 16], "p": [9, 15, 16, 23, 24], "role": [9, 15], "interstiti": [9, 15, 20], "dopant": [9, 15], "conduct": [9, 15, 16], "cubic": [9, 15, 31], "na3ps4": [9, 15], "superion": [9, 15, 16], "conductor": [9, 15, 16], "chem": [9, 15, 20], "mater": [9, 15], "27": [9, 15, 23, 24], "pp": [9, 15], "8318": [9, 15], "8325": [9, 15], "param": [9, 18, 19, 20, 30], "crystal": 9, "ionic": [9, 16], "store": 9, "ntimestep": 9, "nion": 9, "b": [9, 15, 18, 23, 24], "compon": [9, 16, 20], "float": [9, 10, 15, 16, 18, 20, 30, 31], "between": [9, 16, 18, 19, 20], "two": [9, 16, 19, 20, 28], "nearest": 9, "angstrom": [9, 10, 15, 18, 20], "str": [9, 10, 15, 16, 18, 20, 21, 28, 29, 30], "interest": [9, 10, 15, 20], "classmethod": [9, 10, 16, 18, 20], "diffusion_analyz": [9, 15], "creat": [9, 11, 12, 13, 14, 16, 22, 23, 24, 25, 26, 30, 31, 34], "p_ratio": 9, "25": [9, 20, 23, 24], "d_cutoff": 9, "set": [9, 10, 14, 15, 16, 18, 19, 20, 21, 22, 24, 34], "low": 9, "energi": [9, 16, 18, 20, 30], "site": [9, 16, 18, 19, 20, 22, 28, 30], "function": [9, 10, 15, 18, 20, 21, 28, 29, 30, 31], "given": [9, 10, 15, 16, 18, 20, 21, 28, 30], "threshold": [9, 20], "higher": 9, "than": [9, 15, 16, 20, 30], "further": 9, "hierarch": 9, "method": [9, 10, 11, 12, 13, 14, 16, 20, 22, 23, 24, 25, 26, 34], "closer": 9, "cutoff": [9, 18, 20], "converg": [9, 16, 20], "slowli": 9, "fast": [9, 10], "shallow": 9, "landscap": 9, "slow": [9, 15, 20], "which": [9, 15, 16, 18, 20], "stabl": 9, "stable_sit": 9, "attribut": [9, 28], "nx3": 9, "numpi": [9, 10, 16, 20], "filenam": [9, 10, 16, 20], "chgcar": [9, 20], "vasp": [9, 16, 19, 20], "save": [9, 15, 18], "format": [9, 10, 16, 18], "visual": [9, 20], "vesta": [9, 20], "occup": 9, "shortest": [9, 15], "scheme": 9, "x": [9, 10, 15, 16], "associ": [9, 10, 15, 20], "same": [9, 10, 16, 18, 20, 22, 28, 30], "sequenc": [9, 16, 18], "indic": [9, 10, 15, 18, 19, 20, 21, 30], "pmg_structur": [9, 10, 20], "n_": 9, "step": [9, 15, 16, 20], "nest": 9, "get": [9, 10, 15, 16, 18, 20, 28, 29, 30], "subset": [9, 15], "reference_indic": 10, "ngrid": [10, 15], "101": [10, 15, 24], "rmax": [10, 15], "10": [10, 15, 16, 20, 23, 24, 31], "cell_rang": [10, 15], "sigma": [10, 15], "calcul": [10, 15, 16, 17, 18, 19, 20, 28, 30, 31], "radial": [10, 15], "composit": 10, "allow": [10, 20, 28, 31], "ensembl": 10, "minimum": [10, 15, 16, 20, 31], "zero": [10, 15], "rang": [10, 15, 16, 20], "translat": [10, 15, 18, 30], "vector": [10, 15, 18, 20, 31], "default": [10, 15, 16, 18, 20, 21], "adjac": [10, 15], "cell": [10, 15, 18, 20, 21, 22, 28, 30, 31], "along": [10, 15, 20], "smear": [10, 15, 20], "gaussian": [10, 15, 20], "option": [10, 15, 16, 18, 20, 21], "properti": [10, 18, 20], "output": [10, 18, 20], "csv": [10, 15, 16], "dat": [10, 16], "extens": [10, 16], "assum": [10, 16, 18, 19, 20, 30], "tupl": [10, 15, 20, 21, 28, 31], "reference_speci": [10, 15], "string": [10, 15, 16, 18, 20], "symbol": [10, 15], "eg": 10, "pair": [10, 15, 20, 21, 30], "water": 10, "xlim": 10, "8": [10, 15, 23, 24], "ylim": 10, "005": [10, 23], "loc_peak": 10, "bool": [10, 16, 18, 20, 28, 31], "fals": [10, 16, 18, 20, 28, 31], "plot": [10, 15, 16], "legend": 10, "current": [10, 16, 18], "ax": [10, 15], "y": [10, 16], "peak": 10, "true": [10, 18, 20, 22, 23, 24, 28, 30], "core": [10, 15, 16, 20, 28, 31], "rmin": 10, "n_job": 10, "linspac": 10, "minim": [10, 20], "radiu": [10, 18, 22], "maxim": 10, "smooth": [10, 16, 20], "cpu": 10, "process": [10, 15, 16, 20, 30], "ref_speci": 10, "is_averag": 10, "just": [10, 20], "singl": [10, 18, 30], "center": 10, "take": [10, 16, 18, 20, 28, 30], "valu": [10, 18, 20], "kmeanspbctest": 11, "methodnam": [11, 12, 13, 14, 22, 23, 24, 25, 26, 34], "runtest": [11, 12, 13, 14, 22, 23, 24, 25, 26, 34], "testcas": [11, 12, 13, 14, 22, 23, 24, 34], "instanc": [11, 12, 13, 14, 22, 23, 24, 25, 26, 30, 34], "when": [11, 12, 13, 14, 16, 18, 22, 23, 24, 25, 26, 34], "execut": [11, 12, 13, 14, 22, 23, 24, 25, 26, 34], "rais": [11, 12, 13, 14, 22, 23, 24, 25, 26, 34], "valueerror": [11, 12, 13, 14, 22, 23, 24, 25, 26, 34], "specifi": [11, 12, 13, 14, 15, 18, 22, 23, 24, 25, 26, 34], "kmeanstest": 11, "probabilitydensitytest": 12, "test_generate_stable_sit": 12, "test_prob": 12, "test_probability_classmethod": 12, "test_to_chgcar": 12, "siteoccupancytest": 12, "test_site_occup": 12, "test_site_occupancy_classmethod": 12, "rdftest": [13, 14], "test_rdf_coordination_numb": [13, 14], "evolutionanalyzertest": 14, "test_get_df": 14, "setup": [14, 22, 24, 34], "hook": [14, 22, 24, 34], "up": [14, 16, 20, 21, 22, 24, 34], "fixtur": [14, 22, 24, 34], "befor": [14, 16, 20, 22, 24, 34], "exercis": [14, 22, 24, 34], "test_raises_valueerror_if_reference_species_not_in_structur": 14, "test_raises_valueerror_if_sigma_is_not_posit": 14, "test_raises_valueerror_if_species_not_in_structur": 14, "test_raises_valueerror_if_ngrid_is_less_than_2": 14, "test_rdf": 14, "test_rdf_two_species_coordination_numb": 14, "vanhovetest": 14, "correl": [15, 20], "time_step": [15, 16], "evolut": 15, "dure": [15, 20], "some": [15, 20, 30], "quantit": 15, "character": 15, "tang": 15, "lin": 15, "wang": 15, "chen": 15, "zheng": 15, "probe": 15, "solid": 15, "interfaci": 15, "reaction": 15, "state": [15, 16], "sodium": 15, "ion": [15, 16, 18, 20, 28, 29, 30], "batteri": 15, "first": [15, 16, 18, 19, 20, 30], "principl": [15, 16], "2018": 15, "30": [15, 16], "163": 15, "173": 15, "input": [15, 16, 18, 19, 20, 30], "correct": [15, 16], "f": [15, 16], "potim": 15, "incar": 15, "window": 15, "count": 15, "within": [15, 16, 18, 20, 28, 31], "unit": [15, 16, 18, 20, 22, 23, 28, 31], "choos": 15, "concentr": 15, "func": 15, "callabl": [15, 18, 21], "save_csv": 15, "kwarg": [15, 16, 18, 19, 20], "frame": 15, "would": [15, 16, 20], "hundr": 15, "pars": [15, 16, 18], "functiontyp": 15, "spectrum": 15, "requir": [15, 16, 19], "get_atomic_distribut": 15, "extra": 15, "datafram": 15, "df": 15, "panda": 15, "column": 15, "tol": [15, 20, 31], "1e": [15, 20, 31], "less": [15, 20, 31], "throughout": 15, "tabl": 15, "cmap": 15, "matplotlib": [15, 16], "color": 15, "linearsegmentedcolormap": 15, "map": [15, 18, 30], "heat": 15, "extern": 15, "_subplot": 15, "axessubplot": 15, "x_label": 15, "cb_label": 15, "listedcolormap": 15, "might": [15, 18, 21], "bar": [15, 16], "cmocean": 15, "cm": [15, 16, 19], "thermal": 15, "recommend": [15, 20], "avg_nstep": [15, 16], "50": 15, "step_skip": [15, 16], "part": 15, "distinct": [15, 20], "gd": 15, "t": [15, 16, 28, 30, 31], "t0": 15, "statist": [15, 16], "skip": 15, "defin": [15, 16, 18, 20, 30], "resolut": 15, "reduc": [15, 16], "onli": [15, 16, 18, 20, 30], "those": [15, 16, 18, 20], "ignor": [15, 28], "mode": [15, 16, 18, 20], "moment": 15, "addit": [15, 18, 20, 21], "seaborn": 15, "color_plaett": 15, "set1": 15, "figsiz": 15, "12": [15, 23, 24], "3d": 15, "argument": [15, 16], "perform": [16, 20], "displac": [16, 20], "etc": [16, 18], "mo": 16, "richard": 16, "w": 16, "miara": 16, "l": 16, "lee": 16, "ceder": [16, 20], "2013": 16, "phase": [16, 18, 30], "stabil": 16, "electrochem": 16, "li10": 16, "1mp2x12": 16, "ge": 16, "si": 16, "sn": 16, "al": [16, 20], "se": 16, "famili": 16, "environment": 16, "6": [16, 20, 23, 24], "148": 16, "doi": 16, "1039": 16, "c2ee23355j": 16, "2012": 16, "studi": 16, "li10gep2s12": 16, "lithium": 16, "super": [16, 28], "chemistri": 16, "24": 16, "15": [16, 23], "17": [16, 20, 23], "1021": 16, "cm203303y": 16, "temperatur": 16, "max": 16, "min_ob": 16, "c_rang": 16, "c_range_include_edg": 16, "constructor": 16, "meant": 16, "pre": 16, "conveni": [16, 20], "see": [16, 18, 19, 20], "matrix": [16, 20, 30], "below": 16, "expect": 16, "2dt": 16, "dimension": 16, "reliabl": [16, 20], "estim": 16, "least": [16, 18, 20], "regress": 16, "msd": 16, "against": 16, "slope": 16, "tradit": 16, "weight": [16, 20, 21], "shape": [16, 20], "axi": 16, "kelvin": 16, "measur": 16, "sampl": 16, "frequenc": 16, "multipli": 16, "real": [16, 20], "what": 16, "tri": 16, "origin": [16, 18, 20], "subject": 16, "observ": 16, "varianc": 16, "accordingli": 16, "constant": [16, 20], "timestep": 16, "min_step": 16, "quantiti": 16, "v": [16, 20], "dt": 16, "total_run_tim": 16, "so": [16, 18, 20, 21, 29, 30, 31], "uncorrel": 16, "appli": [16, 20, 30], "usual": [16, 20], "pretti": [16, 20], "everi": 16, "npt": 16, "nvt": 16, "region": 16, "start": [16, 18, 20, 31], "collect": 16, "\u00e5": 16, "edg": [16, 18, 20, 21, 28], "These": [16, 28], "construct": [16, 18, 20, 29, 31], "dict": [16, 18, 21, 30], "write": [16, 19, 20], "easili": 16, "represent": [16, 18, 31], "filepath": 16, "ncore": 16, "initial_disp": 16, "initial_structur": 16, "vasprun": 16, "xml": 16, "done": 16, "sequenti": 16, "thei": [16, 20, 28], "run1": 16, "run2": 16, "run3": 16, "pass": [16, 18, 20], "multiprocess": 16, "speed": 16, "consider": 16, "serial": 16, "want": [16, 20], "multipl": [16, 29], "ionic_step_skip": 16, "inconsist": 16, "result": 16, "restrict": 16, "sometim": 16, "need": [16, 18, 20, 29, 30], "ad": [16, 18, 28], "sens": 16, "typic": 16, "both": [16, 18, 20], "variabl": [16, 28], "stipul": 16, "_": 16, "suffici": 16, "strictur": 16, "drift": 16, "memori": 16, "usag": 16, "huge": 16, "don": [16, 31], "often": [16, 21], "onc": 16, "faster": [16, 31], "after": 16, "plt": 16, "granular": 16, "200": 16, "matching_": 16, "rm": 16, "framework": [16, 18], "melt": 16, "especi": 16, "move": [16, 20, 21], "paddl": 16, "wheel": 16, "similar": [16, 22, 29], "mechan": [16, 20], "show": 16, "doesn": 16, "constitut": 16, "pyplot": 16, "made": 16, "match": [16, 18, 20, 28, 29, 30], "disord": 16, "secondari": 16, "mobil": [16, 18], "present": [16, 18, 31], "graph": [16, 18, 21, 22], "By": 16, "mscd": 16, "include_msd_t": 16, "include_mscd_t": 16, "summari": [16, 23, 24], "inform": [16, 18], "charg": [16, 18, 20, 22], "individu": 16, "overal": 16, "temp": 16, "ea": 16, "arrheniu": 16, "exp": 16, "kt": 16, "diffusivity_error": 16, "keyword": [16, 19], "arg": [16, 19], "do": 16, "convers": [16, 20], "factor": 16, "convert": 16, "oxid": 16, "avail": 16, "els": 16, "valenc": 16, "electron": 16, "esp": 16, "main": 16, "group": [16, 18, 19, 22, 29, 30], "deviat": [16, 20], "correspond": [16, 28], "new_temp": 16, "extrapol": 16, "desir": 16, "inlcud": 17, "migraiton": 18, "m_graph": 18, "structuregraph": [18, 21], "potential_field": 18, "volumetricdata": 18, "potential_data_kei": 18, "host": [18, 20, 28, 30], "constructur": 18, "cost": [18, 21], "assign": 18, "describ": 18, "field": [18, 20, 21], "metast": [18, 30], "migrating_speci": [18, 20], "symprec": [18, 20, 30], "symmetri": [18, 20, 28, 30], "precis": [18, 20], "equival": [18, 20, 28, 30], "intercol": 18, "through": [18, 20, 28], "amount": 18, "hop": [18, 22, 28, 31], "add_kei": 18, "dictionari": [18, 21, 30], "databas": [18, 29], "tube_radiu": 18, "tube": [18, 22], "vac_mod": [18, 20, 31], "python": 18, "handl": 18, "migratrion": 18, "node": [18, 20, 21], "occupi": 18, "connect": [18, 20], "decor": [18, 30], "togeth": 18, "structure_is_bas": 18, "network": [18, 20], "vacanc": [18, 20], "target_label": 18, "m_hop": 18, "insert": [18, 29, 30], "uniqu": [18, 22, 28], "differ": [18, 20], "flip": 18, "cost_kei": 18, "hop_dist": 18, "read": [18, 19], "popul": [18, 21, 22], "kei": [18, 21, 28], "sc": [18, 28, 30], "here": 18, "max_val": 18, "100000": 18, "flip_hop": 18, "basic": [18, 20], "idea": 18, "endpoint": [18, 19, 20, 23], "p1": 18, "outsid": [18, 23], "ask": 18, "either": [18, 20], "neighbor": 18, "uc": [18, 28], "filter": 18, "isit": [18, 20, 28, 31], "esit": [18, 20, 28, 31], "coher": 18, "orient": 18, "entri": [18, 28, 29, 30], "computedstructureentri": [18, 30], "migrating_ion_entri": [18, 30], "computedentri": [18, 30], "insertion_energi": 18, "mixtur": 18, "metal": [18, 30], "spacegroupanalyz": [18, 30], "ltol": [18, 30], "toler": [18, 20, 30], "structurematch": [18, 28, 30], "stol": [18, 30], "angle_tol": [18, 30], "angl": [18, 23, 24, 30], "fro": [18, 30], "only_single_cat": [18, 30], "cation": [18, 30], "accur": [18, 30], "use_strict_tol": [18, 30], "halv": [18, 30], "rank": [18, 30], "enough": [18, 21, 22], "added_kei": 18, "non": 18, "symmetrizedstructur": [18, 20], "symmetr": [18, 20, 28], "item": 18, "base_structur": 18, "max_dist": 18, "nn": 18, "strategi": 18, "min": [18, 20], "until": [18, 20, 31], "1d": [18, 20], "percol": [18, 20], "nearneighbor": 18, "local": [18, 20], "environ": 18, "equal": [18, 28], "sc_hop": 18, "uc_hop": 18, "2x2x2": 18, "equilval": 18, "lenght": 18, "list_in": 18, "comp": 18, "built": 18, "eq": 18, "unsort": 18, "compar": 18, "hop_list": 18, "start_u": 18, "print": 18, "track": 18, "full_structur": 18, "mg": [18, 28], "onto": [18, 30], "exactli": 18, "later": 18, "45": [18, 24], "55": [18, 24], "9": [18, 23, 24], "img": 18, "100": [18, 20], "invers": 18, "account": 18, "case": [18, 20], "switch": 18, "accord": 18, "iindex": 18, "eindex": 18, "previou": 18, "fiel": 19, "mitrelaxset": 19, "relax": [19, 20], "vaspinputset": 19, "mitnebset": 19, "mavrl": 19, "test": 19, "ci": 19, "vtst": 19, "henkelman": [19, 20], "http": 19, "utexa": 19, "vtsttool": 19, "ep_0": 19, "ep_1": 19, "second": 19, "dist": 19, "site_indic": 19, "perfect": 19, "potenti": 20, "max_path_length": 20, "perc_mod": 20, "info": 20, "known": 20, "mainli": 20, "becaus": 20, "fname": 20, "nimag": 20, "hydrogen": 20, "placehold": 20, "chosen": 20, "smallest": [20, 31], "extrem": 20, "per": [20, 29], "passthrough": 20, "struct": 20, "dim": 20, "lower": 20, "farther": 20, "awai": [20, 21], "size": [20, 30, 31], "depend": [20, 29], "improv": 20, "about": 20, "smidstrup": 20, "et": 20, "j": 20, "phy": 20, "140": 20, "214106": 20, "2014": 20, "sort_tol": 20, "interpolate_lattic": 20, "linear": 20, "increas": 20, "vec": 20, "maxit": 20, "05": [20, 24, 31], "gtol": 20, "001": 20, "step_siz": 20, "max_disp": 20, "spring_const": 20, "manner": 20, "total": [20, 30], "forc": 20, "compris": 20, "spring": 20, "approach": 20, "113": 20, "9901": 20, "2000": 20, "consecut": 20, "absolut": 20, "yield": 20, "call": [20, 21], "regular": 20, "host_symm_struct": 20, "repres": 20, "spacegroup": [20, 28], "min_atom": [20, 31], "80": [20, 31], "max_atom": [20, 31], "240": [20, 31], "min_length": [20, 31], "toleranac": [20, 31], "identifi": [20, 31], "base_struct": [20, 30, 31], "fulli": 20, "intercal": 20, "idpp_kwarg": 20, "nebpath": 20, "were": 20, "li4fe4p4o16": 20, "formula": 20, "li3fe4p4o16": 20, "while": 20, "life4p4o16": 20, "better": 20, "easier": 20, "subsequ": 20, "easi": 20, "view": 20, "coeffici": 20, "extend": 20, "superclass": 20, "mix": 20, "start_struct": 20, "end_struct": 20, "relax_sit": 20, "n_imag": 20, "20": 20, "mid_struct": 20, "elast": 20, "band": 20, "respect": 20, "whose": 20, "ziqin": 20, "rong": 20, "daniil": 20, "kitchaev": 20, "pieremanuel": 20, "canepa": 20, "wenxuan": 20, "huang": 20, "gerbrand": 20, "journal": 20, "chemic": 20, "physic": 20, "145": 20, "7": [20, 23, 24], "074112": 20, "help": 20, "s1": [20, 30], "s2": [20, 30], "except": 20, "ones": 20, "mid": 20, "still": 20, "outfil": 20, "poscar": 20, "dr": 20, "min_it": 20, "max_it": 20, "10000": 20, "max_tol": 20, "5e": [20, 24], "06": [20, 24], "found": [20, 21], "counterbalanc": 20, "respons": 20, "minima": 20, "kept": 20, "discret": 20, "anywher": 20, "40": 20, "seem": 20, "ratio": 20, "diverg": 20, "gradient": 20, "seen": 20, "optim": [20, 21], "exit": 20, "unconverg": 20, "termin": [20, 31], "strongli": 20, "pot": 20, "rescal": 20, "volumentr": 20, "isotrop": 20, "width": 20, "necessari": 20, "avoid": 20, "narrow": 20, "although": 20, "gga": 20, "rel": 20, "anywai": 20, "obei": 20, "cartesian": 20, "new_dim": 20, "dft": 20, "strang": 20, "skew": 20, "too": 20, "fine": 20, "coars": 20, "give": [20, 31], "dijkstra": 21, "path_par": 21, "leaf_nod": 21, "leaf": 21, "networkx": 21, "max_imag": 21, "target_reach": 21, "lambda": 21, "lowest": 21, "sinc": [21, 30], "mani": [21, 30, 31], "target": 21, "how": 21, "to_jimag": 21, "across": 21, "site_index": 21, "jimag": 21, "top": 21, "heap": 21, "miss": 21, "quickli": 21, "best": [21, 31], "parent": 21, "best_an": 21, "sgraph": 21, "chargebarriergraphtest": 22, "test_get_summary_dict": 22, "test_integr": 22, "saniti": 22, "long": 22, "diagonali": 22, "turn": 22, "cover": 22, "entir": [22, 30], "test_populate_edges_with_chg_density_info": 22, "valid": 22, "mn6o5f7": 22, "migrationgraphcomplextest": 22, "test_add_data_to_similar_edg": 22, "test_assign_cost_to_graph": 22, "test_get_key_in_path": 22, "test_get_path": [22, 24], "test_group_and_label_hop": 22, "similiarli": 22, "test_not_matching_first": 22, "test_order_path": 22, "test_periodic_dijkstra": 22, "test_unique_hops_dict": 22, "inequilval": 22, "migrationgraphfromentriestest": 22, "test_m_graph_construct": 22, "test_m_graph_from_entries_fail": 22, "migrationgraphsimpletest": 22, "test_get_pos_and_migration_hop": 22, "sure": 22, "mvlcinebendpointsettest": 23, "abc": [23, 24], "815000056846058": 23, "131710473490111": 23, "61": [23, 24], "14080369885537": 23, "59": [23, 24], "9999995733517": 23, "volum": [23, 24], "510": 23, "2218449146199": 23, "4": [23, 24], "4075": 23, "634014": 23, "089343": 23, "582": 23, "periodicsit": [23, 24, 28, 31], "zr": 23, "811e": 23, "18": 23, "4774": 23, "6457": [23, 24], "06296": 23, "422e": 23, "089": 23, "268": 23, "1457": 23, "563": 23, "549e": 23, "105": [23, 24], "3543": 23, "937": 23, "314": 23, "8543": [23, 24], "437": 23, "837": 23, "634": [23, 24], "686": [23, 24], "4584": 23, "0416": 23, "75": [23, 24], "122": 23, "86": 23, "285": 23, "13": 23, "04": 23, "895": [23, 24], "9584": 23, "315": [23, 24], "5416": 23, "72": 23, "696": 23, "14": 23, "924": 23, "495": [23, 24], "8797": 23, "9132": 23, "7387": 23, "16": 23, "7121": 23, "9569": [23, 24], "451": 23, "11": [23, 24], "32": 23, "133": 23, "995": 23, "2121": 23, "4132": 23, "621": 23, "3797": 23, "712": [23, 24], "215": 23, "6581": 23, "505": [23, 24], "1203": 23, "0868": 23, "558": [23, 24], "2879": 23, "039": [23, 24], "449": 23, "7879": 23, "5868": 23, "74": [23, 24], "6203": 23, "76": 23, "9463": 23, "46": 23, "798": 23, "564": 23, "7787": 23, "2372": 23, "581": 23, "36": [23, 24], "4201": 23, "6342": 23, "773": [23, 24], "26": 23, "589": 23, "064": 23, "9201": 23, "7372": 23, "827": 23, "2787": 23, "368": 23, "784": 23, "436": 23, "2213": 23, "7628": 23, "999": [23, 24], "5799": 23, "64": 23, "093": 23, "993": [23, 24], "936": 23, "0799": 23, "2628": 23, "454": 23, "7213": 23, "99": [23, 24], "test_incar": 23, "test_incar_user_set": 23, "mvlcinebsettest": 23, "35e": 23, "269e": 23, "096e": 23, "791": 23, "utilitytest": 23, "test_get_endpoint_dist": 23, "test_get_endpoints_from_index": 23, "path_str": [23, 24], "dirnam": [23, 24], "distinctpathfindertest": 24, "pymatgentest": [24, 25, 26], "test_max_path_length": 24, "idppsolvertest": 24, "final_struct": 24, "411723299877": 24, "0783517723596": 24, "47759961582329": 24, "90": 24, "1191": 24, "8693444977544": 24, "185": 24, "182": 24, "417": 24, "498": 24, "5118": 24, "2551": 24, "227": 24, "94": 24, "321": 24, "502": 24, "9882": 24, "2449": 24, "07": 24, "085": 24, "4977": 24, "7475": 24, "23": 24, "051": 24, "132": 24, "5023": 24, "501": 24, "7525": 24, "0005125": 24, "018": 24, "004327": 24, "922e": 24, "2499": 24, "0004565": 24, "41": 24, "021": 24, "734": 24, "2501": 24, "4995": 24, "058": 24, "003074": 24, "9995": 24, "0003243": 24, "005658": 24, "059": 24, "736": 24, "0005434": 24, "4997": 24, "206": 24, "02": 24, "369": 24, "108": 24, "008545": 24, "9997": 24, "9989": 24, "0009016": 24, "003162": 24, "738": 24, "0003037": 24, "9996": 24, "043": 24, "0004624": 24, "5004": 24, "879e": 24, "002981": 24, "053": 24, "73": 24, "0002863": 24, "5011": 24, "4991": 24, "fe": 24, "141": 24, "511": 24, "487": 24, "7819": 24, "1251": 24, "2624": 24, "506": 24, "228": 24, "1247": 24, "7626": 24, "569": 24, "472": 24, "778": 24, "6266": 24, "2608": 24, "137": 24, "545": 24, "235": 24, "7816": 24, "6247": 24, "7633": 24, "947": 24, "613": 24, "283": 24, "1243": 24, "4867": 24, "938": 24, "504": 24, "355": 24, "2822": 24, "1245": 24, "9871": 24, "957": 24, "578": 24, "609": 24, "284": 24, "6274": 24, "4863": 24, "96": 24, "565": 24, "381": 24, "2842": 24, "6264": 24, "9898": 24, "528": 24, "252": 24, "2181": 24, "3749": 24, "2376": 24, "271": 24, "533": 24, "988": 24, "3753": 24, "7374": 24, "312": 24, "267": 24, "222": 24, "8734": 24, "2392": 24, "274": 24, "57": 24, "982": 24, "2184": 24, "8753": 24, "7367": 24, "465": 24, "537": 24, "1261": 24, "717": 24, "3757": 24, "0133": 24, "473": 24, "535": 24, "861": 24, "7178": 24, "3755": 24, "5129": 24, "455": 24, "54": 24, "1303": 24, "716": 24, "8726": 24, "01374": 24, "452": 24, "836": 24, "7158": 24, "8736": 24, "5102": 24, "198": 24, "507": 24, "5953": 24, "1248": 24, "0396": 24, "211": 24, "514": 24, "111": 24, "5966": 24, "1253": 24, "5393": 24, "196": 24, "548": 24, "3633": 24, "5951": 24, "6249": 24, "03833": 24, "22": 24, "5974": 24, "6221": 24, "5402": 24, "9887": 24, "09496": 24, "2099": 24, "9865": 24, "513": 24, "727": 24, "09475": 24, "7098": 24, "9818": 24, "544": 24, "0943": 24, "6246": 24, "2102": 24, "9911": 24, "546": 24, "09519": 24, "6248": 24, "7109": 24, "214": 24, "532": 24, "364": 24, "4047": 24, "3752": 24, "4604": 24, "526": 24, "4034": 24, "3747": 24, "9607": 24, "216": 24, "376": 24, "4049": 24, "8751": 24, "4617": 24, "191": 24, "097": 24, "4026": 24, "8779": 24, "9598": 24, "423": 24, "749": 24, "905": 24, "2901": 24, "425": 24, "489": 24, "9053": 24, "7902": 24, "43": 24, "746": 24, "9057": 24, "8754": 24, "2898": 24, "421": 24, "479": 24, "9048": 24, "8752": 24, "7891": 24, "223": 24, "527": 24, "577": 24, "5977": 24, "1264": 24, "3775": 24, "209": 24, "5964": 24, "1252": 24, "8774": 24, "275": 24, "44": 24, "601": 24, "6027": 24, "616": 24, "38": 24, "212": 24, "293": 24, "875": 24, "9902": 24, "512": 24, "0951": 24, "372": 24, "9889": 24, "264": 24, "09498": 24, "8719": 24, "529": 24, "09506": 24, "3724": 24, "9929": 24, "09536": 24, "6243": 24, "873": 24, "189": 24, "161": 24, "4023": 24, "3736": 24, "1225": 24, "202": 24, "901": 24, "4036": 24, "3748": 24, "6226": 24, "68": 24, "3973": 24, "884": 24, "923": 24, "625": 24, "422": 24, "213": 24, "9049": 24, "128": 24, "953": 24, "6281": 24, "1276": 24, "419": 24, "58": 24, "943": 24, "9046": 24, "8757": 24, "627": 24, "968": 24, "379": 24, "9574": 24, "1455": 24, "966": 24, "522": 24, "119": 24, "9572": 24, "126": 24, "6456": 24, "963": 24, "543": 24, "383": 24, "6245": 24, "1459": 24, "972": 24, "541": 24, "125": 24, "9578": 24, "6462": 24, "766": 24, "52": 24, "9751": 24, "4577": 24, "1259": 24, "1029": 24, "718": 24, "4589": 24, "6033": 24, "763": 24, "503": 24, "9219": 24, "4574": 24, "6212": 24, "09727": 24, "78": 24, "542": 24, "4591": 24, "6244": 24, "4439": 24, "04263": 24, "3545": 24, "4458": 24, "517": 24, "098": 24, "04282": 24, "374": 24, "8544": 24, "4487": 24, "356": 24, "0431": 24, "8755": 24, "3541": 24, "4398": 24, "092": 24, "04224": 24, "8538": 24, "646": 24, "519": 24, "764": 24, "5423": 24, "3741": 24, "3971": 24, "5411": 24, "8967": 24, "649": 24, "817": 24, "5426": 24, "8788": 24, "4027": 24, "632": 24, "5409": 24, "8756": 24, "8973": 24, "2665": 24, "9991": 24, "6664": 24, "02207": 24, "1054": 24, "962": 24, "2813": 24, "739": 24, "6687": 24, "02329": 24, "6056": 24, "942": 24, "299": 24, "9884": 24, "6668": 24, "5215": 24, "1043": 24, "941": 24, "805": 24, "6667": 24, "5202": 24, "6125": 24, "363": 24, "1669": 24, "2268": 24, "1439": 24, "102": 24, "167": 24, "2274": 24, "6438": 24, "729": 24, "776": 24, "362": 24, "1661": 24, "7266": 24, "1437": 24, "728": 24, "787": 24, "117": 24, "1659": 24, "7275": 24, "6454": 24, "459": 24, "737": 24, "3322": 24, "2732": 24, "3942": 24, "461": 24, "288": 24, "468": 24, "3324": 24, "2722": 24, "8934": 24, "389": 24, "797": 24, "3255": 24, "7761": 24, "4006": 24, "444": 24, "482": 24, "3308": 24, "7749": 24, "688": 24, "775": 24, "373": 24, "8344": 24, "4782": 24, "3559": 24, "691": 24, "8347": 24, "4773": 24, "8567": 24, "685": 24, "81": 24, "366": 24, "8342": 24, "9781": 24, "3552": 24, "669": 24, "8326": 24, "9771": 24, "8557": 24, "3336": 24, "4779": 24, "3946": 24, "758": 24, "477": 24, "3313": 24, "4767": 24, "8944": 24, "469": 24, "82": 24, "3332": 24, "9785": 24, "3957": 24, "47": 24, "83": 24, "412": 24, "3333": 24, "9798": 24, "8875": 24, "674": 24, "375": 24, "8331": 24, "3561": 24, "673": 24, "114": 24, "833": 24, "2726": 24, "8562": 24, "682": 24, "342": 24, "377": 24, "8339": 24, "7734": 24, "3563": 24, "684": 24, "33": 24, "099": 24, "8341": 24, "7725": 24, "8546": 24, "952": 24, "002": 24, "6678": 24, "1058": 24, "951": 24, "752": 24, "6676": 24, "2278": 24, "6066": 24, "022": 24, "744": 24, "9423": 24, "6745": 24, "7239": 24, "09942": 24, "967": 24, "757": 24, "6692": 24, "7251": 24, "605": 24, "724": 24, "2638": 24, "1656": 24, "02184": 24, "1441": 24, "721": 24, "2747": 24, "1653": 24, "02274": 24, "6433": 24, "726": 24, "303": 24, "1658": 24, "5219": 24, "1448": 24, "743": 24, "316": 24, "107": 24, "1674": 24, "5229": 24, "6443": 24, "init_struct": 24, "187": 24, "921": 24, "4982": 24, "7386": 24, "255": 24, "08": 24, "032": 24, "007788": 24, "251": 24, "0008217": 24, "002969": 24, "023": 24, "0002851": 24, "2503": 24, "055": 24, "493e": 24, "7497": 24, "741e": 24, "002765": 24, "046": 24, "731": 24, "0002656": 24, "4992": 24, "224": 24, "158": 24, "322": 24, "5018": 24, "2614": 24, "245": 24, "031": 24, "084": 24, "2509": 24, "047": 24, "7491": 24, "0003644": 24, "0009345": 24, "005748": 24, "737e": 24, "0006065": 24, "733": 24, "9999": 24, "4994": 24, "003601": 24, "00038": 24, "005541": 24, "735": 24, "0005322": 24, "4996": 24, "142": 24, "509": 24, "782": 24, "1249": 24, "7627": 24, "7781": 24, "6233": 24, "552": 24, "234": 24, "6253": 24, "518": 24, "614": 24, "1257": 24, "4868": 24, "1256": 24, "956": 24, "607": 24, "2839": 24, "4861": 24, "959": 24, "6237": 24, "9897": 24, "311": 24, "549": 24, "2219": 24, "3767": 24, "218": 24, "56": 24, "8747": 24, "7373": 24, "1314": 24, "7161": 24, "3774": 24, "01386": 24, "453": 24, "3763": 24, "5103": 24, "8743": 24, "0132": 24, "8744": 24, "1246": 24, "6251": 24, "584": 24, "6279": 24, "5401": 24, "9888": 24, "515": 24, "09497": 24, "1255": 24, "09474": 24, "7099": 24, "9815": 24, "554": 24, "992": 24, "09427": 24, "6254": 24, "9909": 24, "09517": 24, "6252": 24, "192": 24, "3721": 24, "9599": 24, "8749": 24, "524": 24, "747": 24, "3746": 24, "8745": 24, "488": 24, "7901": 24, "492": 24, "5976": 24, "1236": 24, "21": 24, "5965": 24, "658": 24, "6026": 24, "3799": 24, "9903": 24, "09511": 24, "9896": 24, "508": 24, "09505": 24, "872": 24, "09508": 24, "3723": 24, "9927": 24, "273": 24, "09534": 24, "6258": 24, "8729": 24, "42": 24, "138": 24, "3974": 24, "1201": 24, "201": 24, "4035": 24, "4024": 24, "8764": 24, "1277": 24, "9047": 24, "3742": 24, "6271": 24, "628": 24, "378": 24, "1454": 24, "497": 24, "1239": 24, "555": 24, "9568": 24, "6255": 24, "557": 24, "124": 24, "9577": 24, "6257": 24, "9756": 24, "1242": 24, "719": 24, "6034": 24, "596": 24, "9216": 24, "6289": 24, "09724": 24, "779": 24, "556": 24, "71": 24, "6256": 24, "6024": 24, "4493": 24, "523": 24, "04315": 24, "3745": 24, "521": 24, "04226": 24, "3743": 24, "4436": 24, "0426": 24, "3546": 24, "4459": 24, "04283": 24, "8761": 24, "483": 24, "3711": 24, "4028": 24, "633": 24, "3744": 24, "8976": 24, "8758": 24, "8966": 24, "2785": 24, "003": 24, "02306": 24, "95": 24, "266": 24, "748": 24, "6675": 24, "02202": 24, "6065": 24, "354": 24, "9424": 24, "6744": 24, "5261": 24, "09944": 24, "34": 24, "5249": 24, "6049": 24, "725": 24, "756": 24, "1657": 24, "2281": 24, "745": 24, "2272": 24, "795": 24, "7282": 24, "1447": 24, "106": 24, "7271": 24, "6442": 24, "278": 24, "2714": 24, "3959": 24, "411": 24, "2702": 24, "327": 24, "3335": 24, "7722": 24, "448": 24, "3312": 24, "683": 24, "4765": 24, "767": 24, "834": 24, "4775": 24, "8545": 24, "9768": 24, "9774": 24, "8561": 24, "39": 24, "796": 24, "3256": 24, "474": 24, "446": 24, "484": 24, "331": 24, "4751": 24, "8951": 24, "9769": 24, "462": 24, "3325": 24, "978": 24, "8935": 24, "367": 24, "8343": 24, "2718": 24, "3553": 24, "296": 24, "2729": 24, "8558": 24, "687": 24, "323": 24, "7719": 24, "334": 24, "7728": 24, "751": 24, "9992": 24, "6665": 24, "6688": 24, "2266": 24, "9868": 24, "7286": 24, "1041": 24, "815": 24, "7298": 24, "2801": 24, "02319": 24, "02262": 24, "6439": 24, "5235": 24, "166": 24, "5225": 24, "6455": 24, "test_idpp": 24, "test_idpp_from_ep": 24, "test_idpp_from_ep_diff_latt": 24, "migrationhoptest": 24, "test_get_sc_structur": 24, "test_get_sc_structures_vacmod": 24, "test_get_start_end_structs_from_hop": 24, "test_get_start_end_structs_from_hop_vac": 24, "test_mson": 24, "diffusionanalyzertest": 25, "test_from_structure_npt": 25, "test_init": 25, "test_init_npt": 25, "functest": 25, "test_fit_arrheniu": 25, "test_get_conversion_factor": 25, "pathfindertest": 26, "test_mhop_mson": 26, "i_sc": 28, "e_sc": 28, "data_arrai": 28, "custom_kei": 28, "use_host_sg": 28, "fullpathmapp": 28, "hop_label": 28, "flag": 28, "sm": [28, 30], "transform": [28, 31], "unitcel": [28, 31], "structr": 28, "trasform": 28, "mh1": 28, "mh2": 28, "migrationpath": 28, "precess": 28, "boolean": 28, "queri": 29, "style": 29, "mongostor": 29, "cathod": 29, "isol": 29, "rest": 29, "structure_group_stor": 29, "material_stor": 29, "migrating_ion": [29, 30], "material_id": 29, "topotact": 29, "electrod": 29, "db": 29, "documenet": 29, "task": 29, "combin": 30, "base_": 30, "inserted_": 30, "base_entri": 30, "inserted_entri": 30, "working_ion": 30, "addition": 30, "san": 30, "kind": 30, "smaller": 30, "bigger": 30, "sc_m": 30, "inserted_struct": 30, "01": 30, "base_struct_entri": 30, "space": 30, "highest": 30, "full": 30, "cubicsupercelltransform": 31, "pmg": 31, "much": 31, "configur": 31, "abl": 31, "try": 31, "cap": 31, "decreas": 31, "close": 31, "struc_sc": 31, "sc_mat": 31, "debug": 31, "test_add_edge_data_from_sc": 32, "test_get_uc_po": 32, "test_get_unique_hop_host": 32, "test_get_unique_host_nonhost": 32, "maggma_stor": 33, "parseentriestest": 34, "test_filter_and_merg": 34, "test_get_all_sym_sit": 34, "test_get_inserted_on_bas": 34, "test_get_insertion_energi": 34, "test_process_": 34}, "objects": {"": [[4, 0, 0, "-", "pymatgen"]], "pymatgen": [[5, 0, 0, "-", "analysis"]], "pymatgen.analysis": [[6, 0, 0, "-", "diffusion"]], "pymatgen.analysis.diffusion": [[7, 0, 0, "-", "aimd"], [16, 0, 0, "-", "analyzer"], [17, 0, 0, "-", "neb"], [27, 0, 0, "-", "utils"]], "pymatgen.analysis.diffusion.aimd": [[8, 0, 0, "-", "clustering"], [9, 0, 0, "-", "pathway"], [10, 0, 0, "-", "rdf"], [15, 0, 0, "-", "van_hove"]], "pymatgen.analysis.diffusion.aimd.clustering": [[8, 1, 1, "", "Kmeans"], [8, 1, 1, "", "KmeansPBC"], [8, 3, 1, "", "get_random_centroid"], [8, 3, 1, "", "get_random_centroids"]], "pymatgen.analysis.diffusion.aimd.clustering.Kmeans": [[8, 2, 1, "", "cluster"], [8, 2, 1, "", "get_centroids"], [8, 2, 1, "", "get_labels"], [8, 2, 1, "", "should_stop"]], "pymatgen.analysis.diffusion.aimd.clustering.KmeansPBC": [[8, 2, 1, "", "get_centroids"], [8, 2, 1, "", "get_labels"], [8, 2, 1, "", "should_stop"]], "pymatgen.analysis.diffusion.aimd.pathway": [[9, 1, 1, "", "ProbabilityDensityAnalysis"], [9, 1, 1, "", "SiteOccupancyAnalyzer"]], "pymatgen.analysis.diffusion.aimd.pathway.ProbabilityDensityAnalysis": [[9, 2, 1, "", "from_diffusion_analyzer"], [9, 2, 1, "", "generate_stable_sites"], [9, 2, 1, "", "get_full_structure"], [9, 2, 1, "", "to_chgcar"]], "pymatgen.analysis.diffusion.aimd.pathway.SiteOccupancyAnalyzer": [[9, 4, 1, "", "coords_ref"], [9, 2, 1, "", "from_diffusion_analyzer"], [9, 2, 1, "", "get_average_site_occupancy"], [9, 4, 1, "", "nsites"], [9, 4, 1, "", "site_occ"], [9, 4, 1, "", "structure"]], "pymatgen.analysis.diffusion.aimd.rdf": [[10, 1, 1, "", "RadialDistributionFunction"], [10, 1, 1, "", "RadialDistributionFunctionFast"]], "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunction": [[10, 5, 1, "", "coordination_number"], [10, 2, 1, "", "export_rdf"], [10, 2, 1, "", "from_species"], [10, 2, 1, "", "get_rdf_plot"]], "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunctionFast": [[10, 2, 1, "", "get_coordination_number"], [10, 2, 1, "", "get_one_rdf"], [10, 2, 1, "", "get_rdf"]], "pymatgen.analysis.diffusion.aimd.tests": [[11, 0, 0, "-", "test_clustering"], [12, 0, 0, "-", "test_pathway"], [13, 0, 0, "-", "test_rdf"], [14, 0, 0, "-", "test_van_hove"]], "pymatgen.analysis.diffusion.aimd.tests.test_clustering": [[11, 1, 1, "", "KmeansPBCTest"], [11, 1, 1, "", "KmeansTest"]], "pymatgen.analysis.diffusion.aimd.tests.test_clustering.KmeansPBCTest": [[11, 2, 1, "", "test_cluster"]], "pymatgen.analysis.diffusion.aimd.tests.test_clustering.KmeansTest": [[11, 2, 1, "", "test_cluster"]], "pymatgen.analysis.diffusion.aimd.tests.test_pathway": [[12, 1, 1, "", "ProbabilityDensityTest"], [12, 1, 1, "", "SiteOccupancyTest"]], "pymatgen.analysis.diffusion.aimd.tests.test_pathway.ProbabilityDensityTest": [[12, 2, 1, "", "test_generate_stable_sites"], [12, 2, 1, "", "test_probability"], [12, 2, 1, "", "test_probability_classmethod"], [12, 2, 1, "", "test_to_chgcar"]], "pymatgen.analysis.diffusion.aimd.tests.test_pathway.SiteOccupancyTest": [[12, 2, 1, "", "test_site_occupancy"], [12, 2, 1, "", "test_site_occupancy_classmethod"]], "pymatgen.analysis.diffusion.aimd.tests.test_rdf": [[13, 1, 1, "", "RDFTest"]], "pymatgen.analysis.diffusion.aimd.tests.test_rdf.RDFTest": [[13, 2, 1, "", "test_rdf"], [13, 2, 1, "", "test_rdf_coordination_number"]], "pymatgen.analysis.diffusion.aimd.tests.test_van_hove": [[14, 1, 1, "", "EvolutionAnalyzerTest"], [14, 1, 1, "", "RDFTest"], [14, 1, 1, "", "VanHoveTest"]], "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.EvolutionAnalyzerTest": [[14, 2, 1, "", "test_get_df"]], "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest": [[14, 2, 1, "", "setUp"], [14, 2, 1, "", "test_raises_ValueError_if_reference_species_not_in_structure"], [14, 2, 1, "", "test_raises_ValueError_if_sigma_is_not_positive"], [14, 2, 1, "", "test_raises_ValueError_if_species_not_in_structure"], [14, 2, 1, "", "test_raises_valueerror_if_ngrid_is_less_than_2"], [14, 2, 1, "", "test_rdf"], [14, 2, 1, "", "test_rdf_coordination_number"], [14, 2, 1, "", "test_rdf_two_species_coordination_number"]], "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.VanHoveTest": [[14, 2, 1, "", "test_van_hove"]], "pymatgen.analysis.diffusion.aimd.van_hove": [[15, 1, 1, "", "EvolutionAnalyzer"], [15, 1, 1, "", "VanHoveAnalysis"]], "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer": [[15, 2, 1, "", "atom_dist"], [15, 2, 1, "", "get_df"], [15, 2, 1, "", "get_min_dist"], [15, 2, 1, "", "get_pairs"], [15, 2, 1, "", "plot_atomic_evolution"], [15, 2, 1, "", "plot_evolution_from_data"], [15, 2, 1, "", "plot_rdf_evolution"], [15, 2, 1, "", "rdf"]], "pymatgen.analysis.diffusion.aimd.van_hove.VanHoveAnalysis": [[15, 2, 1, "", "get_1d_plot"], [15, 2, 1, "", "get_3d_plot"]], "pymatgen.analysis.diffusion.analyzer": [[16, 1, 1, "", "DiffusionAnalyzer"], [16, 3, 1, "", "fit_arrhenius"], [16, 3, 1, "", "get_arrhenius_plot"], [16, 3, 1, "", "get_conversion_factor"], [16, 3, 1, "", "get_diffusivity_from_msd"], [16, 3, 1, "", "get_extrapolated_conductivity"], [16, 3, 1, "", "get_extrapolated_diffusivity"]], "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer": [[16, 2, 1, "", "as_dict"], [16, 2, 1, "", "export_msdt"], [16, 2, 1, "", "from_dict"], [16, 2, 1, "", "from_files"], [16, 2, 1, "", "from_structures"], [16, 2, 1, "", "from_vaspruns"], [16, 2, 1, "", "get_drift_corrected_structures"], [16, 2, 1, "", "get_framework_rms_plot"], [16, 2, 1, "", "get_msd_plot"], [16, 2, 1, "", "get_summary_dict"], [16, 2, 1, "", "plot_msd"]], "pymatgen.analysis.diffusion.neb": [[18, 0, 0, "-", "full_path_mapper"], [19, 0, 0, "-", "io"], [20, 0, 0, "-", "pathfinder"], [21, 0, 0, "-", "periodic_dijkstra"]], "pymatgen.analysis.diffusion.neb.full_path_mapper": [[18, 1, 1, "", "ChargeBarrierGraph"], [18, 1, 1, "", "MigrationGraph"], [18, 3, 1, "", "almost"], [18, 3, 1, "", "check_uc_hop"], [18, 3, 1, "", "generic_groupby"], [18, 3, 1, "", "get_hop_site_sequence"], [18, 3, 1, "", "get_only_sites_from_structure"], [18, 3, 1, "", "map_hop_sc2uc"], [18, 3, 1, "", "order_path"]], "pymatgen.analysis.diffusion.neb.full_path_mapper.ChargeBarrierGraph": [[18, 2, 1, "", "get_least_chg_path"], [18, 2, 1, "", "get_summary_dict"], [18, 2, 1, "", "populate_edges_with_chg_density_info"]], "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph": [[18, 2, 1, "", "add_data_to_similar_edges"], [18, 2, 1, "", "assign_cost_to_graph"], [18, 2, 1, "", "get_path"], [18, 2, 1, "", "get_structure_from_entries"], [18, 2, 1, "", "get_summary_dict"], [18, 5, 1, "", "host_structure"], [18, 5, 1, "", "only_sites"], [18, 5, 1, "", "symm_structure"], [18, 5, 1, "", "unique_hops"], [18, 2, 1, "", "with_base_structure"], [18, 2, 1, "", "with_distance"], [18, 2, 1, "", "with_local_env_strategy"]], "pymatgen.analysis.diffusion.neb.io": [[19, 1, 1, "", "MVLCINEBEndPointSet"], [19, 1, 1, "", "MVLCINEBSet"], [19, 3, 1, "", "get_endpoint_dist"], [19, 3, 1, "", "get_endpoints_from_index"]], "pymatgen.analysis.diffusion.neb.pathfinder": [[20, 1, 1, "", "ChgcarPotential"], [20, 1, 1, "", "DistinctPathFinder"], [20, 1, 1, "", "FreeVolumePotential"], [20, 1, 1, "", "IDPPSolver"], [20, 1, 1, "", "MigrationHop"], [20, 1, 1, "", "MixedPotential"], [20, 1, 1, "", "NEBPathfinder"], [20, 1, 1, "", "StaticPotential"]], "pymatgen.analysis.diffusion.neb.pathfinder.DistinctPathFinder": [[20, 2, 1, "", "get_paths"], [20, 2, 1, "", "write_all_paths"]], "pymatgen.analysis.diffusion.neb.pathfinder.IDPPSolver": [[20, 2, 1, "", "from_endpoints"], [20, 2, 1, "", "get_unit_vector"], [20, 2, 1, "", "run"]], "pymatgen.analysis.diffusion.neb.pathfinder.MigrationHop": [[20, 2, 1, "", "get_sc_structures"], [20, 2, 1, "", "get_structures"], [20, 5, 1, "", "length"], [20, 2, 1, "", "write_path"]], "pymatgen.analysis.diffusion.neb.pathfinder.NEBPathfinder": [[20, 5, 1, "", "images"], [20, 2, 1, "", "interpolate"], [20, 2, 1, "", "plot_images"], [20, 2, 1, "", "string_relax"]], "pymatgen.analysis.diffusion.neb.pathfinder.StaticPotential": [[20, 2, 1, "", "gaussian_smear"], [20, 2, 1, "", "get_v"], [20, 2, 1, "", "normalize"], [20, 2, 1, "", "rescale_field"]], "pymatgen.analysis.diffusion.neb.periodic_dijkstra": [[21, 3, 1, "", "get_optimal_pathway_rev"], [21, 3, 1, "", "periodic_dijkstra"], [21, 3, 1, "", "periodic_dijkstra_on_sgraph"]], "pymatgen.analysis.diffusion.neb.tests": [[22, 0, 0, "-", "test_full_path_mapper"], [23, 0, 0, "-", "test_io"], [24, 0, 0, "-", "test_pathfinder"]], "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper": [[22, 1, 1, "", "ChargeBarrierGraphTest"], [22, 1, 1, "", "MigrationGraphComplexTest"], [22, 1, 1, "", "MigrationGraphFromEntriesTest"], [22, 1, 1, "", "MigrationGraphSimpleTest"]], "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.ChargeBarrierGraphTest": [[22, 2, 1, "", "setUp"], [22, 2, 1, "", "test_get_summary_dict"], [22, 2, 1, "", "test_integration"], [22, 2, 1, "", "test_populate_edges_with_chg_density_info"]], "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest": [[22, 2, 1, "", "setUp"], [22, 2, 1, "", "test_add_data_to_similar_edges"], [22, 2, 1, "", "test_assign_cost_to_graph"], [22, 2, 1, "", "test_get_key_in_path"], [22, 2, 1, "", "test_get_path"], [22, 2, 1, "", "test_group_and_label_hops"], [22, 2, 1, "", "test_not_matching_first"], [22, 2, 1, "", "test_order_path"], [22, 2, 1, "", "test_periodic_dijkstra"], [22, 2, 1, "", "test_unique_hops_dict"]], "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphFromEntriesTest": [[22, 2, 1, "", "setUp"], [22, 2, 1, "", "test_m_graph_construction"], [22, 2, 1, "", "test_m_graph_from_entries_failed"]], "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphSimpleTest": [[22, 2, 1, "", "setUp"], [22, 2, 1, "", "test_get_pos_and_migration_hop"], [22, 2, 1, "", "test_get_summary_dict"]], "pymatgen.analysis.diffusion.neb.tests.test_io": [[23, 1, 1, "", "MVLCINEBEndPointSetTest"], [23, 1, 1, "", "MVLCINEBSetTest"], [23, 1, 1, "", "UtilityTest"], [23, 3, 1, "", "get_path"]], "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBEndPointSetTest": [[23, 4, 1, "", "endpoint"], [23, 2, 1, "", "test_incar"], [23, 2, 1, "", "test_incar_user_setting"]], "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBSetTest": [[23, 4, 1, "", "structures"], [23, 2, 1, "", "test_incar"], [23, 2, 1, "", "test_incar_user_setting"]], "pymatgen.analysis.diffusion.neb.tests.test_io.UtilityTest": [[23, 4, 1, "", "structure"], [23, 2, 1, "", "test_get_endpoint_dist"], [23, 2, 1, "", "test_get_endpoints_from_index"]], "pymatgen.analysis.diffusion.neb.tests.test_pathfinder": [[24, 1, 1, "", "DistinctPathFinderTest"], [24, 1, 1, "", "IDPPSolverTest"], [24, 1, 1, "", "MigrationHopTest"], [24, 3, 1, "", "get_path"]], "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.DistinctPathFinderTest": [[24, 2, 1, "", "test_get_paths"], [24, 2, 1, "", "test_max_path_length"]], "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.IDPPSolverTest": [[24, 4, 1, "", "final_struct"], [24, 4, 1, "", "init_struct"], [24, 2, 1, "", "test_idpp"], [24, 2, 1, "", "test_idpp_from_ep"], [24, 2, 1, "", "test_idpp_from_ep_diff_latt"]], "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.MigrationHopTest": [[24, 2, 1, "", "setUp"], [24, 2, 1, "", "test_get_sc_structures"], [24, 2, 1, "", "test_get_sc_structures_vacmode"], [24, 2, 1, "", "test_get_start_end_structs_from_hop"], [24, 2, 1, "", "test_get_start_end_structs_from_hop_vac"], [24, 2, 1, "", "test_msonable"]], "pymatgen.analysis.diffusion.tests": [[25, 0, 0, "-", "test_analyzer"], [26, 0, 0, "-", "test_pathfinder"]], "pymatgen.analysis.diffusion.tests.test_analyzer": [[25, 1, 1, "", "DiffusionAnalyzerTest"], [25, 1, 1, "", "FuncTest"]], "pymatgen.analysis.diffusion.tests.test_analyzer.DiffusionAnalyzerTest": [[25, 2, 1, "", "test_from_structure_NPT"], [25, 2, 1, "", "test_init"], [25, 2, 1, "", "test_init_npt"]], "pymatgen.analysis.diffusion.tests.test_analyzer.FuncTest": [[25, 2, 1, "", "test_fit_arrhenius"], [25, 2, 1, "", "test_get_conversion_factor"]], "pymatgen.analysis.diffusion.tests.test_pathfinder": [[26, 1, 1, "", "PathfinderTest"]], "pymatgen.analysis.diffusion.tests.test_pathfinder.PathfinderTest": [[26, 2, 1, "", "test_mhop_msonable"]], "pymatgen.analysis.diffusion.utils": [[28, 0, 0, "-", "edge_data_from_sc"], [29, 0, 0, "-", "maggma"], [30, 0, 0, "-", "parse_entries"], [31, 0, 0, "-", "supercells"]], "pymatgen.analysis.diffusion.utils.edge_data_from_sc": [[28, 3, 1, "", "add_edge_data_from_sc"], [28, 3, 1, "", "get_uc_pos"], [28, 3, 1, "", "get_unique_hop"], [28, 3, 1, "", "mh_eq"]], "pymatgen.analysis.diffusion.utils.maggma": [[29, 3, 1, "", "get_entries_from_dbs"]], "pymatgen.analysis.diffusion.utils.parse_entries": [[30, 3, 1, "", "get_inserted_on_base"], [30, 3, 1, "", "get_insertion_energy"], [30, 3, 1, "", "get_matched_structure_mapping"], [30, 3, 1, "", "get_sym_migration_ion_sites"], [30, 3, 1, "", "process_entries"]], "pymatgen.analysis.diffusion.utils.supercells": [[31, 3, 1, "", "get_sc_fromstruct"], [31, 3, 1, "", "get_start_end_structures"]], "pymatgen.analysis.diffusion.utils.tests": [[32, 0, 0, "-", "test_edge_data_from_sc"], [33, 0, 0, "-", "test_maggma"], [34, 0, 0, "-", "test_parse_entries"]], "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc": [[32, 3, 1, "", "test_add_edge_data_from_sc"], [32, 3, 1, "", "test_get_uc_pos"], [32, 3, 1, "", "test_get_unique_hop_host"], [32, 3, 1, "", "test_get_unique_host_nonhost"]], "pymatgen.analysis.diffusion.utils.tests.test_maggma": [[33, 3, 1, "", "maggma_stores"], [33, 3, 1, "", "test"]], "pymatgen.analysis.diffusion.utils.tests.test_parse_entries": [[34, 1, 1, "", "ParseEntriesTest"]], "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.ParseEntriesTest": [[34, 2, 1, "", "setUp"], [34, 2, 1, "", "test_filter_and_merge"], [34, 2, 1, "", "test_get_all_sym_sites"], [34, 2, 1, "", "test_get_inserted_on_base"], [34, 2, 1, "", "test_get_insertion_energy"], [34, 2, 1, "", "test_process_ents"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function", "4": "py:attribute", "5": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"], "4": ["py", "attribute", "Python attribute"], "5": ["py", "property", "Python property"]}, "titleterms": {"krtheme": 0, "sphinx": 0, "style": 0, "chang": [1, 2], "log": [1, 2], "v2023": 1, "8": 1, "15": 1, "v2022": 1, "4": 1, "22": 1, "v2021": 1, "29": 1, "3": 1, "6": 1, "5": 1, "v2019": 1, "2": 1, "28": 1, "v2018": 1, "1": 1, "v0": 1, "0": 1, "introduct": 2, "featur": 2, "non": 2, "exhaust": 2, "api": 2, "document": 2, "cite": 2, "contribut": 2, "acknowledg": 2, "licens": 2, "our": 2, "copyright": 2, "polici": 2, "indic": 2, "tabl": 2, "pymatgen": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34], "namespac": [4, 5], "analysi": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34], "subpackag": [5, 6, 7, 17, 27, 35, 36, 37], "diffus": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34], "packag": [6, 7, 17, 27, 35, 36, 37], "submodul": [6, 7, 17, 27, 36, 37], "modul": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37], "content": [6, 7, 17, 27, 35, 36, 37], "aimd": [7, 8, 9, 10, 11, 12, 13, 14, 15, 36], "cluster": [8, 36], "pathwai": [9, 36], "rdf": [10, 36], "test": [11, 12, 13, 14, 22, 23, 24, 25, 26, 32, 33, 34], "test_clust": 11, "test_pathwai": 12, "test_rdf": 13, "test_van_hov": 14, "van_hov": [15, 36], "analyz": 16, "neb": [17, 18, 19, 20, 21, 22, 23, 24, 37], "full_path_mapp": [18, 37], "io": [19, 37], "pathfind": [20, 37], "periodic_dijkstra": [21, 37], "test_full_path_mapp": 22, "test_io": 23, "test_pathfind": [24, 26], "test_analyz": 25, "util": [27, 28, 29, 30, 31, 32, 33, 34], "edge_data_from_sc": 28, "maggma": 29, "parse_entri": 30, "supercel": 31, "test_edge_data_from_sc": 32, "test_maggma": 33, "test_parse_entri": 34, "pymatgen_diffus": [35, 36, 37]}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 58}, "alltitles": {"krTheme Sphinx Style": [[0, "krtheme-sphinx-style"]], "Introduction": [[2, "introduction"]], "Change Log": [[2, "change-log"], [1, "change-log"]], "Features (non-exhaustive!)": [[2, "features-non-exhaustive"]], "API documentation": [[2, "api-documentation"]], "Citing": [[2, "citing"]], "Contributing": [[2, "contributing"]], "Acknowledgements": [[2, "acknowledgements"]], "License": [[2, "license"]], "Our Copyright Policy": [[2, "our-copyright-policy"]], "Indices and tables": [[2, "indices-and-tables"]], "pymatgen": [[3, "pymatgen"]], "v2023.8.15": [[1, "v2023-8-15"]], "v2022.4.22": [[1, "v2022-4-22"]], "v2021.4.29": [[1, "v2021-4-29"]], "v2021.3.6": [[1, "v2021-3-6"]], "v2021.3.5": [[1, "v2021-3-5"]], "v2019.2.28": [[1, "v2019-2-28"]], "v2018.1.4": [[1, "v2018-1-4"]], "v0.3.0": [[1, "v0-3-0"]], "pymatgen namespace": [[4, "module-pymatgen"]], "pymatgen.analysis namespace": [[5, "module-pymatgen.analysis"]], "Subpackages": [[5, "subpackages"], [6, "subpackages"], [7, "subpackages"], [17, "subpackages"], [27, "subpackages"], [35, "subpackages"], [36, "subpackages"], [37, "subpackages"]], "pymatgen.analysis.diffusion package": [[6, "pymatgen-analysis-diffusion-package"]], "Submodules": [[6, "submodules"], [7, "submodules"], [17, "submodules"], [27, "submodules"], [36, "submodules"], [37, "submodules"]], "Module contents": [[6, "module-pymatgen.analysis.diffusion"], [7, "module-pymatgen.analysis.diffusion.aimd"], [17, "module-pymatgen.analysis.diffusion.neb"], [27, "module-pymatgen.analysis.diffusion.utils"], [35, "module-contents"], [36, "module-contents"], [37, "module-contents"]], "pymatgen.analysis.diffusion.aimd package": [[7, "pymatgen-analysis-diffusion-aimd-package"]], "pymatgen.analysis.diffusion.aimd.clustering module": [[8, "module-pymatgen.analysis.diffusion.aimd.clustering"]], "pymatgen.analysis.diffusion.aimd.pathway module": [[9, "module-pymatgen.analysis.diffusion.aimd.pathway"]], "pymatgen.analysis.diffusion.aimd.rdf module": [[10, "module-pymatgen.analysis.diffusion.aimd.rdf"]], "pymatgen.analysis.diffusion.aimd.tests.test_clustering module": [[11, "module-pymatgen.analysis.diffusion.aimd.tests.test_clustering"]], "pymatgen.analysis.diffusion.aimd.tests.test_pathway module": [[12, "module-pymatgen.analysis.diffusion.aimd.tests.test_pathway"]], "pymatgen.analysis.diffusion.aimd.tests.test_rdf module": [[13, "module-pymatgen.analysis.diffusion.aimd.tests.test_rdf"]], "pymatgen.analysis.diffusion.aimd.tests.test_van_hove module": [[14, "module-pymatgen.analysis.diffusion.aimd.tests.test_van_hove"]], "pymatgen.analysis.diffusion.aimd.van_hove module": [[15, "module-pymatgen.analysis.diffusion.aimd.van_hove"]], "pymatgen.analysis.diffusion.analyzer module": [[16, "module-pymatgen.analysis.diffusion.analyzer"]], "pymatgen.analysis.diffusion.neb package": [[17, "pymatgen-analysis-diffusion-neb-package"]], "pymatgen.analysis.diffusion.neb.full_path_mapper module": [[18, "module-pymatgen.analysis.diffusion.neb.full_path_mapper"]], "pymatgen.analysis.diffusion.neb.io module": [[19, "module-pymatgen.analysis.diffusion.neb.io"]], "pymatgen.analysis.diffusion.neb.pathfinder module": [[20, "module-pymatgen.analysis.diffusion.neb.pathfinder"]], "pymatgen.analysis.diffusion.neb.periodic_dijkstra module": [[21, "module-pymatgen.analysis.diffusion.neb.periodic_dijkstra"]], "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper module": [[22, "module-pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper"]], "pymatgen.analysis.diffusion.neb.tests.test_io module": [[23, "module-pymatgen.analysis.diffusion.neb.tests.test_io"]], "pymatgen.analysis.diffusion.neb.tests.test_pathfinder module": [[24, "module-pymatgen.analysis.diffusion.neb.tests.test_pathfinder"]], "pymatgen.analysis.diffusion.tests.test_analyzer module": [[25, "module-pymatgen.analysis.diffusion.tests.test_analyzer"]], "pymatgen.analysis.diffusion.tests.test_pathfinder module": [[26, "module-pymatgen.analysis.diffusion.tests.test_pathfinder"]], "pymatgen.analysis.diffusion.utils package": [[27, "pymatgen-analysis-diffusion-utils-package"]], "pymatgen.analysis.diffusion.utils.edge_data_from_sc module": [[28, "module-pymatgen.analysis.diffusion.utils.edge_data_from_sc"]], "pymatgen.analysis.diffusion.utils.maggma module": [[29, "module-pymatgen.analysis.diffusion.utils.maggma"]], "pymatgen.analysis.diffusion.utils.parse_entries module": [[30, "module-pymatgen.analysis.diffusion.utils.parse_entries"]], "pymatgen.analysis.diffusion.utils.supercells module": [[31, "module-pymatgen.analysis.diffusion.utils.supercells"]], "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc module": [[32, "module-pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc"]], "pymatgen.analysis.diffusion.utils.tests.test_maggma module": [[33, "module-pymatgen.analysis.diffusion.utils.tests.test_maggma"]], "pymatgen.analysis.diffusion.utils.tests.test_parse_entries module": [[34, "module-pymatgen.analysis.diffusion.utils.tests.test_parse_entries"]], "pymatgen_diffusion package": [[35, "pymatgen-diffusion-package"]], "pymatgen_diffusion.aimd package": [[36, "pymatgen-diffusion-aimd-package"]], "pymatgen_diffusion.aimd.clustering module": [[36, "pymatgen-diffusion-aimd-clustering-module"]], "pymatgen_diffusion.aimd.pathway module": [[36, "pymatgen-diffusion-aimd-pathway-module"]], "pymatgen_diffusion.aimd.rdf module": [[36, "pymatgen-diffusion-aimd-rdf-module"]], "pymatgen_diffusion.aimd.van_hove module": [[36, "pymatgen-diffusion-aimd-van-hove-module"]], "pymatgen_diffusion.neb package": [[37, "pymatgen-diffusion-neb-package"]], "pymatgen_diffusion.neb.full_path_mapper module": [[37, "pymatgen-diffusion-neb-full-path-mapper-module"]], "pymatgen_diffusion.neb.io module": [[37, "pymatgen-diffusion-neb-io-module"]], "pymatgen_diffusion.neb.pathfinder module": [[37, "pymatgen-diffusion-neb-pathfinder-module"]], "pymatgen_diffusion.neb.periodic_dijkstra module": [[37, "pymatgen-diffusion-neb-periodic-dijkstra-module"]]}, "indexentries": {"module": [[4, "module-pymatgen"], [5, "module-pymatgen.analysis"], [6, "module-pymatgen.analysis.diffusion"], [7, "module-pymatgen.analysis.diffusion.aimd"], [8, "module-pymatgen.analysis.diffusion.aimd.clustering"], [9, "module-pymatgen.analysis.diffusion.aimd.pathway"], [10, "module-pymatgen.analysis.diffusion.aimd.rdf"], [11, "module-pymatgen.analysis.diffusion.aimd.tests.test_clustering"], [12, "module-pymatgen.analysis.diffusion.aimd.tests.test_pathway"], [13, "module-pymatgen.analysis.diffusion.aimd.tests.test_rdf"], [14, "module-pymatgen.analysis.diffusion.aimd.tests.test_van_hove"], [15, "module-pymatgen.analysis.diffusion.aimd.van_hove"], [16, "module-pymatgen.analysis.diffusion.analyzer"], [17, "module-pymatgen.analysis.diffusion.neb"], [18, "module-pymatgen.analysis.diffusion.neb.full_path_mapper"], [19, "module-pymatgen.analysis.diffusion.neb.io"], [20, "module-pymatgen.analysis.diffusion.neb.pathfinder"], [21, "module-pymatgen.analysis.diffusion.neb.periodic_dijkstra"], [22, "module-pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper"], [23, "module-pymatgen.analysis.diffusion.neb.tests.test_io"], [24, "module-pymatgen.analysis.diffusion.neb.tests.test_pathfinder"], [25, "module-pymatgen.analysis.diffusion.tests.test_analyzer"], [26, "module-pymatgen.analysis.diffusion.tests.test_pathfinder"], [27, "module-pymatgen.analysis.diffusion.utils"], [28, "module-pymatgen.analysis.diffusion.utils.edge_data_from_sc"], [29, "module-pymatgen.analysis.diffusion.utils.maggma"], [30, "module-pymatgen.analysis.diffusion.utils.parse_entries"], [31, "module-pymatgen.analysis.diffusion.utils.supercells"], [32, "module-pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc"], [33, "module-pymatgen.analysis.diffusion.utils.tests.test_maggma"], [34, "module-pymatgen.analysis.diffusion.utils.tests.test_parse_entries"]], "pymatgen": [[4, "module-pymatgen"]], "pymatgen.analysis": [[5, "module-pymatgen.analysis"]], "pymatgen.analysis.diffusion": [[6, "module-pymatgen.analysis.diffusion"]], "pymatgen.analysis.diffusion.aimd": [[7, "module-pymatgen.analysis.diffusion.aimd"]], "kmeans (class in pymatgen.analysis.diffusion.aimd.clustering)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.Kmeans"]], "kmeanspbc (class in pymatgen.analysis.diffusion.aimd.clustering)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.KmeansPBC"]], "cluster() (kmeans method)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.Kmeans.cluster"]], "get_centroids() (kmeans static method)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.Kmeans.get_centroids"]], "get_centroids() (kmeanspbc method)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.KmeansPBC.get_centroids"]], "get_labels() (kmeans static method)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.Kmeans.get_labels"]], "get_labels() (kmeanspbc method)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.KmeansPBC.get_labels"]], "get_random_centroid() (in module pymatgen.analysis.diffusion.aimd.clustering)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.get_random_centroid"]], "get_random_centroids() (in module pymatgen.analysis.diffusion.aimd.clustering)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.get_random_centroids"]], "pymatgen.analysis.diffusion.aimd.clustering": [[8, "module-pymatgen.analysis.diffusion.aimd.clustering"]], "should_stop() (kmeans method)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.Kmeans.should_stop"]], "should_stop() (kmeanspbc method)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.KmeansPBC.should_stop"]], "probabilitydensityanalysis (class in pymatgen.analysis.diffusion.aimd.pathway)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.ProbabilityDensityAnalysis"]], "siteoccupancyanalyzer (class in pymatgen.analysis.diffusion.aimd.pathway)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.SiteOccupancyAnalyzer"]], "coords_ref (siteoccupancyanalyzer attribute)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.SiteOccupancyAnalyzer.coords_ref"]], "from_diffusion_analyzer() (probabilitydensityanalysis class method)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.ProbabilityDensityAnalysis.from_diffusion_analyzer"]], "from_diffusion_analyzer() (siteoccupancyanalyzer class method)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.SiteOccupancyAnalyzer.from_diffusion_analyzer"]], "generate_stable_sites() (probabilitydensityanalysis method)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.ProbabilityDensityAnalysis.generate_stable_sites"]], "get_average_site_occupancy() (siteoccupancyanalyzer method)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.SiteOccupancyAnalyzer.get_average_site_occupancy"]], "get_full_structure() (probabilitydensityanalysis method)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.ProbabilityDensityAnalysis.get_full_structure"]], "nsites (siteoccupancyanalyzer attribute)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.SiteOccupancyAnalyzer.nsites"]], "pymatgen.analysis.diffusion.aimd.pathway": [[9, "module-pymatgen.analysis.diffusion.aimd.pathway"]], "site_occ (siteoccupancyanalyzer attribute)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.SiteOccupancyAnalyzer.site_occ"]], "structure (siteoccupancyanalyzer attribute)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.SiteOccupancyAnalyzer.structure"]], "to_chgcar() (probabilitydensityanalysis method)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.ProbabilityDensityAnalysis.to_chgcar"]], "radialdistributionfunction (class in pymatgen.analysis.diffusion.aimd.rdf)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunction"]], "radialdistributionfunctionfast (class in pymatgen.analysis.diffusion.aimd.rdf)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunctionFast"]], "coordination_number (radialdistributionfunction property)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunction.coordination_number"]], "export_rdf() (radialdistributionfunction method)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunction.export_rdf"]], "from_species() (radialdistributionfunction class method)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunction.from_species"]], "get_coordination_number() (radialdistributionfunctionfast method)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunctionFast.get_coordination_number"]], "get_one_rdf() (radialdistributionfunctionfast method)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunctionFast.get_one_rdf"]], "get_rdf() (radialdistributionfunctionfast method)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunctionFast.get_rdf"]], "get_rdf_plot() (radialdistributionfunction method)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunction.get_rdf_plot"]], "pymatgen.analysis.diffusion.aimd.rdf": [[10, "module-pymatgen.analysis.diffusion.aimd.rdf"]], "kmeanspbctest (class in pymatgen.analysis.diffusion.aimd.tests.test_clustering)": [[11, "pymatgen.analysis.diffusion.aimd.tests.test_clustering.KmeansPBCTest"]], "kmeanstest (class in pymatgen.analysis.diffusion.aimd.tests.test_clustering)": [[11, "pymatgen.analysis.diffusion.aimd.tests.test_clustering.KmeansTest"]], "pymatgen.analysis.diffusion.aimd.tests.test_clustering": [[11, "module-pymatgen.analysis.diffusion.aimd.tests.test_clustering"]], "test_cluster() (kmeanspbctest method)": [[11, "pymatgen.analysis.diffusion.aimd.tests.test_clustering.KmeansPBCTest.test_cluster"]], "test_cluster() (kmeanstest method)": [[11, "pymatgen.analysis.diffusion.aimd.tests.test_clustering.KmeansTest.test_cluster"]], "probabilitydensitytest (class in pymatgen.analysis.diffusion.aimd.tests.test_pathway)": [[12, "pymatgen.analysis.diffusion.aimd.tests.test_pathway.ProbabilityDensityTest"]], "siteoccupancytest (class in pymatgen.analysis.diffusion.aimd.tests.test_pathway)": [[12, "pymatgen.analysis.diffusion.aimd.tests.test_pathway.SiteOccupancyTest"]], "pymatgen.analysis.diffusion.aimd.tests.test_pathway": [[12, "module-pymatgen.analysis.diffusion.aimd.tests.test_pathway"]], "test_generate_stable_sites() (probabilitydensitytest method)": [[12, "pymatgen.analysis.diffusion.aimd.tests.test_pathway.ProbabilityDensityTest.test_generate_stable_sites"]], "test_probability() (probabilitydensitytest method)": [[12, "pymatgen.analysis.diffusion.aimd.tests.test_pathway.ProbabilityDensityTest.test_probability"]], "test_probability_classmethod() (probabilitydensitytest method)": [[12, "pymatgen.analysis.diffusion.aimd.tests.test_pathway.ProbabilityDensityTest.test_probability_classmethod"]], "test_site_occupancy() (siteoccupancytest method)": [[12, "pymatgen.analysis.diffusion.aimd.tests.test_pathway.SiteOccupancyTest.test_site_occupancy"]], "test_site_occupancy_classmethod() (siteoccupancytest method)": [[12, "pymatgen.analysis.diffusion.aimd.tests.test_pathway.SiteOccupancyTest.test_site_occupancy_classmethod"]], "test_to_chgcar() (probabilitydensitytest method)": [[12, "pymatgen.analysis.diffusion.aimd.tests.test_pathway.ProbabilityDensityTest.test_to_chgcar"]], "rdftest (class in pymatgen.analysis.diffusion.aimd.tests.test_rdf)": [[13, "pymatgen.analysis.diffusion.aimd.tests.test_rdf.RDFTest"]], "pymatgen.analysis.diffusion.aimd.tests.test_rdf": [[13, "module-pymatgen.analysis.diffusion.aimd.tests.test_rdf"]], "test_rdf() (rdftest method)": [[13, "pymatgen.analysis.diffusion.aimd.tests.test_rdf.RDFTest.test_rdf"], [14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest.test_rdf"]], "test_rdf_coordination_number() (rdftest method)": [[13, "pymatgen.analysis.diffusion.aimd.tests.test_rdf.RDFTest.test_rdf_coordination_number"], [14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest.test_rdf_coordination_number"]], "evolutionanalyzertest (class in pymatgen.analysis.diffusion.aimd.tests.test_van_hove)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.EvolutionAnalyzerTest"]], "rdftest (class in pymatgen.analysis.diffusion.aimd.tests.test_van_hove)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest"]], "vanhovetest (class in pymatgen.analysis.diffusion.aimd.tests.test_van_hove)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.VanHoveTest"]], "pymatgen.analysis.diffusion.aimd.tests.test_van_hove": [[14, "module-pymatgen.analysis.diffusion.aimd.tests.test_van_hove"]], "setup() (rdftest method)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest.setUp"]], "test_get_df() (evolutionanalyzertest method)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.EvolutionAnalyzerTest.test_get_df"]], "test_raises_valueerror_if_reference_species_not_in_structure() (rdftest method)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest.test_raises_ValueError_if_reference_species_not_in_structure"]], "test_raises_valueerror_if_sigma_is_not_positive() (rdftest method)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest.test_raises_ValueError_if_sigma_is_not_positive"]], "test_raises_valueerror_if_species_not_in_structure() (rdftest method)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest.test_raises_ValueError_if_species_not_in_structure"]], "test_raises_valueerror_if_ngrid_is_less_than_2() (rdftest method)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest.test_raises_valueerror_if_ngrid_is_less_than_2"]], "test_rdf_two_species_coordination_number() (rdftest method)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest.test_rdf_two_species_coordination_number"]], "test_van_hove() (vanhovetest method)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.VanHoveTest.test_van_hove"]], "evolutionanalyzer (class in pymatgen.analysis.diffusion.aimd.van_hove)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer"]], "vanhoveanalysis (class in pymatgen.analysis.diffusion.aimd.van_hove)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.VanHoveAnalysis"]], "atom_dist() (evolutionanalyzer static method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer.atom_dist"]], "get_1d_plot() (vanhoveanalysis method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.VanHoveAnalysis.get_1d_plot"]], "get_3d_plot() (vanhoveanalysis method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.VanHoveAnalysis.get_3d_plot"]], "get_df() (evolutionanalyzer method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer.get_df"]], "get_min_dist() (evolutionanalyzer static method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer.get_min_dist"]], "get_pairs() (evolutionanalyzer static method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer.get_pairs"]], "plot_atomic_evolution() (evolutionanalyzer method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer.plot_atomic_evolution"]], "plot_evolution_from_data() (evolutionanalyzer static method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer.plot_evolution_from_data"]], "plot_rdf_evolution() (evolutionanalyzer method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer.plot_rdf_evolution"]], "pymatgen.analysis.diffusion.aimd.van_hove": [[15, "module-pymatgen.analysis.diffusion.aimd.van_hove"]], "rdf() (evolutionanalyzer static method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer.rdf"]], "diffusionanalyzer (class in pymatgen.analysis.diffusion.analyzer)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer"]], "as_dict() (diffusionanalyzer method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.as_dict"]], "export_msdt() (diffusionanalyzer method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.export_msdt"]], "fit_arrhenius() (in module pymatgen.analysis.diffusion.analyzer)": [[16, "pymatgen.analysis.diffusion.analyzer.fit_arrhenius"]], "from_dict() (diffusionanalyzer class method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.from_dict"]], "from_files() (diffusionanalyzer class method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.from_files"]], "from_structures() (diffusionanalyzer class method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.from_structures"]], "from_vaspruns() (diffusionanalyzer class method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.from_vaspruns"]], "get_arrhenius_plot() (in module pymatgen.analysis.diffusion.analyzer)": [[16, "pymatgen.analysis.diffusion.analyzer.get_arrhenius_plot"]], "get_conversion_factor() (in module pymatgen.analysis.diffusion.analyzer)": [[16, "pymatgen.analysis.diffusion.analyzer.get_conversion_factor"]], "get_diffusivity_from_msd() (in module pymatgen.analysis.diffusion.analyzer)": [[16, "pymatgen.analysis.diffusion.analyzer.get_diffusivity_from_msd"]], "get_drift_corrected_structures() (diffusionanalyzer method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.get_drift_corrected_structures"]], "get_extrapolated_conductivity() (in module pymatgen.analysis.diffusion.analyzer)": [[16, "pymatgen.analysis.diffusion.analyzer.get_extrapolated_conductivity"]], "get_extrapolated_diffusivity() (in module pymatgen.analysis.diffusion.analyzer)": [[16, "pymatgen.analysis.diffusion.analyzer.get_extrapolated_diffusivity"]], "get_framework_rms_plot() (diffusionanalyzer method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.get_framework_rms_plot"]], "get_msd_plot() (diffusionanalyzer method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.get_msd_plot"]], "get_summary_dict() (diffusionanalyzer method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.get_summary_dict"]], "plot_msd() (diffusionanalyzer method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.plot_msd"]], "pymatgen.analysis.diffusion.analyzer": [[16, "module-pymatgen.analysis.diffusion.analyzer"]], "pymatgen.analysis.diffusion.neb": [[17, "module-pymatgen.analysis.diffusion.neb"]], "chargebarriergraph (class in pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.ChargeBarrierGraph"]], "migrationgraph (class in pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph"]], "add_data_to_similar_edges() (migrationgraph method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.add_data_to_similar_edges"]], "almost() (in module pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.almost"]], "assign_cost_to_graph() (migrationgraph method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.assign_cost_to_graph"]], "check_uc_hop() (in module pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.check_uc_hop"]], "generic_groupby() (in module pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.generic_groupby"]], "get_hop_site_sequence() (in module pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.get_hop_site_sequence"]], "get_least_chg_path() (chargebarriergraph method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.ChargeBarrierGraph.get_least_chg_path"]], "get_only_sites_from_structure() (in module pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.get_only_sites_from_structure"]], "get_path() (migrationgraph method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.get_path"]], "get_structure_from_entries() (migrationgraph static method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.get_structure_from_entries"]], "get_summary_dict() (chargebarriergraph method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.ChargeBarrierGraph.get_summary_dict"]], "get_summary_dict() (migrationgraph method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.get_summary_dict"]], "host_structure (migrationgraph property)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.host_structure"]], "map_hop_sc2uc() (in module pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.map_hop_sc2uc"]], "only_sites (migrationgraph property)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.only_sites"]], "order_path() (in module pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.order_path"]], "populate_edges_with_chg_density_info() (chargebarriergraph method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.ChargeBarrierGraph.populate_edges_with_chg_density_info"]], "pymatgen.analysis.diffusion.neb.full_path_mapper": [[18, "module-pymatgen.analysis.diffusion.neb.full_path_mapper"]], "symm_structure (migrationgraph property)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.symm_structure"]], "unique_hops (migrationgraph property)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.unique_hops"]], "with_base_structure() (migrationgraph class method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.with_base_structure"]], "with_distance() (migrationgraph class method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.with_distance"]], "with_local_env_strategy() (migrationgraph class method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.with_local_env_strategy"]], "mvlcinebendpointset (class in pymatgen.analysis.diffusion.neb.io)": [[19, "pymatgen.analysis.diffusion.neb.io.MVLCINEBEndPointSet"]], "mvlcinebset (class in pymatgen.analysis.diffusion.neb.io)": [[19, "pymatgen.analysis.diffusion.neb.io.MVLCINEBSet"]], "get_endpoint_dist() (in module pymatgen.analysis.diffusion.neb.io)": [[19, "pymatgen.analysis.diffusion.neb.io.get_endpoint_dist"]], "get_endpoints_from_index() (in module pymatgen.analysis.diffusion.neb.io)": [[19, "pymatgen.analysis.diffusion.neb.io.get_endpoints_from_index"]], "pymatgen.analysis.diffusion.neb.io": [[19, "module-pymatgen.analysis.diffusion.neb.io"]], "chgcarpotential (class in pymatgen.analysis.diffusion.neb.pathfinder)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.ChgcarPotential"]], "distinctpathfinder (class in pymatgen.analysis.diffusion.neb.pathfinder)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.DistinctPathFinder"]], "freevolumepotential (class in pymatgen.analysis.diffusion.neb.pathfinder)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.FreeVolumePotential"]], "idppsolver (class in pymatgen.analysis.diffusion.neb.pathfinder)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.IDPPSolver"]], "migrationhop (class in pymatgen.analysis.diffusion.neb.pathfinder)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.MigrationHop"]], "mixedpotential (class in pymatgen.analysis.diffusion.neb.pathfinder)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.MixedPotential"]], "nebpathfinder (class in pymatgen.analysis.diffusion.neb.pathfinder)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.NEBPathfinder"]], "staticpotential (class in pymatgen.analysis.diffusion.neb.pathfinder)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.StaticPotential"]], "from_endpoints() (idppsolver class method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.IDPPSolver.from_endpoints"]], "gaussian_smear() (staticpotential method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.StaticPotential.gaussian_smear"]], "get_paths() (distinctpathfinder method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.DistinctPathFinder.get_paths"]], "get_sc_structures() (migrationhop method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.MigrationHop.get_sc_structures"]], "get_structures() (migrationhop method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.MigrationHop.get_structures"]], "get_unit_vector() (idppsolver static method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.IDPPSolver.get_unit_vector"]], "get_v() (staticpotential method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.StaticPotential.get_v"]], "images (nebpathfinder property)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.NEBPathfinder.images"]], "interpolate() (nebpathfinder method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.NEBPathfinder.interpolate"]], "length (migrationhop property)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.MigrationHop.length"]], "normalize() (staticpotential method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.StaticPotential.normalize"]], "plot_images() (nebpathfinder method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.NEBPathfinder.plot_images"]], "pymatgen.analysis.diffusion.neb.pathfinder": [[20, "module-pymatgen.analysis.diffusion.neb.pathfinder"]], "rescale_field() (staticpotential method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.StaticPotential.rescale_field"]], "run() (idppsolver method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.IDPPSolver.run"]], "string_relax() (nebpathfinder static method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.NEBPathfinder.string_relax"]], "write_all_paths() (distinctpathfinder method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.DistinctPathFinder.write_all_paths"]], "write_path() (migrationhop method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.MigrationHop.write_path"]], "get_optimal_pathway_rev() (in module pymatgen.analysis.diffusion.neb.periodic_dijkstra)": [[21, "pymatgen.analysis.diffusion.neb.periodic_dijkstra.get_optimal_pathway_rev"]], "periodic_dijkstra() (in module pymatgen.analysis.diffusion.neb.periodic_dijkstra)": [[21, "pymatgen.analysis.diffusion.neb.periodic_dijkstra.periodic_dijkstra"]], "periodic_dijkstra_on_sgraph() (in module pymatgen.analysis.diffusion.neb.periodic_dijkstra)": [[21, "pymatgen.analysis.diffusion.neb.periodic_dijkstra.periodic_dijkstra_on_sgraph"]], "pymatgen.analysis.diffusion.neb.periodic_dijkstra": [[21, "module-pymatgen.analysis.diffusion.neb.periodic_dijkstra"]], "chargebarriergraphtest (class in pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.ChargeBarrierGraphTest"]], "migrationgraphcomplextest (class in pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest"]], "migrationgraphfromentriestest (class in pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphFromEntriesTest"]], "migrationgraphsimpletest (class in pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphSimpleTest"]], "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper": [[22, "module-pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper"]], "setup() (chargebarriergraphtest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.ChargeBarrierGraphTest.setUp"]], "setup() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.setUp"]], "setup() (migrationgraphfromentriestest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphFromEntriesTest.setUp"]], "setup() (migrationgraphsimpletest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphSimpleTest.setUp"]], "test_add_data_to_similar_edges() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_add_data_to_similar_edges"]], "test_assign_cost_to_graph() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_assign_cost_to_graph"]], "test_get_key_in_path() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_get_key_in_path"]], "test_get_path() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_get_path"]], "test_get_pos_and_migration_hop() (migrationgraphsimpletest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphSimpleTest.test_get_pos_and_migration_hop"]], "test_get_summary_dict() (chargebarriergraphtest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.ChargeBarrierGraphTest.test_get_summary_dict"]], "test_get_summary_dict() (migrationgraphsimpletest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphSimpleTest.test_get_summary_dict"]], "test_group_and_label_hops() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_group_and_label_hops"]], "test_integration() (chargebarriergraphtest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.ChargeBarrierGraphTest.test_integration"]], "test_m_graph_construction() (migrationgraphfromentriestest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphFromEntriesTest.test_m_graph_construction"]], "test_m_graph_from_entries_failed() (migrationgraphfromentriestest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphFromEntriesTest.test_m_graph_from_entries_failed"]], "test_not_matching_first() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_not_matching_first"]], "test_order_path() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_order_path"]], "test_periodic_dijkstra() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_periodic_dijkstra"]], "test_populate_edges_with_chg_density_info() (chargebarriergraphtest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.ChargeBarrierGraphTest.test_populate_edges_with_chg_density_info"]], "test_unique_hops_dict() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_unique_hops_dict"]], "mvlcinebendpointsettest (class in pymatgen.analysis.diffusion.neb.tests.test_io)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBEndPointSetTest"]], "mvlcinebsettest (class in pymatgen.analysis.diffusion.neb.tests.test_io)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBSetTest"]], "utilitytest (class in pymatgen.analysis.diffusion.neb.tests.test_io)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.UtilityTest"]], "endpoint (mvlcinebendpointsettest attribute)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBEndPointSetTest.endpoint"]], "get_path() (in module pymatgen.analysis.diffusion.neb.tests.test_io)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.get_path"]], "pymatgen.analysis.diffusion.neb.tests.test_io": [[23, "module-pymatgen.analysis.diffusion.neb.tests.test_io"]], "structure (utilitytest attribute)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.UtilityTest.structure"]], "structures (mvlcinebsettest attribute)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBSetTest.structures"]], "test_get_endpoint_dist() (utilitytest method)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.UtilityTest.test_get_endpoint_dist"]], "test_get_endpoints_from_index() (utilitytest method)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.UtilityTest.test_get_endpoints_from_index"]], "test_incar() (mvlcinebendpointsettest method)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBEndPointSetTest.test_incar"]], "test_incar() (mvlcinebsettest method)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBSetTest.test_incar"]], "test_incar_user_setting() (mvlcinebendpointsettest method)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBEndPointSetTest.test_incar_user_setting"]], "test_incar_user_setting() (mvlcinebsettest method)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBSetTest.test_incar_user_setting"]], "distinctpathfindertest (class in pymatgen.analysis.diffusion.neb.tests.test_pathfinder)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.DistinctPathFinderTest"]], "idppsolvertest (class in pymatgen.analysis.diffusion.neb.tests.test_pathfinder)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.IDPPSolverTest"]], "migrationhoptest (class in pymatgen.analysis.diffusion.neb.tests.test_pathfinder)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.MigrationHopTest"]], "final_struct (idppsolvertest attribute)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.IDPPSolverTest.final_struct"]], "get_path() (in module pymatgen.analysis.diffusion.neb.tests.test_pathfinder)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.get_path"]], "init_struct (idppsolvertest attribute)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.IDPPSolverTest.init_struct"]], "pymatgen.analysis.diffusion.neb.tests.test_pathfinder": [[24, "module-pymatgen.analysis.diffusion.neb.tests.test_pathfinder"]], "setup() (migrationhoptest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.MigrationHopTest.setUp"]], "test_get_paths() (distinctpathfindertest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.DistinctPathFinderTest.test_get_paths"]], "test_get_sc_structures() (migrationhoptest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.MigrationHopTest.test_get_sc_structures"]], "test_get_sc_structures_vacmode() (migrationhoptest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.MigrationHopTest.test_get_sc_structures_vacmode"]], "test_get_start_end_structs_from_hop() (migrationhoptest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.MigrationHopTest.test_get_start_end_structs_from_hop"]], "test_get_start_end_structs_from_hop_vac() (migrationhoptest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.MigrationHopTest.test_get_start_end_structs_from_hop_vac"]], "test_idpp() (idppsolvertest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.IDPPSolverTest.test_idpp"]], "test_idpp_from_ep() (idppsolvertest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.IDPPSolverTest.test_idpp_from_ep"]], "test_idpp_from_ep_diff_latt() (idppsolvertest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.IDPPSolverTest.test_idpp_from_ep_diff_latt"]], "test_max_path_length() (distinctpathfindertest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.DistinctPathFinderTest.test_max_path_length"]], "test_msonable() (migrationhoptest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.MigrationHopTest.test_msonable"]], "diffusionanalyzertest (class in pymatgen.analysis.diffusion.tests.test_analyzer)": [[25, "pymatgen.analysis.diffusion.tests.test_analyzer.DiffusionAnalyzerTest"]], "functest (class in pymatgen.analysis.diffusion.tests.test_analyzer)": [[25, "pymatgen.analysis.diffusion.tests.test_analyzer.FuncTest"]], "pymatgen.analysis.diffusion.tests.test_analyzer": [[25, "module-pymatgen.analysis.diffusion.tests.test_analyzer"]], "test_fit_arrhenius() (functest method)": [[25, "pymatgen.analysis.diffusion.tests.test_analyzer.FuncTest.test_fit_arrhenius"]], "test_from_structure_npt() (diffusionanalyzertest method)": [[25, "pymatgen.analysis.diffusion.tests.test_analyzer.DiffusionAnalyzerTest.test_from_structure_NPT"]], "test_get_conversion_factor() (functest method)": [[25, "pymatgen.analysis.diffusion.tests.test_analyzer.FuncTest.test_get_conversion_factor"]], "test_init() (diffusionanalyzertest method)": [[25, "pymatgen.analysis.diffusion.tests.test_analyzer.DiffusionAnalyzerTest.test_init"]], "test_init_npt() (diffusionanalyzertest method)": [[25, "pymatgen.analysis.diffusion.tests.test_analyzer.DiffusionAnalyzerTest.test_init_npt"]], "pathfindertest (class in pymatgen.analysis.diffusion.tests.test_pathfinder)": [[26, "pymatgen.analysis.diffusion.tests.test_pathfinder.PathfinderTest"]], "pymatgen.analysis.diffusion.tests.test_pathfinder": [[26, "module-pymatgen.analysis.diffusion.tests.test_pathfinder"]], "test_mhop_msonable() (pathfindertest method)": [[26, "pymatgen.analysis.diffusion.tests.test_pathfinder.PathfinderTest.test_mhop_msonable"]], "pymatgen.analysis.diffusion.utils": [[27, "module-pymatgen.analysis.diffusion.utils"]], "add_edge_data_from_sc() (in module pymatgen.analysis.diffusion.utils.edge_data_from_sc)": [[28, "pymatgen.analysis.diffusion.utils.edge_data_from_sc.add_edge_data_from_sc"]], "get_uc_pos() (in module pymatgen.analysis.diffusion.utils.edge_data_from_sc)": [[28, "pymatgen.analysis.diffusion.utils.edge_data_from_sc.get_uc_pos"]], "get_unique_hop() (in module pymatgen.analysis.diffusion.utils.edge_data_from_sc)": [[28, "pymatgen.analysis.diffusion.utils.edge_data_from_sc.get_unique_hop"]], "mh_eq() (in module pymatgen.analysis.diffusion.utils.edge_data_from_sc)": [[28, "pymatgen.analysis.diffusion.utils.edge_data_from_sc.mh_eq"]], "pymatgen.analysis.diffusion.utils.edge_data_from_sc": [[28, "module-pymatgen.analysis.diffusion.utils.edge_data_from_sc"]], "get_entries_from_dbs() (in module pymatgen.analysis.diffusion.utils.maggma)": [[29, "pymatgen.analysis.diffusion.utils.maggma.get_entries_from_dbs"]], "pymatgen.analysis.diffusion.utils.maggma": [[29, "module-pymatgen.analysis.diffusion.utils.maggma"]], "get_inserted_on_base() (in module pymatgen.analysis.diffusion.utils.parse_entries)": [[30, "pymatgen.analysis.diffusion.utils.parse_entries.get_inserted_on_base"]], "get_insertion_energy() (in module pymatgen.analysis.diffusion.utils.parse_entries)": [[30, "pymatgen.analysis.diffusion.utils.parse_entries.get_insertion_energy"]], "get_matched_structure_mapping() (in module pymatgen.analysis.diffusion.utils.parse_entries)": [[30, "pymatgen.analysis.diffusion.utils.parse_entries.get_matched_structure_mapping"]], "get_sym_migration_ion_sites() (in module pymatgen.analysis.diffusion.utils.parse_entries)": [[30, "pymatgen.analysis.diffusion.utils.parse_entries.get_sym_migration_ion_sites"]], "process_entries() (in module pymatgen.analysis.diffusion.utils.parse_entries)": [[30, "pymatgen.analysis.diffusion.utils.parse_entries.process_entries"]], "pymatgen.analysis.diffusion.utils.parse_entries": [[30, "module-pymatgen.analysis.diffusion.utils.parse_entries"]], "get_sc_fromstruct() (in module pymatgen.analysis.diffusion.utils.supercells)": [[31, "pymatgen.analysis.diffusion.utils.supercells.get_sc_fromstruct"]], "get_start_end_structures() (in module pymatgen.analysis.diffusion.utils.supercells)": [[31, "pymatgen.analysis.diffusion.utils.supercells.get_start_end_structures"]], "pymatgen.analysis.diffusion.utils.supercells": [[31, "module-pymatgen.analysis.diffusion.utils.supercells"]], "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc": [[32, "module-pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc"]], "test_add_edge_data_from_sc() (in module pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc)": [[32, "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc.test_add_edge_data_from_sc"]], "test_get_uc_pos() (in module pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc)": [[32, "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc.test_get_uc_pos"]], "test_get_unique_hop_host() (in module pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc)": [[32, "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc.test_get_unique_hop_host"]], "test_get_unique_host_nonhost() (in module pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc)": [[32, "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc.test_get_unique_host_nonhost"]], "maggma_stores() (in module pymatgen.analysis.diffusion.utils.tests.test_maggma)": [[33, "pymatgen.analysis.diffusion.utils.tests.test_maggma.maggma_stores"]], "pymatgen.analysis.diffusion.utils.tests.test_maggma": [[33, "module-pymatgen.analysis.diffusion.utils.tests.test_maggma"]], "test() (in module pymatgen.analysis.diffusion.utils.tests.test_maggma)": [[33, "pymatgen.analysis.diffusion.utils.tests.test_maggma.test"]], "parseentriestest (class in pymatgen.analysis.diffusion.utils.tests.test_parse_entries)": [[34, "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.ParseEntriesTest"]], "pymatgen.analysis.diffusion.utils.tests.test_parse_entries": [[34, "module-pymatgen.analysis.diffusion.utils.tests.test_parse_entries"]], "setup() (parseentriestest method)": [[34, "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.ParseEntriesTest.setUp"]], "test_filter_and_merge() (parseentriestest method)": [[34, "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.ParseEntriesTest.test_filter_and_merge"]], "test_get_all_sym_sites() (parseentriestest method)": [[34, "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.ParseEntriesTest.test_get_all_sym_sites"]], "test_get_inserted_on_base() (parseentriestest method)": [[34, "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.ParseEntriesTest.test_get_inserted_on_base"]], "test_get_insertion_energy() (parseentriestest method)": [[34, "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.ParseEntriesTest.test_get_insertion_energy"]], "test_process_ents() (parseentriestest method)": [[34, "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.ParseEntriesTest.test_process_ents"]]}}) \ No newline at end of file +Search.setIndex({"alltitles": {"API documentation": [[2, "api-documentation"]], "Acknowledgements": [[2, "acknowledgements"]], "Change Log": [[1, "change-log"], [2, "change-log"]], "Citing": [[2, "citing"]], "Contributing": [[2, "contributing"]], "Features (non-exhaustive!)": [[2, "features-non-exhaustive"]], "Indices and tables": [[2, "indices-and-tables"]], "Introduction": [[2, "introduction"]], "License": [[2, "license"]], "Module contents": [[6, "module-pymatgen.analysis.diffusion"], [7, "module-pymatgen.analysis.diffusion.aimd"], [17, "module-pymatgen.analysis.diffusion.neb"], [27, "module-pymatgen.analysis.diffusion.utils"], [35, "module-contents"], [36, "module-contents"], [37, "module-contents"]], "Our Copyright Policy": [[2, "our-copyright-policy"]], "Submodules": [[6, "submodules"], [7, "submodules"], [17, "submodules"], [27, "submodules"], [36, "submodules"], [37, "submodules"]], "Subpackages": [[5, "subpackages"], [6, "subpackages"], [7, "subpackages"], [17, "subpackages"], [27, "subpackages"], [35, "subpackages"], [36, "subpackages"], [37, "subpackages"]], "krTheme Sphinx Style": [[0, "krtheme-sphinx-style"]], "pymatgen": [[3, "pymatgen"]], "pymatgen namespace": [[4, "module-pymatgen"]], "pymatgen.analysis namespace": [[5, "module-pymatgen.analysis"]], "pymatgen.analysis.diffusion package": [[6, "pymatgen-analysis-diffusion-package"]], "pymatgen.analysis.diffusion.aimd package": [[7, "pymatgen-analysis-diffusion-aimd-package"]], "pymatgen.analysis.diffusion.aimd.clustering module": [[8, "module-pymatgen.analysis.diffusion.aimd.clustering"]], "pymatgen.analysis.diffusion.aimd.pathway module": [[9, "module-pymatgen.analysis.diffusion.aimd.pathway"]], "pymatgen.analysis.diffusion.aimd.rdf module": [[10, "module-pymatgen.analysis.diffusion.aimd.rdf"]], "pymatgen.analysis.diffusion.aimd.tests.test_clustering module": [[11, "module-pymatgen.analysis.diffusion.aimd.tests.test_clustering"]], "pymatgen.analysis.diffusion.aimd.tests.test_pathway module": [[12, "module-pymatgen.analysis.diffusion.aimd.tests.test_pathway"]], "pymatgen.analysis.diffusion.aimd.tests.test_rdf module": [[13, "module-pymatgen.analysis.diffusion.aimd.tests.test_rdf"]], "pymatgen.analysis.diffusion.aimd.tests.test_van_hove module": [[14, "module-pymatgen.analysis.diffusion.aimd.tests.test_van_hove"]], "pymatgen.analysis.diffusion.aimd.van_hove module": [[15, "module-pymatgen.analysis.diffusion.aimd.van_hove"]], "pymatgen.analysis.diffusion.analyzer module": [[16, "module-pymatgen.analysis.diffusion.analyzer"]], "pymatgen.analysis.diffusion.neb package": [[17, "pymatgen-analysis-diffusion-neb-package"]], "pymatgen.analysis.diffusion.neb.full_path_mapper module": [[18, "module-pymatgen.analysis.diffusion.neb.full_path_mapper"]], "pymatgen.analysis.diffusion.neb.io module": [[19, "module-pymatgen.analysis.diffusion.neb.io"]], "pymatgen.analysis.diffusion.neb.pathfinder module": [[20, "module-pymatgen.analysis.diffusion.neb.pathfinder"]], "pymatgen.analysis.diffusion.neb.periodic_dijkstra module": [[21, "module-pymatgen.analysis.diffusion.neb.periodic_dijkstra"]], "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper module": [[22, "module-pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper"]], "pymatgen.analysis.diffusion.neb.tests.test_io module": [[23, "module-pymatgen.analysis.diffusion.neb.tests.test_io"]], "pymatgen.analysis.diffusion.neb.tests.test_pathfinder module": [[24, "module-pymatgen.analysis.diffusion.neb.tests.test_pathfinder"]], "pymatgen.analysis.diffusion.tests.test_analyzer module": [[25, "module-pymatgen.analysis.diffusion.tests.test_analyzer"]], "pymatgen.analysis.diffusion.tests.test_pathfinder module": [[26, "module-pymatgen.analysis.diffusion.tests.test_pathfinder"]], "pymatgen.analysis.diffusion.utils package": [[27, "pymatgen-analysis-diffusion-utils-package"]], "pymatgen.analysis.diffusion.utils.edge_data_from_sc module": [[28, "module-pymatgen.analysis.diffusion.utils.edge_data_from_sc"]], "pymatgen.analysis.diffusion.utils.maggma module": [[29, "module-pymatgen.analysis.diffusion.utils.maggma"]], "pymatgen.analysis.diffusion.utils.parse_entries module": [[30, "module-pymatgen.analysis.diffusion.utils.parse_entries"]], "pymatgen.analysis.diffusion.utils.supercells module": [[31, "module-pymatgen.analysis.diffusion.utils.supercells"]], "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc module": [[32, "module-pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc"]], "pymatgen.analysis.diffusion.utils.tests.test_maggma module": [[33, "pymatgen-analysis-diffusion-utils-tests-test-maggma-module"]], "pymatgen.analysis.diffusion.utils.tests.test_parse_entries module": [[34, "module-pymatgen.analysis.diffusion.utils.tests.test_parse_entries"]], "pymatgen_diffusion package": [[35, "pymatgen-diffusion-package"]], "pymatgen_diffusion.aimd package": [[36, "pymatgen-diffusion-aimd-package"]], "pymatgen_diffusion.aimd.clustering module": [[36, "pymatgen-diffusion-aimd-clustering-module"]], "pymatgen_diffusion.aimd.pathway module": [[36, "pymatgen-diffusion-aimd-pathway-module"]], "pymatgen_diffusion.aimd.rdf module": [[36, "pymatgen-diffusion-aimd-rdf-module"]], "pymatgen_diffusion.aimd.van_hove module": [[36, "pymatgen-diffusion-aimd-van-hove-module"]], "pymatgen_diffusion.neb package": [[37, "pymatgen-diffusion-neb-package"]], "pymatgen_diffusion.neb.full_path_mapper module": [[37, "pymatgen-diffusion-neb-full-path-mapper-module"]], "pymatgen_diffusion.neb.io module": [[37, "pymatgen-diffusion-neb-io-module"]], "pymatgen_diffusion.neb.pathfinder module": [[37, "pymatgen-diffusion-neb-pathfinder-module"]], "pymatgen_diffusion.neb.periodic_dijkstra module": [[37, "pymatgen-diffusion-neb-periodic-dijkstra-module"]], "v0.3.0": [[1, "v0-3-0"]], "v2018.1.4": [[1, "v2018-1-4"]], "v2019.2.28": [[1, "v2019-2-28"]], "v2021.3.5": [[1, "v2021-3-5"]], "v2021.3.6": [[1, "v2021-3-6"]], "v2021.4.29": [[1, "v2021-4-29"]], "v2022.4.22": [[1, "v2022-4-22"]], "v2023.8.15": [[1, "v2023-8-15"]]}, "docnames": ["_themes/README", "change_log", "index", "modules", "pymatgen", "pymatgen.analysis", "pymatgen.analysis.diffusion", "pymatgen.analysis.diffusion.aimd", "pymatgen.analysis.diffusion.aimd.clustering", "pymatgen.analysis.diffusion.aimd.pathway", "pymatgen.analysis.diffusion.aimd.rdf", "pymatgen.analysis.diffusion.aimd.tests.test_clustering", "pymatgen.analysis.diffusion.aimd.tests.test_pathway", "pymatgen.analysis.diffusion.aimd.tests.test_rdf", "pymatgen.analysis.diffusion.aimd.tests.test_van_hove", "pymatgen.analysis.diffusion.aimd.van_hove", "pymatgen.analysis.diffusion.analyzer", "pymatgen.analysis.diffusion.neb", "pymatgen.analysis.diffusion.neb.full_path_mapper", "pymatgen.analysis.diffusion.neb.io", "pymatgen.analysis.diffusion.neb.pathfinder", "pymatgen.analysis.diffusion.neb.periodic_dijkstra", "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper", "pymatgen.analysis.diffusion.neb.tests.test_io", "pymatgen.analysis.diffusion.neb.tests.test_pathfinder", "pymatgen.analysis.diffusion.tests.test_analyzer", "pymatgen.analysis.diffusion.tests.test_pathfinder", "pymatgen.analysis.diffusion.utils", "pymatgen.analysis.diffusion.utils.edge_data_from_sc", "pymatgen.analysis.diffusion.utils.maggma", "pymatgen.analysis.diffusion.utils.parse_entries", "pymatgen.analysis.diffusion.utils.supercells", "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc", "pymatgen.analysis.diffusion.utils.tests.test_maggma", "pymatgen.analysis.diffusion.utils.tests.test_parse_entries", "pymatgen_diffusion", "pymatgen_diffusion.aimd", "pymatgen_diffusion.neb"], "envversion": {"sphinx": 61, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1}, "filenames": ["_themes/README.rst", "change_log.rst", "index.rst", "modules.rst", "pymatgen.rst", "pymatgen.analysis.rst", "pymatgen.analysis.diffusion.rst", "pymatgen.analysis.diffusion.aimd.rst", "pymatgen.analysis.diffusion.aimd.clustering.rst", "pymatgen.analysis.diffusion.aimd.pathway.rst", "pymatgen.analysis.diffusion.aimd.rdf.rst", "pymatgen.analysis.diffusion.aimd.tests.test_clustering.rst", "pymatgen.analysis.diffusion.aimd.tests.test_pathway.rst", "pymatgen.analysis.diffusion.aimd.tests.test_rdf.rst", "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.rst", "pymatgen.analysis.diffusion.aimd.van_hove.rst", "pymatgen.analysis.diffusion.analyzer.rst", "pymatgen.analysis.diffusion.neb.rst", "pymatgen.analysis.diffusion.neb.full_path_mapper.rst", "pymatgen.analysis.diffusion.neb.io.rst", "pymatgen.analysis.diffusion.neb.pathfinder.rst", "pymatgen.analysis.diffusion.neb.periodic_dijkstra.rst", "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.rst", "pymatgen.analysis.diffusion.neb.tests.test_io.rst", "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.rst", "pymatgen.analysis.diffusion.tests.test_analyzer.rst", "pymatgen.analysis.diffusion.tests.test_pathfinder.rst", "pymatgen.analysis.diffusion.utils.rst", "pymatgen.analysis.diffusion.utils.edge_data_from_sc.rst", "pymatgen.analysis.diffusion.utils.maggma.rst", "pymatgen.analysis.diffusion.utils.parse_entries.rst", "pymatgen.analysis.diffusion.utils.supercells.rst", "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc.rst", "pymatgen.analysis.diffusion.utils.tests.test_maggma.rst", "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.rst", "pymatgen_diffusion.rst", "pymatgen_diffusion.aimd.rst", "pymatgen_diffusion.neb.rst"], "indexentries": {"add_data_to_similar_edges() (migrationgraph method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.add_data_to_similar_edges", false]], "add_edge_data_from_sc() (in module pymatgen.analysis.diffusion.utils.edge_data_from_sc)": [[28, "pymatgen.analysis.diffusion.utils.edge_data_from_sc.add_edge_data_from_sc", false]], "almost() (in module pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.almost", false]], "as_dict() (diffusionanalyzer method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.as_dict", false]], "assign_cost_to_graph() (migrationgraph method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.assign_cost_to_graph", false]], "atom_dist() (evolutionanalyzer static method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer.atom_dist", false]], "chargebarriergraph (class in pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.ChargeBarrierGraph", false]], "chargebarriergraphtest (class in pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.ChargeBarrierGraphTest", false]], "check_uc_hop() (in module pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.check_uc_hop", false]], "chgcarpotential (class in pymatgen.analysis.diffusion.neb.pathfinder)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.ChgcarPotential", false]], "cluster() (kmeans method)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.Kmeans.cluster", false]], "coordination_number (radialdistributionfunction property)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunction.coordination_number", false]], "coords_ref (siteoccupancyanalyzer attribute)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.SiteOccupancyAnalyzer.coords_ref", false]], "diffusionanalyzer (class in pymatgen.analysis.diffusion.analyzer)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer", false]], "diffusionanalyzertest (class in pymatgen.analysis.diffusion.tests.test_analyzer)": [[25, "pymatgen.analysis.diffusion.tests.test_analyzer.DiffusionAnalyzerTest", false]], "distinctpathfinder (class in pymatgen.analysis.diffusion.neb.pathfinder)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.DistinctPathFinder", false]], "distinctpathfindertest (class in pymatgen.analysis.diffusion.neb.tests.test_pathfinder)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.DistinctPathFinderTest", false]], "endpoint (mvlcinebendpointsettest attribute)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBEndPointSetTest.endpoint", false]], "evolutionanalyzer (class in pymatgen.analysis.diffusion.aimd.van_hove)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer", false]], "evolutionanalyzertest (class in pymatgen.analysis.diffusion.aimd.tests.test_van_hove)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.EvolutionAnalyzerTest", false]], "export_msdt() (diffusionanalyzer method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.export_msdt", false]], "export_rdf() (radialdistributionfunction method)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunction.export_rdf", false]], "final_struct (idppsolvertest attribute)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.IDPPSolverTest.final_struct", false]], "fit_arrhenius() (in module pymatgen.analysis.diffusion.analyzer)": [[16, "pymatgen.analysis.diffusion.analyzer.fit_arrhenius", false]], "freevolumepotential (class in pymatgen.analysis.diffusion.neb.pathfinder)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.FreeVolumePotential", false]], "from_dict() (diffusionanalyzer class method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.from_dict", false]], "from_diffusion_analyzer() (probabilitydensityanalysis class method)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.ProbabilityDensityAnalysis.from_diffusion_analyzer", false]], "from_diffusion_analyzer() (siteoccupancyanalyzer class method)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.SiteOccupancyAnalyzer.from_diffusion_analyzer", false]], "from_endpoints() (idppsolver class method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.IDPPSolver.from_endpoints", false]], "from_files() (diffusionanalyzer class method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.from_files", false]], "from_species() (radialdistributionfunction class method)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunction.from_species", false]], "from_structures() (diffusionanalyzer class method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.from_structures", false]], "from_vaspruns() (diffusionanalyzer class method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.from_vaspruns", false]], "functest (class in pymatgen.analysis.diffusion.tests.test_analyzer)": [[25, "pymatgen.analysis.diffusion.tests.test_analyzer.FuncTest", false]], "gaussian_smear() (staticpotential method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.StaticPotential.gaussian_smear", false]], "generate_stable_sites() (probabilitydensityanalysis method)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.ProbabilityDensityAnalysis.generate_stable_sites", false]], "generic_groupby() (in module pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.generic_groupby", false]], "get_1d_plot() (vanhoveanalysis method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.VanHoveAnalysis.get_1d_plot", false]], "get_3d_plot() (vanhoveanalysis method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.VanHoveAnalysis.get_3d_plot", false]], "get_arrhenius_plot() (in module pymatgen.analysis.diffusion.analyzer)": [[16, "pymatgen.analysis.diffusion.analyzer.get_arrhenius_plot", false]], "get_average_site_occupancy() (siteoccupancyanalyzer method)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.SiteOccupancyAnalyzer.get_average_site_occupancy", false]], "get_centroids() (kmeans static method)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.Kmeans.get_centroids", false]], "get_centroids() (kmeanspbc method)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.KmeansPBC.get_centroids", false]], "get_conversion_factor() (in module pymatgen.analysis.diffusion.analyzer)": [[16, "pymatgen.analysis.diffusion.analyzer.get_conversion_factor", false]], "get_coordination_number() (radialdistributionfunctionfast method)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunctionFast.get_coordination_number", false]], "get_df() (evolutionanalyzer method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer.get_df", false]], "get_diffusivity_from_msd() (in module pymatgen.analysis.diffusion.analyzer)": [[16, "pymatgen.analysis.diffusion.analyzer.get_diffusivity_from_msd", false]], "get_drift_corrected_structures() (diffusionanalyzer method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.get_drift_corrected_structures", false]], "get_endpoint_dist() (in module pymatgen.analysis.diffusion.neb.io)": [[19, "pymatgen.analysis.diffusion.neb.io.get_endpoint_dist", false]], "get_endpoints_from_index() (in module pymatgen.analysis.diffusion.neb.io)": [[19, "pymatgen.analysis.diffusion.neb.io.get_endpoints_from_index", false]], "get_entries_from_dbs() (in module pymatgen.analysis.diffusion.utils.maggma)": [[29, "pymatgen.analysis.diffusion.utils.maggma.get_entries_from_dbs", false]], "get_extrapolated_conductivity() (in module pymatgen.analysis.diffusion.analyzer)": [[16, "pymatgen.analysis.diffusion.analyzer.get_extrapolated_conductivity", false]], "get_extrapolated_diffusivity() (in module pymatgen.analysis.diffusion.analyzer)": [[16, "pymatgen.analysis.diffusion.analyzer.get_extrapolated_diffusivity", false]], "get_framework_rms_plot() (diffusionanalyzer method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.get_framework_rms_plot", false]], "get_full_structure() (probabilitydensityanalysis method)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.ProbabilityDensityAnalysis.get_full_structure", false]], "get_hop_site_sequence() (in module pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.get_hop_site_sequence", false]], "get_inserted_on_base() (in module pymatgen.analysis.diffusion.utils.parse_entries)": [[30, "pymatgen.analysis.diffusion.utils.parse_entries.get_inserted_on_base", false]], "get_insertion_energy() (in module pymatgen.analysis.diffusion.utils.parse_entries)": [[30, "pymatgen.analysis.diffusion.utils.parse_entries.get_insertion_energy", false]], "get_labels() (kmeans static method)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.Kmeans.get_labels", false]], "get_labels() (kmeanspbc method)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.KmeansPBC.get_labels", false]], "get_least_chg_path() (chargebarriergraph method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.ChargeBarrierGraph.get_least_chg_path", false]], "get_matched_structure_mapping() (in module pymatgen.analysis.diffusion.utils.parse_entries)": [[30, "pymatgen.analysis.diffusion.utils.parse_entries.get_matched_structure_mapping", false]], "get_min_dist() (evolutionanalyzer static method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer.get_min_dist", false]], "get_msd_plot() (diffusionanalyzer method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.get_msd_plot", false]], "get_one_rdf() (radialdistributionfunctionfast method)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunctionFast.get_one_rdf", false]], "get_only_sites_from_structure() (in module pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.get_only_sites_from_structure", false]], "get_optimal_pathway_rev() (in module pymatgen.analysis.diffusion.neb.periodic_dijkstra)": [[21, "pymatgen.analysis.diffusion.neb.periodic_dijkstra.get_optimal_pathway_rev", false]], "get_pairs() (evolutionanalyzer static method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer.get_pairs", false]], "get_path() (in module pymatgen.analysis.diffusion.neb.tests.test_io)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.get_path", false]], "get_path() (in module pymatgen.analysis.diffusion.neb.tests.test_pathfinder)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.get_path", false]], "get_path() (migrationgraph method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.get_path", false]], "get_paths() (distinctpathfinder method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.DistinctPathFinder.get_paths", false]], "get_random_centroid() (in module pymatgen.analysis.diffusion.aimd.clustering)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.get_random_centroid", false]], "get_random_centroids() (in module pymatgen.analysis.diffusion.aimd.clustering)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.get_random_centroids", false]], "get_rdf() (radialdistributionfunctionfast method)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunctionFast.get_rdf", false]], "get_rdf_plot() (radialdistributionfunction method)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunction.get_rdf_plot", false]], "get_sc_fromstruct() (in module pymatgen.analysis.diffusion.utils.supercells)": [[31, "pymatgen.analysis.diffusion.utils.supercells.get_sc_fromstruct", false]], "get_sc_structures() (migrationhop method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.MigrationHop.get_sc_structures", false]], "get_start_end_structures() (in module pymatgen.analysis.diffusion.utils.supercells)": [[31, "pymatgen.analysis.diffusion.utils.supercells.get_start_end_structures", false]], "get_structure_from_entries() (migrationgraph static method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.get_structure_from_entries", false]], "get_structures() (migrationhop method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.MigrationHop.get_structures", false]], "get_summary_dict() (chargebarriergraph method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.ChargeBarrierGraph.get_summary_dict", false]], "get_summary_dict() (diffusionanalyzer method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.get_summary_dict", false]], "get_summary_dict() (migrationgraph method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.get_summary_dict", false]], "get_sym_migration_ion_sites() (in module pymatgen.analysis.diffusion.utils.parse_entries)": [[30, "pymatgen.analysis.diffusion.utils.parse_entries.get_sym_migration_ion_sites", false]], "get_uc_pos() (in module pymatgen.analysis.diffusion.utils.edge_data_from_sc)": [[28, "pymatgen.analysis.diffusion.utils.edge_data_from_sc.get_uc_pos", false]], "get_unique_hop() (in module pymatgen.analysis.diffusion.utils.edge_data_from_sc)": [[28, "pymatgen.analysis.diffusion.utils.edge_data_from_sc.get_unique_hop", false]], "get_unit_vector() (idppsolver static method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.IDPPSolver.get_unit_vector", false]], "get_v() (staticpotential method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.StaticPotential.get_v", false]], "host_structure (migrationgraph property)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.host_structure", false]], "idppsolver (class in pymatgen.analysis.diffusion.neb.pathfinder)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.IDPPSolver", false]], "idppsolvertest (class in pymatgen.analysis.diffusion.neb.tests.test_pathfinder)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.IDPPSolverTest", false]], "images (nebpathfinder property)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.NEBPathfinder.images", false]], "init_struct (idppsolvertest attribute)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.IDPPSolverTest.init_struct", false]], "interpolate() (nebpathfinder method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.NEBPathfinder.interpolate", false]], "kmeans (class in pymatgen.analysis.diffusion.aimd.clustering)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.Kmeans", false]], "kmeanspbc (class in pymatgen.analysis.diffusion.aimd.clustering)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.KmeansPBC", false]], "kmeanspbctest (class in pymatgen.analysis.diffusion.aimd.tests.test_clustering)": [[11, "pymatgen.analysis.diffusion.aimd.tests.test_clustering.KmeansPBCTest", false]], "kmeanstest (class in pymatgen.analysis.diffusion.aimd.tests.test_clustering)": [[11, "pymatgen.analysis.diffusion.aimd.tests.test_clustering.KmeansTest", false]], "length (migrationhop property)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.MigrationHop.length", false]], "map_hop_sc2uc() (in module pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.map_hop_sc2uc", false]], "mh_eq() (in module pymatgen.analysis.diffusion.utils.edge_data_from_sc)": [[28, "pymatgen.analysis.diffusion.utils.edge_data_from_sc.mh_eq", false]], "migrationgraph (class in pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph", false]], "migrationgraphcomplextest (class in pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest", false]], "migrationgraphfromentriestest (class in pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphFromEntriesTest", false]], "migrationgraphsimpletest (class in pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphSimpleTest", false]], "migrationhop (class in pymatgen.analysis.diffusion.neb.pathfinder)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.MigrationHop", false]], "migrationhoptest (class in pymatgen.analysis.diffusion.neb.tests.test_pathfinder)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.MigrationHopTest", false]], "mixedpotential (class in pymatgen.analysis.diffusion.neb.pathfinder)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.MixedPotential", false]], "module": [[4, "module-pymatgen", false], [5, "module-pymatgen.analysis", false], [6, "module-pymatgen.analysis.diffusion", false], [7, "module-pymatgen.analysis.diffusion.aimd", false], [8, "module-pymatgen.analysis.diffusion.aimd.clustering", false], [9, "module-pymatgen.analysis.diffusion.aimd.pathway", false], [10, "module-pymatgen.analysis.diffusion.aimd.rdf", false], [11, "module-pymatgen.analysis.diffusion.aimd.tests.test_clustering", false], [12, "module-pymatgen.analysis.diffusion.aimd.tests.test_pathway", false], [13, "module-pymatgen.analysis.diffusion.aimd.tests.test_rdf", false], [14, "module-pymatgen.analysis.diffusion.aimd.tests.test_van_hove", false], [15, "module-pymatgen.analysis.diffusion.aimd.van_hove", false], [16, "module-pymatgen.analysis.diffusion.analyzer", false], [17, "module-pymatgen.analysis.diffusion.neb", false], [18, "module-pymatgen.analysis.diffusion.neb.full_path_mapper", false], [19, "module-pymatgen.analysis.diffusion.neb.io", false], [20, "module-pymatgen.analysis.diffusion.neb.pathfinder", false], [21, "module-pymatgen.analysis.diffusion.neb.periodic_dijkstra", false], [22, "module-pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper", false], [23, "module-pymatgen.analysis.diffusion.neb.tests.test_io", false], [24, "module-pymatgen.analysis.diffusion.neb.tests.test_pathfinder", false], [25, "module-pymatgen.analysis.diffusion.tests.test_analyzer", false], [26, "module-pymatgen.analysis.diffusion.tests.test_pathfinder", false], [27, "module-pymatgen.analysis.diffusion.utils", false], [28, "module-pymatgen.analysis.diffusion.utils.edge_data_from_sc", false], [29, "module-pymatgen.analysis.diffusion.utils.maggma", false], [30, "module-pymatgen.analysis.diffusion.utils.parse_entries", false], [31, "module-pymatgen.analysis.diffusion.utils.supercells", false], [32, "module-pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc", false], [34, "module-pymatgen.analysis.diffusion.utils.tests.test_parse_entries", false]], "mvlcinebendpointset (class in pymatgen.analysis.diffusion.neb.io)": [[19, "pymatgen.analysis.diffusion.neb.io.MVLCINEBEndPointSet", false]], "mvlcinebendpointsettest (class in pymatgen.analysis.diffusion.neb.tests.test_io)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBEndPointSetTest", false]], "mvlcinebset (class in pymatgen.analysis.diffusion.neb.io)": [[19, "pymatgen.analysis.diffusion.neb.io.MVLCINEBSet", false]], "mvlcinebsettest (class in pymatgen.analysis.diffusion.neb.tests.test_io)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBSetTest", false]], "nebpathfinder (class in pymatgen.analysis.diffusion.neb.pathfinder)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.NEBPathfinder", false]], "normalize() (staticpotential method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.StaticPotential.normalize", false]], "nsites (siteoccupancyanalyzer attribute)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.SiteOccupancyAnalyzer.nsites", false]], "only_sites (migrationgraph property)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.only_sites", false]], "order_path() (in module pymatgen.analysis.diffusion.neb.full_path_mapper)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.order_path", false]], "parseentriestest (class in pymatgen.analysis.diffusion.utils.tests.test_parse_entries)": [[34, "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.ParseEntriesTest", false]], "pathfindertest (class in pymatgen.analysis.diffusion.tests.test_pathfinder)": [[26, "pymatgen.analysis.diffusion.tests.test_pathfinder.PathfinderTest", false]], "periodic_dijkstra() (in module pymatgen.analysis.diffusion.neb.periodic_dijkstra)": [[21, "pymatgen.analysis.diffusion.neb.periodic_dijkstra.periodic_dijkstra", false]], "periodic_dijkstra_on_sgraph() (in module pymatgen.analysis.diffusion.neb.periodic_dijkstra)": [[21, "pymatgen.analysis.diffusion.neb.periodic_dijkstra.periodic_dijkstra_on_sgraph", false]], "plot_atomic_evolution() (evolutionanalyzer method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer.plot_atomic_evolution", false]], "plot_evolution_from_data() (evolutionanalyzer static method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer.plot_evolution_from_data", false]], "plot_images() (nebpathfinder method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.NEBPathfinder.plot_images", false]], "plot_msd() (diffusionanalyzer method)": [[16, "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer.plot_msd", false]], "plot_rdf_evolution() (evolutionanalyzer method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer.plot_rdf_evolution", false]], "populate_edges_with_chg_density_info() (chargebarriergraph method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.ChargeBarrierGraph.populate_edges_with_chg_density_info", false]], "probabilitydensityanalysis (class in pymatgen.analysis.diffusion.aimd.pathway)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.ProbabilityDensityAnalysis", false]], "probabilitydensitytest (class in pymatgen.analysis.diffusion.aimd.tests.test_pathway)": [[12, "pymatgen.analysis.diffusion.aimd.tests.test_pathway.ProbabilityDensityTest", false]], "process_entries() (in module pymatgen.analysis.diffusion.utils.parse_entries)": [[30, "pymatgen.analysis.diffusion.utils.parse_entries.process_entries", false]], "pymatgen": [[4, "module-pymatgen", false]], "pymatgen.analysis": [[5, "module-pymatgen.analysis", false]], "pymatgen.analysis.diffusion": [[6, "module-pymatgen.analysis.diffusion", false]], "pymatgen.analysis.diffusion.aimd": [[7, "module-pymatgen.analysis.diffusion.aimd", false]], "pymatgen.analysis.diffusion.aimd.clustering": [[8, "module-pymatgen.analysis.diffusion.aimd.clustering", false]], "pymatgen.analysis.diffusion.aimd.pathway": [[9, "module-pymatgen.analysis.diffusion.aimd.pathway", false]], "pymatgen.analysis.diffusion.aimd.rdf": [[10, "module-pymatgen.analysis.diffusion.aimd.rdf", false]], "pymatgen.analysis.diffusion.aimd.tests.test_clustering": [[11, "module-pymatgen.analysis.diffusion.aimd.tests.test_clustering", false]], "pymatgen.analysis.diffusion.aimd.tests.test_pathway": [[12, "module-pymatgen.analysis.diffusion.aimd.tests.test_pathway", false]], "pymatgen.analysis.diffusion.aimd.tests.test_rdf": [[13, "module-pymatgen.analysis.diffusion.aimd.tests.test_rdf", false]], "pymatgen.analysis.diffusion.aimd.tests.test_van_hove": [[14, "module-pymatgen.analysis.diffusion.aimd.tests.test_van_hove", false]], "pymatgen.analysis.diffusion.aimd.van_hove": [[15, "module-pymatgen.analysis.diffusion.aimd.van_hove", false]], "pymatgen.analysis.diffusion.analyzer": [[16, "module-pymatgen.analysis.diffusion.analyzer", false]], "pymatgen.analysis.diffusion.neb": [[17, "module-pymatgen.analysis.diffusion.neb", false]], "pymatgen.analysis.diffusion.neb.full_path_mapper": [[18, "module-pymatgen.analysis.diffusion.neb.full_path_mapper", false]], "pymatgen.analysis.diffusion.neb.io": [[19, "module-pymatgen.analysis.diffusion.neb.io", false]], "pymatgen.analysis.diffusion.neb.pathfinder": [[20, "module-pymatgen.analysis.diffusion.neb.pathfinder", false]], "pymatgen.analysis.diffusion.neb.periodic_dijkstra": [[21, "module-pymatgen.analysis.diffusion.neb.periodic_dijkstra", false]], "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper": [[22, "module-pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper", false]], "pymatgen.analysis.diffusion.neb.tests.test_io": [[23, "module-pymatgen.analysis.diffusion.neb.tests.test_io", false]], "pymatgen.analysis.diffusion.neb.tests.test_pathfinder": [[24, "module-pymatgen.analysis.diffusion.neb.tests.test_pathfinder", false]], "pymatgen.analysis.diffusion.tests.test_analyzer": [[25, "module-pymatgen.analysis.diffusion.tests.test_analyzer", false]], "pymatgen.analysis.diffusion.tests.test_pathfinder": [[26, "module-pymatgen.analysis.diffusion.tests.test_pathfinder", false]], "pymatgen.analysis.diffusion.utils": [[27, "module-pymatgen.analysis.diffusion.utils", false]], "pymatgen.analysis.diffusion.utils.edge_data_from_sc": [[28, "module-pymatgen.analysis.diffusion.utils.edge_data_from_sc", false]], "pymatgen.analysis.diffusion.utils.maggma": [[29, "module-pymatgen.analysis.diffusion.utils.maggma", false]], "pymatgen.analysis.diffusion.utils.parse_entries": [[30, "module-pymatgen.analysis.diffusion.utils.parse_entries", false]], "pymatgen.analysis.diffusion.utils.supercells": [[31, "module-pymatgen.analysis.diffusion.utils.supercells", false]], "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc": [[32, "module-pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc", false]], "pymatgen.analysis.diffusion.utils.tests.test_parse_entries": [[34, "module-pymatgen.analysis.diffusion.utils.tests.test_parse_entries", false]], "radialdistributionfunction (class in pymatgen.analysis.diffusion.aimd.rdf)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunction", false]], "radialdistributionfunctionfast (class in pymatgen.analysis.diffusion.aimd.rdf)": [[10, "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunctionFast", false]], "rdf() (evolutionanalyzer static method)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer.rdf", false]], "rdftest (class in pymatgen.analysis.diffusion.aimd.tests.test_rdf)": [[13, "pymatgen.analysis.diffusion.aimd.tests.test_rdf.RDFTest", false]], "rdftest (class in pymatgen.analysis.diffusion.aimd.tests.test_van_hove)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest", false]], "rescale_field() (staticpotential method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.StaticPotential.rescale_field", false]], "run() (idppsolver method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.IDPPSolver.run", false]], "setup() (chargebarriergraphtest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.ChargeBarrierGraphTest.setUp", false]], "setup() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.setUp", false]], "setup() (migrationgraphfromentriestest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphFromEntriesTest.setUp", false]], "setup() (migrationgraphsimpletest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphSimpleTest.setUp", false]], "setup() (migrationhoptest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.MigrationHopTest.setUp", false]], "setup() (parseentriestest method)": [[34, "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.ParseEntriesTest.setUp", false]], "setup() (rdftest method)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest.setUp", false]], "should_stop() (kmeans method)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.Kmeans.should_stop", false]], "should_stop() (kmeanspbc method)": [[8, "pymatgen.analysis.diffusion.aimd.clustering.KmeansPBC.should_stop", false]], "site_occ (siteoccupancyanalyzer attribute)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.SiteOccupancyAnalyzer.site_occ", false]], "siteoccupancyanalyzer (class in pymatgen.analysis.diffusion.aimd.pathway)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.SiteOccupancyAnalyzer", false]], "siteoccupancytest (class in pymatgen.analysis.diffusion.aimd.tests.test_pathway)": [[12, "pymatgen.analysis.diffusion.aimd.tests.test_pathway.SiteOccupancyTest", false]], "staticpotential (class in pymatgen.analysis.diffusion.neb.pathfinder)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.StaticPotential", false]], "string_relax() (nebpathfinder static method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.NEBPathfinder.string_relax", false]], "structure (siteoccupancyanalyzer attribute)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.SiteOccupancyAnalyzer.structure", false]], "structure (utilitytest attribute)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.UtilityTest.structure", false]], "structures (mvlcinebsettest attribute)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBSetTest.structures", false]], "symm_structure (migrationgraph property)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.symm_structure", false]], "test_add_data_to_similar_edges() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_add_data_to_similar_edges", false]], "test_add_edge_data_from_sc() (in module pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc)": [[32, "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc.test_add_edge_data_from_sc", false]], "test_assign_cost_to_graph() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_assign_cost_to_graph", false]], "test_cluster() (kmeanspbctest method)": [[11, "pymatgen.analysis.diffusion.aimd.tests.test_clustering.KmeansPBCTest.test_cluster", false]], "test_cluster() (kmeanstest method)": [[11, "pymatgen.analysis.diffusion.aimd.tests.test_clustering.KmeansTest.test_cluster", false]], "test_filter_and_merge() (parseentriestest method)": [[34, "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.ParseEntriesTest.test_filter_and_merge", false]], "test_fit_arrhenius() (functest method)": [[25, "pymatgen.analysis.diffusion.tests.test_analyzer.FuncTest.test_fit_arrhenius", false]], "test_from_structure_npt() (diffusionanalyzertest method)": [[25, "pymatgen.analysis.diffusion.tests.test_analyzer.DiffusionAnalyzerTest.test_from_structure_NPT", false]], "test_generate_stable_sites() (probabilitydensitytest method)": [[12, "pymatgen.analysis.diffusion.aimd.tests.test_pathway.ProbabilityDensityTest.test_generate_stable_sites", false]], "test_get_all_sym_sites() (parseentriestest method)": [[34, "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.ParseEntriesTest.test_get_all_sym_sites", false]], "test_get_conversion_factor() (functest method)": [[25, "pymatgen.analysis.diffusion.tests.test_analyzer.FuncTest.test_get_conversion_factor", false]], "test_get_df() (evolutionanalyzertest method)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.EvolutionAnalyzerTest.test_get_df", false]], "test_get_endpoint_dist() (utilitytest method)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.UtilityTest.test_get_endpoint_dist", false]], "test_get_endpoints_from_index() (utilitytest method)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.UtilityTest.test_get_endpoints_from_index", false]], "test_get_inserted_on_base() (parseentriestest method)": [[34, "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.ParseEntriesTest.test_get_inserted_on_base", false]], "test_get_insertion_energy() (parseentriestest method)": [[34, "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.ParseEntriesTest.test_get_insertion_energy", false]], "test_get_key_in_path() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_get_key_in_path", false]], "test_get_path() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_get_path", false]], "test_get_paths() (distinctpathfindertest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.DistinctPathFinderTest.test_get_paths", false]], "test_get_pos_and_migration_hop() (migrationgraphsimpletest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphSimpleTest.test_get_pos_and_migration_hop", false]], "test_get_sc_structures() (migrationhoptest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.MigrationHopTest.test_get_sc_structures", false]], "test_get_sc_structures_vacmode() (migrationhoptest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.MigrationHopTest.test_get_sc_structures_vacmode", false]], "test_get_start_end_structs_from_hop() (migrationhoptest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.MigrationHopTest.test_get_start_end_structs_from_hop", false]], "test_get_start_end_structs_from_hop_vac() (migrationhoptest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.MigrationHopTest.test_get_start_end_structs_from_hop_vac", false]], "test_get_summary_dict() (chargebarriergraphtest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.ChargeBarrierGraphTest.test_get_summary_dict", false]], "test_get_summary_dict() (migrationgraphsimpletest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphSimpleTest.test_get_summary_dict", false]], "test_get_uc_pos() (in module pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc)": [[32, "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc.test_get_uc_pos", false]], "test_get_unique_hop_host() (in module pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc)": [[32, "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc.test_get_unique_hop_host", false]], "test_get_unique_host_nonhost() (in module pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc)": [[32, "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc.test_get_unique_host_nonhost", false]], "test_group_and_label_hops() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_group_and_label_hops", false]], "test_idpp() (idppsolvertest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.IDPPSolverTest.test_idpp", false]], "test_idpp_from_ep() (idppsolvertest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.IDPPSolverTest.test_idpp_from_ep", false]], "test_idpp_from_ep_diff_latt() (idppsolvertest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.IDPPSolverTest.test_idpp_from_ep_diff_latt", false]], "test_incar() (mvlcinebendpointsettest method)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBEndPointSetTest.test_incar", false]], "test_incar() (mvlcinebsettest method)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBSetTest.test_incar", false]], "test_incar_user_setting() (mvlcinebendpointsettest method)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBEndPointSetTest.test_incar_user_setting", false]], "test_incar_user_setting() (mvlcinebsettest method)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBSetTest.test_incar_user_setting", false]], "test_init() (diffusionanalyzertest method)": [[25, "pymatgen.analysis.diffusion.tests.test_analyzer.DiffusionAnalyzerTest.test_init", false]], "test_init_npt() (diffusionanalyzertest method)": [[25, "pymatgen.analysis.diffusion.tests.test_analyzer.DiffusionAnalyzerTest.test_init_npt", false]], "test_integration() (chargebarriergraphtest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.ChargeBarrierGraphTest.test_integration", false]], "test_m_graph_construction() (migrationgraphfromentriestest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphFromEntriesTest.test_m_graph_construction", false]], "test_m_graph_from_entries_failed() (migrationgraphfromentriestest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphFromEntriesTest.test_m_graph_from_entries_failed", false]], "test_max_path_length() (distinctpathfindertest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.DistinctPathFinderTest.test_max_path_length", false]], "test_mhop_msonable() (pathfindertest method)": [[26, "pymatgen.analysis.diffusion.tests.test_pathfinder.PathfinderTest.test_mhop_msonable", false]], "test_msonable() (migrationhoptest method)": [[24, "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.MigrationHopTest.test_msonable", false]], "test_not_matching_first() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_not_matching_first", false]], "test_order_path() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_order_path", false]], "test_periodic_dijkstra() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_periodic_dijkstra", false]], "test_populate_edges_with_chg_density_info() (chargebarriergraphtest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.ChargeBarrierGraphTest.test_populate_edges_with_chg_density_info", false]], "test_probability() (probabilitydensitytest method)": [[12, "pymatgen.analysis.diffusion.aimd.tests.test_pathway.ProbabilityDensityTest.test_probability", false]], "test_probability_classmethod() (probabilitydensitytest method)": [[12, "pymatgen.analysis.diffusion.aimd.tests.test_pathway.ProbabilityDensityTest.test_probability_classmethod", false]], "test_process_ents() (parseentriestest method)": [[34, "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.ParseEntriesTest.test_process_ents", false]], "test_raises_valueerror_if_ngrid_is_less_than_2() (rdftest method)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest.test_raises_valueerror_if_ngrid_is_less_than_2", false]], "test_raises_valueerror_if_reference_species_not_in_structure() (rdftest method)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest.test_raises_ValueError_if_reference_species_not_in_structure", false]], "test_raises_valueerror_if_sigma_is_not_positive() (rdftest method)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest.test_raises_ValueError_if_sigma_is_not_positive", false]], "test_raises_valueerror_if_species_not_in_structure() (rdftest method)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest.test_raises_ValueError_if_species_not_in_structure", false]], "test_rdf() (rdftest method)": [[13, "pymatgen.analysis.diffusion.aimd.tests.test_rdf.RDFTest.test_rdf", false], [14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest.test_rdf", false]], "test_rdf_coordination_number() (rdftest method)": [[13, "pymatgen.analysis.diffusion.aimd.tests.test_rdf.RDFTest.test_rdf_coordination_number", false], [14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest.test_rdf_coordination_number", false]], "test_rdf_two_species_coordination_number() (rdftest method)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest.test_rdf_two_species_coordination_number", false]], "test_site_occupancy() (siteoccupancytest method)": [[12, "pymatgen.analysis.diffusion.aimd.tests.test_pathway.SiteOccupancyTest.test_site_occupancy", false]], "test_site_occupancy_classmethod() (siteoccupancytest method)": [[12, "pymatgen.analysis.diffusion.aimd.tests.test_pathway.SiteOccupancyTest.test_site_occupancy_classmethod", false]], "test_to_chgcar() (probabilitydensitytest method)": [[12, "pymatgen.analysis.diffusion.aimd.tests.test_pathway.ProbabilityDensityTest.test_to_chgcar", false]], "test_unique_hops_dict() (migrationgraphcomplextest method)": [[22, "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest.test_unique_hops_dict", false]], "test_van_hove() (vanhovetest method)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.VanHoveTest.test_van_hove", false]], "to_chgcar() (probabilitydensityanalysis method)": [[9, "pymatgen.analysis.diffusion.aimd.pathway.ProbabilityDensityAnalysis.to_chgcar", false]], "unique_hops (migrationgraph property)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.unique_hops", false]], "utilitytest (class in pymatgen.analysis.diffusion.neb.tests.test_io)": [[23, "pymatgen.analysis.diffusion.neb.tests.test_io.UtilityTest", false]], "vanhoveanalysis (class in pymatgen.analysis.diffusion.aimd.van_hove)": [[15, "pymatgen.analysis.diffusion.aimd.van_hove.VanHoveAnalysis", false]], "vanhovetest (class in pymatgen.analysis.diffusion.aimd.tests.test_van_hove)": [[14, "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.VanHoveTest", false]], "with_base_structure() (migrationgraph class method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.with_base_structure", false]], "with_distance() (migrationgraph class method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.with_distance", false]], "with_local_env_strategy() (migrationgraph class method)": [[18, "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph.with_local_env_strategy", false]], "write_all_paths() (distinctpathfinder method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.DistinctPathFinder.write_all_paths", false]], "write_path() (migrationhop method)": [[20, "pymatgen.analysis.diffusion.neb.pathfinder.MigrationHop.write_path", false]]}, "objects": {"": [[4, 0, 0, "-", "pymatgen"]], "pymatgen": [[5, 0, 0, "-", "analysis"]], "pymatgen.analysis": [[6, 0, 0, "-", "diffusion"]], "pymatgen.analysis.diffusion": [[7, 0, 0, "-", "aimd"], [16, 0, 0, "-", "analyzer"], [17, 0, 0, "-", "neb"], [27, 0, 0, "-", "utils"]], "pymatgen.analysis.diffusion.aimd": [[8, 0, 0, "-", "clustering"], [9, 0, 0, "-", "pathway"], [10, 0, 0, "-", "rdf"], [15, 0, 0, "-", "van_hove"]], "pymatgen.analysis.diffusion.aimd.clustering": [[8, 1, 1, "", "Kmeans"], [8, 1, 1, "", "KmeansPBC"], [8, 3, 1, "", "get_random_centroid"], [8, 3, 1, "", "get_random_centroids"]], "pymatgen.analysis.diffusion.aimd.clustering.Kmeans": [[8, 2, 1, "", "cluster"], [8, 2, 1, "", "get_centroids"], [8, 2, 1, "", "get_labels"], [8, 2, 1, "", "should_stop"]], "pymatgen.analysis.diffusion.aimd.clustering.KmeansPBC": [[8, 2, 1, "", "get_centroids"], [8, 2, 1, "", "get_labels"], [8, 2, 1, "", "should_stop"]], "pymatgen.analysis.diffusion.aimd.pathway": [[9, 1, 1, "", "ProbabilityDensityAnalysis"], [9, 1, 1, "", "SiteOccupancyAnalyzer"]], "pymatgen.analysis.diffusion.aimd.pathway.ProbabilityDensityAnalysis": [[9, 2, 1, "", "from_diffusion_analyzer"], [9, 2, 1, "", "generate_stable_sites"], [9, 2, 1, "", "get_full_structure"], [9, 2, 1, "", "to_chgcar"]], "pymatgen.analysis.diffusion.aimd.pathway.SiteOccupancyAnalyzer": [[9, 4, 1, "", "coords_ref"], [9, 2, 1, "", "from_diffusion_analyzer"], [9, 2, 1, "", "get_average_site_occupancy"], [9, 4, 1, "", "nsites"], [9, 4, 1, "", "site_occ"], [9, 4, 1, "", "structure"]], "pymatgen.analysis.diffusion.aimd.rdf": [[10, 1, 1, "", "RadialDistributionFunction"], [10, 1, 1, "", "RadialDistributionFunctionFast"]], "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunction": [[10, 5, 1, "", "coordination_number"], [10, 2, 1, "", "export_rdf"], [10, 2, 1, "", "from_species"], [10, 2, 1, "", "get_rdf_plot"]], "pymatgen.analysis.diffusion.aimd.rdf.RadialDistributionFunctionFast": [[10, 2, 1, "", "get_coordination_number"], [10, 2, 1, "", "get_one_rdf"], [10, 2, 1, "", "get_rdf"]], "pymatgen.analysis.diffusion.aimd.tests": [[11, 0, 0, "-", "test_clustering"], [12, 0, 0, "-", "test_pathway"], [13, 0, 0, "-", "test_rdf"], [14, 0, 0, "-", "test_van_hove"]], "pymatgen.analysis.diffusion.aimd.tests.test_clustering": [[11, 1, 1, "", "KmeansPBCTest"], [11, 1, 1, "", "KmeansTest"]], "pymatgen.analysis.diffusion.aimd.tests.test_clustering.KmeansPBCTest": [[11, 2, 1, "", "test_cluster"]], "pymatgen.analysis.diffusion.aimd.tests.test_clustering.KmeansTest": [[11, 2, 1, "", "test_cluster"]], "pymatgen.analysis.diffusion.aimd.tests.test_pathway": [[12, 1, 1, "", "ProbabilityDensityTest"], [12, 1, 1, "", "SiteOccupancyTest"]], "pymatgen.analysis.diffusion.aimd.tests.test_pathway.ProbabilityDensityTest": [[12, 2, 1, "", "test_generate_stable_sites"], [12, 2, 1, "", "test_probability"], [12, 2, 1, "", "test_probability_classmethod"], [12, 2, 1, "", "test_to_chgcar"]], "pymatgen.analysis.diffusion.aimd.tests.test_pathway.SiteOccupancyTest": [[12, 2, 1, "", "test_site_occupancy"], [12, 2, 1, "", "test_site_occupancy_classmethod"]], "pymatgen.analysis.diffusion.aimd.tests.test_rdf": [[13, 1, 1, "", "RDFTest"]], "pymatgen.analysis.diffusion.aimd.tests.test_rdf.RDFTest": [[13, 2, 1, "", "test_rdf"], [13, 2, 1, "", "test_rdf_coordination_number"]], "pymatgen.analysis.diffusion.aimd.tests.test_van_hove": [[14, 1, 1, "", "EvolutionAnalyzerTest"], [14, 1, 1, "", "RDFTest"], [14, 1, 1, "", "VanHoveTest"]], "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.EvolutionAnalyzerTest": [[14, 2, 1, "", "test_get_df"]], "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.RDFTest": [[14, 2, 1, "", "setUp"], [14, 2, 1, "", "test_raises_ValueError_if_reference_species_not_in_structure"], [14, 2, 1, "", "test_raises_ValueError_if_sigma_is_not_positive"], [14, 2, 1, "", "test_raises_ValueError_if_species_not_in_structure"], [14, 2, 1, "", "test_raises_valueerror_if_ngrid_is_less_than_2"], [14, 2, 1, "", "test_rdf"], [14, 2, 1, "", "test_rdf_coordination_number"], [14, 2, 1, "", "test_rdf_two_species_coordination_number"]], "pymatgen.analysis.diffusion.aimd.tests.test_van_hove.VanHoveTest": [[14, 2, 1, "", "test_van_hove"]], "pymatgen.analysis.diffusion.aimd.van_hove": [[15, 1, 1, "", "EvolutionAnalyzer"], [15, 1, 1, "", "VanHoveAnalysis"]], "pymatgen.analysis.diffusion.aimd.van_hove.EvolutionAnalyzer": [[15, 2, 1, "", "atom_dist"], [15, 2, 1, "", "get_df"], [15, 2, 1, "", "get_min_dist"], [15, 2, 1, "", "get_pairs"], [15, 2, 1, "", "plot_atomic_evolution"], [15, 2, 1, "", "plot_evolution_from_data"], [15, 2, 1, "", "plot_rdf_evolution"], [15, 2, 1, "", "rdf"]], "pymatgen.analysis.diffusion.aimd.van_hove.VanHoveAnalysis": [[15, 2, 1, "", "get_1d_plot"], [15, 2, 1, "", "get_3d_plot"]], "pymatgen.analysis.diffusion.analyzer": [[16, 1, 1, "", "DiffusionAnalyzer"], [16, 3, 1, "", "fit_arrhenius"], [16, 3, 1, "", "get_arrhenius_plot"], [16, 3, 1, "", "get_conversion_factor"], [16, 3, 1, "", "get_diffusivity_from_msd"], [16, 3, 1, "", "get_extrapolated_conductivity"], [16, 3, 1, "", "get_extrapolated_diffusivity"]], "pymatgen.analysis.diffusion.analyzer.DiffusionAnalyzer": [[16, 2, 1, "", "as_dict"], [16, 2, 1, "", "export_msdt"], [16, 2, 1, "", "from_dict"], [16, 2, 1, "", "from_files"], [16, 2, 1, "", "from_structures"], [16, 2, 1, "", "from_vaspruns"], [16, 2, 1, "", "get_drift_corrected_structures"], [16, 2, 1, "", "get_framework_rms_plot"], [16, 2, 1, "", "get_msd_plot"], [16, 2, 1, "", "get_summary_dict"], [16, 2, 1, "", "plot_msd"]], "pymatgen.analysis.diffusion.neb": [[18, 0, 0, "-", "full_path_mapper"], [19, 0, 0, "-", "io"], [20, 0, 0, "-", "pathfinder"], [21, 0, 0, "-", "periodic_dijkstra"]], "pymatgen.analysis.diffusion.neb.full_path_mapper": [[18, 1, 1, "", "ChargeBarrierGraph"], [18, 1, 1, "", "MigrationGraph"], [18, 3, 1, "", "almost"], [18, 3, 1, "", "check_uc_hop"], [18, 3, 1, "", "generic_groupby"], [18, 3, 1, "", "get_hop_site_sequence"], [18, 3, 1, "", "get_only_sites_from_structure"], [18, 3, 1, "", "map_hop_sc2uc"], [18, 3, 1, "", "order_path"]], "pymatgen.analysis.diffusion.neb.full_path_mapper.ChargeBarrierGraph": [[18, 2, 1, "", "get_least_chg_path"], [18, 2, 1, "", "get_summary_dict"], [18, 2, 1, "", "populate_edges_with_chg_density_info"]], "pymatgen.analysis.diffusion.neb.full_path_mapper.MigrationGraph": [[18, 2, 1, "", "add_data_to_similar_edges"], [18, 2, 1, "", "assign_cost_to_graph"], [18, 2, 1, "", "get_path"], [18, 2, 1, "", "get_structure_from_entries"], [18, 2, 1, "", "get_summary_dict"], [18, 5, 1, "", "host_structure"], [18, 5, 1, "", "only_sites"], [18, 5, 1, "", "symm_structure"], [18, 5, 1, "", "unique_hops"], [18, 2, 1, "", "with_base_structure"], [18, 2, 1, "", "with_distance"], [18, 2, 1, "", "with_local_env_strategy"]], "pymatgen.analysis.diffusion.neb.io": [[19, 1, 1, "", "MVLCINEBEndPointSet"], [19, 1, 1, "", "MVLCINEBSet"], [19, 3, 1, "", "get_endpoint_dist"], [19, 3, 1, "", "get_endpoints_from_index"]], "pymatgen.analysis.diffusion.neb.pathfinder": [[20, 1, 1, "", "ChgcarPotential"], [20, 1, 1, "", "DistinctPathFinder"], [20, 1, 1, "", "FreeVolumePotential"], [20, 1, 1, "", "IDPPSolver"], [20, 1, 1, "", "MigrationHop"], [20, 1, 1, "", "MixedPotential"], [20, 1, 1, "", "NEBPathfinder"], [20, 1, 1, "", "StaticPotential"]], "pymatgen.analysis.diffusion.neb.pathfinder.DistinctPathFinder": [[20, 2, 1, "", "get_paths"], [20, 2, 1, "", "write_all_paths"]], "pymatgen.analysis.diffusion.neb.pathfinder.IDPPSolver": [[20, 2, 1, "", "from_endpoints"], [20, 2, 1, "", "get_unit_vector"], [20, 2, 1, "", "run"]], "pymatgen.analysis.diffusion.neb.pathfinder.MigrationHop": [[20, 2, 1, "", "get_sc_structures"], [20, 2, 1, "", "get_structures"], [20, 5, 1, "", "length"], [20, 2, 1, "", "write_path"]], "pymatgen.analysis.diffusion.neb.pathfinder.NEBPathfinder": [[20, 5, 1, "", "images"], [20, 2, 1, "", "interpolate"], [20, 2, 1, "", "plot_images"], [20, 2, 1, "", "string_relax"]], "pymatgen.analysis.diffusion.neb.pathfinder.StaticPotential": [[20, 2, 1, "", "gaussian_smear"], [20, 2, 1, "", "get_v"], [20, 2, 1, "", "normalize"], [20, 2, 1, "", "rescale_field"]], "pymatgen.analysis.diffusion.neb.periodic_dijkstra": [[21, 3, 1, "", "get_optimal_pathway_rev"], [21, 3, 1, "", "periodic_dijkstra"], [21, 3, 1, "", "periodic_dijkstra_on_sgraph"]], "pymatgen.analysis.diffusion.neb.tests": [[22, 0, 0, "-", "test_full_path_mapper"], [23, 0, 0, "-", "test_io"], [24, 0, 0, "-", "test_pathfinder"]], "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper": [[22, 1, 1, "", "ChargeBarrierGraphTest"], [22, 1, 1, "", "MigrationGraphComplexTest"], [22, 1, 1, "", "MigrationGraphFromEntriesTest"], [22, 1, 1, "", "MigrationGraphSimpleTest"]], "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.ChargeBarrierGraphTest": [[22, 2, 1, "", "setUp"], [22, 2, 1, "", "test_get_summary_dict"], [22, 2, 1, "", "test_integration"], [22, 2, 1, "", "test_populate_edges_with_chg_density_info"]], "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphComplexTest": [[22, 2, 1, "", "setUp"], [22, 2, 1, "", "test_add_data_to_similar_edges"], [22, 2, 1, "", "test_assign_cost_to_graph"], [22, 2, 1, "", "test_get_key_in_path"], [22, 2, 1, "", "test_get_path"], [22, 2, 1, "", "test_group_and_label_hops"], [22, 2, 1, "", "test_not_matching_first"], [22, 2, 1, "", "test_order_path"], [22, 2, 1, "", "test_periodic_dijkstra"], [22, 2, 1, "", "test_unique_hops_dict"]], "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphFromEntriesTest": [[22, 2, 1, "", "setUp"], [22, 2, 1, "", "test_m_graph_construction"], [22, 2, 1, "", "test_m_graph_from_entries_failed"]], "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper.MigrationGraphSimpleTest": [[22, 2, 1, "", "setUp"], [22, 2, 1, "", "test_get_pos_and_migration_hop"], [22, 2, 1, "", "test_get_summary_dict"]], "pymatgen.analysis.diffusion.neb.tests.test_io": [[23, 1, 1, "", "MVLCINEBEndPointSetTest"], [23, 1, 1, "", "MVLCINEBSetTest"], [23, 1, 1, "", "UtilityTest"], [23, 3, 1, "", "get_path"]], "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBEndPointSetTest": [[23, 4, 1, "", "endpoint"], [23, 2, 1, "", "test_incar"], [23, 2, 1, "", "test_incar_user_setting"]], "pymatgen.analysis.diffusion.neb.tests.test_io.MVLCINEBSetTest": [[23, 4, 1, "", "structures"], [23, 2, 1, "", "test_incar"], [23, 2, 1, "", "test_incar_user_setting"]], "pymatgen.analysis.diffusion.neb.tests.test_io.UtilityTest": [[23, 4, 1, "", "structure"], [23, 2, 1, "", "test_get_endpoint_dist"], [23, 2, 1, "", "test_get_endpoints_from_index"]], "pymatgen.analysis.diffusion.neb.tests.test_pathfinder": [[24, 1, 1, "", "DistinctPathFinderTest"], [24, 1, 1, "", "IDPPSolverTest"], [24, 1, 1, "", "MigrationHopTest"], [24, 3, 1, "", "get_path"]], "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.DistinctPathFinderTest": [[24, 2, 1, "", "test_get_paths"], [24, 2, 1, "", "test_max_path_length"]], "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.IDPPSolverTest": [[24, 4, 1, "", "final_struct"], [24, 4, 1, "", "init_struct"], [24, 2, 1, "", "test_idpp"], [24, 2, 1, "", "test_idpp_from_ep"], [24, 2, 1, "", "test_idpp_from_ep_diff_latt"]], "pymatgen.analysis.diffusion.neb.tests.test_pathfinder.MigrationHopTest": [[24, 2, 1, "", "setUp"], [24, 2, 1, "", "test_get_sc_structures"], [24, 2, 1, "", "test_get_sc_structures_vacmode"], [24, 2, 1, "", "test_get_start_end_structs_from_hop"], [24, 2, 1, "", "test_get_start_end_structs_from_hop_vac"], [24, 2, 1, "", "test_msonable"]], "pymatgen.analysis.diffusion.tests": [[25, 0, 0, "-", "test_analyzer"], [26, 0, 0, "-", "test_pathfinder"]], "pymatgen.analysis.diffusion.tests.test_analyzer": [[25, 1, 1, "", "DiffusionAnalyzerTest"], [25, 1, 1, "", "FuncTest"]], "pymatgen.analysis.diffusion.tests.test_analyzer.DiffusionAnalyzerTest": [[25, 2, 1, "", "test_from_structure_NPT"], [25, 2, 1, "", "test_init"], [25, 2, 1, "", "test_init_npt"]], "pymatgen.analysis.diffusion.tests.test_analyzer.FuncTest": [[25, 2, 1, "", "test_fit_arrhenius"], [25, 2, 1, "", "test_get_conversion_factor"]], "pymatgen.analysis.diffusion.tests.test_pathfinder": [[26, 1, 1, "", "PathfinderTest"]], "pymatgen.analysis.diffusion.tests.test_pathfinder.PathfinderTest": [[26, 2, 1, "", "test_mhop_msonable"]], "pymatgen.analysis.diffusion.utils": [[28, 0, 0, "-", "edge_data_from_sc"], [29, 0, 0, "-", "maggma"], [30, 0, 0, "-", "parse_entries"], [31, 0, 0, "-", "supercells"]], "pymatgen.analysis.diffusion.utils.edge_data_from_sc": [[28, 3, 1, "", "add_edge_data_from_sc"], [28, 3, 1, "", "get_uc_pos"], [28, 3, 1, "", "get_unique_hop"], [28, 3, 1, "", "mh_eq"]], "pymatgen.analysis.diffusion.utils.maggma": [[29, 3, 1, "", "get_entries_from_dbs"]], "pymatgen.analysis.diffusion.utils.parse_entries": [[30, 3, 1, "", "get_inserted_on_base"], [30, 3, 1, "", "get_insertion_energy"], [30, 3, 1, "", "get_matched_structure_mapping"], [30, 3, 1, "", "get_sym_migration_ion_sites"], [30, 3, 1, "", "process_entries"]], "pymatgen.analysis.diffusion.utils.supercells": [[31, 3, 1, "", "get_sc_fromstruct"], [31, 3, 1, "", "get_start_end_structures"]], "pymatgen.analysis.diffusion.utils.tests": [[32, 0, 0, "-", "test_edge_data_from_sc"], [34, 0, 0, "-", "test_parse_entries"]], "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc": [[32, 3, 1, "", "test_add_edge_data_from_sc"], [32, 3, 1, "", "test_get_uc_pos"], [32, 3, 1, "", "test_get_unique_hop_host"], [32, 3, 1, "", "test_get_unique_host_nonhost"]], "pymatgen.analysis.diffusion.utils.tests.test_parse_entries": [[34, 1, 1, "", "ParseEntriesTest"]], "pymatgen.analysis.diffusion.utils.tests.test_parse_entries.ParseEntriesTest": [[34, 2, 1, "", "setUp"], [34, 2, 1, "", "test_filter_and_merge"], [34, 2, 1, "", "test_get_all_sym_sites"], [34, 2, 1, "", "test_get_inserted_on_base"], [34, 2, 1, "", "test_get_insertion_energy"], [34, 2, 1, "", "test_process_ents"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"], "4": ["py", "attribute", "Python attribute"], "5": ["py", "property", "Python property"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function", "4": "py:attribute", "5": "py:property"}, "terms": {"": [0, 2, 8, 9, 15, 16, 18, 21, 28, 31], "0": [9, 10, 15, 18, 20, 21, 23, 24, 30, 31], "0002656": 24, "0002851": 24, "0002863": 24, "0003037": 24, "0003243": 24, "0003644": 24, "00038": 24, "0004565": 24, "0004624": 24, "0005125": 24, "0005322": 24, "0005434": 24, "0006065": 24, "0008217": 24, "0009016": 24, "0009345": 24, "001": 20, "002": 24, "002765": 24, "002969": 24, "002981": 24, "003": 24, "003074": 24, "003162": 24, "003601": 24, "004327": 24, "005": [10, 23], "005541": 24, "005658": 24, "005748": 24, "007788": 24, "008545": 24, "01": 30, "0132": 24, "0133": 24, "01374": 24, "01386": 24, "018": 24, "02": 24, "021": 24, "02184": 24, "022": 24, "02202": 24, "02207": 24, "02262": 24, "02274": 24, "023": 24, "02306": 24, "02319": 24, "02329": 24, "031": 24, "032": 24, "03833": 24, "039": [23, 24], "0396": 24, "04": 23, "0416": 23, "04224": 24, "04226": 24, "0426": 24, "04263": 24, "04282": 24, "04283": 24, "043": 24, "0431": 24, "04315": 24, "046": 24, "047": 24, "05": [20, 24, 31], "051": 24, "053": 24, "055": 24, "058": 24, "059": 24, "06": [20, 24], "06296": 23, "064": 23, "07": 24, "074112": 20, "0783517723596": 24, "0799": 23, "08": 24, "084": 24, "085": 24, "0868": 23, "089": 23, "089343": 23, "0910": 2, "092": 24, "093": 23, "09427": 24, "0943": 24, "09474": 24, "09475": 24, "09496": 24, "09497": 24, "09498": 24, "09505": 24, "09506": 24, "09508": 24, "0951": 24, "09511": 24, "09517": 24, "09519": 24, "09534": 24, "09536": 24, "096e": 23, "097": 24, "09724": 24, "09727": 24, "098": 24, "099": 24, "09942": 24, "09944": 24, "1": [2, 9, 10, 15, 16, 18, 20, 21, 23, 24], "10": [10, 15, 16, 20, 23, 24, 31], "100": [18, 20], "1000": [8, 16, 20], "10000": 20, "100000": 18, "101": [10, 15, 24], "102": 24, "1021": 16, "1029": 24, "1039": 16, "1041": 24, "1043": 24, "105": [23, 24], "1054": 24, "1058": 24, "106": 24, "107": 24, "108": 24, "11": [23, 24], "111": 24, "113": 20, "114": 24, "117": 24, "119": 24, "1191": 24, "12": [15, 23, 24], "1201": 24, "1203": 23, "122": 23, "1225": 24, "1236": 24, "1239": 24, "124": 24, "1242": 24, "1243": 24, "1245": 24, "1246": 24, "1247": 24, "1248": 24, "1249": 24, "125": 24, "1251": 24, "1252": 24, "1253": 24, "1255": 24, "1256": 24, "1257": 24, "1259": 24, "126": 24, "1261": 24, "1264": 24, "1276": 24, "1277": 24, "128": 24, "13": 23, "1303": 24, "1314": 24, "131710473490111": 23, "132": 24, "133": 23, "137": 24, "138": 24, "14": 23, "140": 20, "14080369885537": 23, "141": 24, "142": 24, "1436976": 2, "1437": 24, "1439": 24, "1441": 24, "1447": 24, "1448": 24, "145": 20, "1454": 24, "1455": 24, "1457": 23, "1459": 24, "148": 16, "15": [16, 23], "158": 24, "16": 23, "161": 24, "163": 15, "1653": 24, "1656": 24, "1657": 24, "1658": 24, "1659": 24, "166": 24, "1661": 24, "1669": 24, "167": 24, "1674": 24, "17": [16, 20, 23], "173": 15, "18": 23, "182": 24, "185": 24, "187": 24, "189": 24, "191": 24, "192": 24, "196": 24, "198": 24, "1d": [18, 20], "1e": [15, 20, 31], "1mp2x12": 16, "2": [2, 9, 15, 16, 20, 21, 23, 24, 28, 30], "20": 20, "200": 16, "2000": 20, "201": 24, "2012": 16, "2013": 16, "2014": 20, "2015": [2, 9, 15], "2018": 15, "202": 24, "206": 24, "209": 24, "2099": 24, "21": 24, "2102": 24, "211": 24, "212": 24, "2121": 23, "213": 24, "214": 24, "214106": 20, "215": 23, "216": 24, "218": 24, "2181": 24, "2184": 24, "22": 24, "2213": 23, "2218449146199": 23, "2219": 24, "222": 24, "223": 24, "224": 24, "2266": 24, "2268": 24, "227": 24, "2272": 24, "2274": 24, "2278": 24, "228": 24, "2281": 24, "23": 24, "234": 24, "235": 24, "2372": 23, "2376": 24, "2392": 24, "24": 16, "240": [20, 31], "2449": 24, "245": 24, "2499": 24, "25": [9, 20, 23, 24], "2501": 24, "2503": 24, "2509": 24, "251": 24, "252": 24, "255": 24, "2551": 24, "26": 23, "2608": 24, "2614": 24, "2624": 24, "2628": 23, "2638": 24, "264": 24, "266": 24, "2665": 24, "267": 24, "268": 23, "269e": 23, "27": [9, 15, 23, 24], "2702": 24, "271": 24, "2714": 24, "2718": 24, "2722": 24, "2726": 24, "2729": 24, "273": 24, "2732": 24, "274": 24, "2747": 24, "275": 24, "278": 24, "2785": 24, "2787": 23, "2801": 24, "2813": 24, "2822": 24, "283": 24, "2839": 24, "284": 24, "2842": 24, "285": 23, "2879": 23, "288": 24, "2898": 24, "2901": 24, "293": 24, "296": 24, "299": 24, "2dt": 16, "2x2x2": 18, "3": [2, 9, 10, 16, 18, 20, 21, 23, 24, 30], "30": [15, 16], "303": 24, "311": 24, "312": 24, "314": 23, "315": [23, 24], "316": 24, "32": 23, "321": 24, "322": 24, "323": 24, "3255": 24, "3256": 24, "327": 24, "33": 24, "3308": 24, "331": 24, "3312": 24, "3313": 24, "3322": 24, "3324": 24, "3325": 24, "3332": 24, "3333": 24, "3335": 24, "3336": 24, "334": 24, "34": 24, "342": 24, "354": 24, "3541": 24, "3543": 23, "3545": 24, "3546": 24, "355": 24, "3552": 24, "3553": 24, "3559": 24, "356": 24, "3561": 24, "3563": 24, "35e": 23, "36": [23, 24], "362": 24, "363": 24, "3633": 24, "364": 24, "366": 24, "367": 24, "368": 23, "369": 24, "3711": 24, "372": 24, "3721": 24, "3723": 24, "3724": 24, "373": 24, "3736": 24, "374": 24, "3741": 24, "3742": 24, "3743": 24, "3744": 24, "3745": 24, "3746": 24, "3747": 24, "3748": 24, "3749": 24, "375": 24, "3752": 24, "3753": 24, "3755": 24, "3757": 24, "376": 24, "3763": 24, "3767": 24, "377": 24, "3774": 24, "3775": 24, "378": 24, "379": 24, "3797": 23, "3799": 24, "38": 24, "381": 24, "383": 24, "389": 24, "39": 24, "3942": 24, "3946": 24, "3957": 24, "3959": 24, "3971": 24, "3973": 24, "3974": 24, "3d": 15, "3rp": 9, "4": [23, 24], "40": 20, "4006": 24, "4023": 24, "4024": 24, "4026": 24, "4027": 24, "4028": 24, "4034": 24, "4035": 24, "4036": 24, "4047": 24, "4049": 24, "4075": 23, "41": 24, "411": 24, "411723299877": 24, "412": 24, "4132": 23, "417": 24, "419": 24, "42": 24, "4201": 23, "421": 24, "422": 24, "422e": 23, "423": 24, "425": 24, "43": 24, "436": 23, "437": 23, "4398": 24, "44": 24, "4436": 24, "4439": 24, "444": 24, "4458": 24, "4459": 24, "446": 24, "448": 24, "4487": 24, "449": 23, "4493": 24, "45": [18, 24], "451": 23, "452": 24, "453": 24, "454": 23, "455": 24, "4574": 24, "4577": 24, "4584": 23, "4589": 24, "459": 24, "4591": 24, "46": 23, "4604": 24, "461": 24, "4617": 24, "462": 24, "465": 24, "468": 24, "469": 24, "47": 24, "472": 24, "473": 24, "474": 24, "4751": 24, "4765": 24, "4767": 24, "477": 24, "4773": 24, "4774": 23, "4775": 24, "47759961582329": 24, "4779": 24, "4782": 24, "479": 24, "482": 24, "483": 24, "484": 24, "4861": 24, "4863": 24, "4867": 24, "4868": 24, "487": 24, "488": 24, "489": 24, "492": 24, "493e": 24, "495": [23, 24], "497": 24, "4977": 24, "498": 24, "4982": 24, "4991": 24, "4992": 24, "4994": 24, "4995": 24, "4996": 24, "4997": 24, "5": [9, 20, 23, 24, 30], "50": 15, "5004": 24, "501": 24, "5011": 24, "5018": 24, "502": 24, "5023": 24, "503": 24, "504": 24, "505": [23, 24], "506": 24, "507": 24, "508": 24, "509": 24, "510": 23, "5102": 24, "5103": 24, "511": 24, "5118": 24, "512": 24, "5129": 24, "513": 24, "514": 24, "515": 24, "517": 24, "518": 24, "519": 24, "52": 24, "5202": 24, "521": 24, "5215": 24, "5219": 24, "522": 24, "5225": 24, "5229": 24, "523": 24, "5235": 24, "524": 24, "5249": 24, "526": 24, "5261": 24, "527": 24, "528": 24, "529": 24, "532": 24, "533": 24, "534": 2, "535": 24, "537": 24, "5393": 24, "54": 24, "5401": 24, "5402": 24, "5409": 24, "541": 24, "5411": 24, "5416": 23, "542": 24, "5423": 24, "5426": 24, "543": 24, "544": 24, "545": 24, "546": 24, "548": 24, "549": 24, "549e": 23, "55": [18, 24], "552": 24, "554": 24, "555": 24, "556": 24, "557": 24, "558": [23, 24], "56": 24, "563": 23, "564": 23, "565": 24, "569": 24, "57": 24, "577": 24, "578": 24, "5799": 23, "58": 24, "581": 23, "5815": 2, "582": 23, "584": 24, "5868": 23, "589": 23, "59": [23, 24], "5951": 24, "5953": 24, "596": 24, "5964": 24, "5965": 24, "5966": 24, "5974": 24, "5976": 24, "5977": 24, "5e": [20, 24], "6": [16, 20, 23, 24], "601": 24, "6024": 24, "6026": 24, "6027": 24, "6033": 24, "6034": 24, "6049": 24, "605": 24, "6056": 24, "6065": 24, "6066": 24, "607": 24, "609": 24, "61": [23, 24], "6125": 24, "613": 24, "614": 24, "616": 24, "6203": 23, "621": 23, "6212": 24, "6221": 24, "6226": 24, "6233": 24, "6237": 24, "6243": 24, "6244": 24, "6245": 24, "6246": 24, "6247": 24, "6248": 24, "6249": 24, "625": 24, "6251": 24, "6252": 24, "6253": 24, "6254": 24, "6255": 24, "6256": 24, "6257": 24, "6258": 24, "6264": 24, "6266": 24, "627": 24, "6271": 24, "6274": 24, "6279": 24, "628": 24, "6281": 24, "6289": 24, "632": 24, "633": 24, "634": [23, 24], "634014": 23, "6342": 23, "64": 23, "6433": 24, "6438": 24, "6439": 24, "6442": 24, "6443": 24, "6454": 24, "6455": 24, "6456": 24, "6457": [23, 24], "646": 24, "6462": 24, "649": 24, "658": 24, "6581": 23, "6664": 24, "6665": 24, "6667": 24, "6668": 24, "6675": 24, "6676": 24, "6678": 24, "6687": 24, "6688": 24, "669": 24, "6692": 24, "673": 24, "674": 24, "6744": 24, "6745": 24, "68": 24, "682": 24, "683": 24, "684": 24, "685": 24, "686": [23, 24], "687": 24, "688": 24, "691": 24, "696": 23, "7": [20, 23, 24], "7098": 24, "7099": 24, "71": 24, "7109": 24, "712": [23, 24], "7121": 23, "7158": 24, "716": 24, "7161": 24, "717": 24, "7178": 24, "718": 24, "719": 24, "72": 23, "721": 24, "7213": 23, "7239": 24, "724": 24, "725": 24, "7251": 24, "726": 24, "7266": 24, "727": 24, "7271": 24, "7275": 24, "728": 24, "7282": 24, "7286": 24, "729": 24, "7298": 24, "73": 24, "731": 24, "733": 24, "734": 24, "735": 24, "736": 24, "7367": 24, "737": 24, "7372": 23, "7373": 24, "7374": 24, "737e": 24, "738": 24, "7386": 24, "7387": 23, "739": 24, "74": [23, 24], "741e": 24, "743": 24, "744": 24, "745": 24, "746": 24, "747": 24, "7475": 24, "748": 24, "749": 24, "7491": 24, "7497": 24, "75": [23, 24], "751": 24, "752": 24, "7525": 24, "756": 24, "757": 24, "758": 24, "76": 23, "7626": 24, "7627": 24, "7628": 23, "763": 24, "7633": 24, "764": 24, "766": 24, "767": 24, "7719": 24, "7722": 24, "7725": 24, "7728": 24, "773": [23, 24], "7734": 24, "7749": 24, "775": 24, "776": 24, "7761": 24, "778": 24, "7781": 24, "7787": 23, "779": 24, "78": 24, "7816": 24, "7819": 24, "782": 24, "784": 23, "787": 24, "7879": 23, "7891": 24, "7901": 24, "7902": 24, "791": 23, "795": 24, "796": 24, "797": 24, "798": 23, "8": [10, 15, 23, 24], "80": [20, 31], "805": 24, "81": 24, "811e": 23, "815": 24, "815000056846058": 23, "817": 24, "82": 24, "827": 23, "83": 24, "8318": [9, 15], "8325": [9, 15], "8326": 24, "833": 24, "8331": 24, "8339": 24, "834": 24, "8341": 24, "8342": 24, "8343": 24, "8344": 24, "8347": 24, "836": 24, "837": 23, "8538": 24, "8543": [23, 24], "8544": 24, "8545": 24, "8546": 24, "8557": 24, "8558": 24, "8561": 24, "8562": 24, "8567": 24, "858": 2, "86": 23, "861": 24, "8693444977544": 24, "8719": 24, "872": 24, "8726": 24, "8729": 24, "873": 24, "8734": 24, "8736": 24, "8743": 24, "8744": 24, "8745": 24, "8747": 24, "8749": 24, "875": 24, "8751": 24, "8752": 24, "8753": 24, "8754": 24, "8755": 24, "8756": 24, "8757": 24, "8758": 24, "8761": 24, "8764": 24, "8774": 24, "8779": 24, "8788": 24, "8797": 23, "879e": 24, "884": 24, "8875": 24, "8934": 24, "8935": 24, "8944": 24, "895": [23, 24], "8951": 24, "8966": 24, "8967": 24, "8973": 24, "8976": 24, "9": [18, 23, 24], "90": 24, "901": 24, "9046": 24, "9047": 24, "9048": 24, "9049": 24, "905": 24, "9053": 24, "9057": 24, "9132": 23, "9201": 23, "92093": 2, "921": 24, "9216": 24, "9219": 24, "922e": 24, "923": 24, "924": 23, "936": 23, "937": 23, "938": 24, "94": 24, "941": 24, "942": 24, "9423": 24, "9424": 24, "943": 24, "9463": 23, "947": 24, "95": 24, "9500": 2, "951": 24, "952": 24, "953": 24, "956": 24, "9568": 24, "9569": [23, 24], "957": 24, "9572": 24, "9574": 24, "9577": 24, "9578": 24, "9584": 23, "959": 24, "9598": 24, "9599": 24, "96": 24, "9607": 24, "962": 24, "963": 24, "966": 24, "967": 24, "968": 24, "972": 24, "9751": 24, "9756": 24, "9768": 24, "9769": 24, "9771": 24, "9774": 24, "978": 24, "9781": 24, "9785": 24, "9798": 24, "9815": 24, "9818": 24, "982": 24, "9865": 24, "9868": 24, "9871": 24, "988": 24, "9882": 24, "9884": 24, "9887": 24, "9888": 24, "9889": 24, "9896": 24, "9897": 24, "9898": 24, "99": [23, 24], "9901": 20, "9902": 24, "9903": 24, "9909": 24, "9911": 24, "992": 24, "9927": 24, "9929": 24, "993": [23, 24], "995": 23, "9989": 24, "999": [23, 24], "9991": 24, "9992": 24, "9995": 24, "9996": 24, "9997": 24, "9999": 24, "9999995733517": 23, "A": [2, 8, 9, 10, 15, 16, 18, 19, 20, 21, 23, 24], "AND": 2, "AS": 2, "BE": 2, "BUT": 2, "BY": 2, "By": 16, "FOR": 2, "For": [2, 8, 16, 18, 20, 30], "IF": 2, "IN": 2, "ITS": 2, "If": [2, 8, 9, 10, 15, 16, 18, 20, 30], "In": [2, 9, 15, 20], "It": [0, 1, 9, 15, 16], "NO": 2, "NOT": 2, "No": [2, 16], "OF": 2, "ON": 2, "OR": 2, "SUCH": 2, "THE": 2, "TO": 2, "The": [0, 2, 8, 9, 10, 15, 16, 18, 20, 21, 28, 29, 30, 31], "These": [16, 28], "To": [0, 15, 16], "_": 16, "_subplot": 15, "_theme": 0, "abc": [23, 24], "abl": 31, "about": 20, "abov": [2, 9], "absolut": 20, "abspath": 0, "accompani": 2, "accord": 18, "accordingli": 16, "account": 18, "accur": [18, 30], "across": 21, "acrutt": 1, "ad": [16, 18, 28], "adapt": 8, "add": [0, 2, 18, 28], "add_data_to_similar_edg": [5, 6, 17, 18], "add_edge_data_from_sc": [5, 6, 27, 28], "add_kei": 18, "added_kei": 18, "addit": [15, 18, 20, 21], "addition": 30, "addon": 0, "adjac": [10, 15], "advis": 2, "after": 16, "against": 16, "agreement": 2, "aimd": [5, 6, 16, 35], "al": [16, 20], "algo": [8, 20], "algorithm": [8, 9, 20], "all": [2, 9, 10, 15, 16, 18, 20, 21, 22, 30, 31], "allow": [10, 20, 28, 31], "almost": [5, 6, 17, 18], "along": [10, 15, 20], "also": [0, 20, 29, 30], "altern": [0, 20], "although": 20, "alwai": [2, 10, 15, 20, 21, 22], "amount": 18, "an": [1, 2, 11, 12, 13, 14, 15, 16, 18, 20, 22, 23, 24, 25, 26, 34], "analys": [2, 16], "analysi": [1, 2], "analyz": [1, 5, 6, 9, 15], "angl": [18, 23, 24, 30], "angle_tol": [18, 30], "angstrom": [9, 10, 15, 18, 20], "ani": [2, 15, 16, 18, 20, 29], "anywai": 20, "anywher": 20, "appear": 2, "append": 0, "appli": [16, 20, 30], "approach": 20, "ar": [2, 8, 9, 10, 15, 16, 18, 19, 20, 21, 22, 28, 29, 30], "arg": [16, 19], "argument": [15, 16], "aris": [2, 16], "arrai": [8, 9, 10, 15, 16, 18], "arrheniu": 16, "as_dict": [5, 6, 16], "ask": 18, "assign": 18, "assign_cost_to_graph": [5, 6, 17, 18], "associ": [9, 10, 15, 20], "assum": [10, 16, 18, 19, 20, 30], "atom": [8, 10, 15, 16, 20, 31], "atom_dist": [5, 6, 7, 15], "attribut": [9, 28], "avail": 16, "averag": [9, 10, 15, 16], "avg_nstep": [15, 16], "avoid": 20, "awai": [20, 21], "ax": [10, 15], "axessubplot": 15, "axi": 16, "b": [9, 15, 18, 23, 24], "back": 2, "bad": 1, "band": 20, "bar": [15, 16], "base": [8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 25, 26, 30, 34], "base_": 30, "base_entri": 30, "base_struct": [20, 30, 31], "base_structur": 18, "basi": 2, "basic": [18, 20], "batteri": 15, "becaus": 20, "been": [1, 2], "befor": [14, 16, 20, 22, 24, 34], "below": 16, "best": [21, 31], "best_an": 21, "better": 20, "between": [9, 16, 18, 19, 20], "bigger": 30, "binari": 2, "bool": [10, 16, 18, 20, 28, 31], "boolean": 28, "both": [16, 18, 20], "boundari": [2, 8, 19, 20], "built": 18, "busi": 2, "c": [2, 9, 15, 16, 23, 24], "c2ee23355j": 16, "c_rang": 16, "c_range_include_edg": 16, "ca": 2, "calc": [1, 31], "calcul": [10, 15, 16, 17, 18, 19, 20, 28, 30, 31], "california": 2, "call": [20, 21], "callabl": [15, 18, 21], "can": [0, 8, 9, 15, 16, 18, 20, 21, 22, 29, 30, 31], "canepa": 20, "cap": 31, "cartesian": 20, "case": [18, 20], "cathod": 29, "cation": [18, 30], "caus": 2, "cb_label": 15, "ceder": [16, 20], "cell": [10, 15, 18, 20, 21, 22, 28, 30, 31], "cell_rang": [10, 15], "center": 10, "centroid": 8, "chang": [8, 20], "character": 15, "charg": [16, 18, 20, 22], "chargebarriergraph": [5, 6, 17, 18], "chargebarriergraphtest": 22, "check": [0, 2, 8, 16, 20, 21, 22], "check_uc_hop": [5, 6, 17, 18], "chem": [9, 15, 20], "chemic": 20, "chemistri": 16, "chen": 15, "chgcar": [9, 20], "chgcarpotenti": [5, 6, 17, 20], "choos": 15, "chose": 8, "chosen": 20, "chu": [9, 15], "ci": 19, "cite": [9, 15, 16, 20], "class": [2, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 25, 26, 34], "classmethod": [9, 10, 16, 18, 20], "cleanup": 1, "close": 31, "closer": 9, "closest": 8, "cluster": [2, 5, 6, 7, 9, 35], "cm": [15, 16, 19], "cm203303y": 16, "cmap": 15, "cmocean": 15, "coars": 20, "code": [2, 18], "coeffici": 20, "coher": 18, "collect": 16, "color": 15, "color_plaett": 15, "column": 15, "combin": 30, "commerci": 2, "comp": 18, "compar": 18, "compat": 1, "complet": [1, 20], "compon": [9, 16, 20], "composit": 10, "compris": 20, "comput": [9, 10, 15, 16], "computedentri": [18, 30], "computedstructureentri": [18, 30], "concentr": 15, "condit": [2, 8, 19, 20], "conduct": [9, 15, 16], "conductor": [9, 15, 16], "conf": 0, "configur": 31, "connect": [18, 20], "consecut": 20, "consequenti": 2, "consid": [2, 9, 15, 16, 20], "consider": 16, "constant": [16, 20], "constitut": 16, "construct": [16, 18, 20, 29, 31], "constructor": 16, "contact": 2, "contain": [0, 1, 18, 20, 28, 29, 30], "content": [0, 5], "contract": 2, "contributor": 2, "conveni": [16, 20], "converg": [9, 16, 20], "convers": [16, 20], "convert": 16, "coordin": [8, 9, 10, 20], "coordination_numb": [5, 6, 7, 10], "coords_ref": [5, 6, 7, 9], "copi": [2, 18, 30], "core": [15, 16, 20], "correct": [15, 16], "correl": [15, 20], "correspond": [16, 28], "cost": [18, 21], "cost_kei": 18, "count": 15, "counterbalanc": 20, "cover": 22, "cpu": 10, "creat": [9, 11, 12, 13, 14, 16, 22, 23, 24, 25, 26, 30, 31, 34], "crystal": 9, "csv": [10, 15, 16], "cubic": [9, 15, 31], "cubicsupercelltransform": 31, "current": [10, 16, 18], "custom_kei": 28, "cutoff": [9, 18, 20], "d": [2, 9, 16], "d_cutoff": 9, "damag": 2, "daniil": 20, "dat": [10, 16], "data": [2, 8, 10, 15, 16, 18, 20, 28], "data_arrai": 28, "databas": [18, 29], "datafram": 15, "dataset": 8, "db": 29, "debug": 31, "decor": [18, 30], "decreas": 31, "default": [10, 15, 16, 18, 20, 21], "defin": [15, 16, 18, 20, 30], "deng": [9, 15], "densiti": [2, 9, 15, 18, 20, 22], "depend": [20, 29], "deriv": 2, "describ": 18, "design": 2, "desir": 16, "detail": [2, 20], "determin": [8, 9, 16, 18, 20], "develop": 2, "deviat": [16, 20], "df": 15, "dft": 20, "diagon": 22, "dict": [16, 18, 21, 30], "dictionari": [18, 21, 30], "differ": [18, 20], "diffus": [1, 2, 5], "diffusion_analyz": [9, 15], "diffusionanalyz": [1, 2, 5, 6, 9, 15, 16], "diffusionanalyzertest": 25, "diffusivity_error": 16, "dijkstra": 21, "dim": 20, "dimension": 16, "direct": [2, 10, 15, 16], "dirnam": [23, 24], "disclaim": 2, "discret": 20, "disord": 16, "displac": [16, 20], "dist": 19, "distanc": [8, 9, 15, 19, 20], "distinct": [15, 20], "distinctpathfind": [5, 6, 17, 20], "distinctpathfindertest": 24, "distribut": [2, 9, 10, 15, 20], "diverg": 20, "dmref": 2, "do": 16, "doc": [0, 2], "document": [0, 29], "doe": [2, 11, 12, 13, 14, 18, 20, 22, 23, 24, 25, 26, 34], "doesn": 16, "doi": 16, "don": [16, 31], "done": 16, "dopant": [9, 15], "dr": 20, "drift": 16, "driv": 0, "drive": 2, "dt": 16, "due": 1, "dure": [15, 20], "e": [2, 10, 15, 16, 18, 20, 30], "e_sc": 28, "ea": 16, "each": [2, 8, 16, 18, 20, 21, 29, 30], "easi": 20, "easier": 20, "easili": 16, "edg": [16, 18, 20, 21, 28], "edge_data_from_sc": [5, 6, 27], "edu": [2, 19], "educ": 2, "eg": 10, "eindex": 18, "either": [18, 20], "elast": 20, "electrochem": 16, "electrod": 29, "electron": 16, "element": [8, 10, 15, 16, 19, 20], "els": 16, "empti": [8, 18, 31], "end": [2, 9, 16, 19, 20, 22, 28, 31], "end_struct": 20, "endors": 2, "endpoint": [18, 19, 20, 23], "energi": [9, 16, 18, 20, 30], "engin": 2, "enhanc": [2, 9, 15], "enough": [18, 21, 22], "ensembl": 10, "entir": 22, "entri": [18, 28, 29, 30], "environ": 18, "environment": 16, "ep_0": 19, "ep_1": 19, "eq": 18, "equal": [18, 28], "equival": [18, 20, 28, 30], "error": [1, 2, 16], "esit": [18, 20, 28, 31], "esp": 16, "especi": 16, "estim": 16, "et": 20, "etc": [16, 18], "even": [2, 20], "event": [2, 18, 31], "everi": 16, "evolut": 15, "evolutionanalyz": [5, 6, 7, 15], "evolutionanalyzertest": 14, "exactli": 18, "exampl": [8, 16, 18], "except": 20, "exclus": 2, "execut": [11, 12, 13, 14, 22, 23, 24, 25, 26, 34], "exemplari": 2, "exercis": [14, 22, 24, 34], "exist": [0, 20], "exit": 20, "exp": 16, "expect": 16, "export_msdt": [5, 6, 16], "export_rdf": [5, 6, 7, 10], "express": 2, "extend": 20, "extens": [10, 16], "extern": 15, "extra": 15, "extract": 2, "extrapol": 16, "extrem": 20, "f": [15, 16], "factor": 16, "fals": [10, 16, 18, 20, 28, 31], "famili": 16, "far": 8, "farther": 20, "fast": [9, 10], "faster": [16, 31], "fe": 24, "featur": 8, "fee": 2, "field": [18, 19, 20, 21], "figsiz": 15, "file": [2, 10, 16, 20], "filenam": [9, 10, 16, 20], "filepath": 16, "filter": 18, "final": [8, 20, 28, 31], "final_struct": 24, "find": [2, 18, 20, 21, 31], "fine": 20, "first": [15, 16, 18, 19, 20, 30], "fit": [2, 16], "fit_arrheniu": [5, 6, 16], "fix": [1, 20], "fixtur": [14, 22, 24, 34], "flag": 28, "flask": 0, "flip": 18, "flip_hop": 18, "float": [9, 10, 15, 16, 18, 20, 30, 31], "fname": 20, "folder": 0, "follow": [0, 2, 9, 15, 16, 18, 20, 21], "forc": 20, "fork": 2, "form": [2, 18, 20], "format": [9, 10, 16, 18], "formula": 20, "found": [20, 21], "foundat": 2, "fraction": [8, 9, 16, 18, 30], "frame": 15, "framework": [16, 18], "free": 2, "freevolumepotenti": [5, 6, 17, 20], "frequenc": 16, "from": [1, 2, 8, 9, 15, 16, 18, 19, 20, 21, 28, 29, 30, 31], "from_dict": [5, 6, 16], "from_diffusion_analyz": [5, 6, 7, 9], "from_endpoint": [5, 6, 17, 20], "from_fil": [5, 6, 16, 20], "from_speci": [5, 6, 7, 10], "from_structur": [5, 6, 16], "from_vasprun": [5, 6, 16], "full": 30, "full_path_mapp": [5, 6, 17, 35], "full_structur": 18, "fulli": 20, "fullpathmapp": 28, "func": 15, "functest": 25, "function": [9, 10, 15, 18, 20, 21, 28, 29, 30, 31], "functiontyp": 15, "fund": 2, "further": 9, "futur": [2, 15], "g": [2, 15, 16, 18, 20, 21], "gaussian": [10, 15, 20], "gaussian_smear": [5, 6, 17, 20], "gd": 15, "ge": 16, "gener": [8, 9, 16, 18, 19, 20, 31], "generate_stable_sit": [5, 6, 7, 9], "generic_groupbi": [5, 6, 17, 18], "geometr": [8, 20, 31], "gerbrand": 20, "get": [9, 10, 15, 16, 18, 20, 28, 29, 30], "get_1d_plot": [5, 6, 7, 15], "get_3d_plot": [5, 6, 7, 15], "get_arrhenius_plot": [5, 6, 16], "get_atomic_distribut": 15, "get_average_site_occup": [5, 6, 7, 9], "get_centroid": [5, 6, 7, 8], "get_conversion_factor": [5, 6, 16], "get_coordination_numb": [5, 6, 7, 10], "get_df": [5, 6, 7, 15], "get_diffusivity_from_msd": [5, 6, 16], "get_drift_corrected_structur": [5, 6, 16], "get_endpoint_dist": [5, 6, 17, 19], "get_endpoints_from_index": [5, 6, 17, 19], "get_entries_from_db": [5, 6, 27, 29], "get_extrapolated_conduct": [5, 6, 16], "get_extrapolated_diffus": [5, 6, 16], "get_framework_rms_plot": [5, 6, 16], "get_full_structur": [5, 6, 7, 9], "get_hop_site_sequ": [5, 6, 17, 18], "get_inserted_on_bas": [5, 6, 27, 30], "get_insertion_energi": [5, 6, 27, 30], "get_label": [5, 6, 7, 8], "get_least_chg_path": [5, 6, 17, 18], "get_matched_structure_map": [5, 6, 27, 30], "get_min_dist": [5, 6, 7, 15], "get_msd_plot": [5, 6, 16], "get_one_rdf": [5, 6, 7, 10], "get_only_sites_from_structur": [5, 6, 17, 18], "get_optimal_pathway_rev": [5, 6, 17, 21], "get_pair": [5, 6, 7, 15], "get_path": [5, 6, 17, 18, 20, 23, 24], "get_random_centroid": [5, 6, 7, 8], "get_rdf": [5, 6, 7, 10], "get_rdf_plot": [5, 6, 7, 10], "get_sc_fromstruct": [5, 6, 27, 31], "get_sc_structur": [5, 6, 17, 20], "get_start_end_structur": [5, 6, 27, 31], "get_structur": [5, 6, 17, 20], "get_structure_from_entri": [5, 6, 17, 18], "get_summary_dict": [5, 6, 16, 17, 18], "get_sym_migration_ion_sit": [5, 6, 27, 30], "get_uc_po": [5, 6, 27, 28], "get_unique_hop": [5, 6, 27, 28], "get_unit_vector": [5, 6, 17, 20], "get_v": [5, 6, 17, 20], "gga": 20, "gilman": 2, "git": 0, "give": [20, 31], "given": [9, 10, 15, 16, 18, 20, 21, 28, 30], "good": [2, 16, 20, 21], "gradient": 20, "grant": 2, "granular": 16, "graph": [16, 18, 21, 22], "grid": [9, 10, 15, 20], "group": [16, 18, 19, 22, 29, 30], "gtol": 20, "guess": [8, 16, 20], "guid": 0, "h": [9, 10, 15, 16, 20], "ha": [1, 2, 9, 16, 18], "halv": [18, 30], "handl": 18, "have": [8, 11, 12, 13, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 34], "heap": 21, "heat": 15, "heavili": 2, "help": 20, "henkelman": [19, 20], "here": 18, "herebi": 2, "hereund": 2, "hi": 0, "hierarch": 9, "higher": 9, "highest": 30, "hmlli": 1, "holder": 2, "hook": [14, 22, 24, 34], "hop": [18, 22, 28, 31], "hop_dist": 18, "hop_label": 28, "hop_list": 18, "host": [18, 20, 28, 30], "host_structur": [5, 6, 17, 18], "host_symm_struct": 20, "hove": [2, 15], "how": 21, "howev": 2, "html_theme": 0, "html_theme_path": 0, "http": 19, "huang": 20, "huge": 16, "hundr": 15, "hydrogen": 20, "i": [0, 1, 2, 8, 9, 10, 15, 16, 18, 20, 21, 30, 31], "i_sc": 28, "id": 29, "idea": 18, "identifi": [20, 31], "idpp": [1, 2, 20], "idpp_kwarg": 20, "idppsolv": [5, 6, 17, 20], "idppsolvertest": 24, "ignor": [15, 28], "iindex": 18, "imag": [5, 6, 10, 15, 16, 17, 18, 20, 21], "img": 18, "implement": [1, 8, 10, 15, 20], "impli": 2, "import": [1, 8], "improv": 20, "incar": 15, "incident": 2, "includ": [1, 2, 9, 10, 15, 16, 17, 20], "include_mscd_t": 16, "include_msd_t": 16, "inconsist": 16, "increas": 20, "index": [2, 8, 10, 15, 18, 21, 28, 31], "indic": [9, 10, 15, 18, 19, 20, 21, 30], "indirect": 2, "individu": 16, "inequival": 22, "info": 20, "inform": [16, 18], "init_struct": 24, "initi": [8, 9, 10, 15, 16, 20, 28, 31], "initial_centroid": 8, "initial_disp": 16, "initial_structur": 16, "input": [15, 16, 18, 19, 20, 30], "insert": [18, 29, 30], "inserted_": 30, "inserted_entri": 30, "inserted_struct": 30, "insertion_energi": 18, "instanc": [11, 12, 13, 14, 22, 23, 24, 25, 26, 30, 34], "instead": [1, 16, 20], "int": [8, 10, 15, 16, 18, 19, 20, 21, 28, 31], "int_": 9, "intend": 0, "intercal": 20, "intercol": 18, "interest": [9, 10, 15, 20], "interfaci": 15, "interpol": [5, 6, 17, 20], "interpolate_lattic": 20, "interrupt": 2, "interstiti": [9, 15, 20], "interv": [9, 15], "invent": 2, "invers": 18, "io": [2, 5, 6, 17, 23, 35], "ion": [15, 16, 18, 20, 28, 29, 30], "ionic": [9, 16], "ionic_step_skip": 16, "is_averag": 10, "isit": [18, 20, 28, 31], "isol": 29, "isotrop": 20, "item": 18, "iter": [8, 16, 20, 21, 31], "its": [2, 16, 20], "j": 20, "jimag": 21, "jmmshn": 1, "jolla": 2, "journal": 20, "just": [10, 20], "k": [2, 8, 16, 20], "kei": [18, 21, 28], "kelvin": 16, "kenneth": 0, "kept": 20, "keyword": [16, 19], "kind": 30, "kitchaev": 20, "kmean": [5, 6, 7, 8], "kmeanspbc": [5, 6, 7, 8], "kmeanspbctest": 11, "kmeanstest": 11, "known": 20, "kr": 0, "kr_small": 0, "kt": 16, "kwarg": [15, 16, 18, 19, 20], "l": 16, "la": 2, "lab": 2, "label": [8, 10, 15, 18, 22, 28], "lambda": 21, "landscap": 9, "larg": [0, 20], "later": 18, "lattic": [8, 16, 18, 20, 23, 24, 31], "leaf": 21, "leaf_nod": 21, "least": [16, 18, 20], "lee": 16, "legend": 10, "length": [5, 6, 17, 18, 20, 22, 30, 31], "less": [15, 20, 31], "li": [9, 10, 15, 16, 18, 20, 24, 30], "li10": 16, "li10gep2s12": 16, "li3fe4p4o16": 20, "li4fe4p4o16": 20, "liabil": 2, "liabl": 2, "librari": 0, "life4p4o16": 20, "like": [2, 8, 16, 20], "limit": [2, 10, 21], "lin": 15, "linear": 20, "linearsegmentedcolormap": 15, "linspac": 10, "list": [2, 8, 9, 10, 15, 16, 18, 19, 20, 28, 30, 31], "list_in": 18, "listedcolormap": 15, "lithium": 16, "loc_peak": 10, "local": [18, 20], "long": 22, "loss": 2, "lost": 2, "low": 9, "lower": 20, "lowest": 21, "ltol": [18, 30], "m": [8, 16], "m_graph": 18, "m_hop": 18, "maggma": [5, 6, 27], "magmom": 1, "mai": [2, 9, 16, 20], "mail": 2, "main": 16, "mainli": 20, "mainten": 2, "make": [1, 2, 8, 16, 20, 22], "mani": [21, 30, 31], "manifest": 1, "manipul": 2, "manner": 20, "map": [15, 18, 30], "map_hop_sc2uc": [5, 6, 17, 18], "match": [16, 18, 20, 28, 29, 30], "matching_": 16, "mater": [9, 15], "materi": [2, 16, 18, 29], "material_id": 29, "material_stor": 29, "matplotlib": [15, 16], "matrix": [16, 20, 30], "mavrl": 19, "max": 16, "max_atom": [20, 31], "max_disp": 20, "max_dist": 18, "max_imag": 21, "max_it": 20, "max_iter": 8, "max_path_length": 20, "max_tol": 20, "max_val": 18, "maxim": 10, "maximum": [8, 10, 15, 16, 18, 20, 31], "maxit": 20, "md": [8, 9, 10, 15, 16], "mean": [2, 8, 16, 18, 20], "meant": 16, "measur": 16, "mechan": [16, 20], "melt": 16, "memori": 16, "merchant": 2, "met": 2, "metal": [18, 30], "metast": [18, 30], "method": [9, 10, 11, 12, 13, 14, 16, 20, 22, 23, 24, 25, 26, 34], "methodnam": [11, 12, 13, 14, 22, 23, 24, 25, 26, 34], "metric": 8, "mg": [18, 28], "mh1": 28, "mh2": 28, "mh_eq": [5, 6, 27, 28], "miara": 16, "mid": 20, "mid_struct": 20, "might": [15, 18, 21], "migrat": [1, 2, 18, 20, 28, 29, 30, 31], "migrating_ion": [29, 30], "migrating_ion_entri": [18, 30], "migrating_speci": [18, 20], "migrationgraph": [5, 6, 17, 18, 28, 30], "migrationgraphcomplextest": 22, "migrationgraphfromentriestest": 22, "migrationgraphsimpletest": 22, "migrationhop": [1, 5, 6, 17, 18, 20, 22, 28], "migrationhoptest": 24, "migrationpath": 28, "migratrion": 18, "min": [18, 20], "min_atom": [20, 31], "min_it": 20, "min_length": [20, 31], "min_ob": 16, "min_step": 16, "minim": [10, 20], "minima": 20, "minimum": [10, 15, 16, 20, 31], "miss": 21, "mit": 2, "mitnebset": 19, "mitrelaxset": 19, "mitsuhiko": 0, "mix": 20, "mixedpotenti": [5, 6, 17, 20], "mixtur": 18, "mn6o5f7": 22, "mo": 16, "mobil": [16, 18], "mode": [15, 16, 18, 20, 31], "modif": [2, 19], "modifi": 2, "modul": [2, 5], "moment": 15, "mongostor": 29, "more": [1, 2, 9, 15, 18, 20, 30], "most": [0, 18], "move": [16, 20, 21], "mscd": 16, "msd": 16, "msite": 1, "msonabl": [1, 16, 18, 20], "much": 31, "multipl": [16, 29], "multipli": 16, "multiprocess": 16, "must": [2, 16, 18, 30], "mvlcinebendpointset": [5, 6, 17, 19], "mvlcinebendpointsettest": 23, "mvlcinebset": [5, 6, 17, 19], "mvlcinebsettest": 23, "mxn": 8, "n": [8, 9, 30], "n_": 9, "n_imag": 20, "n_job": 10, "na": [9, 10, 15, 23], "na3ps4": [9, 15], "name": [2, 11, 12, 13, 14, 18, 20, 22, 23, 24, 25, 26, 29, 34], "namespac": [1, 2, 3], "narrow": 20, "nation": 2, "ncore": 16, "ndarrai": [8, 16], "nearest": 9, "nearneighbor": 18, "neb": [1, 5, 6, 28, 31, 35], "nebpath": 20, "nebpathfind": [5, 6, 17, 20], "necessari": 20, "need": [16, 18, 20, 29, 30], "neglig": 2, "neighbor": 18, "neither": 2, "nest": 9, "network": [18, 20], "new": [8, 20, 30], "new_dim": 20, "new_temp": 16, "ngrid": [10, 15], "nimag": 20, "nion": 9, "nn": 18, "node": [18, 20, 21], "non": 18, "none": [8, 10, 15, 16, 18, 20, 28, 30], "nor": 2, "normal": [5, 6, 17, 20], "note": [2, 9, 15, 16, 19, 20], "notic": 2, "now": [1, 18], "np": [8, 10, 15, 16], "npt": 16, "nsite": [5, 6, 7, 9], "ntimestep": 9, "number": [8, 9, 10, 15, 16, 18, 20, 30, 31], "numpi": [9, 10, 16, 20], "nvt": 16, "nx3": 9, "o": [0, 10, 16, 23, 24], "obei": 20, "object": [8, 9, 10, 15, 16, 18, 19, 20, 21, 22, 28, 30, 31], "oblig": 2, "observ": 16, "obtain": [2, 9, 15, 16, 18, 20, 30, 31], "occup": 9, "occupi": 18, "offic": 2, "often": [16, 21], "old": 8, "old_centroid": 8, "omega": 9, "onc": 16, "one": [0, 10, 15, 16, 19, 29, 30], "ones": 20, "ong": [9, 15, 16], "onli": [15, 16, 18, 20, 30], "only_single_cat": [18, 30], "only_sit": [5, 6, 17, 18], "onto": [18, 30], "oper": [2, 18], "optim": [20, 21], "option": [10, 15, 16, 18, 20, 21], "order": [1, 16], "order_path": [5, 6, 17, 18], "orient": 18, "origin": [16, 18, 20], "other": [2, 15, 16, 18, 20], "otherwis": [2, 10, 16, 20], "out": [0, 2, 30], "outfil": 20, "output": [10, 18, 20], "outsid": [18, 23], "over": [1, 9, 10, 16, 31], "overal": 16, "oxid": 16, "p": [9, 15, 16, 23, 24], "p1": 18, "p_ratio": 9, "packag": [1, 2, 5, 29], "paddl": 16, "page": [0, 2], "pair": [10, 15, 20, 21, 30], "panda": 15, "paper": [9, 15, 16], "paragraph": 2, "param": [18, 20, 30], "paramet": [8, 9, 10, 15, 16, 18, 19, 20, 21, 28, 29, 30, 31], "parent": 21, "pars": [15, 16, 18], "parse_entri": [5, 6, 27], "parseentriestest": 34, "part": 15, "parti": 2, "particular": [2, 15], "pass": [15, 16, 18, 20], "passthrough": [18, 20], "passthru": 18, "path": [0, 2, 16, 18, 20, 21, 30], "path_par": 21, "path_str": [23, 24], "pathfind": [1, 5, 6, 17, 35], "pathfindertest": 26, "pathwai": [5, 6, 7, 17, 18, 21, 35], "pbc": [8, 23, 24], "peak": 10, "per": [20, 29], "perc_mod": 20, "percol": [18, 20], "perfect": 19, "perform": [16, 20], "period": [2, 8, 19, 20, 21], "periodic_dijkstra": [5, 6, 17, 35], "periodic_dijkstra_on_sgraph": [5, 6, 17, 21], "periodicsit": [23, 24, 28, 31], "permiss": 2, "permit": 2, "phase": [16, 18, 30], "phy": 20, "physic": 20, "pieremanuel": 20, "pl": 2, "placehold": 20, "pleas": [2, 9, 15, 16, 20], "plot": [10, 15, 16], "plot_atomic_evolut": [5, 6, 7, 15], "plot_evolution_from_data": [5, 6, 7, 15], "plot_imag": [5, 6, 17, 20], "plot_msd": [5, 6, 16], "plot_rdf_evolut": [5, 6, 7, 15], "plt": 16, "pmg": 31, "pmg_structur": [9, 10, 20], "point": [8, 9, 10, 15, 16, 19, 20, 21, 22], "popul": [18, 22], "populate_edges_with_chg_density_info": [5, 6, 17, 18], "poscar": 20, "posit": [8, 16, 20, 28, 30], "possibl": [2, 18, 20, 31], "pot": 20, "potenti": [18, 20], "potential_data_kei": 18, "potential_field": 18, "potim": 15, "pp": [9, 15], "pre": 16, "precess": 28, "precis": [18, 20], "preliminari": 2, "present": [16, 18, 31], "pretti": [16, 20], "previou": 18, "principl": [15, 16], "print": 18, "prior": 2, "probabilitydensityanalysi": [5, 6, 7, 9], "probabilitydensitytest": 12, "probabl": [2, 9], "probe": 15, "process": [10, 15, 16, 20, 30], "process_entri": [5, 6, 27, 30], "procur": 2, "product": [2, 18], "profit": 2, "program": 2, "progress": 2, "project": [0, 29], "promot": 2, "properti": [10, 18, 20], "provid": [2, 8, 16, 20, 30], "public": 2, "pull": 2, "purpos": 2, "put": 0, "py": [0, 23], "py3k": 1, "pymatgen": [1, 2], "pymatgen_diffus": 1, "pymatgentest": [24, 25, 26], "pypi": 1, "pyplot": 16, "python": 18, "quantit": 15, "quantiti": 16, "queri": 29, "quickli": 21, "r": [9, 15, 20], "radial": [10, 15], "radialdistributionfunct": [5, 6, 7, 10], "radialdistributionfunctionfast": [5, 6, 7, 10], "radiu": [10, 18, 22], "rais": [11, 12, 13, 14, 22, 23, 24, 25, 26, 34], "random": 8, "randomli": 8, "rang": [10, 15, 16, 20], "rank": [18, 30], "ratio": 20, "rdf": [5, 6, 7, 15, 35], "rdftest": [13, 14], "re": [8, 28], "reaction": 15, "read": [18, 19], "real": [16, 20], "reason": [2, 20], "recommend": [15, 20], "redistribut": 2, "reduc": [15, 16], "ref_speci": 10, "refer": [2, 9, 10, 18, 20], "reference_indic": 10, "reference_speci": [10, 15], "regent": 2, "region": 16, "regress": 16, "regular": 20, "reitz": 0, "rel": 20, "relat": [0, 16], "relax": [19, 20], "relax_sit": 20, "releas": [1, 2], "relev": [2, 18], "reli": 2, "reliabl": [16, 20], "remov": [1, 20], "repositori": [0, 2], "repres": 20, "represent": [16, 18, 31], "reproduc": 2, "request": 2, "requir": [15, 16, 19], "rescal": 20, "rescale_field": [5, 6, 17, 20], "research": [2, 20], "reserv": 2, "resolut": 15, "respect": 20, "respons": 20, "rest": 29, "restrict": 16, "result": 16, "retain": [2, 18], "return": [8, 9, 10, 15, 16, 18, 19, 20, 21, 28, 30, 31], "revolution": 2, "richard": 16, "right": 2, "rm": 16, "rmax": [10, 15], "rmin": 10, "role": [9, 15], "rong": 20, "run": [5, 6, 8, 10, 16, 17, 20], "run1": 16, "run2": 16, "run3": 16, "runtest": [11, 12, 13, 14, 22, 23, 24, 25, 26, 34], "s1": [20, 30], "s2": [20, 30], "same": [9, 10, 16, 18, 20, 22, 28, 30], "sampl": 16, "san": 30, "saniti": 22, "save": [9, 15, 18], "save_csv": 15, "sc": [18, 28, 30], "sc_hop": 18, "sc_m": 30, "sc_mat": 31, "scheme": 9, "scienc": [2, 16], "scientif": 2, "se": 16, "seaborn": 15, "search": [2, 21], "second": 19, "secondari": 16, "see": [16, 18, 19, 20], "seem": 20, "seen": 20, "select": [9, 15], "self": [1, 15, 20], "send": 2, "sens": 16, "sequenc": [9, 16, 18], "sequenti": 16, "serial": 16, "servic": 2, "set": [9, 10, 14, 15, 16, 18, 19, 20, 21, 22, 24, 34], "set1": 15, "setup": [14, 22, 24, 34], "sgraph": 21, "shall": 2, "shallow": 9, "shape": [16, 20], "shortest": [9, 15], "should": [1, 8, 9, 16, 18, 20, 22], "should_stop": [5, 6, 7, 8], "show": 16, "si": 16, "sigma": [10, 15], "similar": [16, 22, 29], "similarli": 22, "simpl": 8, "simul": [7, 9, 10, 15, 16, 20, 31], "sinc": [21, 30], "singl": [10, 18, 30], "site": [9, 16, 18, 19, 20, 22, 28, 30, 31], "site_index": 21, "site_indic": 19, "site_occ": [5, 6, 7, 9], "siteoccupancyanalyz": [5, 6, 7, 9], "siteoccupancytest": 12, "size": [20, 30, 31], "skew": 20, "skip": 15, "slope": 16, "slow": [9, 15, 20], "slowli": 9, "sm": [28, 30], "small": 0, "smaller": 30, "smallest": [20, 31], "smear": [10, 15, 20], "smidstrup": 20, "smooth": [10, 16, 20], "sn": 16, "so": [16, 18, 20, 21, 29, 30, 31], "sodium": 15, "softwar": [2, 16, 20], "solid": 15, "solver": [1, 20], "some": [15, 20, 30], "sometim": 16, "sort_tol": 20, "sourc": [2, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 34], "space": 30, "spacegroup": [20, 28], "spacegroupanalyz": [18, 30], "speci": [9, 10, 15, 16, 18, 20], "special": 2, "specif": [2, 18], "specifi": [11, 12, 13, 14, 15, 18, 22, 23, 24, 25, 26, 34], "spectrum": 15, "speed": 16, "spring": 20, "spring_const": 20, "squar": [8, 16], "ss": 8, "stabil": 16, "stabl": 9, "stable_sit": 9, "standard": [0, 16, 20], "start": [16, 18, 20, 31], "start_struct": 20, "start_u": 18, "state": [15, 16], "static": [8, 15, 18, 20], "staticpotenti": [5, 6, 17, 20], "statist": [15, 16], "step": [9, 15, 16, 20], "step_siz": 20, "step_skip": [15, 16], "still": 20, "stipul": 16, "stol": [18, 30], "stop": [8, 16, 21], "store": 9, "str": [9, 10, 15, 16, 18, 20, 21, 28, 29, 30], "strang": 20, "strategi": 18, "strict": [2, 18, 30], "strictur": 16, "string": [10, 15, 16, 18, 20], "string_relax": [5, 6, 17, 20], "strongli": 20, "struc_sc": 31, "struct": 20, "structur": [2, 5, 6, 7, 9, 10, 15, 16, 18, 19, 20, 23, 24, 28, 29, 30, 31], "structure_group_stor": 29, "structure_is_bas": 18, "structuregraph": [18, 21], "structurematch": [18, 28, 30], "studi": 16, "style": 29, "subject": 16, "submodul": [0, 5, 35], "subsequ": 20, "subset": [9, 15], "substitut": 2, "suffici": 16, "suit": 1, "sum": [8, 20], "summari": [16, 23, 24], "super": [16, 28], "supercel": [5, 6, 10, 15, 18, 20, 27, 28, 30], "superclass": 20, "superion": [9, 15, 16], "suppli": [2, 8, 16], "support": [2, 10, 16, 19, 20], "sure": 22, "switch": 18, "sy": 0, "symbol": [10, 15], "symm_structur": [5, 6, 17, 18, 20], "symmetr": [18, 20, 28], "symmetri": [18, 20, 28, 30], "symmetrizedstructur": [18, 20], "symprec": [18, 20, 30], "t": [15, 16, 28, 30, 31], "t0": 15, "tabl": 15, "take": [10, 16, 18, 20, 28, 30], "tang": 15, "target": 21, "target_label": 18, "target_reach": 21, "task": 29, "technologi": 2, "temp": 16, "temperatur": 16, "term": [2, 9], "termin": [20, 31], "test": 19, "test_add_data_to_similar_edg": 22, "test_add_edge_data_from_sc": 32, "test_assign_cost_to_graph": 22, "test_filter_and_merg": 34, "test_fit_arrheniu": 25, "test_from_structure_npt": 25, "test_generate_stable_sit": 12, "test_get_all_sym_sit": 34, "test_get_conversion_factor": 25, "test_get_df": 14, "test_get_endpoint_dist": 23, "test_get_endpoints_from_index": 23, "test_get_inserted_on_bas": 34, "test_get_insertion_energi": 34, "test_get_key_in_path": 22, "test_get_path": [22, 24], "test_get_pos_and_migration_hop": 22, "test_get_sc_structur": 24, "test_get_sc_structures_vacmod": 24, "test_get_start_end_structs_from_hop": 24, "test_get_start_end_structs_from_hop_vac": 24, "test_get_summary_dict": 22, "test_get_uc_po": 32, "test_get_unique_hop_host": 32, "test_get_unique_host_nonhost": 32, "test_group_and_label_hop": 22, "test_idpp": 24, "test_idpp_from_ep": 24, "test_idpp_from_ep_diff_latt": 24, "test_incar": 23, "test_incar_user_set": 23, "test_init": 25, "test_init_npt": 25, "test_integr": 22, "test_m_graph_construct": 22, "test_m_graph_from_entries_fail": 22, "test_max_path_length": 24, "test_mhop_mson": 26, "test_mson": 24, "test_not_matching_first": 22, "test_order_path": 22, "test_periodic_dijkstra": 22, "test_populate_edges_with_chg_density_info": 22, "test_prob": 12, "test_probability_classmethod": 12, "test_process_": 34, "test_raises_valueerror_if_ngrid_is_less_than_2": 14, "test_raises_valueerror_if_reference_species_not_in_structur": 14, "test_raises_valueerror_if_sigma_is_not_posit": 14, "test_raises_valueerror_if_species_not_in_structur": 14, "test_rdf": 14, "test_rdf_coordination_numb": [13, 14], "test_rdf_two_species_coordination_numb": 14, "test_site_occup": 12, "test_site_occupancy_classmethod": 12, "test_to_chgcar": 12, "test_unique_hops_dict": 22, "testcas": [11, 12, 13, 14, 22, 23, 24, 34], "than": [9, 15, 16, 20, 30], "thei": [16, 20, 28], "theme": 0, "theori": [2, 19], "thermal": 15, "thi": [0, 2, 8, 9, 10, 15, 16, 19, 20, 21, 22], "those": [15, 16, 18, 20], "three": [2, 10, 15, 20], "threshold": [9, 20], "through": [15, 18, 20, 28], "throughout": 15, "thu": 8, "time": [9, 15, 16], "time_step": [15, 16], "timestep": 16, "to_chgcar": [5, 6, 7, 9], "to_jimag": 21, "togeth": 18, "tol": [15, 20, 31], "toler": [18, 20, 30], "toleranac": [20, 31], "too": 20, "tool": [1, 17], "top": 21, "topotact": 29, "tort": 2, "total": [20, 30], "total_run_tim": 16, "track": 18, "tradit": 16, "trajectori": [2, 8, 9, 16], "transfer": 2, "transform": [28, 31], "translat": [10, 15, 18, 30], "tri": 16, "true": [10, 18, 20, 22, 23, 24, 28, 30], "try": 31, "tube": [18, 22], "tube_radiu": 18, "tupl": [10, 15, 20, 21, 28, 31], "turn": 22, "two": [9, 16, 19, 20, 28], "type": [8, 15, 16, 18, 19, 20, 21, 30, 31], "typic": 16, "u": 2, "uc": [18, 28], "uc_hop": 18, "ucsd": 2, "unconverg": 20, "uncorrel": 16, "under": [2, 18], "understand": 2, "uniform": 9, "uninterrupt": 2, "uniqu": [18, 22, 28], "unique_hop": [5, 6, 17, 18], "unit": [15, 16, 18, 20, 22, 23, 28, 31], "unitcel": 31, "univers": 2, "unsort": 18, "until": [18, 20, 31], "up": [14, 16, 20, 21, 22, 24, 34], "updat": 2, "us": [0, 2, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 34], "usag": 16, "use_host_sg": 28, "use_strict_tol": [18, 30], "user": 2, "usual": [16, 20], "utexa": 19, "util": [5, 6], "utilitytest": 23, "v": [16, 20], "vac_mod": [18, 20, 31], "vacanc": [18, 20], "vacuum": 31, "valenc": 16, "valid": 22, "valu": [10, 18, 20], "valueerror": [11, 12, 13, 14, 22, 23, 24, 25, 26, 34], "van": [2, 15], "van_hov": [5, 6, 7, 35], "vanhoveanalysi": [5, 6, 7, 15], "vanhovetest": 14, "variabl": [16, 28], "varianc": 16, "vasp": [9, 16, 19, 20], "vaspinputset": 19, "vasprun": 16, "vec": 20, "vector": [10, 15, 18, 20, 31], "veri": [0, 15, 21], "version": 8, "vesta": [9, 20], "via": [1, 16, 20], "view": 20, "virtual": [2, 20], "visual": [9, 20], "volum": [23, 24], "volumentr": 20, "volumetricdata": 18, "vtst": 19, "vtsttool": 19, "w": 16, "wa": 2, "wai": [2, 21, 22], "wang": 15, "want": [16, 20], "warrant": 2, "warranti": 2, "water": 10, "we": [2, 10, 15, 20, 21, 22, 31], "weight": [16, 20, 21], "welcom": 2, "well": [8, 20], "wenxuan": 20, "were": 20, "what": 16, "wheel": 16, "when": [11, 12, 13, 14, 16, 18, 22, 23, 24, 25, 26, 34], "where": [8, 9, 16, 20, 21, 30], "whether": [2, 10, 16, 18, 20, 28], "which": [9, 15, 16, 18, 20], "while": 20, "whose": 20, "width": 20, "window": 15, "with_base_structur": [5, 6, 17, 18], "with_dist": [5, 6, 17, 18], "with_local_env_strategi": [5, 6, 17, 18], "within": [15, 16, 18, 20, 28, 31], "without": [2, 21], "work": [2, 8, 18, 20, 28, 30], "working_ion": 30, "would": [15, 16, 20], "write": [16, 19, 20], "write_all_path": [5, 6, 17, 20], "write_path": [5, 6, 17, 20], "written": [2, 10, 16], "x": [9, 10, 15, 16], "x_label": 15, "xlim": 10, "xml": 16, "y": [10, 16], "yield": 20, "ylim": 10, "you": [0, 2, 8, 9, 15, 16, 18, 20], "your": [0, 20], "z": [9, 15, 16], "zero": [10, 15], "zheng": 15, "zhu": [9, 15], "ziqin": 20, "zr": 23, "\u00e5": 16}, "titles": ["krTheme Sphinx Style", "Change Log", "Introduction", "pymatgen", "pymatgen namespace", "pymatgen.analysis namespace", "pymatgen.analysis.diffusion package", "pymatgen.analysis.diffusion.aimd package", "pymatgen.analysis.diffusion.aimd.clustering module", "pymatgen.analysis.diffusion.aimd.pathway module", "pymatgen.analysis.diffusion.aimd.rdf module", "pymatgen.analysis.diffusion.aimd.tests.test_clustering module", "pymatgen.analysis.diffusion.aimd.tests.test_pathway module", "pymatgen.analysis.diffusion.aimd.tests.test_rdf module", "pymatgen.analysis.diffusion.aimd.tests.test_van_hove module", "pymatgen.analysis.diffusion.aimd.van_hove module", "pymatgen.analysis.diffusion.analyzer module", "pymatgen.analysis.diffusion.neb package", "pymatgen.analysis.diffusion.neb.full_path_mapper module", "pymatgen.analysis.diffusion.neb.io module", "pymatgen.analysis.diffusion.neb.pathfinder module", "pymatgen.analysis.diffusion.neb.periodic_dijkstra module", "pymatgen.analysis.diffusion.neb.tests.test_full_path_mapper module", "pymatgen.analysis.diffusion.neb.tests.test_io module", "pymatgen.analysis.diffusion.neb.tests.test_pathfinder module", "pymatgen.analysis.diffusion.tests.test_analyzer module", "pymatgen.analysis.diffusion.tests.test_pathfinder module", "pymatgen.analysis.diffusion.utils package", "pymatgen.analysis.diffusion.utils.edge_data_from_sc module", "pymatgen.analysis.diffusion.utils.maggma module", "pymatgen.analysis.diffusion.utils.parse_entries module", "pymatgen.analysis.diffusion.utils.supercells module", "pymatgen.analysis.diffusion.utils.tests.test_edge_data_from_sc module", "pymatgen.analysis.diffusion.utils.tests.test_maggma module", "pymatgen.analysis.diffusion.utils.tests.test_parse_entries module", "pymatgen_diffusion package", "pymatgen_diffusion.aimd package", "pymatgen_diffusion.neb package"], "titleterms": {"0": 1, "1": 1, "15": 1, "2": 1, "22": 1, "28": 1, "29": 1, "3": 1, "4": 1, "5": 1, "6": 1, "8": 1, "acknowledg": 2, "aimd": [7, 8, 9, 10, 11, 12, 13, 14, 15, 36], "analysi": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34], "analyz": 16, "api": 2, "chang": [1, 2], "cite": 2, "cluster": [8, 36], "content": [6, 7, 17, 27, 35, 36, 37], "contribut": 2, "copyright": 2, "diffus": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34], "document": 2, "edge_data_from_sc": 28, "exhaust": 2, "featur": 2, "full_path_mapp": [18, 37], "indic": 2, "introduct": 2, "io": [19, 37], "krtheme": 0, "licens": 2, "log": [1, 2], "maggma": 29, "modul": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37], "namespac": [4, 5], "neb": [17, 18, 19, 20, 21, 22, 23, 24, 37], "non": 2, "our": 2, "packag": [6, 7, 17, 27, 35, 36, 37], "parse_entri": 30, "pathfind": [20, 37], "pathwai": [9, 36], "periodic_dijkstra": [21, 37], "polici": 2, "pymatgen": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34], "pymatgen_diffus": [35, 36, 37], "rdf": [10, 36], "sphinx": 0, "style": 0, "submodul": [6, 7, 17, 27, 36, 37], "subpackag": [5, 6, 7, 17, 27, 35, 36, 37], "supercel": 31, "tabl": 2, "test": [11, 12, 13, 14, 22, 23, 24, 25, 26, 32, 33, 34], "test_analyz": 25, "test_clust": 11, "test_edge_data_from_sc": 32, "test_full_path_mapp": 22, "test_io": 23, "test_maggma": 33, "test_parse_entri": 34, "test_pathfind": [24, 26], "test_pathwai": 12, "test_rdf": 13, "test_van_hov": 14, "util": [27, 28, 29, 30, 31, 32, 33, 34], "v0": 1, "v2018": 1, "v2019": 1, "v2021": 1, "v2022": 1, "v2023": 1, "van_hov": [15, 36]}}) \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 1cf6a76..e951c7d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -54,7 +54,7 @@ dependencies = [ "pymatgen>=2024.6.10", "joblib" ] -version = "2023.8.15" +version = "2024.6.24" [project.urls] Homepage = "http://materialsvirtuallab.github.io/pymatgen-analysis-diffusion/"