AtomSelection class
          #include <xmol/proxy/selections.h>
        
        Contents
@breif Ordered set of AtomRef from single Frame
Mixing references from different frames within single AtomSelection is prohibited
Base classes
- 
              template<typename T>class Selection<AtomRef>
 
Constructors, destructors, conversion operators
- AtomSelection(Selection&& rhs)
 - Construct from parent.
 - AtomSelection(AtomSpan rhs)
 - Selection() defaulted
 - 
              template<typename Iterator>Selection(Iterator first, Iterator last, bool sorted_and_unique = false)
 - 
              template<typename Container>Selection(Container&& c, bool sorted_and_unique = false) explicit
 - Selection(std::vector<T>&& data, bool sorted_and_unique = false) explicit
 
Public functions
- auto coords() -> CoordSelection
 - Coordinates.
 - auto residues() -> ResidueSelection
 - Parent residues.
 - auto molecules() -> MoleculeSelection
 - Parent molecules.
 - 
              template<typename Predicate>auto filter(Predicate&& p) -> AtomSelection
 - Returns selection with atoms that match predicate.
 - auto index() const -> std::vector<AtomIndex>
 - auto slice(std::optional<size_t> start, std::optional<size_t> stop = {}, std::optional<size_t> step = {}) -> AtomSelection
 - auto operator|=(const AtomSelection& rhs) -> AtomSelection&
 - Inplace union.
 - auto operator-=(const AtomSelection& rhs) -> AtomSelection&
 - Inplace difference.
 - auto operator&=(const AtomSelection& rhs) -> AtomSelection&
 - Inplace intersection.
 - 
              auto smart() -> smart::
AtomSmartSelection  - Create smart selection from this.
 - void guess_mass()
 - Guess atom mass by atom name.
 - auto inertia_tensor() -> Eigen::Matrix3d
 - Guess atom mass by atom name.
 - 
              auto alignment_to(AtomSpan& rhs,
              bool weighted = false) -> geom::
affine:: Transformation3d  - Calc alignment to another set of atoms.
 - 
              auto alignment_to(AtomSelection& rhs,
              bool weighted = false) -> geom::
affine:: Transformation3d  - Calc alignment to another set of atoms.
 - auto rmsd(AtomSelection& rhs, bool weighted = false) -> double
 - auto rmsd(AtomSpan& rhs, bool weighted = false) -> double
 - auto mean(bool weighted = false) -> XYZ