def testDeconvolver(channel,noise=0.):
	# generates a random 8 bit message
    message = lab2_5.randomMessage(100)
    # generates samples from the bit sequence
    inp = numpy.array(lab2_1.transmit(message,0,100))
    # passes the samples through channel
    out = channel(inp,noise)
    # uses the deconvolver to reconstruct the input
    dMessage = deconvolver(out,lab2_3.unit_sample_response(channel))
    p.figure()	# plot
    p.suptitle('Random Message through '+channel.__name__,fontsize = 20,fontweight='bold')
    plot_samples(311, inp, len(inp), -.1, 1.1, 'Input')
    plot_samples(312, out, len(out), -.1, 1.1, 'Output', 'g-')
    plot_samples(313, dMessage, len(dMessage), -.1, 1.1, 'Deonvolved Result', 'r-')
    p.subplots_adjust(hspace=0.5)
    if noise == 0.:
    	p.savefig(channel.__name__+'Deconvolution.png')
    else:
    	p.savefig(channel.__name__+'Noise'+str(noise)+'Deconvolution.png')
    p.clf()
def predictChannelOutput(channel):
	message = [1,0,1,0,1,0,1,0]
	return convolutionSum(lab2_1.transmit(message,10,100),lab2_3.unit_sample_response(channel))