Skip to main content

An API to animate the Simon attractor

Project description

Attractor Tools

Attractor-tools is a Python module for animating the Simon fractal using efficient rendering. It provides a clean API to generate frames, assinging colormaps, and export visualizations as videos.


✨ Features

  • Animate the Simon fractal with customizable parameters
  • NumPy, Numba and Multiprocessing for performance
  • Automate Parameters using interpolation between a set of points

Example:

alt text

📦 Installation

pip install attractor-tools

Example usage

from attractor import sinspace, Performance_Renderer, ColorMap

def main():
    # array with values from lower to upper using a sinewave (p=1)
    # a, b are the initial values of the system used in the attractor
    # To animate this effectively, at least one of these parameters should change each frame
    a = sinspace(0.32, 0.38, 100)

    # Main rendering class
    # Use this when rendering a video with multiple frames.
    # For single-frame rendering, this class is overkill — use 'render_frame(...)' instead.
    renderer = Performance_Renderer(
        a=a,
        b=1.5,
        colormap=ColorMap("viridis"),
        frames=len(a),
        fps=10
    )

    # Important: 'a' is an array of values, one per frame (a[i] used for frame i)
    # So we need to mark it as non-static to allow per-frame variation
    renderer.set_static("a", False)

    # Set how many processes/threads to use (via multiprocessing.Pool)
    # Use None for unlimited; here we use 4 threads with a chunk size of 4
    renderer.start_render_process("./your_filename.mp4", threads=4, chunksize=4)

if __name__ == "__main__":
    # see all colormaps available
    print(ColorMap.colormaps())
    main()

Automations

def keyframe_example():
    # generic animation option (20 frames)
    opts = Option.from_time(
        seconds=4,
        fps=5
    )

    # KeyframeInterpolator is similar to linspace, sinspace, sqaurespace, ...
    # The difference you can define a set of point: point(value, frame)
    # between this points linspace is used to interpolate between those
    interpolation = KeyframeInterpolator(opts, 0.32, 0.32)
    interpolation.add_keyframe(Point(frame=5, value=0.4))
    interpolation.add_keyframe(Point(frame=10, value=0.4))
    interpolation.add_keyframe(Point(frame=15, value=0.32))

    a = interpolation.to_array()

    renderer = Performance_Renderer(
        opts=opts,
        a=a,
        b=1.5,
        iterations=3_000_000
    )
    renderer.set_static("a", False)
    renderer.show_demo(nth_frame=1)

Generic mp4

def generic_example():
    opts = Option.from_time(
        seconds=4,
        fps=5
    )

    renderer = Performance_Renderer(
        opts=opts,
        a=0.35,
        b=1.5,
        iterations=3_000_000
    )  
    # Set generic flag to save image in grayscale
    renderer.start_render_process("demo.mp4", save_as_generic=True)

    # after rendering you can apply a colormap (still takes some time)
    # make sure to use the same fps and frames as the rendering
    color_generic("demo.mp4", ColorMap("viridis"), opts.fps, frames=opts.frames)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

attractor_tools-0.3.0.tar.gz (25.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

attractor_tools-0.3.0-py3-none-any.whl (29.4 kB view details)

Uploaded Python 3

File details

Details for the file attractor_tools-0.3.0.tar.gz.

File metadata

  • Download URL: attractor_tools-0.3.0.tar.gz
  • Upload date:
  • Size: 25.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for attractor_tools-0.3.0.tar.gz
Algorithm Hash digest
SHA256 f43eca2ea75b92ff9f2546f40a15f262b2359b16695563954c473130105d5e8a
MD5 fd9e5da0ed1faf319db0159975213caf
BLAKE2b-256 ec0d4340699e92b5bc4f8a3195a4110b9b5215205dad97a0d5c490367f2bc32d

See more details on using hashes here.

File details

Details for the file attractor_tools-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for attractor_tools-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6b1d18a6ceb6d880d2481155c170a04833ff154939443721e613d14badc11943
MD5 90f5aa7c036e1e9554b1a22f37a5d8c0
BLAKE2b-256 53148f58fdbcf2544c147d19ab91cf6ae714d760d3fc28d37966bb027aa45737

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page