mofbuilder.MetalOrganicFrameworkBuilder#

class mofbuilder.MetalOrganicFrameworkBuilder(comm=None, ostream=None, mof_family=None)[source]#

Bases: object

Orchestrates MOF building: load net and topology, place nodes and linkers, optimize, supercell, defects, write.

Set mof_family, node_metal, linker (xyz/molecule/SMILES), then call build() to get a Framework. sG: scaled and rotated net graph; eG: edge graph (V + EDGE nodes, XOO on edges); superG: supercell of sG.

Parameters:
  • comm (Optional[Any])

  • ostream (Optional[Any])

  • mof_family (Optional[str])

comm#

MPI communicator.

rank#

MPI rank of this process.

nodes#

MPI size (number of processes).

ostream#

Output stream for logging.

framework#

Framework instance (result of build()).

mof_family#

MOF family name (e.g. “HKUST-1”).

node_metal#

Metal type string for nodes.

dummy_atom_node#

Whether to add dummy atoms to nodes.

dummy_atom_node_dict#

Dict of dummy atom counts (set after node processing).

data_path#

Path to database directory.

frame_nodes#

FrameNode instance.

frame_linker#

FrameLinker instance.

frame_terminations#

FrameTermination instance.

frame_net#

FrameNet instance.

mof_top_library#

MofTopLibrary instance.

net_optimizer#

NetOptimizer instance.

mofwriter#

MofWriter instance.

defectgenerator#

TerminationDefectGenerator instance.

net_spacegroup#

Space group from net (set when net is loaded).

net_cell_info#

Cell parameters from net.

net_unit_cell#

3x3 unit cell matrix from net.

net_unit_cell_inv#

Inverse of net_unit_cell.

node_connectivity#

Node connectivity from topology.

linker_connectivity#

Linker connectivity (topic) from topology.

net_sorted_nodes#

Sorted list of node names from net.

net_sorted_edges#

Sorted list of edges from net.

net_pair_vertex_edge#

Vertex-edge pairs from net.

linker_xyzfile#

Path to linker XYZ file (optional).

linker_molecule#

VeloxChem molecule for linker (optional).

linker_smiles#

SMILES string for linker (optional).

linker_charge#

Linker charge.

linker_multiplicity#

Linker multiplicity.

linker_center_data#

Center fragment data (set when linker is loaded).

linker_center_X_data#

Center X-atom data.

linker_outer_data#

Outer fragment(s) data.

linker_outer_X_data#

Outer X-atom data.

linker_frag_length#

Length of linker fragment.

linker_fake_edge#

Whether linker is fake (zero-length) edge.

node_data#

Node atom data (set when node is loaded).

node_X_data#

Node X-atom data.

termination#

Whether to use terminations.

termination_name#

Name of termination group (e.g. ‘acetate’).

termination_molecule#

Termination molecule (optional).

termination_data#

Termination atom data.

termination_X_data#

Termination X atoms.

termination_Y_data#

Termination Y atoms.

constant_length#

X-X bond length in Angstrom (default 1.54).

load_optimized_rotations#

Path to H5 file with saved rotations (optional).

skip_rotation_optimization#

If True, skip rotation optimization.

rotation_filename#

Path to save optimized rotations (optional).

frame_unit_cell#

3x3 frame unit cell (set after build).

frame_cell_info#

Frame cell parameters.

supercell#

Supercell dimensions (nx, ny, nz).

remove_node_list#

List of node indices to remove (defects).

remove_edge_list#

List of edge indices to remove (defects).

_debug#

If True, print extra debug messages.

list_available_mof_families()[source]#
list_available_metals(mof_family=None)[source]#

Print available metals for the given (or current) MOF family from the topology library.

Parameters:

mof_family (str | None)

Return type:

None

list_available_terminations()[source]#
list_available_solvents()[source]#
load_framework()[source]#
optimize_framework()[source]#
make_supercell()[source]#
build()[source]#

Load net and topology, place nodes/linkers, optimize rotations and cell, build supercell (and defects). Returns self.framework.

Return type:

Framework