Developer GuideΒΆ
stk
is a fairly simple library. The key design principle is
modularity and atomicity. The basic dependency structure is that
any module can depend on things defined in the utilities
module but all other top-level modules, such as calculators
and molecular
should be completely independent of one another.
Within these top level modules, sub-modules should still be defined in
as dependency free way as possible, though exceptions can be made in
rare and extreme circumstances where it makes sense. For example
molecules
imports a couple of tools from
functional_groups
utilities
defines general purpose tools, molecular
defines tools dealing with molecules and calculators
defines
calculator objects. Each calculator type should be defined in its
own sub-module with additional sub-folders to make everything as tidy
and logically cohesive as possible.