Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extend model system #58

Draft
wants to merge 31 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
92785b9
- Add first implementation of bond length calculation + tests
Apr 18, 2024
e60bceb
Fix typos
Apr 19, 2024
6ddc77c
Fix typos
Apr 19, 2024
a1cd476
Improve pbc default system\
Apr 19, 2024
68b5d32
- Accomodate schema for hosting interatomic distances
Apr 23, 2024
8e3e859
- Add angles
Apr 23, 2024
c05e46e
- Fix shape issue with `elemental`s
Apr 24, 2024
12246f1
- Restructure functionalities into a chain of factory classes
Apr 26, 2024
e63c987
Fix some mistakes
Apr 26, 2024
479725a
- Work out distance and angle values tests for ethane
Apr 26, 2024
d0506a3
Add test for `DistributionFactory`
Apr 28, 2024
81b3ece
- Add tests for `DistributionHistogram`
Apr 28, 2024
897ccb6
Improve `analyze_geometry` check
Apr 28, 2024
5440b4d
Apply reviewer feedback
May 13, 2024
fd1bff9
Rename `GeometryDistribution.elements` to `GeometryDistribution.atom_…
May 13, 2024
1539c15
- Split out `GeometryDistribution` in to subcases (resolving reviewer…
May 13, 2024
333f15c
Correct typing (mypy)
May 13, 2024
45e12aa
- Merge branch 'develop' into `extend_model_system`
May 17, 2024
e8f59f8
Fix indentation error `AtomicCell.to_ase_atoms()`
May 17, 2024
208c2ba
Move `bond_list` from `Cell` ro `AtomicCell` upon reviewer request
May 17, 2024
a398857
Reapply `@check_attributes` to `to_ase_atoms`
May 17, 2024
7265b53
- Remove `positions` and `velocities` from `AtomicCell`, in favor of …
May 17, 2024
4333a53
Add test for `GeometryDistribution` (instantiation and normalization)
May 17, 2024
2b9c287
- Add test case to `test_distribution_histogram`
May 17, 2024
a3ac6a3
Change `GeometricDistribution` units for angles from degrees to radian
May 17, 2024
9023837
- Add documentation
May 17, 2024
4da9060
Fix mypy typing nameclash (gosh, mypy sucks)
May 17, 2024
6a6305a
- Build in non-stored default for bins in archive storage
ndaelman May 23, 2024
4c2bf8c
- Remove `check_attrributes`
ndaelman May 27, 2024
b498bd7
- add bin units in pipeline classes
ndaelman May 27, 2024
4e92474
- Fix `mypy` errors
ndaelman May 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 35 additions & 1 deletion docs/model_system/model_system.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,38 @@
# `ModelSystem`

!!! warning
This page is still under construction.
This page is still under construction.

## Distributions of geometric properties

### Schema structure
These distributions are stored under `AtomicCell`, with different specializations as repeating subsections of `GeometryDistribution` or its child classes.
This separation simplifies filtering to the `results` section and helps with indexing, as bin distributions tend to follow the default.
Other information, such as cutoff distances used to construct the neighbor list, are also stored here.

`GeometryDistribution` objects are effectively histograms that specialize further in sections for elemental pairs / triples / quadruples.
This is a choice to facilitate searches and visualizations over the distribution themselves, which are normalized to reproduce the same frequency for primitive cells as supercells.
Additional advantages include a limited storage consumption.
It is, however, not suitable for extracting the exacting distances / angles / dihedral angles by a given value.

!!! note
Triples / quadruples are defined around a specific geometric primitive, i.e. a point / arrow vector.
The elements making up these primitives are stored under `central_atom_labels`.

### Object initialization
To keep state within `AtomicCell` simple and exert control over the stages in calculation, we use pure Python helper classes.
Each class tackles a specific stage, in line with the _Single Responsibility Principle_:

- `DistributionFactory` scans the combinatorial space of elements and generates their `Distributions`.
- `Distribution` leverages `ase` for computing the distances / (dihedral) angles for the elemental combo provided.
It can also instantiate a `DistributionHistogram` of itself.
- `DistributionHistogram` contains the histogram version of their distribution.

While only `DistributionHistogram` will eventually be written out to `GeometryDistribution`, the rest of the data artifacts are retained under `AtomicCell` during run-time.
As such, once computed, they can be used in other computation, or data analysis.

!!! info
Conversion to `pandas.DataFrame` is a planned feature.

Inclusion of the actual computation pipeline, meanwhile, is toggled via the boolean `AtomicCell.analyze_geometry`.
The execution itself is handled by the normalizer.
Loading
Loading