<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Theoretically, the domain is just a checkerboard tiling of fixed 0 and wildcard. So there should be just two states, and depth 2 light cones should be sufficient.
Let's try depth 2, with default $\alpha$
Step1:  Periodic, so probably not a good representation of the 18 domain
Look at depth 3 light cones
Step2:  Look at same stuff at depth 4 light cones
Step3:  Look at states for increasing light cone size
2 (second test)
3 (fifth test)
4 (sixth test)
<ASSISTANT_TASK:>
Python Code:
first_test = epsilon_field(domain.get_spacetime())
first_test.estimate_states(2,2,1)
first_test.filter_data()
print first_test.number_of_states()
for state in first_test.causal_states():
    print state.plc_configs()
second_test = epsilon_field(domain.get_spacetime())
second_test.estimate_states(2,2,1,alpha= 0)
second_test.filter_data()
print second_test.number_of_states()
for state in second_test.causal_states():
    print state.plc_configs()
big_domain = ECA(18, domain_18(2000))
big_domain.evolve(2000)
third_test = epsilon_field(big_domain.get_spacetime())
third_test.estimate_states(2,2,1,alpha=0)
third_test.filter_data()
print third_test.number_of_states()
for state in third_test.causal_states():
    print state.plc_configs()
print 2**5
print np.size(np.unique(third_test.PLCs().all_labels()))
print np.size(np.unique(third_test.FLCs().all_labels()))
print third_test.causal_states()[0].plc_shape(0)
print third_test.causal_states()[1].plc_shape(0), '\n'
print third_test.causal_states()[1].plc_shape(1)
print third_test.causal_states()[2].plc_shape(0)
diagram(domain.get_spacetime(), t_min = 400, t_max = 440, x_min = 400, x_max = 440)
print np.size([0,1]*10)
checkerish = ECA(18, ([0,0,1]+[0,1,0])*200)
checkerish.evolve(1200)
checkerish.diagram()
fourth_test = epsilon_field(checkerish.get_spacetime())
fourth_test.estimate_states(3,3,1)
fourth_test.filter_data()
print fourth_test.number_of_states()
for state in fourth_test.causal_states():
    print state.plc_configs()
Explanation: Theoretically, the domain is just a checkerboard tiling of fixed 0 and wildcard. So there should be just two states, and depth 2 light cones should be sufficient.
Let's try depth 2, with default $\alpha$
End of explanation
fifth_test = epsilon_field(domain.get_spacetime())
fifth_test.estimate_states(3,3,1, alpha=0)
fifth_test.filter_data()
print fifth_test.number_of_states()
print np.size(np.unique(fifth_test.PLCs().all_labels()))
for state in fifth_test.causal_states():
    print state.index(), state.plc_configs()
for state in fifth_test.causal_states():
    print state.index(), state.morph_support_configs(), np.size(state.morph_support_configs()),'\n'
Explanation: Periodic, so probably not a good representation of the 18 domain
Look at depth 3 light cones
End of explanation
sixth_test = epsilon_field(domain.get_spacetime())
sixth_test.estimate_states(4,4,1,alpha = 0)
sixth_test.filter_data()
print sixth_test.number_of_states()
print np.size(np.unique(sixth_test.PLCs().all_labels()))
for state in sixth_test.causal_states():
    print state.index(), state.plc_configs(), '\n'
for state in sixth_test.causal_states():
    print state.index(), state.morph_support_configs(), np.size(state.morph_support_configs()), '\n'
diagram(domain.get_spacetime(), t_min = 400, t_max = 440, x_min = 400, x_max = 440)
Explanation: Look at same stuff at depth 4 light cones
End of explanation
state_overlay_diagram(domain.get_spacetime(), second_test.get_causal_field(),\
                      t_min = 400, t_max = 440, x_min = 400, x_max = 440)
state_overlay_diagram(domain.get_spacetime(), fifth_test.get_causal_field(),\
                      t_min = 400, t_max = 440, x_min = 400, x_max = 440)
state_overlay_diagram(domain.get_spacetime(), sixth_test.get_causal_field(),\
                      t_min = 400, t_max = 440, x_min = 400, x_max = 440)
seventh_test = epsilon_field(domain.get_spacetime())
seventh_test.estimate_states(5,5,1,alpha=0)
seventh_test.filter_data()
print seventh_test.number_of_states()
state_overlay_diagram(domain.get_spacetime(), seventh_test.get_causal_field(),\
                      t_min = 400, t_max = 440, x_min = 400, x_max = 440)
domain = ECA(18, domain_18(400))
domain.evolve(400)
domain_states = epsilon_field(domain.get_spacetime())
domain_states.estimate_states(5,3,1)
domain_states.filter_data()
print domain_states.number_of_states()
print domain_states.nonunifilar_transitions()
state_overlay_diagram(domain.get_spacetime(), domain_states.get_causal_field(), t_min = 50, t_max = 100, \
                      x_min = 50, x_max = 100)
mask_field = np.copy(domain_states.get_causal_field())
mask_field[mask_field == 3] = 1
state_overlay_diagram(domain.get_spacetime(), mask_field, t_min = 50, t_max = 100, \
                      x_min = 50, x_max = 100)
print mask_field[10:30, 120:140]
print len(domain_states.all_transitions())
np.random.seed(0)
domain_states = epsilon_field(domain.get_spacetime())
domain_states.estimate_states(3,3,1)
domain_states.filter_data()
print domain_states.nonunifilar_transitions()
print len(domain_states.all_transitions())
for transition in domain_states.all_transitions():
    print transition
Explanation: Look at states for increasing light cone size
2 (second test)
3 (fifth test)
4 (sixth test)
End of explanation
<END_TASK>