import mlp
import commonMLP
import matplotlib.pylab as plt

# plot the graph of sum of squared errors vs epoch
def plotSqErr(epochSqErr):
	epoch = epochSqErr.keys()
	sqerr = epochSqErr.values()

	plt.plot(epoch, sqerr, 'b-')
	plt.xlabel('Epochs')
	plt.ylabel('Sum of Squared Error') 
	plt.show()

# main
if __name__ == "__main__":
	
	if(len(sys.argv) != 2):
	    print "Usage: python trainMLP.py <datafile>"
	    exit(-1)

	datafile = sys.argv[1]
	# read dataset
	(ins, outs) = commonMLP.readDataset(datafile)
	# create MLP object
	myMlp = mlp.MLP(2, 5, 4, commonMLP.sigmoid, commonMLP.dSigmoid)

	# train MLP
	epochSqErr = myMlp.train(ins, outs, datafile)
	# plot
	plotSqErr(epochSqErr)
    plt.title('Distribution of input dataset')
    plt.show()


# main
if __name__ == "__main__":

    if (len(sys.argv) != 3):
        print "Usage: python execMLP.py <weightfile> <datafile>"
        exit(-1)

    wtfile = sys.argv[1]
    datafile = sys.argv[2]
    # testfile = sys.argv[2]

    (insData, outsData) = commonMLP.readDataset(datafile)
    # (insTest, outsTest) = commonMLP.readDataset(testfile)

    emlp = mlp.MLP(2, 5, 4, commonMLP.sigmoid, commonMLP.dSigmoid)

    # for i in range(0, len(commonMLP.save_at)):
    # for i in range(0, 1):
    # wtfile2 = wtfile + str(commonMLP.save_at[i])

    # load weights from file and assign to MLP
    emlp.assignWts(wtfile)

    # print (str(i+1) + ")"),
    # print "After", str(commonMLP.save_at[i]), "epochs:\n"

    # print statistics
    plt.title("Distribution of input dataset")
    plt.show()


# main
if __name__ == "__main__":

    if len(sys.argv) != 3:
        print "Usage: python execMLP.py <weightfile> <datafile>"
        exit(-1)

    wtfile = sys.argv[1]
    datafile = sys.argv[2]
    # testfile = sys.argv[2]

    (insData, outsData) = commonMLP.readDataset(datafile)
    # (insTest, outsTest) = commonMLP.readDataset(testfile)

    emlp = mlp.MLP(2, 5, 4, commonMLP.sigmoid, commonMLP.dSigmoid)

    # for i in range(0, len(commonMLP.save_at)):
    # for i in range(0, 1):
    # wtfile2 = wtfile + str(commonMLP.save_at[i])

    # load weights from file and assign to MLP
    emlp.assignWts(wtfile)

    # print (str(i+1) + ")"),
    # print "After", str(commonMLP.save_at[i]), "epochs:\n"

    # print statistics