Building a MatGraphDB Example with MPNearHull Data

In this notebook, we demonstrate how to build a materials graph database using the MatGraphDB framework with the MPNearHull dataset.

The steps include:

  1. Importing required libraries and setting up configuration paths.

  2. Downloading and extracting the dataset (and raw materials data if needed).

  3. Creating a MatGraphDB instance.

  4. Initializing node generators.

  5. Initializing edge generators.

  6. Verifying the database setup.

Follow along and run each cell to see how the database is constructed.

Setup

[1]:
import os
from pathlib import Path

FILE_DIR = Path(".")
DATA_DIR = FILE_DIR / "data"

Define Function for Downloading and Extracting Data

[2]:
from matgraphdb.datasets import MPNearHull

DB_PATH = DATA_DIR / "MPNearHull"
mpdb = MPNearHull(storage_path=DB_PATH,initialize_from_scratch=False)
[INFO] 2025-05-11 10:21:41 - parquetdb.utils.config[37][load_config] - Config file: C:\Users\lllang\AppData\Local\parquetdb\parquetdb\config.yml
[INFO] 2025-05-11 10:21:41 - parquetdb.utils.config[41][load_config] - Setting data_dir to C:\Users\lllang\Desktop\Current_Projects\MatGraphDB\data
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Cell In[2], line 4
      1 from matgraphdb.datasets import MPNearHull
      3 DB_PATH = DATA_DIR / "MPNearHull"
----> 4 mpdb = MPNearHull(storage_path=DB_PATH,initialize_from_scratch=False)

File ~\Desktop\Current_Projects\MatGraphDB\matgraphdb\datasets\mp_near_hull.py:45, in MPNearHull.__init__(self, storage_path, download, from_scratch, initialize_from_scratch)
     38     logger.info(f"Downloading dataset from {self.repo_id}")
     39     snapshot_download(
     40         repo_id=self.repo_id,
     41         repo_type=self.repo_type,
     42         local_dir=storage_path,
     43     )
---> 45 super().__init__(storage_path=storage_path)
     47 n_edge_generators = len(self.edge_generator_store.generator_names)
     48 n_node_generators = len(self.node_generator_store.generator_names)

File ~\Desktop\Current_Projects\MatGraphDB\matgraphdb\core\matgraphdb.py:39, in MatGraphDB.__init__(self, storage_path, materials_store, load_custom_stores, **kwargs)
     28 """
     29 Parameters
     30 ----------
   (...)
     36     Whether to load custom stores.
     37 """
     38 self.storage_path = os.path.abspath(storage_path)
---> 39 super().__init__(
     40     storage_path=self.storage_path,
     41     load_custom_stores=load_custom_stores,
     42     **kwargs,
     43 )
     44 logger.info(f"Initializing MatGraphDB at: {self.storage_path}")
     46 self.materials_path = os.path.join(self.nodes_path, "material")

File c:\Users\lllang\miniconda3\envs\matgraphdb\lib\site-packages\parquetdb\graph\parquet_graphdb.py:71, in ParquetGraphDB.__init__(self, storage_path, load_custom_stores, verbose)
     68 logger.debug(f"Graph directory: {self.graph_path}")
     70 #  Initialize empty dictionaries for stores, load existing stores
---> 71 self.node_stores = self._load_existing_node_stores(load_custom_stores)
     72 self.edge_stores = self._load_existing_edge_stores(load_custom_stores)
     74 self.edge_generator_store = GeneratorStore(
     75     storage_path=self.edge_generators_path, verbose=self.verbose
     76 )

File c:\Users\lllang\miniconda3\envs\matgraphdb\lib\site-packages\parquetdb\graph\parquet_graphdb.py:182, in ParquetGraphDB._load_existing_node_stores(self, load_custom_stores)
    180 def _load_existing_node_stores(self, load_custom_stores: bool = True):
    181     logger.info(f"Loading existing node stores")
--> 182     return self._load_existing_stores(
    183         self.nodes_path,
    184         default_store_class=NodeStore,
    185         load_custom_stores=load_custom_stores,
    186     )

File c:\Users\lllang\miniconda3\envs\matgraphdb\lib\site-packages\parquetdb\graph\parquet_graphdb.py:216, in ParquetGraphDB._load_existing_stores(self, stores_path, default_store_class, load_custom_stores)
    214 store_path = os.path.join(stores_path, store_type)
    215 if os.path.isdir(store_path):
--> 216     store_dict[store_type] = load_store(
    217         store_path, default_store_class, verbose=self.verbose
    218     )
    219 else:
    220     raise ValueError(
    221         f"Store path {store_path} is not a directory. Likely does not exist."
    222     )

File c:\Users\lllang\miniconda3\envs\matgraphdb\lib\site-packages\parquetdb\graph\parquet_graphdb.py:950, in load_store(store_path, default_store_class, verbose)
    948 if class_module and class_name and default_store_class is None:
    949     logger.debug(f"Importing class from module: {class_module}")
--> 950     module = importlib.import_module(class_module)
    951     class_obj = getattr(module, class_name)
    952     store = class_obj(storage_path=store_path)

File c:\Users\lllang\miniconda3\envs\matgraphdb\lib\importlib\__init__.py:126, in import_module(name, package)
    124             break
    125         level += 1
--> 126 return _bootstrap._gcd_import(name[level:], package, level)

File <frozen importlib._bootstrap>:1050, in _gcd_import(name, package, level)

File <frozen importlib._bootstrap>:1027, in _find_and_load(name, import_)

File <frozen importlib._bootstrap>:992, in _find_and_load_unlocked(name, import_)

File <frozen importlib._bootstrap>:241, in _call_with_frames_removed(f, *args, **kwds)

File <frozen importlib._bootstrap>:1050, in _gcd_import(name, package, level)

File <frozen importlib._bootstrap>:1027, in _find_and_load(name, import_)

File <frozen importlib._bootstrap>:992, in _find_and_load_unlocked(name, import_)

File <frozen importlib._bootstrap>:241, in _call_with_frames_removed(f, *args, **kwds)

File <frozen importlib._bootstrap>:1050, in _gcd_import(name, package, level)

File <frozen importlib._bootstrap>:1027, in _find_and_load(name, import_)

File <frozen importlib._bootstrap>:1004, in _find_and_load_unlocked(name, import_)

ModuleNotFoundError: No module named 'matgraphdb.materials'

Initialization

Initialize a Materials Store

[4]:
from matgraphdb import MaterialStore

materials_store = MaterialStore(storage_path=MATERIALS_PATH)
print(materials_store)
============================================================
NODE STORE SUMMARY
============================================================
Node type: material
• Number of nodes: 80643
• Number of features: 136
Storage path: ..\..\data\examples\01\material


############################################################
METADATA
############################################################
• class: MaterialStore
• class_module: matgraphdb.materials.nodes.materials
• node_type: material
• name_column: id

############################################################
NODE DETAILS
############################################################

Initialize a MatGraphDB Instance

[5]:
from matgraphdb import MatGraphDB

if not os.path.exists(MATGRAPHDB_PATH):
    shutil.rmtree(MATGRAPHDB_PATH)
mdb = MatGraphDB(storage_path=MATGRAPHDB_PATH,materials_store=materials_store)

print(mdb)
============================================================
GRAPH DATABASE SUMMARY
============================================================
Name: MatGraphDB
Storage path: ..\..\data\examples\01\MatGraphDB
└── Repository structure:
    ├── nodes/                 (..\..\data\examples\01\MatGraphDB\nodes)
    ├── edges/                 (..\..\data\examples\01\MatGraphDB\edges)
    ├── edge_generators/       (..\..\data\examples\01\MatGraphDB\edge_generators)
    ├── node_generators/       (..\..\data\examples\01\MatGraphDB\node_generators)
    └── graph/                 (..\..\data\examples\01\MatGraphDB\graph)

############################################################
NODE DETAILS
############################################################
Total node types: 1
------------------------------------------------------------
• Node type: material
  - Number of nodes: 80643
  - Number of features: 136
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\material
------------------------------------------------------------

############################################################
EDGE DETAILS
############################################################
Total edge types: 0
------------------------------------------------------------

############################################################
NODE GENERATOR DETAILS
############################################################
Total node generators: 0
------------------------------------------------------------

############################################################
EDGE GENERATOR DETAILS
############################################################
Total edge generators: 0
------------------------------------------------------------

Adding Nodes

In this section, we will add the nodes to the MatGraphDB instance. We will be using some of the built-in node generators to add the nodes to the MatGraphDB instance.

[6]:
from matgraphdb import generators

# Here we define the generator functions and arguments if they are needed.
# For instance, to get the materials sites and lattices, we need to pass the materials store to the generator function.
node_generators = [
    {"generator_func": generators.element},
    {"generator_func": generators.chemenv},
    {"generator_func": generators.crystal_system},
    {"generator_func": generators.magnetic_state},
    {"generator_func": generators.oxidation_state},
    {"generator_func": generators.space_group},
    {"generator_func": generators.wyckoff},
    {
        "generator_func": generators.material_site,
        "generator_args": {"material_store": mdb.node_stores["material"]},
    },
    {
        "generator_func": generators.material_lattice,
        "generator_args": {"material_store": mdb.node_stores["material"]},
    },
]

Now we can add the node generators to the MatGraphDB instance. When we add the generator, it will immediately execute and add the nodes to the database.

[7]:
# Add each node generator to the database.
for generator in node_generators:
    generator_func = generator.get("generator_func")
    generator_args = generator.get("generator_args", None)
    print(f"Adding node generator: {generator_func.__name__}")
    mdb.add_node_generator(generator_func=generator_func, generator_args=generator_args)

print("Node generators have been initialized.")

print(mdb)

Adding node generator: element
Adding node generator: chemenv
Adding node generator: crystal_system
Adding node generator: magnetic_state
Adding node generator: oxidation_state
Adding node generator: space_group
Adding node generator: wyckoff
Adding node generator: material_site
Adding node generator: material_lattice
Node generators have been initialized.
============================================================
GRAPH DATABASE SUMMARY
============================================================
Name: MatGraphDB
Storage path: ..\..\data\examples\01\MatGraphDB
└── Repository structure:
    ├── nodes/                 (..\..\data\examples\01\MatGraphDB\nodes)
    ├── edges/                 (..\..\data\examples\01\MatGraphDB\edges)
    ├── edge_generators/       (..\..\data\examples\01\MatGraphDB\edge_generators)
    ├── node_generators/       (..\..\data\examples\01\MatGraphDB\node_generators)
    └── graph/                 (..\..\data\examples\01\MatGraphDB\graph)

############################################################
NODE DETAILS
############################################################
Total node types: 10
------------------------------------------------------------
• Node type: material
  - Number of nodes: 80643
  - Number of features: 136
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\material
------------------------------------------------------------
• Node type: element
  - Number of nodes: 118
  - Number of features: 99
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\element
------------------------------------------------------------
• Node type: chemenv
  - Number of nodes: 67
  - Number of features: 15
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\chemenv
------------------------------------------------------------
• Node type: crystal_system
  - Number of nodes: 7
  - Number of features: 2
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\crystal_system
------------------------------------------------------------
• Node type: magnetic_state
  - Number of nodes: 5
  - Number of features: 2
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\magnetic_state
------------------------------------------------------------
• Node type: oxidation_state
  - Number of nodes: 19
  - Number of features: 3
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\oxidation_state
------------------------------------------------------------
• Node type: space_group
  - Number of nodes: 230
  - Number of features: 2
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\space_group
------------------------------------------------------------
• Node type: wyckoff
  - Number of nodes: 1380
  - Number of features: 2
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\wyckoff
------------------------------------------------------------
• Node type: material_site
  - Number of nodes: 2545026
  - Number of features: 15
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\material_site
------------------------------------------------------------
• Node type: material_lattice
  - Number of nodes: 80643
  - Number of features: 12
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\material_lattice
------------------------------------------------------------

############################################################
EDGE DETAILS
############################################################
Total edge types: 0
------------------------------------------------------------

############################################################
NODE GENERATOR DETAILS
############################################################
Total node generators: 9
------------------------------------------------------------
• Generator: element
Generator Args:
  - generator_func: [<function element at 0x000001E1A2C82C10>]
  - generator_kwargs.base_file: ['C:\\Users\\lllang\\Desktop\\Current_Projects\\MatGraphDB\\matgraphdb\\utils\\chem_utils\\resources\\imputed_periodic_table_values.parquet']
  - generator_name: ['element']
  - id: [0]
Generator Kwargs:
  - base_file: ['C:\\Users\\lllang\\Desktop\\Current_Projects\\MatGraphDB\\matgraphdb\\utils\\chem_utils\\resources\\imputed_periodic_table_values.parquet']
------------------------------------------------------------
• Generator: chemenv
Generator Args:
  - generator_func: [<function chemenv at 0x000001E1A2C82D30>]
  - generator_kwargs.base_file: ['C:\\Users\\lllang\\Desktop\\Current_Projects\\MatGraphDB\\matgraphdb\\utils\\chem_utils\\resources\\coordination_geometries.parquet']
  - generator_name: ['chemenv']
  - id: [1]
Generator Kwargs:
  - base_file: ['C:\\Users\\lllang\\Desktop\\Current_Projects\\MatGraphDB\\matgraphdb\\utils\\chem_utils\\resources\\coordination_geometries.parquet']
------------------------------------------------------------
• Generator: crystal_system
Generator Args:
  - generator_func: [<function crystal_system at 0x000001E1A2C82E50>]
  - generator_name: ['crystal_system']
  - id: [2]
Generator Kwargs:
------------------------------------------------------------
• Generator: magnetic_state
Generator Args:
  - generator_func: [<function magnetic_state at 0x000001E1A2C82F70>]
  - generator_name: ['magnetic_state']
  - id: [3]
Generator Kwargs:
------------------------------------------------------------
• Generator: oxidation_state
Generator Args:
  - generator_func: [<function oxidation_state at 0x000001E1A2C8D0D0>]
  - generator_name: ['oxidation_state']
  - id: [4]
Generator Kwargs:
------------------------------------------------------------
• Generator: space_group
Generator Args:
  - generator_func: [<function space_group at 0x000001E1A2C8D1F0>]
  - generator_name: ['space_group']
  - id: [5]
Generator Kwargs:
------------------------------------------------------------
• Generator: wyckoff
Generator Args:
  - generator_func: [<function wyckoff at 0x000001E1A2C8D310>]
  - generator_name: ['wyckoff']
  - id: [6]
Generator Kwargs:
------------------------------------------------------------
• Generator: material_site
Generator Args:
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
  - generator_func: [<function material_site at 0x000001E1C487D940>]
  - generator_name: ['material_site']
  - id: [7]
Generator Kwargs:
------------------------------------------------------------
• Generator: material_lattice
Generator Args:
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
  - generator_func: [<function material_lattice at 0x000001E1C487D820>]
  - generator_name: ['material_lattice']
  - id: [8]
Generator Kwargs:
------------------------------------------------------------

############################################################
EDGE GENERATOR DETAILS
############################################################
Total edge generators: 0
------------------------------------------------------------

Adding Edges

In this section, we will add the edges to the MatGraphDB instance. We will be using some of the built-in edge generators to add the edges to the MatGraphDB instance.

[8]:

# List of edge generator configurations. edge_generators = [ { "generator_func": generators.element_element_neighborsByGroupPeriod, "generator_args": {"element_store": mdb.node_stores["element"]}, }, { "generator_func": generators.element_oxiState_canOccur, "generator_args": { "element_store": mdb.node_stores["element"], "oxiState_store": mdb.node_stores["oxidation_state"], }, }, { "generator_func": generators.material_chemenv_containsSite, "generator_args": { "material_store": mdb.node_stores["material"], "chemenv_store": mdb.node_stores["chemenv"], }, }, { "generator_func": generators.material_crystalSystem_has, "generator_args": { "material_store": mdb.node_stores["material"], "crystal_system_store": mdb.node_stores["crystal_system"], }, }, { "generator_func": generators.material_element_has, "generator_args": { "material_store": mdb.node_stores["material"], "element_store": mdb.node_stores["element"], }, }, { "generator_func": generators.material_lattice_has, "generator_args": { "material_store": mdb.node_stores["material"], "lattice_store": mdb.node_stores["material_lattice"], }, }, { "generator_func": generators.material_spg_has, "generator_args": { "material_store": mdb.node_stores["material"], "spg_store": mdb.node_stores["space_group"], }, }, { "generator_func": generators.element_chemenv_canOccur, "generator_args": { "element_store": mdb.node_stores["element"], "chemenv_store": mdb.node_stores["chemenv"], "material_store": mdb.node_stores["material"], }, }, { "generator_func": generators.spg_crystalSystem_isApart, "generator_args": { "spg_store": mdb.node_stores["space_group"], "crystal_system_store": mdb.node_stores["crystal_system"], }, }, { "generator_func": generators.element_element_bonds, "generator_args": { "element_store": mdb.node_stores["element"], "material_store": mdb.node_stores["material"], }, }, ] # Add each edge generator to the database and run them immediately. for generator in edge_generators: generator_func = generator.get("generator_func") generator_args = generator.get("generator_args", None) print(f"Adding edge generator: {generator_func.__name__}") mdb.add_edge_generator(generator_func=generator_func, generator_args=generator_args, run_immediately=True) print("Edge generators have been initialized.") print(mdb)
Adding edge generator: element_element_neighborsByGroupPeriod
Adding edge generator: element_oxiState_canOccur
Adding edge generator: material_chemenv_containsSite
Adding edge generator: material_crystalSystem_has
Adding edge generator: material_element_has
Adding edge generator: material_lattice_has
Adding edge generator: material_spg_has
Adding edge generator: element_chemenv_canOccur
Adding edge generator: spg_crystalSystem_isApart
Adding edge generator: element_element_bonds
Edge generators have been initialized.
============================================================
GRAPH DATABASE SUMMARY
============================================================
Name: MatGraphDB
Storage path: ..\..\data\examples\01\MatGraphDB
└── Repository structure:
    ├── nodes/                 (..\..\data\examples\01\MatGraphDB\nodes)
    ├── edges/                 (..\..\data\examples\01\MatGraphDB\edges)
    ├── edge_generators/       (..\..\data\examples\01\MatGraphDB\edge_generators)
    ├── node_generators/       (..\..\data\examples\01\MatGraphDB\node_generators)
    └── graph/                 (..\..\data\examples\01\MatGraphDB\graph)

############################################################
NODE DETAILS
############################################################
Total node types: 10
------------------------------------------------------------
• Node type: material
  - Number of nodes: 80643
  - Number of features: 136
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\material
------------------------------------------------------------
• Node type: element
  - Number of nodes: 118
  - Number of features: 99
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\element
------------------------------------------------------------
• Node type: chemenv
  - Number of nodes: 67
  - Number of features: 15
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\chemenv
------------------------------------------------------------
• Node type: crystal_system
  - Number of nodes: 7
  - Number of features: 2
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\crystal_system
------------------------------------------------------------
• Node type: magnetic_state
  - Number of nodes: 5
  - Number of features: 2
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\magnetic_state
------------------------------------------------------------
• Node type: oxidation_state
  - Number of nodes: 19
  - Number of features: 3
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\oxidation_state
------------------------------------------------------------
• Node type: space_group
  - Number of nodes: 230
  - Number of features: 2
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\space_group
------------------------------------------------------------
• Node type: wyckoff
  - Number of nodes: 1380
  - Number of features: 2
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\wyckoff
------------------------------------------------------------
• Node type: material_site
  - Number of nodes: 2545026
  - Number of features: 15
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\material_site
------------------------------------------------------------
• Node type: material_lattice
  - Number of nodes: 80643
  - Number of features: 12
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\material_lattice
------------------------------------------------------------

############################################################
EDGE DETAILS
############################################################
Total edge types: 10
------------------------------------------------------------
• Edge type: element_element_neighborsByGroupPeriod
  - Number of edges: 391
  - Number of features: 14
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\element_element_neighborsByGroupPeriod
------------------------------------------------------------
• Edge type: element_oxiState_canOccur
  - Number of edges: 162
  - Number of features: 8
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\element_oxiState_canOccur
------------------------------------------------------------
• Edge type: material_chemenv_containsSite
  - Number of edges: 2542897
  - Number of features: 8
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\material_chemenv_containsSite
------------------------------------------------------------
• Edge type: material_crystalSystem_has
  - Number of edges: 80643
  - Number of features: 10
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\material_crystalSystem_has
------------------------------------------------------------
• Edge type: material_element_has
  - Number of edges: 270902
  - Number of features: 8
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\material_element_has
------------------------------------------------------------
• Edge type: material_lattice_has
  - Number of edges: 80643
  - Number of features: 8
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\material_lattice_has
------------------------------------------------------------
• Edge type: material_spg_has
  - Number of edges: 80643
  - Number of features: 10
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\material_spg_has
------------------------------------------------------------
• Edge type: element_chemenv_canOccur
  - Number of edges: 270474
  - Number of features: 7
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\element_chemenv_canOccur
------------------------------------------------------------
• Edge type: spg_crystalSystem_isApart
  - Number of edges: 230
  - Number of features: 7
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\spg_crystalSystem_isApart
------------------------------------------------------------
• Edge type: element_element_bonds
  - Number of edges: 3069943
  - Number of features: 7
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\element_element_bonds
------------------------------------------------------------

############################################################
NODE GENERATOR DETAILS
############################################################
Total node generators: 9
------------------------------------------------------------
• Generator: element
Generator Args:
  - generator_func: [<function element at 0x000001E1A2C82C10>]
  - generator_kwargs.base_file: ['C:\\Users\\lllang\\Desktop\\Current_Projects\\MatGraphDB\\matgraphdb\\utils\\chem_utils\\resources\\imputed_periodic_table_values.parquet']
  - generator_name: ['element']
  - id: [0]
Generator Kwargs:
  - base_file: ['C:\\Users\\lllang\\Desktop\\Current_Projects\\MatGraphDB\\matgraphdb\\utils\\chem_utils\\resources\\imputed_periodic_table_values.parquet']
------------------------------------------------------------
• Generator: chemenv
Generator Args:
  - generator_func: [<function chemenv at 0x000001E1A2C82D30>]
  - generator_kwargs.base_file: ['C:\\Users\\lllang\\Desktop\\Current_Projects\\MatGraphDB\\matgraphdb\\utils\\chem_utils\\resources\\coordination_geometries.parquet']
  - generator_name: ['chemenv']
  - id: [1]
Generator Kwargs:
  - base_file: ['C:\\Users\\lllang\\Desktop\\Current_Projects\\MatGraphDB\\matgraphdb\\utils\\chem_utils\\resources\\coordination_geometries.parquet']
------------------------------------------------------------
• Generator: crystal_system
Generator Args:
  - generator_func: [<function crystal_system at 0x000001E1A2C82E50>]
  - generator_name: ['crystal_system']
  - id: [2]
Generator Kwargs:
------------------------------------------------------------
• Generator: magnetic_state
Generator Args:
  - generator_func: [<function magnetic_state at 0x000001E1A2C82F70>]
  - generator_name: ['magnetic_state']
  - id: [3]
Generator Kwargs:
------------------------------------------------------------
• Generator: oxidation_state
Generator Args:
  - generator_func: [<function oxidation_state at 0x000001E1A2C8D0D0>]
  - generator_name: ['oxidation_state']
  - id: [4]
Generator Kwargs:
------------------------------------------------------------
• Generator: space_group
Generator Args:
  - generator_func: [<function space_group at 0x000001E1A2C8D1F0>]
  - generator_name: ['space_group']
  - id: [5]
Generator Kwargs:
------------------------------------------------------------
• Generator: wyckoff
Generator Args:
  - generator_func: [<function wyckoff at 0x000001E1A2C8D310>]
  - generator_name: ['wyckoff']
  - id: [6]
Generator Kwargs:
------------------------------------------------------------
• Generator: material_site
Generator Args:
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
  - generator_func: [<function material_site at 0x000001E1C487D940>]
  - generator_name: ['material_site']
  - id: [7]
Generator Kwargs:
------------------------------------------------------------
• Generator: material_lattice
Generator Args:
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
  - generator_func: [<function material_lattice at 0x000001E1C487D820>]
  - generator_name: ['material_lattice']
  - id: [8]
Generator Kwargs:
------------------------------------------------------------

############################################################
EDGE GENERATOR DETAILS
############################################################
Total edge generators: 10
------------------------------------------------------------
• Generator: element_oxiState_canOccur
Generator Args:
  - element_store: ..\..\data\examples\01\MatGraphDB\nodes\element
  - oxiState_store: ..\..\data\examples\01\MatGraphDB\nodes\oxidation_state
Generator Kwargs:
------------------------------------------------------------
• Generator: material_chemenv_containsSite
Generator Args:
  - chemenv_store: ..\..\data\examples\01\MatGraphDB\nodes\chemenv
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
Generator Kwargs:
------------------------------------------------------------
• Generator: material_crystalSystem_has
Generator Args:
  - crystal_system_store: ..\..\data\examples\01\MatGraphDB\nodes\crystal_system
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
Generator Kwargs:
------------------------------------------------------------
• Generator: element_element_neighborsByGroupPeriod
Generator Args:
  - element_store: ..\..\data\examples\01\MatGraphDB\nodes\element
Generator Kwargs:
------------------------------------------------------------
• Generator: material_element_has
Generator Args:
  - element_store: ..\..\data\examples\01\MatGraphDB\nodes\element
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
Generator Kwargs:
------------------------------------------------------------
• Generator: material_lattice_has
Generator Args:
  - lattice_store: ..\..\data\examples\01\MatGraphDB\nodes\material_lattice
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
Generator Kwargs:
------------------------------------------------------------
• Generator: material_spg_has
Generator Args:
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
  - spg_store: ..\..\data\examples\01\MatGraphDB\nodes\space_group
Generator Kwargs:
------------------------------------------------------------
• Generator: element_chemenv_canOccur
Generator Args:
  - chemenv_store: ..\..\data\examples\01\MatGraphDB\nodes\chemenv
  - element_store: ..\..\data\examples\01\MatGraphDB\nodes\element
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
Generator Kwargs:
------------------------------------------------------------
• Generator: spg_crystalSystem_isApart
Generator Args:
  - crystal_system_store: ..\..\data\examples\01\MatGraphDB\nodes\crystal_system
  - spg_store: ..\..\data\examples\01\MatGraphDB\nodes\space_group
Generator Kwargs:
------------------------------------------------------------
• Generator: element_element_bonds
Generator Args:
  - element_store: ..\..\data\examples\01\MatGraphDB\nodes\element
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
Generator Kwargs:
------------------------------------------------------------

Verifying the Database

[9]:
print(mdb)
============================================================
GRAPH DATABASE SUMMARY
============================================================
Name: MatGraphDB
Storage path: ..\..\data\examples\01\MatGraphDB
└── Repository structure:
    ├── nodes/                 (..\..\data\examples\01\MatGraphDB\nodes)
    ├── edges/                 (..\..\data\examples\01\MatGraphDB\edges)
    ├── edge_generators/       (..\..\data\examples\01\MatGraphDB\edge_generators)
    ├── node_generators/       (..\..\data\examples\01\MatGraphDB\node_generators)
    └── graph/                 (..\..\data\examples\01\MatGraphDB\graph)

############################################################
NODE DETAILS
############################################################
Total node types: 10
------------------------------------------------------------
• Node type: material
  - Number of nodes: 80643
  - Number of features: 136
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\material
------------------------------------------------------------
• Node type: element
  - Number of nodes: 118
  - Number of features: 99
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\element
------------------------------------------------------------
• Node type: chemenv
  - Number of nodes: 67
  - Number of features: 15
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\chemenv
------------------------------------------------------------
• Node type: crystal_system
  - Number of nodes: 7
  - Number of features: 2
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\crystal_system
------------------------------------------------------------
• Node type: magnetic_state
  - Number of nodes: 5
  - Number of features: 2
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\magnetic_state
------------------------------------------------------------
• Node type: oxidation_state
  - Number of nodes: 19
  - Number of features: 3
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\oxidation_state
------------------------------------------------------------
• Node type: space_group
  - Number of nodes: 230
  - Number of features: 2
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\space_group
------------------------------------------------------------
• Node type: wyckoff
  - Number of nodes: 1380
  - Number of features: 2
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\wyckoff
------------------------------------------------------------
• Node type: material_site
  - Number of nodes: 2545026
  - Number of features: 15
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\material_site
------------------------------------------------------------
• Node type: material_lattice
  - Number of nodes: 80643
  - Number of features: 12
  - db_path: ..\..\data\examples\01\MatGraphDB\nodes\material_lattice
------------------------------------------------------------

############################################################
EDGE DETAILS
############################################################
Total edge types: 10
------------------------------------------------------------
• Edge type: element_element_neighborsByGroupPeriod
  - Number of edges: 391
  - Number of features: 14
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\element_element_neighborsByGroupPeriod
------------------------------------------------------------
• Edge type: element_oxiState_canOccur
  - Number of edges: 162
  - Number of features: 8
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\element_oxiState_canOccur
------------------------------------------------------------
• Edge type: material_chemenv_containsSite
  - Number of edges: 2542897
  - Number of features: 8
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\material_chemenv_containsSite
------------------------------------------------------------
• Edge type: material_crystalSystem_has
  - Number of edges: 80643
  - Number of features: 10
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\material_crystalSystem_has
------------------------------------------------------------
• Edge type: material_element_has
  - Number of edges: 270902
  - Number of features: 8
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\material_element_has
------------------------------------------------------------
• Edge type: material_lattice_has
  - Number of edges: 80643
  - Number of features: 8
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\material_lattice_has
------------------------------------------------------------
• Edge type: material_spg_has
  - Number of edges: 80643
  - Number of features: 10
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\material_spg_has
------------------------------------------------------------
• Edge type: element_chemenv_canOccur
  - Number of edges: 270474
  - Number of features: 7
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\element_chemenv_canOccur
------------------------------------------------------------
• Edge type: spg_crystalSystem_isApart
  - Number of edges: 230
  - Number of features: 7
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\spg_crystalSystem_isApart
------------------------------------------------------------
• Edge type: element_element_bonds
  - Number of edges: 3069943
  - Number of features: 7
  - db_path: ..\..\data\examples\01\MatGraphDB\edges\element_element_bonds
------------------------------------------------------------

############################################################
NODE GENERATOR DETAILS
############################################################
Total node generators: 9
------------------------------------------------------------
• Generator: element
Generator Args:
  - generator_func: [<function element at 0x000001E1A2C82C10>]
  - generator_kwargs.base_file: ['C:\\Users\\lllang\\Desktop\\Current_Projects\\MatGraphDB\\matgraphdb\\utils\\chem_utils\\resources\\imputed_periodic_table_values.parquet']
  - generator_name: ['element']
  - id: [0]
Generator Kwargs:
  - base_file: ['C:\\Users\\lllang\\Desktop\\Current_Projects\\MatGraphDB\\matgraphdb\\utils\\chem_utils\\resources\\imputed_periodic_table_values.parquet']
------------------------------------------------------------
• Generator: chemenv
Generator Args:
  - generator_func: [<function chemenv at 0x000001E1A2C82D30>]
  - generator_kwargs.base_file: ['C:\\Users\\lllang\\Desktop\\Current_Projects\\MatGraphDB\\matgraphdb\\utils\\chem_utils\\resources\\coordination_geometries.parquet']
  - generator_name: ['chemenv']
  - id: [1]
Generator Kwargs:
  - base_file: ['C:\\Users\\lllang\\Desktop\\Current_Projects\\MatGraphDB\\matgraphdb\\utils\\chem_utils\\resources\\coordination_geometries.parquet']
------------------------------------------------------------
• Generator: crystal_system
Generator Args:
  - generator_func: [<function crystal_system at 0x000001E1A2C82E50>]
  - generator_name: ['crystal_system']
  - id: [2]
Generator Kwargs:
------------------------------------------------------------
• Generator: magnetic_state
Generator Args:
  - generator_func: [<function magnetic_state at 0x000001E1A2C82F70>]
  - generator_name: ['magnetic_state']
  - id: [3]
Generator Kwargs:
------------------------------------------------------------
• Generator: oxidation_state
Generator Args:
  - generator_func: [<function oxidation_state at 0x000001E1A2C8D0D0>]
  - generator_name: ['oxidation_state']
  - id: [4]
Generator Kwargs:
------------------------------------------------------------
• Generator: space_group
Generator Args:
  - generator_func: [<function space_group at 0x000001E1A2C8D1F0>]
  - generator_name: ['space_group']
  - id: [5]
Generator Kwargs:
------------------------------------------------------------
• Generator: wyckoff
Generator Args:
  - generator_func: [<function wyckoff at 0x000001E1A2C8D310>]
  - generator_name: ['wyckoff']
  - id: [6]
Generator Kwargs:
------------------------------------------------------------
• Generator: material_site
Generator Args:
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
  - generator_func: [<function material_site at 0x000001E1C487D940>]
  - generator_name: ['material_site']
  - id: [7]
Generator Kwargs:
------------------------------------------------------------
• Generator: material_lattice
Generator Args:
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
  - generator_func: [<function material_lattice at 0x000001E1C487D820>]
  - generator_name: ['material_lattice']
  - id: [8]
Generator Kwargs:
------------------------------------------------------------

############################################################
EDGE GENERATOR DETAILS
############################################################
Total edge generators: 10
------------------------------------------------------------
• Generator: element_oxiState_canOccur
Generator Args:
  - element_store: ..\..\data\examples\01\MatGraphDB\nodes\element
  - oxiState_store: ..\..\data\examples\01\MatGraphDB\nodes\oxidation_state
Generator Kwargs:
------------------------------------------------------------
• Generator: material_chemenv_containsSite
Generator Args:
  - chemenv_store: ..\..\data\examples\01\MatGraphDB\nodes\chemenv
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
Generator Kwargs:
------------------------------------------------------------
• Generator: material_crystalSystem_has
Generator Args:
  - crystal_system_store: ..\..\data\examples\01\MatGraphDB\nodes\crystal_system
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
Generator Kwargs:
------------------------------------------------------------
• Generator: element_element_neighborsByGroupPeriod
Generator Args:
  - element_store: ..\..\data\examples\01\MatGraphDB\nodes\element
Generator Kwargs:
------------------------------------------------------------
• Generator: material_element_has
Generator Args:
  - element_store: ..\..\data\examples\01\MatGraphDB\nodes\element
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
Generator Kwargs:
------------------------------------------------------------
• Generator: material_lattice_has
Generator Args:
  - lattice_store: ..\..\data\examples\01\MatGraphDB\nodes\material_lattice
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
Generator Kwargs:
------------------------------------------------------------
• Generator: material_spg_has
Generator Args:
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
  - spg_store: ..\..\data\examples\01\MatGraphDB\nodes\space_group
Generator Kwargs:
------------------------------------------------------------
• Generator: element_chemenv_canOccur
Generator Args:
  - chemenv_store: ..\..\data\examples\01\MatGraphDB\nodes\chemenv
  - element_store: ..\..\data\examples\01\MatGraphDB\nodes\element
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
Generator Kwargs:
------------------------------------------------------------
• Generator: spg_crystalSystem_isApart
Generator Args:
  - crystal_system_store: ..\..\data\examples\01\MatGraphDB\nodes\crystal_system
  - spg_store: ..\..\data\examples\01\MatGraphDB\nodes\space_group
Generator Kwargs:
------------------------------------------------------------
• Generator: element_element_bonds
Generator Args:
  - element_store: ..\..\data\examples\01\MatGraphDB\nodes\element
  - material_store: ..\..\data\examples\01\MatGraphDB\nodes\material
Generator Kwargs:
------------------------------------------------------------