hypertiling tagshttps://git.physik.uni-wuerzburg.de/hypertiling/hypertiling/-/tags2024-01-05T10:13:48Zhttps://git.physik.uni-wuerzburg.de/hypertiling/hypertiling/-/tags/v1.3.4v1.3.4<ul data-sourcepos="1:1-5:25" dir="auto">
<li data-sourcepos="1:1-1:319">unified iterator behaviour: In this update we unify the iterator behaviour for tilings constructed with any kernel. Iteration will now return arrays of length p+1, which contain the coordinates of the corresponding cell center and its p outer vertices. Accessing a tiling element by index will also return this array.</li>
<li data-sourcepos="2:1-2:248">new getter functions: we extend the existing getter functions by providing consistent behaviour for <code data-sourcepos="2:104-2:113">get_center</code> and <code data-sourcepos="2:121-2:132">get_vertices</code> all accross the tiling kernels and we introduce the <code data-sourcepos="2:188-2:198">get_polygon</code> method which returns a dedicated polygon object.</li>
<li data-sourcepos="3:1-3:55">all examples have been adjusted to the new interfaces</li>
<li data-sourcepos="4:1-4:17">more unit tests</li>
<li data-sourcepos="5:1-5:25">several minor bug fixes</li>
</ul>2024-01-05T10:13:48ZManuel Schrauthmanuel.schrauth@iis.fraunhofer.dehttps://git.physik.uni-wuerzburg.de/hypertiling/hypertiling/-/tags/v1.3.3v1.3.3<p data-sourcepos="1:1-1:380" dir="auto">PyPI installation was broken since we introduced the new build system (pyproject.toml replaces setup.py) in v1.3.1. This update is supposed to fix all related issues. This requires us to adjust the project layout slightly and introduce a top-level folder 'src' which contains the actual source code. There should be no effect of this change on the usage of the package whatsoever.</p>
<p data-sourcepos="3:1-3:6" dir="auto">Other:</p>
<ul data-sourcepos="4:1-4:50" dir="auto">
<li data-sourcepos="4:1-4:50">fix matplotlib compatibility with recent version</li>
</ul>2023-12-08T09:39:53ZManuel Schrauthhttps://git.physik.uni-wuerzburg.de/hypertiling/hypertiling/-/tags/v1.3.2v1.3.2<ul data-sourcepos="1:1-1:37" dir="auto">
<li data-sourcepos="1:1-1:37">Fix installation on Windows systems</li>
</ul>2023-10-26T17:47:52ZFlorian Gothhttps://git.physik.uni-wuerzburg.de/hypertiling/hypertiling/-/tags/v1.3.1v1.3.1<p data-sourcepos="1:1-1:294" dir="auto">We are updating the build system of hypertiling, simultaneously with the publication of our release manuscript on the arXiv preprint server. As a user, you should not notice any changes as a result of this update. Owed to the new configuration, hypertiling can now be installed with numba using</p>
<div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="3:1-5:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">pip install hypertiling[numba]</span></code></pre>
<copy-code></copy-code>
</div>
<p data-sourcepos="6:1-6:2" dir="auto">or</p>
<div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="7:1-9:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">pip install .[numba]</span></code></pre>
<copy-code></copy-code>
</div>
<p data-sourcepos="11:1-11:87" dir="auto">for a local installation, after the latest version has been cloned from our repository.</p>
<p data-sourcepos="13:1-13:19" dir="auto"><strong data-sourcepos="13:1-13:19">Further changes</strong></p>
<ul data-sourcepos="15:1-18:31" dir="auto">
<li data-sourcepos="15:1-15:11">bug fixes</li>
<li data-sourcepos="16:1-16:19">improved pipeline</li>
<li data-sourcepos="17:1-17:17">more unit tests</li>
<li data-sourcepos="18:1-18:31">introduction of test coverage</li>
</ul>2023-09-20T20:49:08ZFlorian Gothhttps://git.physik.uni-wuerzburg.de/hypertiling/hypertiling/-/tags/v1.3v1.3<p data-sourcepos="1:1-1:17" dir="auto"><strong data-sourcepos="1:1-1:17">Release Notes</strong></p>
<p data-sourcepos="3:1-3:404" dir="auto">An important milestone in the development of algorithms for the construction of hyperbolic tilings is the combinatorial method presented by Douglas Dunham and coworkers in a series of publications in the early 1980s [1,2]. With hypertiling v1.3, we not only bring this influential algorithm into the package, but also provide modern implementations, based on Ref. [3]. Specifically, the new features are:</p>
<ul data-sourcepos="6:1-11:0" dir="auto">
<li data-sourcepos="6:1-7:0">
<p data-sourcepos="6:3-6:273">New kernel: <strong data-sourcepos="6:15-6:32">DUN07 (Dunham)</strong>: An modern implementation of the construction algorithm by Douglas Dunham. Recursive calls to a hierarchical tree structure are used to build duplicate free tilings in hyperboloid coordinates rather than in the Poincare disk representation.</p>
</li>
<li data-sourcepos="8:1-9:0">
<p data-sourcepos="8:3-8:140">New kernel: <strong data-sourcepos="8:15-8:34">DUN07X (DunhamX)</strong>: A heavily optimized variant of <code data-sourcepos="8:69-8:73">DUN07</code>, with a performance increase of more than one order of magnitude.</p>
</li>
<li data-sourcepos="10:1-11:0">
<p data-sourcepos="10:3-10:192">The previously existing, experimental implementation of Dunham's algorithm becomes deprecated and is renamed to <strong data-sourcepos="10:115-10:138">DUN86 (DunhamLegacy)</strong>. It will be removed in one of the following releases.</p>
</li>
</ul>
<p data-sourcepos="12:1-12:121" dir="auto">Owed to the construction mechanism, the <code data-sourcepos="12:42-12:50">get_layer</code> function is not available for tilings created by the two new kernels.</p>
<p data-sourcepos="15:1-15:19" dir="auto"><strong data-sourcepos="15:1-15:19">Further changes</strong></p>
<ul data-sourcepos="17:1-22:0" dir="auto">
<li data-sourcepos="17:1-17:38">several bug fixes across the package</li>
<li data-sourcepos="18:1-18:33">minor performance optimizations</li>
<li data-sourcepos="19:1-19:24">improved documentation</li>
<li data-sourcepos="20:1-20:23">new example notebooks</li>
<li data-sourcepos="21:1-22:0">auto-import submoduls</li>
</ul>
<p data-sourcepos="23:1-23:10" dir="auto">References</p>
<blockquote data-sourcepos="24:2-26:20" dir="auto">
<p data-sourcepos="24:4-26:20">[1] D. Dunham, J. Lindgren and D. Witte, Creating repeating hyperbolic patterns, In Pro-
ceedings of the 8th annual conference on Computer graphics and interactive techniques,
pp. 215–223 (1981)</p>
</blockquote>
<blockquote data-sourcepos="28:1-28:83" dir="auto">
<p data-sourcepos="28:3-28:83">[2] D. Dunham, Hyperbolic symmetry, In Symmetry, pp. 139 – 153. Pergamon (1986)</p>
</blockquote>
<blockquote data-sourcepos="30:1-31:27" dir="auto">
<p data-sourcepos="30:3-31:27">[3] D. Dunham, An algorithm to generate repeating hyperbolic patterns, the Proceedings of
ISAMA pp. 111–118 (2007).</p>
</blockquote>2023-08-29T05:06:41ZManuel Schrauthhttps://git.physik.uni-wuerzburg.de/hypertiling/hypertiling/-/tags/v1.2v1.2<p data-sourcepos="1:1-1:17" dir="auto"><strong data-sourcepos="1:1-1:17">Release notes</strong></p>
<p data-sourcepos="3:1-3:79" dir="auto">In hypertiling v1.2 we are proud to introduce a number of exciting new features</p>
<ul data-sourcepos="5:1-6:0" dir="auto">
<li data-sourcepos="5:1-6:0">The <strong data-sourcepos="5:7-5:26">hyperbolic graph</strong>:<br> What is the difference between a <code data-sourcepos="5:67-5:82">HyperbolicTiling</code> and a <code data-sourcepos="5:92-5:106">HyperbolicGraph</code>? In many application one is interested in the adjacency relations between the cells of a tiling, rather than in their coordinates. Neighborhood relations can be constructed from an existing tiling using the <code data-sourcepos="5:317-5:329">get_nbrs_list</code> method. However, in order to avoid this detour, we introduce kernels which construct <strong data-sourcepos="5:417-5:424">only</strong> the graph structure of a hyperbolic lattice, independent from a coordinate representation of cells. These objects yield reduced features and functionality compared to a full <code data-sourcepos="5:601-5:616">HyperbolicTiling</code>. A tiling on the other hand <em data-sourcepos="5:647-5:651">can</em>, but not necessarily needs to provide graph relations between its individual cells. Even though tilings and graphs are different objects, neighbors are accessed in the same way, using the following two methods</li>
</ul>
<div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="7:1-11:3" data-canonical-lang="python" class="code highlight js-syntax-highlight language-python" lang="python" v-pre="true"><code><span id="LC1" class="line" lang="python"> <span class="c1"># let T be a HyperbolicTiling or HyperbolicGraph</span></span>
<span id="LC2" class="line" lang="python"> <span class="n">T</span><span class="p">.</span><span class="nf">get_nbrs</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="c1"># return neighbors of cell i</span></span>
<span id="LC3" class="line" lang="python"> <span class="n">T</span><span class="p">.</span><span class="nf">get_nbrs_list</span><span class="p">()</span> <span class="c1"># return neighbors of all cells</span></span></code></pre>
<copy-code></copy-code>
</div>
<ul data-sourcepos="13:1-24:0" dir="auto">
<li data-sourcepos="13:1-14:0">
<p data-sourcepos="13:3-13:414">New kernel: <strong data-sourcepos="13:15-13:51">GRG (generative reflection graph)</strong>: <br>This is a variant of the GR kernel, which constructs neighborhood relations already during the construction of the lattice. Cell coordinates are not stored. It is hence a <code data-sourcepos="13:230-13:234">Graph</code> kernel. The kernel follows the GR construction principles. Only one symmetry sector is explicitly stored, whereas any information outside this sector will be generated on demand.</p>
</li>
<li data-sourcepos="15:1-16:0">
<p data-sourcepos="15:3-15:450">New kernel: <strong data-sourcepos="15:15-15:59">GRGS (generative reflection graph static)</strong>:<br> This is a static variant of the GRG kernel. Adjacency relations for all cells are stored explicitly. No sector construction and and no on-demand generation is used. Hence the memory requirement is about a factor p larger compared to GRG. Nonetheless GRGS is still blazing fast and therefore particularly suited for large-scale scientific simulations of systems with local interactions.</p>
</li>
<li data-sourcepos="17:1-18:0">
<p data-sourcepos="17:3-17:384">New kernel: <strong data-sourcepos="17:15-17:47">SRG (static rotational graph)</strong>:<br> Currently in a testing state, this kernel will become the default kernel in a future release. It uses the construction principle of the SR (static rotational) kernel family and is able to manipulate existing lattices by dynamically adding, removing and filter cells. A demonstration notebook is already available. More coming soon!</p>
</li>
<li data-sourcepos="19:1-20:0">
<p data-sourcepos="19:3-19:146">We decided to rename the SR (static rotational) kernel to SRS (static rotational sector), which becomes necessary due to the introduction of SRG</p>
</li>
<li data-sourcepos="21:1-22:0">
<p data-sourcepos="21:3-21:250">hypertiling now supports <strong data-sourcepos="21:28-21:47">verbosity levels</strong> for printed output. Available rules are "Warning", "Status", "Debug" and "Develop", where "Warning" is set default. The verbosity can be adjusted globally using the <code data-sourcepos="21:215-21:233">set_verbosity_level</code> helper function</p>
</li>
<li data-sourcepos="23:1-24:0">
<p data-sourcepos="23:3-23:89">Kernels can now be selected by their abbreviation as well as by their class name, e.g.:</p>
</li>
</ul>
<div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="25:1-28:3" data-canonical-lang="python" class="code highlight js-syntax-highlight language-python" lang="python" v-pre="true"><code><span id="LC1" class="line" lang="python"> <span class="kn">from</span> <span class="n">hypertiling</span> <span class="kn">import</span> <span class="n">TilingKernels</span></span>
<span id="LC2" class="line" lang="python"> <span class="n">T</span> <span class="o">=</span> <span class="nc">HyperbolicTiling</span><span class="p">(</span><span class="mi">7</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span> <span class="n">kernel</span><span class="o">=</span><span class="n">TilingKernels</span><span class="p">.</span><span class="n">GenerativeReflection</span><span class="p">)</span></span></code></pre>
<copy-code></copy-code>
</div>
<p data-sourcepos="30:1-30:19" dir="auto"><strong data-sourcepos="30:1-30:19">Further changes</strong></p>
<ul data-sourcepos="32:1-40:0" dir="auto">
<li data-sourcepos="32:1-32:30">minor fixes in the GR kernel</li>
<li data-sourcepos="33:1-33:21">improved unit tests</li>
<li data-sourcepos="34:1-34:55">adjusted kernel class names (remove Kernel... prefix)</li>
<li data-sourcepos="35:1-35:21">adjusted file names</li>
<li data-sourcepos="36:1-36:33">tidied up abstract base classes</li>
<li data-sourcepos="37:1-37:38">improved naming of utility functions</li>
<li data-sourcepos="38:1-40:0">Tilings and Graphs are required to implement <strong data-sourcepos="38:48-38:54">len</strong> method</li>
</ul>
<p data-sourcepos="41:1-41:18" dir="auto"><strong data-sourcepos="41:1-41:18">Coming up soon</strong></p>
<ul data-sourcepos="43:1-45:23" dir="auto">
<li data-sourcepos="43:1-43:33">SRG kernel feature presentation</li>
<li data-sourcepos="44:1-44:18">path animations!</li>
<li data-sourcepos="45:1-45:23">new example notebooks</li>
</ul>2023-03-23T12:24:57ZManuel Schrauthhttps://git.physik.uni-wuerzburg.de/hypertiling/hypertiling/-/tags/v1.1.3v1.1.3<p data-sourcepos="1:1-1:17" dir="auto"><strong data-sourcepos="1:1-1:17">Release Notes</strong></p>
<p data-sourcepos="3:1-3:230" dir="auto">This release includes several performance and stability optimizations of the static rotational (SR) kernel, as well as a clearer internal code design regarding the duplicate containers. Most important effects of these changes are:</p>
<ul data-sourcepos="5:1-7:0" dir="auto">
<li data-sourcepos="5:1-5:109">the static rotational improved (SRI) kernel is from now on only labelled SR. It remains the default kernel.</li>
<li data-sourcepos="6:1-7:0">the former static rotational (SR) kernel is now deprecated and labelled as SRL (legacy). It will be removed in one of the upcoming releases.</li>
</ul>
<p data-sourcepos="8:1-8:19" dir="auto"><strong data-sourcepos="8:1-8:19">Further changes</strong></p>
<ul data-sourcepos="10:1-13:18" dir="auto">
<li data-sourcepos="10:1-10:44">performance optimizations in the GR kernel</li>
<li data-sourcepos="11:1-11:43">get_nbrs method for SR kernel was missing</li>
<li data-sourcepos="12:1-12:24">updated demo notebooks</li>
<li data-sourcepos="13:1-13:18">several bugfixes</li>
</ul>2022-12-02T10:27:32ZManuel Schrauthhttps://git.physik.uni-wuerzburg.de/hypertiling/hypertiling/-/tags/v1.1.2v1.1.2<p data-sourcepos="1:1-1:17" dir="auto"><strong data-sourcepos="1:1-1:17">Release Notes</strong></p>
<ul data-sourcepos="3:1-7:18" dir="auto">
<li data-sourcepos="3:1-3:120">improved SVG drawing capabilites (now more flexible, robust and compatible with GR kernel; introduce SVG string class)</li>
<li data-sourcepos="4:1-4:43">debug and clean up Jupyter demo notebooks</li>
<li data-sourcepos="5:1-5:56">path animations are now available (in a testing state)</li>
<li data-sourcepos="6:1-6:38">hypertiling now has a CHANGELOG file</li>
<li data-sourcepos="7:1-7:18">several bugfixes</li>
</ul>2022-11-02T15:18:32ZManuel Schrauthhttps://git.physik.uni-wuerzburg.de/hypertiling/hypertiling/-/tags/v1.1.1v1.1.1<p data-sourcepos="1:1-1:17" dir="auto"><strong data-sourcepos="1:1-1:17">Release Notes</strong></p>
<ul data-sourcepos="3:1-9:18" dir="auto">
<li data-sourcepos="3:1-3:297">
<strong data-sourcepos="3:3-3:20">Autogeneration</strong>: Tilings are now immediately constructed after their initilization, resulting in a one-liner <code data-sourcepos="3:116-3:142">T = HyperbolicTiling(7,3,4)</code>. The additional generate method which was formerly required by some kernels to construct the tiling after the initialization, is now executed on default.</li>
<li data-sourcepos="4:1-4:180">Autogeneration keyword argument: In case an autogeneration is not intended, it can be switched off using the new keyword argument <code data-sourcepos="4:134-4:179">T = HyperbolicTiling(7,3,4,autogenerate=False)</code>
</li>
<li data-sourcepos="5:1-5:97">Unify names of kernel-specific neighbour functions: They all go under the prefix "get_nbrs" now</li>
<li data-sourcepos="6:1-6:120">More consistent naming convention of plot functions, such as <code data-sourcepos="6:65-6:85">convert_edges_to_arcs</code> and <code data-sourcepos="6:93-6:119">convert_polygons_to_patches</code>
</li>
<li data-sourcepos="7:1-7:58">Providing a caching option improves library import speed</li>
<li data-sourcepos="8:1-8:26">Clean up transformations</li>
<li data-sourcepos="9:1-9:18">Several bugfixes</li>
</ul>2022-10-25T06:23:08ZFlorian Gothhttps://git.physik.uni-wuerzburg.de/hypertiling/hypertiling/-/tags/v1.1v1.1<p data-sourcepos="1:1-1:17" dir="auto"><strong data-sourcepos="1:1-1:17">Release Notes</strong></p>
<ul data-sourcepos="2:1-6:0" dir="auto">
<li data-sourcepos="2:1-2:352">We are proud to present the <strong data-sourcepos="2:31-2:67">Generative Reflection (GR) kernel</strong>. Owing to a novell, sophisticated tiling construction algorithm and its intrinsic generative nature, where only one symmetry sector of the tiling is held stored, the GR kernel is extremely fast and at the same time significantly less memory consuming compared to our existing kernels.</li>
<li data-sourcepos="3:1-3:154">
<strong data-sourcepos="3:3-3:20">New kernel API</strong>: Introducing the GR kernel made is necessary to establish a number of new interfaces, which can be used to access tiling parameters.</li>
<li data-sourcepos="4:1-4:233">
<strong data-sourcepos="4:3-4:32">Homogenized graph routines</strong>: Since every kernel comes with it's own graph/neighbour routines, we homogonized those interfaces, too. Additionally, the refactored <code data-sourcepos="4:168-4:171">find</code> routine in the neighbour module can be used with any kernel.</li>
<li data-sourcepos="5:1-6:0">hyperanimator: currently in a testing state, this class provides a simple way to realize <strong data-sourcepos="5:92-5:109">animated plots</strong> on hyperbolic lattices. Watch out for even more animation features in upcoming releases</li>
</ul>
<p data-sourcepos="7:1-7:19" dir="auto"><strong data-sourcepos="7:1-7:19">Further Changes</strong></p>
<ul data-sourcepos="8:1-13:18" dir="auto">
<li data-sourcepos="8:1-8:90">renaming existing kernels to static rotational (SR) and static rotational improved (SRI)</li>
<li data-sourcepos="9:1-9:44">introduction of abstract kernel base class</li>
<li data-sourcepos="10:1-10:48">several bugfixes in Dunham legacy kernel (DUN)</li>
<li data-sourcepos="11:1-11:69">introduction of numba dectorator in order to reduce code complexity</li>
<li data-sourcepos="12:1-12:16">new unit tests</li>
<li data-sourcepos="13:1-13:18">several bugfixes</li>
</ul>2022-10-04T11:43:22ZManuel Schrauth