Moving Symbols  v1.0
Like Moving MNIST, but way more flexible
Moving Symbols API

Entry Point

The moving_symbols package provides the MovingSymbolsEnvironment class, which is the one you should be using to generate Moving Symbols videos.

Tiny Example

The following code snippet puts the frames of one Moving Symbols video into a list:

1 from moving_symbols import MovingSymbolsEnvironment
2 
3 env = MovingSymbolsEnvironment(params, seed)
4 
5 all_frames = []
6 for _ in xrange(num_frames):
7  frame = env.next()
8  all_frames.append(np.array(frame))

MovingSymbolsEnvironment as a Publisher

A MovingSymbolsEnvironment instance publishes messages corresponding to the initialization and state of each symbol at all time steps. The following code snippet shows an example where a subscriber collects all the published messages:

1 from moving_symbols import MovingSymbolsEnvironment
2 
3 class Subscriber:
4  def process_message(self, message):
5  print(message)
6 
7 env = MovingSymbolsEnvironment(params, seed)
8 sub = Subscriber()
9 env.add_subscriber(sub)
10 
11 all_frames = []
12 for _ in xrange(num_frames):
13  frame = env.next()
14  all_frames.append(np.array(frame))

Messages start getting published as soon as env.next() is first called.