Base modules and classes for working with crystal symmetry. This is a mirror of:


SymmBase is a Crystal shard which provides some modules and abstract objects for use as a base for other shards. Specifically, it's the base module for a family of shards related to exploring Crystallographic Symmetry:

If you're brand new to this set of shards, I'd recommend starting with a different library, one that uses this as a base. For example, these base modules / classes were originally abstracted from Symm32 so that shard might serve as a better starting place.


Add this to your application's shard.yml:

    gitlab: crystal-symmetry/symm_base


require "symm_base"

See other crystal-symmetry shards for examples such as

all of which rely in part on logic provided by SymmBase.


Contributions are welcome! To get things started you can open an issue and post a comment, correction, or feature request. From there we can talk about how best to incorporate (or not) your feedback.

In general, if you want, you can just pull this code down, start hacking on it, and then push it back here as a "Pull Request", then we can discuss your proposed changes.

  1. Fork it (
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

But I recommend you start off by opening an issue so that you don't waste time on a potentially unwelcome change.


  • KCErb KC Erb - creator, maintainer
Github statistic:
  • 0
  • 0
  • 0
  • 1
  • 0
  • 2 months ago


MIT License