Generate 235 infinite figurate number sequences across multiple dimensions for mathematical research, applications, and exploration in Python.
Project description
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.
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?
pip install figuratenum
Optional: Graphical Visualization (v2.1.0)
To enable 2D visualizations via the FigurateViz class (requires numpy and matplotlib), install the optional dependencies:
pip install figuratenum[figurate-viz]
Centered Hexagonal Pyramidal
Centered Decagonal Pyramidal
5D Hypercube
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:
- 79 Plane figurate numbers →
PlaneFigurateNumclass — Explore on GitHub - 86 Space figurate numbers →
SpaceFigurateNumclass — Explore on GitHub - 68 Multidimensional figurate numbers →
MultidimensionalFigurateNumclass — Explore on GitHub - 2 Zoo figurate numbers →
ZooFigurateNumclass — Explore on GitHub
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]ortuple[int, ...]).
How to use?
1. Import and generate sequences with FigurateNum and related classes
from figuratenum import FigurateNum, MultidimensionalFigurateNum
# 1. General use: generate any figurate sequence via FigurateNum
seq = FigurateNum()
hyperdodecahedral_gen = seq.hyperdodecahedral()
print([next(hyperdodecahedral_gen) for _ in range(4)])
# Output: [1, 600, 4983, 19468]
# 2. Specialized classes: PlaneFigurateNum, SpaceFigurateNum,
# MultidimensionalFigurateNum, ZooFigurateNum
multi = MultidimensionalFigurateNum()
hypertetrahedron_gen = multi.k_dimensional_centered_hypertetrahedron(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
5D Hyperoctahedron
from figuratenum import FigurateNum as fgn
from figuratenum.figurate_viz.FigurateViz import FigurateViz
# Generate figurate numbers
seq_loop = fgn()
gen = seq_loop.five_dimensional_hyperoctahedron()
figuratenum_seq = [next(gen) for _ in range(704)]
# Create and draw the Gaussian plot
viz = FigurateViz(figuratenum_seq, figsize=(6, 6))
viz.gaussian_plot(
circ_color="m", bg_color="k", num_text=False,
num_color="g", ext_circle=True, rotate=-1
).draw()
# Export plots as .svg, .pdf, .png (matplotlib compatible),
# with options e.g., dpi, transparent, bbox_inches, pad_inches, etc.
viz.export_plot(
"figure1.svg", circ_color="m",
transparent=True, rotate=-1
)
3. Get sequence values easily with NumCollector
from figuratenum import NumCollector as nc, FigurateNum
gen = FigurateNum().pentatope()
print(nc.take_to_tuple(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
# - take_to_list(stop, start=0, step=1)
# - take_to_tuple(stop, start=0, step=1)
# - take_to_array(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
What Figurate Number Sequences are Implemented?
Plane Figurate Numbers
Show 79 sequences of the PlaneFigurateNum class
polygonaltriangularsquarepentagonalhexagonalheptagonaloctagonalnonagonaldecagonalhendecagonaldodecagonaltridecagonaltetradecagonalpentadecagonalhexadecagonalheptadecagonaloctadecagonalnonadecagonalicosagonalicosihenagonalicosidigonalicositrigonalicositetragonalicosipentagonalicosihexagonalicosiheptagonalicosioctagonalicosinonagonaltriacontagonalcentered_triangularcentered_square=diamondcentered_pentagonalcentered_hexagonalcentered_heptagonalcentered_octagonalcentered_nonagonalcentered_decagonalcentered_hendecagonalcentered_dodecagonal=starcentered_tridecagonalcentered_tetradecagonalcentered_pentadecagonalcentered_hexadecagonalcentered_heptadecagonalcentered_octadecagonalcentered_nonadecagonalcentered_icosagonalcentered_icosihenagonalcentered_icosidigonalcentered_icositrigonalcentered_icositetragonalcentered_icosipentagonalcentered_icosihexagonalcentered_icosiheptagonalcentered_icosioctagonalcentered_icosinonagonalcentered_triacontagonalcentered_mgonal(m)pronic=heteromecic = oblongpoliteimpolitecrossaztec_diamondpolygram(m)=centered_star_polygonal(m)pentagramgnomictruncated_triangulartruncated_squaretruncated_pronictruncated_centered_pol(m)=truncated_centered_mgonal(m)truncated_centered_triangulartruncated_centered_squaretruncated_centered_pentagonaltruncated_centered_hexagonal=truncated_hexgeneralized_mgonal(m, start_numb)generalized_pentagonal(start_numb)generalized_hexagonal(start_numb)generalized_centered_pol(m, start_numb)generalized_pronic(start_numb)
Space Figurate Numbers
Show 86 sequences of the SpaceFigurateNum class
m_pyramidal(m)triangular_pyramidalsquare_pyramidal=pyramidalpentagonal_pyramidalhexagonal_pyramidalheptagonal_pyramidaloctagonal_pyramidalnonagonal_pyramidaldecagonal_pyramidalhendecagonal_pyramidaldodecagonal_pyramidaltridecagonal_pyramidaltetradecagonal_pyramidalpentadecagonal_pyramidalhexadecagonal_pyramidalheptadecagonal_pyramidaloctadecagonal_pyramidalnonadecagonal_pyramidalicosagonal_pyramidalicosihenagonal_pyramidalicosidigonal_pyramidalicositrigonal_pyramidalicositetragonal_pyramidalicosipentagonal_pyramidalicosihexagonal_pyramidalicosiheptagonal_pyramidalicosioctagonal_pyramidalicosinonagonal_pyramidaltriacontagonal_pyramidaltriangular_tetrahedral[finite]triangular_square_pyramidal[finite]square_tetrahedral[finite]square_square_pyramidal[finite]tetrahedral_square_pyramidal[finite]cubictetrahedraloctahedraldodecahedralicosahedraltruncated_tetrahedraltruncated_cubictruncated_octahedralstella_octangulacentered_cuberhombic_dodecahedralhauy_rhombic_dodecahedralcentered_tetrahedron=centered_tetrahedralcentered_square_pyramid=centered_pyramidcentered_mgonal_pyramid(m)centered_pentagonal_pyramidcentered_hexagonal_pyramidcentered_heptagonal_pyramidcentered_octagonal_pyramidcentered_octahedroncentered_icosahedron=centered_cuboctahedroncentered_dodecahedroncentered_truncated_tetrahedroncentered_truncated_cubecentered_truncated_octahedroncentered_mgonal_pyramidal(m)centered_triangular_pyramidalcentered_square_pyramidalcentered_pentagonal_pyramidalcentered_heptagonal_pyramidalcentered_octagonal_pyramidalcentered_nonagonal_pyramidalcentered_decagonal_pyramidalcentered_hendecagonal_pyramidalcentered_dodecagonal_pyramidalcentered_hexagonal_pyramidal=hex_pyramidalhexagonal_prismmgonal_prism(m)generalized_mgonal_pyramidal(m, start_num)generalized_pentagonal_pyramidal(start_num)generalized_hexagonal_pyramidal(start_num)generalized_cubic(start_num)generalized_octahedral(start_num)generalized_icosahedral(start_num)generalized_dodecahedral(start_num)generalized_centered_cube(start_num)generalized_centered_tetrahedron(start_num)generalized_centered_square_pyramid(start_num)generalized_rhombic_dodecahedral(start_num)generalized_centered_mgonal_pyramidal(m, start_num)generalized_mgonal_prism(m, start_num)generalized_hexagonal_prism(start_num)
Multidimensional Figurate Numbers
Show 68 sequences of the MultidimensionalFigurateNum class
k_dimensional_hypertetrahedron(k)=k_hypertetrahedron(k)=regular_k_polytopic(k)=figurate_of_order_k(k)five_dimensional_hypertetrahedronsix_dimensional_hypertetrahedronk_dimensional_hypercube(k)=k_hypercube(k)five_dimensional_hypercubesix_dimensional_hypercubehypertetrahedral=pentachoron=pentatope=triangulotriangular=cell_5hypercube=octachoron=tesseract=biquadratic=cell_8hyperoctahedral=hexadecachoron=four_cross_polytope=four_orthoplex=cell_16hypericosahedral=hexacosichoron=polytetrahedron=tetraplex=cell_600hyperdodecahedral=hecatonicosachoron=dodecaplex=polydodecahedron=cell_120polyoctahedral=icositetrachoron=octaplex=hyperdiamond=cell_24four_dimensional_hyperoctahedronfive_dimensional_hyperoctahedronsix_dimensional_hyperoctahedronseven_dimensional_hyperoctahedroneight_dimensional_hyperoctahedronnine_dimensional_hyperoctahedronten_dimensional_hyperoctahedronk_dimensional_hyperoctahedron(k)=k_cross_polytope(k)four_dimensional_mgonal_pyramidal(m)=mgonal_pyramidal_of_the_second_order(m)four_dimensional_square_pyramidalfour_dimensional_pentagonal_pyramidalfour_dimensional_hexagonal_pyramidalfour_dimensional_heptagonal_pyramidalfour_dimensional_octagonal_pyramidalfour_dimensional_nonagonal_pyramidalfour_dimensional_decagonal_pyramidalfour_dimensional_hendecagonal_pyramidalfour_dimensional_dodecagonal_pyramidalk_dimensional_mgonal_pyramidal(k, m)=mgonal_pyramidal_of_the_k_2_th_order(k, m)five_dimensional_mgonal_pyramidal(m)five_dimensional_square_pyramidalfive_dimensional_pentagonal_pyramidalfive_dimensional_hexagonal_pyramidalfive_dimensional_heptagonal_pyramidalfive_dimensional_octagonal_pyramidalsix_dimensional_mgonal_pyramidal(m)six_dimensional_square_pyramidalsix_dimensional_pentagonal_pyramidalsix_dimensional_hexagonal_pyramidalsix_dimensional_heptagonal_pyramidalsix_dimensional_octagonal_pyramidalcentered_biquadratick_dimensional_centered_hypercube(k)five_dimensional_centered_hypercubesix_dimensional_centered_hypercubecentered_polytopek_dimensional_centered_hypertetrahedron(k)five_dimensional_centered_hypertetrahedronsix_dimensional_centered_hypertetrahedroncentered_hyperoctahedral=orthoplexnexus(k)k_dimensional_centered_hyperoctahedron(k)five_dimensional_centered_hyperoctahedronsix_dimensional_centered_hyperoctahedrongeneralized_pentatope(start_num = 0)generalized_k_dimensional_hypertetrahedron(k = 5, start_num = 0)generalized_biquadratic(start_num = 0)generalized_k_dimensional_hypercube(k = 5, start_num = 0)generalized_hyperoctahedral(start_num = 0)generalized_k_dimensional_hyperoctahedron(k = 5, start_num = 0)generalized_hyperdodecahedral(start_num = 0)generalized_hypericosahedral(start_num = 0)generalized_polyoctahedral(start_num = 0)generalized_k_dimensional_mgonal_pyramidal(k, m, start_num = 0)generalized_k_dimensional_centered_hypercube(k, start_num = 0)generalized_nexus(k, start_num = 0)
Zoo Figurate Numbers
Show 2 sequences of the ZooFigurateNum class
cuban_primepell
Note for Users
By default, FigurateNum uses optimized, mathematically equivalent versions that are significantly faster, especially for multidimensional figurate numbers. Incremental computation and precomputed values allow step-by-step results without recalculating everything. The original formulas from the book are available via the *_from_book() methods for reference and testing.
How to contribute?
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 (located at
docs/errata/errata-figuratenum.tex).
When making commits, please use the following conventional prefixes to indicate the nature of the changes: feat, refactor, fix, docs, and test.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file figuratenum-2.1.1.tar.gz.
File metadata
- Download URL: figuratenum-2.1.1.tar.gz
- Upload date:
- Size: 43.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ea22dedba1b55fe60066029adeaaac795c8cf3aa40fe5ab97482ad1ed84d38d
|
|
| MD5 |
210aacfbc8f97438a9d5d861bc93d9b1
|
|
| BLAKE2b-256 |
acf90a858b39d11b980082b1b84350ceec053e5aaf5407239a5395f7d52048f5
|
File details
Details for the file figuratenum-2.1.1-py3-none-any.whl.
File metadata
- Download URL: figuratenum-2.1.1-py3-none-any.whl
- Upload date:
- Size: 25.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
173aa5f59c768ae549f978a87598732b01c77138b19452b667cb492b6e497a9d
|
|
| MD5 |
ec5e59b93281335673d6aa51b92ac6f1
|
|
| BLAKE2b-256 |
3f1464635dd2f2fab562b564347d97f63c622a9cb850d14729ff69d0f445249d
|