coxeter

coxeter: A Python package for working with shapes - Published in JOSS (2021)

https://github.com/glotzerlab/coxeter

Science Score: 98.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    14 of 22 committers (63.6%) from academic institutions
  • Institutional organization owner
    Organization glotzerlab has institutional domain (glotzerlab.engin.umich.edu)
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

computational-geometry geometry physics polygons polyhedra shapes

Keywords from Contributors

mesh hydrology energy-system exoplanet materials-informatics topology hydraulic-modelling gravitational-lensing geoscience ode

Scientific Fields

Mathematics Computer Science - 84% confidence
Last synced: 4 months ago · JSON representation

Repository

Collection of tools to help initialize and manipulate geometries in two and three dimensions.

Basic Info
Statistics
  • Stars: 23
  • Watchers: 7
  • Forks: 5
  • Open Issues: 15
  • Releases: 4
Topics
computational-geometry geometry physics polygons polyhedra shapes
Created almost 7 years ago · Last pushed 5 months ago
Metadata Files
Readme Changelog Contributing License Codeowners

README.rst

coxeter
=======

|JOSS|
|ReadTheDocs|
|PyPI|
|conda-forge|

.. |JOSS| image:: https://joss.theoj.org/papers/10.21105/joss.03098/status.svg
   :target: https://doi.org/10.21105/joss.03098
.. |ReadTheDocs| image:: https://readthedocs.org/projects/coxeter/badge/?version=latest
   :target: http://coxeter.readthedocs.io/en/latest/?badge=latest
.. |PyPI| image:: https://img.shields.io/pypi/v/coxeter.svg
   :target: https://pypi.org/project/coxeter/
.. |conda-forge| image:: https://img.shields.io/conda/vn/conda-forge/coxeter.svg
   :target: https://anaconda.org/conda-forge/coxeter

Welcome to the documentation for **coxeter**!
The **coxeter** Python library provides tools for working with common geometric objects in two and three dimensions.
Named for the `20th century geometer `__ best known for his work on polytopes, **coxeter** is especially focused on polygons and polyhedra, but it also support various standard curved shapes such as spheres and ellipsoids.

The package emphasizes working with shapes as mutable objects whose geometric attributes may be accessed using property-based APIs.
Since **coxeter** originally arose to support representations of anisotropic nanoparticles, many shapes support calculations of physical properties (such as form factors and inertia tensors) in addition to purely geometric ones.
However, the package is designed with more general audiences in mind as well, and it aims to support precise calculations of a wide range of geometric quantities that are useful in a number of fields.

Some core features of **coxeter** include:

* Libraries of common shapes to support easy construction.
* Mutable shape objects that can be rescaled in a variety of ways to suit a number of needs.
* Immediate access to geometric properties of shapes via Python properties of shape objects.
* Plotting functionality to make it easy to visualize shapes in both two and three dimensions.

More detailed information on **coxeter**'s features and examples of how to use them may be found in the `documentation `__.

.. _installing:

Setup
-----

The recommended methods for installing coxeter are using **pip** or **conda**.

Installation via pip
~~~~~~~~~~~~~~~~~~~~

To install the package from PyPI, execute:

.. code:: bash

   pip install coxeter --user

Installation via conda
~~~~~~~~~~~~~~~~~~~~~~

To install the package from conda, first add the **conda-forge** channel:

.. code:: bash

   conda config --add channels conda-forge

After the **conda-forge** channel has been added, you can install coxeter by executing

.. code:: bash

   conda install coxeter

Installation from source
~~~~~~~~~~~~~~~~~~~~~~~~

Start by executing the following:

.. code:: bash

   git clone https://github.com/glotzerlab/coxeter.git
   cd coxeter

To install coxeter and other optional dependencies, choose one of the following:

.. code:: bash

   pip install . # Install with no additional dependencies
   pip install .[tests] # RECOMMENDED: Install with dependencies required to run pytests
   pip install .[tests,doc] # Install all dependencies required to develop for coxeter


Requirements
~~~~~~~~~~~~

-  Python >= 3.9
-  NumPy >= 1.19.0
-  SciPy >= 1.0.0
-  rowan >= 1.2.0

Testing
-------

The package is currently tested for Python >= 3.8 on Unix-like systems.
Continuous integrated testing is performed using Github actions on these Python versions.

First, install the packages required to test coxeter (if not already done):

.. code:: bash

   pip install -r tests/requirements.txt

To run the packaged unit tests, execute the following line from the root of the repository:

.. code:: bash

   pytest

To run the packaged unit tests with the coverage module:

.. code:: bash

   pytest --cov=coxeter

Building Documentation
----------------------

Documentation for coxeter is written in `reStructuredText `__ and compiled using `Sphinx `__.
To build the documentation, first install Sphinx and the other required packages:

.. code:: bash

   pip install -r doc/requirements.txt
   conda install -c conda-forge fresnel

.. warning::
   The `fresnel `_ package on conda-forge must be used. The PyPI package *fresnel* is different and will not function properly.

You can then use Sphinx to create the actual documentation in either PDF or HTML form by running the following commands:

.. code:: bash

   cd doc
   make html # For html output
   make latexpdf # For a LaTeX compiled PDF file
   open build/html/index.html

Support and Contribution
========================

This package is hosted on `GitHub `_.
Please report any bugs or problems that you find on the `issue tracker `_.
All contributions to coxeter are welcomed via pull requests!

Owner

  • Name: Glotzer Group
  • Login: glotzerlab
  • Kind: organization
  • Location: University of Michigan

We develop molecular simulation tools to study the self-assembly of complex materials and explore matter at the nanoscale.

JOSS Publication

coxeter: A Python package for working with shapes
Published
July 17, 2021
Volume 6, Issue 63, Page 3098
Authors
Vyas Ramasubramani ORCID
Department of Chemical Engineering, University of Michigan
Bradley D. Dice ORCID
Department of Physics, University of Michigan
Tobias T. Dwyer ORCID
Department of Chemical Engineering, University of Michigan
Sharon C. Glotzer ORCID
Department of Chemical Engineering, University of Michigan, Department of Physics, University of Michigan, Biointerfaces Institute, University of Michigan
Editor
Juan Nunez-Iglesias ORCID
Tags
geometry physics materials science

GitHub Events

Total
  • Create event: 25
  • Issues event: 1
  • Release event: 1
  • Watch event: 1
  • Delete event: 22
  • Issue comment event: 15
  • Push event: 109
  • Gollum event: 3
  • Pull request review event: 6
  • Pull request event: 48
Last Year
  • Create event: 25
  • Issues event: 1
  • Release event: 1
  • Watch event: 1
  • Delete event: 22
  • Issue comment event: 15
  • Push event: 109
  • Gollum event: 3
  • Pull request review event: 6
  • Pull request event: 48

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 1,031
  • Total Committers: 22
  • Avg Commits per committer: 46.864
  • Development Distribution Score (DDS): 0.381
Past Year
  • Commits: 40
  • Committers: 6
  • Avg Commits per committer: 6.667
  • Development Distribution Score (DDS): 0.625
Top Committers
Name Email Commits
Vyas Ramasubramani v****b@u****u 638
Bradley Dice b****e@b****m 179
Tobias Dwyer t****r@u****u 47
Jen Bradley 5****y 34
Bryan VanSaders b****e@u****u 28
dependabot[bot] 4****] 27
Tommy Waltmann t****t@u****u 17
Brandon Butler b****r@u****u 17
pre-commit-ci[bot] 6****] 11
Domagoj Fijan 5****n 9
Joshua A. Anderson j****r@u****u 5
Tim Moore m****c@u****u 4
Joseph Burkhart 6****t 4
M. Eric Irrgang e****g@u****u 2
Corwin Kerr c****r@u****u 2
Jens Glaser j****r@u****u 1
Eric Harper h****c@u****u 1
Karen Coulter k****r@u****u 1
Trevor Teague 1****e 1
Will Zygmunt w****t@u****u 1
jproc j****c@u****u 1
mariano.semelman m****n@o****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 37
  • Total pull requests: 174
  • Average time to close issues: 3 months
  • Average time to close pull requests: 21 days
  • Total issue authors: 13
  • Total pull request authors: 10
  • Average comments per issue: 1.73
  • Average comments per pull request: 1.07
  • Merged pull requests: 155
  • Bot issues: 0
  • Bot pull requests: 52
Past Year
  • Issues: 2
  • Pull requests: 55
  • Average time to close issues: N/A
  • Average time to close pull requests: 7 days
  • Issue authors: 1
  • Pull request authors: 5
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.58
  • Merged pull requests: 46
  • Bot issues: 0
  • Bot pull requests: 28
Top Authors
Issue Authors
  • bdice (12)
  • vyasr (6)
  • tommy-waltmann (4)
  • janbridley (3)
  • b-butler (2)
  • evetion (2)
  • josephburkhart (2)
  • j-proc (1)
  • gecrooks (1)
  • ispivack (1)
  • joaander (1)
  • tcmoore3 (1)
  • syjlee (1)
Pull Request Authors
  • janbridley (64)
  • dependabot[bot] (54)
  • vyasr (25)
  • bdice (23)
  • pre-commit-ci[bot] (19)
  • DomFijan (12)
  • Tobias-Dwyer (9)
  • josephburkhart (8)
  • tfteague (2)
  • cbkerr (1)
Top Labels
Issue Labels
enhancement (7) good first issue (3) bug (3) documentation (3)
Pull Request Labels
dependencies (54) github_actions (52) enhancement (15) documentation (8) bug (4) refactor (4) minor (2) python (2)

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 515 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 1
    (may contain duplicates)
  • Total versions: 18
  • Total maintainers: 6
pypi.org: coxeter

Tools for creating and manipulating shapes.

  • Documentation: https://coxeter.readthedocs.io
  • License: BSD 3-Clause License for coxeter Copyright (c) 2015-2025 The Regents of the University of Michigan. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  • Latest release: 0.10.0
    published 11 months ago
  • Versions: 12
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 515 Last month
Rankings
Dependent packages count: 10.1%
Forks count: 13.3%
Stargazers count: 14.2%
Downloads: 14.6%
Average: 14.8%
Dependent repos count: 21.6%
Last synced: 4 months ago
conda-forge.org: coxeter

coxeter is used for working with polytopes and other shapes. The package is focused on providing robust methods for computing standard geometric quantities, particularly for polytopes where implementing such calculations for generic shapes requires care to properly handle convexity, proper vertex ordering, and other related issues.

  • Versions: 6
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 34.0%
Average: 46.1%
Forks count: 49.6%
Stargazers count: 49.6%
Dependent packages count: 51.2%
Last synced: 4 months ago

Dependencies

doc/requirements.txt pypi
  • autodocsumm *
  • fresnel *
  • jupyter *
  • matplotlib *
  • nbsphinx *
  • numpy *
  • rowan >=1.2
  • scipy *
  • sphinxcontrib-bibtex >=2.0.0
requirements.txt pypi
  • numpy >=1.19.0
  • rowan >=1.2.0
  • scipy >=1.0.0
setup.py pypi
  • numpy >=1.19.0
.github/workflows/CI.yaml actions
  • actions/checkout v4 composite
  • actions/setup-python v4.7.0 composite
.github/workflows/PublishPyPI.yaml actions
  • actions/checkout v4 composite
  • actions/download-artifact v3.0.2 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3.1.3 composite
  • pypa/gh-action-pypi-publish v1.8.10 composite
.github/requirements.txt pypi
  • hypothesis ==6.86.2
  • matplotlib ==3.7.3
  • miniball ==1.2.0
  • numpy ==1.24.4
  • plato-draw ==1.12.0
  • pytest ==7.4.2
  • pytest-cov ==4.1.0
  • rowan ==1.2
  • scipy ==1.10.1
pyproject.toml pypi
  • numpy >=1.19.0
  • rowan >=1.2.0
  • scipy >1.0.0
tests/requirements.txt pypi
  • hypothesis * test
  • matplotlib * test
  • miniball * test
  • plato-draw * test
  • pytest * test
  • pytest-cov * test
doc/environment.yml conda
  • autodocsumm
  • fresnel
  • furo
  • jupyter
  • matplotlib
  • nbsphinx
  • numpy
  • rowan >=1.2
  • scipy
  • sphinx
  • sphinxcontrib-bibtex >=2.0.0