A find-and-replace tool for crystal structure models. implements (i) subgraph matching and (ii) point set alignment to search a parent crystal for a query fragment, then align and install a replacement fragment in its place.
Author SimonEnsemble
10 Stars
Updated Last
1 Year Ago
Started In
March 2020


PoreMatMod.jl is a Julia package for (i) subgraph matching and (ii) modifying crystal structures such as metal-organic frameworks (MOFs).

Functioning as a "find-and-replace" tool on atomistic crystal structure models of porous materials, PoreMatMod.jl is useful for:

๐Ÿ”จ subgraph matching to filter databases of crystal structures

๐Ÿ”จ constructing hypothetical crystal structure models of functionalized structures

๐Ÿ”จ introducing defects into crystal structures

๐Ÿ”จ repairing artifacts of X-ray structure determination, such as missing hydrogen atoms, disorder, and guest molecules

N.b. while PoreMatMod.jl was developed for MOFs and other porous crystalline materials, its find-and-replace operations can be applied to discrete, molecular structures as well by assigning an arbitrary unit cell.

Documentation Build Status Test Coverage
Docs Badge CI Docs weekly codecov Aqua QA


PoreMatMod.jl is a registered Julia package and can be installed by entering the following line in the Julia REPL when in package mode (type ] to enter package mode):

pkg> add PoreMatMod

Gallery of examples

Link to examples here with raw Pluto notebooks here.


If you found PoreMatMod.jl useful, please cite our paper in J. Chem. Inf. Model. (ACS Editors' Choice) here [preprint here]. ๐Ÿ‘‡

  doi = {10.1021/acs.jcim.1c01219},
  url = {https://doi.org/10.1021/acs.jcim.1c01219},
  year = {2022},
  month = jan,
  publisher = {American Chemical Society ({ACS})},
  volume = {62},
  number = {3},
  pages = {423--432},
  author = {E. Adrian Henle and Nickolas Gantzler and Praveen K. Thallapally and Xiaoli Z. Fern and Cory M. Simon},
  title = {{PoreMatMod}.jl: Julia Package for in Silico Postsynthetic Modification of Crystal Structure Models},
  journal = {Journal of Chemical Information and Modeling}


We encourage feature requests and feedback on GitHub.