From 620f722251bb7d4876666e717015c42e1e8afbac Mon Sep 17 00:00:00 2001 From: Shyue Ping Ong Date: Mon, 2 May 2022 10:50:29 -0700 Subject: [PATCH] Update dev docs --- docs/_modules/index.html | 18 +- .../pymatgen/db/alchemy/transmuters.html | 12 +- docs/_modules/pymatgen/db/config.html | 339 +++++ docs/_modules/pymatgen/db/creator.html | 111 +- docs/_modules/pymatgen/db/query_engine.html | 66 +- docs/_modules/pymatgen/db/util.html | 78 +- docs/_sources/pymatgen.db.rst.txt | 20 +- docs/_static/doctools.js | 72 +- docs/_static/documentation_options.js | 6 +- docs/_static/searchtools.js | 8 +- docs/_themes/README.html | 4 +- docs/builders.html | 8 +- docs/change_log.html | 4 +- docs/dbconfig.html | 4 +- docs/doctrees/_themes/README.doctree | Bin 5838 -> 5830 bytes docs/doctrees/builders.doctree | Bin 103288 -> 103280 bytes docs/doctrees/change_log.doctree | Bin 19065 -> 19057 bytes docs/doctrees/dbconfig.doctree | Bin 8254 -> 8246 bytes docs/doctrees/environment.pickle | Bin 346150 -> 154884 bytes docs/doctrees/index.doctree | Bin 40099 -> 40091 bytes docs/doctrees/mgvv.doctree | Bin 102184 -> 102176 bytes docs/doctrees/modules.doctree | Bin 2688 -> 2680 bytes docs/doctrees/pymatgen.db.alchemy.doctree | Bin 13986 -> 13978 bytes docs/doctrees/pymatgen.db.builders.doctree | Bin 292939 -> 4770 bytes .../pymatgen.db.builders.examples.doctree | Bin 57405 -> 4275 bytes docs/doctrees/pymatgen.db.doctree | Bin 288744 -> 232784 bytes docs/doctrees/pymatgen.db.vv.doctree | Bin 356498 -> 4609 bytes docs/doctrees/pymatgen.doctree | Bin 3192 -> 3184 bytes docs/genindex.html | 816 +---------- docs/index.html | 4 +- docs/mgvv.html | 62 +- docs/modules.html | 27 +- docs/objects.inv | Bin 3743 -> 1791 bytes docs/py-modindex.html | 81 +- docs/pymatgen.db.alchemy.html | 9 +- docs/pymatgen.db.builders.examples.html | 249 +--- docs/pymatgen.db.builders.html | 1118 +------------- docs/pymatgen.db.html | 627 +++----- docs/pymatgen.db.vv.html | 1297 +---------------- docs/pymatgen.html | 39 +- docs/search.html | 4 +- docs/searchindex.js | 2 +- docs_rst/pymatgen.db.rst | 20 +- pymatgen/db/__init__.py | 4 +- setup.py | 2 +- 45 files changed, 844 insertions(+), 4267 deletions(-) create mode 100644 docs/_modules/pymatgen/db/config.html diff --git a/docs/_modules/index.html b/docs/_modules/index.html index 8801dfd..ca70f68 100644 --- a/docs/_modules/index.html +++ b/docs/_modules/index.html @@ -5,7 +5,7 @@ - Overview: module code — pymatgen-db 2022.3.17 documentation + Overview: module code — pymatgen-db 2022.5.2 documentation @@ -37,7 +37,7 @@

Navigation

  • modules |
  • - + @@ -49,22 +49,10 @@

    Navigation

    All modules for which code is available

    diff --git a/docs/_modules/pymatgen/db/alchemy/transmuters.html b/docs/_modules/pymatgen/db/alchemy/transmuters.html index 171f764..2984308 100644 --- a/docs/_modules/pymatgen/db/alchemy/transmuters.html +++ b/docs/_modules/pymatgen/db/alchemy/transmuters.html @@ -5,7 +5,7 @@ - pymatgen.db.alchemy.transmuters — pymatgen-db 2022.3.17 documentation + pymatgen.db.alchemy.transmuters — pymatgen-db 2022.5.2 documentation @@ -37,7 +37,7 @@

    Navigation

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

    Source code for pymatgen.db.alchemy.transmuters

    < __date__ = "Mar 4, 2012" import datetime + from pymatgen.alchemy.materials import TransformedStructure from pymatgen.alchemy.transmuters import StandardTransmuter @@ -97,12 +98,7 @@

    Source code for pymatgen.db.alchemy.transmuters

    < """ entries = queryengine.get_entries(criteria, inc_structure=True) - source = "{}:{}/{}/{}".format( - queryengine.host, - queryengine.port, - queryengine.database_name, - queryengine.collection_name, - ) + source = f"{queryengine.host}:{queryengine.port}/{queryengine.database_name}/{queryengine.collection_name}" def get_history(entry): return [ diff --git a/docs/_modules/pymatgen/db/config.html b/docs/_modules/pymatgen/db/config.html new file mode 100644 index 0000000..c5b20f2 --- /dev/null +++ b/docs/_modules/pymatgen/db/config.html @@ -0,0 +1,339 @@ + + + + + + + + pymatgen.db.config — pymatgen-db 2022.5.2 documentation + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pymatgen.db.config

    +"""
    +Database configuration functions.
    +Main class is DBConfig, which encapsulates a database configuration
    +passed in as a file or object. For example::
    +    cfg1 = DBConfig()  # use defaults
    +    cfg2 = DBConfig("/path/to/myfile.json")  # read from file
    +    f = open("/other/file.json")
    +    cfg3 = DBConfig(f)  # read from file object
    +    # access dict of parsed conf. settings
    +    settings = cfg1.settings
    +"""
    +
    +import os
    +
    +from ruamel import yaml
    +
    +__author__ = "Dan Gunter <dkgunter@lbl.gov>"
    +__date__ = "4/25/14"
    +
    +# Constants for keys
    +HOST_KEY = "host"
    +PORT_KEY = "port"
    +DB_KEY = "database"
    +COLL_KEY = "collection"
    +USER_KEY = "user"
    +PASS_KEY = "password"
    +ALIASES_KEY = "aliases"
    +
    +
    +
    [docs]class ConfigurationFileError(Exception): + """ + Error for Config File + """ + + def __init__(self, filename, err): + """ + Init for ConfigurationFileError. + """ + msg = f"reading '{filename}': {err}" + Exception.__init__(self, msg)
    + + +
    [docs]class DBConfig: + """Database configuration.""" + + DEFAULT_PORT = 27017 + DEFAULT_FILE = "db.json" + ALL_SETTINGS = [ + HOST_KEY, + PORT_KEY, + DB_KEY, + COLL_KEY, + ALIASES_KEY, + ] + DEFAULT_SETTINGS = [ + (HOST_KEY, "localhost"), + (PORT_KEY, DEFAULT_PORT), + (DB_KEY, "vasp"), + (ALIASES_KEY, {}), + ] + + def __init__(self, config_file=None, config_dict=None): + """ + Constructor. + Settings are created from config_dict, if given, + or parsed config_file, if given, otherwise + the DEFAULT_FILE is tried and if that is not present + the DEFAULT_SETTINGS are used without modification. + :param config_file: Read configuration from this file. + :type config_file: file or str path + :param config_dict: Set configuration from this dictionary. + :raises: ConfigurationFileError if cannot read/parse config_file + """ + self._cfg = dict(self.DEFAULT_SETTINGS) + settings = {} + if config_dict: + settings = config_dict.copy() + auth_aliases(settings) + else: + # Try to use DEFAULT_FILE if no config_file + if config_file is None: + if os.path.exists(self.DEFAULT_FILE): + config_file = self.DEFAULT_FILE + # If there was a config_file, parse it + if config_file is not None: + try: + settings = get_settings(config_file) + except Exception as err: + path = _as_file(config_file).name + raise ConfigurationFileError(path, err) + self._cfg.update(settings) + normalize_auth(self._cfg) + + def __str__(self): + return str(self._cfg) + +
    [docs] def copy(self): + """Return a copy of self (internal settings are copied).""" + return DBConfig(config_dict=self._cfg.copy())
    + + @property + def settings(self): + """ + Return settings + """ + return self._cfg + + @property + def host(self): + """ + Return host + """ + return self._cfg.get(HOST_KEY, None) + + @property + def port(self): + """ + Return port. + """ + return self._cfg.get(PORT_KEY, self.DEFAULT_PORT) + + @property + def dbname(self): + """Name of the database.""" + return self._cfg.get(DB_KEY, None) + + @dbname.setter + def dbname(self, value): + """ + Set dbname. + """ + self._cfg[DB_KEY] = value + + @property + def collection(self): + """ + Return collection. + """ + return self._cfg.get(COLL_KEY, None) + + @collection.setter + def collection(self, value): + """ + Set collection. + """ + self._cfg[COLL_KEY] = value + + @property + def user(self): + """ + Return user. + """ + return self._cfg.get(USER_KEY, None) + + @property + def password(self): + """ + Return password. + """ + return self._cfg.get(PASS_KEY, None)
    + + +
    [docs]def get_settings(infile): + """Read settings from input file. + :param infile: Input file for JSON settings. + :type infile: file or str path + :return: Settings parsed from file + :rtype: dict + """ + yml = yaml.YAML() + settings = yml.load(_as_file(infile)) + if not hasattr(settings, "keys"): + raise ValueError(f"Settings not found in {infile}") + + # Processing of namespaced parameters in .pmgrc.yaml. + processed_settings = {} + for k, v in settings.items(): + if k.startswith("PMG_DB_"): + processed_settings[k[7:].lower()] = v + else: + processed_settings[k] = v + auth_aliases(processed_settings) + return processed_settings
    + + +
    [docs]def auth_aliases(d): + """Interpret user/password aliases.""" + for alias, real in ((USER_KEY, "readonly_user"), (PASS_KEY, "readonly_password")): + if alias in d: + d[real] = d[alias] + del d[alias]
    + + +
    [docs]def normalize_auth(settings, admin=True, readonly=True, readonly_first=False): + """Transform the readonly/admin user and password to simple user/password, + as expected by QueryEngine. If return value is true, then + admin or readonly password will be in keys "user" and "password". + :param settings: Connection settings + :type settings: dict + :param admin: Check for admin password + :param readonly: Check for readonly password + :param readonly_first: Check for readonly password before admin + :return: Whether user/password were found + :rtype: bool + """ + U, P = USER_KEY, PASS_KEY + # If user/password, un-prefixed, exists, do nothing. + if U in settings and P in settings: + return True + + # Set prefixes + prefixes = [] + if readonly_first: + if readonly: + prefixes.append("readonly_") + if admin: + prefixes.append("admin_") + else: + if admin: + prefixes.append("admin_") + if readonly: + prefixes.append("readonly_") + + # Look for first user/password matching. + found = False + for pfx in prefixes: + ukey, pkey = pfx + U, pfx + P + if ukey in settings and pkey in settings: + settings[U] = settings[ukey] + settings[P] = settings[pkey] + found = True + break + + return found
    + + +def _as_file(f, mode="r"): + if isinstance(f, str): + return open(f, mode) + return f +
    + +
    +
    +
    +
    + +
    +
    + + + + + + \ No newline at end of file diff --git a/docs/_modules/pymatgen/db/creator.html b/docs/_modules/pymatgen/db/creator.html index 8fa0410..1d4aacc 100644 --- a/docs/_modules/pymatgen/db/creator.html +++ b/docs/_modules/pymatgen/db/creator.html @@ -5,7 +5,7 @@ - pymatgen.db.creator — pymatgen-db 2022.3.17 documentation + pymatgen.db.creator — pymatgen-db 2022.5.2 documentation @@ -37,7 +37,7 @@

    Navigation

  • modules |
  • - + @@ -49,43 +49,41 @@

    Navigation

    Source code for pymatgen.db.creator

    -#!/usr/bin/env python
    -
    -"""
    +"""
     This module defines a Drone to assimilate vasp data and insert it into a
     Mongo database.
     """
     
     
    -import os
    -import re
    -import glob
    -import logging
     import datetime
    -import string
    +import glob
     import json
    +import logging
    +import os
    +import re
     import socket
    -import numpy as np
    +import string
     import zlib
    -from fnmatch import fnmatch
     from collections import OrderedDict
    +from fnmatch import fnmatch
     
    -from pymongo import MongoClient
     import gridfs
    -
    -from pymatgen.apps.borg.hive import AbstractDrone
    +import numpy as np
    +from pymongo import MongoClient
    +from monty.io import zopen
    +from monty.json import MontyEncoder
    +from pymatgen.analysis.bond_valence import BVAnalyzer
     from pymatgen.analysis.local_env import VoronoiNN
    -from pymatgen.core.structure import Structure
    +from pymatgen.analysis.structure_analyzer import oxide_type
    +from pymatgen.apps.borg.hive import AbstractDrone
     from pymatgen.core.composition import Composition
    -from pymatgen.io.vasp import Vasprun, Incar, Kpoints, Potcar, Poscar, Outcar, Oszicar
    +from pymatgen.core.structure import Structure
    +from pymatgen.entries.computed_entries import ComputedEntry
    +from pymatgen.ext.matproj import MPRester
     from pymatgen.io.cif import CifWriter
    +from pymatgen.io.vasp import Incar, Kpoints, Oszicar, Outcar, Poscar, Potcar, Vasprun
     from pymatgen.symmetry.analyzer import SpacegroupAnalyzer
    -from pymatgen.analysis.bond_valence import BVAnalyzer
    -from monty.io import zopen
    -from pymatgen.ext.matproj import MPRester
    -from pymatgen.entries.computed_entries import ComputedEntry
    -from pymatgen.analysis.structure_analyzer import oxide_type
    -from monty.json import MontyEncoder
    +
     
     __author__ = "Shyue Ping Ong"
     __copyright__ = "Copyright 2012, The Materials Project"
    @@ -243,13 +241,16 @@ 

    Source code for pymatgen.db.creator

                     self.calculate_stability(d)
                 tid = self._insert_doc(d)
                 return tid
    -        except Exception as ex:
    +        except Exception:
                 import traceback
     
                 logger.error(traceback.format_exc())
                 return False
    [docs] def calculate_stability(self, d): + """ + Calculate the stability (e_above_hull and decomposes_to) for a entry dict. + """ m = MPRester(self.mapi_key) functional = d["pseudo_potential"]["functional"] syms = [f"{functional} {l}" for l in d["pseudo_potential"]["labels"]] @@ -334,19 +335,19 @@

    Source code for pymatgen.db.creator

                         if ("task_id" not in d) or (not d["task_id"]):
                             result = db.counter.find_one_and_update(filter={"_id": "taskid"}, update={"$inc": {"c": 1}})
                             d["task_id"] = result["c"]
    -                    logger.info("Inserting {} with taskid = {}".format(d["dir_name"], d["task_id"]))
    +                    logger.info(f"Inserting {d['dir_name']} with taskid = {d['task_id']}")
                     elif self.update_duplicates:
                         d["task_id"] = result["task_id"]
    -                    logger.info("Updating {} with taskid = {}".format(d["dir_name"], d["task_id"]))
    +                    logger.info(f"Updating {d['dir_name']} with taskid = {d['task_id']}")
     
                     coll.update_one({"dir_name": d["dir_name"]}, {"$set": d}, upsert=True)
                     return d["task_id"]
    -            else:
    -                logger.info("Skipping duplicate {}".format(d["dir_name"]))
    +            logger.info(f"Skipping duplicate {d['dir_name']}")
             else:
                 d["task_id"] = 0
    -            logger.info("Simulated insert into database for {} with task_id {}".format(d["dir_name"], d["task_id"]))
    +            logger.info(f"Simulated insert into database for {d['dir_name']} with task_id {d['task_id']}")
                 return d
    +        return None
     
     
    [docs] def post_process(self, dir_name, d): """ @@ -378,7 +379,7 @@

    Source code for pymatgen.db.creator

                         m = re.match(r"(\d+)-ICSD", transformations["history"][0]["source"])
                         if m:
                             d["icsd_id"] = int(m.group(1))
    -                except Exception as ex:
    +                except Exception:
                         logger.warning("Cannot parse ICSD from transformations " "file.")
                         pass
             else:
    @@ -419,7 +420,7 @@ 

    Source code for pymatgen.db.creator

                     taskname = "relax2" if re.search("relax2", filename) else "relax1"
                     d["calculations"][i]["output"]["outcar"] = outcar.as_dict()
                     run_stats[taskname] = outcar.run_stats
    -        except:
    +        except Exception:
                 logger.error(f"Bad OUTCAR for {fullpath}.")
     
             try:
    @@ -432,7 +433,7 @@ 

    Source code for pymatgen.db.creator

                 ]:
                     overall_run_stats[key] = sum(v[key] for v in run_stats.values())
                 run_stats["overall"] = overall_run_stats
    -        except:
    +        except Exception:
                 logger.error(f"Bad run stats for {fullpath}.")
     
             d["run_stats"] = run_stats
    @@ -446,7 +447,7 @@ 

    Source code for pymatgen.db.creator

     
             logger.info("Post-processed " + fullpath)
    -
    [docs] def process_killed_run(self, dir_name): +
    [docs] def process_killed_run(self, dir_name): # pylint: disable=R0201 """ Process a killed vasp run. """ @@ -482,7 +483,7 @@

    Source code for pymatgen.db.creator

                     try:
                         kpoints = Kpoints.from_file(filename)
                         d["kpoints"] = kpoints.as_dict()
    -                except:
    +                except Exception:
                         logger.error(f"Unable to parse KPOINTS for killed run {dir_name}.")
                 elif fnmatch(f, "POSCAR*"):
                     try:
    @@ -502,7 +503,7 @@ 

    Source code for pymatgen.db.creator

                             }
                         )
                         d["poscar"] = s.as_dict()
    -                except:
    +                except Exception:
                         logger.error(f"Unable to parse POSCAR for killed run {dir_name}.")
                 elif fnmatch(f, "POTCAR*"):
                     try:
    @@ -512,19 +513,19 @@ 

    Source code for pymatgen.db.creator

                             "pot_type": "paw",
                             "labels": potcar.symbols,
                         }
    -                except:
    +                except Exception:
                         logger.error(f"Unable to parse POTCAR for killed run in {dir_name}.")
                 elif fnmatch(f, "OSZICAR"):
                     try:
                         d["oszicar"]["root"] = Oszicar(os.path.join(dir_name, f)).as_dict()
    -                except:
    +                except Exception:
                         logger.error(f"Unable to parse OSZICAR for killed run in {dir_name}.")
                 elif re.match(r"relax\d", f):
                     if os.path.exists(os.path.join(dir_name, f, "OSZICAR")):
                         try:
                             d["oszicar"][f] = Oszicar(os.path.join(dir_name, f, "OSZICAR")).as_dict()
    -                    except:
    -                        logger.error("Unable to parse OSZICAR for killed " "run in {}.".format(dir_name))
    +                    except Exception:
    +                        logger.error(f"Unable to parse OSZICAR for killed run in {dir_name}.")
             return d
    [docs] def process_vasprun(self, dir_name, taskname, filename): @@ -532,10 +533,9 @@

    Source code for pymatgen.db.creator

             Process a vasprun.xml file.
             """
             vasprun_file = os.path.join(dir_name, filename)
    -        if self.parse_projected_eigen and (self.parse_projected_eigen != "final" or taskname == self.runs[-1]):
    -            parse_projected_eigen = True
    -        else:
    -            parse_projected_eigen = False
    +        parse_projected_eigen = self.parse_projected_eigen and (
    +            self.parse_projected_eigen != "final" or taskname == self.runs[-1]
    +        )
             r = Vasprun(vasprun_file, parse_projected_eigen=parse_projected_eigen)
             d = r.as_dict()
             d["dir_name"] = os.path.abspath(dir_name)
    @@ -547,7 +547,7 @@ 

    Source code for pymatgen.db.creator

                     d["dos"] = r.complete_dos.as_dict()
                 except Exception:
                     logger.warning(f"No valid dos data exist in {dir_name}.\n Skipping dos")
    -        if taskname == "relax1" or taskname == "relax2":
    +        if taskname in ("relax1", "relax2"):
                 d["task"] = {"type": "aflow", "name": taskname}
             else:
                 d["task"] = {"type": taskname, "name": taskname}
    @@ -564,7 +564,7 @@ 

    Source code for pymatgen.db.creator

                 # Defensively copy the additional fields first.  This is a MUST.
                 # Otherwise, parallel updates will see the same object and inserts
                 # will be overridden!!
    -            d = {k: v for k, v in self.additional_fields.items()}
    +            d = dict(self.additional_fields.items())
                 d["dir_name"] = fullpath
                 d["schema_version"] = VaspToDbTaskDrone.__version__
                 d["calculations"] = [
    @@ -635,7 +635,7 @@ 

    Source code for pymatgen.db.creator

                 d["oxide_type"] = d2["oxide_type"]
                 d["last_updated"] = datetime.datetime.today()
                 return d
    -        except Exception as ex:
    +        except Exception:
                 import traceback
     
                 print(traceback.format_exc())
    @@ -658,13 +658,16 @@ 

    Source code for pymatgen.db.creator

             if set(self.runs).intersection(subdirs):
                 return [parent]
             if (
    -            not any([parent.endswith(os.sep + r) for r in self.runs])
    +            not any(parent.endswith(os.sep + r) for r in self.runs)
                 and len(glob.glob(os.path.join(parent, "vasprun.xml*"))) > 0
             ):
                 return [parent]
             return []
    -
    [docs] def convert(self, d): +
    [docs] def convert(self, d): # pylint: disable=R0201 + """ + Just return the dict. + """ return d
    def __str__(self): @@ -672,9 +675,15 @@

    Source code for pymatgen.db.creator

     
     
    [docs] @classmethod def from_dict(cls, d): + """ + From dict + """ return cls(**d["init_args"])
    [docs] def as_dict(self): + """ + Dict representation. + """ init_args = { "host": self.host, "port": self.port, @@ -696,7 +705,9 @@

    Source code for pymatgen.db.creator

     
     
     
    [docs]def get_basic_analysis_and_error_checks(d, max_force_threshold=0.5, volume_change_threshold=0.2): - + """ + Generate basic analysis and error checks data for a run. + """ initial_vol = d["input"]["crystal"]["lattice"]["volume"] final_vol = d["output"]["crystal"]["lattice"]["volume"] delta_vol = final_vol - initial_vol @@ -811,7 +822,7 @@

    Source code for pymatgen.db.creator

         fullpath = os.path.abspath(dir_name)
         try:
             hostname = socket.gethostbyaddr(socket.gethostname())[0]
    -    except:
    +    except Exception:
             hostname = socket.gethostname()
         return f"{hostname}:{fullpath}"
    diff --git a/docs/_modules/pymatgen/db/query_engine.html b/docs/_modules/pymatgen/db/query_engine.html index 2cc0a19..9488c16 100644 --- a/docs/_modules/pymatgen/db/query_engine.html +++ b/docs/_modules/pymatgen/db/query_engine.html @@ -5,7 +5,7 @@ - pymatgen.db.query_engine — pymatgen-db 2022.3.17 documentation + pymatgen.db.query_engine — pymatgen-db 2022.5.2 documentation @@ -37,7 +37,7 @@

    Navigation

  • modules |
  • - + @@ -63,18 +63,17 @@

    Source code for pymatgen.db.query_engine

     __status__ = "Production"
     __date__ = "Mar 2 2013"
     
    -import json
     import itertools
    +import json
     import logging
     import os
    -import gridfs
     import zlib
     from collections import OrderedDict
     from collections.abc import Iterable
     
    +import gridfs
     import pymongo
    -from pymongo import MongoClient
    -from pymatgen.core import Structure, Composition
    +from pymatgen.core import Composition, Structure
     from pymatgen.electronic_structure.core import Orbital, Spin
     from pymatgen.electronic_structure.dos import CompleteDos, Dos
     from pymatgen.entries.computed_entries import ComputedEntry, ComputedStructureEntry
    @@ -188,9 +187,9 @@ 

    Source code for pymatgen.db.query_engine

             if connection is None:
                 # can't pass replicaset=None to MongoClient (fails validation)
                 if self.replicaset:
    -                self.connection = MongoClient(self.host, self.port, replicaset=self.replicaset)
    +                self.connection = pymongo.MongoClient(self.host, self.port, replicaset=self.replicaset)
                 else:
    -                self.connection = MongoClient(self.host, self.port)
    +                self.connection = pymongo.MongoClient(self.host, self.port)
             else:
                 self.connection = connection
             self.db = self.connection[database]
    @@ -204,6 +203,9 @@ 

    Source code for pymatgen.db.query_engine

     
         @property
         def collection_name(self):
    +        """
    +        Returns collection name.
    +        """
             return self._collection_name
     
         @collection_name.setter
    @@ -215,21 +217,6 @@ 

    Source code for pymatgen.db.query_engine

             self._collection_name = value
             self.collection = self.db[value]
     
    -
    [docs] def set_collection(self, collection): - """ - To Be Deprecated: this should be replaced with the @property collection_name - - Switch to another collection. Note that you may have to set the - aliases and default properties via set_aliases_and_defaults if the - schema of the new collection differs from the current collection. - - Args: - collection: - Name of collection. - """ - # Use the @property setter collection_name setter above - self.collection_name = collection
    -
    [docs] def set_aliases_and_defaults(self, aliases_config=None, default_properties=None): """ Set the alias config and defaults to use. Typically used when @@ -345,10 +332,10 @@

    Source code for pymatgen.db.query_engine

             Returns:
                 List of pymatgen.entries.ComputedEntries satisfying criteria.
             """
    -        all_entries = list()
    +        all_entries = []
             optional_data = [] if not optional_data else list(optional_data)
             optional_data.append("oxide_type")
    -        fields = [k for k in optional_data]
    +        fields = list(optional_data)
             fields.extend(
                 [
                     "task_id",
    @@ -416,8 +403,8 @@ 

    Source code for pymatgen.db.query_engine

             when there are no criteria.
             """
             if criteria is None:
    -            return dict()
    -        parsed_crit = dict()
    +            return {}
    +        parsed_crit = {}
             for k, v in self.default_criteria.items():
                 if k not in criteria:
                     parsed_crit[self.aliases.get(k, k)] = v
    @@ -547,7 +534,7 @@ 

    Source code for pymatgen.db.query_engine

     
             if len(results) > 1:
                 raise QueryError(f"More than one result found for task_id {task_id}!")
    -        elif len(results) == 0:
    +        if len(results) == 0:
                 raise QueryError(f"No structure found for task_id {task_id}!")
             c = results[0]
             return Structure.from_dict(c[field])
    @@ -608,7 +595,7 @@

    Source code for pymatgen.db.query_engine

                     s = dosfile.read()
                     try:
                         d = json.loads(s)
    -                except:
    +                except Exception:
                         s = zlib.decompress(s)
                         d = json.loads(s.decode("utf-8"))
                     tdos = Dos.from_dict(d)
    @@ -675,8 +662,12 @@ 

    Source code for pymatgen.db.query_engine

                 if callable(ret_val):
                     return self._wrapper(ret_val)
                 return ret_val
    +        raise AttributeError
     
     
    [docs] def clone(self): + """ + Provide a clone of the QueryResults. + """ return QueryResults(self._prop_dict, self._results.clone())
    [docs] def from_cursor(self, cursor): @@ -704,7 +695,7 @@

    Source code for pymatgen.db.query_engine

             if not self._prop_dict:
                 result = r
             else:
    -            result = dict()
    +            result = {}
                 # Map aliased keys back to original key
                 for k, v in self._prop_dict.items():
                     try:
    @@ -719,11 +710,10 @@ 

    Source code for pymatgen.db.query_engine

                 return data
             if isinstance(data, list):
                 return [QueryResults._mapped_result_path(path, d) for d in data]
    -        else:
    -            try:
    -                return QueryResults._mapped_result_path(path[1:], data[path[0]])
    -            except (IndexError, KeyError, ValueError):
    -                return None
    +        try:
    +            return QueryResults._mapped_result_path(path[1:], data[path[0]])
    +        except (IndexError, KeyError, ValueError):
    +            return None
     
         def _result_generator(self):
             for r in self._results:
    @@ -734,6 +724,9 @@ 

    Source code for pymatgen.db.query_engine

         """Set of QueryResults on a list instead of a MongoDB cursor."""
     
     
    [docs] def clone(self): + """ + Return a clone of the QueryListResults. + """ return QueryResults(self._prop_dict, self._results[:])
    def __len__(self): @@ -742,8 +735,7 @@

    Source code for pymatgen.db.query_engine

             """
             if hasattr(self._results, "__len__"):
                 return len(self._results)
    -        else:
    -            return QueryResults.__len__(self)
    + return QueryResults.__len__(self)
    [docs]class QueryError(Exception): diff --git a/docs/_modules/pymatgen/db/util.html b/docs/_modules/pymatgen/db/util.html index c5ad6d8..644410e 100644 --- a/docs/_modules/pymatgen/db/util.html +++ b/docs/_modules/pymatgen/db/util.html @@ -5,7 +5,7 @@ - pymatgen.db.util — pymatgen-db 2022.3.17 documentation + pymatgen.db.util — pymatgen-db 2022.5.2 documentation @@ -37,7 +37,7 @@

    Navigation

  • modules |
  • - + @@ -52,41 +52,32 @@

    Source code for pymatgen.db.util

     """
     Utility functions used across scripts.
     """
    -__author__ = "Shyue Ping Ong, Dan Gunter"
    -__copyright__ = "Copyright 2012-2014, The Materials Project"
    -__version__ = "1.1"
    -__maintainer__ = "Dan Gunter"
    -__email__ = "dkgunter@lbl.gov"
    -__date__ = "2012-12-01"
     
    -## Imports
    -
    -import bson
     import datetime
     import json
     import logging
    -from pymongo.mongo_client import MongoClient
     
    -from pymatgen.db.dbconfig import DBConfig
    +import bson
    +from pymongo.mongo_client import MongoClient
     
    -# Backwards compatibility from refactor to `dbconfig` module
    -# Copy of functions that were moved
    -from pymatgen.db.dbconfig import normalize_auth
    +from pymatgen.db.config import DBConfig
     
    -# Copy of global constants that were moved
     DEFAULT_PORT = DBConfig.DEFAULT_PORT
     DEFAULT_CONFIG_FILE = DBConfig.DEFAULT_FILE
     DEFAULT_SETTINGS = DBConfig.DEFAULT_SETTINGS
     
    -## Logging
    -
     _log = logging.getLogger("mg.util")
     
    -## Classes
    -
     
     
    [docs]class MongoJSONEncoder(json.JSONEncoder): + """ + JSON encoder to support ObjectIDs and datetime used in Mongo. + """ +
    [docs] def default(self, o): + """ + Override default to support ObjectID and datetime. + """ if isinstance(o, bson.objectid.ObjectId): return str(o) if isinstance(o, datetime.datetime): @@ -94,15 +85,18 @@

    Source code for pymatgen.db.util

             return json.JSONEncoder.default(self, o)
    -## Functions - -
    [docs]def get_settings(config_file): + """ + Get settings from file. + """ cfg = DBConfig(config_file) return cfg.settings
    [docs]def get_database(config_file=None, settings=None, admin=False, **kwargs): + """ + Get a database object from a config file. + """ d = get_settings(config_file) if settings is None else settings conn = MongoClient(host=d["host"], port=d["port"], **kwargs) db = conn[d["database"]] @@ -111,11 +105,17 @@

    Source code for pymatgen.db.util

             passwd = d["admin_password"] if admin else d["readonly_password"]
             db.authenticate(user, passwd)
         except (KeyError, TypeError, ValueError):
    -        _log.warn("No {admin,readonly}_user/password found in config. file, " "accessing DB without authentication")
    +        _log.warning("No {admin,readonly}_user/password found in config. file, accessing DB without authentication")
         return db
    [docs]def get_collection(config_file, admin=False, settings=None): + """ + Get a collection from a config file. + :param config_file Path to filename + :param admin Whether to use admin credentials. Default to False. + :param settings Whether to override settings or obtain from config file (None). + """ if settings is None: settings = get_settings(config_file) db = get_database(admin=admin, settings=settings) @@ -125,43 +125,17 @@

    Source code for pymatgen.db.util

     
    [docs]def collection_keys(coll, sep="."): """Get a list of all (including nested) keys in a collection. Examines the first document in the collection. - :param sep: Separator for nested keys :return: List of str """ def _keys(x, pre=""): for k in x: - yield (pre + k) + yield pre + k if isinstance(x[k], dict): yield from _keys(x[k], pre + k + sep) return list(_keys(coll.find_one()))
    - - -
    [docs]def csv_list(l): - """Format list to a string with comma-separated values.""" - if len(l) == 0: - return "" - return ", ".join(map(str, l))
    - - -
    [docs]def quotable(v): - if isinstance(v, int) or isinstance(v, float): - return str(v) - return f"'{v}'"
    - - -
    [docs]def csv_dict(d): - """Format dict to a string with comma-separated values.""" - if len(d) == 0: - return "{}" - return "{" + ", ".join([f"'{k}': {quotable(v)}" for k, v in d.items()]) + "}"
    - - -
    [docs]def kvp_dict(d): - """Format dict to key=value pairs.""" - return ", ".join([f"{k}={quotable(v)}" for k, v in d.items()])
    diff --git a/docs/_sources/pymatgen.db.rst.txt b/docs/_sources/pymatgen.db.rst.txt index 9e24afd..d692268 100644 --- a/docs/_sources/pymatgen.db.rst.txt +++ b/docs/_sources/pymatgen.db.rst.txt @@ -8,32 +8,22 @@ Subpackages :maxdepth: 6 pymatgen.db.alchemy - pymatgen.db.builders - pymatgen.db.vv Submodules ---------- -pymatgen.db.creator module --------------------------- - -.. automodule:: pymatgen.db.creator - :members: - :undoc-members: - :show-inheritance: - -pymatgen.db.dbconfig module ---------------------------- +pymatgen.db.config module +------------------------- -.. automodule:: pymatgen.db.dbconfig +.. automodule:: pymatgen.db.config :members: :undoc-members: :show-inheritance: -pymatgen.db.dbgroup module +pymatgen.db.creator module -------------------------- -.. automodule:: pymatgen.db.dbgroup +.. automodule:: pymatgen.db.creator :members: :undoc-members: :show-inheritance: diff --git a/docs/_static/doctools.js b/docs/_static/doctools.js index e509e48..e1bfd70 100644 --- a/docs/_static/doctools.js +++ b/docs/_static/doctools.js @@ -154,9 +154,7 @@ var Documentation = { this.fixFirefoxAnchorBug(); this.highlightSearchWords(); this.initIndexTable(); - if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { - this.initOnKeyListeners(); - } + this.initOnKeyListeners(); }, /** @@ -269,6 +267,13 @@ var Documentation = { window.history.replaceState({}, '', url); }, + /** + * helper function to focus on search bar + */ + focusSearchBar : function() { + $('input[name=q]').first().focus(); + }, + /** * make the url absolute */ @@ -291,27 +296,54 @@ var Documentation = { }, initOnKeyListeners: function() { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) + return; + $(document).keydown(function(event) { var activeElementType = document.activeElement.tagName; // don't navigate when in search box, textarea, dropdown or button if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' - && activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey - && !event.shiftKey) { - switch (event.keyCode) { - case 37: // left - var prevHref = $('link[rel="prev"]').prop('href'); - if (prevHref) { - window.location.href = prevHref; - return false; - } - break; - case 39: // right - var nextHref = $('link[rel="next"]').prop('href'); - if (nextHref) { - window.location.href = nextHref; - return false; - } - break; + && activeElementType !== 'BUTTON') { + if (event.altKey || event.ctrlKey || event.metaKey) + return; + + if (!event.shiftKey) { + switch (event.key) { + case 'ArrowLeft': + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) + break; + var prevHref = $('link[rel="prev"]').prop('href'); + if (prevHref) { + window.location.href = prevHref; + return false; + } + break; + case 'ArrowRight': + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) + break; + var nextHref = $('link[rel="next"]').prop('href'); + if (nextHref) { + window.location.href = nextHref; + return false; + } + break; + case 'Escape': + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) + break; + Documentation.hideSearchWords(); + return false; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case '/': + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) + break; + Documentation.focusSearchBar(); + return false; } } }); diff --git a/docs/_static/documentation_options.js b/docs/_static/documentation_options.js index f6ac950..8a3f63b 100644 --- a/docs/_static/documentation_options.js +++ b/docs/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '2022.3.17', + VERSION: '2022.5.2', LANGUAGE: 'None', COLLAPSE_INDEX: false, BUILDER: 'html', @@ -8,5 +8,7 @@ var DOCUMENTATION_OPTIONS = { LINK_SUFFIX: '.html', HAS_SOURCE: true, SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: false + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, }; \ No newline at end of file diff --git a/docs/_static/searchtools.js b/docs/_static/searchtools.js index 2d77859..0a44e85 100644 --- a/docs/_static/searchtools.js +++ b/docs/_static/searchtools.js @@ -172,10 +172,6 @@ var Search = { } // stem the word var word = stemmer.stemWord(tmp[i].toLowerCase()); - // prevent stemmer from cutting word smaller than two chars - if(word.length < 3 && tmp[i].length >= 3) { - word = tmp[i]; - } var toAppend; // select the correct list if (word[0] == '-') { @@ -276,7 +272,7 @@ var Search = { setTimeout(function() { displayNextItem(); }, 5); - } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) { + } else if (DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY) { $.ajax({url: requestUrl, dataType: "text", complete: function(jqxhr, textstatus) { @@ -293,7 +289,7 @@ var Search = { }, 5); }}); } else { - // no source available, just display title + // just display title Search.output.append(listItem); setTimeout(function() { displayNextItem(); diff --git a/docs/_themes/README.html b/docs/_themes/README.html index 52050ec..7b2e445 100644 --- a/docs/_themes/README.html +++ b/docs/_themes/README.html @@ -6,7 +6,7 @@ - krTheme Sphinx Style — pymatgen-db 2022.3.17 documentation + krTheme Sphinx Style — pymatgen-db 2022.5.2 documentation @@ -38,7 +38,7 @@

    Navigation

  • modules |
  • - +
    diff --git a/docs/builders.html b/docs/builders.html index d66e418..b3dca46 100644 --- a/docs/builders.html +++ b/docs/builders.html @@ -6,7 +6,7 @@ - Database “Builders” — pymatgen-db 2022.3.17 documentation + Database “Builders” — pymatgen-db 2022.5.2 documentation @@ -46,7 +46,7 @@

    Navigation

  • previous |
  • - +
    @@ -355,8 +355,8 @@

    Incremental buildingpymatgen.db.builders.incr.TrackedQueryEngine, which is -documented in module pymatgen.db.builders.incr. This tracking can be +position, of class pymatgen.db.builders.incr.TrackedQueryEngine, which is +documented in module pymatgen.db.builders.incr. This tracking can be controlled, if necessary, with the instance variable tracking on the TrackedQueryEngine class.

    The Database “CopyBuilder” is an example of a trivial builder that can work with diff --git a/docs/change_log.html b/docs/change_log.html index 61fad4c..3c0e7bc 100644 --- a/docs/change_log.html +++ b/docs/change_log.html @@ -6,7 +6,7 @@ - v0.7.0 — pymatgen-db 2022.3.17 documentation + v0.7.0 — pymatgen-db 2022.5.2 documentation @@ -38,7 +38,7 @@

    Navigation

  • modules |
  • - +
    diff --git a/docs/dbconfig.html b/docs/dbconfig.html index cd2e874..aa1a7ea 100644 --- a/docs/dbconfig.html +++ b/docs/dbconfig.html @@ -6,7 +6,7 @@ - Database configuration — pymatgen-db 2022.3.17 documentation + Database configuration — pymatgen-db 2022.5.2 documentation @@ -46,7 +46,7 @@

    Navigation

  • previous |
  • - +
    diff --git a/docs/doctrees/_themes/README.doctree b/docs/doctrees/_themes/README.doctree index 5863f60cb9153640c606e7f8bfa2a911df5cb921..d617a8e72867cf1be102073037ad9c412023852e 100644 GIT binary patch delta 43 ycmX@7drX(5fpzNcjVvm{5)v6DB?ZM+`uYW_1;u&=l_eSZd3yOp>6<--+n51TiVs8p delta 51 zcmX@6drp_7fpzNPjVvm{3JMt|B?ZM+`ugSN<$48`B^mj7dih1^`YEYp`UR;4#hV?3 G+n5310TNaK diff --git a/docs/doctrees/builders.doctree b/docs/doctrees/builders.doctree index cf1ba5bcb59a750d4bbde784fdca6b8e019af8f1..9ee24180e69027b0ebf0c55fc605187fafb1b1aa 100644 GIT binary patch delta 59 zcmeydjP1iRwuUK;q8!1K8Ngt&qrcKtd&Ucm5)v6DB?ZM+`uYW_1;u&=l_eSZd3yOp L>D%?27(E36Oji@2 delta 67 zcmeycjP1uVwuUK;q8!na8Ngt&qrcKtd&Ucm3JMt|B?ZM+`ugSN<$48`B^mj7dih1^ T`YEYp`UR;4#oN`J7(E36{|fpx0!MwV7-1%-@~l7eC@ef{$Ca=n7el8pR3z5Jqd{gl)){eskj;>`=C Hr?LP5+VT>v diff --git a/docs/doctrees/environment.pickle b/docs/doctrees/environment.pickle index 3bc609b0e886fc9936045767576e604875cc4b4c..5283f4265941016ace150e60068296fe8c9339ac 100644 GIT binary patch literal 154884 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

    -On*Kt&&Qcvioho}Hc6 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 literal 346150 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 z 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%0A1als&rcs>HC8pRmpZ%5VXsCyypys6W&3?% zIJ}ICxD>G=>tsyl;5lYaj|UpmEpFuGW)!ibso8MLS*ZX{gHCQ2Wabi#z1AI3$*%JD-i}Q=efB51 z#s$~>>)@=M>Ud&+VSZ8{>^AIeT%l zO0F%dqgDDj+mycZP6>|*TS?`d$_juj?gRof8H9`CI(KWQs`57`18;S~K8Rp>+sg3H z8Ms%kG-IRJL61fQEJ>wzkh-Xyb842$v}M=?`IZfD8}(BPFJ*qBQ6bkkPnB89g*7uI zW@jBXA+#QTKpANZ0#pmHrxSQ7bwk$;FbrK6*C z$RvG*|EYy)|L_$a`vs#T4*$rA@S$S~Z8) zj3|)8j&1?7*`yQJY>qmEgpDMFFeR^O0+a72$LaA}aB0s>43NtjT>P2X;$+PeGRNq) z%fX_Yo2S#v#Wf#L%fJc=rhntknGF~L43>Yxw~KD;HBi%x61o(UzC1gKlZ4xKQAvlz!E~xU%O~#2SIW7}gY7nhcD~XNNrArB{ zzi=IdrbBA9xwo&?kyORMOQH(tq*^fGrK^PaR5*%d>AU|)TCFyS3As<3Dlmn#eK79?%RwvSDUN)^@tvaW(a;a(E4#sK_ zi(KxJM{P+OV4*H8YkA{LK z3nP|VK>TUwXnIdAnshM$sxs%@3@ZFQ*w~&L@(aPIBdIf7rl+-8NiDGLjdw;-p=)*M z{6@y4xDLe1lJpS;?WyScAxMfrASO%30)<$a-z2p_{J+hf>x5_0nTI%ZD6=<7HrkvB zWIWxY!^jf1_Z8?Z+xti16Ixk0#DA&*^cj~0g@^TUU$*ux9CU=Qav$h{{K1-|bLXsk z`$?Y{%JNI3Vt~)3a5E7fJQwkN79ffg4`HX!+RScD!$l(3e#yrW8roalFE7WrN|qpc zKm{{XWTBc}DZCT?S^!PH5Wc~?vRE3JsG!nn0HZI02`lKm2K-4O+)ixBrywc35MTsuG;N&r)Wj44*aC4!i)Sq3*vPpyJUcQanPa{O z>FETt{Xc3v@cW|Yzxxd5`3!blVELK?kHhY>UF#|5ngTeARb z`&ZwJ4e3}ZW+yBNgMvn+p09hzh`?_R=lclALt)&XovUhxmUOC2!o-P}ivo&88Nk%J zoMwe6W|eYDUeoIu;nF@TtT-&BiS@0K8I+-yrXBK@6kjA!rnfPTW+&VuPO_Vt^l3tg z{p6>NTKxqVO&)poLhsv%2z$1vhC?j(z7L2mhfYQp+UT8Pp<=xs^!kANbPdkYysYA{ zHu>sSF}=}ylYMFeb!4{%@fEdIxcx>?MDNst-UO(c0QY@kcECryp8zmiSN}?KWz80r zR9c7sbG_f3gBUkriehoV-|qdh0Q^k7t3H%fl^c0;znr{#Af|wGNi~EjZ|3>;0R}7>nS<-e2$i+s&O+2mQj`QU1HV z{}iwd1FsP9j}=R7e3cW(>Gyjo{>W=Vbol50zV|->`^P0U!p)I4{P%nR7m7ZrB2$UH z;2-rBG5krZ6fLV(+W+K2|5FU({IH6l@c8%7EcBn{_mAnjn+v_{^9%i7WZ5TF7OjI` z+FIzJXXz=GN(6by#fAPAmi#G}_=x_Fefn~mdYiav;B)_n3;kbZ<+F82O#@WFsz&Y2 zA`1D>u;w>TRMRWnU+Ay1(iiKM>=5E`2L%6gt&=tj{i_DRfY?SL1vnl<3Y8x_ zI6=%M5=-Cx^%#lk45B&}2GqA2#A-_aBURi$~bZ zPZx2opX*rMYs`W@866J@{{2cQ<8sMn*URZStqC-?(}8 z^;hokwe!2T;Aa2}>Ba7a?gcb{nhB$j$pmlHK{>^PAztO`t8eAtXS?{Hz!97P&uQGJ zhRbZJlILe|%^6Nly>|N^8o2rj4yRXNW;@?kr5%W4y4b?5fwL#Bu@KKPJ9YQ=jcd2A zzCy6UpdJ1kymEs*q`Q;@K)+=4;sfNh;xx!KKEtP1qYF0`$?#MS45N5+^}N5ljU!0t z>8UrazViBw!5wBOn=&+ZXAjObooT!C{pCZ}K05RL&gyXKCs&t#^_}O=WMAK&o$Ykb zo{7n9b$||?Q}15JWHB2I4n4A=^Y&xiOc&5?Z8~PB?BD$%I)M9$;F^3_+@_OpQ*hl& z=}9p9mjN+O#>k&s<*XO3vYRI+V>~?T z9K7rRPK$k})Mxdg>g7lDjW!>}(xqDGFjSQChQ+SbKix*Jam5W!NbPWl)SNY>~frgX*797&?kk1&e-OJw3R(Y6ipWolv zJHIiRw9`3FX!svsv8+(uCs^$w{Q0%vw5x&3%+54X)<4Y96hT?6Z`KSOV6Zm$sL{D) zI4eOqrf$mb2|jDM?uP_`GrY-6Q6j^qsu7(XC1F+xwrev&;1)@>Nmos*-*O-v4(_|` zQlM>`dx0Q^TosF>F$hKTnpS|W&TV|bY>49^i*fZQ#BMd@?-^Iyd9czeH!X6A0H@eG zD`PjtNTW0Vp&cHdE#Q*E3byFo7DaiN|LKHQ-<@pjI#W8jGg<3mEgb51I~!+cEZf*i z_6AM$v>~OYPryox^W3FRUuR=4nLt?2O>=KB37hC#q9sT<@VL-6+G7eG274(z!Q$b@ z(PHM%L2d#;!tiEzYl`pl#PKrNh%gw?ncT(II=w%P@68*@JN6x-RSCSHmikKW5J_6R zw7mGZ@%9PJ%#!bX%Ma;_(Eu~vwBj0bGIl42b>rFH#A$(Rd*dgGUA-U9ee$VMTY>L_ z8AWKqh<$*ZtuR9J!(cKUVDfBwfZ!FBhk-`#OgF+u%VMbJOO>PJPC$Izm~c0hjXkv@ ze>K{*w#^C`26yW@M6V4sSu+3 zN>9gBho1cpnPd7$CKe~Gcr+RJ2#9D!>@qXt4SAVpW5m{DAtsCbzUaABVycZq2o2!o zts5}<-@S30g6Et`nBE)V!!q)rOx(jh z6+vh4?Sda6b`pBaENyS$?nDn6S@Z_O9R>s0J7Ma8VynN;VCo}-C|4ooi&rYTVv_O= zl^rQVz`GaS2?Cj9`R6776N&qfqXiDHFd|}`#jY0-BD)A&%MnGqj!VF#_cdHrajKyB z;+jx2kb__tnUS5e^b0Eiqn~8k!ZRqWY{L4kLL{Y7mD!Y^P3a>nf2vPB5W={(tbW=~ z9nl*Mj#7L!WeK}mc=j=lpLijl5%GjuFW~D+3`-g7M(!zhgrax2ZF*!EP4JZAlFo!FTA8^5?V ziBZqVA4;HA6lbYJeOa2!?)d7&B2d$~fna(MZqK{JM_UL;APa78!NGjGj(_Yr@7CSH zE4S_<(=mRze(Re3a`)QRSFYXxeLcl->TNKVd2dau@aDjLepeI&hWk47b)_BjPtKTk zuBto}FwK>yg!tcp4m}9JMrsPicM+7^pWLt!m!M6jf^I-znBb#M#!gw~3}68IlCOAf zApqqJcu^eivL$8eb6nw2j-WA*H}z83n-qe805 z)`Bb+f=8C2z}2U=&KEmdGYF1#=;nBT2Z)e5GX}l`8&+>;AKc1eB`T;@gpg^lKHX)z zfZ#b4BRezaQ4Q}|LA+Xzjr`DiiifW8x6_M6NN0|)$l1wq{>(BMY^cmY-~s`{f@-ueiVyJN zJKc;&!vt7iK%dA@{OGtfv1HvTM@NX`rap|5om@tI9L|7pj=m249D=p@k>VGf-Uimt69& z$|X8;JS^!*bo@c%wmP^0a(>8|&8-vMiECAg;j*+Y%lVZ*JeAYYAw}{@nl3`+pF)wT zv6|IljT25M*D(9Oxt_u8dxa)OX~(6QNn2?q|sF7Y+xHqkiDK@ho)@R6udsbf^TCi|O%&T6OGP z2?M9-T`3FNoZ-#f9!{sjCzQz&oA`1ViUKLQ+&Yh;Rxt$j%u#Yb&^B1~sJ;zaYjGk2 zkAybbcKmIynzd6x4|WQxHbgfR6A9itW16umq129}?|9{9>(q7j1N$$iMfG$(f^d33 zGx-MkPB9>f_R33`Y~bD5Dne;(lW$W6#vid_U22vSQ&OK?mU^G>cmXadj1q9on;<$G z{afFyM2>lf;n0R0Cb5^kBHqoP4tN(&JA)(GFuKLx@ek)A@gi0^4M0CcBDA}b0y-#) z%$D(rM{U`ki&asqu5w*a0!Z#3%m3b8XX-eLrpk3z4V9fG^V(T*c8(NppXgF08!^cj z#0Qzhh!k-k0-qU(a9Ff00Ti1AcnwRTvq;mnyPs6SM_kNA=JF4EZj(l>7Ivi_cnd1lJ{t!QH+ZfE`7~h5NMf55WNR#z>7Y&d-qvCZ-_!Jy z7&)TF739rtF9r=TVp=sUnSk<#&P0H8dg9f8Ww=QA7;m!8Z4=R z>EYg4T!S``mH`A0S1&H7$qb$4zgfEsCaSfii8p`Xwnfx&bA8bs1HrkQ6BkB`$G7Ec zygohHNWpIJr!_ofNHcTDPWjRgR|AN16E}45*wq=kR0`tnXK06i=H0 zP@hM2TaseDuwG6uAp%7UR;6iDvToESIW54B9Z3vG%}1g+tg6TFz8wJ4O?$r0^7|nk!oV}Dh^s< zvsSVZ1RUIVBaRAwv*BeTom8TQh?Q~2oniKxoi=;T6~>nNuem$4&#dleK^4d6^ikIa zd0R-NhL&?u4tNrr`^MWwJ6I-`;jnM6Z3$g*^Qt%(?gt%Gnd`3JRB?DA9{6dp_ zK1qO~HwnZ!6JHMaJ9-%Hsr2&5?5QNZz3wIp3dh6O9}xlAimw*wrr0{eH1P-H^Rk69 z;hH-FYo@5Y@ap`5nX$BnaH($dbnmU(_E=n;)HXT@vn{lCH%Q?{#cZhWQE8lJPua8? z16Dx4M^%aaAqDh@*=SP}fkvp7Q#c(;+k}{3x`BH=26N8qp~~|v!UVAUo#UzqKy1eHD@_REjf^)(%Po z@>qHz3wkZyM>x&;=bO8jY&D=y8?#@V_x!dui8l!zdZW9(eGlxfOVdt3;*0x-cN-Wu zJ$9o&|gzcT}JqM^yR-hcknY{2e&K^1bZtpy5e#&azj!sTq^-}M7 zlzx=@@l1w1_oME8O929>l8=OU)inyx{HL1GZCLHC}qq`=|5LppSd$KhygS zl>UO(^{(ycqYt@CkKfgsTA>hXimr?t-S5ji{xddYIVkzyy!@~C{uY{h*2{~7yF>i# z-hT~JKef>RbWyo@#tF}6$>%**cHZ>LaC`p(D}Ts(<>dV>`}nbZ3-StIUg&?t zJHw5+Li>Jqq5n-5W0We+sY8$K>)unZi%|>)j``+7|K$?1sU}{0YXR=^)>Brtp7wvq zzRJlv@rWFHBfBMr(svBi5QM+zdHYj)E~$|(1Q+O+*omLt{pc6`rKNX25r6x1{O#HB zTV)jqW3hhprCd4uba1>&@!W@Y___lej{n|=%;EUjWCzJJTKu}T53At8uA;^*4;Xy` zA^L~P&K!$Au&Xg%#h|M(d{}PD+c^3V`$Nd|u)VuK+TMyT$8a;ow^t^Zp5SF1{HcY< zJYER|{VxuIXTxhqkH(nTQ>O;|lRbpm(E<@X!|)fqIih129_647rW0_}S9^d2jc{ff z@GX$&|HTUi;*tlLQkD58<5oao;l07^U@a!fbMFq+lnWD6=<}w+l3M{b#OKMIr*x-c zCsX*R0JN3HY%rAG{)G}iUR3&(ul^$$S_VG(l2Xd1@1(n zwUzb`V|k`yRB|_M_)X(0xPw`iX2EsAsYoQoOvn|D6ySiNr;#S$Pn?8dE)x3%;=_ZP zmtKqB`Nd)~5(oM{TN+rxl)gn=VaPeQ1eRe9Q+qQK!w67JGb!aCs2Ib`%G?O$t}8P7 z#k3qGdGew`WVp_>iCb%4mrIB|!nD>&uc>l+m2<2&YGb7Z+wN%XsC$@3a%2wBLd^FX zAXKpcG&4tErAcHGDq%fmnzU*F)4I)th5!2>!J*-;7uH@EC5G6y1oJTve5Cv_#b z9pNUFX4xQ;ypfW*Oeno%kF!av#94e|$`LZr8uhh84IbONeY3H^Q{q+l{IQoFY#y@T zdB?l2q@pkrPKE%1Nim=f7E;&yiUgdHa%|H>W=^tsY++xowh?@)2X+S;-4pKUCS zSL#ei8YT#uz~B6N(**7!dL#g`PdFE&R&s-rZ#A2BGE%th1co)NMj}S%3wO1=WAOwL zoLQJoIZF(m+9x*ifno!^X*`&&k3EO1W%BYra5cN1D{PeP7>Y(7(vykR4FyMB%LL|f zkX3zmGhk2Qmk~?^5}ZU}0L!P4rTlSB))>;W9_%9<;Cxg8?if@Ys@(6PMj-bU=mSl` zWpw)x$-;4!v}pO^T1Ostqn@a*R(r0CannRvpR!o{IDEfqFr0F{8XaKy(y$)=e_sz`Nf1k}2S zq^l8{kITb#OBpYO%u+(&z45rbvzB`#7o2ZCHiJG|BRV_qCg0^LwsI7RQInku4X8xv*nm_xrs+ zWxHQ+P76iY%5WXakP@nekI7bcZ0mlojpLi=FMjJO8wVB;+}vE+yNr%P{3iN;ZF0cZ z?K%ze8wI%3;sb3w{35k55@Z0>leTm4DFU-eaMxcR6aT>$I}lokRtVTG|0Z(!Rl!T@ zLgZF^d{&p#Gd`e*fV|%g1{N+cyNfj0>=YM-Mcb(Rq-R zuL&&VN(yT+Pc$mD;fp3>bMoRE4x%MutnP3MEYTSwwQ9k9X=}E*u;)-=C07=HQwHG3 z5=WnYDrp0hY>lWD}up9o`I4Va4=vw3e1A&HIc z&$aY>V*J?itX2(em8)s%VdEq+vaP^O{FC7PHCDKDCcv!=IN_B&&3hC}v}9P4^)Hdq zHxS+E%k2Mbw%8-zxg`F0@3WA^U(O*)zH_+G^*&G0Uxg!)gU$Yn+8w@_gXD7;H;6wC zL`9bZX&mBo?;G44GCaOHoMM4(4n?8l{~V0Aab)09Z@t?pJa+7YIA%yJKX`w81@@Ni z@q5e8@I5IoVSmB)@{JGM_9E$l^YjSH3Exvqs)m~dA^1>zYX`6Uni8btq64%NNJAlwsFZM| z=?~v~gB~g_oaY>C!rl(Iswm`fCiVV?onB6>=1!*9fY;&Ng7`KZu<$}Lts!~cb%YRC zLL!?avdvNb9FoZo96nx#-zZZlG@U=v^m41heFgtOll)@ez@WQ=0-m9%OPo7jezo6OV<%?RC6H z1>H}PskT7n(}=+`U8NtQan#?-WgloIqp^jWE41*m{ECJ!y+{xD9x94B zMH%NG9ZeI&rX=;!>GaU2dD*CTgwVVAmgh>G^h`>ygSk>^{L|~P)lvp7y zkbJcAGa|w91`g#(F4^FP*&z4*|%Hcf)Q#vqAuwZM@LGg+AvUgnVTp`7dAqlQ6eQYs{*tzf~- zDqyQIIc-hh`%=H$&vKpTul?zt`?=oddM&6}zgPv!Wtl5u?cNK3{9+ZdqOyIf_dP%% zS6;D=y4v2r^f;Yi;!dG1I z>G!aFpZN9EJj@unbl^>)p0Lx|dh_6cxk`|Y#823tpg+R+phl?Pac^S80)^7f7$KCj zIl#JvGXaG#ZYzfH<%KSo#?r>K^W30rKLIJZ;qSXeg1VIuJmvRlYk_RsD?-e+@4gmt@#<@X+jm~OedEqOjb$)!3NkI6 zDwCTlKBk!0mG)q31o9D=Jygfr){Tj4{~O!;Q~y=Ne&27|p$S^^{Si3ccyR=t^y&$@ z#Lo}vBX@2;6{thYtykbRPL0aujvNIV<^r?=`ND2EH2Z>jB$WTWdn|x{EoxtyS zW`<#CP$MzObFD=|*~eW>5d(@LHb9z?GW|Ny+)o`QF|(hmxVFG-i2mLHr2!UmH2Yb@ zvqh5?5Ty1BO+snuTtfGYYnG7n=nV>0`D7|H0bYK!@j+6+q{$Z1TsVfZd-VesdI<|7 zSqAYvSwxZPY+?+QtiHnr>@QG?cQ2N;NS`9ftrD3b*3lnD6@IDI*ifnl)Zv7)CH>1| zL>>y3x->AVpaRlo0Nnp9nz3({h9G1IVN7%-$FYw8kE5o2UR{0%J^@}5zItmhBSdyY zq#X34;W|8Z){*Uphq-}Ejo?MDZ`uK8;S+i?c{~^$?AeEG%flSq9#6sTJG2J5pv^Ze zY!a99Z7Z?NJrr$hO|gp8u13z@$1Mf-FDNnGVz5*mZA}h%@MP!%mZJ_ux*3lIt5>6H zj~dzC=BvnP>F*T+ocy-92Hk=FKZ{Ge8F}(OyxSTQ>VzH6g%A!6yXdV}g>7~jW)}eK z$f|TLZqTjH#WNV0^b@cQ`VR5-D=CL}o;Hl!ZYzj5u&^tzah#zgBy7rCy7aTO1RPIq zDQ6Je;(}d318Q5o$iu4%dV^a_MsG zs;*$bu-i(%Dm?`g0M4=3oRru_nog2RiO4oEdj!pnYi!QWo>BeKLgXghIoQRuju}S6 zS_;uG2;%)^tLNh>Z3LWmGrGXD$@jCsaOxdd9c`1`v3sh-|M0rmp4|04&;qluTd*2f z57UbqwHiq?!T0rJ!#=kGs zyXP;W%|v``E(c&4fuei3i&P#@EW%U(nMAf)#BIXvgYn3kt||es$B{lWdVrEhLc58y z-BA!>iA#VkhQoF2WxltZ##-9NUEY48OS)i(|B#g_lr_sB1WBHSL{Xq-i#wB$?67&f z@OE+4ByTcW)y+>CZ~`M1>J;l6m><%g^1D3t69hX1^KG%E=tC2}bx^l7rmzNvK~Y#9 zow(BoPh}jez#oxEZ<1~>^$L$*6mhLXG;x&nbIrw&dYSx^&oi?P&KRSNiiR(Be6@`e zH_kOPcnuJ*k}e#EkGxrg2?C0?(wgu&z{4z?ML^~bMl1P@bk3fQgNj^GR+x3+fQoqP zj@3`JYTyQd@#Gi~oVKR$$Wr1V$qdXmn(Zh(7XC>SI{tCk+E?|^?NKViZFH?HYsv0j zOp~;QpW1Xmu!0o;cBTf)UbxaA?dCZXM*|2;S1z7o7pXn~)U+#DYiUwT1aKzNiGb{9 z%_tBWx-4Yu);=}{c*o&p8_|4N=f+hMNU`fAmepJpCPp*MT_&d^69?)kRyz;aFcDzB zmjKHH%y6P zN^_Uh1jQG#rlS2m}Snfmzf``9@?w`Guq>S}o9DpS%9w@Ozb!miVa13}D|9W4^O z@TMRfy8xLkAqHKkYDqRuwBZ+4WTQZXJW|80!rsDm_;b2-gE_O13yK_~^PFubiI)rz z37(s>{<4rYnf4{Tf1DOcBzVAaY$#&@5>4rc1;u0=?prl~uA*u*4T-RFkyZa(rL~{4-nKdZ)gl2&KX>lct1jU(Z!5 zbPV-#?qn_gINB}@G9CP$R)H1gQzTx*)g+e-{K4R(Tc0J2AYYBmz1_pvMG2CQYBR)E z$$)$43rC#}Q{}O#88K_m07WWxhdP-l^mOK9bHo zSj#k)Jcn_^`pxUsk~B2VU|yq*Qyos8U>*e5E~9sFo07c{&W=Z9zm>y>M=+-xtt=is zLRRgr?Goi{(K*8W_lGN@;rdFajjKPJ5^0S)gLMMYv|FmM#2%$%!$~$Mw zY_?Y}wk#o9PVN)0f%n0(e_~7JSiX1i<#S|YNxO0wXqu)>V_`&rcKEpyMBwJxflLIK zYQKO)n-9khurzQ{!v;YRipMO)<_YmxY8uXYcmkKW_`}f03FaS(?{F@g>@My@ghNZr zm=to$lBv=k*#u%`@<9XKpdVvOgH8}0tZifU;y>G~i!0t$est~dr^6UBq4sI%1Czp#w7DTOME zcwD%J!nP2z=8oih0+!A8cT8|@7Ahv+Ya&rOEP6EVp2Pn~i2Ct4Q(AF$SL^V};WZm? z(@fc}Ol_qJ_KmrwmP~!QShh%Fpug15)Mu|;pCjw9kX?+(E~Ks#(Nj8GJ7s3%T#`hG zoiwp>;w5x29(l^1xp4)QH08(tHif;uEwcM{o0ZGEdO_H&>Lp~G`d4<+k*#FEHv6V?R?Iti$FrOKD)*)Vk8HKxRV?-}y4CGgcJdZ}CIe%bt zJQ!CpHCi1zcDq55+G57nWDbd9Q&i_N8DteIR?iR1mkh#KjW58Lg;9J(`X7|E4#p>M5!YCd9)5roH&d?s%S?v)jMEE|E1p9X%hf$NyHGc?~(Y#6@Jjq+G*I( zbk}$GI%Sg;dITK&*QSdysj-;=s%IzuMO++7Ugxu<#Gkl6q z-ffXFYa8m#Nk&lLMFQb{VFrnYCE2l0<|iVCJ461bNU#fdD=#+&9*Ah7b2TPkN@+J{ zo4%4<8r4?@%DKaMc~}ZOFN9CN3hGsf{sfF$%;fP*E03S~eDVGmwrE%E7e?gk{V5HF z^(5vCRh<~kRhwu1PhiGN$zcqvO!2Q^vetyE{}P3uz??@9%+pbEr*s9|2oQNOvm@(%j*Lnb&? zwqBSD7N0{54xGYeE{nZbdaDU^sR)VQ5#6yaUbt{J zemeiiV%>Q6s`hxTf}LX8etYy>=j|^3dj?OM66Js{QY=bOiN+rCNl}9$Bq~4G`Tp(8 zZ(cdv#T%nb{QWKa{ny&us@HHu4mTOzEH6bIvDT#=R0sIyB2e3qIf#%6BB5!YNgYAA zZeJe%_{s_%I>m2$>-$%}f#GzqzvHCV*_xW;FkVI zbR=_cu-JF=CIJZQr;oC);^P~ID;B(3=z>MljLwwiV50>VtCsiWefdKsH?}0GIiDun zSnA1oGkYI|^bVaPs7t2RtBI^%GQ7lx`P2{T{Bn}wWl8ZmA~E9Otl@6w4AdOHPsDik zoRGv$buj~r*Lsj(A;F+`8F!@MEaU zHosvKIMTs@^qhk56Xwdwxyvh%e{peNIoG7ln{`H-o3XDWAYk<}_+ z<|TeyC!_43iK&IvtTUo@(Rs!We-!VX_M5cGzs3K&c}c%sYUdAqk~(nhDE0%HY~r93 z{hYLlRpr<4laXb#+8+NH?g;KXR%CRL*$x12mgN#U`23cAJ`vCN-B1SY5Ozc!4tB?U zM2%i8+7_$)UpI7sZ0yUWvNPps;{Z>$Zck=lJ)ovsE6BofXDEgR**%tHE%mnylB`$I zg=K*@Z=Ik&uZE#Mtv|I^D!o{W9cHs-hwB7mW!QnRQOu(ON0#BNqRd(^sf8)P3>piR zy*MFfCCs*ffeOErGh1{zUtW+35C`KQpR>B~Gr=t(790MF>n%)jk{{tW)N>X<^$9Ot3O*L+q<93iNG%$v; zJvpajN9;&K?@UPsyhXr!htLzq45SmLGhFblrGH2y2j?%`VtBj)#BUp({^5-2jbv_B zN?8vIv_T(4frbgiW_kE*<(3Xaw>cV5jSa7gl}%>{@mWQC2&IhO z2Cvs45c-&dJZS(?PzS6>{I{VP3cwzolip`T99jcNopvQqI!k4_E@)FBN#K;a4f_=j z18G{N`O%()I9)e1X**!34wPBj2XgHzj{J_YL3`$P?gQE~?51FbCu9*fFoW3)>8dD~ z^b3M@utlE1e^IK;T8mkLLZ)_J7cK(Xt%^LfvtvjG8eDz(uIXzy?Wp&$lct+u+?8RF6t7oRJrrQ_X@ zmw`~r@OSJ}1-1f8NP(IG7~OF>*W9D(pa|Vr!-1}NlY*ln8i?6uG#D6OyzCB8@Vexdhe#OeMM`0BB_&+5Y`uj`(+nj7Z%-gQ8K)C+l+>u7E&2l?kh zEjKFJRi=ad-TsFcQ29d!kIuq!zv#SrP|63UH|?G1BUuc5B3Ur9yTIl}{ zA;Oq^je6My@oX2R-;Rw{DAm6 zOfC#ZRt(<{f%Qkj?T4rC_t;VwmpQA#AXOD##1vH zI(%IfFg(jGYtF$UQqu?m%n#INEX;RZlZcxmN_Yd0U{>T8cM7%0UbbLj{BWm7K%Q)5 z_sm9CA_&(S0nWD37sD-unkBug7ut$4T*a=2?xsx`kFkt*_V%AtYe108ZY3j57)8^= z*p9j|Ran>eCrC{@m`)yZ^eKlO4=hATqe(f&G^^aptV~`|LV_OR+!yIv3@L9ahRK_b zK`*LMKM*>jj5aL9Cag_xG@ZK})&>N>RCY(zy1N)-?3adju$D#$s4&+Rw~P7+tzNDp zF}LOXqZOAw2G|yK zbRf~(!%CVVRCFY@BAzdG6ajD0o{DQ8IyCvh*fsRFnZW(L#JLsd{dySy^g@1suK+ocptGf zW4ynd&9`;)A+!8vE<^e%Xnfbd2`ByUS&mn~{gK_`ZOwo%2t9N9fer$wY;n*XC}PR_ z<0J1pGV3hdF_Nr7FEOKdkWmra88X~_oN%Q*%-=zURw9Ek`%&-0;X|aiY3v2g-o-Mt zIqBFxjtJ9We+z@BOtR&a)+U44BCdkrk3&YzcGl(nKv?~A(29>EzvwU4(u7!spn2Q^ z2Y6<*%&$Leazg=lBm7!nd*3*!95r~nHNw_z*D9fE+7=A^&hR~^`88N>KZ;7<8SZtk zsVU&ddX>$8Vo4iTHkrN``gdOGSS#vDxoOoR1~!mm0|`?ZK<-{~RttW;hVPuc>B!AC zG+g98wx&pouo@gJl8dqsQB-2`6hak{MKJEEysy!=4v+Xp+06#av=cJ!t|T6u$Z_ni zm`VxXL}>!Aw06@%pFv$-GtmTV1UO+ZnIZ;mG=49mFTZnNz*p3!)I~NG{5N(TUCUxy z3pA{kzv8HoIHm$HBC8)-3CC{d-HYI8Tjg_ggT`?sp(R@pq=B`7_FxB5HtgV$I~D{s3r+H3kk$E9A37;3YSFSoKGGl2a?rrx#M96f zs|d3O1%u2Qtqa|5&hjwZTx^Qdb3zG0>}kgJWFc+8cMWkQUs&+?tZ-wFE&t8@a0EK$D0`>N7MhBeGd8v&{ zj+&7(Oy}L*Zvo?9$d|8q-V2 zM-j_5)b41)&@k8L!S<2%^6Sie5s|g`1bB1^4GK$ z&!kVSmVXj!aw|#j$nwv7-a}tul|m%_M`2igfmYb6aS43)uDId{_xi5{{TNFJkqM`+ z-?(}8^;hl<2m*CVt+qG!cMuSQD!cnj8%UtI4aIfw2jlHWV}@-aJ>bA^>2B9}f}F zM(369;lE6(wcNUpDvr?F2=TT^po)IdijG%B#~b@uy9R>d0#|H$gollB9>9`WZhePM zYP65Xd`V}y_3aB6a#U=^VV~y!(&&)$Xm@{eX?=5R8-eqW#<)p1R3b)ZDBK+_fsH5V z`so|r<^SeYoQy^%t_Q3AKKio<1pI9Ir|dzOkVqt`IElcaMEB( za-5v^R@!glaZ{w?qDqJTZUycnSkTo|r^!XYW8H+RmHlLE1PmySsA4(xL7=1opl%9h z!AdJzn6Z|NVwD3bsXY++Fl_nZ#5DFyZpxlloR#<`sCVtlU%UR=HNGL+;<~?*?cXKX zaitsW%Q|vhL5Ma@mfcOAfxG&6bosm$&PNUCykU?hjk z3oB4G-rP_lan-zX?xW9=jk* zH=Eka34-x8cZ$j6m}UdJ8@3ob`6f$wAQig~<+wJ5?0Iu%3C&#)N&4_>5={Xk|3$Na zLGh{yVr`D^#Jw#Ch4>FWm6=vmSK_zkJ`h0_I~vTg*5^&skEVHPY`x60n1k^5t>(Nd zESlOQZ7cB8q*h4P97-OOC$zrNy3{=EdGAAgI z&_x^I-Ap>+_lj^0=<`Z*d8-OkT|AZY<2FjP(WGqfxoga*u@4k4+t!IUaUB10xbSN{ zT(!@h6xC!ijwr&m`7 zd#B!7; z9}{Jbi74cYKpLJEWZ-F={^{29QI|HxS?5e)S=`uqZ#*(RX8-b&i$UK?*GP&f)6X%yC_Op0`Q6qe66+O`NEY8IGsaPGU09UUele ztE-rX6XSTzb9UP`XrdR#c}}(y_~ww3*&2deqT3PYS!uEQD z?r?B+$=uYOIM_?>GA=IMVKYn?$+6`>2dTEch4;00k)E*8ryS)taBQK5CWfA2QBM~bva!x|hZQb6fLhX-bfaMw-}S8}#F zcK&26Q+2rEi}o7Dc$zIC@&X;INT(2Ultv%Egn{8m89)mloBGtHfR&>RI5Z5NpzI_6 zjNLYP+yl<=bPd z+?OCYPKIKds2gI%@fcFM0m7U((vs8JpF|DMH)#6|XrYJWy&fNrPn$mi)v#E-C|hI1 z#~UDy9@a# z---Ds#TY?xhXAeiG<7POt9`%mA{Yoxx0cEud|}{=O9A<3)M0|gN64Esd!L+D&6dkq zGkHQx(Ek=0fv|`v<5Efr-@RM+UbzACwfjgdPREE@>-Ka)y{vT|8Y`bIvu?SPmbSD? zHVj_1$YZs7^$ZbzjZqEuyhVLOW5pP2z(1%dgU6WuMA=8VDQ+NF@Z>Q^0`q#sQ`{yG z|6M`?4P@^eFo^aX(?RGrrPW|f3|*R?kpM54?{<}xJ-H`GO#EdD9$~{htX+?MY@Nm# zSgRpmE*gw7wt{4|2K&Ki?NY59m#~81)S`m{$$TD%2+xO{Ws|V|+-OAM8k=!PZIFY+ zQ#MxKJSdDL0m%Hx&uTJ)F?I5A?4m6JO$Q+=uldiQ)WgD{E z{Jmh($xTz}^-BnpK^l?JO+aFPs9jkt^TwAGJTA7xh4~mvyP6_h%N-jg>Z1*YcR{;|dFL&dQjNfMMlyo*|hJ18Dic(>l7a zrs#4kVk?E~K2osoSzJ4-8b1&5V4fXe!jqhDmA%V9!`#knMA~GWj`;UHMl4M{g zud>)__y(&m`33_l<7eXK4;T>mfRNmcF>F6)E&`{F~V{0RM4$kOiQn*&5A zLl$>dxf_nBl~jay4iX`DWeM`J)xI&)XPOGS!TYFi6~{MHa8{Fzn*&I20Y(nE>9fyd zssRJHgQodpojmG_Vq(rr-UX;aZw!X=V~=5N*r}1InG7tEWLD$`fdtIy^+Xc^tq$_^ z!21zW47~hcA1-?O!|du*>-2Eqp3==scGK8=#|f6;)~iGTapE6fEP;|wEtf<2$u zYzpjlIP%1D5NEVfe9r_WQz)2-K(!@#oksYa2lK2ccVD}6uXX3OAKitWFH4j{YGrCO z@|qikmSzYy*xEoc(9sy`4!mA6r*ltr3fpaQ#>-~;7#j4jj; zLs?A{CPK0=WEvu!>ub+JcL`Q?2oF_xapM=)x$ZLbC?I{XsQ_=XnxZ0U+wRu}^ zr-{*q(Z_>ndk45hg=UY)<;m`Y38=M;tFidKi_7s0%m*kO#KTeIiJILR*4+*QHIQ3_ z=QAowV1AyDu+&|JtJYKi&0q40tq*ex~xoI~Fma1A8scW8V#R0@F z*dZ($>R%w|SWA|{M(aY*oDM#RjD2x$UVxt>ZzJ@8p~Y-?p7sjS0*#yyJcO76xU~-* z4ptf$bFrhQRj$Ge4j0F0mEm6zgpUoh_}TzOHf`YC8gVwkDP;#QZ-A&kI-J5C8!_Hw z5dH+T1T4`ar&2i=mhFoL+|d4=J==86iwGPy!Jj5xx2^iYor6g=w(!P|Yo<1A|>dL_sCy z;pX%F-yGzd@beG!yL9dO8{Z5;2p%i&t=gcJH=r6Ez+PC0femO2IRLiSD{Z=*$p%!+ z@O2t|7;Qa*p-n{bsS@szfda4xzZBp#)F+HDdAtcv zk`zTD-Y%-nk1)CUP5$q=x_HR9F{b6)-~P^bzKfWaB6j4PS?q{)<0Jtq4vBW^i-sxy zmzj?-@mxt(9S{P0gs3I%+i>&3SpeF}a2Uu^kJHpn&E^y8WLL+EC++WND zzO{=B#<0mKWPnGpl=Qt#9{}9)!JHZQAq{f#BEG>2`avZ}CXpy$dPI#Uw}oYKBz#*+Q>Q%(5^#)GQTlh5$n{4oXtmrI`EJd}| zuxc2QowE414ALh7X%9#+>a~r!|G{+IJRfXX4|Z@{@{jo>fF_X@aF3p+c$ee#JFoB_ zWZiNKZ6cS)6oTcU)Hy0`QFxd!Q;>4hfj@Pq&_*+iX0(Bsu) zsAVsYk-3CMl`QTwH>jAZ94{*9QWl$knw8q5b#gdUckwZ)n?Z}AhnM?ynN04SIr6{R zB3|mF5j}VFl9_@o85(s`xXDRmW>5;FtAx$Po)hY_+}F!b)D2`IUTGu0-#6MYSwaO{ zLErZAcBmqCC_Nd9we{#qS=Zd*i*M*b*Jq&k&gOmSEB-G|(m3CWLbg+_Mp69^o+8H4 zhn2!lqF~*al8wG$ge32k%W49{nawa1`vdO$EGnA0OycLG*54(_`yDodG|{X)BuUCJ z{sL(lo}bh>ro`0pRP`iBnF&CSWtjKU%bl@Gm{lG4R~C)C7Ox=4@9=Q8dGY9oactlt zT?m304Dn0bCF$M1ymvU;JG#Pm&0wn=wJwi$P-h1<4{^(Ngi7O`D|R(e6kYP7%jfsz z;k>!E4I|WY>oSwWhdxS4S_F1~VVP5e;w#7CxpRP0Jeka(yxDmjyL!W8vlGa9sEU|87(b9Y_9Szqsu)!PO7mP6A%V9xHD@!&|;*Tpq z-Ji`}XS2O*RdojIbc1PU?s#EIVMc3!(6yQ%H!s#8p)pn<6A#yy=wMFg(bqQoQ`i;# zi-wR?DULfZIF0p#;FX(-<)B*i?hV89g%s(;r{=--wA*Cn3{8RCGO$VqS~W0LK=vjP zt9Ftr9VRt`((s+hFkP>pa^>@Cgs(j2Ow1cW==zJ(#uZtWRUmu^&nrZ-grQ{uLYoFV zLLYW*9jW^)qm(G*f=l7WE196>K_Z+3<@G^CeuJ|l4QjX~p0WU0em~rhX-EjMdGnyu)}-?3r1!Io0Z=6XfR&Cpy&$KUX>oTq<0$f7x6v9-Og*bl{(<8DAtx z8M9)MMVfb*SQ+)>^zuR}@%nLd;({FKYveaeGN9A8a}@5IvpeZjK3jEwcaGu|)kzYO z(`eb{JudZb397COh=2z2J>xNVV>s6uV9BdhTS?I?LRV(7W%ZR(D9bP=F(7XUi81qw zNHigjShXMlJSh24UyrUt74Ym?8%B0R$I37>utjyQyz*94+zzzZ(p<7uNNA&-Q!SlnnRp(r%*WWkKWwcWm5(UxFZz)0FyZvTFz1vtibwE!SQs}?dS%g)-}I6W zR*m--6rkW!+!Y>k4-`+@!e)n5zW_1Kg(Hj(0zZpaSbW&3xQz>1V|grUFIgm$z2srX zpNa;nHL7z_Z+qK-J==PrSPzgJ??dq`+J-H~P#@js-@f-&wjGki>bonyazCZ-p80Hr{iwQG zN|#RBUeRGxj@b>&nY;>rOjFPy`oP91Vsz6a(ih&UhB*bb~-zF-SK?u64;cS<^*D# zb3l>*%N-YVtQTHi`n?kape+zur5W;f1$LNZRh@=Xw{i$|2XM z7hdW;kHQaGqyD7EXZ7v#_U*0<=5XWS^}gGCDK#2kcvSN8>%E&O_rZ9%qyLtQKKTRP zDOQQ}O7B(FJLQESlHUkGfNJG~2yBlzqg?(qN{&C;0p^`%Le< zwLrGR-d`w?<)itn-fyQ`wl;h$ztj6&lzhhUnRv2nOkVzby}yX^&lct8-|YZ@srSzV z;FJL{Td9Bl%e_CyzC-5t_rKcvLwx^v!8`4?^y$+^yO&a?Q7`^idVfSrG-z2aQOESJ z_x>$>|2!{MZU!~8O2t3!{TG0FwuCVu;aL95{wY3*^6>)1TmDb1?DItmoJte@Pc8I6 zLk!QBPdLP`VRb?zPaZS6QU}ZJ@p9}qeNNiu4Tfs5^9}cK-l$a|s z_m39(A9@BTzfwmTy+M5}AAY9)kvX8z71TjL`b__m1pQ(iYcV&Uey0Cf!Zq|WxIj9_ z&pp%sG9f=*!{|f)-xmx(s0!D?DzpCZnf~3_xe~JI-0RQucL*nHmvDYn=zW_!)Bke> z6fcy3vLZUzKlM!iH|Bs1k}lBy&1d?5bx!xpOz!CZ@R|PKAe<;twCWW3ssm^e3d@A+ zjE?AUKhytvM5J++aIPUb;Q#VW{~yE_3qWu2KQI8jt5xNAy@oYsovQ5EH7AIttYE>+ zUymwoB9;n7q=Jf(NC|IQ?sJ>)77OjC@2cRqr7D1vEPeqVyG8_Y%xY8l@oQWlqEBUN z6Yip*q)!sx0Pt;kE#Rc}>dVI~Du_PL(Op#5v=6G_ zm_1(Q@noRC8V@fjsh>^w`Q49w5&scDMXT1gCLKrx$7xXls2(irV?{mJ$DpL@k6aVi zhl&oaZ-tV|F9-9Uvcn^HpRGJ{$5-L-#NGe>i}u9b>-ckPA7Qr#h{I%hKHc={witPm zAe?!M-a;?|%8q{nuYGEuKn6TKzlkT^aJ+}@aPNu!g!lEuOH26A^XK#?Q!Q4Tm617R zhE}ZV#qI@uV@eHslgU0`hjYctI6lJH6QyJMNvWyP!w35O;`Z8h_rc^5i(yXOKbUz% z=7XB-(Ziob7|_@Xo}RZ+#>$-}WD#5afH(fG#)V=LtY zL;HBZ751_nI>Wc{LgdzNc%2Uk9{BiP_>(RkR&9n*0k44NLwD@SMu3_gAVO`s`(%g* z0uVXJe@~sdcjxLg2E04Q?)4ilz5X(v-$9IdEkidJXzxCb{Z+76FJHt&AvZa_4 z9REOA2f~`R5a%&&EdniG8-N8-VfTz3`SAfb0OkbC(W3ZDxSv#GE#b>|fY${Wx~oR) z5(_P7m-z@e%3k{;rfRG`EIewUF;hppfT3#~8p8yB4P0hiGJxA_&731#nM+!%coZHl zF~^9(02&K{2ZKrivSu5r~Tu-8AC}KCP92Cu_3zPf`cmYmNM3O9Yr(5fYVjjcq zdJNLyxn$G=6_l8RZ?|k>S>ZG0aEK=uh7a<@G^YWLBr+`odro;YVK|^FlI7ry17;`V zCp)NhY_!IX#ZGp&W;b?eBp5*{?x20vHug&0G-w2otut%UoVsFBSiMg1I>lb^BV#jg z4zE9taGIH|;9>X{y1O=+MHf&RhRh$-&0=7mJO0SD*p#88?``3BW{eo8oyin(YcknK zFe&0EAQ_O|6DJ_?AVWk!1@fU)<6JbH8z$qHmn`M zxr>VjH-lKx=slYdG5~JDx8z{WCFU}2E)NjM&qRAO7~v%!@Q*^-v8dEH2%4Xack!34 zk$cR5#3-tkUWU$^K_on$+z2G2=PHE^N6(pNFVT4D_j0;>iZyVDe|NGoz7{%ujhu?N z#et=~38KA|Kd%Ajvz{Z@$CFJzy0lRUU=brt22Gxc#DF99XQ?k0n*K3q&vfhW6;e*s9Ox!Qz`!1gD))j3xIG4I9wki z_Ho_lgJ?;H{-a$angWfvejhT#gG^_OW^1%K1CmD&;oESJhG*3pE3u}L*pk}fh4G(o z<;T6Mb3qs}$F?qQ2Mbu4=7G;fVKdgwHW;Msz`k_yK->1U;r2R1T;W5=cCZxhPwvMB zt<}u8Ul3KFoQ1G0Y>j}1vXR}z8a&+^O_Xe5G&#VOV~s#L(5hCXxD7c@G$-4w=qcX~ zF)5dWa3=wX)`YFxY-qN>7!lSt4VEX8K@LJPGDon;l8~Qn-Lerw@&^VtArQzx5sHI_jMB%DUBID|CXHa&TWGiwJ14VWlL89dKWVR~WLsY1@&38Dw2biVtdI%d+|qD7VK` zS{KAVQw1o}wH6Sw)&WM2EfivYku18%d!@&)Ir$!e4G>YC2y#W#UL1*1mRJ*=MeI9J zlbEt=WpQmdUCeq%I*cX*KwPYZe%see{`IN4k#gB1tt2jbmB+_pC$KYz->B5C6gzbm zk(_!idQsh=Vh3N*hsejNUzG6+G_*2Hf`+Y&XydR2=sf_a|5g?csI5pPP0JhVIrVgZ z+&QC<5U!1(U7!jk1W#b&KOjmr@8kC}MUk@K6BZ()>sp2?bt}WetVSHAnuz@byX&jE zI@fz=_Yof$O1Efmq-o40EmRL5hm}>i8jcMiy@G|;cSTc#Ot)Wz$2mGjiX%t04`6xY zXoiRW9_{5BSwfEkOdJXsOh~-M;)1ieF~w_J=^qDpO0V-CCzZ({SK3!Y$^y7)4KHx8 z7%i_P4d9GU5^Mpx10?5rtt+hy87HB_`sTEQn$MvOk1KqOSByy(z1KRwf{*HJSnP3; zr%>j&Mj7NBbN$5J1XMhQ;&rB;qkN-1fxkd=L%Ya!4TIg%iKH@%C*La zF?x^t6v4xf^L2EORYxDWZvg}q_ur^wnhwXR4Y~Wt7}?MW<;dZh11XVX7TQU=_pd7% zUNsvLrl4U&k2E3;=|!sMTkCK$+nm^mhWoBf+Pkih9N1uI@mnkf>|Z>(Us194wJTx$k%Co)dDvn^ z%cD>o_YGxNkZ+Z=D>1D_3N3aQ`3VEq!M|C$Sey!%h?1d))2%V&?YIlU6?33K~Mg z`e8AdfoM?C;D)=6qa2bjLHa7YFOU@-U`=ig4=0%`mg+TmKhgKh6qCaj% zGAp$I3IxRolqZStY#n!}wT4;cG+1|r7awcgio>~9jEai=mX_0u|ptsi+Xa-rKMA+2E(YP$+Uxo`ihyNm?<0E%M3Gfx+O4Xg?)v3 zVAT*b0GuqO19M8Sv)#pgtasT$ColtdnXr^c6@>tL z){(bh)5M;;vGt&1rdH=gF!}9?vK?vT)9{e!m01Jdy4rsQb{ie*6apVDJEP&AlKmj6 zATZ@wAS_#+g=(HYJ6TZ#&xJ)?5IL}k}JDN z_e&cxn4W5$@*lYV3L!92FtX>yt=d1=MGCSY#s2^^1e-dkGoW>Pz{bNv;*o2#0{F_9 z7>+B!sx+^E%&U@EWj({P^2%v_8xzQgh-`srmZZ39L@RnBO}|oWO_XTtwC&^UKO4>j zj;3_7$E1Xzko&<#m_TyBobo{g(1kW|Xw}0}XCrmi7lRGk&5mT}!NW&;gI(B)adOT0 zO7{IQv6O#Ovu2c4D@Mb;;TDX1c=T#WYukuPD8&_l(?TXWXjx(D85&U`x_;kgOQTE> zgg9$%3l2KOt_YLd8}V&$Ni@@RvsaU70)|BkwnZ2&*(G!~DZwNW)tIo`C*nD2T;NgR z@n6X`Ffnk?YORhDdo#roHKxO00mG6K#PzxMnM|VAvP~!E0d67;^;WQDTugK135?S? zQyZnxxZjbTup{*JhW(+M}s`B)ypVAff*{1g+%=x1Ci@jflkH$wc2y?pV zeL)4M(#?ifIMcg}3eVn1wycUHOz%g%H;FQXaFlPT;FD%vs@59y9-!8zVxb#Wyw$DV zyC_Xn&3592+r23YKV((CtyO(HmFxo!d(is{U_YBq>D7Mx+1_umr3`=v6tDf;^5Ohk zRw$;EBJLo6srOe<|MMA0rgA&Xzu5bC0COtAc&Cr_{j=Flgo`(AxnA)cS-_rL_l)H!5`LBBa04;n(Wn@tQ{J-}8;jjNx4mc&N=&rt;YP-JA z$EGiHDWcMOBvoO3GW0o4xc(}JsV}tw>T5nUtC;hMeaV@gUk;i*4B&b2g^K3^*ny4& zV|X9j8=CjQwRoe>O_HUP=_xMx!C-iRBPpzh*cIC4tv|CR{{PI$;Ntn`FPf8qU-f(b z&Un!eeRHxC{(?(D_%(Am2%o0zIMAghM{pg;WE4!K6QpI+&4Rla>`Z<<#^VEH+?RU$ zXCeM|W!bv^lBFAuFAKP$w1<;T1bQP(&fO=t0)4N!M%xNq%ZIo%ee3`#6pp~W%ZX?T z#kp__Km-_8E$>HWd2EF5v5U8M#V4(q`oWkqz#&-dN~?`1T~182{>)HFB6C<4B$X`gTm%+S5dfGX7ufp8H5Zt*gfP(L8ncojh-TP2giAUBaXVF zet4Eh5F}@# z_2Dk_lVc>%b=PqC8TkWaZRzO4-6!dS8tNiFb7rQ_yma+C8hQ0D?)`7QdM~sS<_c`! z;H{1xMOecn@r#$ubabV)dYM`_@~(8d@0bb*;17tec0Ck=v#Y>Sr1aghw}Bg@P>QTx}a z7IMcd}H#}n* zr{aV6Mdx?pQFO=}LNIu2Mdf0AcG$}=E+a3loMwzP8%9Sg$Z^5mNc^thz zxqUe$VP&`Wah>9Tg4$Grh8Iwg^9?gMQ1_{m~k% zQkLXbjW_^ky9|2`2!h3}apnhhO;Nb5hd+m1+Y{7RqBHphJPgc67}q}p`2p@N_mDRk zWQNei`wwuF7>{`07BMx{=Q_(R0=Q>phFv|8;>#YU0L*dC06_W80c(6>WP3=#yRFaO zV0QN}7EAlntlLKjSSRIGj@pXVnQ05{09;^#6A}2&Y(~#znho2o^-gH6LW2yp90%)BlZ*|<( zymJeRqf+J16k(&ckzg_3+!}Ag9SvH9`R0Jl;PED>Hg034!dV#2EIol__Qy<(%1C2& z#28wd8NRJ#278hoL`8`vhREP`<~xWg(q`%Rr{L*a{*Vyp_Um#=0_Vxr>y4rB$S}Ws zFv6Q0*lzF|fcQAG4ZEXJzQ@>d69#+cPrq`xIj+b&c5CU7H%YftWLPG9%=}1yIgmIN zQqjVImRr~2?rl&wdT>1aiEFrc#2`ppLV!iob{E%DOhKbRIvL>!loNl|z&8$HC8i0K z=KNzlhGYO%rJ2{QS3@r*d-89Y?7@9gIzNnfI88`7u#b;$`y|J=O7BkVrjEgmNJ<^= zSccQ-@QE4P$r}&@=^Bq?f|VcsT&^q9*e?#U3ZbQ>OC>58qg6%%c7pdnB13gN0b!M} zxOahLq}>_X;J_m3p~lpz(+}+!y*0yR@%;&Wfw8BF&ojbcj_>h>1o@!(+T-a392mAz zTZL5LbI!E|zKjPm{KgL|JytJh#Y;iR#86$H48oDI8=2C)1>?t@+i17tu@^p+{!%~} zcL9_YN&Ato^t-=&Z8u*7z%odR9Jar%i9zPrN9l&qg%xdtc1TQ1B|c0XWftCZ0+ZNn zOwjXVxFcUt$IiNoofY>EINuMC5nDu;zd=)o9wh{@tkU^s@Xyd~tgUQ~!hCz&h)TL_s1y(@KLl6jc0xSX4QH4LPCa*nl z($`#(z-6g=7p}^Z`ca!U4J9s~S0VDR#l0pjpiaX#r#u*3`Tg?qShl3N(h(*gp94HO z#Ak=Fz!J?*s2Vi1U$v7YkWTy6tMmcjtqy<1>uLUlf5fq-3UQn-PbUX^nY7@u1$#V< zrw*ru>sP!d5ElPWYgZQ|cXHGJ;kCpd0->!W!b93=| z9lu0k?cE*w_HI49?Cg4DHslqFM-&l75h&sbAt8Yji5J8>3Lg>@JRpRKctqlj7sLa< zUww2{|3Ajgk(IUHnXay`uCA`GuCA_5LK^yjo*E`bv}lwnAV^1vY{bM$S>e`rBMIvm z*$Az&|Aq4toEOxy6$`u=VT_imOVEk^1MzQdq`ik3Q9EVO{Mobkf*BWS(RY|r*Ri&B zGlvU1c4S9;d_8O5FyvK8EuUy5-p-2eN(U?eEuNZ}OADQH8FjP;r5(qgO=1F2l&8aS zw-QD6CStE~g<2S+i{GjDJp|XlEX7*zaXv_NRP-?>XXsUydQzv+6X8Fimjw&Q3%--i za8*-5EHn*BL{&xj653&|R*!y$5WScwu>K#xl3z^uj#rr;+wjj~DTSh!LJic%Ww$!i zAes6IF*tjSxYFu1Zf%d@wJ0oX(r=R}|9V4~Nn-E)3| zeM-SbO(3=+ex=cAF5KKIZZN8Avlt%RpgjwR7-|bxn%Lez`gX7nK&Tzn?&Z8ZQn{A% zb9TQpADR_mWk{QW7sL@N#LIHk@f4Z2oZU_{s|)$CrvHqhOC5iJ0cQ@m!YVn3vFVRE}C2ESUja( zJ-o_!I2tWA=aZnhUKSY%9vti%CK3Y&5C<#TK*wq9P=SaX>Shcs6?~<7L3|l)^`ecD zymfI+W_PLjW~fxCu#^6vfB5kM0ycZ*(;AQYa5E0iyNOPcwp0Bg`K=(Rhli4{mc7%! z?WE(v=WiiUli5@8p#~e+kCum39&b;2<^)&G4`4AMsz?SlHGv%JF)*qSAwr}^9IFDJ z)TTew$Y%MIy4b4L(8yl3u)+s!Be~O(jE~5fyszgvCmK5lhNBeC8X~z^if__d1ua34 zmO$71tA$go=2T@+o4v>^QJJn z!pzj!V-xH)PLNWzP^>#Sz(Ya=cx|6XEbnykni;*mTpZ;xmnj048&7JbRz`hxy2q#K zaV3n28WLRvf{T6m&@qEKhw$t@GF7^&gaXy075Dkp5(R|G9m>5S4jXa7b|3Rc%yNkD zsYfnzZty4kqPQi$>C=`jYg_wtk6nB6)s!WH>*~&ak1<81GYK!r2Ml6FoQOQYLV^8K zoCZ&id@oLu)peaR&=!`>1bP6mDK!=1e5fm!SI^rn$HP3cGRCeCZ|VUY*x(lz;^auW zXI_n}QVCXd+#F*6oBzv1(Q%bOZE&e&jYiYC)i6Ujj4CulC0JVD3c}X6j=NP*HB%q& zWHT<`zLtE_$)C0Hr7QZ?KCYtUR>xxFD!zc+QJ33cA(u)7qb^PtRZ7ME%qXFFWzbGI|n7WTzhoHzlEnPz$|5N6FNIy_0b}z55#j;CU z&U_*}A2Ox&#p)q0oAZ6fx@H`+^esgRM*s&B;kc3N+;8xJD=HGnB`Fnxb`JQM-&MG7 zPaiBkv`@_@V$@J4KB&&3zM_w&u%Bd!4=ODW5dS-R6zpI_>{}4yb|3Dj`*^$7J(pQ2 z*?a^ds>Rvsj$z=zjTD1ulWQieaxFW=yAz?KcNW;ELMfR`iZ7^I>Z=@g z0T$oWNy^0%Yh%xnclUjej(-nu;w+C8g70$d_EgpFW-&hRxieZ$4Lan5gxKPfR@V>( zJF+8?#n{3H;vUpJk}&Hs37JRr?BV&FyFQWGUQS(_3SK-+NOE6|K>)GSG}k2fro#_XPoKRfkps(z z!Fl8a`1A;@(Ha#1W-8G@z!`tV-A3I8VMNji7E_QXj$Gho(Vi$%>$bNl)?2MzZPG!O zFv!U?g&zg1%}%Hu0kkH{sF{zlQ`~&2a7y8%EX_Jvi{6I@DxId!o`KRiSajz8k&g{j z24a0iS_T8YO{+FweGL%B(Kjuyx1}*KhiM&G(yQ&E-_Yxu4sQ3g<5n3!0ru4^)DjfiJ`#D6!^N$ zCeo)nn--sm+0=+aykT02n=$_;B`G4j|EOEtFFCE=Jz{1-++;ESwL2BVC6|OBu5P_G zz9__DTrfJQoF}Qb1udd4$5k9<2$jUex-DLn7M1L!ZO$k~UhcZCkmMs;cSVCcu_hpi ziyp>e+lBD+P!ObARS6FOi>9a3F}~LIK~$;-tkmtePUS{1Rf|8{)tak=$fF*xx0eQS zkTqx`LoRDDbip2M!-9N=+s(!7_1PSGE@ql3(}JhP!G!}}*iHz|Jb(WwHYGaIBnA+u zVT#N=4;*=98&gr9w)5C}OR<%aRQoA`yjMBKim!OErz-60dO?Ns7#NC6_0P&g(EUUxGBsA&~@_2?X3}VZ`7U}Vr zw{YQYMKCbD{tT3e!5{-|yuaEP2lrZ>kgcI*_+FhBJVZq@z|IEm0d^5^-Mrf(Im0vb0j6f{0E`fyun3AWN3svIt2fJ z2$LCb5`FA9d>|Hb$tQ-0kYKU^ckcTM;L(Yl&7v8krY2baF^2ik*k?+4!^q+sh|Ivx%Vdw;sFjM46LiSN1TXwD<{N3t98nPCxnhUR^3YgK! zbw^gNo@hW`3j_M0r1g#lJM#Z#uanckUgGa$u@p21tt16hs=?yL`2)mVLhH#lyb{Me z<+vPhSUb;=9+qc$nBR{Ox-HvjoF-HZDTB&{pv{N^k^_Jg*+D6WGYQTwnylO;donLA zK?-jPq07D{V)37k##OpdMr?qwstYD+$8E>e9>$g)xzu&_%IWEmI>?s~A4Qt6|IB-I zzb*MuF$&BASDVj<71O17O&YH5PW#~V93kiAg<1U_vd9Gao^g)PH+wh8vdpG|8lL7~qJ@Z{q(ZhlTdjwqpvm^rSZ?XApcg72MT0d|2|rM^UWcmRkpTK{~}(eU7%$w*bE0+G{iF3oZ{ws zN5!C*l`Cr3QpAg8H}*-}@3+B7YaRinE}>*uJ^?06udrjvDEq@zBR$Ck)rJfk7kdml zeB2ol1xH38&kf9ILf>ym4_Xt~r1%8wwnhMe2t zCrwwW4@1aeYULRMnTD-@fPxRbqLc}1>C-Lvi^s$35)jHO!?;s-TVNPV_mxVp<|WYR8cV{-IrtrgnJbW8CelzaB9;%AHtr<9P4 zQG0NX3yyL*5P}C6I3h4ubHrakHfxBVV6%vb-##BHiW(MLLwQ1Ty(}L!1;nYu>-B2J znFji|dCoGr$&+@Z*u-y(H9{st3D#+-#|n|o<3j1kI+$jz-o!4NJlg<;v8r(7WUTa{ zN8jv8^U`d=3CBF*&I`6R@Q*$-7*NQ{*^9xcsLhS{x%Tx)b@9?n)luGEC}*ZDEls81y~_psOLz(IhGSPi7DKwiB%Kie%d6p1!G^8YfggY*++F zm)rRUnVLCAmNn%OqKA-^JsG+=>s37#NGz0wgEC@+%I+0P``U$lF3sXtggJPzK^Z-h z0$I8$acB^L-r@Nnq|B0$gygS&VRih$(LuZ4g+9`alNG>L&9{@7RW-^?Xs3;;X@FsP zl0?8bBw4wV)cXp4tjFW(FQ5vSexy#OB^g(=cs~Z}0V)DPzqYko;N>kW9=74rK0z7a zRjg2EwyQ4$a|%-+jI#%wMMV1AP^%-g{Q*SfF+w#kh4}8G9|3LM+P=GU=PU2tx``g^1=Y3T zmgSskL*KZ0{VVU>-C-@jM`dBrnuME4gjlYr>!ZMKetGMLcuQ7|AOwd7l9UgqkyZ{V zV|Z8k@nQpq^gM&r4_9Zu2G_#|Uhd>AKIz%URw7ZKCdy(`tXf+8Fqse@huNZ`>pBYU zsZtupSsYW>oIPfI34)Nxej$VsCSE8(QN+cjTA`QW>3B=;az)!8P9Cd_%i}H5AU#babohTtN#~)308K#5V7i zO61dht8?Gh<+J&Ra7EHBhb&D%!9nY}9G9j;^Rg-LncDs-g=()MP9Jv>%tousvNDFq zyw^M|B;83t;6`acM~2Gz>=D8(a9lLHD8)FNe=W6-g{O#Gv5xMpTPV*cO335ONaadcOFa^(WaTjjn-P!3m-|V|0{k#fNj`6Tm=85Rkpf%B5WL81E3s5ViJ2eQ;I^$qd zYT-Rz=HAfvAPO`TSX0fB!x$df(%?3x=Aj&!Y(h}y*}5dK6#=z06xvJgHzGHULExx| z%T}ywXr@%owMEI+8v^aahqD>G79SYo87gc8Mic?3V0jBCn-Sr*E+<~c!i1OUUi{*)*QJV>!&Jld5V%x zPzL9LgGg`!dtjPG*S=S4ppM1 zG26}@Q})3(!M<{>qOxdnW@$iRp%jG|8w zQ%RBb);umrnB0`}DNE=UL5Tg5P)rBT6iLf6_jIczpM%Lz{EcOhI|+^+4FF|Ht*c0Z zhLl%h%&%1tGUu=%u}4*HP?`o4MNf>F7R}3OobMPqStCSYjLUR1C)4rp^Ew=%k=qIs zLuL$WGlD&Oo`wpc(GaV)8+#6f=!Esgm%&zVq7@Jy^tHyZEmQ9zl_hOwj1!Iwm=3lf zRWcCpG@W2kzwfA_v!s%oEg!>yh!k49Wm*PIyq#_p7&}v8xq-8Hir3tst9R-9lYG{S z7)RDr%JOFBJllY9x9NoyxCS(u+lL+Vd4X6hyymSsVHATMcM6$=s2RsQhgIYqtHrvt z3FK&zKw#+&=zYF0T!fa*w8OH(A08bs#Vsg@U-HrWLoQjmI2Eq3ZT_qc&u5YY77-W7h*GvSGUuF=Wzq{+uD+SOjPcyaO)Uaj~n z_S`KGNipQ@C5z8YJ_pcGb%7ePR|MkK%0ZJHS+HENg@fD55MG}A5)i&vf%|6CKz@00 z9UwoML9DG;rR3u!P|hlBO?FV>lh}lr6QkLSnY@_yt*^ji*LvtcepAM#9CtPapi7sI?!}N{8^!EwzbAhRKrP4sZIhcN*psys*`ci=b z{@q~uKLq?l0+h%>EC1iY^vVj#UrXia;F3dstN6v0>AS2Li|d%@ImdF$U@*5=roTy; zOr;~Q0Pn9%9})1ypdvZu4co!WbWWg;7a$wSw+CAAiEZ<-HpcN{W%?~vEamQxFvQ

    aY(s?^ zBt;E-Oul;_t4{!9T;*d+2;|!=mhwff`jOHl>O#u?4FHK~ B5c>cC delta 53 zcmbQelWFlzCYA=)sWUdRBu!IL$S5f(D7MnqFE20GE2u2V$j{TuFG|->NiEYaNG&Md JTsKXY4FDm=6b%3X diff --git a/docs/doctrees/mgvv.doctree b/docs/doctrees/mgvv.doctree index c96e8b6f231fd760a5503f79fb9f485f6abf7bc3..f03c010f0838d5853e0ccd5f13aef7979e1c79e0 100644 GIT binary patch delta 48 zcmZ26k8Qy`wuUK;e2iRM`5B+pNJwOqloS+O>FXDy78L6hRF-7q=jr7arEeFlWfT?y E0GV45P5=M^ delta 56 zcmZ25k8Q;~wuUK;e2hX{`5B+pC@5rFbx5m+KW&mSp7T>E#!t>!+la=@+CH M6mRFPWfT?y05gLVU;qFB diff --git a/docs/doctrees/modules.doctree b/docs/doctrees/modules.doctree index 04d721e84cd26a756cf629aa7713caa2b224f3ac..099b35fe294da88ca322864916a6fe520ca52f22 100644 GIT binary patch delta 43 ycmZn={UO5Az&bT|Bg-Q;35kr7l7eC@ef@&ef?~ab%94!yJiYv)^v!JSRm=cS*$)5! delta 51 zcmew%(jdyxz&f>bBg-Q;1%-@~l7eC@ef{$Ca=n7el8pR3z5Jqd{gl)){eskj;?4iq Gs+a-d`x6lW diff --git a/docs/doctrees/pymatgen.db.alchemy.doctree b/docs/doctrees/pymatgen.db.alchemy.doctree index 7d2488aa414dd4ac4689d4dc4253b13ebd3ad845..7424d37e68326c03155ca13117159f3187d49376 100644 GIT binary patch delta 43 ycmZ3KJ1du^fpu#CMiwqZ35kr7l7eC@ef@&ef?~ab%94!yJiYv)^v!yPC9D8a$PYLG delta 51 zcmbQ0yC|2XfpzNijVxS-3JMt|B?ZM+`ugSN<$48`B^mj7dih1^`YEYp`UR;4#hcX( GOIQKmKN3m+ diff --git a/docs/doctrees/pymatgen.db.builders.doctree b/docs/doctrees/pymatgen.db.builders.doctree index c81bdd7c964b0b94ffea5ca136b3dbf1f179f5a2..681a79f514b6fd0424d6dc798ab35b292ec1319b 100644 GIT binary patch delta 565 zcmZ9}O-mb56b9hj%*ixOLq8NX#ab&R5Q@g2yDsJr2(xe{Ekl^vAuof;49*1VLQD`{ z#np^n#DE~~{Qya@6pGt`5GaN2L;`}PR6%ehcoWhPySbZt-shadsa?I;iOYr1I`0V_ z$iK*o(i87D@raJ$ML&TN&F9ZG8sHy_EXs7grbxryS%kb~D9o#hG{pCcthb%&=ifIN z@qI-K^Q$78kg#11&)Bi0BiqvlLu?g}UMVgWEO%Pu@ zM74`}^MI)JQCtjo-A7ty9J`+s89#;aqa)P2gv0|u?D@96A{WUhPivHFO|qqtSmv*A z{`_-BFT0#nw^MqSwLa(PjImiO=NdWJ@%74NnofejB&*!&bj)HgxUTKIA0M|3+ez9B zF05SAn$J|~vlIy~g;^kAhQtFC87!lKGB$C9L!6?93pC6?^YboWdYsdF literal 292939 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 HfXDtX@L*<4 diff --git a/docs/doctrees/pymatgen.db.builders.examples.doctree b/docs/doctrees/pymatgen.db.builders.examples.doctree index fa1ecea62a846feff6497c10a7f456329ad1efed..a7118eb3fbc77be20df94de11cab97a5637ac866 100644 GIT binary patch delta 356 zcmdmcfO)ebYXj@l6#^SsH#1G%$@G&eF+;v~ibjTF?3Bq>P9}_rlh-@tOqOxp%aoBk zInZ27oPsLnlMdTc9)vp{2)Ya*dPRldUJ6zdgKmSp7T>E#!tZ&td& z$rO>XDPw(xbB04kY(`W@c}7Xb#Eia-RT;}mdpPqFb5lzy3sQ@xfC6QcUxu?^Myy{( qxnIUazl>FWr5TDK@%0%zK;61P-EKhL2|(Rd8Ot-KY<_hwm=OR=afb5% literal 57405 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 O1_ezhMMVm!#s3d*QUgZ- diff --git a/docs/doctrees/pymatgen.db.doctree b/docs/doctrees/pymatgen.db.doctree index fe516ee34b2a129c1057c31074e8b7818b755b9a..f12140900c5240d453ba55d97df02369999da3b7 100644 GIT binary patch literal 232784 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 literal 288744 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 diff --git a/docs/doctrees/pymatgen.db.vv.doctree b/docs/doctrees/pymatgen.db.vv.doctree index 46170de60278be950a6f4b722de23afc7f51f9fb..f1df3e1b96f16aada407e21b724f70a07b6714df 100644 GIT binary patch delta 554 zcmY+>JxCj27zglN-n+w(mR3akXwwjCQ6y)AI5`LoLZSB1!SN^;bMfy-?oM+jWbh;4 z=HcL-ybutIo1sHRNT_bj(t;w0lbeDdh_sUqg7_wCjLS2<|KI!PdDc#wGVS7$uzua( z+ZMCDdqC>lAN)$Eir~E0iICzsZDu;DTH~57#beUkoD`o(B&4Jfx2H8vb^re!Er&*m zLn1cu4&U9Ge_d{r=UX@M9s~h|@!?Ce9eXC}4I#l=6(1E3pA^p>E(U2oPoj^%zopT3 z!qZir^orPH;7WB`E9n}ysTiOQInr2yX*5TMMI1BlsNx+~c^xmj z0YwNsSEP{~2~kH8${pz+Md%T6#i+|CDtu8zMXD+1&BL;!F+;aB-AZ|C;qx~k@Arqf zd`#HoT3TRPW~wg|F*P&QZKf?4dbcqiml$=krYxHUMbIU;$ZB?BFN%@fYVf z!yRsIr&d>!nw2)Sl*djtSxU)(jEsz|j2#*KGR|e($u>fz2W9aU6D1~2F>#rR8%)eI T@esGTu$|Wl!zc_I!dLDd9OBAb literal 356498 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 diff --git a/docs/doctrees/pymatgen.doctree b/docs/doctrees/pymatgen.doctree index 821015ea55582df97e70961d89b11f7926116068..96e9f1c62d6bc0cc0689929b8d835cbd4c1a291a 100644 GIT binary patch delta 43 zcmew%@j-&6fpu!?MwVg@35kr7l7eC@ef@&ef?~ab%94!yJiYv)^v%;b9x?*}STYa$ delta 51 zcmew$@k4^8fpu!`MwVg@1%-@~l7eC@ef{$Ca=n7el8pR3z5Jqd{gl)){eskj;?4aW G519exX%h_q diff --git a/docs/genindex.html b/docs/genindex.html index b3e13fc..0c1cdf2 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -5,7 +5,7 @@ - Index — pymatgen-db 2022.3.17 documentation + Index — pymatgen-db 2022.5.2 documentation @@ -37,7 +37,7 @@

    Navigation

  • modules |
  • - +
    @@ -53,29 +53,20 @@

    Index

    Symbols | A - | B | C | D | E | F | G | H - | I - | J - | K - | L | M | N - | O | P | Q | R | S - | T | U | V - | W - | Y

    Symbols

    @@ -375,73 +366,19 @@

    Symbols

    A

    - -
    - -

    B

    - -
    @@ -450,22 +387,6 @@

    C

  • close() (QueryEngine method)
  • -
  • cmp() (Delta method) -
  • -
  • collection (DBConfig property) +
  • collection (DBConfig property)
  • COLLECTION_KEY (QueryEngine attribute) -
  • -
  • collection_keys() (in module pymatgen.db.util) -
  • -
  • collection_name (QueryEngine property) - -
  • -
  • Collections (class in pymatgen.db.builders.core) -
  • -
  • CollectionTracker (class in pymatgen.db.builders.incr) -
  • -
  • column_names (Table property) -
  • -
  • column_widths (Table property)
  • @@ -551,65 +420,25 @@

    C

    D

    @@ -617,19 +446,7 @@

    D

    E

    -
    @@ -637,64 +454,14 @@

    E

    F

    @@ -702,16 +469,10 @@

    G

    @@ -773,91 +506,11 @@

    G

    H

    -
    - -

    I

    - - - -
    - -

    J

    - - - -
    - -

    K

    - - - -
    - -

    L

    - - -
    @@ -865,16 +518,6 @@

    L

    M

    @@ -1048,41 +655,7 @@

    M

    N

    -
  • mongo_get() (in module pymatgen.db.vv.validate) -
  • MongoJSONEncoder (class in pymatgen.db.util)
  • - -
    - -

    O

    - - -
    @@ -1090,39 +663,19 @@

    O

    P

    + -
    +
    • pymatgen.db.alchemy @@ -1153,68 +708,10 @@

      P

  • - pymatgen.db.builders - -
  • -
  • - pymatgen.db.builders.core - -
  • -
  • - pymatgen.db.builders.examples - -
  • -
  • - pymatgen.db.builders.examples.copy_builder - -
  • -
      -
    • - pymatgen.db.builders.examples.file_builders - -
    • -
    • - pymatgen.db.builders.examples.maxvalue_builder + pymatgen.db.config
    • -
    • - pymatgen.db.builders.incr - -
    • -
    • - pymatgen.db.builders.schema - -
    • -
    • - pymatgen.db.builders.util - -
    • @@ -1222,20 +719,6 @@

      P

    • -
    • - pymatgen.db.dbconfig - -
    • -
    • - pymatgen.db.dbgroup - -
    • @@ -1252,43 +735,6 @@

      P

    • module
    -
  • - pymatgen.db.vv - -
  • -
  • - pymatgen.db.vv.diff - -
  • -
  • - pymatgen.db.vv.report - -
  • -
  • - pymatgen.db.vv.util - -
  • -
  • - pymatgen.db.vv.validate - -
  • -
  • PythonMethod (class in pymatgen.db.vv.validate) -
  • @@ -1296,8 +742,6 @@

    Q

    @@ -1323,39 +765,7 @@

    Q

    R

    -
    @@ -1363,117 +773,11 @@

    R

    S

    -
    - -

    T

    - - -
    @@ -1481,20 +785,10 @@

    T

    U

    @@ -1503,53 +797,11 @@

    U

    V

    -
    -

    W

    - - - -
    - -

    Y

    - - -
    -
    diff --git a/docs/index.html b/docs/index.html index d3674f2..57497f2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -6,7 +6,7 @@ - Pymatgen-db — pymatgen-db 2022.3.17 documentation + Pymatgen-db — pymatgen-db 2022.5.2 documentation @@ -42,7 +42,7 @@

    Navigation

  • next |
  • - +
    diff --git a/docs/mgvv.html b/docs/mgvv.html index 74984de..c0001a2 100644 --- a/docs/mgvv.html +++ b/docs/mgvv.html @@ -6,7 +6,7 @@ - Materials Project Database Validation: mgvv — pymatgen-db 2022.3.17 documentation + Materials Project Database Validation: mgvv — pymatgen-db 2022.5.2 documentation @@ -46,7 +46,7 @@

    Navigation

  • previous |
  • - +
    @@ -182,11 +182,11 @@

    Options
    _email:
    -  from: you@host.org
    -  to:
    -    - you@host.org
    -    - othersucker@host.otherorg
    +
    _email:
    +  from: you@host.org
    +  to:
    +    - you@host.org
    +    - othersucker@host.otherorg
     

    The section for email must always be named _email. @@ -212,10 +212,10 @@

    OptionsConstraint syntax.

    Simple: A list of constraints, which are simply combined. Any document in the collection that violates any of the constraints will generate a validation error.

    -
    collection_name:
    -    - field1 <= value
    -    - field2 > value
    -    - # ..etc..
    +
    collection_name:
    +    - field1 <= value
    +    - field2 > value
    +    - # ..etc..
     

    Complex: An initial filter, given as a map with an filter key, and @@ -224,21 +224,21 @@

    Options
    mycollection:
    -    -
    -        filter:
    -            - field1 = 'negatory'
    -        constraints:
    -            - field2 <= value
    -            - field3 > value
    -            - # ..etc..
    -    -
    -        filter:
    -            - field1 = 'excellent'
    -            - field4 > 0
    -        then:
    -            - field5 < value
    -            - # ..etc..
    +
    mycollection:
    +    -
    +        filter:
    +            - field1 = 'negatory'
    +        constraints:
    +            - field2 <= value
    +            - field3 > value
    +            - # ..etc..
    +    -
    +        filter:
    +            - field1 = 'excellent'
    +            - field4 > 0
    +        then:
    +            - field5 < value
    +            - # ..etc..
     

    As shown in the second constraint block above, there may also be a @@ -249,15 +249,15 @@

    Options
    _aliases:
    -  - snl_id = mps_id
    -  - energy = analysis.e_above_hull
    +
    _aliases:
    +  - snl_id = mps_id
    +  - energy = analysis.e_above_hull
     

    Partial arrays can be fetched, which is very useful for not spending a ton of bandwidth, by adding /<path> after the name of the field. For example:

    -
    @@ -63,32 +63,11 @@

    pymatgenModule contents -
  • pymatgen.db.builders package -
  • -
  • pymatgen.db.vv package -
  • Submodules
  • +
  • pymatgen.db.config module
  • pymatgen.db.creator module
  • -
  • pymatgen.db.dbconfig module
  • -
  • pymatgen.db.dbgroup module
  • pymatgen.db.query_engine module
  • pymatgen.db.util module
  • Module contents
  • diff --git a/docs/objects.inv b/docs/objects.inv index a598e9bae7fc70bdeae1abbb22320109175c1a8c..24b817cc049dfc7e2a39273b3cd577f189f2f598 100644 GIT binary patch delta 1688 zcmV;J250%79sdoGL<2Q0GLc9-f11sbqc#wL@ADK?C0EGoDOG!$weiM@XY3t&XDcU4 zfNT_l#7e?za@q$;UT&Wx`T-1#?Xf^P*+$)8w|=_SlF7>q@EycXUcS#rT%^#s7vJ?m zFX37GlYZ>}?6`MLLmZx0h{J0-9!R4EX5~fQs{Iy*$0@)pD>$UgHqZM6e>cr936E01 znDg#3yAO>B-lE;0G198uM12$#a76G7rO>C8C}-d?g1LO!bLfgA-t@zy@#tJo*Z#MI%k8246oKqBvF&YA!`m=}6i%l?_FMMmT)$(~`4Q8#Y5lK@RsTmWfoRS<; zUJfJWI(Q&YNIZlPhZtmVf2I$sQ6fPyCh zND*LAxv?#9WEkW-$b)uI1|Tq@nQ-E77)XDNAru0xlazVd)4JXZVEKkj!wq2jDJ2-1 zrL0R753nFc5jTvUD>#NSlmZTI5hJmo6cQLP4nmY7URpyFe1Ozif8V#1WL5`L2tX=( z9+Su(lLuV#SIjo}s)sYo{zi8Chx_Ih8FD>sqNk%gEQ6pH*E!=t4Ee^$js>-apLD6?)%SfI!# zwn&9o3?gLqiDEjvhoZITt zpDJIfs2#ty2HhIH<}487&#L2WWYy3j$;>={s_nS-f4Ed7vx2hfP<%78;3yqb>PbcK zk>DNqeZ740e{n?O%U75eO}`@4yNG!&+B@bRmd3TSV(3D=eTy~-5d(3u2D%m)1TeW> z33viC$bNbDAEuAK!+88&9!1@EPPavAID5L051nPcc1p_-+BNX~3`=Dd}n<(JkRQ*y3omEvsbzOfhB*bbFXXv!?UJU;uIKF_i zfbF@ge>B_cuS4rBgi4XU(!6OIwY8%J;2jK7vTIvDJ=L}k_ujAG{aw`luS2c7p4Du3 zIMfz9e~dUvSOP?K0}$qJRXSc%uSA`W**1ffVq}juF|_Di9KLC|8L6(>IBY3a!&E=( zP0$s^#$reHvQ?M?l)mY*FQs~#BF*V?zoS(@f7Kq(<=4BDSkm z$$AuAWFq7uLkjLua;kEp5o7g=(cD*zf&!=XLuRTUVO@pWC5k$;{@*2vFa_CZ~ z0)eg4mAB7s==_N8>_#e?Kn1vvGlq$3=8LE(X7j3qLk)w<*Sj?qOie zilA3FI=8E9@kYCK;=LKs(rIy;GVdnF{YllZY|!G3w%IPfZ7CY=?Uj6^Z?>(sLS5*l zC_@IOwRod#oaRrfWio1(XM;xz3|*knkR=6&uBPpfm6Qxz1=-LAa4?*C5}!Fuf90iH zH&h29eGRD3Rr=aK-(gTE?yBAo4*sWELkofku!Uyl4IjO8GLofkyU z=~WkGPUl5Z5bfo~%efatFEHBgUOH!AFg?ROcNKE3{WZ1GyoU8U=f-RNTJW-=6YHGC i?s2)>@|r26YY2mYMoD)q=x17O3a#5$QuaRy%HJ~8zAe50 delta 3655 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 ZC`O5Utm{JdEEBV`?>8dt{{h%6#5{_S8tni8 diff --git a/docs/py-modindex.html b/docs/py-modindex.html index 038c86a..b6e1d13 100644 --- a/docs/py-modindex.html +++ b/docs/py-modindex.html @@ -5,7 +5,7 @@ - Python Module Index — pymatgen-db 2022.3.17 documentation + Python Module Index — pymatgen-db 2022.5.2 documentation @@ -40,7 +40,7 @@

    Navigation

  • modules |
  • - +

    @@ -85,63 +85,13 @@

    Python Module Index

        - pymatgen.db.builders - - - -     - pymatgen.db.builders.core - - - -     - pymatgen.db.builders.examples - - - -     - pymatgen.db.builders.examples.copy_builder - - - -     - pymatgen.db.builders.examples.file_builders - - - -     - pymatgen.db.builders.examples.maxvalue_builder - - - -     - pymatgen.db.builders.incr - - - -     - pymatgen.db.builders.schema - - - -     - pymatgen.db.builders.util + pymatgen.db.config     pymatgen.db.creator - - -     - pymatgen.db.dbconfig - - - -     - pymatgen.db.dbgroup -     @@ -152,31 +102,6 @@

    Python Module Index

        pymatgen.db.util - - -     - pymatgen.db.vv - - - -     - pymatgen.db.vv.diff - - - -     - pymatgen.db.vv.report - - - -     - pymatgen.db.vv.util - - - -     - pymatgen.db.vv.validate - diff --git a/docs/pymatgen.db.alchemy.html b/docs/pymatgen.db.alchemy.html index 7bda6a0..e468caf 100644 --- a/docs/pymatgen.db.alchemy.html +++ b/docs/pymatgen.db.alchemy.html @@ -6,7 +6,7 @@ - pymatgen.db.alchemy package — pymatgen-db 2022.3.17 documentation + pymatgen.db.alchemy package — pymatgen-db 2022.5.2 documentation @@ -16,7 +16,6 @@ - @@ -40,13 +39,10 @@

    Navigation

  • modules |
  • -
  • - next |
  • previous |
  • - + @@ -129,7 +125,6 @@

    Table of Contents

  • Documentation overview
  • diff --git a/docs/pymatgen.db.builders.examples.html b/docs/pymatgen.db.builders.examples.html index dddce39..7befe22 100644 --- a/docs/pymatgen.db.builders.examples.html +++ b/docs/pymatgen.db.builders.examples.html @@ -6,7 +6,7 @@ - pymatgen.db.builders.examples package — pymatgen-db 2022.3.17 documentation + pymatgen.db.builders.examples package — pymatgen-db 2022.5.2 documentation @@ -16,8 +16,6 @@ - - @@ -40,15 +38,7 @@

    Navigation

  • modules |
  • -
  • - next |
  • -
  • - previous |
  • - - - +
    @@ -63,222 +53,17 @@

    pymatgen.db.builders.examples package

    Submodules

    -
    -

    pymatgen.db.builders.examples.copy_builder module

    -

    Simple “copy” builder.

    -

    Copies from one collection to another. -With the optional incremental feature, running twice will only copy the new records, i.e. -running twice in succession will cause the second run to do nothing.

    -

    To run:

    -

    mgbuild

    -
    -
    -class CopyBuilder(*args, **kwargs)[source]
    -

    Bases: pymatgen.db.builders.core.Builder

    -

    Copy from one MongoDB collection to another.

    -

    Create new builder for threaded or multiprocess execution.

    -
    -
    Parameters
    -

    ncores (int) – Desired number of threads or processes to run

    -
    -
    Raise
    -

    ValueError for bad ‘config’ arg

    -
    -
    -
    -
    -get_items(source=None, target=None, crit=None)[source]
    -

    Copy records from source to target collection.

    -
    -
    Parameters
    -
      -
    • source (QueryEngine) – Input collection

    • -
    • target (QueryEngine) – Output collection

    • -
    • crit (dict) – Filter criteria, e.g. “{ ‘flag’: True }”.

    • -
    -
    -
    -
    - -
    -
    -process_item(item)[source]
    -

    Implement the analysis for each item of work here.

    -
    -
    Parameters
    -

    item (object) – One item of work from the queue (i.e., one item from the iterator that -was returned by the setup method).

    -
    -
    Returns
    -

    Status code, 0 for OK

    -
    -
    Return type
    -

    int

    -
    -
    -
    - -
    - +
    +

    pymatgen.db.builders.examples.copy_builder module

    -
    -

    pymatgen.db.builders.examples.file_builders module

    -

    Example builders that read or write files.

    -
    -
    -class FileCounter(**kwargs)[source]
    -

    Bases: pymatgen.db.builders.core.Builder

    -

    Count lines and characters in a file.

    -

    Create new builder for threaded or multiprocess execution.

    -
    -
    Parameters
    -

    ncores (int) – Desired number of threads or processes to run

    -
    -
    Raise
    -

    ValueError for bad ‘config’ arg

    -
    -
    -
    -
    -finalize(errors)[source]
    -

    Perform any cleanup actions after all items have been processed. -Subclasses may choose not to implement this, in which case it is a no-op.

    -
    -
    Parameters
    -

    had_errors (bool) – True if the run itself had errors.

    -
    -
    Returns
    -

    True if nothing went wrong, else False

    -
    -
    -
    - -
    -
    -get_items(input_file=None)[source]
    -

    Perform one-time setup at the top of a run, returning -an iterator on items to use as input.

    -

    If get_parameters() doesn’t return None, this method is used to -discover the names and types of this function’s parameters. -Otherwise, the docstring of this function is used. -This docstring must use the ‘:’ version of the restructured -text style. For example:

    -
    class MyBuilder(Builder):
    -    def get_items(self, source=None, target=None):
    -    '''
    -    :param source: The input porous materials collection
    -    :type source: QueryEngine
    -    :param target: The output materials collection
    -    :type target: QueryEngine
    -    '''
    -
    -
    -

    More details on the parameters is in get_items_parameters().

    -
    -
    Returns
    -

    iterator

    -
    -
    -
    - -
    -
    -get_parameters()[source]
    -

    Return key/value pairs that will be passed to get_items().

    -

    This is an alternative to the use of special docstrings as described -in get_items().

    -

    If the type of the argument is ‘QueryEngine’, then the driver program -will add options for, and create, a pymatgen.db.query_engine.QueryEngine -instance. The value given for this argument will be interpreted as -the MongoDB collection name.

    -

    Some other basic Python types – list, dict, int, float – are -automatically parsed. If an empty value is supplied for these, then -None will be passed.

    -
    -
    Returns
    -

    {‘param_name’: {‘type’: ‘param_type’, ‘desc’:’description’}, -‘param2_name’: {‘type’: ‘param2_type’, ‘desc’:’descr2’}, ..}

    -
    -
    Return type
    -

    dict

    -
    -
    -
    - -
    -
    -process_item(item)[source]
    -

    Implement the analysis for each item of work here.

    -
    -
    Parameters
    -

    item (object) – One item of work from the queue (i.e., one item from the iterator that -was returned by the setup method).

    -
    -
    Returns
    -

    Status code, 0 for OK

    -
    -
    Return type
    -

    int

    -
    -
    -
    - -
    - +
    +

    pymatgen.db.builders.examples.file_builders module

    -
    -

    pymatgen.db.builders.examples.maxvalue_builder module

    -

    Build a derived collection with the maximum -value from each ‘group’ defined in the source -collection.

    -
    -
    -class MaxValueBuilder(ncores=1)[source]
    -

    Bases: pymatgen.db.builders.core.Builder

    -

    Example of incremental builder that requires -some custom logic for incremental case.

    -

    Create new builder for threaded or multiprocess execution.

    -
    -
    Parameters
    -

    ncores (int) – Desired number of threads or processes to run

    -
    -
    Raise
    -

    ValueError for bad ‘config’ arg

    -
    -
    -
    -
    -finalize(errs)[source]
    -

    Update target collection with calculated maximum values.

    -
    - -
    -
    -get_items(source=None, target=None)[source]
    -

    Get all records from source collection to add to target.

    -
    -
    Parameters
    -
    -
    -
    -
    - -
    -
    -process_item(item)[source]
    -

    Calculate new maximum value for each group, -for “new” items only.

    -
    - -
    - +
    +

    pymatgen.db.builders.examples.maxvalue_builder module

    -
    -

    Module contents

    -

    Description.

    +
    +

    Module contents

    @@ -294,10 +79,10 @@

    Table of Contents

    @@ -305,12 +90,6 @@

    Table of Contents

    Related Topics

    diff --git a/docs/pymatgen.db.builders.html b/docs/pymatgen.db.builders.html index 9d9f101..d3eb9bc 100644 --- a/docs/pymatgen.db.builders.html +++ b/docs/pymatgen.db.builders.html @@ -6,7 +6,7 @@ - pymatgen.db.builders package — pymatgen-db 2022.3.17 documentation + pymatgen.db.builders package — pymatgen-db 2022.5.2 documentation @@ -16,8 +16,6 @@ - - @@ -40,14 +38,7 @@

    Navigation

  • modules |
  • -
  • - next |
  • -
  • - previous |
  • - - +
    @@ -65,10 +56,10 @@

    Subpackagespymatgen.db.builders.examples package @@ -77,1083 +68,20 @@

    Subpackages

    Submodules

    -
    -

    pymatgen.db.builders.core module

    -

    Shared code for builders.

    -

    For developers implementing a new builder, -you should inherit from Builder.

    -
    -
    -exception BuildError(who, why)[source]
    -

    Bases: Exception

    -
    - -
    -
    -class Builder(ncores=1)[source]
    -

    Bases: object

    -

    Abstract base class for all builders

    -

    To implement a new builder, inherit from this class and -define the get_items() and process_item() methods. -See the online documentation for details.

    -

    Create new builder for threaded or multiprocess execution.

    -
    -
    Parameters
    -

    ncores (int) – Desired number of threads or processes to run

    -
    -
    Raise
    -

    ValueError for bad ‘config’ arg

    -
    -
    -
    -
    -connect(config)[source]
    -

    Connect to database with given configuration, which may be a dict or -a path to a pymatgen-db configuration.

    -
    - -
    -
    -finalize(had_errors)[source]
    -

    Perform any cleanup actions after all items have been processed. -Subclasses may choose not to implement this, in which case it is a no-op.

    -
    -
    Parameters
    -

    had_errors (bool) – True if the run itself had errors.

    -
    -
    Returns
    -

    True if nothing went wrong, else False

    -
    -
    -
    - -
    -
    -abstract get_items()[source]
    -

    Perform one-time setup at the top of a run, returning -an iterator on items to use as input.

    -

    If get_parameters() doesn’t return None, this method is used to -discover the names and types of this function’s parameters. -Otherwise, the docstring of this function is used. -This docstring must use the ‘:’ version of the restructured -text style. For example:

    -
    class MyBuilder(Builder):
    -    def get_items(self, source=None, target=None):
    -    '''
    -    :param source: The input porous materials collection
    -    :type source: QueryEngine
    -    :param target: The output materials collection
    -    :type target: QueryEngine
    -    '''
    -
    -
    -

    More details on the parameters is in get_items_parameters().

    -
    -
    Returns
    -

    iterator

    -
    -
    -
    - -
    -
    -get_parameters()[source]
    -

    Return key/value pairs that will be passed to get_items().

    -

    This is an alternative to the use of special docstrings as described -in get_items().

    -

    If the type of the argument is ‘QueryEngine’, then the driver program -will add options for, and create, a pymatgen.db.query_engine.QueryEngine -instance. The value given for this argument will be interpreted as -the MongoDB collection name.

    -

    Some other basic Python types – list, dict, int, float – are -automatically parsed. If an empty value is supplied for these, then -None will be passed.

    -
    -
    Returns
    -

    {‘param_name’: {‘type’: ‘param_type’, ‘desc’:’description’}, -‘param2_name’: {‘type’: ‘param2_type’, ‘desc’:’descr2’}, ..}

    -
    -
    Return type
    -

    dict

    -
    -
    -
    - -
    -
    -abstract process_item(item)[source]
    -

    Implement the analysis for each item of work here.

    -
    -
    Parameters
    -

    item (object) – One item of work from the queue (i.e., one item from the iterator that -was returned by the setup method).

    -
    -
    Returns
    -

    Status code, 0 for OK

    -
    -
    Return type
    -

    int

    -
    -
    -
    - -
    -
    -run(user_kw=None, build_kw=None)[source]
    -

    Run the builder.

    -
    -
    Parameters
    -
      -
    • user_kw (dict) – keywords from user

    • -
    • build_kw (dict) – internal settings

    • -
    -
    -
    Returns
    -

    Number of items processed

    -
    -
    Return type
    -

    int

    -
    -
    -
    - -
    -
    -shared_dict()[source]
    -

    Get dict that can be shared between parallel processes.

    -
    - -
    -
    -shared_list()[source]
    -

    Get list that can be shared between parallel processes.

    -
    - -
    - -
    -
    -class BuilderStatus(num, builder)[source]
    -

    Bases: object

    -

    Status of a Builder object run.

    -
    -
    -FAILURE = -1
    -
    - -
    -
    -RUNNING = 1
    -
    - -
    -
    -SUCCESS = 2
    -
    - -
    -
    -WAIT = 0
    -
    - -
    -
    -fail(i)[source]
    -

    Set state of a single process or thread to ‘failure’.

    -
    -
    Parameters
    -

    i – Index of process or thread.

    -
    -
    Returns
    -

    None

    -
    -
    -
    - -
    -
    -has_failures()[source]
    -

    Whether there are any failures in the states.

    -
    - -
    -
    -running(i)[source]
    -

    Set state of a single process or thread to ‘running’.

    -
    -
    Parameters
    -

    i – Index of process or thread.

    -
    -
    Returns
    -

    None

    -
    -
    -
    - -
    -
    -success(i)[source]
    -

    Set state of a single process or thread to ‘success’.

    -
    -
    Parameters
    -

    i – Index of process or thread.

    -
    -
    Returns
    -

    None

    -
    -
    -
    - -
    - -
    -
    -class Collections(db, version=1, prefix=None, task_suffix=None)[source]
    -

    Bases: object

    -

    Interface to normalized names for collections.

    -

    After initialization with a MongoDB database and optional parameters, -you can access collections in known_collections as attributes.

    -

    Set collections from database.

    -
    -
    Parameters
    -
      -
    • db (dict-like object) – MongoDB database, but really anything that acts like a dict. If None, it will be ignored.

    • -
    • version (int) – Version of naming scheme for the collections

    • -
    • prefix (str) – Prefix string to put before collection names, e.g. “dahn”. Full -collection name will be <prefix>.<name>; don’t include ‘.’ in the input.

    • -
    • task_suffix (str) – Add this suffix to the tasks collection. Used for merged collections for sandboxes.

    • -
    -
    -
    Raise
    -

    ValueError if version is not known

    -
    -
    -
    -
    -MAX_VER = 1
    -
    - -
    -
    -MIN_VER = 1
    -
    - -
    -
    -property database
    -

    Return the current database object.

    -
    -
    Returns
    -

    Current database object

    -
    -
    -
    - -
    -
    -get_collection_name(alias)[source]
    -
    - -
    -
    -known_collections = ['tasks', 'materials', 'diffraction_patterns', 'electrodes', 'conversion_electrodes', 'bandstructures', 'icsd', 'phase_diagrams', 'brototypes', 'electronic_structure']
    -

    Collection names that are accessible as attributes -of an instance of this class

    -
    - -
    - -
    -
    -class HasExamples[source]
    -

    Bases: object

    -

    Mix-in class for checking the output of a builder.

    -

    This is a way to get some static checking of the schema of inserted documents, -without imposing the burden of schema-checking every single document. -The check is static in the sense that it will only be run by the unit tests.

    -
    -

    See the

    -
    -

    pymatpro.db.builders.test.test_porous_builder module for an example of -how to use this to perform unit tests.

    -
    -
    -examples()[source]
    -

    Return example document(s) for collection(s).

    -

    This must be implemented in subclasses.

    -
    -
    Returns
    -

    List of pairs (doc, collection_name)

    -
    -
    Return type
    -

    list(dict,str)

    -
    -
    -
    - -
    -
    -validate_examples(fail_fn)[source]
    -

    Check the examples against the schema.

    -
    -
    Parameters
    -

    fail_fn (function(str)) – Pass failure messages to this function

    -
    -
    -
    - -
    - -
    -
    -class ProcRunner[source]
    -

    Bases: object

    -

    This is a work-around to the limitation of multiprocessing that the -function executed in the new module cannot be a method of a class. -We simply set the instance (self) into the class before forking each -process, and the class’ method calls the instance method for us.

    -
    -
    -instance = None
    -
    - -
    -
    -classmethod run(index)[source]
    -
    - -
    - -
    -
    -alphadump(d, indent=2, depth=0)[source]
    -

    Dump a dict to a str, -with keys in alphabetical order.

    -
    - -
    -
    -merge_tasks(core_collections, sandbox_collections, id_prefix, new_tasks, batch_size=100, wipe=False)[source]
    -

    Merge core and sandbox collections into a temporary collection in the sandbox.

    -
    -
    Parameters
    -
      -
    • core_collections (Collections) – Core collection info

    • -
    • sandbox_collections (Collections) – Sandbox collection info

    • -
    -
    -
    -
    - -
    -
    -parse_fn_docstring(fn)[source]
    -

    Get parameter and return types from function’s docstring.

    -

    Docstrings must use this format:

    -
    :param foo: What is foo
    -:type foo: int
    -:return: What is returned
    -:rtype: double
    -
    -
    -
    -
    Returns
    -

    A map of names, each with keys ‘type’ and ‘desc’.

    -
    -
    Return type
    -

    tuple(dict)

    -
    -
    -
    - +
    +

    pymatgen.db.builders.core module

    -
    -

    pymatgen.db.builders.incr module

    -

    Incremental builders.

    -

    ## High-level API ##

    -

    The main class is TrackedQueryEngine. Usage example:

    -
    from pymatgen.db.builders.incr import *
    -qe = TrackedQueryEngine(track_operation=Operation.copy,
    -                        track_field='_id', ...other kw...)
    -# That's it! Use as you normally would.
    -# The collection 'inside' the qe will be tracked, so
    -# when you are done using the QE instance, you can call either
    -qe.set_mark()
    -# or
    -qe.collection.set_mark()
    -# Just be sure not to set the `qe.collection` attribute directly,
    -# always use `qe.collection_name = "new_name" (which calls a setter)`.
    -
    -
    -

    ## Low-level API ##

    -

    The main classes are Mark and CollectionTracker. Usage example:

    -
    from pymatgen.db.builders.incr import *
    -collection = pymongo.MongoClient().mydb.mycollection
    -# Init tracker
    -tracker = CollectionTracker(collection)
    -# Save mark for copy operation
    -tracker.save(Mark(collection, Operation.copy, field='_id'))
    -# Retrieve mark for copy operation
    -mark = tracker.retrieve(Operation.copy, field='_id')
    -# Update mark position, and print mark
    -print(mark.update().as_dict())
    -
    -
    -
    -
    -class CollectionTracker(coll, create=True)[source]
    -

    Bases: object

    -

    Track which records are ‘new’ in a MongoDB collection -with respect to a given operation.

    -

    Constructor.

    -
    -
    Parameters
    -
      -
    • coll (pymongo.collection.Collection) – Collection to track

    • -
    • create (bool) – Create tracking collection, if not present. Otherwise the tracking -collection can be manually created with create(), later. -If the collection is not created, save() and retrieve() will -raise a NoTrackingCollection exception.

    • -
    -
    -
    -
    -
    -TRACKING_NAME = 'tracker'
    -

    Sub-collection name, added as “.<TRACKING_NAME>” to the -name of the target collection to create the tracking collection.

    -
    - -
    -
    -create()[source]
    -

    Create tracking collection. -Does nothing if tracking collection already exists.

    -
    - -
    -
    -retrieve(operation, field=None)[source]
    -

    Retrieve a position in this collection.

    -
    -
    Parameters
    -
      -
    • operation (Operation) – Name of an operation

    • -
    • field (str) – Name of field for sort order

    • -
    -
    -
    Returns
    -

    The position for this operation

    -
    -
    Return type
    -

    Mark

    -
    -
    Raises
    -

    NoTrackingCollection

    -
    -
    -
    - -
    -
    -save(mark)[source]
    -

    Save a position in this collection.

    -
    -
    Parameters
    -

    mark (Mark) – The position to save

    -
    -
    Raises
    -

    DBError, NoTrackingCollection

    -
    -
    -
    - -
    -
    -property tracking_collection
    -

    Return current tracking collection, or None if it does not exist.

    -
    - -
    -
    -property tracking_collection_name
    -
    - -
    - -
    -
    -exception DBError[source]
    -

    Bases: Exception

    -

    Generic database error.

    -
    - -
    -
    -class Mark(collection=None, operation=None, field=None, pos=None)[source]
    -

    Bases: object

    -

    The position in a collection for the last record that was -processed by a given operation.

    -

    Constructor.

    -
    -
    Parameters
    -
      -
    • collection (pymongo.collection.Collection) – Collection to track

    • -
    • operation (Operation) – Operation for this mark.

    • -
    • field (str) – Name of field to determine highest record

    • -
    • pos (dict) – Optional query for position

    • -
    -
    -
    -
    -
    -FLD_FLD = 'field'
    -
    - -
    -
    -FLD_MARK = 'mark'
    -
    - -
    -
    -FLD_OP = 'operation'
    -
    - -
    -
    -as_dict()[source]
    -

    Representation as a dict for JSON serialization.

    -
    - -
    -
    -classmethod from_dict(coll, d)[source]
    -

    Construct from dict

    -
    -
    Parameters
    -
      -
    • coll – Collection for the mark

    • -
    • d (dict) – Input

    • -
    -
    -
    Returns
    -

    new instance

    -
    -
    Return type
    -

    Mark

    -
    -
    -
    - -
    -
    -property pos
    -
    - -
    -
    -property query
    -

    A mongdb query expression to find all records with higher values -for this mark’s fields in the collection.

    -
    -
    Return type
    -

    dict

    -
    -
    -
    - -
    -
    -to_dict()
    -

    Representation as a dict for JSON serialization.

    -
    - -
    -
    -update()[source]
    -

    Update the position of the mark in the collection.

    -
    -
    Returns
    -

    this object, for chaining

    -
    -
    Return type
    -

    Mark

    -
    -
    -
    - -
    - -
    -
    -exception NoTrackingCollection[source]
    -

    Bases: Exception

    -

    Raised if no tracking collection is present, -but some operation is requested on that collection.

    -
    - -
    -
    -class Operation(value)[source]
    -

    Bases: enum.Enum

    -

    Enumeration of collection operations.

    -
    -
    -build = 2
    -
    - -
    -
    -copy = 1
    -
    - -
    -
    -other = 99
    -
    - -
    - -
    -
    -class TrackedCollection(coll, operation=None, field=None)[source]
    -

    Bases: object

    -

    Wrapper on a pymongo collection to make `find’ operations start -after the “tracking” mark.

    -
    -
    -findall(*args, **kwargs)[source]
    -

    Call non-tracked find() operation with same args.

    -
    - -
    -
    -set_mark()[source]
    -
    - -
    -
    -set_tracking(is_tracked)[source]
    -

    Set whether find() transparently starts from after the -mark (True), or whether it ignores the tracking info and acts like -a normal find() operation (False).

    -
    -
    Parameters
    -

    is_tracked – Whether to use tracking info

    -
    -
    Returns
    -

    -
    -
    -
    - -
    -
    -tracked_find(*args, **kwargs)[source]
    -

    Replacement for regular find().

    -
    - -
    - -
    -
    -class TrackedQueryEngine(track_operation=None, track_field=None, **kwargs)[source]
    -

    Bases: pymatgen.db.query_engine.QueryEngine, pymatgen.db.builders.incr.TrackingInterface

    -

    A QueryEngine subclass that only examines records -past the last ‘mark’ that was set for the -given operation and field.

    -

    The concrete result is that for an object, t, the -t.find() method will start past the “mark”.

    -

    To go around this transparent change, use the t.findall -instead.

    -

    Constructor.

    -
    -
    -property collection_name
    -

    Override base class to make this a tracked collection. -See @collection_name.setter()

    -
    - -
    -
    -set_mark()[source]
    -

    See TrackingInterface.set_mark()

    -
    - -
    -
    -property tracking
    -

    Whether tracking is really enabled.

    -
    - -
    - -
    -
    -class TrackingInterface[source]
    -

    Bases: object

    -
    -
    -abstract set_mark()[source]
    -

    Set the mark to the current end of the collection. This is saved in the database -so it is available for later operations.

    -
    - -
    - -
    -
    -class UnTrackedQueryEngine(host='127.0.0.1', port=27017, database='vasp', user=None, password=None, collection='tasks', aliases_config=None, default_properties=None, query_post=None, result_post=None, connection=None, replicaset=None, **ignore)[source]
    -

    Bases: pymatgen.db.query_engine.QueryEngine, pymatgen.db.builders.incr.TrackingInterface

    -

    A QE that has the interface for tracking, but does nothing for it. -Allows for callers to do same operations regardless of whether tracking is -activated or not.

    -

    Constructor.

    -
    -
    Parameters
    -
      -
    • host (str) – Hostname of database machine.

    • -
    • port (int) – Port for db access.

    • -
    • database (str) – Name of database to access.

    • -
    • user (str) – User for db access. None means no authentication.

    • -
    • password (str) – Password for db access. None means no auth.

    • -
    • collection (str) – Collection to query. Defaults to “tasks”.

    • -
    • connection (pymongo.Connection) – If given, ignore ‘host’ and ‘port’ -and use existing connection.

    • -
    • aliases_config (dict) –

      An alias dict to use. Defaults to None, which means the default -aliases defined in “aliases.json” is used. The aliases config -should be of the following format:

      -
      {
      -    "aliases": {
      -        "e_above_hull": "analysis.e_above_hull",
      -        "energy": "output.final_energy",
      -        ....
      -    },
      -    "defaults": {
      -        "state": "successful"
      -    }
      -}
      -
      -
      -
      -
      aliases (dict): Keys are the incoming property, values are the

      property it will be translated to. This makes it easier -to organize the doc format in a way that is different from the -query format.

      -
      -
      defaults (dict): Criteria that should be applied

      by default to all queries. For example, a collection may -contain data from both successful and unsuccessful runs but -for most querying purposes, you may want just successful runs -only. Note that defaults do not affect explicitly specified -criteria, i.e., if you suppy a query for {“state”: “killed”}, -this will override the default for {“state”: “successful”}.

      -
      -
      -

    • -
    • default_properties (list) – Property names (strings) to use by -default, if no properties are given to query().

    • -
    • query_post (list) – Functions to post-process the criteria passed -to query(), after aliases are resolved. -Function takes two args, the criteria dict and list of -result properties. Both may be modified in-place.

    • -
    • result_post (list) – Functions to post-process the cursor records. -Function takes one arg, the document for the current record, -that is modified in-place.

    • -
    -
    -
    -
    -
    -set_mark()[source]
    -

    Does nothing and returns None.

    -
    - -
    - +
    +

    pymatgen.db.builders.incr module

    -
    -

    pymatgen.db.builders.schema module

    -

    Utility module for schema validation, for builder testing

    -
    -
    -class HasMeta(meta)[source]
    -

    Bases: object

    -

    Mix-in class to handle metadata. -Adds the ‘meta’ class attribute.

    -

    Create with new metadata (which may be empty). -The metadata should be dict-like (i.e. __getitem__ and __setitem__) or -be a string in the format “name1: value1, name2: value2, …”, where the -white space is optional.

    -
    -
    Parameters
    -

    meta (str or dict) – Init with this metadata.

    -
    -
    -
    -
    -FIELD_SEP = ','
    -
    - -
    -
    -KV_SEP = ':'
    -
    - -
    -
    -add_meta(key, value)[source]
    -
    - -
    - -
    -
    -class Scalar(typecode, optional=False, meta='')[source]
    -

    Bases: pymatgen.db.builders.schema.HasMeta

    -

    Create with new metadata (which may be empty). -The metadata should be dict-like (i.e. __getitem__ and __setitem__) or -be a string in the format “name1: value1, name2: value2, …”, where the -white space is optional.

    -
    -
    Parameters
    -

    meta (str or dict) – Init with this metadata.

    -
    -
    -
    -
    -JSTYPES = {'bool': 'boolean', 'date': 'string', 'datetime': 'string', 'float': 'number', 'int': 'integer', 'null': 'null', 'string': 'string'}
    -
    - -
    -
    -TYPES = {'array': <function Scalar.<lambda>>, 'bool': <function Scalar.<lambda>>, 'date': <function _is_datetime>, 'datetime': <function _is_datetime>, 'float': <function Scalar.<lambda>>, 'int': <function Scalar.<lambda>>, 'null': <function Scalar.<lambda>>, 'object': <function Scalar.<lambda>>, 'string': <function Scalar.<lambda>>}
    -
    - -
    -
    -property jstype
    -

    Return JavaScript type.

    -
    - -
    - -
    -
    -class Schema(schema, optional=False, meta='')[source]
    -

    Bases: pymatgen.db.builders.schema.HasMeta

    -

    Create with new metadata (which may be empty). -The metadata should be dict-like (i.e. __getitem__ and __setitem__) or -be a string in the format “name1: value1, name2: value2, …”, where the -white space is optional.

    -
    -
    Parameters
    -

    meta (str or dict) – Init with this metadata.

    -
    -
    -
    -
    -IS_DICT = 1
    -
    - -
    -
    -IS_LIST = 0
    -
    - -
    -
    -IS_SCALAR = 2
    -
    - -
    -
    -json_schema(**add_keys)[source]
    -

    Convert our compact schema representation to the standard, but more verbose, -JSON Schema standard.

    -

    Example JSON schema: http://json-schema.org/examples.html -Core standard: http://json-schema.org/latest/json-schema-core.html

    -
    -
    Parameters
    -

    add_keys – Key, default value pairs to add in, -e.g. description=””

    -
    -
    -
    - -
    -
    -validate(doc, path='(root)')[source]
    -
    - -
    - -
    -
    -exception SchemaError[source]
    -

    Bases: Exception

    -

    Base class of all errors raised by schema creation or validation.

    -
    - -
    -
    -exception SchemaParseError[source]
    -

    Bases: pymatgen.db.builders.schema.SchemaError

    -
    - -
    -
    -exception SchemaPathError[source]
    -

    Bases: pymatgen.db.builders.schema.SchemaError

    -
    - -
    -
    -exception SchemaTypeError(typename)[source]
    -

    Bases: pymatgen.db.builders.schema.SchemaError

    -
    - -
    -
    -add_schemas(path, ext='json')[source]
    -

    Add schemas from files in ‘path’.

    -
    -
    Parameters
    -
      -
    • path (str) – Path with schema files. Schemas are named by their file, -with the extension stripped. e.g., if path is “/tmp/foo”, -then the schema in “/tmp/foo/bar.json” will be named “bar”.

    • -
    • ext (str) – File extension that identifies schema files

    • -
    -
    -
    Returns
    -

    None

    -
    -
    Raise
    -

    SchemaPathError, if no such path. SchemaParseError, if a schema -is not valid JSON.

    -
    -
    -
    - -
    -
    -get_schema(name)[source]
    -

    Get schema by name

    -
    -
    Parameters
    -

    name (str) – name of schema

    -
    -
    Returns
    -

    new schema

    -
    -
    Return type
    -

    Schema

    -
    -
    Raise
    -

    KeyError, if schema is not found

    -
    -
    -
    - -
    -
    -load_schema(file_or_fp)[source]
    -

    Load schema from file.

    -
    -
    Parameters
    -

    file_or_fp (str, file) – File name or file object

    -
    -
    Raise
    -

    IOError if file cannot be opened or read, ValueError if -file is not valid JSON or JSON is not a valid schema.

    -
    -
    -
    - +
    +

    pymatgen.db.builders.schema module

    -
    -

    pymatgen.db.builders.util module

    -

    Common utility functions for the database functions

    -
    -
    -get_builder_log(name)[source]
    -

    Get a logging object, in the right place in the -hierarchy, for a given builder.

    -
    -
    Parameters
    -

    name (str) – Builder name, e.g. ‘my_builder’

    -
    -
    Returns
    -

    New logger

    -
    -
    Return type
    -

    logging.Logger

    -
    -
    -
    - -
    -
    -get_schema_dir(db_version=1)[source]
    -

    Get path to directory with schemata.

    -
    -
    Parameters
    -

    db_version (int) – Version of the database

    -
    -
    Returns
    -

    Path

    -
    -
    Return type
    -

    str

    -
    -
    -
    - -
    -
    -get_schema_file(db_version=1, db='mg_core', collection='materials')[source]
    -

    Get file with appropriate schema.

    -
    -
    Parameters
    -
      -
    • db_version (int) – Version of the database

    • -
    • db (str) – Name of database, e.g. ‘mg_core’

    • -
    • collection (str) – Name of collection, e.g. ‘materials’

    • -
    -
    -
    Returns
    -

    File with schema

    -
    -
    Return type
    -

    file

    -
    -
    Raise
    -

    IOError, if file is not found or not accessible

    -
    -
    -
    - -
    -
    -get_test_dir(name=None)[source]
    -

    Get path to subdirectory with test files related -to a given class.

    -
    -
    Parameters
    -

    name – Name of class

    -
    -
    Returns
    -

    Path

    -
    -
    Return type
    -

    str

    -
    -
    -
    - +
    +

    pymatgen.db.builders.util module

    -
    -

    Module contents

    +
    +

    Module contents

    @@ -1170,11 +98,11 @@

    Table of Contents

  • pymatgen.db.builders package
  • @@ -1182,10 +110,6 @@

    Table of Contents

    Related Topics

    diff --git a/docs/pymatgen.db.html b/docs/pymatgen.db.html index 9af1399..b8449ee 100644 --- a/docs/pymatgen.db.html +++ b/docs/pymatgen.db.html @@ -6,7 +6,7 @@ - pymatgen.db package — pymatgen-db 2022.3.17 documentation + pymatgen.db package — pymatgen-db 2022.5.2 documentation @@ -46,7 +46,7 @@

    Navigation

  • previous |
  • - +
    @@ -71,43 +71,148 @@

    SubpackagesModule contents -
  • pymatgen.db.builders package -
  • -
  • pymatgen.db.vv package -
  • Submodules

    +
    +
    +

    pymatgen.db.config module

    +

    Database configuration functions. +Main class is DBConfig, which encapsulates a database configuration +passed in as a file or object. For example:

    +
    cfg1 = DBConfig()  # use defaults
    +cfg2 = DBConfig("/path/to/myfile.json")  # read from file
    +f = open("/other/file.json")
    +cfg3 = DBConfig(f)  # read from file object
    +# access dict of parsed conf. settings
    +settings = cfg1.settings
    +
    +
    +
    +
    +exception ConfigurationFileError(filename, err)[source]
    +

    Bases: Exception

    +

    Error for Config File

    +

    Init for ConfigurationFileError.

    +
    + +
    +
    +class DBConfig(config_file=None, config_dict=None)[source]
    +

    Bases: object

    +

    Database configuration.

    +

    Constructor. +Settings are created from config_dict, if given, +or parsed config_file, if given, otherwise +the DEFAULT_FILE is tried and if that is not present +the DEFAULT_SETTINGS are used without modification. +:param config_file: Read configuration from this file. +:type config_file: file or str path +:param config_dict: Set configuration from this dictionary. +:raises: ConfigurationFileError if cannot read/parse config_file

    +
    +
    +ALL_SETTINGS = ['host', 'port', 'database', 'collection', 'aliases']
    +
    + +
    +
    +DEFAULT_FILE = 'db.json'
    +
    + +
    +
    +DEFAULT_PORT = 27017
    +
    + +
    +
    +DEFAULT_SETTINGS = [('host', 'localhost'), ('port', 27017), ('database', 'vasp'), ('aliases', {})]
    +
    + +
    +
    +property collection
    +

    Return collection.

    +
    + +
    +
    +copy()[source]
    +

    Return a copy of self (internal settings are copied).

    +
    + +
    +
    +property dbname
    +

    Name of the database.

    +
    + +
    +
    +property host
    +

    Return host

    +
    + +
    +
    +property password
    +

    Return password.

    +
    + +
    +
    +property port
    +

    Return port.

    +
    + +
    +
    +property settings
    +

    Return settings

    +
    + +
    +
    +property user
    +

    Return user.

    +
    + +
    + +
    +
    +auth_aliases(d)[source]
    +

    Interpret user/password aliases.

    +
    + +
    +
    +get_settings(infile)[source]
    +

    Read settings from input file. +:param infile: Input file for JSON settings. +:type infile: file or str path +:return: Settings parsed from file +:rtype: dict

    +
    + +
    +
    +normalize_auth(settings, admin=True, readonly=True, readonly_first=False)[source]
    +

    Transform the readonly/admin user and password to simple user/password, +as expected by QueryEngine. If return value is true, then +admin or readonly password will be in keys “user” and “password”. +:param settings: Connection settings +:type settings: dict +:param admin: Check for admin password +:param readonly: Check for readonly password +:param readonly_first: Check for readonly password before admin +:return: Whether user/password were found +:rtype: bool

    +
    +

    pymatgen.db.creator module

    @@ -188,7 +293,7 @@

    Submodules
    as_dict()[source]
    -

    A JSON serializable dict representation of an object.

    +

    Dict representation.

    @@ -207,24 +312,19 @@

    Submodules
    calculate_stability(d)[source]
    -

    +

    Calculate the stability (e_above_hull and decomposes_to) for a entry dict.

    +
    convert(d)[source]
    -
    +

    Just return the dict.

    +
    classmethod from_dict(d)[source]
    -
    -
    Parameters
    -

    d – Dict representation.

    -
    -
    Returns
    -

    MSONable class.

    -
    -
    +

    From dict

    @@ -302,7 +402,8 @@

    Submodules
    get_basic_analysis_and_error_checks(d, max_force_threshold=0.5, volume_change_threshold=0.2)[source]
    -

    +

    Generate basic analysis and error checks data for a run.

    +
    @@ -341,349 +442,6 @@

    Submodules -

    pymatgen.db.dbconfig module

    -

    Database configuration functions.

    -

    Main class is DBConfig, which encapsulates a database configuration -passed in as a file or object. For example:

    -
    cfg1 = DBConfig()  # use defaults
    -cfg2 = DBConfig("/path/to/myfile.json")  # read from file
    -f = open("/other/file.json")
    -cfg3 = DBConfig(f)  # read from file object
    -# access dict of parsed conf. settings
    -settings = cfg1.settings
    -
    -
    -
    -
    -exception ConfigurationFileError(filename, err)[source]
    -

    Bases: Exception

    -
    - -
    -
    -class DBConfig(config_file=None, config_dict=None)[source]
    -

    Bases: object

    -

    Database configuration.

    -

    Constructor.

    -

    Settings are created from config_dict, if given, -or parsed config_file, if given, otherwise -the DEFAULT_FILE is tried and if that is not present -the DEFAULT_SETTINGS are used without modification.

    -
    -
    Parameters
    -
      -
    • config_file (file or str path) – Read configuration from this file.

    • -
    • config_dict – Set configuration from this dictionary.

    • -
    -
    -
    Raises
    -

    ConfigurationFileError if cannot read/parse config_file

    -
    -
    -
    -
    -ALL_SETTINGS = ['host', 'port', 'database', 'collection', 'aliases']
    -
    - -
    -
    -DEFAULT_FILE = 'db.json'
    -
    - -
    -
    -DEFAULT_PORT = 27017
    -
    - -
    -
    -DEFAULT_SETTINGS = [('host', 'localhost'), ('port', 27017), ('database', 'vasp'), ('aliases', {})]
    -
    - -
    -
    -property collection
    -
    - -
    -
    -copy()[source]
    -

    Return a copy of self (internal settings are copied).

    -
    - -
    -
    -property dbname
    -

    Name of the database.

    -
    - -
    -
    -property host
    -
    - -
    -
    -property password
    -
    - -
    -
    -property port
    -
    - -
    -
    -property settings
    -
    - -
    -
    -property user
    -
    - -
    - -
    -
    -auth_aliases(d)[source]
    -

    Interpret user/password aliases.

    -
    - -
    -
    -get_settings(infile)[source]
    -

    Read settings from input file.

    -
    -
    Parameters
    -

    infile (file or str path) – Input file for JSON settings.

    -
    -
    Returns
    -

    Settings parsed from file

    -
    -
    Return type
    -

    dict

    -
    -
    -
    - -
    -
    -normalize_auth(settings, admin=True, readonly=True, readonly_first=False)[source]
    -

    Transform the readonly/admin user and password to simple user/password, -as expected by QueryEngine. If return value is true, then -admin or readonly password will be in keys “user” and “password”.

    -
    -
    Parameters
    -
      -
    • settings (dict) – Connection settings

    • -
    • admin – Check for admin password

    • -
    • readonly – Check for readonly password

    • -
    • readonly_first – Check for readonly password before admin

    • -
    -
    -
    Returns
    -

    Whether user/password were found

    -
    -
    Return type
    -

    bool

    -
    -
    -
    - -

    -
    -

    pymatgen.db.dbgroup module

    -

    Create and access groups of databases, -each configured from different settings.

    -
    -
    -class ConfigGroup(qe_class=<class 'pymatgen.db.query_engine.QueryEngine'>)[source]
    -

    Bases: object

    -

    Convenient storage and access to a group -of database configurations.

    -

    Will automatically instantiate these configurations, -as query engines, on-demand.

    -
    -
    -SEP = '.'
    -
    - -
    -
    -add(name, cfg, expand=False)[source]
    -

    Add a configuration object.

    -
    -
    Parameters
    -
      -
    • name – Name for later retrieval

    • -
    • cfg – Configuration object

    • -
    • expand – Flag for adding sub-configs for each sub-collection. -See discussion in method doc.

    • -
    -
    -
    Returns
    -

    self, for chaining

    -
    -
    Raises
    -

    CreateQueryEngineError (only if expand=True)

    -
    -
    -
    - -
    -
    -add_path(path, pattern='*.json')[source]
    -

    Add configuration file(s) -in path. The path can be a single file or a directory. -If path is a directory, then pattern -(Unix glob-style) will be used to get a list of all config -files in the directory.

    -

    The name given to each file is the database name -and collection name (if any) combined with a ‘.’.

    -
    -
    Parameters
    -

    path – File or directory name

    -
    -
    Returns
    -

    self, for chaining

    -
    -
    -
    - -
    -
    -expand(name)[source]
    -

    Expand config for name by adding a sub-configuration for every -dot-separated collection “below” the given one (or all, if none given).

    -
    -
    For example, for a database ‘mydb’ with collections

    [‘spiderman.amazing’, ‘spiderman.spectacular’, ‘spiderman2’]

    -
    -
    and a configuration

    {‘host’:’foo’, ‘database’:’mydb’, ‘collection’:’spiderman’}

    -
    -
    -

    then expand(“mydb.spiderman”) would add keys for ‘spiderman.amazing’ -and ‘spiderman.spectacular’, but not ‘spiderman2’.

    -
    -
    Parameters
    -

    name (basestring) – Name, or glob-style pattern, for DB configurations.

    -
    -
    Returns
    -

    None

    -
    -
    Raises
    -

    KeyError (if no such configuration)

    -
    -
    -
    - -
    -
    -keys()[source]
    -
    - -
    -
    -set_prefix(prefix=None)[source]
    -

    Set prefix to use as a namespace for item lookup. -A dot (.) will be automatically added to the given string.

    -
    -
    Parameters
    -

    prefix – Prefix, or None to unset

    -
    -
    Returns
    -

    None

    -
    -
    -
    - -
    -
    -uncache(name)[source]
    -

    Remove all created query engines that match name from -the cache (this disconnects from MongoDB, which is the point).

    -
    -
    Parameters
    -

    name – Name used for add(), or pattern

    -
    -
    Returns
    -

    None

    -
    -
    -
    - -
    - -
    -
    -exception CreateQueryEngineError(cls, settings, err)[source]
    -

    Bases: Exception

    -
    - -
    -
    -class RegexDict[source]
    -

    Bases: dict

    -

    Extend standard dict to include -a function that finds values based on a -regular expression for the key. For example:

    -
    -

    d = RegexDict(tweedledee=1, tweedledum=2)

    -
    -
    -
    -re_get(pattern)[source]
    -

    Return values whose key matches pattern

    -
    -
    Parameters
    -

    pattern – Regular expression

    -
    -
    Returns
    -

    Found values, as a dict.

    -
    -
    -
    - -
    -
    -re_keys(pattern)[source]
    -

    Find keys matching pattern.

    -
    -
    Parameters
    -

    pattern – Regular expression

    -
    -
    Returns
    -

    Matching keys or empty list

    -
    -
    Return type
    -

    list

    -
    -
    -
    - -
    - -
    -
    -create_query_engine(config, clazz)[source]
    -

    Create and return new query engine object from the -given DBConfig object.

    -
    -
    Parameters
    -
      -
    • config (dbconfig.DBConfig) – Database configuration

    • -
    • clazz (class) – Class to use for creating query engine. Should -act like query_engine.QueryEngine.

    • -
    -
    -
    Returns
    -

    New query engine

    -
    -
    -
    -

    pymatgen.db.query_engine module

    @@ -811,7 +569,8 @@

    Submodules
    property collection_name
    -
    +

    Returns collection name.

    +
    @@ -1010,20 +769,6 @@

    Submodules -
    -set_collection(collection)[source]
    -

    To Be Deprecated: this should be replaced with the @property collection_name

    -

    Switch to another collection. Note that you may have to set the -aliases and default properties via set_aliases_and_defaults if the -schema of the new collection differs from the current collection.

    -
    -
    Parameters
    -

    collection – Name of collection.

    -
    -
    -

    -
    @@ -1052,7 +797,8 @@

    Submodules
    clone()[source]
    -

    +

    Return a clone of the QueryListResults.

    +
    @@ -1080,7 +826,8 @@

    Submodules
    clone()[source]
    -
    +

    Provide a clone of the QueryResults.

    +
    @@ -1098,6 +845,7 @@

    Submodules class MongoJSONEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)[source]

    Bases: json.encoder.JSONEncoder

    +

    JSON encoder to support ObjectIDs and datetime used in Mongo.

    Constructor for JSONEncoder, with sensible defaults.

    If skipkeys is false, then it is a TypeError to attempt encoding of keys that are not str, int, float or None. If @@ -1107,7 +855,7 @@

    Submodules
    default(o)[source]
    -

    Implement this method in a subclass such that it returns -a serializable object for o, or calls the base implementation -(to raise a TypeError).

    -

    For example, to support arbitrary iterators, you could -implement default like this:

    -
    def default(self, o):
    -    try:
    -        iterable = iter(o)
    -    except TypeError:
    -        pass
    -    else:
    -        return list(iterable)
    -    # Let the base class default method raise the TypeError
    -    return JSONEncoder.default(self, o)
    -
    -
    +

    Override default to support ObjectID and datetime.

    @@ -1154,55 +887,32 @@

    Submodules collection_keys(coll, sep='.')[source]

    Get a list of all (including nested) keys in a collection. -Examines the first document in the collection.

    -
    -
    Parameters
    -

    sep – Separator for nested keys

    -
    -
    Returns
    -

    List of str

    -
    -
    -
    - -
    -
    -csv_dict(d)[source]
    -

    Format dict to a string with comma-separated values.

    -
    - -
    -
    -csv_list(l)[source]
    -

    Format list to a string with comma-separated values.

    +Examines the first document in the collection. +:param sep: Separator for nested keys +:return: List of str

    get_collection(config_file, admin=False, settings=None)[source]
    -
    +

    Get a collection from a config file. +:param config_file Path to filename +:param admin Whether to use admin credentials. Default to False. +:param settings Whether to override settings or obtain from config file (None).

    +
    get_database(config_file=None, settings=None, admin=False, **kwargs)[source]
    -
    +

    Get a database object from a config file.

    +
    get_settings(config_file)[source]
    -
    - -
    -
    -kvp_dict(d)[source]
    -

    Format dict to key=value pairs.

    +

    Get settings from file.

    -
    -
    -quotable(v)[source]
    -
    -

    Module contents

    @@ -1228,9 +938,8 @@

    Table of Contents

  • pymatgen.db package
  • @@ -63,1275 +58,20 @@

    Subpackages

    Submodules

    -
    -

    pymatgen.db.vv.diff module

    -

    Diff collections, as sets

    -
    -
    -class Delta(s)[source]
    -

    Bases: object

    -

    Delta between two properties.

    -
    -
    Syntax:

    +- Change in sign, 0 not included -+-= Change in sign, + to 0 or - to 0 included -+-X abs(new - old) > X -+X-Y (new - old) > X or (old - new) > Y -+-X= abs(new - old) >= X -+X-Y= (new - old) >= X or (old - new) >= Y -+X[=] Just look in ‘+’ direction --Y[=] Just look in ‘-’ direction -…% Instead of (v2 - v1), use 100*(v2 - v1)/v1

    -
    -
    -

    Constructor.

    -
    -
    Parameters
    -

    s (str) – Expression string

    -
    -
    Raises
    -

    ValueError if it doesn’t match the syntax

    -
    -
    -
    -
    -as_json()[source]
    -
    - -
    -
    -cmp(old, new)[source]
    -

    Compare numeric values with delta expression.

    -

    Returns True if delta matches (is as large or larger than) this class’ expression.

    -

    Delta is computed as (new - old).

    -
    -
    Parameters
    -
      -
    • old (float) – Old value

    • -
    • new (float) – New value

    • -
    -
    -
    Returns
    -

    True if delta between old and new is large enough, False otherwise

    -
    -
    Return type
    -

    bool

    -
    -
    -
    - -
    - -
    -
    -class Differ(key='_id', props=None, info=None, fltr=None, deltas=None)[source]
    -

    Bases: object

    -

    Calculate difference between two collections, based solely on a -selected key.

    -

    As noted in diff(), this will not work with huge datasets, as it stores -all the keys in memory in order to do a “set difference” using Python sets.

    -

    Constructor.

    -
    -
    Parameters
    -
      -
    • key – Field to use for identifying records

    • -
    • props – List of fields to use for matching records

    • -
    • info – List of extra fields to retrieve from (and show) for each record.

    • -
    • fltr – Filter for records, a MongoDB query expression

    • -
    • deltas (dict) – {prop: delta} to check. ‘prop’ is a string, ‘delta’ is an instance of Delta. -Any key for ‘prop’ not in parameter ‘props’ will get added.

    • -
    -
    -
    Raise
    -

    ValueError if some delta does not parse.

    -
    -
    -
    -
    -CHANGED = 'different'
    -

    Keys in result dictionary.

    -
    - -
    -
    -CHANGED_DELTA = 'delta'
    -
    - -
    -
    -CHANGED_MATCH_DELTA = 'delta'
    -
    - -
    -
    -CHANGED_MATCH_EXACT = 'exact'
    -
    - -
    -
    -CHANGED_MATCH_KEY = 'match type'
    -

    CHANGED result fields

    -
    - -
    -
    -CHANGED_NEW = 'new'
    -
    - -
    -
    -CHANGED_OLD = 'old'
    -
    - -
    -
    -MISSING = 'missing'
    -

    Keys in result dictionary.

    -
    - -
    -
    -NEW = 'additional'
    -

    Keys in result dictionary.

    -
    - -
    -
    -NO_PROPERTY = '__MISSING__'
    -

    for missing property

    -
    - -
    -
    -diff(c1, c2, only_missing=False, only_values=False, allow_dup=False)[source]
    -

    Perform a difference between the 2 collections. -The first collection is treated as the previous one, and the second -is treated as the new one.

    -

    Note: this is not ‘big data’-ready; we assume all the records can fit in memory.

    -
    -
    Parameters
    -
      -
    • c1 (str or QueryEngine) – Collection (1) config file, or QueryEngine object

    • -
    • c2 (str or QueryEngine) – Collection (2) config file, or QueryEngine object

    • -
    • only_missing – Only find and return self.MISSING; ignore ‘new’ keys

    • -
    • only_values – Only find and return self.CHANGED; ignore new or missing keys

    • -
    • allow_dup – Allow duplicate keys, otherwise fail with ValueError

    • -
    -
    -
    Returns
    -

    dict with keys self.MISSING, self.NEW (unless only_missing is True), & self.CHANGED, -each a list of records with the key and -any other fields given to the constructor ‘info’ argument. -The meaning is: ‘missing’ are keys that are in c1 not found in c2 -‘new’ is keys found in c2 that are not found in c1, and ‘changed’ are records -with the same key that have different ‘props’ values.

    -
    -
    -
    - -
    - -
    -
    -class IID[source]
    -

    Bases: object

    -
    -
    -classmethod next()[source]
    -
    - -
    - +
    +

    pymatgen.db.vv.diff module

    -
    -

    pymatgen.db.vv.report module

    -

    Description.

    -
    -
    -class DiffFormatter(meta, key=None)[source]
    -

    Bases: object

    -

    Base class for formatting a ‘diff’ report.

    -

    Constructor.

    -
    -
    Parameters
    -
      -
    • meta (dict) – Report metadata, must have the following keys: -- start_time, end_time: string repr of report gen. times -- elapsed: float #sec for end_time - start_time -- db1, db2: string repr of 2 input database/collections.

    • -
    • key (str) – Record key field

    • -
    -
    -
    -
    -
    -TITLE = 'Materials Project Database Diff Report'
    -
    - -
    -
    -format(result)[source]
    -

    Format a report from a result object.

    -
    -
    Returns
    -

    Report body

    -
    -
    Return type
    -

    str

    -
    -
    -
    - -
    -
    -ordered_cols(columns, section)[source]
    -

    Return ordered list of columns, from given columns and the name of the section

    -
    - -
    -
    -result_subsets(rs)[source]
    -

    Break a result set into subsets with the same keys.

    -
    -
    Parameters
    -

    rs (list of dict) – Result set, rows of a result as a list of dicts

    -
    -
    Returns
    -

    A set with distinct keys (tuples), and a dict, by these tuples, of max. widths for each column

    -
    -
    -
    - -
    -
    -sort_rows(rows, section)[source]
    -

    Sort the rows, as appropriate for the section.

    -
    -
    Parameters
    -
      -
    • rows – List of tuples (all same length, same values in each position)

    • -
    • section – Name of section, should match const in Differ class

    • -
    -
    -
    Returns
    -

    None; rows are sorted in-place

    -
    -
    -
    - -
    - -
    -
    -class DiffHtmlFormatter(meta, url=None, email_mode=False, **kwargs)[source]
    -

    Bases: pymatgen.db.vv.report.DiffFormatter

    -

    Format an HTML diff report.

    -

    Constructor.

    -
    -
    Parameters
    -
      -
    • meta – see superclass

    • -
    • url (str) – Optional URL to create hyperlink for keys

    • -
    -
    -
    -
    -
    -DIFF_CSS = ['.header {padding: 5px; margin: 0 5px;}', '.header h1 {color: #165F4B; font-size: 20; text-align: left; margin-left: 20px;}', '.header p {color: #666666; margin-left: 20px; height: 12px;}', '.header p em {color: #4169E1; font-style: normal;}', '.content {padding: 15px; padding-top: 0px; margin: 0; background-color: #F3F3F3;}', '.content h2 {color: #2C3E50; font-size: 16px;}', '.empty { font-size: 14px; font-style: italic;}', '.section {padding: 5px; margin: 10px; background-color: #E2E2E2; border-radius: 5px;}', '.section div {margin-left: 10px;}', '.section table {margin-left: 5px;}', 'tr:nth-child(even) { background-color: white; }', 'tr:nth-child(odd) { background-color: #F5F5F5; }', 'tr:nth-child(1) { background-color: #778899; font-weight: 500;}', 'th, td {padding: 0.2em 0.5em;}', 'th { text-align: left;  color: white; margin: 0;}', '.fixed { font-family: Consolas, monaco, monospace; }']
    -
    - -
    -
    -css = ["html { font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; }", 'body { margin: 2em;}', 'table { margin-top: 1em; clear: both; border: 0;}', 'dl, dt, dd { float: left; }', 'dl, dt { clear: both; }', 'dt { width: 8em; font-weight: 700; }', 'dd { width: 32em; }', 'tr:nth-child(even) { background-color: #E9E9E9; }', 'tr:nth-child(odd) { background-color: #E9E9E9; }', 'th, td {padding: 0.2em 0.5em;}', 'th { text-align: left;  color: black; margin: 0; font-weight: 300;}', 'h1, h2, h3 { clear: both; margin: 0; padding: 0; }', 'h1 { font-size: 18; color: rgb(44, 62, 80); }', 'h2 { font-size: 14; color: black; }', '.header {padding: 5px; margin: 0 5px;}', '.header h1 {color: #165F4B; font-size: 20; text-align: left; margin-left: 20px;}', '.header p {color: #666666; margin-left: 20px; height: 12px;}', '.header p em {color: #4169E1; font-style: normal;}', '.content {padding: 15px; padding-top: 0px; margin: 0; background-color: #F3F3F3;}', '.content h2 {color: #2C3E50; font-size: 16px;}', '.empty { font-size: 14px; font-style: italic;}', '.section {padding: 5px; margin: 10px; background-color: #E2E2E2; border-radius: 5px;}', '.section div {margin-left: 10px;}', '.section table {margin-left: 5px;}', 'tr:nth-child(even) { background-color: white; }', 'tr:nth-child(odd) { background-color: #F5F5F5; }', 'tr:nth-child(1) { background-color: #778899; font-weight: 500;}', 'th, td {padding: 0.2em 0.5em;}', 'th { text-align: left;  color: white; margin: 0;}', '.fixed { font-family: Consolas, monaco, monospace; }']
    -
    - -
    -
    -format(result)[source]
    -

    Generate HTML report.

    -
    -
    Returns
    -

    Report body

    -
    -
    Return type
    -

    str

    -
    -
    -
    - -
    -
    -style(css_class, elt)[source]
    -
    - -
    -
    -styles = {'content': {'_': 'padding: 15px; padding-top: 0px; margin: 0; background-color: #F3F3F3', 'h2': 'color: #2C3E50; font-size: 16px', 'section': 'padding: 5px; margin: 10px; background-color: #E2E2E2; border-radius: 5px'}, 'header': {'em': 'color: #4169E1; font-style: normal', 'h1': 'color: #165F4B; font-size: 20; text-align: left; margin-left: 20px', 'p': 'color: #666666; margin-left: 20px; height: 12px'}, 'table': {'table': 'margin-top: 1em; clear: both; border: 0', 'td': 'padding: 0.2em 0.5em', 'th': 'text-align: left;  color: white; margin: 0; padding: 0.2em 0.5em', 'tr1': 'background-color: #778899; font-weight: 500', 'tr_even': 'background-color: white', 'tr_odd': 'background-color: #F5F5F5'}}
    -
    - -
    - -
    -
    -class DiffJsonFormatter(meta, pretty=False, **kwargs)[source]
    -

    Bases: pymatgen.db.vv.report.DiffFormatter

    -

    Constructor.

    -
    -
    Parameters
    -
      -
    • meta – see superclass

    • -
    • pretty (bool) – Indented format

    • -
    -
    -
    -
    -
    -class Encoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)[source]
    -

    Bases: json.encoder.JSONEncoder

    -

    Constructor for JSONEncoder, with sensible defaults.

    -

    If skipkeys is false, then it is a TypeError to attempt -encoding of keys that are not str, int, float or None. If -skipkeys is True, such items are simply skipped.

    -

    If ensure_ascii is true, the output is guaranteed to be str -objects with all incoming non-ASCII characters escaped. If -ensure_ascii is false, the output can contain non-ASCII characters.

    -

    If check_circular is true, then lists, dicts, and custom encoded -objects will be checked for circular references during encoding to -prevent an infinite recursion (which would cause an OverflowError). -Otherwise, no such check takes place.

    -

    If allow_nan is true, then NaN, Infinity, and -Infinity will be -encoded as such. This behavior is not JSON specification compliant, -but is consistent with most JavaScript based encoders and decoders. -Otherwise, it will be a ValueError to encode such floats.

    -

    If sort_keys is true, then the output of dictionaries will be -sorted by key; this is useful for regression tests to ensure -that JSON serializations can be compared on a day-to-day basis.

    -

    If indent is a non-negative integer, then JSON array -elements and object members will be pretty-printed with that -indent level. An indent level of 0 will only insert newlines. -None is the most compact representation.

    -

    If specified, separators should be an (item_separator, key_separator) -tuple. The default is (’, ‘, ‘: ‘) if indent is None and -(‘,’, ‘: ‘) otherwise. To get the most compact JSON representation, -you should specify (‘,’, ‘:’) to eliminate whitespace.

    -

    If specified, default is a function that gets called for objects -that can’t otherwise be serialized. It should return a JSON encodable -version of the object or raise a TypeError.

    -
    -
    -default(o)[source]
    -

    Implement this method in a subclass such that it returns -a serializable object for o, or calls the base implementation -(to raise a TypeError).

    -

    For example, to support arbitrary iterators, you could -implement default like this:

    -
    def default(self, o):
    -    try:
    -        iterable = iter(o)
    -    except TypeError:
    -        pass
    -    else:
    -        return list(iterable)
    -    # Let the base class default method raise the TypeError
    -    return JSONEncoder.default(self, o)
    -
    -
    -
    - -
    - -
    -
    -document(result)[source]
    -

    Build dict for MongoDB, expanding result keys as we go.

    -
    - -
    -
    -format(result)[source]
    -

    Format a report from a result object.

    -
    -
    Returns
    -

    Report body

    -
    -
    Return type
    -

    str

    -
    -
    -
    - -
    -
    -will_copy()[source]
    -
    - -
    - -
    -
    -class DiffTextFormatter(meta, key=None)[source]
    -

    Bases: pymatgen.db.vv.report.DiffFormatter

    -

    Format a plain-text diff report.

    -

    Constructor.

    -
    -
    Parameters
    -
      -
    • meta (dict) – Report metadata, must have the following keys: -- start_time, end_time: string repr of report gen. times -- elapsed: float #sec for end_time - start_time -- db1, db2: string repr of 2 input database/collections.

    • -
    • key (str) – Record key field

    • -
    -
    -
    -
    -
    -format(result)[source]
    -

    Generate plain text report.

    -
    -
    Returns
    -

    Report body

    -
    -
    Return type
    -

    str

    -
    -
    -
    - -
    - -
    -
    -class Emailer(sender='me@localhost', recipients=('you@remote.host',), subject='Report', server='localhost', port=None, **kwargs)[source]
    -

    Bases: pymatgen.db.vv.util.DoesLogging

    -

    Send a report to an email recipient.

    -

    Send reports as email.

    -
    -
    Param
    -

    sender Sender of the email

    -
    -
    Param
    -

    recipients List of _recipients of the email

    -
    -
    Param
    -

    subject Email _subject line

    -
    -
    Param
    -

    server SMTP server host

    -
    -
    Param
    -

    port SMTP server port (None for default)

    -
    -
    -
    -
    -send(text, fmt)[source]
    -

    Send the email message.

    -
    -
    Parameters
    -
      -
    • text (str) – The text to send

    • -
    • fmt (str) – The name of the format of the text

    • -
    -
    -
    Returns
    -

    Number of recipients it was sent to

    -
    -
    Return type
    -

    int

    -
    -
    -
    - -
    -
    -property subject
    -
    - -
    - -
    -
    -class HTMLFormatter(line_sep='\n', id_column=0, css=None)[source]
    -

    Bases: object

    -

    Format a report as HTML.

    -
    -
    -format(report)[source]
    -
    - -
    - -
    -
    -class Header(title='')[source]
    -

    Bases: object

    -

    Base header class.

    -
    -
    -add(key, value)[source]
    -
    - -
    -
    -as_dict()[source]
    -
    - -
    -
    -get(key)[source]
    -
    - -
    - -
    -
    -class JSONFormatter(id_column=0, indent=2)[source]
    -

    Bases: object

    -

    Format a report as JSON.

    -
    -
    -format(report)[source]
    -
    - -
    - -
    -
    -class MarkdownFormatter(id_column=0)[source]
    -

    Bases: object

    -

    Format a report as markdown

    -
    -
    -format(report)[source]
    -
    - -
    - -
    -
    -class Report(header)[source]
    -

    Bases: object

    -

    Create blank report, with a header.

    -
    -
    Parameters
    -

    header (Header) – Report header

    -
    -
    -
    -
    -add_section(section)[source]
    -
    - -
    -
    -property header
    -
    - -
    -
    -is_empty()[source]
    -
    - -
    - -
    -
    -exception ReportBackupError[source]
    -

    Bases: Exception

    -
    - -
    -
    -class ReportHeader(title='')[source]
    -

    Bases: pymatgen.db.vv.report.Header

    -

    Header for entire report.

    -
    - -
    -
    -class ReportJSONEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)[source]
    -

    Bases: pymatgen.db.util.MongoJSONEncoder

    -

    Constructor for JSONEncoder, with sensible defaults.

    -

    If skipkeys is false, then it is a TypeError to attempt -encoding of keys that are not str, int, float or None. If -skipkeys is True, such items are simply skipped.

    -

    If ensure_ascii is true, the output is guaranteed to be str -objects with all incoming non-ASCII characters escaped. If -ensure_ascii is false, the output can contain non-ASCII characters.

    -

    If check_circular is true, then lists, dicts, and custom encoded -objects will be checked for circular references during encoding to -prevent an infinite recursion (which would cause an OverflowError). -Otherwise, no such check takes place.

    -

    If allow_nan is true, then NaN, Infinity, and -Infinity will be -encoded as such. This behavior is not JSON specification compliant, -but is consistent with most JavaScript based encoders and decoders. -Otherwise, it will be a ValueError to encode such floats.

    -

    If sort_keys is true, then the output of dictionaries will be -sorted by key; this is useful for regression tests to ensure -that JSON serializations can be compared on a day-to-day basis.

    -

    If indent is a non-negative integer, then JSON array -elements and object members will be pretty-printed with that -indent level. An indent level of 0 will only insert newlines. -None is the most compact representation.

    -

    If specified, separators should be an (item_separator, key_separator) -tuple. The default is (’, ‘, ‘: ‘) if indent is None and -(‘,’, ‘: ‘) otherwise. To get the most compact JSON representation, -you should specify (‘,’, ‘:’) to eliminate whitespace.

    -

    If specified, default is a function that gets called for objects -that can’t otherwise be serialized. It should return a JSON encodable -version of the object or raise a TypeError.

    -
    -
    -default(o)[source]
    -

    Implement this method in a subclass such that it returns -a serializable object for o, or calls the base implementation -(to raise a TypeError).

    -

    For example, to support arbitrary iterators, you could -implement default like this:

    -
    def default(self, o):
    -    try:
    -        iterable = iter(o)
    -    except TypeError:
    -        pass
    -    else:
    -        return list(iterable)
    -    # Let the base class default method raise the TypeError
    -    return JSONEncoder.default(self, o)
    -
    -
    -
    - -
    - -
    -
    -class ReportSection(header, body=None)[source]
    -

    Bases: pymatgen.db.vv.report.Report

    -

    Section within a report, with data.

    -

    Create new report section, initialized with header and body.

    -
    -
    Parameters
    -
      -
    • header (SectionHeader) – The header for the section

    • -
    • body (Table) – The body of the section, or None if this is a container for sub-sections

    • -
    -
    -
    -
    -
    -property body
    -
    - -
    - -
    -
    -class SectionHeader(title='')[source]
    -

    Bases: pymatgen.db.vv.report.Header

    -

    Header for one section of a report.

    -
    - -
    -
    -class Table(colnames)[source]
    -

    Bases: object

    -

    Table of values.

    -
    -
    -add(values)[source]
    -
    - -
    -
    -property column_names
    -
    - -
    -
    -property column_widths
    -
    - -
    -
    -property ncol
    -
    - -
    -
    -property nrow
    -
    - -
    -
    -sortby(name_or_index)[source]
    -
    - -
    -
    -property values
    -
    - -
    - -
    -
    -css_minify(s)[source]
    -
    - +
    +

    pymatgen.db.vv.report module

    -
    -

    pymatgen.db.vv.util module

    -

    Utility functions and classes for validation.

    -
    -
    -class DoesLogging(name=None)[source]
    -

    Bases: object

    -

    Mix-in class that creates the attribute ‘log’, setting its qualified -name to the name of the module and class.

    -
    - -
    -
    -class ElapsedTime[source]
    -

    Bases: object

    -
    - -
    -
    -class JsonWalker(value_transform=None, dict_transform=None)[source]
    -

    Bases: object

    -

    Walk a dict, transforming. -Used for JSON formatting.

    -

    Constructor.

    -
    -
    Parameters
    -
      -
    • value_transform (function taking a single arg (the value)) – Apply this function to each value in a list or dict.

    • -
    • dict_transform (function taking a single arg (the dict)) – Apply this function to each dict

    • -
    -
    -
    -
    -
    -static dict_expand(o)[source]
    -

    Expand keys in a dict with ‘.’ in them into -sub-dictionaries, e.g.

    -

    {‘a.b.c’: ‘foo’} ==> {‘a’: {‘b’: {‘c’: ‘foo’}}}

    -
    - -
    -
    -static value_json(o)[source]
    -

    Apply as_json() method on object to get value, -otherwise return object itself as the value.

    -
    - -
    -
    -walk(o)[source]
    -

    Walk a dict & transform.

    -
    - -
    - -
    -
    -class Timing(name='event', elapsed=None, log=None, level=10, **kwargs)[source]
    -

    Bases: object

    -

    Perform and report timings using the ‘with’ keyword.

    -
    -
    For example:
    -
    with Timing(‘foo’, info=’bar’):

    do_foo1() -do_foo2()

    -
    -
    -
    -
    -
    - -
    -
    -class YamlConfig(option_strings, dest, nargs=None, const=None, default=None, type=None, choices=None, required=False, help=None, metavar=None)[source]
    -

    Bases: argparse.Action

    -

    Populate arguments with YAML file contents.

    -
    -
    Adapted from:

    http://code.activestate.com/recipes/577918-filling-command-line-arguments-with-a-file/

    -
    -
    -
    - -
    -
    -args_kvp_nodup(s)[source]
    -

    Parse argument string as key=value pairs separated by commas.

    -
    -
    Parameters
    -

    s – Argument string

    -
    -
    Returns
    -

    Parsed value

    -
    -
    Return type
    -

    dict

    -
    -
    Raises
    -

    ValueError for format violations or a duplicated key.

    -
    -
    -
    - -
    -
    -args_list(s)[source]
    -

    Parse argument string as list of values separated by commas.

    -
    -
    Parameters
    -

    s – Argument string

    -
    -
    Returns
    -

    Parsed value

    -
    -
    Return type
    -

    list

    -
    -
    -
    - -
    -
    -letter_num(x, letter='A')[source]
    -
    - -
    -
    -total_size(o, handlers={}, verbose=False, count=False)[source]
    -

    Returns the approximate memory footprint an object and all of its contents.

    -

    Automatically finds the contents of the following builtin containers and -their subclasses: tuple, list, deque, dict, set and frozenset. -To search other containers, add handlers to iterate over their contents:

    -
    -
    -
    handlers = {SomeContainerClass: iter,

    OtherContainerClass: OtherContainerClass.get_elements}

    -
    -
    -
    -

    Source: http://code.activestate.com/recipes/577504/ (r3)

    -
    - +
    +

    pymatgen.db.vv.util module

    -
    -

    pymatgen.db.vv.validate module

    -

    Collection validator

    -
    -
    -class ConstraintSpec(spec)[source]
    -

    Bases: pymatgen.db.vv.util.DoesLogging

    -

    Specification of a set of constraints for a collection.

    -

    Create specification from a configuration.

    -
    -
    Parameters
    -

    spec (dict) – Configuration for a single collection

    -
    -
    Raise
    -

    ValueError if specification is wrong

    -
    -
    -
    -
    -CONSTRAINT_SECT = 'constraints'
    -
    - -
    -
    -FILTER_SECT = 'filter'
    -
    - -
    -
    -SAMPLE_SECT = 'sample'
    -
    - -
    - -
    -
    -class ConstraintSpecSection(fltr, constraints, sample)[source]
    -

    Bases: object

    -
    -
    -property constraints
    -
    - -
    -
    -property filters
    -
    - -
    -
    -get_key()[source]
    -
    - -
    -
    -property sampler
    -
    - -
    - -
    -
    -class ConstraintViolation(constraint, value, expected)[source]
    -

    Bases: object

    -

    A single constraint violation, with no metadata.

    -

    Create new constraint violation

    -
    -
    Parameters
    -

    constraint (Constraint) – The constraint that was violated

    -
    -
    -
    -
    -property expected_value
    -
    - -
    -
    -property field
    -
    - -
    -
    -property got_value
    -
    - -
    -
    -property op
    -
    - -
    - -
    -
    -class ConstraintViolationGroup[source]
    -

    Bases: object

    -

    A group of constraint violations with metadata.

    -

    Create an empty object.

    -
    -
    -add_violations(violations, record=None)[source]
    -

    Add constraint violations and associated record.

    -
    -
    Parameters
    -
      -
    • violations (list(ConstraintViolation)) – List of violations

    • -
    • record (dict) – Associated record

    • -
    -
    -
    Return type
    -

    None

    -
    -
    -
    - -
    - -
    -
    -exception DBError[source]
    -

    Bases: Exception

    -
    - -
    -
    -class NullConstraintViolation[source]
    -

    Bases: pymatgen.db.vv.validate.ConstraintViolation

    -

    Empty constraint violation, for when there are no constraints.

    -

    Create new constraint violation

    -
    -
    Parameters
    -

    constraint (Constraint) – The constraint that was violated

    -
    -
    -
    - -
    -
    -class ProgressMeter(num, fmt)[source]
    -

    Bases: object

    -

    Simple progress tracker

    -
    -
    -property count
    -
    - -
    -
    -set_subject(subj)[source]
    -
    - -
    -
    -update(*args)[source]
    -
    - -
    - -
    -
    -class Projection[source]
    -

    Bases: object

    -

    Fields on which to project the query results.

    -
    -
    -add(field, op=None, val=None)[source]
    -

    Update report fields to include new one, if it doesn’t already.

    -
    -
    Parameters
    -
      -
    • field (Field) – The field to include

    • -
    • op (ConstraintOperator) – Operation

    • -
    -
    -
    Returns
    -

    None

    -
    -
    -
    - -
    -
    -to_mongo()[source]
    -

    Translate projection to MongoDB query form.

    -
    -
    Returns
    -

    Dictionary to put into a MongoDB JSON query

    -
    -
    Return type
    -

    dict

    -
    -
    -
    - -
    - -
    -
    -class PythonMethod(text)[source]
    -

    Bases: object

    -

    Encapsulate an external Python method that will be run on our target -MongoDB collection to perform arbitrary types of validation.

    -

    Create new instance from a raw constraint string.

    -
    -
    Raises
    -

    ValidatorSyntaxerror

    -
    -
    -
    -
    -BAD_CONSTRAINT_ERR = 'Invalid constraint (must be: @<method> [<param> ..])'
    -
    - -
    -
    -CANNOT_COMBINE_ERR = 'Call to a Python method cannot be combined '
    -

    with any other constraints

    -
    - -
    -
    -classmethod constraint_is_method(text)[source]
    -

    Check from the text of the constraint whether it is -a Python method, as opposed to a ‘normal’ constraint.

    -
    -
    Returns
    -

    True if it is, False if not

    -
    -
    -
    - -
    - -
    -
    -class Sampler(min_items=0, max_items=1000000000.0, p=1.0, distrib=1, **kw)[source]
    -

    Bases: pymatgen.db.vv.util.DoesLogging

    -

    Randomly sample a proportion of the full collection.

    -

    Create new parameterized sampler.

    -
    -
    Parameters
    -
      -
    • min_items – Minimum number of items in the sample

    • -
    • max_items – Maximum number of items in the sample

    • -
    • p – Probability of selecting an item

    • -
    • distrib (str or int) – Probability distribution code, one of DIST_<name> in this class

    • -
    -
    -
    Raise
    -

    ValueError, if distrib is an unknown code or string

    -
    -
    -
    -
    -DEFAULT_DIST = 1
    -
    - -
    -
    -DIST_CODES = {'uniform': 1}
    -
    - -
    -
    -DIST_RUNIF = 1
    -
    - -
    -
    -property is_empty
    -
    - -
    -
    -sample(cursor)[source]
    -

    Extract records randomly from the database. -Continue until the target proportion of the items have been -extracted, or until min_items if this is larger. -If max_items is non-negative, do not extract more than these.

    -

    This function is a generator, yielding items incrementally.

    -
    -
    Parameters
    -

    cursor (pymongo.cursor.Cursor) – Cursor to sample

    -
    -
    Returns
    -

    yields each item

    -
    -
    Return type
    -

    dict

    -
    -
    Raise
    -

    ValueError, if max_items is valid and less than min_items -or if target collection is empty

    -
    -
    -
    - -
    - -
    -
    -class Validator(max_violations=50, max_dberrors=10, aliases=None, add_exists=False)[source]
    -

    Bases: pymatgen.db.vv.util.DoesLogging

    -

    Validate a collection.

    -
    -
    -class SectionParts(cond, body, sampler, report_fields)[source]
    -

    Bases: object

    -

    Encapsulate the tuple of information for each section of filters, constraints, -etc. within a collection.

    -

    Create new initialized set of parts.

    -
    -
    Parameters
    -
      -
    • cond (MongoQuery) – Condition to filter records

    • -
    • body (MongoQuery) – Main set of constraints

    • -
    • sampler (Sampler) – Sampling class if any

    • -
    • report_fields (list) – Fields to report on

    • -
    -
    -
    -
    - -
    -
    -num_violations()[source]
    -
    - -
    -
    -set_aliases(new_value)[source]
    -

    Set aliases and wrap errors in ValueError

    -
    - -
    -
    -set_progress(num)[source]
    -

    Report progress every num bad records.

    -
    -
    Parameters
    -

    num (int) – Report interval

    -
    -
    Returns
    -

    None

    -
    -
    -
    - -
    -
    -validate(coll, constraint_spec, subject='collection')[source]
    -

    Validation of a collection. -This is a generator that yields ConstraintViolationGroups.

    -
    -
    Parameters
    -
      -
    • coll (pymongo.Collection) – Mongo collection

    • -
    • constraint_spec (ConstraintSpec) – Constraint specification

    • -
    • subject (str) – Name of the thing being validated

    • -
    -
    -
    Returns
    -

    Sets of constraint violation, one for each constraint_section

    -
    -
    Return type
    -

    ConstraintViolationGroup

    -
    -
    Raises
    -

    ValidatorSyntaxError

    -
    -
    -
    - -
    - -
    -
    -exception ValidatorSyntaxError(target, desc)[source]
    -

    Bases: Exception

    -

    Syntax error in configuration of Validator

    -
    - -
    -
    -mongo_get(rec, key, default=None)[source]
    -

    Get value from dict using MongoDB dot-separated path semantics. -For example:

    -
    >>> assert mongo_get({'a': {'b': 1}, 'x': 2}, 'a.b') == 1
    ->>> assert mongo_get({'a': {'b': 1}, 'x': 2}, 'x') == 2
    ->>> assert mongo_get({'a': {'b': 1}, 'x': 2}, 'a.b.c') is None
    -
    -
    -
    -
    Parameters
    -
      -
    • rec – mongodb document

    • -
    • key – path to mongo value

    • -
    • default – default to return if not found

    • -
    -
    -
    Returns
    -

    value, potentially nested, or default if not found

    -
    -
    Raise
    -

    ValueError, if record is not a dict.

    -
    -
    -
    - +
    +

    pymatgen.db.vv.validate module

    -
    -

    Module contents

    +
    +

    Module contents

    @@ -1348,11 +88,11 @@

    Table of Contents

  • pymatgen.db.vv package
  • @@ -1360,9 +100,6 @@

    Table of Contents

    Related Topics

    diff --git a/docs/pymatgen.html b/docs/pymatgen.html index c16c6ab..a2842c2 100644 --- a/docs/pymatgen.html +++ b/docs/pymatgen.html @@ -6,7 +6,7 @@ - pymatgen namespace — pymatgen-db 2022.3.17 documentation + pymatgen namespace — pymatgen-db 2022.5.2 documentation @@ -38,7 +38,7 @@

    Navigation

  • modules |
  • - +
    @@ -65,44 +65,11 @@

    SubpackagesModule contents -
  • pymatgen.db.builders package -
  • -
  • pymatgen.db.vv package -
  • Submodules
  • +
  • pymatgen.db.config module
  • pymatgen.db.creator module
  • -
  • pymatgen.db.dbconfig module
  • -
  • pymatgen.db.dbgroup module
  • pymatgen.db.query_engine module
  • pymatgen.db.util module
  • Module contents
  • diff --git a/docs/search.html b/docs/search.html index 2d40f5d..d7b788d 100644 --- a/docs/search.html +++ b/docs/search.html @@ -5,7 +5,7 @@ - Search — pymatgen-db 2022.3.17 documentation + Search — pymatgen-db 2022.5.2 documentation @@ -43,7 +43,7 @@

    Navigation

  • modules |
  • - +
    diff --git a/docs/searchindex.js b/docs/searchindex.js index 105eedd..306b681 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["_themes/README","builders","change_log","dbconfig","index","mgvv","modules","pymatgen","pymatgen.db","pymatgen.db.alchemy","pymatgen.db.builders","pymatgen.db.builders.examples","pymatgen.db.vv"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["_themes/README.rst","builders.rst","change_log.rst","dbconfig.rst","index.rst","mgvv.rst","modules.rst","pymatgen.rst","pymatgen.db.rst","pymatgen.db.alchemy.rst","pymatgen.db.builders.rst","pymatgen.db.builders.examples.rst","pymatgen.db.vv.rst"],objects:{"":[[7,0,0,"-","pymatgen"]],"mgvv-diff":[[5,7,1,"cmdoption-mgvv-diff-D","--db"],[5,7,1,"cmdoption-mgvv-diff-E","--email"],[5,7,1,"cmdoption-mgvv-diff-s","--email-server"],[5,7,1,"cmdoption-mgvv-diff-f","--file"],[5,7,1,"cmdoption-mgvv-diff-F","--format"],[5,7,1,"cmdoption-mgvv-diff-help","--help"],[5,7,1,"cmdoption-mgvv-diff-i","--info"],[5,7,1,"cmdoption-mgvv-diff-k","--key"],[5,7,1,"cmdoption-mgvv-diff-m","--missing"],[5,7,1,"cmdoption-mgvv-diff-n","--numeric"],[5,7,1,"cmdoption-mgvv-diff-P","--print"],[5,7,1,"cmdoption-mgvv-diff-p","--properties"],[5,7,1,"cmdoption-mgvv-diff-q","--query"],[5,7,1,"cmdoption-mgvv-diff-u","--url"],[5,7,1,"cmdoption-mgvv-diff-v","--verbose"],[5,7,1,"cmdoption-mgvv-diff-D","-D"],[5,7,1,"cmdoption-mgvv-diff-E","-E"],[5,7,1,"cmdoption-mgvv-diff-F","-F"],[5,7,1,"cmdoption-mgvv-diff-P","-P"],[5,7,1,"cmdoption-mgvv-diff-f","-f"],[5,7,1,"cmdoption-mgvv-diff-help","-h"],[5,7,1,"cmdoption-mgvv-diff-i","-i"],[5,7,1,"cmdoption-mgvv-diff-k","-k"],[5,7,1,"cmdoption-mgvv-diff-m","-m"],[5,7,1,"cmdoption-mgvv-diff-n","-n"],[5,7,1,"cmdoption-mgvv-diff-p","-p"],[5,7,1,"cmdoption-mgvv-diff-q","-q"],[5,7,1,"cmdoption-mgvv-diff-s","-s"],[5,7,1,"cmdoption-mgvv-diff-u","-u"],[5,7,1,"cmdoption-mgvv-diff-v","-v"]],"pymatgen.db":[[9,0,0,"-","alchemy"],[10,0,0,"-","builders"],[8,0,0,"-","creator"],[8,0,0,"-","dbconfig"],[8,0,0,"-","dbgroup"],[8,0,0,"-","query_engine"],[8,0,0,"-","util"],[12,0,0,"-","vv"]],"pymatgen.db.alchemy":[[9,0,0,"-","transmuters"]],"pymatgen.db.alchemy.transmuters":[[9,1,1,"","QeTransmuter"]],"pymatgen.db.builders":[[10,0,0,"-","core"],[11,0,0,"-","examples"],[10,0,0,"-","incr"],[10,0,0,"-","schema"],[10,0,0,"-","util"]],"pymatgen.db.builders.core":[[10,2,1,"","BuildError"],[10,1,1,"","Builder"],[10,1,1,"","BuilderStatus"],[10,1,1,"","Collections"],[10,1,1,"","HasExamples"],[10,1,1,"","ProcRunner"],[10,6,1,"","alphadump"],[10,6,1,"","merge_tasks"],[10,6,1,"","parse_fn_docstring"]],"pymatgen.db.builders.core.Builder":[[10,3,1,"","connect"],[10,3,1,"","finalize"],[10,3,1,"","get_items"],[10,3,1,"","get_parameters"],[10,3,1,"","process_item"],[10,3,1,"","run"],[10,3,1,"","shared_dict"],[10,3,1,"","shared_list"]],"pymatgen.db.builders.core.BuilderStatus":[[10,4,1,"","FAILURE"],[10,4,1,"","RUNNING"],[10,4,1,"","SUCCESS"],[10,4,1,"","WAIT"],[10,3,1,"","fail"],[10,3,1,"","has_failures"],[10,3,1,"","running"],[10,3,1,"","success"]],"pymatgen.db.builders.core.Collections":[[10,4,1,"","MAX_VER"],[10,4,1,"","MIN_VER"],[10,5,1,"","database"],[10,3,1,"","get_collection_name"],[10,4,1,"","known_collections"]],"pymatgen.db.builders.core.HasExamples":[[10,3,1,"","examples"],[10,3,1,"","validate_examples"]],"pymatgen.db.builders.core.ProcRunner":[[10,4,1,"","instance"],[10,3,1,"","run"]],"pymatgen.db.builders.examples":[[11,0,0,"-","copy_builder"],[11,0,0,"-","file_builders"],[11,0,0,"-","maxvalue_builder"]],"pymatgen.db.builders.examples.copy_builder":[[11,1,1,"","CopyBuilder"]],"pymatgen.db.builders.examples.copy_builder.CopyBuilder":[[11,3,1,"","get_items"],[11,3,1,"","process_item"]],"pymatgen.db.builders.examples.file_builders":[[11,1,1,"","FileCounter"]],"pymatgen.db.builders.examples.file_builders.FileCounter":[[11,3,1,"","finalize"],[11,3,1,"","get_items"],[11,3,1,"","get_parameters"],[11,3,1,"","process_item"]],"pymatgen.db.builders.examples.maxvalue_builder":[[11,1,1,"","MaxValueBuilder"]],"pymatgen.db.builders.examples.maxvalue_builder.MaxValueBuilder":[[11,3,1,"","finalize"],[11,3,1,"","get_items"],[11,3,1,"","process_item"]],"pymatgen.db.builders.incr":[[10,1,1,"","CollectionTracker"],[10,2,1,"","DBError"],[10,1,1,"","Mark"],[10,2,1,"","NoTrackingCollection"],[10,1,1,"","Operation"],[10,1,1,"","TrackedCollection"],[10,1,1,"","TrackedQueryEngine"],[10,1,1,"","TrackingInterface"],[10,1,1,"","UnTrackedQueryEngine"]],"pymatgen.db.builders.incr.CollectionTracker":[[10,4,1,"","TRACKING_NAME"],[10,3,1,"","create"],[10,3,1,"","retrieve"],[10,3,1,"","save"],[10,5,1,"","tracking_collection"],[10,5,1,"","tracking_collection_name"]],"pymatgen.db.builders.incr.Mark":[[10,4,1,"","FLD_FLD"],[10,4,1,"","FLD_MARK"],[10,4,1,"","FLD_OP"],[10,3,1,"","as_dict"],[10,3,1,"","from_dict"],[10,5,1,"","pos"],[10,5,1,"","query"],[10,3,1,"","to_dict"],[10,3,1,"","update"]],"pymatgen.db.builders.incr.Operation":[[10,4,1,"","build"],[10,4,1,"","copy"],[10,4,1,"","other"]],"pymatgen.db.builders.incr.TrackedCollection":[[10,3,1,"","findall"],[10,3,1,"","set_mark"],[10,3,1,"","set_tracking"],[10,3,1,"","tracked_find"]],"pymatgen.db.builders.incr.TrackedQueryEngine":[[10,5,1,"","collection_name"],[10,3,1,"","set_mark"],[10,5,1,"","tracking"]],"pymatgen.db.builders.incr.TrackingInterface":[[10,3,1,"","set_mark"]],"pymatgen.db.builders.incr.UnTrackedQueryEngine":[[10,3,1,"","set_mark"]],"pymatgen.db.builders.schema":[[10,1,1,"","HasMeta"],[10,1,1,"","Scalar"],[10,1,1,"","Schema"],[10,2,1,"","SchemaError"],[10,2,1,"","SchemaParseError"],[10,2,1,"","SchemaPathError"],[10,2,1,"","SchemaTypeError"],[10,6,1,"","add_schemas"],[10,6,1,"","get_schema"],[10,6,1,"","load_schema"]],"pymatgen.db.builders.schema.HasMeta":[[10,4,1,"","FIELD_SEP"],[10,4,1,"","KV_SEP"],[10,3,1,"","add_meta"]],"pymatgen.db.builders.schema.Scalar":[[10,4,1,"","JSTYPES"],[10,4,1,"","TYPES"],[10,5,1,"","jstype"]],"pymatgen.db.builders.schema.Schema":[[10,4,1,"","IS_DICT"],[10,4,1,"","IS_LIST"],[10,4,1,"","IS_SCALAR"],[10,3,1,"","json_schema"],[10,3,1,"","validate"]],"pymatgen.db.builders.util":[[10,6,1,"","get_builder_log"],[10,6,1,"","get_schema_dir"],[10,6,1,"","get_schema_file"],[10,6,1,"","get_test_dir"]],"pymatgen.db.creator":[[8,1,1,"","VaspToDbTaskDrone"],[8,6,1,"","contains_vasp_input"],[8,6,1,"","get_basic_analysis_and_error_checks"],[8,6,1,"","get_coordination_numbers"],[8,6,1,"","get_uri"]],"pymatgen.db.creator.VaspToDbTaskDrone":[[8,3,1,"","as_dict"],[8,3,1,"","assimilate"],[8,3,1,"","calculate_stability"],[8,3,1,"","convert"],[8,3,1,"","from_dict"],[8,3,1,"","generate_doc"],[8,3,1,"","get_task_doc"],[8,3,1,"","get_valid_paths"],[8,3,1,"","post_process"],[8,3,1,"","process_killed_run"],[8,3,1,"","process_vasprun"]],"pymatgen.db.dbconfig":[[8,2,1,"","ConfigurationFileError"],[8,1,1,"","DBConfig"],[8,6,1,"","auth_aliases"],[8,6,1,"","get_settings"],[8,6,1,"","normalize_auth"]],"pymatgen.db.dbconfig.DBConfig":[[8,4,1,"","ALL_SETTINGS"],[8,4,1,"","DEFAULT_FILE"],[8,4,1,"","DEFAULT_PORT"],[8,4,1,"","DEFAULT_SETTINGS"],[8,5,1,"","collection"],[8,3,1,"","copy"],[8,5,1,"","dbname"],[8,5,1,"","host"],[8,5,1,"","password"],[8,5,1,"","port"],[8,5,1,"","settings"],[8,5,1,"","user"]],"pymatgen.db.dbgroup":[[8,1,1,"","ConfigGroup"],[8,2,1,"","CreateQueryEngineError"],[8,1,1,"","RegexDict"],[8,6,1,"","create_query_engine"]],"pymatgen.db.dbgroup.ConfigGroup":[[8,4,1,"","SEP"],[8,3,1,"","add"],[8,3,1,"","add_path"],[8,3,1,"","expand"],[8,3,1,"","keys"],[8,3,1,"","set_prefix"],[8,3,1,"","uncache"]],"pymatgen.db.dbgroup.RegexDict":[[8,3,1,"","re_get"],[8,3,1,"","re_keys"]],"pymatgen.db.query_engine":[[8,1,1,"","QueryEngine"],[8,2,1,"","QueryError"],[8,1,1,"","QueryListResults"],[8,1,1,"","QueryResults"]],"pymatgen.db.query_engine.QueryEngine":[[8,4,1,"","ALIASES_CONFIG_KEY"],[8,4,1,"","COLLECTION_KEY"],[8,4,1,"","DB_KEY"],[8,4,1,"","HOST_KEY"],[8,4,1,"","PASSWORD_KEY"],[8,4,1,"","PORT_KEY"],[8,4,1,"","USER_KEY"],[8,4,1,"","aliases"],[8,3,1,"","close"],[8,5,1,"","collection_name"],[8,4,1,"","default_criteria"],[8,4,1,"","default_properties"],[8,3,1,"","ensure_index"],[8,3,1,"","from_config"],[8,3,1,"","get_dos_from_id"],[8,3,1,"","get_entries"],[8,3,1,"","get_entries_in_system"],[8,3,1,"","get_structure_from_id"],[8,3,1,"","query"],[8,3,1,"","query_one"],[8,4,1,"","query_post"],[8,4,1,"","result_post"],[8,3,1,"","set_aliases_and_defaults"],[8,3,1,"","set_collection"]],"pymatgen.db.query_engine.QueryListResults":[[8,3,1,"","clone"]],"pymatgen.db.query_engine.QueryResults":[[8,3,1,"","clone"],[8,3,1,"","from_cursor"]],"pymatgen.db.util":[[8,1,1,"","MongoJSONEncoder"],[8,6,1,"","collection_keys"],[8,6,1,"","csv_dict"],[8,6,1,"","csv_list"],[8,6,1,"","get_collection"],[8,6,1,"","get_database"],[8,6,1,"","get_settings"],[8,6,1,"","kvp_dict"],[8,6,1,"","quotable"]],"pymatgen.db.util.MongoJSONEncoder":[[8,3,1,"","default"]],"pymatgen.db.vv":[[12,0,0,"-","diff"],[12,0,0,"-","report"],[12,0,0,"-","util"],[12,0,0,"-","validate"]],"pymatgen.db.vv.diff":[[12,1,1,"","Delta"],[12,1,1,"","Differ"],[12,1,1,"","IID"]],"pymatgen.db.vv.diff.Delta":[[12,3,1,"","as_json"],[12,3,1,"","cmp"]],"pymatgen.db.vv.diff.Differ":[[12,4,1,"","CHANGED"],[12,4,1,"","CHANGED_DELTA"],[12,4,1,"","CHANGED_MATCH_DELTA"],[12,4,1,"","CHANGED_MATCH_EXACT"],[12,4,1,"","CHANGED_MATCH_KEY"],[12,4,1,"","CHANGED_NEW"],[12,4,1,"","CHANGED_OLD"],[12,4,1,"","MISSING"],[12,4,1,"","NEW"],[12,4,1,"","NO_PROPERTY"],[12,3,1,"","diff"]],"pymatgen.db.vv.diff.IID":[[12,3,1,"","next"]],"pymatgen.db.vv.report":[[12,1,1,"","DiffFormatter"],[12,1,1,"","DiffHtmlFormatter"],[12,1,1,"","DiffJsonFormatter"],[12,1,1,"","DiffTextFormatter"],[12,1,1,"","Emailer"],[12,1,1,"","HTMLFormatter"],[12,1,1,"","Header"],[12,1,1,"","JSONFormatter"],[12,1,1,"","MarkdownFormatter"],[12,1,1,"","Report"],[12,2,1,"","ReportBackupError"],[12,1,1,"","ReportHeader"],[12,1,1,"","ReportJSONEncoder"],[12,1,1,"","ReportSection"],[12,1,1,"","SectionHeader"],[12,1,1,"","Table"],[12,6,1,"","css_minify"]],"pymatgen.db.vv.report.DiffFormatter":[[12,4,1,"","TITLE"],[12,3,1,"","format"],[12,3,1,"","ordered_cols"],[12,3,1,"","result_subsets"],[12,3,1,"","sort_rows"]],"pymatgen.db.vv.report.DiffHtmlFormatter":[[12,4,1,"","DIFF_CSS"],[12,4,1,"","css"],[12,3,1,"","format"],[12,3,1,"","style"],[12,4,1,"","styles"]],"pymatgen.db.vv.report.DiffJsonFormatter":[[12,1,1,"","Encoder"],[12,3,1,"","document"],[12,3,1,"","format"],[12,3,1,"","will_copy"]],"pymatgen.db.vv.report.DiffJsonFormatter.Encoder":[[12,3,1,"","default"]],"pymatgen.db.vv.report.DiffTextFormatter":[[12,3,1,"","format"]],"pymatgen.db.vv.report.Emailer":[[12,3,1,"","send"],[12,5,1,"","subject"]],"pymatgen.db.vv.report.HTMLFormatter":[[12,3,1,"","format"]],"pymatgen.db.vv.report.Header":[[12,3,1,"","add"],[12,3,1,"","as_dict"],[12,3,1,"","get"]],"pymatgen.db.vv.report.JSONFormatter":[[12,3,1,"","format"]],"pymatgen.db.vv.report.MarkdownFormatter":[[12,3,1,"","format"]],"pymatgen.db.vv.report.Report":[[12,3,1,"","add_section"],[12,5,1,"","header"],[12,3,1,"","is_empty"]],"pymatgen.db.vv.report.ReportJSONEncoder":[[12,3,1,"","default"]],"pymatgen.db.vv.report.ReportSection":[[12,5,1,"","body"]],"pymatgen.db.vv.report.Table":[[12,3,1,"","add"],[12,5,1,"","column_names"],[12,5,1,"","column_widths"],[12,5,1,"","ncol"],[12,5,1,"","nrow"],[12,3,1,"","sortby"],[12,5,1,"","values"]],"pymatgen.db.vv.util":[[12,1,1,"","DoesLogging"],[12,1,1,"","ElapsedTime"],[12,1,1,"","JsonWalker"],[12,1,1,"","Timing"],[12,1,1,"","YamlConfig"],[12,6,1,"","args_kvp_nodup"],[12,6,1,"","args_list"],[12,6,1,"","letter_num"],[12,6,1,"","total_size"]],"pymatgen.db.vv.util.JsonWalker":[[12,3,1,"","dict_expand"],[12,3,1,"","value_json"],[12,3,1,"","walk"]],"pymatgen.db.vv.validate":[[12,1,1,"","ConstraintSpec"],[12,1,1,"","ConstraintSpecSection"],[12,1,1,"","ConstraintViolation"],[12,1,1,"","ConstraintViolationGroup"],[12,2,1,"","DBError"],[12,1,1,"","NullConstraintViolation"],[12,1,1,"","ProgressMeter"],[12,1,1,"","Projection"],[12,1,1,"","PythonMethod"],[12,1,1,"","Sampler"],[12,1,1,"","Validator"],[12,2,1,"","ValidatorSyntaxError"],[12,6,1,"","mongo_get"]],"pymatgen.db.vv.validate.ConstraintSpec":[[12,4,1,"","CONSTRAINT_SECT"],[12,4,1,"","FILTER_SECT"],[12,4,1,"","SAMPLE_SECT"]],"pymatgen.db.vv.validate.ConstraintSpecSection":[[12,5,1,"","constraints"],[12,5,1,"","filters"],[12,3,1,"","get_key"],[12,5,1,"","sampler"]],"pymatgen.db.vv.validate.ConstraintViolation":[[12,5,1,"","expected_value"],[12,5,1,"","field"],[12,5,1,"","got_value"],[12,5,1,"","op"]],"pymatgen.db.vv.validate.ConstraintViolationGroup":[[12,3,1,"","add_violations"]],"pymatgen.db.vv.validate.ProgressMeter":[[12,5,1,"","count"],[12,3,1,"","set_subject"],[12,3,1,"","update"]],"pymatgen.db.vv.validate.Projection":[[12,3,1,"","add"],[12,3,1,"","to_mongo"]],"pymatgen.db.vv.validate.PythonMethod":[[12,4,1,"","BAD_CONSTRAINT_ERR"],[12,4,1,"","CANNOT_COMBINE_ERR"],[12,3,1,"","constraint_is_method"]],"pymatgen.db.vv.validate.Sampler":[[12,4,1,"","DEFAULT_DIST"],[12,4,1,"","DIST_CODES"],[12,4,1,"","DIST_RUNIF"],[12,5,1,"","is_empty"],[12,3,1,"","sample"]],"pymatgen.db.vv.validate.Validator":[[12,1,1,"","SectionParts"],[12,3,1,"","num_violations"],[12,3,1,"","set_aliases"],[12,3,1,"","set_progress"],[12,3,1,"","validate"]],mgvv:[[5,7,1,"cmdoption-mgvv-alias","--alias"],[5,7,1,"cmdoption-mgvv-collection","--collection"],[5,7,1,"cmdoption-mgvv-0","--config"],[5,7,1,"cmdoption-mgvv-email","--email"],[5,7,1,"cmdoption-mgvv-f","--file"],[5,7,1,"cmdoption-mgvv-format","--format"],[5,7,1,"cmdoption-mgvv-help","--help"],[5,7,1,"cmdoption-mgvv-limit","--limit"],[5,7,1,"cmdoption-mgvv-v","--verbose"],[5,7,1,"cmdoption-mgvv-collection","-C"],[5,7,1,"cmdoption-mgvv-format","-F"],[5,7,1,"cmdoption-mgvv-alias","-a"],[5,7,1,"cmdoption-mgvv-0","-c"],[5,7,1,"cmdoption-mgvv-email","-e"],[5,7,1,"cmdoption-mgvv-f","-f"],[5,7,1,"cmdoption-mgvv-help","-h"],[5,7,1,"cmdoption-mgvv-limit","-m"],[5,7,1,"cmdoption-mgvv-v","-v"]],pymatgen:[[8,0,0,"-","db"]]},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","exception","Python exception"],"3":["py","method","Python method"],"4":["py","attribute","Python attribute"],"5":["py","property","Python property"],"6":["py","function","Python function"],"7":["std","cmdoption","program option"]},objtypes:{"0":"py:module","1":"py:class","2":"py:exception","3":"py:method","4":"py:attribute","5":"py:property","6":"py:function","7":"std:cmdoption"},terms:{"0":[1,5,8,9,10,11,12],"028":4,"0px":12,"1":[1,5,8,10,11,12],"10":[4,5,12],"100":[5,10,12],"1000000000":12,"1016":4,"10px":12,"12":4,"127":[8,10],"12px":12,"13":2,"14":12,"14px":12,"15":5,"15px":12,"165f4b":12,"16px":12,"18":12,"1em":12,"2":[1,4,5,8,10,12],"20":[5,12],"2011":4,"2012":4,"2013":4,"20px":12,"27017":[1,3,5,8,10],"2c3e50":12,"2em":12,"3":5,"300":12,"314":4,"319":4,"32em":12,"4":4,"4169e1":12,"44":12,"5":[4,5,8],"50":[5,12],"500":12,"577504":12,"577918":12,"5em":12,"5px":12,"62":12,"666666":12,"68":4,"7":4,"700":12,"778899":12,"8":1,"80":12,"8em":12,"9":8,"9101":5,"99":10,"abstract":10,"boolean":10,"break":[1,12],"case":[1,5,10,11],"class":[1,4,8,9,10,11,12],"const":12,"default":[1,3,4,5,8,10,12],"do":[1,4,8,10,11,12],"enum":10,"export":2,"final":[1,8,10,11],"float":[8,10,11,12],"function":[1,8,10,11,12],"import":[1,4,10],"int":[8,10,11,12],"long":5,"new":[1,2,4,5,8,9,10,11,12],"null":10,"return":[1,2,4,8,10,11,12],"static":[8,10,12],"switch":8,"true":[1,5,8,10,11,12],"try":[8,12],"while":8,A:[1,4,5,8,9,10,12],AND:4,AS:4,As:[1,5,12],At:5,BE:4,BUT:4,Be:8,But:1,By:[1,5],FOR:4,For:[1,4,5,8,10,11,12],IN:4,IS:4,If:[1,3,4,5,8,10,11,12],In:[1,5,8],It:[0,4,5,8,12],NO:4,NOT:4,Not:1,OF:4,OR:4,One:[10,11],THE:4,TO:4,That:10,The:[0,1,3,4,5,8,9,10,11,12],Then:8,There:[1,8],These:[1,5],To:[0,1,4,5,8,10,11,12],WITH:4,Will:8,With:[1,11],_:12,__getitem__:10,__init__:1,__missing__:12,__setitem__:10,_alias:5,_email:5,_group:1,_id:[1,10,12],_is_datetim:10,_log:1,_recipi:12,_src:1,_subject:12,_target_col:1,_theme:0,ab:[5,8,12],abc:8,abil:[2,8],abl:1,about:1,abov:[4,5],absolut:1,abspath:0,abstractdron:8,accept:[2,4],access:[1,3,4,8,9,10],accommod:1,accord:[1,5],across:[5,8],act:[8,10],action:[1,4,10,11,12],activ:[1,10],activest:12,actual:[1,8],ad:[1,2,5,8,10,12],adapt:[4,12],add:[0,1,2,4,5,8,10,11,12],add_exist:12,add_kei:10,add_meta:10,add_path:8,add_schema:10,add_sect:12,add_viol:12,addit:[1,8,12],additional_criteria:8,additional_field:8,addon:0,addr:5,address:5,adequ:8,admin:8,admin_password:[3,5],admin_us:[3,5],administr:5,advanc:4,advantag:5,affect:[8,10],aflow:8,after:[1,4,5,8,10,11],against:[5,10],alchemi:[6,7,8],algorithm:1,alia:[4,5,8,10],alias:[2,4,5,8,10,12],aliases_config:[8,10],aliases_config_kei:8,align:12,all:[1,3,4,5,8,9,10,11,12],all_set:8,allow:[1,2,4,5,8,10,12],allow_dup:12,allow_nan:[8,12],alphabet:10,alphadump:10,alreadi:[10,12],also:[0,1,2,4,5,8],altern:[0,1,2,10,11],although:1,alwai:[1,4,5,10],amaz:8,amount:1,an:[1,2,3,4,5,8,10,11,12],analysi:[4,5,8,10,11],ani:[1,4,5,8,10,11,12],anoth:[1,8,11],anubhav:4,anyth:[4,10],api:[2,8,10],app:8,append:[0,8],appli:[4,5,8,9,10,12],appropri:[10,12],approxim:12,ar:[1,2,3,4,5,8,10,11,12],arbitrari:[2,8,12],arg:[1,8,10,11,12],argpars:12,args_kvp_nodup:12,args_list:12,arguabl:5,argument:[1,4,8,10,11,12],arial:12,aris:4,around:10,arrai:[5,8,10,12],arriv:5,as_dict:[8,10,12],as_json:12,ascii:[8,12],ask:1,assert:12,assess:8,assimil:8,associ:[2,4,5,12],assum:[1,3,5,8,12],atom:4,attempt:[8,12],attribut:[8,10,12],auth:[8,10],auth_alias:8,authent:[1,3,4,5,8,10],author:[1,4,8],auto:4,autodoc:1,autom:1,automat:[1,4,5,8,10,11,12],avail:[4,10],awesom:1,b:[1,8,12],back:1,background:12,bad:[10,11,12],bad_constraint_err:12,bandstructur:[4,10],bandwidth:5,bar:[5,10,12],base:[8,9,10,11,12],basestr:8,basi:[8,12],basic:[10,11],batch_siz:10,becaus:[1,5],becom:5,been:[1,4,10,11,12],befor:[1,5,8,10],begin:[1,5],behavior:[1,8,12],behind:1,being:12,below:[1,4,5,8],benefit:1,better:[1,2,5],between:[1,8,10,12],big:12,bigbird:3,bigbuild:1,binari:4,bird:1,black:12,blank:12,bleed:4,block:5,bodi:12,bookkeep:1,bool:[8,10,11,12],border:12,borg:8,borgqueen:8,both:[1,5,8,10,12],branch:9,brief:2,brototyp:10,browser:5,bug:[2,4],buggi:4,build:[2,4,10,11,12],build_kw:10,builder:[2,6,7,8],builderror:10,builderstatu:10,builtin:12,burden:10,c1:12,c2:12,c:[4,5,12],cach:8,calcul:[1,5,8,11,12],calculate_st:8,call:[1,4,5,8,10,12],caller:10,can:[0,1,2,4,5,8,9,10,12],cannot:[8,10,12],cannot_combine_err:12,care:[4,8],caus:[1,8,11,12],ceder:4,central:1,cfg1:8,cfg2:8,cfg3:8,cfg:8,chain:[8,10],chang:[5,10,12],changed_delta:12,changed_match_delta:12,changed_match_exact:12,changed_match_kei:12,changed_new:12,changed_old:12,charact:[1,8,11,12],charg:4,check:[0,8,10,12],check_circular:[8,12],chemic:8,chevrier:4,child:12,choic:[4,12],cholia:4,choos:[1,10,11],chosen:1,circular:[8,12],cl:8,claim:4,clash:1,classmethod:[8,10,12],clazz:8,clean:[5,8],cleanup:[2,10,11],clear:12,client:1,clone:[4,8],close:[4,8],cmp:12,code:[1,5,8,10,11,12],coincident:1,coll:[8,10,12],collect:[1,2,3,4,5,8,10,11,12],collection_kei:8,collection_nam:[5,8,10],collectiontrack:10,colnam:12,color:12,column:12,column_nam:12,column_width:12,com:[8,12],combin:[5,8,12],come:[1,5],comma:[5,8,12],command:[1,4,5,12],commandlin:5,commatsci:4,common:[1,10],commonli:4,compact:[8,10,12],compar:[5,8,12],compat:8,complet:4,complex:[1,5],compliant:[8,12],complic:5,compound:8,compress:8,compress_do:8,compris:1,comput:[4,8,12],computedentri:[4,8],concept:1,concern:8,conclus:1,concret:10,cond:12,condit:[4,5,12],conf:[0,1,5,8],config:[2,4,5,8,10,11,12],config_dict:8,config_fil:8,configgroup:8,configur:[1,2,4,8,10,12],configurationfileerror:8,conjunct:5,connect:[1,4,5,8,10],consid:[4,8],consist:[8,12],consol:5,consola:12,constraint:12,constraint_is_method:12,constraint_sect:12,constraint_spec:12,constraintoper:12,constraintspec:12,constraintspecsect:12,constraintviol:12,constraintviolationgroup:12,construct:10,constructor:[1,8,9,10,12],contain:[0,1,4,8,10,12],contains_vasp_input:8,content:[0,6,7],continu:12,contract:4,contriv:1,control:1,conveni:[1,5,8],conversion_electrod:10,convert:[5,8,10],coordin:8,copi:[1,4,8,10,11],copy_build:[1,7,8,10],copybuild:11,copyright:4,core:[1,6,7,8,9,11],core_collect:10,core_dev:5,core_prod:5,correspond:[4,8],could:[1,5,8,12],count:[1,8,11,12],counter:1,coupl:1,cpu:[1,8],crawl:8,creat:[1,2,4,8,10,11,12],create_query_engin:8,createqueryengineerror:8,creation:[4,8,10],creator:[4,6,7],crit:[1,4,11],criteria:[1,4,5,8,9,10,11],css:[5,12],css_class:12,css_minifi:12,csv:2,csv_dict:8,csv_list:8,ctrl:4,cur:1,cur_val:1,current:[1,4,8,10],cursor:[1,8,10,12],custom:[1,8,11,12],d:[1,5,8,10],daemon:4,dahn:10,dai:[8,12],damag:4,dan:[2,4],data:[1,2,4,8,9,10,12],databas:[2,8,9,10,12],dataset:[8,12],datatyp:1,date:10,datetim:10,davidson:4,db1:12,db2:12,db:[1,2,3,5,6,7],db_kei:8,db_version:10,dbconfig:[2,6,7],dberror:[10,12],dbgroup:[2,6,7],dbname:8,dbpath:4,dd:12,deal:4,debug:8,declar:1,decod:[8,12],deep:8,deepli:8,def:[1,8,10,11,12],default_criteria:8,default_dist:12,default_fil:8,default_port:8,default_properti:[8,10],default_set:8,defin:[5,8,10,11],deleg:8,delet:4,delta:[2,12],demand:8,densiti:5,depend:[2,4],deprec:[2,8],depth:10,dequ:12,deriv:[1,4,11],desc:[1,10,11,12],descr2:[10,11],describ:[1,5,10,11],descript:[10,11,12],design:8,desir:[4,10,11],dest:12,destin:1,detail:[1,4,8,10,11],detect:8,determin:[1,5,9,10],dev:[5,8],develop:[4,5,10],dict:[1,8,10,11,12],dict_expand:12,dict_transform:12,dictionari:[1,8,12],did:1,diff:[2,6,7,8],diff_css:12,differ:[1,2,5,8,10,12],diffformatt:12,diffhtmlformatt:12,diffjsonformatt:12,diffraction_pattern:10,difftextformatt:12,dir_nam:[4,8],direct:[5,12],directli:[8,10],directori:[1,2,4,8,10],disconnect:8,discov:[10,11],discuss:8,displai:5,dist_:12,dist_cod:12,dist_runif:12,distinct:[1,8,12],distinct_kei:8,distrib:12,distribut:[1,4,12],div:12,dkgunter:[2,5],dl:12,do_foo1:12,do_foo2:12,doc:[0,1,2,8,10],docstr:[1,10,11],document:[0,1,4,5,8,10,12],doe:[1,4,5,8,10,12],doeslog:12,doesn:[10,11,12],doi:4,domain:5,don:10,done:[4,10],dos_f:8,dot:[8,12],doubl:10,down:8,download:4,driv:0,driver:[1,10,11],drone:[4,8],dt:12,dump:10,duplic:[8,12],durat:5,dure:[2,8,12],e2e2e2:12,e9e9e9:12,e:[1,4,5,8,10,11,12],e_above_hul:[5,8,10],each:[1,4,5,8,9,10,11,12],easi:[1,4,5,8],easier:[4,8,10],easiest:[4,5],easili:1,easy_instal:4,edg:4,effect:1,effici:[5,8],either:[1,5,10],elaps:12,elapsedtim:12,electrod:10,electronic_structur:10,element:[1,5,8,12],elimin:[8,12],els:[1,8,10,11,12],elt:12,em:12,email:12,email_mod:12,emb:5,embed:5,empti:[1,8,10,11,12],enabl:[4,8,9,10],encapsul:[1,8,12],encod:[8,12],end:[1,5,10],end_tim:12,energi:[4,5,8,10],energy_per_atom:4,engin:[4,8],enough:[1,5,12],ensur:[2,8,12],ensure_ascii:[8,12],ensure_index:8,enter:4,entir:[1,4,8,12],entri:[4,8],enumer:10,equival:[1,5],err:[1,8,11],error:[1,2,5,8,10,11,12],escap:[8,12],essenc:8,etc:[1,2,4,5,8,12],etl:1,evalu:5,even:12,event:[4,12],everi:[1,8,10,12],everyth:1,exact:12,exactli:5,examin:[1,8,10],examp:5,exampl:[1,3,4,7,8,10,12],excel:[4,5],except:[1,4,8,10,12],execut:[1,10,11],exist:[0,8,10],exit:[1,5],expand:[8,12],expect:[1,4,8,12],expected_valu:12,explain:8,explicit:1,explicitli:[1,4,8,10],explor:8,expr1:5,expr2:5,expr:5,express:[4,5,8,10,12],ext:10,extend:8,extend_collect:9,extens:[4,8,10],extern:12,extra:[1,5,12],extract:[1,12],f3f3f3:12,f5f5f5:12,f:[1,5,8],fail:[10,12],fail_fn:10,failur:10,fals:[1,8,10,11,12],famili:[5,12],faster:1,fe:8,featur:[2,4,8,11],fetch:[1,5],few:[1,4],field1:5,field2:5,field3:5,field4:5,field5:5,field:[1,2,4,5,8,10,12],field_sep:10,figur:1,file:[1,2,3,4,8,9,10,11,12],file_build:[7,8,10],file_or_fp:10,filecount:11,filenam:[1,4,5,8],fileserv:8,fill:12,filter:[1,5,11,12],filter_sect:12,final_energi:[8,10],final_structur:8,find:[1,5,8,10,12],findal:10,fine:[1,4,8],first:[1,2,4,8,12],fit:[4,12],fix:[2,5,12],flag:[1,8,11],flamyngo:2,flask:0,fld_fld:10,fld_mark:10,fld_op:10,flexibl:2,fltr:12,fmt:12,fn:10,folder:[0,4],follow:[0,1,3,4,5,8,10,12],font:12,foo:[1,5,8,10,12],footprint:12,fork:10,form:[1,4,5,8,12],format:[1,4,5,8,10,12],formula:4,found:[1,5,8,10,12],four:8,framework:1,free:4,frequenc:5,from:[1,2,4,5,8,9,10,11,12],from_config:8,from_cursor:8,from_dict:[8,10],front:2,frozenset:12,full:[1,5,8,10,12],furnish:4,futur:[1,4],g:[1,4,5,8,10,11,12],gen:12,gener:[1,4,5,8,9,10,12],generate_doc:8,generate_task_doc:8,genom:[2,4,8],geoffroi:4,gerbrand:4,get:[1,5,8,10,11,12],get_basic_analysis_and_error_check:8,get_builder_log:[1,10],get_collect:8,get_collection_nam:10,get_coordination_numb:8,get_databas:8,get_dos_from_id:8,get_el:12,get_entri:[4,8,9],get_entries_in_system:8,get_item:[1,10,11],get_items_paramet:[10,11],get_kei:12,get_paramet:[1,10,11],get_schema:10,get_schema_dir:10,get_schema_fil:10,get_set:8,get_structure_from_id:[4,8],get_task_doc:8,get_test_dir:10,get_uri:8,get_valid_path:8,gga:8,git:0,github:[2,4],give:[1,3],given:[1,3,4,5,8,10,11,12],glob:8,go:[8,10,12],got_valu:12,gov:[2,5],grain:4,grant:4,gridf:8,grouchi:5,group:[1,8,11,12],guarante:[8,12],guid:0,gunter:[2,4],h1:12,h2:12,h3:12,h:[1,5],ha:[1,4,5,10],had:[10,11],had_error:[10,11],handl:[1,2,10],handler:12,happen:1,hardwar:1,has_failur:10,hasexampl:10,hasmeta:10,hautier:4,have:[1,5,8,10,11,12],header:12,height:12,help:[1,4,5,12],helper:8,helvetica:12,here:[1,3,4,5,10,11],herebi:4,heterogen:8,hi:0,hierarchi:10,high:[9,10],higher:10,highest:[1,10],highli:[1,8],himself:8,hint:8,hit:4,hive:8,holder:4,hopefulli:4,host:[1,2,3,5,8,10,12],host_kei:8,hostnam:[5,8,10],how:[1,10],howev:[4,8],html:[1,2,5,10,12],html_theme:0,html_theme_path:0,htmlformatt:12,http:[5,10,12],huge:[1,12],hundr:1,hyperlink:[2,5,12],i:[1,5,8,10,11],icsd:10,icsd_id:5,id:[4,8],id_column:12,id_prefix:10,idea:1,identifi:[1,5,10,12],ignor:[1,8,10,12],iid:12,illustr:1,implement:[1,2,8,9,10,11,12],impli:4,impos:10,improp:1,improv:2,inc_structur:8,incar:8,includ:[1,4,5,8,10,12],incom:[8,10,12],incr:[1,6,7,8],increas:[1,5],increment:[2,10,11,12],indent:[5,8,10,12],independ:1,index:[4,10],individu:1,infil:8,infin:[8,12],infinit:[8,12],info:[1,5,10,12],inform:[1,5,12],inherit:[1,10],init:[4,5,8,10],initi:[1,5,8,10,12],input:[1,8,9,10,11,12],input_fil:[1,11],insecur:4,insert:[1,2,5,8,10,12],insid:[1,10],instal:[1,4],instanc:[1,10,11,12],instanti:8,instead:[1,5,8,10,12],instruct:[1,4],integ:[8,10,12],intend:0,intens:1,interfac:[2,4,5,8,10],intern:[8,10],interpret:[5,8,10,11],interv:12,introduc:1,introduct:2,intuit:8,invalid:12,invoc:1,invok:1,involv:1,ioerror:10,ip:3,is_dict:10,is_empti:12,is_list:10,is_scalar:10,is_track:10,isn:1,issu:[2,5],ital:12,item:[1,5,8,10,11,12],item_separ:[8,12],iter:[1,8,10,11,12],its:[1,5,12],itself:[1,10,11,12],j:4,jain:4,javascript:[8,10,12],json:[1,2,3,4,5,8,10,12],json_schema:10,jsonencod:[8,12],jsonformatt:12,jsonwalk:12,jstype:10,just:[1,4,5,8,10,12],k:5,kei:[1,2,5,8,10,11,12],kenneth:0,key_separ:[8,12],keyerror:[8,10],keyword:[1,3,5,10,12],kill:[1,8,10],kind:[4,8],know:[1,8],known:[8,10],known_collect:10,kocher:4,kpoint:8,kr:0,kr_small:0,kristin:4,kv_sep:10,kvp_dict:8,kw:[10,12],kwarg:[1,8,10,11,12],l:8,lambda:10,languag:4,larg:[0,5,8,12],larger:12,last:[1,5,8,10],later:[1,8,10],latest:[4,10],lbl:[2,5],lbnl:4,leav:5,left:12,len:1,length:12,less:12,let:[5,8,12],letter:12,letter_num:12,level:[5,8,10,12],li2o:4,li:8,liabil:4,liabl:4,librari:[0,4,8],lightweight:1,like:[1,4,5,8,10,12],limit:[2,4,5,8,10],line:[1,4,5,11,12],line_sep:12,liner:1,link:4,linux:4,list:[1,5,8,10,11,12],lixfeyoz:8,ll:1,load:[1,10],load_schema:10,localhost:[1,3,5,8,12],locat:8,log:[1,5,10,12],logger:[1,10],logic:[1,11],look:[1,4,5,8,12],lookup:8,lot:5,low:10,m:5,mac:4,machin:[1,8,10],magic:1,mai:[1,4,5,8,10,11],mail:5,main:[1,5,8,10,12],maintain:2,major:8,make:[1,2,4,5,8,10],manag:[4,8],mani:[4,5,8,9],manipul:1,manual:[4,10],map:[1,5,8,10],mapi_kei:[2,8],margin:12,mark:[1,10],markdown:[5,12],markdownformatt:12,match:[1,5,8,12],materi:[1,2,4,8,9,10,11,12],materialsproject:[5,8],matgendb:2,matter:1,max:[1,12],max_dberror:12,max_force_threshold:8,max_item:12,max_ver:10,max_viol:12,maximum:[1,9,11,12],maxvalue_build:[7,8,10],maxvaluebuild:11,md:5,mdev:5,me:[5,12],mean:[1,5,8,10,12],meant:[1,8],member:[8,12],memori:[1,8,12],merchant:4,merg:[4,10],merge_task:10,messag:[1,5,10,12],meta:[10,12],metadata:[1,10,12],metavar:12,method:[1,4,8,9,10,11,12],mg_core:10,mgbuild:[1,2,4,11],mgdb:[2,4,5,8],mgvv:[2,4],mi:5,michael:4,might:1,min_item:12,min_ver:10,mind:4,minim:[1,5],minimum:[1,12],minor:2,minu:5,miss:[5,12],mit:[4,8],mitsuhiko:0,mix:[10,12],mkdir:4,mode:[1,3,4],modern:1,modif:[1,8],modifi:[4,8,10],modul:[1,2,4,6,7],moment:5,monaco:12,mongdb:10,mongo:[4,8,12],mongo_get:12,mongocli:[2,10],mongod:4,mongodb:[1,2,3,4,5,8,10,11,12],mongojsonencod:[8,12],mongoqueri:12,monospac:12,monoton:1,more:[1,2,4,5,9,10,11,12],most:[0,1,4,5,8,10,12],move:1,mprod:5,mps_id:5,mr_snuffleupagu:3,msonabl:8,much:[1,4],multicor:1,multipl:[1,2,5],multiprocess:[1,8,9,10,11],must:[1,5,8,10,11,12],my:[1,5],my_build:10,mybuild:[10,11],mycollect:[5,10],mydatabas:5,mydb:[8,10],myfil:8,myhost:5,n:[1,5,12],name1:[5,10],name2:[5,10],name:[1,3,4,5,8,10,11,12],name_in_db:5,name_or_index:12,namespac:[6,8],nan:[8,12],narg:12,ncol:12,ncore:[1,9,10,11],nearli:8,neb:4,necessari:[1,5],need:[1,4,5,8],neg:[5,8,12],negatori:5,nelement:5,nest:[8,12],neue:12,new_max:1,new_nam:10,new_task:10,new_valu:12,newer:1,newlin:[8,12],next:[1,12],no_properti:12,noath:3,non:[1,8,10,12],none:[1,5,8,9,10,11,12],noninfring:4,normal:[10,12],normalize_auth:8,note:[1,4,5,8,10,12],noth:[10,11],notic:[1,4,5],notrackingcollect:10,now:[1,2],nrow:12,nth:12,nullconstraintviol:12,num:[1,5,10,12],num_char:1,num_cor:1,num_lin:1,num_viol:12,number:[1,2,3,5,8,9,10,11,12],numer:[2,5,12],o:[8,12],obei:8,object:[1,4,8,9,10,11,12],obtain:[2,4,8],occur:[1,8],odd:12,off:1,often:1,ok:[10,11],old:[1,5,12],omit:4,onc:[1,4],one:[0,1,5,8,9,10,11,12],ones:1,ong:4,onli:[1,3,5,8,10,11,12],onlin:10,only_miss:12,only_valu:12,op:[10,11,12],open:[1,4,5,8,10],oper:[1,5,10,12],oppos:12,option:[1,2,4,8,10,11,12],option_str:12,optional_data:8,orbit:8,order:[1,8,10,12],ordered_col:12,org:[5,8,10],organ:[8,10],os:[0,4],oscar:5,osx:5,ot:8,other:[1,2,5,8,10,11,12],othercontainerclass:12,otherorg:5,othersuck:5,otherwis:[4,5,8,10,11,12],our:[10,12],out:[0,1,4,5],outlin:4,output:[1,2,5,8,9,10,11,12],over:[1,5,12],overflowerror:[8,12],overrid:[1,8,10],own:[1,4,8],oxid:2,p:[5,12],packag:[1,2,4,5,6,7],pad:12,page:[0,1,2,5],pair:[5,8,10,11,12],parallel:10,param2_nam:[10,11],param2_typ:[10,11],param:[1,10,11,12],param_nam:[10,11],param_typ:[10,11],paramet:[1,3,4,8,9,10,11,12],parameter:12,parent:1,pars:[8,10,11,12],parse_do:8,parse_fn_docstr:10,parse_projected_eigen:8,part:[1,5,8,12],partial:5,particular:[4,8],pass:[1,5,8,9,10,11,12],password:[1,2,3,5,8,10],password_kei:8,past:10,path:[0,1,5,8,10,12],pattern:[5,8],pdf:[1,2],per:[1,4,5],percent:5,perfectli:[1,4],perform:[1,2,8,9,10,11,12],permiss:4,permit:4,person:4,persson:4,phase:8,phase_diagram:10,ping:4,pip:4,pl:2,place:[1,4,8,10,12],plain:12,pleas:[4,5,8],plu:5,po:10,point:[5,8],pool:9,popul:12,porou:[10,11],port:[1,3,5,8,10,12],port_kei:8,portion:4,poscar:8,posit:[1,5,10,12],possibl:[1,5],post:[8,10],post_process:8,postprocess:[4,8],potcar:8,potenti:[8,12],power:[2,4],pre:8,prefer:5,prefix:[1,2,5,8,10],present:[1,5,8,10],press:4,pretti:[1,8,12],pretty_formula:[4,5],prevent:[8,12],previou:[1,12],previous:1,print:[1,4,5,8,10,12],probabl:[1,12],process:[1,8,10,11],process_item:[1,10,11],process_killed_run:8,process_vasprun:8,procrunn:10,prod:5,produc:5,product:[4,5],profil:8,program:[1,5,10,11],progress:12,progressmet:12,project:[0,1,4,8,9,12],prompt:4,prop:[4,5,12],prop_dict:8,proper:2,properli:[1,2],properti:[1,4,5,8,10,12],proport:12,provid:[2,4,5,8,9],publish:4,pull:1,purpos:[1,4,5,8,10],put:[0,1,5,10,12],py:[0,4],pymatgen:[1,2,3,5],pymatpro:10,pymmongo:8,pymongo:[4,8,10,12],pypi:4,python:[1,4,8,10,11,12],pythonmethod:12,q:[1,5],qe:[4,10],qe_class:8,qetransmut:9,qualifi:12,quantiti:[5,8],queri:[1,2,5,8,9,10,12],query_engin:[1,4,6,7,10,11],query_on:8,query_post:[8,10],queryengin:[1,4,8,9,10,11,12],queryerror:8,querylistresult:8,queryresult:8,question:1,queue:[1,10,11],quiet:1,quot:5,quotabl:8,r3:12,r:[1,4,8],radiu:12,rais:[8,10,11,12],randomli:12,rather:5,raw:[1,12],re:1,re_get:8,re_kei:8,read:[1,3,5,8,10,11],readabl:1,readi:12,readlin:1,readonli:8,readonly_first:8,readonly_password:[2,3,5],readonly_us:[2,3,5,8],real:[1,5],realli:[1,10],rebuild:1,rec:[1,12],recalcul:1,receiv:5,receiver2:5,recip:12,recipi:[5,12],recogn:[3,5],recommend:[1,8],record:[1,5,8,10,11,12],recurs:[8,12],reduc:1,refactor:2,refer:[8,12],regardless:10,regexdict:8,regress:[8,12],regular:[8,10],reitz:0,rel:[1,4],relai:5,relat:[0,10],relax1:8,relax2:8,relax:8,releas:[2,4],reli:1,rememb:1,remot:12,remov:[2,8],repeat:[1,5],replac:[1,5,8,10],replicaset:[8,10],repo:4,report:[2,5,6,7,8],report_field:12,reportbackuperror:12,reporthead:12,reportjsonencod:12,reportsect:12,repositori:0,repr:12,represent:[8,10,12],request:10,requir:[1,2,3,5,8,11,12],research:4,resolv:[8,10],resort:8,respect:[4,5,10],rest:[2,5,8],restrict:[4,8],restructur:[10,11],result:[1,2,8,10,12],result_cursor:8,result_post:[8,10],result_subset:12,retriev:[1,5,8,9,10,12],rgb:12,richard:4,right:[4,10],robust:4,root:[4,8,10],row:12,rs:12,rtype:10,run:[2,4,8,10,11,12],s:[0,1,4,5,8,9,10,11,12],sai:[5,8],sake:1,same:[1,5,8,10,12],sampl:[4,12],sample_sect:12,sampler:12,san:12,sandbox:10,sandbox_collect:10,satisfi:8,save:[1,5,10],scalar:10,scan:1,scene:1,schema:[6,7,8],schemaerror:10,schemaparseerror:10,schemapatherror:10,schemata:10,schematypeerror:10,scheme:[5,10],scienc:4,script:[1,2,4,8],search:[4,5,9,12],sec:12,second:[1,5,11,12],section:[1,5,12],sectionhead:12,sectionpart:12,see:[1,4,5,8,10,12],seen:1,select:[1,5,12],self:[1,8,10,11,12],sell:4,semant:12,send:[5,12],sender:[5,12],sens:[1,10],sensibl:[8,12],sent:[5,12],sep:8,separ:[5,8,12],sequenc:8,sequenti:1,serial:[8,10,12],serializ:[8,12],serif:12,server1:5,server2:5,server:[3,4,5,8,12],set:[1,2,4,5,8,10,12],set_alias:12,set_aliases_and_default:8,set_collect:8,set_mark:10,set_prefix:8,set_progress:12,set_subject:12,set_track:10,setter:10,setup:[10,11],shall:4,share:[1,10],shared_dict:[1,10],shared_list:10,shell:5,should:[1,4,5,8,10,12],show:[1,5,12],shown:[1,5],shreya:4,shyue:4,sign:[5,12],signific:2,similar:4,simpl:[4,5,8,11,12],simpli:[1,4,5,8,10,12],simplif:2,simplifi:[1,5,8],simul:8,simulate_mod:8,sinc:1,singl:[1,5,8,10,12],site:8,site_dict:8,size:[5,12],skip:[1,8,12],skipkei:[8,12],slice:5,slow:8,small:[0,1],smoqe:5,smtp:[5,12],snippet:1,snl_id:5,so:[1,4,5,10],softwar:4,sole:12,some:[1,2,4,5,8,10,11,12],somebodi:5,somecontainerclass:12,somekei:5,sometim:4,somewhat:8,sort:[1,2,8,10,12],sort_kei:[8,12],sort_row:12,sortbi:12,sourc:[1,4,8,9,10,11,12],space:10,spawn:1,spec:[5,12],special:[1,10,11],specif:[1,2,4,5,8,12],specifi:[4,5,8,10,12],spectacular:8,spend:5,sphinx:[1,2,4],spiderman2:8,spiderman:8,spot:1,stabil:[2,8],stage:1,standard:[0,1,4,5,8,10],standardtransmut:9,start:[1,4,10],start_tim:12,state:[1,8,10],statu:[10,11],step:[1,4],stone:1,stop:[1,4],storag:8,store:[1,8,12],str:[1,8,10,12],strang:1,streamlin:1,string:[4,5,8,10,12],strip:10,structur:[4,8,9],style:[1,4,5,8,9,10,11,12],sub:[1,5,8,10,12],subclass:[8,10,11,12],subcommand:2,subdirectori:10,subfold:8,subj:12,subject:[4,5,12],subkei:8,sublicens:4,submit:5,submodul:[0,6,7],subpackag:[1,6],subsequ:[1,4],subset:[5,12],substanti:4,subtl:1,succe:1,success:[1,8,10,11],suffici:[5,8],suffix:10,suitabl:4,superclass:12,suppi:[8,10],suppli:[8,10,11],support:[2,8,12],supported_properti:8,sure:[1,10],sy:0,symbol:8,syntax:[3,4,8,12],system:[4,8],t:[1,8,10,11,12],tabl:[2,5,12],tag:8,take:[2,5,8,10,12],taken:[4,5],target:[1,5,10,11,12],task:[1,3,4,5,8,10],task_id:[4,5,8],task_suffix:10,tasknam:8,td:12,temporari:10,term:4,test1:[1,5],test2:[1,5],test:[4,5,8,10,12],test_db:4,test_porous_build:10,text:[5,10,11,12],th:12,than:[1,5,8,9,12],thei:[1,2,3,4,9],them:[1,2,8,12],theme:0,these_must:5,thi:[0,1,4,5,8,9,10,11,12],thing:[1,12],third:5,those:5,thread:[1,10,11],through:[1,2],throughput:9,thu:1,time:[1,5,10,11,12],titl:12,tmp:10,to_dict:10,to_includ:5,to_mongo:12,toler:5,ton:5,tool:4,top:[5,10,11,12],topmost:4,tort:4,total_s:12,tr1:12,tr:12,tr_even:12,tr_odd:12,track:[1,10],track_field:10,track_oper:10,tracked_find:10,trackedcollect:10,trackedqueryengin:[1,10],tracker:[10,12],tracking_collect:10,tracking_collection_nam:10,tracking_nam:10,trackinginterfac:10,transform:[1,8,9,12],transformedstructur:9,translat:[4,8,10,12],transmut:[6,7,8],transpar:[1,10],treat:12,treatment:8,tri:8,trivial:1,tupl:[8,10,12],turn:1,tweedlede:8,tweedledum:8,twice:11,two:[1,2,5,8,10,12],type:[1,2,4,5,8,10,11,12],typecod:10,typeerror:[8,12],typenam:10,typic:8,u:[1,5,8],ui:[2,4,8],ultim:1,unauthent:5,uncach:8,under:[4,5],underli:8,understand:1,understood:1,uniform:12,uniqu:8,unit:[4,10],unittest:4,unix:[5,8],unknown:12,unless:[1,12],unlik:[1,5],unset:8,unsuccess:[8,10],until:12,untrackedqueryengin:10,unzip:4,up:[1,4,5],updat:[1,2,8,10,11,12],update_dupl:8,upsert:1,uri:8,url:[5,12],us:[0,1,2,3,4,5,8,9,10,11,12],usabl:2,usag:[5,10],use_admin:8,use_full_uri:8,user:[1,2,3,5,8,10],user_kei:8,user_kw:10,usual:[1,5,8],util:[1,6,7],v1:12,v2:12,v:[1,5,8],val:12,valid:[4,6,7,8,10],validate_exampl:10,validatorsyntaxerror:12,valu:[1,2,5,8,10,11,12],value1:10,value2:10,value_json:12,value_transform:12,valueerror:[8,10,11,12],vand:2,variabl:[1,2],variou:8,vasp:[3,4,5,8,10],vasprun:8,vasprun_fil:8,vasptodbtaskdron:[4,8],verbos:[1,5,10,12],veri:[0,1,4,5,8],verif:4,version:[1,2,8,9,10,11,12],via:8,view:5,vincent:4,violat:[5,12],visual:5,vof:2,volume_change_threshold:8,vv:[2,6,7,8],wa:[1,5,10,11,12],wai:[1,4,8,10],wait:10,walk:[1,12],want:[1,5,8,10],warranti:4,we:[1,5,8,10,12],web:8,webpag:5,websit:4,weight:12,well:[3,4],went:[10,11],were:8,what:[1,10],when:[1,4,8,10,12],where:[1,4,5,8,10],whether:[1,4,8,9,10,12],which:[1,4,5,8,9,10,11,12],white:[10,12],whitespac:[8,12],who:10,whole:[1,8],whom:4,whose:8,why:10,width:[5,12],will_copi:12,william:4,wipe:10,wise:5,within:[5,12],without:[1,4,8,10],work:[1,4,10,11,12],wors:[1,5],would:[1,5,8,10,12],wrap:12,wrapper:[8,10],writabl:5,write:[3,4,8,11],written:[1,4],wrong:[1,10,11,12],www:8,x:[5,12],xl:2,xml:8,xxxx:5,y:[1,5,12],yaml:[2,5,12],yamlconfig:12,yet:1,yield:[1,12],you:[0,1,4,5,8,10,12],your:[0,1,4,5,8],yyyi:5,zero:[1,5],zlib:8},titles:["krTheme Sphinx Style","Database \u201cBuilders\u201d","v0.7.0","Database configuration","Pymatgen-db","Materials Project Database Validation: mgvv","pymatgen","pymatgen namespace","pymatgen.db package","pymatgen.db.alchemy package","pymatgen.db.builders package","pymatgen.db.builders.examples package","pymatgen.db.vv package"],titleterms:{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,alchemi:9,api:4,argument:5,basic:1,build:1,builder:[1,10,11],calcul:4,chang:4,cite:4,configur:[3,5],constraint:5,content:[1,8,9,10,11,12],copy_build:11,copybuild:1,core:10,creator:8,databas:[1,3,4,5],db:[4,8,9,10,11,12],dbconfig:8,dbgroup:8,development:4,diff:[5,12],displai:1,doc:4,email:5,exampl:[5,11],extend:4,featur:1,file:5,file_build:11,filecount:1,get:4,how:4,incr:10,increment:1,indic:4,initi:4,insert:4,krtheme:0,licens:4,log:4,materi:5,maxvalue_build:11,maxvaluebuild:1,mgvv:5,modul:[8,9,10,11,12],namespac:7,option:5,other:4,packag:[8,9,10,11,12],page:4,parallel:1,project:5,pymatgen:[4,6,7,8,9,10,11,12],queri:4,query_engin:8,refer:4,report:12,requir:4,run:1,schema:10,setup:4,simpl:1,sphinx:0,stabl:4,style:0,subcommand:5,submodul:[8,9,10,11,12],subpackag:[7,8,9,10,12],syntax:5,tabl:4,transmut:9,usag:[1,4],util:[8,10,12],v0:2,valid:[5,12],version:4,vv:12,write:1}}) \ No newline at end of file +Search.setIndex({docnames:["_themes/README","builders","change_log","dbconfig","index","mgvv","modules","pymatgen","pymatgen.db","pymatgen.db.alchemy","pymatgen.db.builders","pymatgen.db.builders.examples","pymatgen.db.vv"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["_themes/README.rst","builders.rst","change_log.rst","dbconfig.rst","index.rst","mgvv.rst","modules.rst","pymatgen.rst","pymatgen.db.rst","pymatgen.db.alchemy.rst","pymatgen.db.builders.rst","pymatgen.db.builders.examples.rst","pymatgen.db.vv.rst"],objects:{"":[[7,0,0,"-","pymatgen"]],"mgvv-diff":[[5,7,1,"cmdoption-mgvv-diff-D","--db"],[5,7,1,"cmdoption-mgvv-diff-E","--email"],[5,7,1,"cmdoption-mgvv-diff-s","--email-server"],[5,7,1,"cmdoption-mgvv-diff-f","--file"],[5,7,1,"cmdoption-mgvv-diff-F","--format"],[5,7,1,"cmdoption-mgvv-diff-help","--help"],[5,7,1,"cmdoption-mgvv-diff-i","--info"],[5,7,1,"cmdoption-mgvv-diff-k","--key"],[5,7,1,"cmdoption-mgvv-diff-m","--missing"],[5,7,1,"cmdoption-mgvv-diff-n","--numeric"],[5,7,1,"cmdoption-mgvv-diff-P","--print"],[5,7,1,"cmdoption-mgvv-diff-p","--properties"],[5,7,1,"cmdoption-mgvv-diff-q","--query"],[5,7,1,"cmdoption-mgvv-diff-u","--url"],[5,7,1,"cmdoption-mgvv-diff-v","--verbose"],[5,7,1,"cmdoption-mgvv-diff-D","-D"],[5,7,1,"cmdoption-mgvv-diff-E","-E"],[5,7,1,"cmdoption-mgvv-diff-F","-F"],[5,7,1,"cmdoption-mgvv-diff-P","-P"],[5,7,1,"cmdoption-mgvv-diff-f","-f"],[5,7,1,"cmdoption-mgvv-diff-help","-h"],[5,7,1,"cmdoption-mgvv-diff-i","-i"],[5,7,1,"cmdoption-mgvv-diff-k","-k"],[5,7,1,"cmdoption-mgvv-diff-m","-m"],[5,7,1,"cmdoption-mgvv-diff-n","-n"],[5,7,1,"cmdoption-mgvv-diff-p","-p"],[5,7,1,"cmdoption-mgvv-diff-q","-q"],[5,7,1,"cmdoption-mgvv-diff-s","-s"],[5,7,1,"cmdoption-mgvv-diff-u","-u"],[5,7,1,"cmdoption-mgvv-diff-v","-v"]],"pymatgen.db":[[9,0,0,"-","alchemy"],[8,0,0,"-","config"],[8,0,0,"-","creator"],[8,0,0,"-","query_engine"],[8,0,0,"-","util"]],"pymatgen.db.alchemy":[[9,0,0,"-","transmuters"]],"pymatgen.db.alchemy.transmuters":[[9,1,1,"","QeTransmuter"]],"pymatgen.db.config":[[8,2,1,"","ConfigurationFileError"],[8,1,1,"","DBConfig"],[8,6,1,"","auth_aliases"],[8,6,1,"","get_settings"],[8,6,1,"","normalize_auth"]],"pymatgen.db.config.DBConfig":[[8,3,1,"","ALL_SETTINGS"],[8,3,1,"","DEFAULT_FILE"],[8,3,1,"","DEFAULT_PORT"],[8,3,1,"","DEFAULT_SETTINGS"],[8,4,1,"","collection"],[8,5,1,"","copy"],[8,4,1,"","dbname"],[8,4,1,"","host"],[8,4,1,"","password"],[8,4,1,"","port"],[8,4,1,"","settings"],[8,4,1,"","user"]],"pymatgen.db.creator":[[8,1,1,"","VaspToDbTaskDrone"],[8,6,1,"","contains_vasp_input"],[8,6,1,"","get_basic_analysis_and_error_checks"],[8,6,1,"","get_coordination_numbers"],[8,6,1,"","get_uri"]],"pymatgen.db.creator.VaspToDbTaskDrone":[[8,5,1,"","as_dict"],[8,5,1,"","assimilate"],[8,5,1,"","calculate_stability"],[8,5,1,"","convert"],[8,5,1,"","from_dict"],[8,5,1,"","generate_doc"],[8,5,1,"","get_task_doc"],[8,5,1,"","get_valid_paths"],[8,5,1,"","post_process"],[8,5,1,"","process_killed_run"],[8,5,1,"","process_vasprun"]],"pymatgen.db.query_engine":[[8,1,1,"","QueryEngine"],[8,2,1,"","QueryError"],[8,1,1,"","QueryListResults"],[8,1,1,"","QueryResults"]],"pymatgen.db.query_engine.QueryEngine":[[8,3,1,"","ALIASES_CONFIG_KEY"],[8,3,1,"","COLLECTION_KEY"],[8,3,1,"","DB_KEY"],[8,3,1,"","HOST_KEY"],[8,3,1,"","PASSWORD_KEY"],[8,3,1,"","PORT_KEY"],[8,3,1,"","USER_KEY"],[8,3,1,"","aliases"],[8,5,1,"","close"],[8,4,1,"","collection_name"],[8,3,1,"","default_criteria"],[8,3,1,"","default_properties"],[8,5,1,"","ensure_index"],[8,5,1,"","from_config"],[8,5,1,"","get_dos_from_id"],[8,5,1,"","get_entries"],[8,5,1,"","get_entries_in_system"],[8,5,1,"","get_structure_from_id"],[8,5,1,"","query"],[8,5,1,"","query_one"],[8,3,1,"","query_post"],[8,3,1,"","result_post"],[8,5,1,"","set_aliases_and_defaults"]],"pymatgen.db.query_engine.QueryListResults":[[8,5,1,"","clone"]],"pymatgen.db.query_engine.QueryResults":[[8,5,1,"","clone"],[8,5,1,"","from_cursor"]],"pymatgen.db.util":[[8,1,1,"","MongoJSONEncoder"],[8,6,1,"","collection_keys"],[8,6,1,"","get_collection"],[8,6,1,"","get_database"],[8,6,1,"","get_settings"]],"pymatgen.db.util.MongoJSONEncoder":[[8,5,1,"","default"]],mgvv:[[5,7,1,"cmdoption-mgvv-alias","--alias"],[5,7,1,"cmdoption-mgvv-collection","--collection"],[5,7,1,"cmdoption-mgvv-0","--config"],[5,7,1,"cmdoption-mgvv-email","--email"],[5,7,1,"cmdoption-mgvv-f","--file"],[5,7,1,"cmdoption-mgvv-format","--format"],[5,7,1,"cmdoption-mgvv-help","--help"],[5,7,1,"cmdoption-mgvv-limit","--limit"],[5,7,1,"cmdoption-mgvv-v","--verbose"],[5,7,1,"cmdoption-mgvv-collection","-C"],[5,7,1,"cmdoption-mgvv-format","-F"],[5,7,1,"cmdoption-mgvv-alias","-a"],[5,7,1,"cmdoption-mgvv-0","-c"],[5,7,1,"cmdoption-mgvv-email","-e"],[5,7,1,"cmdoption-mgvv-f","-f"],[5,7,1,"cmdoption-mgvv-help","-h"],[5,7,1,"cmdoption-mgvv-limit","-m"],[5,7,1,"cmdoption-mgvv-v","-v"]],pymatgen:[[8,0,0,"-","db"]]},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","exception","Python exception"],"3":["py","attribute","Python attribute"],"4":["py","property","Python property"],"5":["py","method","Python method"],"6":["py","function","Python function"],"7":["std","cmdoption","program option"]},objtypes:{"0":"py:module","1":"py:class","2":"py:exception","3":"py:attribute","4":"py:property","5":"py:method","6":"py:function","7":"std:cmdoption"},terms:{"0":[1,5,8,9],"028":4,"1":[1,5,8],"10":[4,5],"100":5,"1016":4,"12":4,"127":8,"13":2,"15":5,"2":[1,4,5,8],"20":5,"2011":4,"2012":4,"2013":4,"27017":[1,3,5,8],"3":5,"314":4,"319":4,"4":4,"5":[4,5,8],"50":5,"68":4,"7":4,"8":1,"9":8,"9101":5,"break":1,"case":[1,5],"class":[1,4,8,9],"default":[1,3,4,5,8],"do":[1,4,8],"export":2,"final":[1,8],"float":8,"function":[1,8],"import":[1,4],"int":8,"long":5,"new":[1,2,4,5,8,9],"return":[1,2,4,8],"static":8,"switch":8,"true":[1,5,8],"while":8,A:[1,4,5,8,9],AND:4,AS:4,As:[1,5],At:5,BE:4,BUT:4,But:1,By:[1,5],FOR:4,For:[1,4,5,8],IN:4,IS:4,If:[1,3,4,5,8],In:[1,5,8],It:[0,4,5,8],NO:4,NOT:4,Not:1,OF:4,OR:4,THE:4,TO:4,The:[0,1,3,4,5,8,9],Then:8,There:[1,8],These:[1,5],To:[0,1,4,5,8],WITH:4,With:1,__init__:1,_alias:5,_email:5,_group:1,_id:1,_log:1,_src:1,_target_col:1,_theme:0,ab:[5,8],abc:8,abil:[2,8],abl:1,about:1,abov:[4,5],absolut:1,abspath:0,abstractdron:8,accept:[2,4],access:[1,3,4,8,9],accommod:1,accord:[1,5],across:[5,8],action:[1,4],activ:1,actual:[1,8],ad:[1,2,5,8],adapt:4,add:[0,1,2,4,5,8],addit:[1,8],additional_criteria:8,additional_field:8,addon:0,addr:5,address:5,adequ:8,admin:8,admin_password:[3,5],admin_us:[3,5],administr:5,advanc:4,advantag:5,affect:8,aflow:8,after:[1,4,5,8],against:5,alchemi:[6,7,8],algorithm:1,alia:[4,5,8],alias:[2,4,5,8],aliases_config:8,aliases_config_kei:8,all:[1,3,4,5,8,9],all_set:8,allow:[1,2,4,5,8],allow_nan:8,also:[0,1,2,4,5,8],altern:[0,1,2],although:1,alwai:[1,4,5],amount:1,an:[1,2,3,4,5,8],analysi:[4,5,8],ani:[1,4,5,8],anoth:1,anubhav:4,anyth:4,api:[2,8],app:8,append:[0,8],appli:[4,5,8,9],ar:[1,2,3,4,5,8],arbitrari:2,arg:[1,8],arguabl:5,argument:[1,4,8],aris:4,arrai:[5,8],arriv:5,as_dict:8,ascii:8,ask:1,assess:8,assimil:8,associ:[2,4,5],assum:[1,3,5,8],atom:4,attempt:8,attribut:8,auth:8,auth_alias:8,authent:[1,3,4,5,8],author:[1,4,8],auto:4,autodoc:1,autom:1,automat:[1,4,5,8],avail:4,awesom:1,b:[1,8],back:1,bandstructur:4,bandwidth:5,bar:5,base:[8,9],basi:8,basic:8,becaus:[1,5],becom:5,been:[1,4],befor:[1,5,8],begin:[1,5],behavior:[1,8],behind:1,below:[1,4,5],benefit:1,better:[1,2,5],between:[1,8],bigbird:3,bigbuild:1,binari:4,bird:1,bleed:4,block:5,bookkeep:1,bool:8,borg:8,borgqueen:8,both:[1,5,8],branch:9,brief:2,browser:5,bug:[2,4],buggi:4,build:[2,4],builder:2,c:[4,5],calcul:[1,5,8],calculate_st:8,call:[1,4,5,8],can:[0,1,2,4,5,8,9],cannot:8,care:[4,8],caus:[1,8],ceder:4,central:1,cfg1:8,cfg2:8,cfg3:8,chang:5,charact:[1,8],charg:4,check:[0,8],check_circular:8,chemic:8,chevrier:4,choic:4,cholia:4,choos:1,chosen:1,circular:8,claim:4,clash:1,classmethod:8,clean:[5,8],cleanup:2,client:1,clone:[4,8],close:[4,8],code:[1,5,8],coincident:1,coll:8,collect:[1,2,3,4,5,8],collection_kei:8,collection_nam:[5,8],com:8,combin:[5,8],come:[1,5],comma:5,command:[1,4,5],commandlin:5,commatsci:4,common:1,commonli:4,compact:8,compar:[5,8],compat:8,complet:4,complex:[1,5],compliant:8,complic:5,compound:8,compress:8,compress_do:8,compris:1,comput:[4,8],computedentri:[4,8],concept:1,concern:8,conclus:1,condit:[4,5],conf:[0,1,5,8],config:[2,4,5,6,7],config_dict:8,config_fil:8,configur:[1,2,4,8],configurationfileerror:8,conjunct:5,connect:[1,4,5,8],consid:[4,8],consist:8,consol:5,constructor:[1,8,9],contain:[0,1,4,8],contains_vasp_input:8,content:[0,6,7],contract:4,contriv:1,control:1,conveni:[1,5,8],convert:[5,8],coordin:8,copi:[1,4,8],copy_build:[1,10],copyright:4,core:[1,9],core_dev:5,core_prod:5,correspond:[4,8],could:[1,5],count:[1,8],counter:1,coupl:1,cpu:[1,8],crawl:8,creat:[1,2,4,8],creation:[4,8],creator:[4,6,7],credenti:8,crit:[1,4],criteria:[1,4,5,8,9],css:5,csv:2,ctrl:4,cur:1,cur_val:1,current:[1,4,8],cursor:[1,8],custom:[1,8],d:[1,5,8],daemon:4,dai:8,damag:4,dan:[2,4],data:[1,2,4,8,9],databas:[2,8,9],dataset:8,datatyp:1,datetim:8,davidson:4,db:[1,2,3,5,6,7],db_kei:8,dbconfig:[2,8],dbgroup:2,dbname:8,dbpath:4,deal:4,debug:8,declar:1,decod:8,decomposes_to:8,deep:8,deepli:8,def:1,default_criteria:8,default_fil:8,default_port:8,default_properti:8,default_set:8,defin:[5,8],deleg:8,delet:4,delta:2,densiti:5,depend:[2,4],deprec:2,deriv:[1,4],desc:1,describ:[1,5],design:8,desir:4,destin:1,detail:[1,4,8],detect:8,determin:[1,5,9],dev:[5,8],develop:[4,5],dict:[1,8],dictionari:[1,8],did:1,diff:2,differ:[1,2,5,8],dir_nam:[4,8],direct:5,directli:8,directori:[1,2,4,8],disconnect:8,displai:5,distinct:[1,8],distinct_kei:8,distribut:[1,4],dkgunter:[2,5],doc:[0,1,2,8],docstr:1,document:[0,1,4,5,8],doe:[1,4,5,8],doi:4,domain:5,done:4,dos_f:8,down:8,download:4,driv:0,driver:1,drone:[4,8],duplic:8,durat:5,dure:[2,8],e:[1,4,5,8],e_above_hul:[5,8],each:[1,4,5,8,9],easi:[1,4,5,8],easier:[4,8],easiest:[4,5],easili:1,easy_instal:4,edg:4,effect:1,effici:[5,8],either:[1,5],element:[1,5,8],elimin:8,els:[1,8],emb:5,embed:5,empti:[1,8],enabl:[4,8,9],encapsul:[1,8],encod:8,end:[1,5],energi:[4,5,8],energy_per_atom:4,engin:[4,8],enough:[1,5],ensur:[2,8],ensure_ascii:8,ensure_index:8,enter:4,entir:[1,4,8],entri:[4,8],equival:[1,5],err:[1,8],error:[1,2,5,8],escap:8,essenc:8,etc:[1,2,4,5,8],etl:1,evalu:5,event:4,everi:1,everyth:1,exactli:5,examin:[1,8],examp:5,exampl:[1,3,4,8,10],excel:[4,5],except:[1,4,8],execut:1,exist:[0,8],exit:[1,5],expect:[1,4,8],explain:8,explicit:1,explicitli:[1,4,8],explor:8,expr1:5,expr2:5,expr:5,express:[4,5],extend_collect:9,extens:[4,8],extra:[1,5],extract:1,f:[1,5,8],fals:[1,8],famili:5,faster:1,fe:8,featur:[2,4,8],fetch:[1,5],few:[1,4],field1:5,field2:5,field3:5,field4:5,field5:5,field:[1,2,4,5,8],figur:1,file:[1,2,3,4,8,9],file_build:10,filenam:[1,4,5,8],fileserv:8,filter:[1,5],final_energi:8,final_structur:8,find:[1,5,8],fine:[1,4,8],first:[1,2,4,8],fit:4,fix:[2,5],flag:1,flamyngo:2,flask:0,flexibl:2,folder:[0,4],follow:[0,1,3,4,5,8],foo:[1,5],form:[1,4,5,8],format:[1,4,5,8],formula:4,found:[1,5,8],four:8,framework:1,free:4,frequenc:5,from:[1,2,4,5,8,9],from_config:8,from_cursor:8,from_dict:8,front:2,full:[1,5,8],furnish:4,futur:[1,4],g:[1,4,5,8],gener:[1,4,5,8,9],generate_doc:8,generate_task_doc:8,genom:[2,4,8],geoffroi:4,gerbrand:4,get:[1,5,8],get_basic_analysis_and_error_check:8,get_builder_log:1,get_collect:8,get_coordination_numb:8,get_databas:8,get_dos_from_id:8,get_entri:[4,8,9],get_entries_in_system:8,get_item:1,get_paramet:1,get_set:8,get_structure_from_id:[4,8],get_task_doc:8,get_uri:8,get_valid_path:8,gga:8,git:0,github:[2,4],give:[1,3],given:[1,3,4,5,8],go:8,gov:[2,5],grain:4,grant:4,gridf:8,grouchi:5,group:1,guarante:8,guid:0,gunter:[2,4],h:[1,5],ha:[1,4,5],handl:[1,2],happen:1,hardwar:1,hautier:4,have:[1,5,8],help:[1,4,5],helper:8,here:[1,3,4,5],herebi:4,heterogen:8,hi:0,high:9,highest:1,highli:[1,8],himself:8,hint:8,hit:4,hive:8,holder:4,hopefulli:4,host:[1,2,3,5,8],host_kei:8,hostnam:[5,8],how:1,howev:[4,8],html:[1,2,5],html_theme:0,html_theme_path:0,http:5,huge:1,hundr:1,hyperlink:[2,5],i:[1,5,8],icsd_id:5,id:[4,8],idea:1,identifi:[1,5],ignor:[1,8],illustr:1,implement:[1,2,9],impli:4,improp:1,improv:2,inc_structur:8,incar:8,includ:[1,4,5,8],incom:8,incr:1,increas:[1,5],increment:2,indent:[5,8],independ:1,index:4,individu:1,infil:8,infin:8,infinit:8,info:[1,5],inform:[1,5],inherit:1,init:[4,5,8],initi:[1,5,8],input:[1,8,9],input_fil:1,insecur:4,insert:[1,2,5,8],insid:1,instal:[1,4],instanc:1,instanti:8,instead:[1,5,8],instruct:[1,4],integ:8,intend:0,intens:1,interfac:[2,4,5,8],intern:8,interpret:[5,8],introduc:1,introduct:2,intuit:8,invoc:1,invok:1,involv:1,ip:3,isn:1,issu:[2,5],item:[1,5,8],item_separ:8,iter:[1,8],its:[1,5],itself:1,j:4,jain:4,javascript:8,json:[1,2,3,4,5,8],jsonencod:8,just:[1,4,5,8],k:5,kei:[1,2,5,8],kenneth:0,key_separ:8,keyword:[1,3,5],kill:[1,8],kind:[4,8],know:[1,8],known:8,kocher:4,kpoint:8,kr:0,kr_small:0,kristin:4,kwarg:[1,8],languag:4,larg:[0,5,8],last:[1,5,8],later:1,latest:4,lbl:[2,5],lbnl:4,leav:5,len:1,let:[5,8],level:[5,8],li2o:4,li:8,liabil:4,liabl:4,librari:[0,4,8],lightweight:1,like:[1,4,5,8],limit:[2,4,5,8],line:[1,4,5],liner:1,link:4,linux:4,list:[1,5,8],lixfeyoz:8,ll:1,load:1,localhost:[1,3,5,8],locat:8,log:[1,5],logger:1,logic:1,look:[1,4,5,8],lot:5,m:5,mac:4,machin:[1,8],magic:1,mai:[1,4,5,8],mail:5,main:[1,5,8],maintain:2,major:8,make:[1,2,4,5,8],manag:[4,8],mani:[4,5,8,9],manipul:1,manual:4,map:[1,5,8],mapi_kei:[2,8],mark:1,markdown:5,match:[1,5],materi:[1,2,4,8,9],materialsproject:[5,8],matgendb:2,matter:1,max:1,max_force_threshold:8,maximum:[1,9],maxvalue_build:10,md:5,mdev:5,me:5,mean:[1,5,8],meant:[1,8],member:8,memori:[1,8],merchant:4,merg:4,messag:[1,5],metadata:1,method:[1,4,8,9],mgbuild:[1,2,4],mgdb:[2,4,5,8],mgvv:[2,4],mi:5,michael:4,might:1,mind:4,minim:[1,5],minimum:1,minor:2,minu:5,miss:5,mit:[4,8],mitsuhiko:0,mkdir:4,mode:[1,3,4],modern:1,modif:[1,8],modifi:[4,8],modul:[1,2,4,6,7],moment:5,mongo:[4,8],mongocli:2,mongod:4,mongodb:[1,2,3,4,5,8],mongojsonencod:8,monoton:1,more:[1,2,4,5,9],most:[0,1,4,5,8],move:1,mprod:5,mps_id:5,mr_snuffleupagu:3,much:[1,4],multicor:1,multipl:[1,2,5],multiprocess:[1,8,9],must:[1,5,8],my:[1,5],mycollect:5,mydatabas:5,myfil:8,myhost:5,n:[1,5],name1:5,name2:5,name:[1,3,4,5,8],name_in_db:5,namespac:6,nan:8,ncore:[1,9],nearli:8,neb:4,necessari:[1,5],need:[1,4,5,8],neg:[5,8],negatori:5,nelement:5,nest:8,new_max:1,newer:1,newlin:8,next:1,noath:3,non:[1,8],none:[1,5,8,9],noninfring:4,normalize_auth:8,note:[1,4,5,8],notic:[1,4,5],now:[1,2],num:[1,5],num_char:1,num_cor:1,num_lin:1,number:[1,2,3,5,8,9],numer:[2,5],o:8,obei:8,object:[1,4,8,9],objectid:8,obtain:[2,4,8],occur:[1,8],off:1,often:1,old:[1,5],omit:4,onc:[1,4],one:[0,1,5,8,9],ones:1,ong:4,onli:[1,3,5,8],open:[1,4,5,8],oper:[1,5],option:[1,2,4,8],optional_data:8,orbit:8,order:[1,8],org:[5,8],organ:8,os:[0,4],oscar:5,osx:5,ot:8,other:[1,2,5,8],otherorg:5,othersuck:5,otherwis:[4,5,8],out:[0,1,4,5],outlin:4,output:[1,2,5,8,9],over:[1,5],overrid:[1,8],own:[1,4,8],oxid:2,p:5,packag:[1,2,4,5,6,7],page:[0,1,2,5],pair:5,param:[1,8],paramet:[1,3,4,8,9],parent:1,pars:8,parse_do:8,parse_projected_eigen:8,part:[1,5,8],partial:5,particular:[4,8],pass:[1,5,8,9],password:[1,2,3,5,8],password_kei:8,path:[0,1,5,8],pattern:5,pdf:[1,2],per:[1,4,5],percent:5,perfectli:[1,4],perform:[1,2,8,9],permiss:4,permit:4,person:4,persson:4,phase:8,ping:4,pip:4,pl:2,place:[1,4,8],pleas:[4,5,8],plu:5,point:5,pool:9,port:[1,3,5,8],port_kei:8,portion:4,poscar:8,posit:[1,5],possibl:[1,5],post:8,post_process:8,postprocess:[4,8],potcar:8,potenti:8,power:[2,4],pre:8,prefer:5,prefix:[1,2,5],present:[1,5,8],press:4,pretti:[1,8],pretty_formula:[4,5],prevent:8,previou:1,previous:1,print:[1,4,5,8],probabl:1,process:[1,8],process_item:1,process_killed_run:8,process_vasprun:8,prod:5,produc:5,product:[4,5],profil:8,program:[1,5],project:[0,1,4,8,9],prompt:4,prop:[4,5],prop_dict:8,proper:2,properli:[1,2],properti:[1,4,5,8],provid:[2,4,5,8,9],publish:4,pull:1,purpos:[1,4,5,8],put:[0,1,5],py:[0,4],pymatgen:[1,2,3,5],pymmongo:8,pymongo:[4,8],pypi:4,python:[1,4,8],q:[1,5],qe:4,qetransmut:9,quantiti:[5,8],queri:[1,2,5,8,9],query_engin:[1,4,6,7],query_on:8,query_post:8,queryengin:[1,4,8,9],queryerror:8,querylistresult:8,queryresult:8,question:1,queue:1,quiet:1,quot:5,r:[1,4,8],rais:8,rather:5,raw:1,re:1,read:[1,3,5,8],readabl:1,readlin:1,readonli:8,readonly_first:8,readonly_password:[2,3,5],readonly_us:[2,3,5,8],real:[1,5],realli:1,rebuild:1,rec:1,recalcul:1,receiv:5,receiver2:5,recipi:5,recogn:[3,5],recommend:[1,8],record:[1,5,8],recurs:8,recursionerror:8,reduc:1,refactor:2,refer:8,regress:8,reitz:0,rel:[1,4],relai:5,relat:0,relax1:8,relax2:8,relax:8,releas:[2,4],reli:1,rememb:1,remov:2,repeat:[1,5],replac:[1,5],replicaset:8,repo:4,report:[2,5],repositori:0,represent:8,requir:[1,2,3,5,8],research:4,resolv:8,resort:8,respect:[4,5],rest:[2,5,8],restrict:[4,8],result:[1,2,8],result_cursor:8,result_post:8,retriev:[1,5,9],richard:4,right:4,robust:4,root:[4,8],rtype:8,run:[2,4,8],s:[0,1,4,5,8,9],sai:[5,8],sake:1,same:[1,5,8],sampl:4,satisfi:8,save:[1,5],scan:1,scene:1,schema:8,scheme:5,scienc:4,script:[1,2,4,8],search:[4,5,9],second:[1,5],section:[1,5],see:[1,4,5,8],seen:1,select:[1,5],self:[1,8],sell:4,send:5,sender:5,sens:1,sensibl:8,sent:5,sep:8,separ:[5,8],sequenc:8,sequenti:1,serial:8,server1:5,server2:5,server:[3,4,5,8],set:[1,2,4,5,8],set_aliases_and_default:8,shall:4,share:1,shared_dict:1,shell:5,should:[1,4,5,8],show:[1,5],shown:[1,5],shreya:4,shyue:4,sign:5,signific:2,similar:4,simpl:[4,5,8],simpli:[1,4,5,8],simplif:2,simplifi:[1,5,8],simul:8,simulate_mod:8,sinc:1,singl:[1,5],site:8,site_dict:8,size:5,skip:[1,8],skipkei:8,slice:5,slow:8,small:[0,1],smoqe:5,smtp:5,snippet:1,snl_id:5,so:[1,4,5],softwar:4,some:[1,2,4,5,8],somebodi:5,somekei:5,sometim:4,somewhat:8,sort:[1,2,8],sort_kei:8,sourc:[1,4,8,9],spawn:1,spec:5,special:1,specif:[1,2,4,5,8],specifi:[4,5,8],spend:5,sphinx:[1,2,4],spot:1,stabil:[2,8],stage:1,standard:[0,1,4,5,8],standardtransmut:9,start:[1,4],state:[1,8],step:[1,4],stone:1,stop:[1,4],store:[1,8],str:[1,8],strang:1,streamlin:1,string:[4,5,8],structur:[4,8,9],style:[1,4,5,8,9],sub:[1,5],subcommand:2,subfold:8,subject:[4,5],subkei:8,sublicens:4,submit:5,submodul:[0,6,7],subpackag:[1,6],subsequ:[1,4],subset:5,substanti:4,subtl:1,succe:1,success:[1,8],suffici:[5,8],suitabl:4,suppi:8,suppli:8,support:[2,8],supported_properti:8,sure:1,sy:0,symbol:8,syntax:[3,4,8],system:[4,8],t:[1,8],tabl:[2,5],tag:8,take:[2,5,8],taken:[4,5],target:[1,5],task:[1,3,4,5,8],task_id:[4,5,8],tasknam:8,term:4,test1:[1,5],test2:[1,5],test:[4,5,8],test_db:4,text:5,than:[1,5,8,9],thei:[1,2,3,4,9],them:[1,2,8],theme:0,these_must:5,thi:[0,1,4,5,8,9],thing:1,third:5,those:5,thread:1,through:[1,2],throughput:9,thu:1,time:[1,5],to_includ:5,toler:5,ton:5,tool:4,top:5,topmost:4,tort:4,track:1,trackedqueryengin:1,transform:[1,8,9],transformedstructur:9,translat:[4,8],transmut:[6,7,8],transpar:1,treatment:8,tri:8,trivial:1,tupl:8,turn:1,two:[1,2,5,8],type:[1,2,4,5,8],typeerror:8,typic:8,u:[1,5,8],ui:[2,4,8],ultim:1,unauthent:5,under:[4,5],underli:8,understand:1,understood:1,uniqu:8,unit:4,unittest:4,unix:5,unless:1,unlik:[1,5],unsuccess:8,unzip:4,up:[1,4,5],updat:[1,2,8],update_dupl:8,upsert:1,uri:8,url:5,us:[0,1,2,3,4,5,8,9],usabl:2,usag:5,use_admin:8,use_full_uri:8,user:[1,2,3,5,8],user_kei:8,usual:[1,5,8],util:[1,6,7],v:[1,5],valid:[4,8],valu:[1,2,5,8],valueerror:8,vand:2,variabl:[1,2],variou:8,vasp:[3,4,5,8],vasprun:8,vasprun_fil:8,vasptodbtaskdron:[4,8],verbos:[1,5],veri:[0,1,4,5,8],verif:4,version:[1,2,8,9],via:8,view:5,vincent:4,violat:5,visual:5,vof:2,volume_change_threshold:8,vv:2,wa:[1,5],wai:[1,4,8],walk:1,want:[1,5,8],warranti:4,we:[1,5,8],web:8,webpag:5,websit:4,well:[3,4],were:8,what:1,when:[1,4,8],where:[1,4,5,8],whether:[1,4,8,9],which:[1,4,5,8,9],whitespac:8,whole:[1,8],whom:4,width:5,william:4,wise:5,within:5,without:[1,4,8],work:[1,4],wors:[1,5],would:[1,5,8],wrapper:8,writabl:5,write:[3,4,8],written:[1,4],wrong:1,www:8,x:5,xl:2,xml:8,xxxx:5,y:[1,5],yaml:[2,5],yet:1,yield:1,you:[0,1,4,5,8],your:[0,1,4,5,8],yyyi:5,zero:[1,5],zlib:8},titles:["krTheme Sphinx Style","Database \u201cBuilders\u201d","v0.7.0","Database configuration","Pymatgen-db","Materials Project Database Validation: mgvv","pymatgen","pymatgen namespace","pymatgen.db package","pymatgen.db.alchemy package","pymatgen.db.builders package","pymatgen.db.builders.examples package","pymatgen.db.vv package"],titleterms:{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,alchemi:9,api:4,argument:5,basic:1,build:1,builder:[1,10,11],calcul:4,chang:4,cite:4,config:8,configur:[3,5],constraint:5,content:[1,8,9,10,11,12],copy_build:11,copybuild:1,core:10,creator:8,databas:[1,3,4,5],db:[4,8,9,10,11,12],development:4,diff:[5,12],displai:1,doc:4,email:5,exampl:[5,11],extend:4,featur:1,file:5,file_build:11,filecount:1,get:4,how:4,incr:10,increment:1,indic:4,initi:4,insert:4,krtheme:0,licens:4,log:4,materi:5,maxvalue_build:11,maxvaluebuild:1,mgvv:5,modul:[8,9,10,11,12],namespac:7,option:5,other:4,packag:[8,9,10,11,12],page:4,parallel:1,project:5,pymatgen:[4,6,7,8,9,10,11,12],queri:4,query_engin:8,refer:4,report:12,requir:4,run:1,schema:10,setup:4,simpl:1,sphinx:0,stabl:4,style:0,subcommand:5,submodul:[8,9,10,11,12],subpackag:[7,8,9,10,12],syntax:5,tabl:4,transmut:9,usag:[1,4],util:[8,10,12],v0:2,valid:[5,12],version:4,vv:12,write:1}}) \ No newline at end of file diff --git a/docs_rst/pymatgen.db.rst b/docs_rst/pymatgen.db.rst index 9e24afd..d692268 100644 --- a/docs_rst/pymatgen.db.rst +++ b/docs_rst/pymatgen.db.rst @@ -8,32 +8,22 @@ Subpackages :maxdepth: 6 pymatgen.db.alchemy - pymatgen.db.builders - pymatgen.db.vv Submodules ---------- -pymatgen.db.creator module --------------------------- - -.. automodule:: pymatgen.db.creator - :members: - :undoc-members: - :show-inheritance: - -pymatgen.db.dbconfig module ---------------------------- +pymatgen.db.config module +------------------------- -.. automodule:: pymatgen.db.dbconfig +.. automodule:: pymatgen.db.config :members: :undoc-members: :show-inheritance: -pymatgen.db.dbgroup module +pymatgen.db.creator module -------------------------- -.. automodule:: pymatgen.db.dbgroup +.. automodule:: pymatgen.db.creator :members: :undoc-members: :show-inheritance: diff --git a/pymatgen/db/__init__.py b/pymatgen/db/__init__.py index 1619dcb..3341a69 100644 --- a/pymatgen/db/__init__.py +++ b/pymatgen/db/__init__.py @@ -11,7 +11,7 @@ __author__ = "Shyue Ping Ong, Dan Gunter" __date__ = "Jul 22 2017" -__version__ = "2022.3.17" +__version__ = "2022.5.2" from .query_engine import QueryEngine @@ -31,4 +31,4 @@ def _load_mgdb_settings(): return d -SETTINGS = _load_mgdb_settings() +SETTINGS = _load_mgdb_settings() \ No newline at end of file diff --git a/setup.py b/setup.py index 2a0cf68..9dbe530 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ setup( name="pymatgen-db", packages=find_namespace_packages(include=["pymatgen.*"]), - version="2022.3.17", + version="2022.5.2", setup_requires=["numpy"], install_requires=["pymatgen>=2022.0.3", "monty>=0.9.6", "pymongo>=2.8"], extras_require={