Architecture

PILOTS is structured as:

  • IO layer: readers produce canonical :c++:type:Frame objects

  • Selection layer: AtomGroup + TopoGroup -> combined atom selections

  • Topology layer: optional; parsed once and injected via :c++:type:SystemContext

  • Algorithm layer (K): reusable graph/index/geometry + stats + mapping + polymer classifier

  • SDK layer (L): handles/views + output+state helpers for measures

  • Measures: physics definitions that plug into the Runner pipeline

The key goal is: adding a measure should not require changing Runner or main.