Giter Club home page Giter Club logo

crystalgraph's Introduction

Crystal Graph

Finite graphs for describing bond topology of crystal structures.

For more information about this representation, see the section of Net and quotient graph in j.patter.2022.100588.

Installation

  1. Install pymatgen: conda install -y numpy scipy matplotlib; pip install pymatgen
  2. To visualize graph with parallel edges you would need graphviz.
  3. Install this package by pip install crystalgraph.

Usage

Some examples can be found in the folder examples, specifically:

  1. qg_base.ipython describes basic usage of quotient graph class.
  2. qg_cif.ipython convert CIFs to quotient graphs, and contract atom nodes to building units.

TODO

  • basic QG classes
  • QG visulaization functions
  • QG features, such as dimensionality
  • enumeration of LQGs from a UQG
  • QG embedding functions
  • string representation

Suggestions for string representations

  1. Allow parallel edges and self-loops. I don't know how to do this in SMILES. For SELFIES it seems we can just add two characters with Q=1 and Q=0, i.e. parallel edges are rings of size 2 and self-loops are rings of size 1.
  2. For inorganic structures we can extend alphabet to include building units.
  3. From CIF to string, bond type has to be determined for each edge. This is largely solved for organics but I'm not sure there is a robust method for inorganic structures, especially when hydrogen atoms are missing.
  4. Strictly speaking, finite graph is derived for a specific cell. That means two cells representing the same crystal could give two different finite graphs. So we need to either start from the most reduced cell, or find a way to reduce the finite graph (or the string representation itself).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.