Skip to main content

☆ HyperTiler

HyperTiler makes creating patches of quasiperiodic tilings easy!

GitHub release

Documentation Status

DOI

🌟 Highlights

  • Create ANY dual-grid tiling defined by custom parameters.
  • Generate tilings using established substitution rules, or make your own!
  • Save tilings, tiling properties, and perform some basic spatial analysis.

ℹ️ Overview

My goal for HyperTiler was to create a friendly low/no-code tool that allows anyone to generate quasiperiodic tilings. It's aimed at tiling enthusiasts both inside and outside of academia: you can just use it to create nice patterns, or to create input files for theoretical simulation.

You can make tilings one of two ways: the dual-grid method, or by substitution rules. Both have an endless amount of flexibility, based on the input parameters.

🚀 Usage

Recommended: Read the docs: Documentation Status

Dual-grid mode

Dual-grid mode builds tilings using de Bruijn's method from two sets of vectors: tiling and grid. In default mode, you shape the tiling by adjusting the number of vectors, the number of grids (which sets the size of the tiling patch), and the grid shifts.

Advanced mode drops those defaults and lets you customise every vector individually - a far more powerful way to design fully custom tilings.

The dual grid window of HyperTiler in advanced mode, with a Penrose tiling example

Substitution mode

Substitution mode builds tilings with substitution rules that are supplied in the form of a structured svg file. Tilings can be initiated with a single tile, or a seed svg file with an initial design.

The example svgs folder contains some sample files, otherwise, see the HyperTiler guide on how to create your own svgs.

The substitution window of HyperTiler, with the octagonal m,n = 1 tiling

Analysis

HyperTiler comes with a couple of tools for the analysis of the generated tiling - independent of which mode created it.

It can numerically compute the fast Fourier transform of the tiling's point set, and identify every distinct vertex type (or star) present. For anyone wanting to simulate models on a tiling, a network builder also produces a connectivity network with nearest-neighbour, next-nearest, and higher-order shell information. alt text

alt text

⬇️ Installation

Pick whichever fits how you like to work. Every method below needs Python 3.12+ installed, except the standalone executable.

No code

  1. Download the build for your platform:
  2. Unzip and run.

PyPI package

pip install hypertiler

Then launch it with (from that same environment - activate it first if you used a virtualenv):

hypertiler

Git clone

git clone https://github.com/hyper-aperiodic/HyperTiler.git

Then for Windows, double-click scripts/setup.bat once, then scripts/run.bat each time after in the same directory. For Mac/Linux:

bash setup.sh

then

bash run.sh

Download as a zip

Download the repo as a zip - no git knowledge required. For Windows, double-click scripts/setup.bat once, then scripts/run.bat each time after in the same directory. For Mac/Linux:

bash setup.sh

then

bash run.sh

✍️ Authors

Sam Coates - University of Liverpool

💭 Use, Feedback, and Contributing

Used HyperTiler for some academic work? Cite me! DOI

Have an idea for a contribution? Want to point out any bugs?

Start a discussion!

Or just email!

✍🏻 Acknowledgements

Work funded by EPSRC Grant No. EP/X011984/1.

With thanks to Ellie Weightman for stress-testing!

I started development of this code under the above grant, back in 2023. So the conceptualisation, application of mathematical methodology, design desisions, and initial back-breaking development of the codebase is all human-driven.

Claude Code was used to refactor, spell-check, organise, and polish off the UI.

Metadata

Release files for hypertiler 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hypertiler 1.0.0
File Size Uploaded
hypertiler-1.0.0.tar.gz 61.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hypertiler 1.0.0
File Interpreter ABI Platform
hypertiler-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 128.2 kB

Release files / hypertiler-1.0.0.tar.gz

Download URL hypertiler-1.0.0.tar.gz
Size 61.4 kB
Tags Source
SHA-256 checksum
How to use checksums
1fd6c69f16da1032e691b3b0b520de3276e2853746c77666d776a1ce24fe71b4
BLAKE2b-256 checksum
How to use checksums
3f0b6eacc664dfed7996c116bac99aa8577cedda24bfb9adfd4c246d68078f7c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.9

Release files / hypertiler-1.0.0-py3-none-any.whl

Download URL hypertiler-1.0.0-py3-none-any.whl
Size 66.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
70e14fec9b40445cb688ecf67fefa2216ffe1be5b7ce7207896e30a2628cb02e
BLAKE2b-256 checksum
How to use checksums
3e2ccb63f7bb4b3800df30c4d8c3ab0b2a0199eeeda9b2183696750e6295ffd6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.9

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page