Skip to content

canonical implementation #123

@rkurchin

Description

@rkurchin

A major discussion point at the workshop yesterday was the idea of having an "official" or "canonical" implementation of the AtomsBase interface (somewhat analogous to ASE.Atoms in Python). Advantages would include:

  • easy entry point for new users to get started and a concrete type to use in generic documentation about the interface
  • can hopefully reduce some unnecessary duplication of functionality
  • avoid confusion about whether the currently included (and arguably not great) prototype implementations are actually meant to be used for things...they could presumably just be moved to documentation as examples and not actually included

Some logistical points to discuss on this:

  • should this live in this repository? In this repository, but not exported by default? In a different repository?
  • It was also mentioned that if it lives in a different repo, we might discuss renaming this one to AtomsInterface or similar instead

Implementation discussion points:

  • needs to be type-stable
  • how flexible to additional properties do we want to be? (fully arbitrary makes type stability difficult, but probably we want some such flexibility)
  • should it be mutable or immutable? Or should there be two versions?
  • Should its length be fixed (i.e. should atoms be able to be added/removed after instantiation)?
  • Should people be able to directly modify fields or only via setter methods (to enable preservation of any internal consistency between fields, a la issues Ask had mentioned in ASE)
  • things to build off of could include the versions in DecoratedParticles or ExtXYZ

Going to explicitly ping @cortner, @jgreener64, and @jameskermode here as they either very actively participated in discussion or implemented something that came up in said discussion :) but anyone should chime in with thoughts!

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions