pointnet.phasedetection

Table of Contents
  1. About This Project
  2. Getting Started
  3. Usage
  4. Results
  5. Contributing
  6. Reference

§ About This Project

drawing

Publication Detail

Development of a PointNet for Detecting Morphologies of Self-Assembled Block Oligomers in Atomistic Simulations

This repo uses PointNet [1], a neural network designed for computer vision applications using point clouds. In this study, a properly-trained PointNet was demonstrated to be highly generalizable on morphology detection in molecular simulations, and can be potentially extended to discovery of emerging ordered patterns from non-equilibrium systems.

The PointNet was trained on atomic coordinates of mesophases including lamellar (LAM), body-centered cubic (BCC), hexagonally-packed cylinder (HPC), hexagonally-perforeated lamellar (HPL), and disorderd (DIS) from molecular dynamics (MD) simulation trajectories from our previous work [2, 3, 4] and synthetic point clouds for ordered network morphologies that were absent from previous simulations, including double diamond (DD), double gyroid (DG), plumber’s nightmare (P), and single gyroid (SG).

Relevant Work

The PointNet architecture is taken from [1], also see implementation in Tensorflow (https://github.com/charlesq34/pointnet) and in PyTorch (https://github.com/fxia22/pointnet.pytorch). DeFever et. al. [5] also presented the use of PointNet to identify local structures in coarsed grained MD simulations.

§ Getting Started

Prerequisites

pip install -m requirements.txt

Data Downloads

  1. Download pre-processed point_clouds and raw training data raw from here. Note: the raw folder contains 100 example .pdb (~1.1 G) files for each structure. A complete data set contains ~38 G of data and will be available upon request.
  2. Put point_clouds and raw into the data folder.

§ Usage

Data Preprocessing:

  • Generate point clouds (normalized coordinates of minority components) from original .pdb files (simulation frames): sh cd ./data python process_pdb.py -c LAM -t -r -c: name of the phases available form .pdb files (BCC, DIS, HPC, HPL, or LAM)
    -t: perform random translations of point clouds wrapped by periodic boundary conditions
    -r: perform random uniform rotations of point clouds wrapped by periodic boundary conditions
  • Generate point clouds of network structures: sh cd ./data python process_net.py -c DG -t -r -n 3000 -c: name of the network phases (DD, DG, P, or SG)
    -t: perform random translations of point clouds wrapped by periodic boundary conditions
    -r: perform random uniform rotations of point clouds wrapped by periodic boundary conditions
    -n: total number of point clouds (train + test) to generate ### Training:
  • Train the PointNet using preprocessed data: sh cd ./utils python train_classification.py -b 64 -n 1000 -e 100 -d ../data/point_clouds/ -f -b: size of minibatch
    -n: number of points selected from each point cloud, so that the input point clouds will have uniform dimension n*3
    -e: number of training epochs
    -d: data path
    -f: implement feature transformation (spatial transformer network, or STN)

§ Results

The highest accuracy and the corresponding confusion matrices for different models:

Test Accuracy

Model Strategy Accuracy CI
A translation 0.973 0.010
B translation + STN 0.957 0.011
C translation + rotation 0.983 0.009
D translation + rotation + STN 0.990 0.005

Confusion Matrices

Model Downloads

Download model states during training from trained_models https://drive.google.com/drive/folders/1N8BjACdNCKTmEnRF46VKkoHufLV8VoMt?usp=sharing.

§ Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Project Link: https://github.com/donshen/pointnet.phasedetection

§ Reference

  1. C. R. Qi, H. Su, K. Mo and L. J. Guibas, PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2017, 652–660. [link]
  2. Shen, Z. Chen, L. J.; Vernadskaia, V.; Ertem, S. P.; Mahanthappa, M. K.; Hillmyer, M. A. Reineke, T. M.; Lodge, T. P.; Siepmann, J. I. From Order to Disorder: Computational Design of Triblock Amphiphiles with 1 nm Domains. J. Am. Chem. Soc. 2020, 142, 9352‐9362. [link]
  3. Barreda, L.; Shen, Z.; Chen, Q. P.; Lodge, T. P.; Siepmann, J. I.; Hillmyer, M. A. Synthesis, Simulation, and Self‐Assembly of a Model Amphiphile to Push the Limits of Block Polymer Nanopatterning. Nano Lett. 2019, 19, 4458‐4462. [link]
  4. Chen, Q. P.; Barreda, L.; Oquendo, L. E.; Hillmyer, M. A.; Lodge, T. P.; Siepmann, J. I. Computational Design of High-χ Block Oligomers for Accessing 1 Nm Domains. ACS Nano 2018, 12, 4351− 4361. [link]
  5. R. S. DeFever, C. Targonski, S. W. Hall, M. C. Smith, and S. Sarupria, A generalized deep learning approach for local structure identification in molecular simulations, Chem. Sci. 2019, 10, 7503–7515. [link]