diff --git a/docs/_modules/index.html b/docs/_modules/index.html index 9d36d9a..8801dfd 100644 --- a/docs/_modules/index.html +++ b/docs/_modules/index.html @@ -5,7 +5,7 @@ - Overview: module code — pymatgen-db 2021.5.28 documentation + Overview: module code — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

Navigation

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

    All modules for which code is available

    Quick search

    diff --git a/docs/_modules/pymatgen/db/alchemy/transmuters.html b/docs/_modules/pymatgen/db/alchemy/transmuters.html index 3005faf..171f764 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 2021.5.28 documentation + pymatgen.db.alchemy.transmuters — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

  • modules |
  • - + @@ -76,9 +76,7 @@

    Source code for pymatgen.db.alchemy.transmuters

    < from a database. """ - def __init__( - self, queryengine, criteria, transformations, extend_collection=0, ncores=None - ): + def __init__(self, queryengine, criteria, transformations, extend_collection=0, ncores=None): """Constructor. Args: @@ -117,8 +115,7 @@

    Source code for pymatgen.db.alchemy.transmuters

    < ] transformed_structures = [ - TransformedStructure(entry.structure, [], history=get_history(entry)) - for entry in entries + TransformedStructure(entry.structure, [], history=get_history(entry)) for entry in entries ] StandardTransmuter.__init__( self, @@ -145,7 +142,7 @@

    Source code for pymatgen.db.alchemy.transmuters

    <

    Quick search

    diff --git a/docs/_modules/pymatgen/db/builders/core.html b/docs/_modules/pymatgen/db/builders/core.html index 88c7d7e..3ac73f1 100644 --- a/docs/_modules/pymatgen/db/builders/core.html +++ b/docs/_modules/pymatgen/db/builders/core.html @@ -5,7 +5,7 @@ - pymatgen.db.builders.core — pymatgen-db 2021.5.28 documentation + pymatgen.db.builders.core — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

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

    Source code for pymatgen.db.builders.core

     
     
    [docs]class BuildError(Exception): def __init__(self, who, why): - errmsg = "Builder {} failed: {}".format(who, why) + errmsg = f"Builder {who} failed: {why}" Exception.__init__(self, errmsg)
    @@ -120,7 +120,7 @@

    Source code for pymatgen.db.builders.core

                 _, name, desc = line.split(":", 2)
                 name = name[5:].strip()  # skip 'type '
                 if not name in params:
    -                raise ValueError("'type' without 'param' for {}".format(name))
    +                raise ValueError(f"'type' without 'param' for {name}")
                 params[name]["type"] = desc.strip()
             elif line.startswith(":return"):
                 _1, _2, desc = line.split(":", 2)
    @@ -175,16 +175,14 @@ 

    Source code for pymatgen.db.builders.core

             """
             if not self.MIN_VER <= version <= self.MAX_VER:
                 raise ValueError(
    -                "Bad version ({v:d}) not in range {v0} .. {v1} ".format(
    -                    v=version, v0=self.MIN_VER, v1=self.MAX_VER
    -                )
    +                f"Bad version ({version:d}) not in range {self.MIN_VER} .. {self.MAX_VER} "
                 )
             self._names, self._coll = {}, {}
             if version == 1:
                 for name in self.known_collections:
    -                full_name = "{}.{}".format(prefix, name) if prefix else name
    +                full_name = f"{prefix}.{name}" if prefix else name
                     if name == "tasks" and task_suffix is not None:
    -                    full_name = "{}.{}".format(full_name, task_suffix)
    +                    full_name = f"{full_name}.{task_suffix}"
                     self._names[name] = full_name
                     self._coll[full_name] = None
             if db is None:
    @@ -286,14 +284,12 @@ 

    Source code for pymatgen.db.builders.core

             :type fail_fn: function(str)
             """
             for collection, doc in self.examples():
    -            _log.debug("validating example in collection {}".format(collection))
    +            _log.debug(f"validating example in collection {collection}")
                 sch = schema.get_schema(collection)  # with more err. checking
                 result = sch.validate(doc)
    -            _log.debug(
    -                "validation result: {}".format("OK" if result is None else result)
    -            )
    +            _log.debug("validation result: {}".format("OK" if result is None else result))
                 if result is not None:
    -                fail_fn("Failed to validate sample document: {}".format(result))
    + fail_fn(f"Failed to validate sample document: {result}")
    [docs]class Builder(metaclass=ABCMeta): @@ -445,10 +441,7 @@

    Source code for pymatgen.db.builders.core

             elif isinstance(config, dict):
                 conn = dbutil.get_database(settings=config)
             else:
    -            raise ValueError(
    -                "Configuration, '{}',  must be a path to "
    -                "a configuration file or dict".format(config)
    -            )
    +            raise ValueError("Configuration, '{}',  must be a path to " "a configuration file or dict".format(config))
             return conn
    # ----------------------------- @@ -459,7 +452,7 @@

    Source code for pymatgen.db.builders.core

             :return: Number of items processed
             :rtype: int
             """
    -        _log.debug("_build, chunk_size={:d}".format(chunk_size))
    +        _log.debug(f"_build, chunk_size={chunk_size:d}")
             n, i = 0, 0
             for i, item in enumerate(items):
                 if i == 0:
    @@ -496,7 +489,7 @@ 

    Source code for pymatgen.db.builders.core

                 processes[i].join()
                 code = processes[i].exitcode
                 self._status.success(i) if 0 == code else self._status.fail(i)
    -        _log.debug("run.parallel.multiprocess.end states={}".format(self._status))
    +        _log.debug(f"run.parallel.multiprocess.end states={self._status}")
     
         def _run(self, index):
             """Run method for one thread or process
    @@ -513,7 +506,7 @@ 

    Source code for pymatgen.db.builders.core

                 except Queue.Empty:
                     break
                 except Exception as err:
    -                _log.error("In _run(): {}".format(err))
    +                _log.error(f"In _run(): {err}")
                     if _log.isEnabledFor(logging.DEBUG):
                         _log.error(traceback.format_exc())
                     self._status.fail(index)
    @@ -595,16 +588,12 @@ 

    Source code for pymatgen.db.builders.core

         """
         sep = "\n" + " " * depth * indent
         return "".join(
    -        (
                 "{}: {}{}".format(
                     k,
    -                alphadump(d[k], depth=depth + 1)
    -                if isinstance(d[k], dict)
    -                else str(d[k]),
    +                alphadump(d[k], depth=depth + 1) if isinstance(d[k], dict) else str(d[k]),
                     sep,
                 )
                 for k in sorted(d.keys())
    -        )
         )
    @@ -624,7 +613,7 @@

    Source code for pymatgen.db.builders.core

       

    Quick search

    diff --git a/docs/_modules/pymatgen/db/builders/examples/copy_builder.html b/docs/_modules/pymatgen/db/builders/examples/copy_builder.html index 97b794e..eb7dadb 100644 --- a/docs/_modules/pymatgen/db/builders/examples/copy_builder.html +++ b/docs/_modules/pymatgen/db/builders/examples/copy_builder.html @@ -5,7 +5,7 @@ - pymatgen.db.builders.examples.copy_builder — pymatgen-db 2021.5.28 documentation + pymatgen.db.builders.examples.copy_builder — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

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

    Source code for pymatgen.db.builders.examples.copy_builder

    if not crit: # reduce any False-y crit value to None crit = None cur = source.query(criteria=crit) - _log.info( - "source.collection={} crit={} source_records={:d}".format( - source.collection, crit, len(cur) - ) - ) + _log.info(f"source.collection={source.collection} crit={crit} source_records={len(cur):d}") return cur
    [docs] def process_item(self, item): @@ -119,7 +115,7 @@

    Source code for pymatgen.db.builders.examples.copy_builder

    Quick search
    diff --git a/docs/_modules/pymatgen/db/builders/examples/file_builders.html b/docs/_modules/pymatgen/db/builders/examples/file_builders.html index 49ab0e5..3f393c4 100644 --- a/docs/_modules/pymatgen/db/builders/examples/file_builders.html +++ b/docs/_modules/pymatgen/db/builders/examples/file_builders.html @@ -5,7 +5,7 @@ - pymatgen.db.builders.examples.file_builders — pymatgen-db 2021.5.28 documentation + pymatgen.db.builders.examples.file_builders — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

  • modules |
  • - + @@ -73,10 +73,9 @@

    Source code for pymatgen.db.builders.examples.file_builders

    return {"input_file": {"type": "str", "desc": "Input file path"}}
    [docs] def get_items(self, input_file=None): - with open(input_file, "r") as f: + with open(input_file) as f: # print("Reading from {}".format(f.name)) - for line in f: - yield line
    + yield from f
    [docs] def process_item(self, item): self.num_chars += len(item) @@ -85,7 +84,7 @@

    Source code for pymatgen.db.builders.examples.file_builders

    # self.num_lines, self.num_chars))
    [docs] def finalize(self, errors): - print("{:d} lines, {:d} characters".format(self.num_lines, self.num_chars)) + print(f"{self.num_lines:d} lines, {self.num_chars:d} characters") return True
    @@ -105,7 +104,7 @@

    Source code for pymatgen.db.builders.examples.file_builders

    Quick search
    diff --git a/docs/_modules/pymatgen/db/builders/examples/maxvalue_builder.html b/docs/_modules/pymatgen/db/builders/examples/maxvalue_builder.html index 353762b..6ace071 100644 --- a/docs/_modules/pymatgen/db/builders/examples/maxvalue_builder.html +++ b/docs/_modules/pymatgen/db/builders/examples/maxvalue_builder.html @@ -5,7 +5,7 @@ - pymatgen.db.builders.examples.maxvalue_builder — pymatgen-db 2021.5.28 documentation + pymatgen.db.builders.examples.maxvalue_builder — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

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

    Source code for pymatgen.db.builders.examples.maxvalue_builder

    Quick search
    diff --git a/docs/_modules/pymatgen/db/builders/incr.html b/docs/_modules/pymatgen/db/builders/incr.html index 3c6e974..f064371 100644 --- a/docs/_modules/pymatgen/db/builders/incr.html +++ b/docs/_modules/pymatgen/db/builders/incr.html @@ -5,7 +5,7 @@ - pymatgen.db.builders.incr — pymatgen-db 2021.5.28 documentation + pymatgen.db.builders.incr — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

  • modules |
  • - + @@ -187,9 +187,7 @@

    Source code for pymatgen.db.builders.incr

             """
             self._collection_name = value
             self._mongo_coll = self.db[value]
    -        self.collection = TrackedCollection(
    -            self._mongo_coll, operation=self._t_op, field=self._t_field
    -        )
    +        self.collection = TrackedCollection(self._mongo_coll, operation=self._t_op, field=self._t_field)
     
     
    [docs] def set_mark(self): """See :meth:`TrackingInterface.set_mark`""" @@ -230,7 +228,7 @@

    Source code for pymatgen.db.builders.incr

                 return getattr(self._coll, item)
     
         def __str__(self):
    -        return "Tracked collection ({})".format(self._coll)
    +        return f"Tracked collection ({self._coll})"
     
     
    [docs] def tracked_find(self, *args, **kwargs): """Replacement for regular ``find()``.""" @@ -250,11 +248,7 @@

    Source code for pymatgen.db.builders.incr

             # update filter with tracker query
             filt.update(self._mark.query)
             # delegate to "real" find()
    -        _log.info(
    -            "tracked_find.end, call: {}.find(args={} kwargs={})".format(
    -                self._coll.name, args, kwargs
    -            )
    -        )
    +        _log.info(f"tracked_find.end, call: {self._coll.name}.find(args={args} kwargs={kwargs})")
             return self._coll_find(*args, **kwargs)
    [docs] def set_mark(self): @@ -318,11 +312,7 @@

    Source code for pymatgen.db.builders.incr

             if rec is None:
                 self._pos = self._empty_pos()
             elif not self._fld in rec:
    -            _log.error(
    -                "Tracking field not found. field={} collection={}".format(
    -                    self._fld, self._c.name
    -                )
    -            )
    +            _log.error(f"Tracking field not found. field={self._fld} collection={self._c.name}")
                 _log.warn("Continuing without tracking")
                 self._pos = self._empty_pos()
             else:
    @@ -435,10 +425,10 @@ 

    Source code for pymatgen.db.builders.incr

                 # Make a 'filter' to find/update existing record, which uses
                 # the field name and operation (but not the position).
                 filt = {k: obj[k] for k in (mark.FLD_FLD, mark.FLD_OP)}
    -            _log.debug("save: upsert-spec={} upsert-obj={}".format(filt, obj))
    +            _log.debug(f"save: upsert-spec={filt} upsert-obj={obj}")
                 self._track.update(filt, obj, upsert=True)
             except pymongo.errors.PyMongoError as err:
    -            raise DBError("{}".format(err))
    + raise DBError(f"{err}")
    [docs] def retrieve(self, operation, field=None): """Retrieve a position in this collection. @@ -490,7 +480,7 @@

    Source code for pymatgen.db.builders.incr

       

    Quick search

    diff --git a/docs/_modules/pymatgen/db/builders/schema.html b/docs/_modules/pymatgen/db/builders/schema.html index 3751938..20542c9 100644 --- a/docs/_modules/pymatgen/db/builders/schema.html +++ b/docs/_modules/pymatgen/db/builders/schema.html @@ -5,7 +5,7 @@ - pymatgen.db.builders.schema — pymatgen-db 2021.5.28 documentation + pymatgen.db.builders.schema — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

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

    Source code for pymatgen.db.builders.schema

     
     # Regex for values
     # Note that the special prefix/suffix is optional
    -VALUE_RE = re.compile("(?:{spec})?([a-zA-Z]+)(?:{spec})?\s*(.*)".format(spec=SPECIAL))
    +VALUE_RE = re.compile(r"(?:{spec})?([a-zA-Z]+)(?:{spec})?\s*(.*)".format(spec=SPECIAL))
     
     # Global obj with all collected schemas
     schemata = {}
    @@ -91,7 +91,7 @@ 

    Source code for pymatgen.db.builders.schema

     
     
    [docs]class SchemaTypeError(SchemaError): def __init__(self, typename): - SchemaError.__init__(self, "bad type ({})".format(typename))
    + SchemaError.__init__(self, f"bad type ({typename})")
    [docs]class SchemaPathError(SchemaError): @@ -119,11 +119,11 @@

    Source code for pymatgen.db.builders.schema

             raise SchemaPathError()
         filepat = "*." + ext if ext else "*"
         for f in glob.glob(os.path.join(path, filepat)):
    -        with open(f, "r") as fp:
    +        with open(f) as fp:
                 try:
                     schema = json.load(fp)
                 except ValueError:
    -                raise SchemaParseError("error parsing '{}'".format(f))
    +                raise SchemaParseError(f"error parsing '{f}'")
             name = os.path.splitext(os.path.basename(f))[0]
             schemata[name] = Schema(schema)
    @@ -148,7 +148,7 @@

    Source code for pymatgen.db.builders.schema

         :raise: IOError if file cannot be opened or read, ValueError if
                 file is not valid JSON or JSON is not a valid schema.
         """
    -    fp = open(file_or_fp, "r") if isinstance(file_or_fp, str) else file_or_fp
    +    fp = open(file_or_fp) if isinstance(file_or_fp, str) else file_or_fp
         obj = json.load(fp)
         schema = Schema(obj)
         return schema
    @@ -203,9 +203,7 @@

    Source code for pymatgen.db.builders.schema

     
    [docs] def validate(self, doc, path="(root)"): t = self._whatis(doc) if t != self._type: - return self._vresult( - path, "type mismatch: {} != {}", self._typestr(t), self - ) + return self._vresult(path, "type mismatch: {} != {}", self._typestr(t), self) if t == self.IS_LIST: if len(doc) == 0: return None @@ -213,13 +211,9 @@

    Source code for pymatgen.db.builders.schema

             elif t == self.IS_DICT:
                 # fail if document is missing any required keys
                 dkeys = set(doc.keys())
    -            skeys = set(
    -                filter(lambda k: not self._schema[k].is_optional, self._schema.keys())
    -            )
    +            skeys = set(filter(lambda k: not self._schema[k].is_optional, self._schema.keys()))
                 if skeys - dkeys:
    -                return self._vresult(
    -                    path, "missing keys: ({})".format(", ".join(skeys - dkeys))
    -                )
    +                return self._vresult(path, "missing keys: ({})".format(", ".join(skeys - dkeys)))
                 # check each item in document
                 for k, v in doc.items():
                     if k in self._schema:
    @@ -231,9 +225,7 @@ 

    Source code for pymatgen.db.builders.schema

                         # return self._vresult(path, "missing key: {}", k)
             else:
                 if not self._schema.check(doc):
    -                return self._vresult(
    -                    path, "bad value '{}' for type {}", doc, self._schema
    -                )
    + return self._vresult(path, "bad value '{}' for type {}", doc, self._schema)
    [docs] def json_schema(self, **add_keys): """Convert our compact schema representation to the standard, but more verbose, @@ -287,7 +279,7 @@

    Source code for pymatgen.db.builders.schema

             meta_info = ""
             if self.meta and "desc" in self.meta:
                 meta_info = '="{}"'.format(self.meta["desc"])
    -        return "{}{}: ".format(path, meta_info) + fmt.format(*args)
    +        return f"{path}{meta_info}: " + fmt.format(*args)
     
         def _parse(self, value):
             t = self._type = self._whatis(value)
    @@ -317,9 +309,7 @@ 

    Source code for pymatgen.db.builders.schema

                     optional = True
                 vinfo = VALUE_RE.match(value)
                 if not vinfo:
    -                raise ValueError(
    -                    "bad type format, must be __<type>__ got {}".format(value)
    -                )
    +                raise ValueError(f"bad type format, must be __<type>__ got {value}")
                 dtype, meta = vinfo.groups()
                 return Scalar(dtype, optional=optional, meta=meta)
     
    @@ -337,7 +327,7 @@ 

    Source code for pymatgen.db.builders.schema

             return self._typestr(self._type)
     
         def __repr__(self):
    -        return "document::{}".format(self)
    + return f"document::{self}"
    def _is_datetime(d): @@ -388,7 +378,7 @@

    Source code for pymatgen.db.builders.schema

             return self._type
     
         def __repr__(self):
    -        return "scalar::{}".format(self)
    + return f"scalar::{self}"
    @@ -407,7 +397,7 @@

    Source code for pymatgen.db.builders.schema

       

    Quick search

    diff --git a/docs/_modules/pymatgen/db/builders/util.html b/docs/_modules/pymatgen/db/builders/util.html index d6d1a61..2e73cd9 100644 --- a/docs/_modules/pymatgen/db/builders/util.html +++ b/docs/_modules/pymatgen/db/builders/util.html @@ -5,7 +5,7 @@ - pymatgen.db.builders.util — pymatgen-db 2021.5.28 documentation + pymatgen.db.builders.util — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

  • modules |
  • - + @@ -111,8 +111,8 @@

    Source code for pymatgen.db.builders.util

         :raise: IOError, if file is not found or not accessible
         """
         d = get_schema_dir(db_version=db_version)
    -    schemafile = "{}.{}.json".format(db, collection)
    -    f = open(os.path.join(d, schemafile), "r")
    +    schemafile = f"{db}.{collection}.json"
    +    f = open(os.path.join(d, schemafile))
         return f
    @@ -144,7 +144,7 @@

    Source code for pymatgen.db.builders.util

       

    Quick search

    diff --git a/docs/_modules/pymatgen/db/creator.html b/docs/_modules/pymatgen/db/creator.html index 6449ab2..8fa0410 100644 --- a/docs/_modules/pymatgen/db/creator.html +++ b/docs/_modules/pymatgen/db/creator.html @@ -5,7 +5,7 @@ - pymatgen.db.creator — pymatgen-db 2021.5.28 documentation + pymatgen.db.creator — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

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

    Source code for pymatgen.db.creator

                 db = conn[self.database]
                 if self.user:
                     db.authenticate(self.user, self.password)
    -            if db.counter.find({"_id": "taskid"}).count() == 0:
    +            if db.counter.count_documents({"_id": "taskid"}) == 0:
                     db.counter.insert_one({"_id": "taskid", "c": 1})
     
     
    [docs] def assimilate(self, path): @@ -252,7 +252,7 @@

    Source code for pymatgen.db.creator

     
    [docs] def calculate_stability(self, d): m = MPRester(self.mapi_key) functional = d["pseudo_potential"]["functional"] - syms = ["{} {}".format(functional, l) for l in d["pseudo_potential"]["labels"]] + syms = [f"{functional} {l}" for l in d["pseudo_potential"]["labels"]] entry = ComputedEntry( Composition(d["unit_cell_formula"]), d["output"]["final_energy"], @@ -266,7 +266,7 @@

    Source code for pymatgen.db.creator

             """
             Get the entire task doc for a path, including any post-processing.
             """
    -        logger.info("Getting task doc for base dir :{}".format(path))
    +        logger.info(f"Getting task doc for base dir :{path}")
             files = os.listdir(path)
             vasprun_files = OrderedDict()
             if "STOPCAR" in files:
    @@ -279,7 +279,7 @@ 

    Source code for pymatgen.db.creator

                             vasprun_files[r] = os.path.join(r, f)
                 else:  # try extension schema
                     for f in files:
    -                    if fnmatch(f, "vasprun.xml.{}*".format(r)):
    +                    if fnmatch(f, f"vasprun.xml.{r}*"):
                             vasprun_files[r] = f
             if len(vasprun_files) == 0:
                 for f in files:  # get any vasprun from the folder
    @@ -291,9 +291,7 @@ 

    Source code for pymatgen.db.creator

                 if not d:
                     d = self.process_killed_run(path)
                 self.post_process(path, d)
    -        elif (
    -            not (path.endswith("relax1") or path.endswith("relax2"))
    -        ) and contains_vasp_input(path):
    +        elif (not (path.endswith("relax1") or path.endswith("relax2"))) and contains_vasp_input(path):
                 # If not Materials Project style, process as a killed run.
                 logger.warning(path + " contains killed run")
                 d = self.process_killed_run(path)
    @@ -324,9 +322,7 @@ 

    Source code for pymatgen.db.creator

                             if "dos" in calc:
                                 dos = json.dumps(calc["dos"], cls=MontyEncoder)
                                 if self.compress_dos:
    -                                dos = zlib.compress(
    -                                    dos.encode("utf-8"), self.compress_dos
    -                                )
    +                                dos = zlib.compress(dos.encode("utf-8"), self.compress_dos)
                                     calc["dos_compression"] = "zlib"
                                 fs = gridfs.GridFS(db, "dos_fs")
                                 dosid = fs.put(dos)
    @@ -336,22 +332,12 @@ 

    Source code for pymatgen.db.creator

                     d["last_updated"] = datetime.datetime.today()
                     if result is None:
                         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}}
    -                        )
    +                        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("Inserting {} with taskid = {}".format(d["dir_name"], 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("Updating {} with taskid = {}".format(d["dir_name"], d["task_id"]))
     
                     coll.update_one({"dir_name": d["dir_name"]}, {"$set": d}, upsert=True)
                     return d["task_id"]
    @@ -359,11 +345,7 @@ 

    Source code for pymatgen.db.creator

                     logger.info("Skipping duplicate {}".format(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("Simulated insert into database for {} with task_id {}".format(d["dir_name"], d["task_id"]))
                 return d
     
     
    [docs] def post_process(self, dir_name, d): @@ -378,7 +360,7 @@

    Source code for pymatgen.db.creator

                 d:
                     Current doc generated.
             """
    -        logger.info("Post-processing dir:{}".format(dir_name))
    +        logger.info(f"Post-processing dir:{dir_name}")
     
             fullpath = os.path.abspath(dir_name)
     
    @@ -393,7 +375,7 @@ 

    Source code for pymatgen.db.creator

                 with zopen(filenames[0], "rt") as f:
                     transformations = json.load(f)
                     try:
    -                    m = re.match("(\d+)-ICSD", transformations["history"][0]["source"])
    +                    m = re.match(r"(\d+)-ICSD", transformations["history"][0]["source"])
                         if m:
                             d["icsd_id"] = int(m.group(1))
                     except Exception as ex:
    @@ -438,7 +420,7 @@ 

    Source code for pymatgen.db.creator

                     d["calculations"][i]["output"]["outcar"] = outcar.as_dict()
                     run_stats[taskname] = outcar.run_stats
             except:
    -            logger.error("Bad OUTCAR for {}.".format(fullpath))
    +            logger.error(f"Bad OUTCAR for {fullpath}.")
     
             try:
                 overall_run_stats = {}
    @@ -448,10 +430,10 @@ 

    Source code for pymatgen.db.creator

                     "System time (sec)",
                     "Elapsed time (sec)",
                 ]:
    -                overall_run_stats[key] = sum([v[key] for v in run_stats.values()])
    +                overall_run_stats[key] = sum(v[key] for v in run_stats.values())
                 run_stats["overall"] = overall_run_stats
             except:
    -            logger.error("Bad run stats for {}.".format(fullpath))
    +            logger.error(f"Bad run stats for {fullpath}.")
     
             d["run_stats"] = run_stats
     
    @@ -495,17 +477,13 @@ 

    Source code for pymatgen.db.creator

                             d["run_type"] = "GGA"
                     except Exception as ex:
                         print(str(ex))
    -                    logger.error(
    -                        "Unable to parse INCAR for killed run {}.".format(dir_name)
    -                    )
    +                    logger.error(f"Unable to parse INCAR for killed run {dir_name}.")
                 elif fnmatch(f, "KPOINTS*"):
                     try:
                         kpoints = Kpoints.from_file(filename)
                         d["kpoints"] = kpoints.as_dict()
                     except:
    -                    logger.error(
    -                        "Unable to parse KPOINTS for killed run {}.".format(dir_name)
    -                    )
    +                    logger.error(f"Unable to parse KPOINTS for killed run {dir_name}.")
                 elif fnmatch(f, "POSCAR*"):
                     try:
                         s = Poscar.from_file(filename).structure
    @@ -525,9 +503,7 @@ 

    Source code for pymatgen.db.creator

                         )
                         d["poscar"] = s.as_dict()
                     except:
    -                    logger.error(
    -                        "Unable to parse POSCAR for killed run {}.".format(dir_name)
    -                    )
    +                    logger.error(f"Unable to parse POSCAR for killed run {dir_name}.")
                 elif fnmatch(f, "POTCAR*"):
                     try:
                         potcar = Potcar.from_file(filename)
    @@ -537,27 +513,18 @@ 

    Source code for pymatgen.db.creator

                             "labels": potcar.symbols,
                         }
                     except:
    -                    logger.error(
    -                        "Unable to parse POTCAR for killed run in {}.".format(dir_name)
    -                    )
    +                    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:
    -                    logger.error(
    -                        "Unable to parse OSZICAR for killed run in {}.".format(dir_name)
    -                    )
    -            elif re.match("relax\d", f):
    +                    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()
    +                        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)
    -                        )
    +                        logger.error("Unable to parse OSZICAR for killed " "run in {}.".format(dir_name))
             return d
    [docs] def process_vasprun(self, dir_name, taskname, filename): @@ -565,27 +532,21 @@

    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]
    -        ):
    +        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
             r = Vasprun(vasprun_file, parse_projected_eigen=parse_projected_eigen)
             d = r.as_dict()
             d["dir_name"] = os.path.abspath(dir_name)
    -        d["completed_at"] = str(
    -            datetime.datetime.fromtimestamp(os.path.getmtime(vasprun_file))
    -        )
    +        d["completed_at"] = str(datetime.datetime.fromtimestamp(os.path.getmtime(vasprun_file)))
             d["cif"] = str(CifWriter(r.final_structure))
             d["density"] = r.final_structure.density
             if self.parse_dos and (self.parse_dos != "final" or taskname == self.runs[-1]):
                 try:
                     d["dos"] = r.complete_dos.as_dict()
                 except Exception:
    -                logger.warning(
    -                    "No valid dos data exist in {}.\n Skipping dos".format(dir_name)
    -                )
    +                logger.warning(f"No valid dos data exist in {dir_name}.\n Skipping dos")
             if taskname == "relax1" or taskname == "relax2":
                 d["task"] = {"type": "aflow", "name": taskname}
             else:
    @@ -607,8 +568,7 @@ 

    Source code for pymatgen.db.creator

                 d["dir_name"] = fullpath
                 d["schema_version"] = VaspToDbTaskDrone.__version__
                 d["calculations"] = [
    -                self.process_vasprun(dir_name, taskname, filename)
    -                for taskname, filename in vasprun_files.items()
    +                self.process_vasprun(dir_name, taskname, filename) for taskname, filename in vasprun_files.items()
                 ]
                 d1 = d["calculations"][0]
                 d2 = d["calculations"][-1]
    @@ -642,9 +602,7 @@ 

    Source code for pymatgen.db.creator

                     "xc_override": xc,
                 }
                 vals = sorted(d2["reduced_cell_formula"].values())
    -            d["anonymous_formula"] = {
    -                string.ascii_uppercase[i]: float(vals[i]) for i in range(len(vals))
    -            }
    +            d["anonymous_formula"] = {string.ascii_uppercase[i]: float(vals[i]) for i in range(len(vals))}
                 d["output"] = {
                     "crystal": d2["output"]["crystal"],
                     "final_energy": d2["output"]["final_energy"],
    @@ -659,13 +617,8 @@ 

    Source code for pymatgen.db.creator

                     "pot_type": pot_type.lower(),
                     "labels": d2["input"]["potcar"],
                 }
    -            if (
    -                len(d["calculations"]) == len(self.runs)
    -                or list(vasprun_files.keys())[0] != "relax1"
    -            ):
    -                d["state"] = (
    -                    "successful" if d2["has_vasp_completed"] else "unsuccessful"
    -                )
    +            if len(d["calculations"]) == len(self.runs) or list(vasprun_files.keys())[0] != "relax1":
    +                d["state"] = "successful" if d2["has_vasp_completed"] else "unsuccessful"
                 else:
                     d["state"] = "stopped"
                 d["analysis"] = get_basic_analysis_and_error_checks(d)
    @@ -686,9 +639,7 @@ 

    Source code for pymatgen.db.creator

                 import traceback
     
                 print(traceback.format_exc())
    -            logger.error(
    -                "Error in " + os.path.abspath(dir_name) + ".\n" + traceback.format_exc()
    -            )
    +            logger.error("Error in " + os.path.abspath(dir_name) + ".\n" + traceback.format_exc())
     
                 return None
    @@ -744,9 +695,7 @@

    Source code for pymatgen.db.creator

             return output
    -
    [docs]def get_basic_analysis_and_error_checks( - d, max_force_threshold=0.5, volume_change_threshold=0.2 -): +
    [docs]def get_basic_analysis_and_error_checks(d, max_force_threshold=0.5, volume_change_threshold=0.2): initial_vol = d["input"]["crystal"]["lattice"]["volume"] final_vol = d["output"]["crystal"]["lattice"]["volume"] @@ -763,34 +712,24 @@

    Source code for pymatgen.db.creator

         error_msgs = []
     
         if abs(percent_delta_vol) > volume_change_threshold:
    -        warning_msgs.append("Volume change > {}%".format(volume_change_threshold * 100))
    +        warning_msgs.append(f"Volume change > {volume_change_threshold * 100}%")
     
         bv_struct = Structure.from_dict(d["output"]["crystal"])
         try:
             bva = BVAnalyzer()
             bv_struct = bva.get_oxi_state_decorated_structure(bv_struct)
         except ValueError as e:
    -        logger.error("Valence cannot be determined due to {e}.".format(e=e))
    +        logger.error(f"Valence cannot be determined due to {e}.")
         except Exception as ex:
    -        logger.error("BVAnalyzer error {e}.".format(e=str(ex)))
    +        logger.error(f"BVAnalyzer error {str(ex)}.")
     
         max_force = None
    -    if (
    -        d["state"] == "successful"
    -        and d["calculations"][0]["input"]["parameters"].get("NSW", 0) > 0
    -    ):
    +    if d["state"] == "successful" and d["calculations"][0]["input"]["parameters"].get("NSW", 0) > 0:
             # handle the max force and max force error
    -        max_force = max(
    -            [
    -                np.linalg.norm(a)
    -                for a in d["calculations"][-1]["output"]["ionic_steps"][-1]["forces"]
    -            ]
    -        )
    +        max_force = max(np.linalg.norm(a) for a in d["calculations"][-1]["output"]["ionic_steps"][-1]["forces"])
     
             if max_force > max_force_threshold:
    -            error_msgs.append(
    -                "Final max force exceeds {} eV".format(max_force_threshold)
    -            )
    +            error_msgs.append(f"Final max force exceeds {max_force_threshold} eV")
                 d["state"] = "error"
     
             s = Structure.from_dict(d["output"]["crystal"])
    @@ -826,9 +765,7 @@ 

    Source code for pymatgen.db.creator

             KPOINTS and POTCAR).
         """
         for f in ["INCAR", "POSCAR", "POTCAR", "KPOINTS"]:
    -        if not os.path.exists(os.path.join(dir_name, f)) and not os.path.exists(
    -            os.path.join(dir_name, f + ".orig")
    -        ):
    +        if not os.path.exists(os.path.join(dir_name, f)) and not os.path.exists(os.path.join(dir_name, f + ".orig")):
                 return False
         return True
    @@ -876,7 +813,7 @@

    Source code for pymatgen.db.creator

             hostname = socket.gethostbyaddr(socket.gethostname())[0]
         except:
             hostname = socket.gethostname()
    -    return "{}:{}".format(hostname, fullpath)
    + return f"{hostname}:{fullpath}"
    @@ -895,7 +832,7 @@

    Source code for pymatgen.db.creator

       

    Quick search

    diff --git a/docs/_modules/pymatgen/db/dbconfig.html b/docs/_modules/pymatgen/db/dbconfig.html index 4ab8fd5..99b5021 100644 --- a/docs/_modules/pymatgen/db/dbconfig.html +++ b/docs/_modules/pymatgen/db/dbconfig.html @@ -5,7 +5,7 @@ - pymatgen.db.dbconfig — pymatgen-db 2021.5.28 documentation + pymatgen.db.dbconfig — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

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

    Source code for pymatgen.db.dbconfig

     __date__ = "4/25/14"
     
     import os
    -import yaml
    +import ruamel.yaml as yaml
     
     # Constants for keys
     HOST_KEY = "host"
    @@ -81,7 +81,7 @@ 

    Source code for pymatgen.db.dbconfig

     
     
    [docs]class ConfigurationFileError(Exception): def __init__(self, filename, err): - msg = "reading '{}': {}".format(filename, err) + msg = f"reading '{filename}': {err}" Exception.__init__(self, msg)
    @@ -193,7 +193,7 @@

    Source code for pymatgen.db.dbconfig

         """
         settings = yaml.safe_load(_as_file(infile))
         if not hasattr(settings, "keys"):
    -        raise ValueError("Settings not found in {}".format(infile))
    +        raise ValueError(f"Settings not found in {infile}")
     
         # Processing of namespaced parameters in .pmgrc.yaml.
         processed_settings = {}
    @@ -280,7 +280,7 @@ 

    Source code for pymatgen.db.dbconfig

       

    Quick search

    diff --git a/docs/_modules/pymatgen/db/dbgroup.html b/docs/_modules/pymatgen/db/dbgroup.html index 10493a0..28ba9d1 100644 --- a/docs/_modules/pymatgen/db/dbgroup.html +++ b/docs/_modules/pymatgen/db/dbgroup.html @@ -5,7 +5,7 @@ - pymatgen.db.dbgroup — pymatgen-db 2021.5.28 documentation + pymatgen.db.dbgroup — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

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

    Source code for pymatgen.db.dbgroup

                 cfg = dbconfig.DBConfig(config_file=config)
                 cs = cfg.settings
                 if dbconfig.DB_KEY not in cs:
    -                raise ValueError("No database in '{}'".format(config))
    +                raise ValueError(f"No database in '{config}'")
                 if dbconfig.COLL_KEY in cs:
    -                name = "{}.{}".format(cs[dbconfig.DB_KEY], cs[dbconfig.COLL_KEY])
    +                name = f"{cs[dbconfig.DB_KEY]}.{cs[dbconfig.COLL_KEY]}"
                 else:
                     name = cs[dbconfig.DB_KEY]
                 self.add(name, cfg)
    @@ -223,11 +223,7 @@ 

    Source code for pymatgen.db.dbgroup

                 for k, v in self._d.re_get(name).items():
                     qe[k] = self._get_qe(k, v)
                 if not qe:
    -                raise KeyError(
    -                    "No configuration found, name='{}' full-regex='{}'".format(
    -                        orig_name, name
    -                    )
    -                )
    +                raise KeyError(f"No configuration found, name='{orig_name}' full-regex='{name}'")
             else:
                 qe = self._get_qe(name, self._d[name])
             return qe
    @@ -329,7 +325,7 @@ 

    Source code for pymatgen.db.dbgroup

       

    Quick search

    diff --git a/docs/_modules/pymatgen/db/query_engine.html b/docs/_modules/pymatgen/db/query_engine.html index b3ac246..2cc0a19 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 2021.5.28 documentation + pymatgen.db.query_engine — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

  • modules |
  • - + @@ -69,7 +69,8 @@

    Source code for pymatgen.db.query_engine

     import os
     import gridfs
     import zlib
    -from collections import OrderedDict, Iterable
    +from collections import OrderedDict
    +from collections.abc import Iterable
     
     import pymongo
     from pymongo import MongoClient
    @@ -131,7 +132,7 @@ 

    Source code for pymatgen.db.query_engine

             result_post=None,
             connection=None,
             replicaset=None,
    -        **ignore
    +        **ignore,
         ):
             """Constructor.
     
    @@ -187,9 +188,7 @@ 

    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 = MongoClient(self.host, self.port, replicaset=self.replicaset)
                 else:
                     self.connection = MongoClient(self.host, self.port)
             else:
    @@ -198,9 +197,7 @@ 

    Source code for pymatgen.db.query_engine

             if user:
                 self.db.authenticate(user, password)
             self.collection_name = collection
    -        self.set_aliases_and_defaults(
    -            aliases_config=aliases_config, default_properties=default_properties
    -        )
    +        self.set_aliases_and_defaults(aliases_config=aliases_config, default_properties=default_properties)
             # Post-processing functions
             self.query_post = query_post or []
             self.result_post = result_post or []
    @@ -260,9 +257,7 @@ 

    Source code for pymatgen.db.query_engine

             if default_properties is None:
                 self._default_props, self._default_prop_dict = None, None
             else:
    -            self._default_props, self._default_prop_dict = self._parse_properties(
    -                default_properties
    -            )
    + self._default_props, self._default_prop_dict = self._parse_properties(default_properties)
    def __enter__(self): """Allows for use with the 'with' context manager""" @@ -375,7 +370,7 @@

    Source code for pymatgen.db.query_engine

             for c in self.query(fields, criteria):
                 func = c["pseudo_potential.functional"]
                 labels = c["pseudo_potential.labels"]
    -            symbols = ["{} {}".format(func, label) for label in labels]
    +            symbols = [f"{func} {label}" for label in labels]
                 parameters = {
                     "run_type": c["run_type"],
                     "is_hubbard": c["is_hubbard"],
    @@ -435,7 +430,7 @@ 

    Source code for pymatgen.db.query_engine

                     comp = Composition(crit)
                     crit = comp.as_dict()
                     for el, amt in crit.items():
    -                    parsed_crit["{}.{}".format(self.aliases[key], el)] = amt
    +                    parsed_crit[f"{self.aliases[key]}.{el}"] = amt
                     parsed_crit["nelements"] = len(crit)
                     parsed_crit["pretty_formula"] = comp.reduced_formula
                 elif key in ["$or", "$and"]:
    @@ -449,7 +444,7 @@ 

    Source code for pymatgen.db.query_engine

             return self.collection.ensure_index(key, unique=unique)
    [docs] def query(self, properties=None, criteria=None, distinct_key=None, **kwargs): - """ + r""" Convenience method for database access. All properties and criteria can be specified using simplified names defined in Aliases. You can use the supported_properties property to get the list of supported @@ -494,8 +489,8 @@

    Source code for pymatgen.db.query_engine

             if distinct_key is not None:
                 cur = cur.distinct(distinct_key)
                 return QueryListResults(prop_dict, cur, postprocess=self.result_post)
    -        else:
    -            return QueryResults(prop_dict, cur, postprocess=self.result_post)
    + + return QueryResults(prop_dict, cur, postprocess=self.result_post)
    def _parse_properties(self, properties): """Make list of properties into 2 things: @@ -551,16 +546,14 @@

    Source code for pymatgen.db.query_engine

             results = tuple(self.query([field], args))
     
             if len(results) > 1:
    -            raise QueryError(
    -                "More than one result found for task_id {}!".format(task_id)
    -            )
    +            raise QueryError(f"More than one result found for task_id {task_id}!")
             elif len(results) == 0:
    -            raise QueryError("No structure found for task_id {}!".format(task_id))
    +            raise QueryError(f"No structure found for task_id {task_id}!")
             c = results[0]
             return Structure.from_dict(c[field])
    def __repr__(self): - return "QueryEngine: {}:{}/{}".format(self.host, self.port, self.database_name) + return f"QueryEngine: {self.host}:{self.port}/{self.database_name}"
    [docs] @staticmethod def from_config(config_file, use_admin=False): @@ -626,9 +619,7 @@

    Source code for pymatgen.db.query_engine

                         for j in range(len(ados)):
                             orb = Orbital(j)
                             odos = ados[str(orb)]
    -                        all_ados[orb] = {
    -                            Spin(int(k)): v for k, v in odos["densities"].items()
    -                        }
    +                        all_ados[orb] = {Spin(int(k)): v for k, v in odos["densities"].items()}
                         pdoss[structure[i]] = all_ados
                     return CompleteDos(structure, tdos, pdoss)
             return None
    @@ -696,7 +687,7 @@

    Source code for pymatgen.db.query_engine

     
         def __len__(self):
             """Return length as a `count()` on the MongoDB cursor."""
    -        return self._results.count()
    +        return len(list(self._results.clone()))
     
         def __getitem__(self, i):
             return self._mapped_result(self._results[i])
    @@ -779,7 +770,7 @@ 

    Source code for pymatgen.db.query_engine

       

    Quick search

    diff --git a/docs/_modules/pymatgen/db/util.html b/docs/_modules/pymatgen/db/util.html index 6d64c2c..c5ad6d8 100644 --- a/docs/_modules/pymatgen/db/util.html +++ b/docs/_modules/pymatgen/db/util.html @@ -5,7 +5,7 @@ - pymatgen.db.util — pymatgen-db 2021.5.28 documentation + pymatgen.db.util — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

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

    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.warn("No {admin,readonly}_user/password found in config. file, " "accessing DB without authentication")
         return db
    @@ -137,8 +134,7 @@

    Source code for pymatgen.db.util

             for k in x:
                 yield (pre + k)
                 if isinstance(x[k], dict):
    -                for nested in _keys(x[k], pre + k + sep):
    -                    yield nested
    +                yield from _keys(x[k], pre + k + sep)
     
         return list(_keys(coll.find_one()))
    @@ -153,21 +149,19 @@

    Source code for pymatgen.db.util

     
    [docs]def quotable(v): if isinstance(v, int) or isinstance(v, float): return str(v) - return "'{}'".format(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(["'{}': {}".format(k, quotable(v)) for k, v in d.items()]) + "}" - )
    + 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(["{}={}".format(k, quotable(v)) for k, v in d.items()])
    + return ", ".join([f"{k}={quotable(v)}" for k, v in d.items()])
    @@ -186,7 +180,7 @@

    Source code for pymatgen.db.util

       

    Quick search

    diff --git a/docs/_modules/pymatgen/db/vv/diff.html b/docs/_modules/pymatgen/db/vv/diff.html index b5c1936..0ddd009 100644 --- a/docs/_modules/pymatgen/db/vv/diff.html +++ b/docs/_modules/pymatgen/db/vv/diff.html @@ -5,7 +5,7 @@ - pymatgen.db.vv.diff — pymatgen-db 2021.5.28 documentation + pymatgen.db.vv.diff — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

  • modules |
  • - + @@ -148,9 +148,7 @@

    Source code for pymatgen.db.vv.diff

                 for cfg in c1, c2:
                     settings = util.get_settings(cfg)
                     if not normalize_auth(settings):
    -                    _log.warn(
    -                        "Config file {} does not have a username/password".format(cfg)
    -                    )
    +                    _log.warn(f"Config file {cfg} does not have a username/password")
                     settings["aliases_config"] = {"aliases": {}, "defaults": {}}
                     engine = QueryEngine(**settings)
                     engines.append(engine)
    @@ -170,12 +168,12 @@ 

    Source code for pymatgen.db.vv.diff

             info = {}  # per-key information
             has_info, has_props = bool(self._info), bool(self._all_props)
             has_numprops, has_eqprops = bool(self._prop_deltas), bool(self._props)
    -        _log.info("query.start query={} fields={}".format(self._filter, fields))
    +        _log.info(f"query.start query={self._filter} fields={fields}")
             t0 = time.time()
     
             # Main query loop.
             for i, coll in enumerate(engines):
    -            _log.debug("collection {:d}".format(i))
    +            _log.debug(f"collection {i:d}")
                 count, missing_props = 0, 0
                 for rec in coll.query(criteria=self._filter, properties=fields):
                     count += 1
    @@ -183,14 +181,10 @@ 

    Source code for pymatgen.db.vv.diff

                     try:
                         key = rec[self._key_field]
                     except KeyError:
    -                    _log.critical(
    -                        "Key '{}' not found in record: {}. Abort.".format(
    -                            self._key_field, rec
    -                        )
    -                    )
    +                    _log.critical(f"Key '{self._key_field}' not found in record: {rec}. Abort.")
                         return {}
                     if not allow_dup and key in keys[i]:
    -                    raise ValueError("Duplicate key: {}".format(key))
    +                    raise ValueError(f"Duplicate key: {key}")
                     keys[i].add(key)
                     # Extract numeric properties.
                     if has_numprops:
    @@ -212,7 +206,7 @@ 

    Source code for pymatgen.db.vv.diff

                     # Extract properties for exact match.
                     if has_eqprops:
                         try:
    -                        propval = tuple([(p, str(rec[p])) for p in self._props])
    +                        propval = tuple((p, str(rec[p])) for p in self._props)
                         except KeyError:
                             missing_props += 1
                             # print("@@ missing {} on {}".format(pkey, rec))
    @@ -228,19 +222,13 @@ 

    Source code for pymatgen.db.vv.diff

     
                 # Stop if we don't have properties on any record at all
                 if 0 < count == missing_props:
    -                _log.critical(
    -                    "Missing one or more properties on all {:d} records".format(count)
    -                )
    +                _log.critical(f"Missing one or more properties on all {count:d} records")
                     return {}
                 # ..but only issue a warning for partially missing properties.
                 elif missing_props > 0:
    -                _log.warn(
    -                    "Missing one or more properties for {:d}/{:d} records".format(
    -                        missing_props, count
    -                    )
    -                )
    +                _log.warn(f"Missing one or more properties for {missing_props:d}/{count:d} records")
             t1 = time.time()
    -        _log.info("query.end sec={:f}".format(t1 - t0))
    +        _log.info(f"query.end sec={t1 - t0:f}")
     
             # Compute missing and new keys.
             if only_values:
    @@ -308,10 +296,10 @@ 

    Source code for pymatgen.db.vv.diff

                                 self.CHANGED_MATCH_KEY: self.CHANGED_MATCH_DELTA,
                                 self._key_field: key,
                                 "property": pkey,
    -                            self.CHANGED_OLD: "{:f}".format(oldval),
    -                            self.CHANGED_NEW: "{:f}".format(newval),
    +                            self.CHANGED_OLD: f"{oldval:f}",
    +                            self.CHANGED_NEW: f"{newval:f}",
                                 "rule": self._prop_deltas[pkey],
    -                            self.CHANGED_DELTA: "{:f}".format(newval - oldval),
    +                            self.CHANGED_DELTA: f"{newval - oldval:f}",
                             }
                             changed.append(_up(change, info[key]) if info else change)
                 # Exact property comparison.
    @@ -342,11 +330,11 @@ 

    Source code for pymatgen.db.vv.diff

             ...%     Instead of (v2 - v1), use 100*(v2 - v1)/v1
         """
     
    -    _num = "\d+(\.\d+)?"
    +    _num = r"\d+(\.\d+)?"
         _expr = re.compile(
             "(?:"
    -        "\+(?P<X>{n})?-(?P<Y>{n})?|"  # both + and -
    -        "\+(?P<X2>{n})?|"  # only +
    +        r"\+(?P<X>{n})?-(?P<Y>{n})?|"  # both + and -
    +        r"\+(?P<X2>{n})?|"  # only +
             "-(?P<Y2>{n})?"  # only -
             ")"
             "(?P<eq>=)?(?P<pct>%)?".format(n=_num)
    @@ -362,10 +350,10 @@ 

    Source code for pymatgen.db.vv.diff

             # Match expression.
             m = self._expr.match(s)
             if m is None:
    -            raise ValueError("Bad syntax for delta '{}'".format(s))
    +            raise ValueError(f"Bad syntax for delta '{s}'")
             if m.span()[1] != len(s):
                 p = m.span()[1]
    -            raise ValueError("Junk at end of delta '{}': {}".format(s, s[p:]))
    +            raise ValueError(f"Junk at end of delta '{s}': {s[p:]}")
     
             # Save a copy of orig.
             self._orig_expr = s
    @@ -379,12 +367,12 @@ 

    Source code for pymatgen.db.vv.diff

             # Set parsed values.
             d = m.groupdict()
             # print("@@ expr :: {}".format(d))
    -        if all((d[k] is None for k in ("X", "Y", "X2", "Y2"))):
    +        if all(d[k] is None for k in ("X", "Y", "X2", "Y2")):
                 # Change in sign only
                 self._sign = True
                 self._eq = d["eq"] is not None
             elif d["X"] is not None and d["Y"] is None:
    -            raise ValueError("Missing value for negative delta '{}'".format(s))
    +            raise ValueError(f"Missing value for negative delta '{s}'")
             else:
                 if d["X2"] is not None:
                     # Positive only
    @@ -492,7 +480,7 @@ 

    Source code for pymatgen.db.vv.diff

       

    Quick search

    diff --git a/docs/_modules/pymatgen/db/vv/report.html b/docs/_modules/pymatgen/db/vv/report.html index f0c3e26..b930273 100644 --- a/docs/_modules/pymatgen/db/vv/report.html +++ b/docs/_modules/pymatgen/db/vv/report.html @@ -5,7 +5,7 @@ - pymatgen.db.vv.report — pymatgen-db 2021.5.28 documentation + pymatgen.db.vv.report — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

  • modules |
  • - + @@ -164,9 +164,7 @@

    Source code for pymatgen.db.vv.report

     
     
    [docs] def add(self, values): if len(values) != self._width: - raise ValueError( - "expected {:d} values, got {:d}".format(self._width, len(values)) - ) + raise ValueError(f"expected {self._width:d} values, got {len(values):d}") self._rows.append(values) for i, v in enumerate(values): n = len(str(v)) @@ -183,10 +181,10 @@

    Source code for pymatgen.db.vv.report

                 try:
                     colnum = self._colnames.index(name)
                 except ValueError:
    -                raise ValueError("column {} not in {}".format(name, self._colnames))
    +                raise ValueError(f"column {name} not in {self._colnames}")
             else:
                 if index < 0 or index >= self._width:
    -                raise ValueError("index out of range 0..{:d}".format(self._width - 1))
    +                raise ValueError(f"index out of range 0..{self._width - 1:d}")
                 colnum = index
             self._rows.sort(key=itemgetter(colnum))
    @@ -195,9 +193,7 @@

    Source code for pymatgen.db.vv.report

     
         @property
         def values(self):
    -        return [
    -            {self._colnames[i]: r[i] for i in range(self._width)} for r in self._rows
    -        ]
    +        return [{self._colnames[i]: r[i] for i in range(self._width)} for r in self._rows]
     
         @property
         def column_names(self):
    @@ -266,7 +262,7 @@ 

    Source code for pymatgen.db.vv.report

             text = []
             text.append("<!DOCTYPE html>")
             text.append("<html>")
    -        text.append("<title>{}</title>".format(report.header.title))
    +        text.append(f"<title>{report.header.title}</title>")
             text.append("<head>")
             if self._css:
                 text.append("<style>")
    @@ -274,30 +270,30 @@ 

    Source code for pymatgen.db.vv.report

                 text.append("</style>")
             text.append("</head>")
             text.append("<body>")
    -        text.append("<h1>{}</h1>".format(report.header.title))
    +        text.append(f"<h1>{report.header.title}</h1>")
             text.append('<dl class="rptmeta">')
             for key, value in report.header:
    -            text.append("<dt>{}</dt>".format(key))
    -            text.append("<dd>{}</dd>".format(value))
    +            text.append(f"<dt>{key}</dt>")
    +            text.append(f"<dd>{value}</dd>")
             text.append("</dl>")
             for section in report:
    -            text.append("<h2>{}</h2>".format(section.header.title))
    +            text.append(f"<h2>{section.header.title}</h2>")
                 text.append('<dl class="sectmeta">')
                 for key, value in section.header:
    -                text.append("<dt>{}</dt>".format(key))
    -                text.append("<dd>{}</dd>".format(value))
    +                text.append(f"<dt>{key}</dt>")
    +                text.append(f"<dd>{value}</dd>")
                 text.append("</dl>")
                 for cond_section in section:
    -                text.append("<h3>{}</h3>".format(cond_section.header.title))
    +                text.append(f"<h3>{cond_section.header.title}</h3>")
                     text.append('<dl class="subsectmeta">')
                     for key, value in cond_section.header:
    -                    text.append("<dt>{}</dt>".format(key))
    -                    text.append("<dd>{}</dd>".format(value))
    +                    text.append(f"<dt>{key}</dt>")
    +                    text.append(f"<dd>{value}</dd>")
                     text.append("</dl>")
                     text.append("<table>")
                     text.append("<tr>")
                     for name in cond_section.body.column_names:
    -                    text.append("<th>{}</th>".format(name))
    +                    text.append(f"<th>{name}</th>")
                     text.append("</tr>")
                     prev_key, i = None, 0
                     for row in cond_section.body:
    @@ -309,9 +305,9 @@ 

    Source code for pymatgen.db.vv.report

                             prev_key = key
                             i += 1
                         rclass = ("even", "odd")[i % 2]
    -                    text.append('<tr class="{}">'.format(rclass))
    +                    text.append(f'<tr class="{rclass}">')
                         for value in row:
    -                        text.append("<td>{}</td>".format(value))
    +                        text.append(f"<td>{value}</td>")
                         text.append("</tr>")
                     text.append("</table>")
             text.append("</body>")
    @@ -336,10 +332,7 @@ 

    Source code for pymatgen.db.vv.report

                     dict(
                         title=s.header.title,
                         info=s.header,
    -                    conditions=[
    -                        dict(title=cs.header.title, info=cs.header, violations=cs.body)
    -                        for cs in s
    -                    ],
    +                    conditions=[dict(title=cs.header.title, info=cs.header, violations=cs.body) for cs in s],
                     )
                     for s in report
                 ],
    @@ -363,12 +356,10 @@ 

    Source code for pymatgen.db.vv.report

             self._idcol = id_column
     
         def _mapdump(self, d):
    -        return ", ".join((("{}={}".format(k, v) for k, v in d.items())))
    +        return ", ".join((f"{k}={v}" for k, v in d.items()))
     
         def _fixed_width(self, values, widths):
    -        s = "".join(
    -            ["{{:{:d}s}}".format(w + 1).format(str(v)) for w, v in zip(widths, values)]
    -        )
    +        s = "".join([f"{{:{w + 1:d}s}}".format(str(v)) for w, v in zip(widths, values)])
             return s
     
     
    [docs] def format(self, report): @@ -389,12 +380,12 @@

    Source code for pymatgen.db.vv.report

                 return
             infodict = info.as_dict()
             if infodict:
    -            text = "Info: {}".format(self._mapdump(infodict))
    +            text = f"Info: {self._mapdump(infodict)}"
                 lines.append(text)
     
         def _append_heading(self, lines, level, title):
             hashes = "#" * level
    -        text = "\n{} {} {}\n".format(hashes, title, hashes)
    +        text = f"\n{hashes} {title} {hashes}\n"
             lines.append(text)
     
         def _append_violations(self, lines, data):
    @@ -415,7 +406,7 @@ 

    Source code for pymatgen.db.vv.report

             subject="Report",
             server="localhost",
             port=None,
    -        **kwargs
    +        **kwargs,
         ):
             """Send reports as email.
     
    @@ -454,7 +445,7 @@ 

    Source code for pymatgen.db.vv.report

             elif sub_fmt.lower() == "html":
                 msg = MIMEText(text, "html")
             else:
    -            raise ValueError("Unknown message format: {}".format(fmt))
    +            raise ValueError(f"Unknown message format: {fmt}")
             msg["Subject"] = self._subject
             msg["From"] = self._sender
             msg["To"] = ", ".join(self._recipients)
    @@ -462,25 +453,19 @@ 

    Source code for pymatgen.db.vv.report

                 conn_kwargs = dict(host=self._server)
             else:
                 conn_kwargs = dict(host=self._server, port=self._port)
    -        self._log.info("connect to email server {}".format(conn_kwargs))
    +        self._log.info(f"connect to email server {conn_kwargs}")
             try:
                 s = smtplib.SMTP(**conn_kwargs)
                 # s.set_debuglevel(2)
                 refused = s.sendmail(self._sender, self._recipients, msg.as_string())
                 if refused:
    -                self._log.warn(
    -                    "Email to {:d} recipients was refused".format(len(refused))
    -                )
    +                self._log.warn(f"Email to {len(refused):d} recipients was refused")
                     for person, (code, msg) in refused.items():
    -                    self._log(
    -                        "Email to {p} was refused ({c}): {m}".format(
    -                            p=person, c=code, m=msg
    -                        )
    -                    )
    +                    self._log(f"Email to {person} was refused ({code}): {msg}")
                 s.quit()
                 n_recip = len(self._recipients)
             except Exception as err:
    -            self._log.error("connection to SMTP server failed: {}".format(err))
    +            self._log.error(f"connection to SMTP server failed: {err}")
                 n_recip = 0
             return n_recip
    @@ -531,7 +516,7 @@

    Source code for pymatgen.db.vv.report

                 if key not in maxwid:
                     maxwid[key] = [len(k) for k in key]
                 for i, k in enumerate(key):
    -                strlen = len("{}".format(r[k]))
    +                strlen = len(f"{r[k]}")
                     maxwid[key][i] = max(maxwid[key][i], strlen)
             return keyset, maxwid
    @@ -540,9 +525,7 @@

    Source code for pymatgen.db.vv.report

             columns = list(columns)  # might be a tuple
             fixed_cols = [self.key]
             if section.lower() == "different":
    -            fixed_cols.extend(
    -                [Differ.CHANGED_MATCH_KEY, Differ.CHANGED_OLD, Differ.CHANGED_NEW]
    -            )
    +            fixed_cols.extend([Differ.CHANGED_MATCH_KEY, Differ.CHANGED_OLD, Differ.CHANGED_NEW])
             map(columns.remove, fixed_cols)
             columns.sort()
             return fixed_cols + columns
    @@ -669,7 +652,7 @@

    Source code for pymatgen.db.vv.report

             :rtype: str
             """
             css = "\n".join(self.css)
    -        content = "{}{}".format(self._header(), self._body(result))
    +        content = f"{self._header()}{self._body(result)}"
             if self._email:
                 text = """<!DOCTYPE html>
                 <html>
    @@ -690,7 +673,7 @@ 

    Source code for pymatgen.db.vv.report

     
         def _header(self):
             lines = [
    -            "<div class='header'><h1{{sh1}}>{t}</h1>".format(t=self.TITLE),
    +            f"<div class='header'><h1{{sh1}}>{self.TITLE}</h1>",
                 "<p{sp}>Compared <em{sem}>{{db1}}</em> with <em{sem}>{{db2}}</em></p>",
                 "<p{sp}>Filter: <span class='fixed'>{{filter}}</span></p>",
                 "<p{sp}>Run time: <em{sem}>{{start_time}}</em> to <em{sem}>{{end_time}}</em> ",
    @@ -713,17 +696,13 @@ 

    Source code for pymatgen.db.vv.report

     
    [docs] def style(self, css_class, elt): s = "" if css_class in self.styles and elt in self.styles[css_class]: - s = " style='{}'".format(self.styles[css_class][elt]) + s = f" style='{self.styles[css_class][elt]}'" return s
    def _body(self, result): body = ["<div class='content'>"] for section in result.keys(): - body.append( - "<div class='section'{{ssec}}><h2{{sh2}}>{t}</h2>".format( - t=section.title() - ) - ) + body.append(f"<div class='section'{{ssec}}><h2{{sh2}}>{section.title()}</h2>") if len(result[section]) == 0: body.append("<div class='empty'>Empty</div>") else: @@ -754,9 +733,7 @@

    Source code for pymatgen.db.vv.report

                 cols = self.ordered_cols(subset, section)
                 # Format the table.
                 tables.extend(
    -                ["<tr{tr1}>".format(**inline)]
    -                + ["<th{th}>{c}</th>".format(c=c, **inline) for c in cols]
    -                + ["</tr>"]
    +                ["<tr{tr1}>".format(**inline)] + ["<th{th}>{c}</th>".format(c=c, **inline) for c in cols] + ["</tr>"]
                 )
                 self.sort_rows(rows, section)
                 for i, r in enumerate(rows):
    @@ -764,11 +741,9 @@ 

    Source code for pymatgen.db.vv.report

                     if tuple(sorted(r.keys())) != subset:
                         continue
                     if self._url is not None:
    -                    r[cols[0]] = "<a href='{p}{v}'>{v}</a>".format(
    -                        p=self._url, v=r[cols[0]]
    -                    )
    +                    r[cols[0]] = "<a href='{p}{v}'>{v}</a>".format(p=self._url, v=r[cols[0]])
                     tables.extend(
    -                    ["<tr{}>".format(tr).format(**inline)]
    +                    [f"<tr{tr}>".format(**inline)]
                         + ["<td{td}>{d}</td>".format(d=r[c], **inline) for c in cols]
                         + ["</tr>"]
                     )
    @@ -799,14 +774,14 @@ 

    Source code for pymatgen.db.vv.report

                 lines.append("* " + section.title())
                 indent = " " * 4
                 if len(result[section]) == 0:
    -                lines.append("{}EMPTY".format(indent))
    +                lines.append(f"{indent}EMPTY")
                 else:
                     keyset, maxwid = self.result_subsets(result[section])
                     for columns in keyset:
                         ocol = self.ordered_cols(columns, section)
                         mw = maxwid[columns]
                         mw_i = [columns.index(c) for c in ocol]  # reorder indexes
    -                    fmt = "  ".join(["{{:{:d}s}}".format(mw[i]) for i in mw_i])
    +                    fmt = "  ".join([f"{{:{mw[i]:d}s}}" for i in mw_i])
                         lines.append("")
                         lines.append(indent + fmt.format(*ocol))
                         lines.append(indent + "-_" * (sum(mw) / 2 + len(columns)))
    @@ -820,7 +795,7 @@ 

    Source code for pymatgen.db.vv.report

             return "\n".join(lines)
    def _record(self, rec): - fields = ["{}: {}".format(k, v) for k, v in rec.items()] + fields = [f"{k}: {v}" for k, v in rec.items()] return "{" + ", ".join(fields) + "}"
    @@ -840,7 +815,7 @@

    Source code for pymatgen.db.vv.report

       

    Quick search

    diff --git a/docs/_modules/pymatgen/db/vv/util.html b/docs/_modules/pymatgen/db/vv/util.html index f6620c5..b592c48 100644 --- a/docs/_modules/pymatgen/db/vv/util.html +++ b/docs/_modules/pymatgen/db/vv/util.html @@ -5,7 +5,7 @@ - pymatgen.db.vv.util — pymatgen-db 2021.5.28 documentation + pymatgen.db.vv.util — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

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

    Navigation

    Source code for pymatgen.db.vv.util

    -# coding: utf-8
    -"""
    +"""
     Utility functions and classes for validation.
     """
     __author__ = "Dan Gunter"
    @@ -61,16 +60,13 @@ 

    Source code for pymatgen.db.vv.util

     __status__ = "Development"
     __date__ = "3/29/13"
     
    -#!/usr/bin/env python3
    -
    -
     from argparse import Action
     from collections import deque
     from itertools import chain
     import logging
     import time
     from sys import getsizeof
    -from yaml import load
    +import ruamel.yaml as yaml
     
     TRACE = logging.DEBUG - 1
     
    @@ -83,7 +79,7 @@ 

    Source code for pymatgen.db.vv.util

         def __init__(self, name=None):
             if name is None:
                 if self.__module__ != "__main__":
    -                name = "%s.%s" % (self.__module__, self.__class__.__name__)
    +                name = f"{self.__module__}.{self.__class__.__name__}"
                 else:
                     name = self.__class__.__name__
             self._log = logging.getLogger(name)
    @@ -152,9 +148,7 @@ 

    Source code for pymatgen.db.vv.util

                 do_foo2()
         """
     
    -    def __init__(
    -        self, name="event", elapsed=None, log=None, level=logging.DEBUG, **kwargs
    -    ):
    +    def __init__(self, name="event", elapsed=None, log=None, level=logging.DEBUG, **kwargs):
             self.name, self.kw, self.level = name, kwargs, level
             self.elapsed = elapsed
             self._log = log
    @@ -165,10 +159,8 @@ 

    Source code for pymatgen.db.vv.util

         def __exit__(self, type, value, tb):
             elapsed = time.time() - self.begin
             if self._log is not None:
    -            nvp = ", ".join(["{}={}".format(k, v) for k, v in self.kw.items()])
    -            self._log.log(
    -                self.level, "@{n}={s:f}s {kw}".format(n=self.name, s=elapsed, kw=nvp)
    -            )
    +            nvp = ", ".join([f"{k}={v}" for k, v in self.kw.items()])
    +            self._log.log(self.level, f"@{self.name}={elapsed:f}s {nvp}")
             if self.elapsed:
                 self.elapsed.value = elapsed
    @@ -259,11 +251,11 @@

    Source code for pymatgen.db.vv.util

             config = self._get_config_from_file(values)
             for key, value in config.items():
                 setattr(namespace, key, value)
    -        _alog.debug("YamlConfig.namespace={}".format(namespace))
    +        _alog.debug(f"YamlConfig.namespace={namespace}")
     
         def _get_config_from_file(self, filename):
             with open(filename) as f:
    -            config = load(f)
    +            config = yaml.load(f)
             return config
    @@ -282,12 +274,12 @@

    Source code for pymatgen.db.vv.util

             try:
                 key, value = item.split("=", 1)
             except ValueError:
    -            msg = "argument item '{}' not in form key=value".format(item)
    +            msg = f"argument item '{item}' not in form key=value"
                 if _argparse_is_dumb:
                     _alog.warn(msg)
                 raise ValueError(msg)
             if key in d:
    -            msg = "Duplicate key for '{}' not allowed".format(key)
    +            msg = f"Duplicate key for '{key}' not allowed"
                 if _argparse_is_dumb:
                     _alog.warn(msg)
                 raise ValueError(msg)
    @@ -323,7 +315,7 @@ 

    Source code for pymatgen.db.vv.util

       

    Quick search

    diff --git a/docs/_modules/pymatgen/db/vv/validate.html b/docs/_modules/pymatgen/db/vv/validate.html index d613db4..1022b05 100644 --- a/docs/_modules/pymatgen/db/vv/validate.html +++ b/docs/_modules/pymatgen/db/vv/validate.html @@ -5,7 +5,7 @@ - pymatgen.db.vv.validate — pymatgen-db 2021.5.28 documentation + pymatgen.db.vv.validate — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

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

    Source code for pymatgen.db.vv.validate

         "Syntax error in configuration of Validator"
     
         def __init__(self, target, desc):
    -        msg = 'Invalid syntax: {} -> "{}"'.format(desc, target)
    +        msg = f'Invalid syntax: {desc} -> "{target}"'
             Exception.__init__(self, msg)
    @@ -109,7 +109,7 @@

    Source code for pymatgen.db.vv.validate

             """
             if not self._PATTERN.match(text):
                 raise ValidatorSyntaxError(text, self.BAD_CONSTRAINT_ERR)
    -        tokens = re.split("@?\s+", text)
    +        tokens = re.split(r"@?\s+", text)
             if len(tokens) < 1:
                 raise ValidatorSyntaxError(text, self.BAD_CONSTRAINT_ERR)
             self.method = tokens[0]
    @@ -280,9 +280,7 @@ 

    Source code for pymatgen.db.vv.validate

             self._total += 1
             if self._n == 0 or self._count < self._n:
                 return
    -        sys.stderr.write(
    -            self._fmt.format(*args, subject=self._subject, count=self.count)
    -        )
    +        sys.stderr.write(self._fmt.format(*args, subject=self._subject, count=self.count))
             sys.stderr.write("\n")
             sys.stderr.flush()
             self._count = 0
    @@ -305,7 +303,7 @@

    Source code for pymatgen.db.vv.validate

             DoesLogging.__init__(self, name="mg.ConstraintSpec")
             self._sections, _slist = {}, []
             for item in spec:
    -            self._log.debug("build constraint from: {}".format(item))
    +            self._log.debug(f"build constraint from: {item}")
                 if isinstance(item, dict):
                     self._add_complex_section(item)
                 else:
    @@ -332,7 +330,7 @@ 

    Source code for pymatgen.db.vv.validate

             try:
                 fltr = item[self.FILTER_SECT]
             except KeyError:
    -            raise ValueError("configuration requires '{}'".format(self.FILTER_SECT))
    +            raise ValueError(f"configuration requires '{self.FILTER_SECT}'")
             sample = item.get(self.SAMPLE_SECT, None)
             constraints = item.get(self.CONSTRAINT_SECT, None)
     
    @@ -404,9 +402,7 @@ 

    Source code for pymatgen.db.vv.validate

                     report_fields,
                 )
    - def __init__( - self, max_violations=50, max_dberrors=10, aliases=None, add_exists=False - ): + def __init__(self, max_violations=50, max_dberrors=10, aliases=None, add_exists=False): DoesLogging.__init__(self, name="mg.validator") self.set_progress(0) self._aliases = aliases if aliases else {} @@ -426,9 +422,7 @@

    Source code for pymatgen.db.vv.validate

             :type num: int
             :return: None
             """
    -        report_str = (
    -            "Progress for {subject}: {count:d} invalid, {:d} db errors, {:d} bytes"
    -        )
    +        report_str = "Progress for {subject}: {count:d} invalid, {:d} db errors, {:d} bytes"
             self._progress = ProgressMeter(num, report_str)
    [docs] def num_violations(self): @@ -481,8 +475,8 @@

    Source code for pymatgen.db.vv.validate

             query = parts.cond.to_mongo(disjunction=False)
             query.update(parts.body.to_mongo())
             cvgroup.condition = parts.cond.to_mongo(disjunction=False)
    -        self._log.debug("Query spec: {}".format(query))
    -        self._log.debug("Query fields: {}".format(parts.report_fields))
    +        self._log.debug(f"Query spec: {query}")
    +        self._log.debug(f"Query fields: {parts.report_fields}")
             # Find records that violate 1 or more constraints
             cursor = coll.find(query, parts.report_fields, **self._find_kw)
             if parts.sampler is not None:
    @@ -504,7 +498,7 @@ 

    Source code for pymatgen.db.vv.validate

                     num_dberr += 1
                     if num_dberr > self._max_dberr > 0:
                         raise DBError("Too many errors")
    -                self._log.warn("DB.{:d}: {}".format(num_dberr, err))
    +                self._log.warn(f"DB.{num_dberr:d}: {err}")
                     continue
     
                 # report progress
    @@ -537,26 +531,20 @@ 

    Source code for pymatgen.db.vv.validate

                 fval = mongo_get(record, key)
                 if fval is None:
                     expected = clause.constraint.value
    -                reasons.append(
    -                    ConstraintViolation(clause.constraint, "missing", expected)
    -                )
    +                reasons.append(ConstraintViolation(clause.constraint, "missing", expected))
                     continue
                 if op.is_variable():
                     # retrieve value for variable
                     var_name = clause.constraint.value
                     value = mongo_get(record, var_name, default=None)
                     if value is None:
    -                    reasons.append(
    -                        ConstraintViolation(clause.constraint, "missing", var_name)
    -                    )
    +                    reasons.append(ConstraintViolation(clause.constraint, "missing", var_name))
                         continue
                     clause.constraint.value = value  # swap out value, temporarily
                 # take length for size
                 if op.is_size():
                     if isinstance(fval, str) or not hasattr(fval, "__len__"):
    -                    reasons.append(
    -                        ConstraintViolation(clause.constraint, type(fval), "sequence")
    -                    )
    +                    reasons.append(ConstraintViolation(clause.constraint, type(fval), "sequence"))
                         if op.is_variable():
                             clause.constraint.value = var_name  # put original value back
                         continue
    @@ -612,9 +600,7 @@ 

    Source code for pymatgen.db.vv.validate

     
                 cond_query = MongoQuery()
                 if sval.filters is not None:
    -                cond_groups = self._process_constraint_expressions(
    -                    sval.filters, rev=False
    -                )
    +                cond_groups = self._process_constraint_expressions(sval.filters, rev=False)
                     for cg in cond_groups.values():
                         for c in cg:
                             cond_query.add_clause(MongoClause(c, rev=False))
    @@ -651,9 +637,7 @@ 

    Source code for pymatgen.db.vv.validate

                 for field_name, group in groups.items():
                     conflicts = group.get_conflicts()
                     if conflicts:
    -                    raise ValueError(
    -                        "Conflicts for field {}: {}".format(field_name, conflicts)
    -                    )
    +                    raise ValueError(f"Conflicts for field {field_name}: {conflicts}")
             return groups
     
         def _is_python(self, constraint_list):
    @@ -664,13 +648,9 @@ 

    Source code for pymatgen.db.vv.validate

             :return: True if this refers to an import of code, False otherwise
             :raises: ValidatorSyntaxError
             """
    -        if len(constraint_list) == 1 and PythonMethod.constraint_is_method(
    -            constraint_list[0]
    -        ):
    +        if len(constraint_list) == 1 and PythonMethod.constraint_is_method(constraint_list[0]):
                 return True
    -        if len(constraint_list) > 1 and any(
    -            filter(PythonMethod.constraint_is_method, constraint_list)
    -        ):
    +        if len(constraint_list) > 1 and any(filter(PythonMethod.constraint_is_method, constraint_list)):
                 condensed_list = "/".join(constraint_list)
                 err = PythonMethod.CANNOT_COMBINE_ERR
                 raise ValidatorSyntaxError(condensed_list, err)
    @@ -690,7 +670,7 @@ 

    Source code for pymatgen.db.vv.validate

             try:
                 self.aliases = new_value
             except Exception as err:
    -            raise ValueError("invalid value: {}".format(err))
    + raise ValueError(f"invalid value: {err}")
    [docs]class Sampler(DoesLogging): @@ -716,15 +696,11 @@

    Source code for pymatgen.db.vv.validate

             DoesLogging.__init__(self, "mg.sampler")
             # Sanity checks
             if min_items < 0:
    -            raise ValueError("min_items cannot be negative ({:d})".format(min_items))
    +            raise ValueError(f"min_items cannot be negative ({min_items:d})")
             if (max_items != 0) and (max_items < min_items):
    -            raise ValueError(
    -                "max_items must be zero or >= min_items ({:d} < {:d})".format(
    -                    max_items, min_items
    -                )
    -            )
    +            raise ValueError(f"max_items must be zero or >= min_items ({max_items:d} < {min_items:d})")
             if not (0.0 <= p <= 1.0):
    -            raise ValueError("probability, p, must be between 0 and 1 ({:f})".format(p))
    +            raise ValueError(f"probability, p, must be between 0 and 1 ({p:f})")
             self.min_items = min_items
             self.max_items = max_items
             self.p = p
    @@ -735,7 +711,7 @@ 

    Source code for pymatgen.db.vv.validate

             if distrib == self.DIST_RUNIF:
                 self._keep = self._keep_runif
             else:
    -            raise ValueError("unrecognized distribution: {}".format(distrib))
    +            raise ValueError(f"unrecognized distribution: {distrib}")
     
         @property
         def is_empty(self):
    @@ -817,7 +793,7 @@ 

    Source code for pymatgen.db.vv.validate

       

    Quick search

    diff --git a/docs/_sources/pymatgen.rst.txt b/docs/_sources/pymatgen.rst.txt index 601cd54..bca3246 100644 --- a/docs/_sources/pymatgen.rst.txt +++ b/docs/_sources/pymatgen.rst.txt @@ -1,6 +1,8 @@ pymatgen namespace ================== +.. py:module:: pymatgen + Subpackages ----------- diff --git a/docs/_static/basic.css b/docs/_static/basic.css index aa9df31..bf18350 100644 --- a/docs/_static/basic.css +++ b/docs/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -731,8 +731,9 @@ dl.glossary dt { .classifier:before { font-style: normal; - margin: 0.5em; + margin: 0 0.5em; content: ":"; + display: inline-block; } abbr, acronym { @@ -756,6 +757,7 @@ span.pre { -ms-hyphens: none; -webkit-hyphens: none; hyphens: none; + white-space: nowrap; } div[class*="highlight-"] { @@ -819,7 +821,7 @@ div.code-block-caption code { table.highlighttable td.linenos, span.linenos, -div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */ +div.highlight span.gp { /* gp: Generic.Prompt */ user-select: none; -webkit-user-select: text; /* Safari fallback only */ -webkit-user-select: none; /* Chrome/Safari */ diff --git a/docs/_static/doctools.js b/docs/_static/doctools.js index 61ac9d2..e509e48 100644 --- a/docs/_static/doctools.js +++ b/docs/_static/doctools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for all documentation. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -264,6 +264,9 @@ var Documentation = { hideSearchWords : function() { $('#searchbox .highlight-link').fadeOut(300); $('span.highlighted').removeClass('highlighted'); + var url = new URL(window.location); + url.searchParams.delete('highlight'); + window.history.replaceState({}, '', url); }, /** @@ -301,12 +304,14 @@ var Documentation = { 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; } } }); diff --git a/docs/_static/documentation_options.js b/docs/_static/documentation_options.js index 788a7d1..f6ac950 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: '2021.5.28', + VERSION: '2022.3.17', LANGUAGE: 'None', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/_static/language_data.js b/docs/_static/language_data.js index 863704b..ebe2f03 100644 --- a/docs/_static/language_data.js +++ b/docs/_static/language_data.js @@ -5,7 +5,7 @@ * This script contains the language-specific data used by searchtools.js, * namely the list of stopwords, stemmer, scorer and splitter. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/docs/_static/searchtools.js b/docs/_static/searchtools.js index e09f926..2d77859 100644 --- a/docs/_static/searchtools.js +++ b/docs/_static/searchtools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for the full-text search. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -282,7 +282,10 @@ var Search = { complete: function(jqxhr, textstatus) { var data = jqxhr.responseText; if (data !== '' && data !== undefined) { - listItem.append(Search.makeSearchSummary(data, searchterms, hlterms)); + var summary = Search.makeSearchSummary(data, searchterms, hlterms); + if (summary) { + listItem.append(summary); + } } Search.output.append(listItem); setTimeout(function() { @@ -325,7 +328,9 @@ var Search = { var results = []; for (var prefix in objects) { - for (var name in objects[prefix]) { + for (var iMatch = 0; iMatch != objects[prefix].length; ++iMatch) { + var match = objects[prefix][iMatch]; + var name = match[4]; var fullname = (prefix ? prefix + '.' : '') + name; var fullnameLower = fullname.toLowerCase() if (fullnameLower.indexOf(object) > -1) { @@ -339,7 +344,6 @@ var Search = { } else if (parts[parts.length - 1].indexOf(object) > -1) { score += Scorer.objPartialMatch; } - var match = objects[prefix][name]; var objname = objnames[match[1]][2]; var title = titles[match[0]]; // If more than one term searched for, we require other words to be @@ -498,6 +502,9 @@ var Search = { */ makeSearchSummary : function(htmlText, keywords, hlwords) { var text = Search.htmlToText(htmlText); + if (text == "") { + return null; + } var textLower = text.toLowerCase(); var start = 0; $.each(keywords, function() { diff --git a/docs/_themes/README.html b/docs/_themes/README.html index 545e204..52050ec 100644 --- a/docs/_themes/README.html +++ b/docs/_themes/README.html @@ -6,7 +6,7 @@ - krTheme Sphinx Style — pymatgen-db 2021.5.28 documentation + krTheme Sphinx Style — pymatgen-db 2022.3.17 documentation @@ -38,7 +38,7 @@

    Navigation

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

    This Page

    Quick search

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

    Navigation

  • previous |
  • - +
    @@ -686,8 +686,9 @@

    Incremental builds
    -

    Table of Contents

    -
    @@ -171,8 +171,9 @@

    v0.3.0
    -

    Table of Contents

    -
    @@ -116,7 +116,7 @@

    This Page

    Quick search

    diff --git a/docs/doctrees/_themes/README.doctree b/docs/doctrees/_themes/README.doctree index e2b415f..5863f60 100644 Binary files a/docs/doctrees/_themes/README.doctree and b/docs/doctrees/_themes/README.doctree differ diff --git a/docs/doctrees/builders.doctree b/docs/doctrees/builders.doctree index 05a3d41..cf1ba5b 100644 Binary files a/docs/doctrees/builders.doctree and b/docs/doctrees/builders.doctree differ diff --git a/docs/doctrees/change_log.doctree b/docs/doctrees/change_log.doctree index dcf7775..129afb9 100644 Binary files a/docs/doctrees/change_log.doctree and b/docs/doctrees/change_log.doctree differ diff --git a/docs/doctrees/dbconfig.doctree b/docs/doctrees/dbconfig.doctree index 2e5e670..0c7d22e 100644 Binary files a/docs/doctrees/dbconfig.doctree and b/docs/doctrees/dbconfig.doctree differ diff --git a/docs/doctrees/environment.pickle b/docs/doctrees/environment.pickle index f761af2..3bc609b 100644 Binary files a/docs/doctrees/environment.pickle and b/docs/doctrees/environment.pickle differ diff --git a/docs/doctrees/index.doctree b/docs/doctrees/index.doctree index e32f28b..75ad265 100644 Binary files a/docs/doctrees/index.doctree and b/docs/doctrees/index.doctree differ diff --git a/docs/doctrees/mgvv.doctree b/docs/doctrees/mgvv.doctree index 8a12489..c96e8b6 100644 Binary files a/docs/doctrees/mgvv.doctree and b/docs/doctrees/mgvv.doctree differ diff --git a/docs/doctrees/modules.doctree b/docs/doctrees/modules.doctree index 0a61fbe..04d721e 100644 Binary files a/docs/doctrees/modules.doctree and b/docs/doctrees/modules.doctree differ diff --git a/docs/doctrees/pymatgen.db.alchemy.doctree b/docs/doctrees/pymatgen.db.alchemy.doctree index 0c731ee..7d2488a 100644 Binary files a/docs/doctrees/pymatgen.db.alchemy.doctree and b/docs/doctrees/pymatgen.db.alchemy.doctree differ diff --git a/docs/doctrees/pymatgen.db.builders.doctree b/docs/doctrees/pymatgen.db.builders.doctree index ca86744..c81bdd7 100644 Binary files a/docs/doctrees/pymatgen.db.builders.doctree and b/docs/doctrees/pymatgen.db.builders.doctree differ diff --git a/docs/doctrees/pymatgen.db.builders.examples.doctree b/docs/doctrees/pymatgen.db.builders.examples.doctree index d6ea075..fa1ecea 100644 Binary files a/docs/doctrees/pymatgen.db.builders.examples.doctree and b/docs/doctrees/pymatgen.db.builders.examples.doctree differ diff --git a/docs/doctrees/pymatgen.db.doctree b/docs/doctrees/pymatgen.db.doctree index 4c22a4b..fe516ee 100644 Binary files a/docs/doctrees/pymatgen.db.doctree and b/docs/doctrees/pymatgen.db.doctree differ diff --git a/docs/doctrees/pymatgen.db.vv.doctree b/docs/doctrees/pymatgen.db.vv.doctree index 8127ba9..46170de 100644 Binary files a/docs/doctrees/pymatgen.db.vv.doctree and b/docs/doctrees/pymatgen.db.vv.doctree differ diff --git a/docs/doctrees/pymatgen.doctree b/docs/doctrees/pymatgen.doctree index f3aef70..821015e 100644 Binary files a/docs/doctrees/pymatgen.doctree and b/docs/doctrees/pymatgen.doctree differ diff --git a/docs/genindex.html b/docs/genindex.html index 7be9b75..b3e13fc 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -5,7 +5,7 @@ - Index — pymatgen-db 2021.5.28 documentation + Index — pymatgen-db 2022.3.17 documentation @@ -37,7 +37,7 @@

    Navigation

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

    Symbols

  • - --config <file> + --config
  • - --db CONFIG + --db
  • - --info INFO + --info
  • - --key KEY + --key
  • - --limit <num> + --limit
  • - --properties PROPS + --properties
  • - --query EXPR + --query
  • - --url URL + --url
  • - -c <file> - -
  • -
  • - -C <name> + -C
  • - -D CONFIG + -c
  • - -e <file or spec> + -D
  • - -E ADDR + -E
  • - -f <file> + -e
  • - -F <type> + -F
  • -
  • - -f FILE - -
  • - -F FORMAT + -f
  • @@ -321,14 +296,14 @@

    Symbols

  • - -i INFO + -i
  • - -k KEY + -k
  • - -p PROPS + -p
  • - -q EXPR + -q
  • - -s HOST + -s
  • - -u URL + -u
  • @@ -289,8 +289,9 @@

    Indices and tables
    -

    Table of Contents

    -
    @@ -561,8 +561,9 @@

    Options

    @@ -65,7 +65,7 @@

    Python Module Index

    - pymatgen + pymatgen @@ -194,7 +194,7 @@

    Python Module Index

    Quick search

    diff --git a/docs/pymatgen.db.alchemy.html b/docs/pymatgen.db.alchemy.html index 03e8ffc..7bda6a0 100644 --- a/docs/pymatgen.db.alchemy.html +++ b/docs/pymatgen.db.alchemy.html @@ -6,7 +6,7 @@ - pymatgen.db.alchemy package — pymatgen-db 2021.5.28 documentation + pymatgen.db.alchemy package — pymatgen-db 2022.3.17 documentation @@ -46,7 +46,7 @@

    Navigation

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

    Submodules
    -class QeTransmuter(queryengine, criteria, transformations, extend_collection=0, ncores=None)[source]
    +class QeTransmuter(queryengine, criteria, transformations, extend_collection=0, ncores=None)[source]

    Bases: pymatgen.alchemy.transmuters.StandardTransmuter

    The QeTransmuter uses a QueryEngine to retrieve and generate new structures from a database.

    @@ -112,8 +112,9 @@

    Submodules
    -

    Table of Contents

    -
      +

      Related Topics

      • Documentation overview
        • pymatgen.db package
            @@ -142,7 +144,7 @@

            This Page

            Quick search

            diff --git a/docs/pymatgen.db.builders.examples.html b/docs/pymatgen.db.builders.examples.html index 0927a5b..dddce39 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 2021.5.28 documentation + pymatgen.db.builders.examples package — pymatgen-db 2022.3.17 documentation @@ -46,7 +46,7 @@

            Navigation

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

            Submodules
            -class CopyBuilder(*args, **kwargs)[source]
            +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.

            @@ -126,7 +126,7 @@

            Submodules
            -class FileCounter(**kwargs)[source]
            +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.

            @@ -233,7 +233,7 @@

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

            Bases: pymatgen.db.builders.core.Builder

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

            @@ -289,8 +289,9 @@

            Submodules
            -

            Table of Contents

            -

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

            Bases: Exception

            Generic database error.

            -class Mark(collection=None, operation=None, field=None, pos=None)[source]
            +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.

            @@ -607,17 +607,17 @@

            Submodules
            -FLD_FLD = 'field'
            +FLD_FLD = 'field'

            -FLD_MARK = 'mark'
            +FLD_MARK = 'mark'
            -FLD_OP = 'operation'
            +FLD_OP = 'operation'
            @@ -628,7 +628,7 @@

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

            Construct from dict

            Parameters
            @@ -648,12 +648,12 @@

            Submodules
            -property pos
            +property pos

            -property query
            +property query

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

            @@ -687,7 +687,7 @@

            Submodules
            -exception NoTrackingCollection[source]
            +exception NoTrackingCollection[source]

            Bases: Exception

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

            @@ -695,29 +695,29 @@

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

            Bases: enum.Enum

            Enumeration of collection operations.

            -build = 2
            +build = 2
            -copy = 1
            +copy = 1
            -other = 99
            +other = 99

            -class TrackedCollection(coll, operation=None, field=None)[source]
            +class TrackedCollection(coll, operation=None, field=None)[source]

            Bases: object

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

            @@ -758,7 +758,7 @@

            Submodules
            -class TrackedQueryEngine(track_operation=None, track_field=None, **kwargs)[source]
            +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 @@ -770,7 +770,7 @@

            Submodules
            -property collection_name
            +property collection_name

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

            @@ -783,7 +783,7 @@

            Submodules
            -property tracking
            +property tracking

            Whether tracking is really enabled.

            @@ -791,11 +791,11 @@

            Submodules
            -class TrackingInterface[source]
            +class TrackingInterface[source]

            Bases: object

            -abstract set_mark()[source]
            +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.

            @@ -804,7 +804,7 @@

            Submodules
            -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]
            +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 @@ -876,7 +876,7 @@

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

            Bases: object

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

            @@ -891,12 +891,12 @@

            Submodules
            -FIELD_SEP = ','
            +FIELD_SEP = ','

            -KV_SEP = ':'
            +KV_SEP = ':'
            @@ -908,7 +908,7 @@

            Submodules
            -class Scalar(typecode, optional=False, meta='')[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 @@ -921,17 +921,17 @@

            Submodules
            -JSTYPES = {'bool': 'boolean', 'date': 'string', 'datetime': 'string', 'float': 'number', 'int': 'integer', 'null': 'null', 'string': 'string'}
            +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>>}
            +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
            +property jstype

            Return JavaScript type.

            @@ -939,7 +939,7 @@

            Submodules
            -class Schema(schema, optional=False, meta='')[source]
            +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 @@ -952,17 +952,17 @@

            Submodules
            -IS_DICT = 1
            +IS_DICT = 1
            -IS_LIST = 0
            +IS_LIST = 0
            -IS_SCALAR = 2
            +IS_SCALAR = 2
            @@ -989,26 +989,26 @@

            Submodules
            -exception SchemaError[source]
            +exception SchemaError[source]

            Bases: Exception

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

            -exception SchemaParseError[source]
            +exception SchemaParseError[source]

            Bases: pymatgen.db.builders.schema.SchemaError

            -exception SchemaPathError[source]
            +exception SchemaPathError[source]

            Bases: pymatgen.db.builders.schema.SchemaError

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

            Bases: pymatgen.db.builders.schema.SchemaError

            @@ -1164,8 +1164,9 @@

            Submodules
            -

            Table of Contents

            -
            @@ -115,7 +115,7 @@

            Submodules
            -class VaspToDbTaskDrone(host='127.0.0.1', port=27017, database='vasp', user=None, password=None, collection='tasks', parse_dos=False, compress_dos=False, parse_projected_eigen=False, simulate_mode=False, additional_fields=None, update_duplicates=True, mapi_key=None, use_full_uri=True, runs=None)[source]
            +class VaspToDbTaskDrone(host='127.0.0.1', port=27017, database='vasp', user=None, password=None, collection='tasks', parse_dos=False, compress_dos=False, parse_projected_eigen=False, simulate_mode=False, additional_fields=None, update_duplicates=True, mapi_key=None, use_full_uri=True, runs=None)[source]

            Bases: pymatgen.apps.borg.hive.AbstractDrone

            VaspToDbTaskDrone assimilates directories containing vasp input to inserted db tasks. This drone is meant ot be used with pymatgen’s @@ -216,7 +216,7 @@

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

            d – Dict representation.

            @@ -357,13 +357,13 @@

            Submodules
            -exception ConfigurationFileError(filename, err)[source]
            +exception ConfigurationFileError(filename, err)[source]

            Bases: Exception

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

            Bases: object

            Database configuration.

            Constructor.

            @@ -384,27 +384,27 @@

            Submodules
            -ALL_SETTINGS = ['host', 'port', 'database', 'collection', 'aliases']
            +ALL_SETTINGS = ['host', 'port', 'database', 'collection', 'aliases']

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

            Submodules
            -property dbname
            +property dbname

            Name of the database.

            -property host
            +property host
            -property password
            +property password
            -property port
            +property port
            -property settings
            +property settings
            -property user
            +property user
            @@ -500,7 +500,7 @@

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

            Bases: object

            Convenient storage and access to a group of database configurations.

            @@ -508,7 +508,7 @@

            Submodules
            -SEP = '.'
            +SEP = '.'
            @@ -618,13 +618,13 @@

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

            Bases: Exception

            -class RegexDict[source]
            +class RegexDict[source]

            Bases: dict

            Extend standard dict to include a function that finds values based on a @@ -691,7 +691,7 @@

            Submodules
            -class QueryEngine(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]
            +class QueryEngine(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: object

            This class defines a QueryEngine interface to a Mongo Collection based on a set of aliases. This query engine also provides convenient translation @@ -763,42 +763,42 @@

            Submodules
            -ALIASES_CONFIG_KEY = 'aliases_config'
            +ALIASES_CONFIG_KEY = 'aliases_config'

            -COLLECTION_KEY = 'collection'
            +COLLECTION_KEY = 'collection'
            -DB_KEY = 'database'
            +DB_KEY = 'database'
            -HOST_KEY = 'host'
            +HOST_KEY = 'host'
            -PASSWORD_KEY = 'password'
            +PASSWORD_KEY = 'password'
            -PORT_KEY = 'port'
            +PORT_KEY = 'port'
            -USER_KEY = 'user'
            +USER_KEY = 'user'
            -aliases = None
            +aliases = None

            See aliases arg to constructor

            @@ -810,18 +810,18 @@

            Submodules
            -property collection_name
            +property collection_name
            -default_criteria = None
            +default_criteria = None

            See default_criteria arg to constructor

            -default_properties = None
            +default_properties = None

            See default_properties arg to constructor

            @@ -833,7 +833,7 @@

            Submodules
            -static from_config(config_file, use_admin=False)[source]
            +static from_config(config_file, use_admin=False)[source]

            Initialize a QueryEngine from a JSON config file generated using mgdb init.

            @@ -981,13 +981,13 @@

            Submodules
            -query_post = None
            +query_post = None

            See query_post arg to constructor

            -result_post = None
            +result_post = None

            See result_post arg to constructor

            @@ -1028,14 +1028,14 @@

            Submodules
            -exception QueryError[source]
            +exception QueryError[source]

            Bases: Exception

            Exception class for errors occuring during queries.

            -class QueryListResults(prop_dict, result_cursor, postprocess=None)[source]
            +class QueryListResults(prop_dict, result_cursor, postprocess=None)[source]

            Bases: pymatgen.db.query_engine.QueryResults

            Set of QueryResults on a list instead of a MongoDB cursor.

            Constructor.

            @@ -1058,7 +1058,7 @@

            Submodules
            -class QueryResults(prop_dict, result_cursor, postprocess=None)[source]
            +class QueryResults(prop_dict, result_cursor, postprocess=None)[source]

            Bases: collections.abc.Iterable

            Iterable wrapper for results from QueryEngine. Like pymongo’s cursor, this object should generally not be instantiated, @@ -1096,7 +1096,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]
            +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

            Constructor for JSONEncoder, with sensible defaults.

            If skipkeys is false, then it is a TypeError to attempt @@ -1222,8 +1222,9 @@

            Submodules
            -

            Table of Contents

            -

            @@ -247,7 +247,7 @@

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

            Bases: object

            Base class for formatting a ‘diff’ report.

            Constructor.

            @@ -264,7 +264,7 @@

            Submodules
            -TITLE = 'Materials Project Database Diff Report'
            +TITLE = 'Materials Project Database Diff Report'
            @@ -322,7 +322,7 @@

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

            Bases: pymatgen.db.vv.report.DiffFormatter

            Format an HTML diff report.

            Constructor.

            @@ -336,12 +336,12 @@

            Submodules
            -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; }']
            +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; }']
            +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; }']
            @@ -365,14 +365,14 @@

            Submodules
            -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'}}
            +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]
            +class DiffJsonFormatter(meta, pretty=False, **kwargs)[source]

            Bases: pymatgen.db.vv.report.DiffFormatter

            Constructor.

            @@ -385,7 +385,7 @@

            Submodules
            -class Encoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)[source]
            +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 @@ -468,7 +468,7 @@

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

            Bases: pymatgen.db.vv.report.DiffFormatter

            Format a plain-text diff report.

            Constructor.

            @@ -501,7 +501,7 @@

            Submodules
            -class Emailer(sender='me@localhost', recipients=('you@remote.host'), subject='Report', server='localhost', port=None, **kwargs)[source]
            +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.

            @@ -544,14 +544,14 @@

            Submodules
            -property subject
            +property subject

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

            Bases: object

            Format a report as HTML.

            @@ -563,7 +563,7 @@

            Submodules
            -class Header(title='')[source]
            +class Header(title='')[source]

            Bases: object

            Base header class.

            @@ -585,7 +585,7 @@

            Submodules
            -class JSONFormatter(id_column=0, indent=2)[source]
            +class JSONFormatter(id_column=0, indent=2)[source]

            Bases: object

            Format a report as JSON.

            @@ -597,7 +597,7 @@

            Submodules
            -class MarkdownFormatter(id_column=0)[source]
            +class MarkdownFormatter(id_column=0)[source]

            Bases: object

            Format a report as markdown

            @@ -609,7 +609,7 @@

            Submodules
            -class Report(header)[source]
            +class Report(header)[source]

            Bases: object

            Create blank report, with a header.

            @@ -624,7 +624,7 @@

            Submodules
            -property header
            +property header

            @@ -636,20 +636,20 @@

            Submodules
            -exception ReportBackupError[source]
            +exception ReportBackupError[source]

            Bases: Exception

            -class ReportHeader(title='')[source]
            +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]
            +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 @@ -705,7 +705,7 @@

            Submodules
            -class ReportSection(header, body=None)[source]
            +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.

            @@ -719,21 +719,21 @@

            Submodules
            -property body
            +property body

            -class SectionHeader(title='')[source]
            +class SectionHeader(title='')[source]

            Bases: pymatgen.db.vv.report.Header

            Header for one section of a report.

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

            Bases: object

            Table of values.

            @@ -743,22 +743,22 @@

            Submodules
            -property column_names
            +property column_names

            -property column_widths
            +property column_widths
            -property ncol
            +property ncol
            -property nrow
            +property nrow
            @@ -768,7 +768,7 @@

            Submodules
            -property values
            +property values

            @@ -784,7 +784,7 @@

            Submodules
            -class DoesLogging(name=None)[source]
            +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.

            @@ -792,13 +792,13 @@

            Submodules
            -class ElapsedTime[source]
            +class ElapsedTime[source]

            Bases: object

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

            Bases: object

            Walk a dict, transforming. Used for JSON formatting.

            @@ -813,7 +813,7 @@

            Submodules
            -static dict_expand(o)[source]
            +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’}}}

            @@ -821,7 +821,7 @@

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

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

            @@ -836,7 +836,7 @@

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

            Bases: object

            Perform and report timings using the ‘with’ keyword.

            @@ -851,7 +851,7 @@

            Submodules
            -class YamlConfig(option_strings, dest, nargs=None, const=None, default=None, type=None, choices=None, required=False, help=None, metavar=None)[source]
            +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.

            @@ -924,7 +924,7 @@

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

            Bases: pymatgen.db.vv.util.DoesLogging

            Specification of a set of constraints for a collection.

            Create specification from a configuration.

            @@ -938,33 +938,33 @@

            Submodules
            -CONSTRAINT_SECT = 'constraints'
            +CONSTRAINT_SECT = 'constraints'

            -FILTER_SECT = 'filter'
            +FILTER_SECT = 'filter'
            -SAMPLE_SECT = 'sample'
            +SAMPLE_SECT = 'sample'

            -class ConstraintSpecSection(fltr, constraints, sample)[source]
            +class ConstraintSpecSection(fltr, constraints, sample)[source]

            Bases: object

            -property constraints
            +property constraints
            -property filters
            +property filters
            @@ -974,14 +974,14 @@

            Submodules
            -property sampler
            +property sampler

            -class ConstraintViolation(constraint, value, expected)[source]
            +class ConstraintViolation(constraint, value, expected)[source]

            Bases: object

            A single constraint violation, with no metadata.

            Create new constraint violation

            @@ -992,29 +992,29 @@

            Submodules
            -property expected_value
            +property expected_value

            -property field
            +property field
            -property got_value
            +property got_value
            -property op
            +property op

            -class ConstraintViolationGroup[source]
            +class ConstraintViolationGroup[source]

            Bases: object

            A group of constraint violations with metadata.

            Create an empty object.

            @@ -1039,13 +1039,13 @@

            Submodules
            -exception DBError[source]
            +exception DBError[source]

            Bases: Exception

            -class NullConstraintViolation[source]
            +class NullConstraintViolation[source]

            Bases: pymatgen.db.vv.validate.ConstraintViolation

            Empty constraint violation, for when there are no constraints.

            Create new constraint violation

            @@ -1058,12 +1058,12 @@

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

            Bases: object

            Simple progress tracker

            -property count
            +property count
            @@ -1080,7 +1080,7 @@

            Submodules
            -class Projection[source]
            +class Projection[source]

            Bases: object

            Fields on which to project the query results.

            @@ -1118,7 +1118,7 @@

            Submodules
            -class PythonMethod(text)[source]
            +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.

            @@ -1130,18 +1130,18 @@

            Submodules
            -BAD_CONSTRAINT_ERR = 'Invalid constraint (must be: @<method> [<param> ..])'
            +BAD_CONSTRAINT_ERR = 'Invalid constraint (must be: @<method> [<param> ..])'

            -CANNOT_COMBINE_ERR = 'Call to a Python method cannot be combined '
            +CANNOT_COMBINE_ERR = 'Call to a Python method cannot be combined '

            with any other constraints

            -classmethod constraint_is_method(text)[source]
            +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.

            @@ -1155,7 +1155,7 @@

            Submodules
            -class Sampler(min_items=0, max_items=1000000000.0, p=1.0, distrib=1, **kw)[source]
            +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.

            @@ -1174,22 +1174,22 @@

            Submodules
            -DEFAULT_DIST = 1
            +DEFAULT_DIST = 1

            -DIST_CODES = {'uniform': 1}
            +DIST_CODES = {'uniform': 1}
            -DIST_RUNIF = 1
            +DIST_RUNIF = 1
            -property is_empty
            +property is_empty
            @@ -1221,12 +1221,12 @@

            Submodules
            -class Validator(max_violations=50, max_dberrors=10, aliases=None, add_exists=False)[source]
            +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]
            +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.

            @@ -1297,7 +1297,7 @@

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

            Bases: Exception

            Syntax error in configuration of Validator

            @@ -1342,8 +1342,9 @@

            Submodules
            -

            Table of Contents

            -
            @@ -48,8 +48,8 @@

            Navigation

            -
            -

            pymatgen namespace

            +
            +

            pymatgen namespace

            Subpackages

            @@ -120,14 +120,16 @@

            Subpackages
            -

            Table of Contents

            -
            @@ -55,13 +55,14 @@

            Navigation

            Search

            -
            - +

            @@ -71,7 +72,7 @@

            Search

            - +
            diff --git a/docs/searchindex.js b/docs/searchindex.js index 271ad18..105eedd 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":3,"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:{"mgvv-diff":{"--db":[5,7,1,"cmdoption-mgvv-diff-D"],"--email":[5,7,1,"cmdoption-mgvv-diff-E"],"--email-server":[5,7,1,"cmdoption-mgvv-diff-s"],"--file":[5,7,1,"cmdoption-mgvv-diff-f"],"--format":[5,7,1,"cmdoption-mgvv-diff-F"],"--help":[5,7,1,"cmdoption-mgvv-diff-help"],"--info":[5,7,1,"cmdoption-mgvv-diff-i"],"--key":[5,7,1,"cmdoption-mgvv-diff-k"],"--missing":[5,7,1,"cmdoption-mgvv-diff-m"],"--numeric":[5,7,1,"cmdoption-mgvv-diff-n"],"--print":[5,7,1,"cmdoption-mgvv-diff-P"],"--properties":[5,7,1,"cmdoption-mgvv-diff-p"],"--query":[5,7,1,"cmdoption-mgvv-diff-q"],"--url":[5,7,1,"cmdoption-mgvv-diff-u"],"--verbose":[5,7,1,"cmdoption-mgvv-diff-v"],"-D":[5,7,1,"cmdoption-mgvv-diff-D"],"-E":[5,7,1,"cmdoption-mgvv-diff-E"],"-F":[5,7,1,"cmdoption-mgvv-diff-F"],"-P":[5,7,1,"cmdoption-mgvv-diff-P"],"-f":[5,7,1,"cmdoption-mgvv-diff-f"],"-h":[5,7,1,"cmdoption-mgvv-diff-help"],"-i":[5,7,1,"cmdoption-mgvv-diff-i"],"-k":[5,7,1,"cmdoption-mgvv-diff-k"],"-m":[5,7,1,"cmdoption-mgvv-diff-m"],"-n":[5,7,1,"cmdoption-mgvv-diff-n"],"-p":[5,7,1,"cmdoption-mgvv-diff-p"],"-q":[5,7,1,"cmdoption-mgvv-diff-q"],"-s":[5,7,1,"cmdoption-mgvv-diff-s"],"-u":[5,7,1,"cmdoption-mgvv-diff-u"],"-v":[5,7,1,"cmdoption-mgvv-diff-v"]},"pymatgen.db":{alchemy:[9,0,0,"-"],builders:[10,0,0,"-"],creator:[8,0,0,"-"],dbconfig:[8,0,0,"-"],dbgroup:[8,0,0,"-"],query_engine:[8,0,0,"-"],util:[8,0,0,"-"],vv:[12,0,0,"-"]},"pymatgen.db.alchemy":{transmuters:[9,0,0,"-"]},"pymatgen.db.alchemy.transmuters":{QeTransmuter:[9,1,1,""]},"pymatgen.db.builders":{core:[10,0,0,"-"],examples:[11,0,0,"-"],incr:[10,0,0,"-"],schema:[10,0,0,"-"],util:[10,0,0,"-"]},"pymatgen.db.builders.core":{BuildError:[10,2,1,""],Builder:[10,1,1,""],BuilderStatus:[10,1,1,""],Collections:[10,1,1,""],HasExamples:[10,1,1,""],ProcRunner:[10,1,1,""],alphadump:[10,6,1,""],merge_tasks:[10,6,1,""],parse_fn_docstring:[10,6,1,""]},"pymatgen.db.builders.core.Builder":{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:[10,3,1,""]},"pymatgen.db.builders.core.BuilderStatus":{FAILURE:[10,4,1,""],RUNNING:[10,4,1,""],SUCCESS:[10,4,1,""],WAIT:[10,4,1,""],fail:[10,3,1,""],has_failures:[10,3,1,""],running:[10,3,1,""],success:[10,3,1,""]},"pymatgen.db.builders.core.Collections":{MAX_VER:[10,4,1,""],MIN_VER:[10,4,1,""],database:[10,5,1,""],get_collection_name:[10,3,1,""],known_collections:[10,4,1,""]},"pymatgen.db.builders.core.HasExamples":{examples:[10,3,1,""],validate_examples:[10,3,1,""]},"pymatgen.db.builders.core.ProcRunner":{instance:[10,4,1,""],run:[10,3,1,""]},"pymatgen.db.builders.examples":{copy_builder:[11,0,0,"-"],file_builders:[11,0,0,"-"],maxvalue_builder:[11,0,0,"-"]},"pymatgen.db.builders.examples.copy_builder":{CopyBuilder:[11,1,1,""]},"pymatgen.db.builders.examples.copy_builder.CopyBuilder":{get_items:[11,3,1,""],process_item:[11,3,1,""]},"pymatgen.db.builders.examples.file_builders":{FileCounter:[11,1,1,""]},"pymatgen.db.builders.examples.file_builders.FileCounter":{finalize:[11,3,1,""],get_items:[11,3,1,""],get_parameters:[11,3,1,""],process_item:[11,3,1,""]},"pymatgen.db.builders.examples.maxvalue_builder":{MaxValueBuilder:[11,1,1,""]},"pymatgen.db.builders.examples.maxvalue_builder.MaxValueBuilder":{finalize:[11,3,1,""],get_items:[11,3,1,""],process_item:[11,3,1,""]},"pymatgen.db.builders.incr":{CollectionTracker:[10,1,1,""],DBError:[10,2,1,""],Mark:[10,1,1,""],NoTrackingCollection:[10,2,1,""],Operation:[10,1,1,""],TrackedCollection:[10,1,1,""],TrackedQueryEngine:[10,1,1,""],TrackingInterface:[10,1,1,""],UnTrackedQueryEngine:[10,1,1,""]},"pymatgen.db.builders.incr.CollectionTracker":{TRACKING_NAME:[10,4,1,""],create:[10,3,1,""],retrieve:[10,3,1,""],save:[10,3,1,""],tracking_collection:[10,5,1,""],tracking_collection_name:[10,5,1,""]},"pymatgen.db.builders.incr.Mark":{FLD_FLD:[10,4,1,""],FLD_MARK:[10,4,1,""],FLD_OP:[10,4,1,""],as_dict:[10,3,1,""],from_dict:[10,3,1,""],pos:[10,5,1,""],query:[10,5,1,""],to_dict:[10,3,1,""],update:[10,3,1,""]},"pymatgen.db.builders.incr.Operation":{build:[10,4,1,""],copy:[10,4,1,""],other:[10,4,1,""]},"pymatgen.db.builders.incr.TrackedCollection":{findall:[10,3,1,""],set_mark:[10,3,1,""],set_tracking:[10,3,1,""],tracked_find:[10,3,1,""]},"pymatgen.db.builders.incr.TrackedQueryEngine":{collection_name:[10,5,1,""],set_mark:[10,3,1,""],tracking:[10,5,1,""]},"pymatgen.db.builders.incr.TrackingInterface":{set_mark:[10,3,1,""]},"pymatgen.db.builders.incr.UnTrackedQueryEngine":{set_mark:[10,3,1,""]},"pymatgen.db.builders.schema":{HasMeta:[10,1,1,""],Scalar:[10,1,1,""],Schema:[10,1,1,""],SchemaError:[10,2,1,""],SchemaParseError:[10,2,1,""],SchemaPathError:[10,2,1,""],SchemaTypeError:[10,2,1,""],add_schemas:[10,6,1,""],get_schema:[10,6,1,""],load_schema:[10,6,1,""]},"pymatgen.db.builders.schema.HasMeta":{FIELD_SEP:[10,4,1,""],KV_SEP:[10,4,1,""],add_meta:[10,3,1,""]},"pymatgen.db.builders.schema.Scalar":{JSTYPES:[10,4,1,""],TYPES:[10,4,1,""],jstype:[10,5,1,""]},"pymatgen.db.builders.schema.Schema":{IS_DICT:[10,4,1,""],IS_LIST:[10,4,1,""],IS_SCALAR:[10,4,1,""],json_schema:[10,3,1,""],validate:[10,3,1,""]},"pymatgen.db.builders.util":{get_builder_log:[10,6,1,""],get_schema_dir:[10,6,1,""],get_schema_file:[10,6,1,""],get_test_dir:[10,6,1,""]},"pymatgen.db.creator":{VaspToDbTaskDrone:[8,1,1,""],contains_vasp_input:[8,6,1,""],get_basic_analysis_and_error_checks:[8,6,1,""],get_coordination_numbers:[8,6,1,""],get_uri:[8,6,1,""]},"pymatgen.db.creator.VaspToDbTaskDrone":{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:[8,3,1,""]},"pymatgen.db.dbconfig":{ConfigurationFileError:[8,2,1,""],DBConfig:[8,1,1,""],auth_aliases:[8,6,1,""],get_settings:[8,6,1,""],normalize_auth:[8,6,1,""]},"pymatgen.db.dbconfig.DBConfig":{ALL_SETTINGS:[8,4,1,""],DEFAULT_FILE:[8,4,1,""],DEFAULT_PORT:[8,4,1,""],DEFAULT_SETTINGS:[8,4,1,""],collection:[8,5,1,""],copy:[8,3,1,""],dbname:[8,5,1,""],host:[8,5,1,""],password:[8,5,1,""],port:[8,5,1,""],settings:[8,5,1,""],user:[8,5,1,""]},"pymatgen.db.dbgroup":{ConfigGroup:[8,1,1,""],CreateQueryEngineError:[8,2,1,""],RegexDict:[8,1,1,""],create_query_engine:[8,6,1,""]},"pymatgen.db.dbgroup.ConfigGroup":{SEP:[8,4,1,""],add:[8,3,1,""],add_path:[8,3,1,""],expand:[8,3,1,""],keys:[8,3,1,""],set_prefix:[8,3,1,""],uncache:[8,3,1,""]},"pymatgen.db.dbgroup.RegexDict":{re_get:[8,3,1,""],re_keys:[8,3,1,""]},"pymatgen.db.query_engine":{QueryEngine:[8,1,1,""],QueryError:[8,2,1,""],QueryListResults:[8,1,1,""],QueryResults:[8,1,1,""]},"pymatgen.db.query_engine.QueryEngine":{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,4,1,""],close:[8,3,1,""],collection_name:[8,5,1,""],default_criteria:[8,4,1,""],default_properties:[8,4,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,3,1,""],query_post:[8,4,1,""],result_post:[8,4,1,""],set_aliases_and_defaults:[8,3,1,""],set_collection:[8,3,1,""]},"pymatgen.db.query_engine.QueryListResults":{clone:[8,3,1,""]},"pymatgen.db.query_engine.QueryResults":{clone:[8,3,1,""],from_cursor:[8,3,1,""]},"pymatgen.db.util":{MongoJSONEncoder:[8,1,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:[8,6,1,""]},"pymatgen.db.util.MongoJSONEncoder":{"default":[8,3,1,""]},"pymatgen.db.vv":{diff:[12,0,0,"-"],report:[12,0,0,"-"],util:[12,0,0,"-"],validate:[12,0,0,"-"]},"pymatgen.db.vv.diff":{Delta:[12,1,1,""],Differ:[12,1,1,""],IID:[12,1,1,""]},"pymatgen.db.vv.diff.Delta":{as_json:[12,3,1,""],cmp:[12,3,1,""]},"pymatgen.db.vv.diff.Differ":{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,4,1,""],diff:[12,3,1,""]},"pymatgen.db.vv.diff.IID":{next:[12,3,1,""]},"pymatgen.db.vv.report":{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,1,1,""],ReportBackupError:[12,2,1,""],ReportHeader:[12,1,1,""],ReportJSONEncoder:[12,1,1,""],ReportSection:[12,1,1,""],SectionHeader:[12,1,1,""],Table:[12,1,1,""],css_minify:[12,6,1,""]},"pymatgen.db.vv.report.DiffFormatter":{TITLE:[12,4,1,""],format:[12,3,1,""],ordered_cols:[12,3,1,""],result_subsets:[12,3,1,""],sort_rows:[12,3,1,""]},"pymatgen.db.vv.report.DiffHtmlFormatter":{DIFF_CSS:[12,4,1,""],css:[12,4,1,""],format:[12,3,1,""],style:[12,3,1,""],styles:[12,4,1,""]},"pymatgen.db.vv.report.DiffJsonFormatter":{Encoder:[12,1,1,""],document:[12,3,1,""],format:[12,3,1,""],will_copy:[12,3,1,""]},"pymatgen.db.vv.report.DiffJsonFormatter.Encoder":{"default":[12,3,1,""]},"pymatgen.db.vv.report.DiffTextFormatter":{format:[12,3,1,""]},"pymatgen.db.vv.report.Emailer":{send:[12,3,1,""],subject:[12,5,1,""]},"pymatgen.db.vv.report.HTMLFormatter":{format:[12,3,1,""]},"pymatgen.db.vv.report.Header":{add:[12,3,1,""],as_dict:[12,3,1,""],get:[12,3,1,""]},"pymatgen.db.vv.report.JSONFormatter":{format:[12,3,1,""]},"pymatgen.db.vv.report.MarkdownFormatter":{format:[12,3,1,""]},"pymatgen.db.vv.report.Report":{add_section:[12,3,1,""],header:[12,5,1,""],is_empty:[12,3,1,""]},"pymatgen.db.vv.report.ReportJSONEncoder":{"default":[12,3,1,""]},"pymatgen.db.vv.report.ReportSection":{body:[12,5,1,""]},"pymatgen.db.vv.report.Table":{add:[12,3,1,""],column_names:[12,5,1,""],column_widths:[12,5,1,""],ncol:[12,5,1,""],nrow:[12,5,1,""],sortby:[12,3,1,""],values:[12,5,1,""]},"pymatgen.db.vv.util":{DoesLogging:[12,1,1,""],ElapsedTime:[12,1,1,""],JsonWalker:[12,1,1,""],Timing:[12,1,1,""],YamlConfig:[12,1,1,""],args_kvp_nodup:[12,6,1,""],args_list:[12,6,1,""],letter_num:[12,6,1,""],total_size:[12,6,1,""]},"pymatgen.db.vv.util.JsonWalker":{dict_expand:[12,3,1,""],value_json:[12,3,1,""],walk:[12,3,1,""]},"pymatgen.db.vv.validate":{ConstraintSpec:[12,1,1,""],ConstraintSpecSection:[12,1,1,""],ConstraintViolation:[12,1,1,""],ConstraintViolationGroup:[12,1,1,""],DBError:[12,2,1,""],NullConstraintViolation:[12,1,1,""],ProgressMeter:[12,1,1,""],Projection:[12,1,1,""],PythonMethod:[12,1,1,""],Sampler:[12,1,1,""],Validator:[12,1,1,""],ValidatorSyntaxError:[12,2,1,""],mongo_get:[12,6,1,""]},"pymatgen.db.vv.validate.ConstraintSpec":{CONSTRAINT_SECT:[12,4,1,""],FILTER_SECT:[12,4,1,""],SAMPLE_SECT:[12,4,1,""]},"pymatgen.db.vv.validate.ConstraintSpecSection":{constraints:[12,5,1,""],filters:[12,5,1,""],get_key:[12,3,1,""],sampler:[12,5,1,""]},"pymatgen.db.vv.validate.ConstraintViolation":{expected_value:[12,5,1,""],field:[12,5,1,""],got_value:[12,5,1,""],op:[12,5,1,""]},"pymatgen.db.vv.validate.ConstraintViolationGroup":{add_violations:[12,3,1,""]},"pymatgen.db.vv.validate.ProgressMeter":{count:[12,5,1,""],set_subject:[12,3,1,""],update:[12,3,1,""]},"pymatgen.db.vv.validate.Projection":{add:[12,3,1,""],to_mongo:[12,3,1,""]},"pymatgen.db.vv.validate.PythonMethod":{BAD_CONSTRAINT_ERR:[12,4,1,""],CANNOT_COMBINE_ERR:[12,4,1,""],constraint_is_method:[12,3,1,""]},"pymatgen.db.vv.validate.Sampler":{DEFAULT_DIST:[12,4,1,""],DIST_CODES:[12,4,1,""],DIST_RUNIF:[12,4,1,""],is_empty:[12,5,1,""],sample:[12,3,1,""]},"pymatgen.db.vv.validate.Validator":{SectionParts:[12,1,1,""],num_violations:[12,3,1,""],set_aliases:[12,3,1,""],set_progress:[12,3,1,""],validate:[12,3,1,""]},mgvv:{"--alias":[5,7,1,"cmdoption-mgvv-alias"],"--collection":[5,7,1,"cmdoption-mgvv-collection"],"--config":[5,7,1,"cmdoption-mgvv-0"],"--email":[5,7,1,"cmdoption-mgvv-email"],"--file":[5,7,1,"cmdoption-mgvv-f"],"--format":[5,7,1,"cmdoption-mgvv-format"],"--help":[5,7,1,"cmdoption-mgvv-help"],"--limit":[5,7,1,"cmdoption-mgvv-limit"],"--verbose":[5,7,1,"cmdoption-mgvv-v"],"-C":[5,7,1,"cmdoption-mgvv-collection"],"-F":[5,7,1,"cmdoption-mgvv-format"],"-a":[5,7,1,"cmdoption-mgvv-alias"],"-c":[5,7,1,"cmdoption-mgvv-0"],"-e":[5,7,1,"cmdoption-mgvv-email"],"-f":[5,7,1,"cmdoption-mgvv-f"],"-h":[5,7,1,"cmdoption-mgvv-help"],"-m":[5,7,1,"cmdoption-mgvv-limit"],"-v":[5,7,1,"cmdoption-mgvv-v"]},pymatgen:{db:[8,0,0,"-"]}},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":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 diff --git a/docs_rst/pymatgen.rst b/docs_rst/pymatgen.rst index 601cd54..bca3246 100644 --- a/docs_rst/pymatgen.rst +++ b/docs_rst/pymatgen.rst @@ -1,6 +1,8 @@ pymatgen namespace ================== +.. py:module:: pymatgen + Subpackages ----------- diff --git a/pymatgen/db/__init__.py b/pymatgen/db/__init__.py index 188c23e..1bf7a87 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__ = "2021.5.28" +__version__ = "2022.3.17" from .query_engine import QueryEngine @@ -30,4 +30,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 b5f2e60..40c2093 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ setup( name="pymatgen-db", packages=find_namespace_packages(include=["pymatgen.*"]), - version="2021.5.28", + version="2022.3.17", setup_requires=["numpy"], install_requires=["pymatgen>=2022.0.3", "monty>=0.9.6", "pymongo>=2.8", "smoqe"], extras_require={