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.