#chemistry #computational #distance #module #structure #sites #bonding

chemrust-scanner

The core modules defining the flow and structs of data in computational chemistry routines

2 releases

0.2.3 Apr 10, 2024
0.2.2 Apr 10, 2024

#1366 in Data structures

MIT license

78KB
2K SLoC

Mounting site scanning module

This module serves for the scanning of all possible mounting site in a given structure with a specified bonding distance. The locations and coordination numbers of the sites will be reported.

Input

The input to the module includes:

  1. A structure, in the .cell format.
  2. The desired bonding distance, in angstrom.

Output

A table of the xyz coordinates of the sites and coordination numbers.

Development

  • Read-in a cell
  • Analyze the structure with kd-tree
  • Search the space around each atom by a given bonding distance
  • 3d geometry problem
    • Representation of sphere-sphere intersection: the circular curve
    • Solvation of the intersection of the curves: two-points
  • Whole intersect determination workflow
    • Build spheres for each coordinate points in kd-tree
    • Iterate the sphere kd-tree, check intersections, build circles
    • From the circles kd-tree, find intersection points between circles
    • Each found point will be added into a vec with a counting index, if next found intersect point between circles repeats with the previously found one, add counting index.
    • Summarize the number of spheres, circles, and points. Sphere-1 C.N., circle-2 C.N., points-at least 4
  • Limit bondlength to 2 Å? Or the results will not be practical.
  • Report in a more detailed and reasonable manner
  • Package

Bug investigations

  • Incorrect sphere intersections of circles (Fixed on May 2nd)
  • Check if we need to consider more spheres/circles/points with equal distance/close distance, instead of finding just the nearest one to each coord. (Done on June 10th)
    • Sphere stage: using 2 * desired bonding distance
    • Circle stage: iterate through.
  • Bondlength includes the atomic radius of elements: Use Materials Studio's bonding criteria to exclude impractical bonding possibilities. (Done on June 10th)
  • Limit bondlength to 2-3 Å? Or determined by tolerance like Material Studios: ideal bondlength *min_tolerance < ideal bondlength < ideal bondlength *max_tolerance (Done on June 10th)
  • A "blacklist" of elements could be necessary to avoid considering impractical bonding combos. (June 12th)

Dependencies

~9.5MB
~192K SLoC