figuratenum

Figuratenum is the most comprehensive Python library for figurate numbers, capable of generating up to 233 different sequences across various dimensions and generalizations. Based on the book ‘Figurate Numbers’ (2012) by Elena Deza and Michel Deza.

https://github.com/edelveart/figuratenum

Science Score: 44.0%

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

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.0%) to scientific vocabulary

Keywords

figurate-numbers figuratenum generators geometry infinite-generation infinite-sequences mathematics number-theory python
Last synced: 6 months ago · JSON representation ·

Repository

Figuratenum is the most comprehensive Python library for figurate numbers, capable of generating up to 233 different sequences across various dimensions and generalizations. Based on the book ‘Figurate Numbers’ (2012) by Elena Deza and Michel Deza.

Basic Info
Statistics
  • Stars: 1
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 10
Topics
figurate-numbers figuratenum generators geometry infinite-generation infinite-sequences mathematics number-theory python
Created over 1 year ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

FigurateNum

FigurateNum is a collection of 235 figurate number generators based on the book Figurate Numbers by Michel Deza and Elena Deza, published in 2012.

PyPI - Version PyPI - Wheel Pepy Total Downloads PyPI - Status GitHub License

What is the purpose of FigurateNum?

FigurateNum helps discover patterns in figurate number sequences and supports numerical computation in mathematics-related projects. It integrates with other tools for visualizing geometric structures and serves as a companion to the book.

How to install?

bash pip install figuratenum

Optional: Graphical Visualization (v2.1.0)

Enable the FigurateViz class (requires numpy and matplotlib) by installing the optional dependencies:

bash pip install figuratenum[figurate-viz]

Example of Gaussian Graph Visualization Example of Gaussian Graph Visualization Example of Gaussian Graph Visualization Example of Gaussian Graph Visualization

Features

The main class, FigurateNum, provides access to all figurate number sequences across different dimensions, while dedicated classes let you work with each dimension separately:

FigurateViz Visualization

  • Gaussian plots (2D) in polar coordinates with customizable colors, visibility options, and export capabilities.
  • Seamless integration with any figurate number sequence (list[int] or tuple[int, ...]).

How to use?

1. Import and generate sequences with FigurateNum and related classes

```python from figuratenum import FigurateNum, MultidimensionalFigurateNum

1. General use: generate any figurate sequence via FigurateNum

seq = FigurateNum() hyperdodecahedralgen = seq.hyperdodecahedral() print([next(hyperdodecahedralgen) for _ in range(4)])

Output: [1, 600, 4983, 19468]

2. Specialized classes: PlaneFigurateNum, SpaceFigurateNum,

MultidimensionalFigurateNum, ZooFigurateNum

multi = MultidimensionalFigurateNum() hypertetrahedrongen = multi.kdimensionalcenteredhypertetrahedron(21) print([next(hypertetrahedron_gen) for _ in range(12)])

Output: [1, 23, 276, 2300, 14950, 80730, 376740,

1560780, 5852925, 20160075, 64512240, 193536720]

```

2. Using FigurateViz to visualize and export

```python from figuratenum import FigurateNum as fgn from figuratenum.figurate_viz.FigurateViz import FigurateViz

Generate figurate numbers

seqloop = fgn() gen = seqloop.fivedimensionalhyperoctahedron() figuratenum_seq = [next(gen) for _ in range(704)]

Create and draw the Gaussian plot

viz = FigurateViz(figuratenumseq, figsize=(6, 6)) viz.gaussianplot( circcolor="m", bgcolor="k", numtext=False, numcolor="g", ext_circle=True, rotate=-1 ).draw()

Export plots as .svg, .pdf, .png (matplotlib compatible),

with options e.g., dpi, transparent, bboxinches, padinches, etc.

viz.exportplot( "figure1.svg", circcolor="cyan", transparent=True ) ```

3. Get sequence values easily with NumCollector

```python from figuratenum import NumCollector as nc, FigurateNum

gen = FigurateNum().pentatope() print(nc.taketotuple(gen, 10)) # first 10 values as tuple

Output: (1, 5, 15, 35, 70, 126, 210, 330, 495, 715)

Available methods:

- take(n) : first n values as iterator

- taketolist(stop, start=0, step=1)

- taketotuple(stop, start=0, step=1)

- taketoarray(stop, start=0, step=1)

- pick(n) : nth value

```

Version History

🚨 Version 2.0.0 includes renamed methods and changes in class usage. These changes are incompatible with previous versions. Please review the updated usage instructions below to adapt your code to the new structure.

Additional Resources


List of Figurate Numbers

Plane Figurate Numbers

Show 79 sequences of the PlaneFigurateNum class 1. `polygonal` 2. `triangular` 3. `square` 4. `pentagonal` 5. `hexagonal` 6. `heptagonal` 7. `octagonal` 8. `nonagonal` 9. `decagonal` 10. `hendecagonal` 11. `dodecagonal` 12. `tridecagonal` 13. `tetradecagonal` 14. `pentadecagonal` 15. `hexadecagonal` 16. `heptadecagonal` 17. `octadecagonal` 18. `nonadecagonal` 19. `icosagonal` 20. `icosihenagonal` 21. `icosidigonal` 22. `icositrigonal` 23. `icositetragonal` 24. `icosipentagonal` 25. `icosihexagonal` 26. `icosiheptagonal` 27. `icosioctagonal` 28. `icosinonagonal` 29. `triacontagonal` 30. `centered_triangular` 31. `centered_square` = `diamond` 32. `centered_pentagonal` 33. `centered_hexagonal` 34. `centered_heptagonal` 35. `centered_octagonal` 36. `centered_nonagonal` 37. `centered_decagonal` 38. `centered_hendecagonal` 39. `centered_dodecagonal` = `star` 40. `centered_tridecagonal` 41. `centered_tetradecagonal` 42. `centered_pentadecagonal` 43. `centered_hexadecagonal` 44. `centered_heptadecagonal` 45. `centered_octadecagonal` 46. `centered_nonadecagonal` 47. `centered_icosagonal` 48. `centered_icosihenagonal` 49. `centered_icosidigonal` 50. `centered_icositrigonal` 51. `centered_icositetragonal` 52. `centered_icosipentagonal` 53. `centered_icosihexagonal` 54. `centered_icosiheptagonal` 55. `centered_icosioctagonal` 56. `centered_icosinonagonal` 57. `centered_triacontagonal` 58. `centered_mgonal(m)` 59. `pronic` = `heteromecic = oblong` 60. `polite` 61. `impolite` 62. `cross` 63. `aztec_diamond` 64. `polygram(m)` = `centered_star_polygonal(m)` 65. `pentagram` 66. `gnomic` 67. `truncated_triangular` 68. `truncated_square` 69. `truncated_pronic` 70. `truncated_centered_pol(m)` = `truncated_centered_mgonal(m)` 71. `truncated_centered_triangular` 72. `truncated_centered_square` 73. `truncated_centered_pentagonal` 74. `truncated_centered_hexagonal` = `truncated_hex` 75. `generalized_mgonal(m, start_numb)` 76. `generalized_pentagonal(start_numb)` 77. `generalized_hexagonal(start_numb)` 78. `generalized_centered_pol(m, start_numb)` 79. `generalized_pronic(start_numb)`

Space Figurate Numbers

Show 86 sequences of the SpaceFigurateNum class 1. `m_pyramidal(m)` 2. `triangular_pyramidal` 3. `square_pyramidal` = `pyramidal` 4. `pentagonal_pyramidal` 5. `hexagonal_pyramidal` 6. `heptagonal_pyramidal` 7. `octagonal_pyramidal` 8. `nonagonal_pyramidal` 9. `decagonal_pyramidal` 10. `hendecagonal_pyramidal` 11. `dodecagonal_pyramidal` 12. `tridecagonal_pyramidal` 13. `tetradecagonal_pyramidal` 14. `pentadecagonal_pyramidal` 15. `hexadecagonal_pyramidal` 16. `heptadecagonal_pyramidal` 17. `octadecagonal_pyramidal` 18. `nonadecagonal_pyramidal` 19. `icosagonal_pyramidal` 20. `icosihenagonal_pyramidal` 21. `icosidigonal_pyramidal` 22. `icositrigonal_pyramidal` 23. `icositetragonal_pyramidal` 24. `icosipentagonal_pyramidal` 25. `icosihexagonal_pyramidal` 26. `icosiheptagonal_pyramidal` 27. `icosioctagonal_pyramidal` 28. `icosinonagonal_pyramidal` 29. `triacontagonal_pyramidal` 30. `triangular_tetrahedral[finite]` 31. `triangular_square_pyramidal[finite]` 32. `square_tetrahedral[finite]` 33. `square_square_pyramidal[finite]` 34. `tetrahedral_square_pyramidal[finite]` 35. `cubic` 36. `tetrahedral` 37. `octahedral` 38. `dodecahedral` 39. `icosahedral` 40. `truncated_tetrahedral` 41. `truncated_cubic` 42. `truncated_octahedral` 43. `stella_octangula` 44. `centered_cube` 45. `rhombic_dodecahedral` 46. `hauy_rhombic_dodecahedral` 47. `centered_tetrahedron` = `centered_tetrahedral` 48. `centered_square_pyramid` = `centered_pyramid` 49. `centered_mgonal_pyramid(m)` 50. `centered_pentagonal_pyramid` 51. `centered_hexagonal_pyramid` 52. `centered_heptagonal_pyramid` 53. `centered_octagonal_pyramid` 54. `centered_octahedron` 55. `centered_icosahedron` = `centered_cuboctahedron` 56. `centered_dodecahedron` 57. `centered_truncated_tetrahedron` 58. `centered_truncated_cube` 59. `centered_truncated_octahedron` 60. `centered_mgonal_pyramidal(m)` 61. `centered_triangular_pyramidal` 62. `centered_square_pyramidal` 63. `centered_pentagonal_pyramidal` 64. `centered_heptagonal_pyramidal` 65. `centered_octagonal_pyramidal` 66. `centered_nonagonal_pyramidal` 67. `centered_decagonal_pyramidal` 68. `centered_hendecagonal_pyramidal` 69. `centered_dodecagonal_pyramidal` 70. `centered_hexagonal_pyramidal` = `hex_pyramidal` 71. `hexagonal_prism` 72. `mgonal_prism(m)` 73. `generalized_mgonal_pyramidal(m, start_num)` 74. `generalized_pentagonal_pyramidal(start_num)` 75. `generalized_hexagonal_pyramidal(start_num)` 76. `generalized_cubic(start_num)` 77. `generalized_octahedral(start_num)` 78. `generalized_icosahedral(start_num)` 79. `generalized_dodecahedral(start_num)` 80. `generalized_centered_cube(start_num)` 81. `generalized_centered_tetrahedron(start_num)` 82. `generalized_centered_square_pyramid(start_num)` 83. `generalized_rhombic_dodecahedral(start_num)` 84. `generalized_centered_mgonal_pyramidal(m, start_num)` 85. `generalized_mgonal_prism(m, start_num)` 86. `generalized_hexagonal_prism(start_num)`

Multidimensional Figurate Numbers

Show 68 sequences of the MultidimensionalFigurateNum class 1. `k_dimensional_hypertetrahedron(k)` = `k_hypertetrahedron(k)` = `regular_k_polytopic(k)` = `figurate_of_order_k(k)` 2. `five_dimensional_hypertetrahedron` 3. `six_dimensional_hypertetrahedron` 4. `k_dimensional_hypercube(k)` = `k_hypercube(k)` 5. `five_dimensional_hypercube` 6. `six_dimensional_hypercube` 7. `hypertetrahedral` = `pentachoron` = `pentatope` = `triangulotriangular` = `cell_5` 8. `hypercube` = `octachoron` = `tesseract` = `biquadratic` = `cell_8` 9. `hyperoctahedral` = `hexadecachoron` = `four_cross_polytope` = `four_orthoplex` = `cell_16` 10. `hypericosahedral` = `hexacosichoron` = `polytetrahedron` = `tetraplex` = `cell_600` 11. `hyperdodecahedral` = `hecatonicosachoron` = `dodecaplex` = `polydodecahedron` = `cell_120` 12. `polyoctahedral` = `icositetrachoron` = `octaplex` = `hyperdiamond` = `cell_24` 13. `four_dimensional_hyperoctahedron` 14. `five_dimensional_hyperoctahedron` 15. `six_dimensional_hyperoctahedron` 16. `seven_dimensional_hyperoctahedron` 17. `eight_dimensional_hyperoctahedron` 18. `nine_dimensional_hyperoctahedron` 19. `ten_dimensional_hyperoctahedron` 20. `k_dimensional_hyperoctahedron(k)` = `k_cross_polytope(k)` 21. `four_dimensional_mgonal_pyramidal(m)` = `mgonal_pyramidal_of_the_second_order(m)` 22. `four_dimensional_square_pyramidal` 23. `four_dimensional_pentagonal_pyramidal` 24. `four_dimensional_hexagonal_pyramidal` 25. `four_dimensional_heptagonal_pyramidal` 26. `four_dimensional_octagonal_pyramidal` 27. `four_dimensional_nonagonal_pyramidal` 28. `four_dimensional_decagonal_pyramidal` 29. `four_dimensional_hendecagonal_pyramidal` 30. `four_dimensional_dodecagonal_pyramidal` 31. `k_dimensional_mgonal_pyramidal(k, m)` = `mgonal_pyramidal_of_the_k_2_th_order(k, m)` 32. `five_dimensional_mgonal_pyramidal(m)` 33. `five_dimensional_square_pyramidal` 34. `five_dimensional_pentagonal_pyramidal` 35. `five_dimensional_hexagonal_pyramidal` 36. `five_dimensional_heptagonal_pyramidal` 37. `five_dimensional_octagonal_pyramidal` 38. `six_dimensional_mgonal_pyramidal(m)` 39. `six_dimensional_square_pyramidal` 40. `six_dimensional_pentagonal_pyramidal` 41. `six_dimensional_hexagonal_pyramidal` 42. `six_dimensional_heptagonal_pyramidal` 43. `six_dimensional_octagonal_pyramidal` 44. `centered_biquadratic` 45. `k_dimensional_centered_hypercube(k)` 46. `five_dimensional_centered_hypercube` 47. `six_dimensional_centered_hypercube` 48. `centered_polytope` 49. `k_dimensional_centered_hypertetrahedron(k)` 50. `five_dimensional_centered_hypertetrahedron` 51. `six_dimensional_centered_hypertetrahedron` 52. `centered_hyperoctahedral` = `orthoplex` 53. `nexus(k)` 54. `k_dimensional_centered_hyperoctahedron(k)` 55. `five_dimensional_centered_hyperoctahedron` 56. `six_dimensional_centered_hyperoctahedron` 57. `generalized_pentatope(start_num = 0)` 58. `generalized_k_dimensional_hypertetrahedron(k = 5, start_num = 0)` 59. `generalized_biquadratic(start_num = 0)` 60. `generalized_k_dimensional_hypercube(k = 5, start_num = 0)` 61. `generalized_hyperoctahedral(start_num = 0)` 62. `generalized_k_dimensional_hyperoctahedron(k = 5, start_num = 0)` 63. `generalized_hyperdodecahedral(start_num = 0)` 64. `generalized_hypericosahedral(start_num = 0)` 65. `generalized_polyoctahedral(start_num = 0)` 66. `generalized_k_dimensional_mgonal_pyramidal(k, m, start_num = 0)` 67. `generalized_k_dimensional_centered_hypercube(k, start_num = 0)` 68. `generalized_nexus(k, start_num = 0)`

Zoo Figurate Numbers

Show 2 sequences of the ZooFigurateNum class 1. `cuban_prime` 2. `pell`

Errata for Figurate Numbers (2012)

Show errata and corrections This section lists the errata and corrections for the book *Figurate Numbers (2012)* by Michel Deza and Elena Deza. If you find any errors in the content, please feel free to contribute corrections. - Chapter 1, formula in the table on page 6 says: | Name | Formula | | | ------ | ------------------- | --- | | Square | `1/2 (n^2 - 0 * n)` | | It should be: | Name | Formula | | | ------ | -------------------- | --- | | Square | `1/2 (2n^2 - 0 * n)` | | - Chapter 1, formula in the table on page 51 says: | Name | Formula | | | -------------------- | ------------------ | --------------------- | | Cent. icosihexagonal | `1/3n^2 - 13n + 1` | `546, 728, 936, 1170` | It should be: | Name | Formula | | | -------------------- | ----------------- | --------------------- | | Cent. icosihexagonal | `13n^2 - 13n + 1` | `547, 729, 937, 1171` | - Chapter 1, formula in the table on page 51 says: | Name | Formula | | | --------------------- | ------- | ----- | | Cent. icosiheptagonal | | `972` | It should be: | Name | Formula | | | --------------------- | ------- | ----- | | Cent. icosiheptagonal | | `973` | - Chapter 1, formula in the table on page 51 says: | Name | Formula | | | -------------------- | ------- | ---- | | Cent. icosioctagonal | | `84` | It should be: | Name | Formula | | | -------------------- | ------- | ---- | | Cent. icosioctagonal | | `85` | - Chapter 1, page 65 (polite numbers) says: > `inpolite numbers` It should read: > `impolite numbers` - Chapter 1, formula (truncated centered pentagonal numbers) on page 72 says: > `TCSS_5(n) = (35n^2 - 55n) / 2 + 3` It should be: > `TCSS_5(n) = (35n^2 - 55n) / 2 + 11` - Chapter 2, formula of octagonal pyramidal number on page 92 says: > `n(n+1)(6n-1) / 6` It should be: > `n(n+1)(6n-3) / 6` - Chapter 2, page 140 says: > centered square pyramidal numbers are 1, 6, 19, 44, 85, 111, 146, 231, ... This sequence must exclude the number 111: > centered square pyramidal numbers are 1, 6, 19, 44, 85, ~~111~~, 146, 231, ... - Chapter 2, page 155 (generalized centered tetrahedron numbers) says: > `S_3^3(n) = ((2n - 1)(n^2 + n + 3)) / 3` Formula must have a negative sign: > `S_3^3(n) = ((2n - 1)(n^2 - n + 3)) / 3` - Chapter 2, page 156 (generalized centered square pyramid numbers) says: > `S_4^3(n) = ((2n - 1)(n^2 - n + 2)^2) / 3` Formula must write: > `S_4^3(n) = ((2n - 1)(n^2 - n + 2)) / 2` - Chapter 3, page 188 (hyperoctahedral numbers) says: > `hexadecahoron numbers` It should read: > `hexadecachoron numbers` - Chapter 3, page 190 (hypericosahedral numbers) says: > `hexacisihoron numbers` It should read: > `hexacosichoron numbers`

Contributing

FigurateNum is currently under development, and we warmly invite your contributions. Just fork the project and then submit a pull request:

  • Sequences from Chapters 1, 2, and 3 of the book
  • New sequences not included in the book: If you have new sequences, please provide the source.
  • Tests, documentation and errata in the book

When making commits, please use the following conventional prefixes to indicate the nature of the changes: feat, refactor, fix, docs, and test.

Owner

  • Name: Edgar Delgado Vega
  • Login: edelveart
  • Kind: user
  • Location: Lima-Perú

Hi, I'm Edgar, a person motivated by art and technology. My interests are mathematical music theory and live coding (Sonic Pi).

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software and its documentation, please cite it as below."
authors:
  - family-names: "Delgado Vega"
    given-names: "Edgar Armando"
    orcid: "https://orcid.org/0000-0002-9672-9087"
title: "Figurate Numbers for Python"
version: 2.1.0
doi:
date-released: 2024-07-08
url: "https://github.com/edelveart/figuratenum"

GitHub Events

Total
  • Release event: 10
  • Watch event: 3
  • Delete event: 1
  • Push event: 93
  • Create event: 11
Last Year
  • Release event: 10
  • Watch event: 3
  • Delete event: 1
  • Push event: 93
  • Create event: 11

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 142 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 15
  • Total maintainers: 1
pypi.org: figuratenum

Generate 235 infinite figurate number sequences across multiple dimensions for mathematical research, applications, and exploration in Python.

  • Versions: 15
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 142 Last month
Rankings
Dependent packages count: 10.6%
Average: 35.3%
Dependent repos count: 59.9%
Maintainers (1)
Last synced: 6 months ago

Dependencies

pyproject.toml pypi
setup.py pypi