Spatial Disorder Framework Manipulation
(working title)
Basic functionality to deconstruct (metal-organic) frameworks into building blocks, manipulate structures and extract finite molecular clusters.
See the notebook for a limited tutorial.
general
- type hints are wack
- combine separate selection objects?
- maybe store blocks in a numbered dict? Then the CG graph also contains numbers
- SelectLoop containing specific ids?
- SelectClosest to get the block closest to the center of the selection?
template
- what for nonperiodic structures?
- find a consistent way to order blocks - currently it is random after size (supposedly only after merging)
- block.mic() call fails if not periodic
- merge_blocks does weird things for UiO-68
cluster
- allow option to focus on elements?
- some easy way to define templates
modify
- fix dangling bond problem
- modification reorders blocks, so that repeated identical function calls (swapping blocks) will have a different effect every time..
termination
- redo this fully
tools
- duplicated code
- get_distance that automatically does PBC
tests
- where are they
Traceback (most recent call last): File "/home/pieter/PycharmProjects/Research/workdir/2024_07_09_krause/generate_clusters.py", line 108, in main() File "/home/pieter/PycharmProjects/Research/workdir/2024_07_09_krause/generate_clusters.py", line 83, in main cluster = extract_cluster(template, recipe, at) File "/home/pieter/PycharmProjects/Research/code/sdfm/sdfm/cluster.py", line 153, in extract_cluster unite_blocks(template, blocks, blocks_core[0]) # TODO: this will not work for disconnected clusters File "/home/pieter/PycharmProjects/Research/code/sdfm/sdfm/cluster.py", line 186, in unite_blocks block = check.popleft() IndexError: pop from an empty deque