n_samples = 10000  # number of data points
n_greedy_reps = 100  # repetitions in greedy phase
x = mdp.numx.zeros((n_samples, 4))
for i in range(n_samples):
    r = mdp.numx.rand()
    if r > 0.666:
        x[i, :] = [0., 1., 0., 1.]
    elif r > 0.333:
        x[i, :] = [1., 0., 1., 0.]

data_iterables = [None] + [[x] * n_greedy_reps] * n_layers + [[x]]
msg_iterables = ([None] + [[{
    "epsilon": 0.1,
    "decay": 0.0,
    "momentum": 0.0
}] * n_greedy_reps] * n_layers + [[{
    "top_updates": 3,
    "epsilon": 0.1,
    "decay": 0.0,
    "momentum": 0.0,
    "max_iter": 2,
    "min_error": -1.0
}]])

bimdp.show_training(flow, data_iterables, msg_iterables, debug=True)
# Expected:
## '/tmp/.../training_inspection.html'
print "done."
# Expected:
## done.
should not be included in the unittests.
"""

import numpy

import mdp
import bimdp

## Create the flow.
noisenode = mdp.nodes.NormalNoiseNode(input_dim=20 * 20,
                                      noise_args=(0, 0.0001))
sfa_node = mdp.nodes.SFANode(input_dim=20 * 20, output_dim=20, dtype='f')
sfa2_node = mdp.nodes.SFA2Node(input_dim=20, output_dim=10)
switchboard = mdp.hinet.Rectangular2dSwitchboard(in_channels_xy=100,
                                                 field_channels_xy=20,
                                                 field_spacing_xy=10)
flownode = mdp.hinet.FlowNode(noisenode + sfa_node + sfa2_node)
sfa_layer = mdp.hinet.CloneLayer(flownode, switchboard.output_channels)
flow = switchboard + sfa_layer

train_data = [
    numpy.cast['f'](numpy.random.random((10, 100 * 100))) for _ in range(5)
]

## Do the inspections and open in browser.
# The debug=True is not needed here, unless one starts experimenting.
bimdp.show_training(flow=flow, data_iterables=[None, train_data], debug=True)
filename, out = bimdp.show_execution(flow, x=train_data[0], debug=True)

print "done."
"""

import numpy

import mdp
import bimdp

## Create the flow.
noisenode = mdp.nodes.NormalNoiseNode(input_dim=20*20,
                                      noise_args=(0, 0.0001))
sfa_node = mdp.nodes.SFANode(input_dim=20*20, output_dim=20, dtype='f')
sfa2_node = mdp.nodes.SFA2Node(input_dim=20, output_dim=10)
switchboard = mdp.hinet.Rectangular2dSwitchboard(
                                          in_channels_xy=100,
                                          field_channels_xy=20,
                                          field_spacing_xy=10)
flownode = mdp.hinet.FlowNode(noisenode + sfa_node + sfa2_node)
sfa_layer = mdp.hinet.CloneLayer(flownode, switchboard.output_channels)
flow = switchboard + sfa_layer

train_data = [numpy.cast['f'](numpy.random.random((10, 100*100)))
              for _ in range(5)]

## Do the inspections and open in browser.
# The debug=True is not needed here, unless one starts experimenting.
bimdp.show_training(flow=flow, data_iterables=[None, train_data],
                    debug=True)
filename, out = bimdp.show_execution(flow, x=train_data[0], debug=True)

print "done."
import bimdp
import dbn_binodes

n_layers = 2
flow = dbn_binodes.get_DBN_flow(2, hidden_dims=[2,2])

n_samples = 10000  # number of data points
n_greedy_reps = 100  # repetitions in greedy phase
x = mdp.numx.zeros((n_samples, 4))
for i in range(n_samples):
    r = mdp.numx.rand()
    if r>0.666:
        x[i,:] = [0.,1.,0.,1.]
    elif r>0.333:
        x[i,:] = [1.,0.,1.,0.]

data_iterables = [None] + [[x] * n_greedy_reps] * n_layers + [[x]]
msg_iterables = ([None] +
                 [[{"epsilon": 0.1, "decay": 0.0,
                    "momentum": 0.0}] * n_greedy_reps] * n_layers +
                 [[{"top_updates": 3, "epsilon": 0.1, "decay": 0.0,
                    "momentum": 0.0,
                    "max_iter": 2, "min_error": -1.0}]])

bimdp.show_training(flow, data_iterables, msg_iterables, debug=True)
# Expected:
## '/tmp/.../training_inspection.html'
print "done."
# Expected:
## done.