""" Code to create a Gaussian distribution of points

Context : SRP
Module  : SRPGaussDistrib.py
Version : 1.1.1
Author  : Stefano Covino
Date    : 30/08/2011
E-mail  : stefano.covino@brera.inaf.it
URL:    : http://www.merate.mi.astro.it/utenti/covino
Purpose : Generate a set of points with Gaussian distribution

Usage   : SRPGaussDistrib -e arg1 [-h] -n arg2 -s arg3 / -a arg 3 arg4
            -e Distribution expectation value
            -n Number of repetitions
            -s Distribution standard deviation
            -a Distribution asymmetric standard deviation (left, right)


History : (01/09/2004) First version.
        : (03/02/2005) Optparse.
        : (22/06/2010) Asymmetric gaussians.
        : (30/08/2011) Better cosmetics.
"""

import random
from optparse import OptionParser
import scipy
import SRP.SRPStatistics as SRPStatistics

parser = OptionParser(usage="usage: %prog -e arg1 [-h] -n arg2 -s arg3 / -a arg 3 arg4", version="%prog 1.1.1")
parser.add_option("-e", "--expect", action="store", nargs=1, type="float", dest="mean", help="Distribution expectation value")
parser.add_option("-n", "--ntimes", action="store", nargs=1, type="int", default=1, dest="ntimes", help="Number of repetitions")
parser.add_option("-s", "--stdev", action="store", nargs=1, type="float", dest="stdev", help="Distribution standard deviation")
parser.add_option("-a", "--astdev", action="store", nargs=2, type="float", dest="astdev", help="Distribution asymmetric standard deviation (left, right)")
(options, args) = parser.parse_args()

if options.mean and options.ntimes and (options.stdev or options.astdev):
    if options.ntimes < 1:
        parser.error("Mininum number of events is 1!")
    if options.stdev and options.astdev:
        parser.error("Either symmetric or asymmetric distribution!")

    for i in scipy.arange(options.ntimes):
        if options.stdev:
            print random.gauss(options.mean,options.stdev)
        else:
            print SRPStatistics.AsymmetricGaussianDistrib(options.mean,options.astdev[0],options.astdev[1])

else:
    parser.print_help()

