Skip to main content

MANIM AUTOMATA

A Manim plugin that allows you to generate scenes with Finite State Machines and their inputs. The plugin will automatically generate these animations with minimal setup from the user.

This plugin has been funded by the University of Leeds.

YOUTUBE VIDEO EXAMPLE

Finite State Machine in Manim Nondeterminstic Finite State Machine in Manim

Notes

The manim-automata plugin currently relies on JFLAP files, future updates will enable the user to create automata without JFLAP. JFLAP is software for experimenting with formal languages topics.

Installation

To install manim-automata plugin run:

pip install manim-automata

To see which version of manim-automata you have:

manim-automata

or

pip list

Importing

To use manim-automata in your project, you can:

  • Add from manim_automata import * to your script. Once manim-automata has been imported, you can use the ManimAutomata class to create automata.

How To Use

class Automaton(MovingCameraScene):
    def construct(self):
        manim_automaton = ManimAutomaton(xml_file='your_jff_file.jff')
        
        #Adjust camera frame to fit ManimAutomaton in scene
        self.camera.frame_width = manim_automaton.width + 10
        self.camera.frame_height = manim_automaton.height + 10
        self.camera.frame.move_to(manim_automaton) 


        #Create an mobject version of input for the manim_automaton
        automaton_input = manim_automaton.construct_automaton_input("110011")

        #Position automaton_input on the screen to avoid overlapping.
        automaton_input.shift(LEFT * 2)
        automaton_input.shift(UP * 10)

        self.play(
                DrawBorderThenFill(manim_automaton),
                FadeIn(automaton_input)
            )

        # Play all the animations generate from .play_string()
        for sequence in manim_automaton.play_string(automaton_input):
            for step in sequence:
                self.play(step, run_time=1)

To run the code and generate the video, run:

  • manim -pql <name_of_script.py> Automaton

run with -pqh instead of -pql to have highquality version

Examples

The Github page for this plugin has a directory called manim_automata_examples. You can download these and play around with them.

You can run each file using these commands:

  • manim -pql examples.py FiniteStateAutomatonExample
  • manim -pql examples.py NonFiniteStateAutomatonExample
  • manim -pql examples.py PushDownAutomatonExample

Writing Custom Animations

Create a new file called custom_manim_animations.py (can be called anything). In this file write:

import Manim
from manim_automata import ManimAnimations

class CustomManimAnimations(ManimAnimations):
    
    def __init__(self) -> None:
        super().__init__()

In your manim-automaton file create an instance of your new custom manim animations class, like so:

import Manim
from .custom_manim_animations import CustomManimAnimations

class Automaton(MovingCameraScene):
    def construct(self):
        manim_animations_instance = CustomManimAnimations()

        manim_automaton = ManimAutomaton(xml_file='example_machine.jff', manim_animations=manim_animations_instance)
        ...

Now that everything is setup, you'll be able to override the methods in ManimAnimations in your own class. Go to the github repository of this project, then to custom_animations_help to find a file that has all the animation methods that can be overriden.

Release files for manim-automata 0.2.14

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

Source distribution (sdist)

Source distribution for manim-automata 0.2.14
File Size Uploaded
manim_automata-0.2.14.tar.gz 39.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for manim-automata 0.2.14
File Interpreter ABI Platform
manim_automata-0.2.14-py3-none-any.whl Python 3 none any Details

Total release size: 66.3 kB

Release files / manim_automata-0.2.14.tar.gz

Download URL manim_automata-0.2.14.tar.gz
Size 39.8 kB
Tags Source
SHA-256 checksum
How to use checksums
3e9636d2f6d674b6762611e18ce399a3f476932f3931dc2593efd0e47764c55a
BLAKE2b-256 checksum
How to use checksums
ad6f44b29373b532cc57b3e2f835010468ddd3cbe448548ac297215b373e2625
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.3.1 CPython/3.11.1 Linux/5.15.0-1024-azure

Release files / manim_automata-0.2.14-py3-none-any.whl

Download URL manim_automata-0.2.14-py3-none-any.whl
Size 26.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ac21797f9454c2857cd872d64ae1a6da6c4698dfcc39330b3db745629ad85937
BLAKE2b-256 checksum
How to use checksums
73ed0c825599604e341241fb7867627c4b287b113aa161136b1167ec3054357e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.3.1 CPython/3.11.1 Linux/5.15.0-1024-azure

Release history Release notifications | RSS feed

This release

0.2.14 This release

2 release files

0.2.12

2 release files

0.2.11

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.0

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