def newPopulation(x0, a, b, npop):
    nx = len(x0)
    nf = 0
    ninf = 0
    pop = []
    n = 0
    ntries = 0
    x = x0
    while ((n < npop) & ((ntries + 1) < 3 * npop)):
        vctr = x[:]
        try:
            nf = nf + 1
            y = f.eval(x)
            ny = len(y)
            for i in range(ny):
                vctr.append(y[i])
            pop.append(vctr)
            n = n + 1
        except Exception as e:
            ninf = ninf + 1
            #print(e)
        r = []
        for i in range(nx):
            r.append(random.uniform(0, 1))
        x = sum(mult(r, res(b, a)), a)
        #print("n: " + str(n) + " ninf: " + str(ninf) + " x: " + str(x))

    return [pop, nx, ny, nf, ninf]
Exemplo n.º 2
0
def mc_stack_n_data_sum(wrps, merge_mc_key_func=None, use_all_data_lumi=False):
    """
    Stacks MC histos and merges data, input needs to be sorted and grouped.

    The output are tuples of MC stacks and data histograms.
    ATTENTION: This crashes, if the proper histograms are not present!

    :param wrps:                Iterables of HistoWrapper (grouped)
    :param merge_mc_key_func:   key function for python sorted(...), default
                                tries to sort after stack position
    :yields:                    (StackWrapper, HistoWrapper)
    """
    if not merge_mc_key_func:
        merge_mc_key_func = lambda w: settings.get_stack_position(w.sample)

    for grp in wrps:

        # split stream
        data, mc = split_data_mc(grp)

        # sum up data
        data_sum = None
        try:
            data_sum = op.sum(data)
        except op.TooFewWrpsError:
            print "WARNING generators.mc_stack_n_data_sum(..): "\
                  "No data histos present! I will yield only mc."
        if use_all_data_lumi:
            data_lumi = settings.data_lumi_sum_wrp()
        else:
            data_lumi = op.lumi(data_sum)

        # merge mc samples (merge also normalizes to lumi = 1.)
        mc_sorted = sorted(mc, key=merge_mc_key_func)
        mc_groupd = group(mc_sorted, merge_mc_key_func)
        mc_merged = (op.merge(g) for g in mc_groupd)
        mc_colord = apply_histo_fillcolor(mc_merged)

        # stack mc
        mc_norm = gen_prod(
            itertools.izip(mc_colord, itertools.repeat(data_lumi)))
        mc_stck = None
        try:
            mc_stck = op.stack(mc_norm)
        except op.TooFewWrpsError:
            print "WARNING generators.mc_stack_n_data_sum(..): " \
                  "No mc histos present! I will yield only data"
        if mc_stck and data_sum:
            yield mc_stck, data_sum
        elif mc_stck:
            yield (mc_stck, )
        elif data_sum:
            yield (data_sum, )
        else:
            raise op.TooFewWrpsError("Neither data nor mc histos present!")
Exemplo n.º 3
0
def mc_stack_n_data_sum(wrps, merge_mc_key_func=None, use_all_data_lumi=False):
    """
    Stacks MC histos and merges data, input needs to be sorted and grouped.

    The output are tuples of MC stacks and data histograms.
    ATTENTION: This crashes, if the proper histograms are not present!

    :param wrps:                Iterables of HistoWrapper (grouped)
    :param merge_mc_key_func:   key function for python sorted(...), default
                                tries to sort after stack position
    :yields:                    (StackWrapper, HistoWrapper)
    """
    if not merge_mc_key_func:
        merge_mc_key_func = lambda w: settings.get_stack_position(w.sample)

    for grp in wrps:

        # split stream
        data, mc = split_data_mc(grp)

        # sum up data
        data_sum = None
        try:
            data_sum = op.sum(data)
        except op.TooFewWrpsError:
            print "WARNING generators.mc_stack_n_data_sum(..): "\
                  "No data histos present! I will yield only mc."
        if use_all_data_lumi:
            data_lumi = settings.data_lumi_sum_wrp()
        else:
            data_lumi = op.lumi(data_sum)

        # merge mc samples (merge also normalizes to lumi = 1.)
        mc_sorted = sorted(mc, key=merge_mc_key_func)
        mc_groupd = group(mc_sorted, merge_mc_key_func)
        mc_merged = (op.merge(g) for g in mc_groupd)
        mc_colord = apply_histo_fillcolor(mc_merged)

        # stack mc
        mc_norm = gen_prod(itertools.izip(mc_colord, itertools.repeat(data_lumi)))
        mc_stck = None
        try:
            mc_stck = op.stack(mc_norm)
        except op.TooFewWrpsError:
            print "WARNING generators.mc_stack_n_data_sum(..): " \
                  "No mc histos present! I will yield only data"
        if mc_stck and data_sum:
            yield mc_stck, data_sum
        elif mc_stck:
            yield (mc_stck, )
        elif data_sum:
            yield (data_sum, )
        else:
            raise op.TooFewWrpsError("Neither data nor mc histos present!")
def plantPopulation(x0, a, b, ngen, npop, nrmax, output):

    plPop = NewPopulation.newPopulation(x0, a, b, npop)
    phi = plPop[0]
    nx = plPop[1]
    ny = plPop[2]
    nf = plPop[3]
    ninf = plPop[4]
    #print(plPop)
    pop = PlantSort.plantSort(phi, nx, ny)
    #print(pop)

    gen = 0
    x = []
    y = []
    while gen < ngen:
        N = PlantFitness.computeFitness(pop, nx, ny, npop)
        N = N[0]
        phi = []
        for i in range(npop):
            phi.append(pop[i])
            # print(N[p])
            nr = ceil(nrmax * (1 - N[i]) * random.random())
            if nr < 1:
                nr = 1
            for j in range(nr):
                dx = []
                for n in range(nx):
                    dx.append(random.random() * nx)
                dx = mult(res(dx, 0.5), (2 * (1 - N[i])))
                x = []
                for k in range(nx):
                    x.append(pop[i][k])
                x = sum(x, dx)
                #print("x:"); print(x);
                # reset boundaries
                x = resetBoundaries(x, a, True, b)
                #print("xa:"); print(x);
                x = resetBoundaries(x, b, False, b)
                #print("xb:"); print(x);
                nf = 0
                try:
                    nf = nf + 1
                    y = f.eval(x)
                    for k in range(len(y)):
                        x.append(y[k])
                    phi.append(x)
                except Exception as e:
                    ninf = ninf + 1
        pop = PlantSort.plantSort(phi, nx, ny)
        gen = gen + 1

    x = []
    y = []
    #print(pop);
    #stop = input("prompt: ")
    for c in range(len(pop)):
        tX = []
        tY = []
        for i in range(nx):
            tX.append(pop[c][i])
        for j in range(len(pop[0]) - nx):
            tY.append(pop[c][j + (nx)])
        x.append(tX)
        y.append(tY)

    return [x, y, nf, ninf]
Exemplo n.º 5
0
while True:

    array1 = []
    print("Enter 10 positive or negative integers into a list: ")
    elms = 0
    while elms != 10:
        try:
            array1.append(int(input()))
            elms += 1
        except ValueError:
            print("INCORRECT INPUT, TRY AGAIN")

    print("Your array is:")
    print(array1)

    print("The sum of the elements in the array is " + str(sum(array1)))
    print("The largest element of the array is " + str(getLargestNum(array1)))
    print("The smallest element of the array is " +
          str(getSmallestNum(array1)))
    print("The even elements of the array are " + str(getEvenNums(array1)))
    print("The odd elements of the array are " + str(getOddNums(array1)))
    print("The positive elements of the array are " +
          str(printPositiveNums(array1)))
    print("All of the elements converted to positive: " +
          str(convertPositiveNums(array1)))

    factor = int(input("Enter a factor to multiply elements of the array: "))
    print("The elements multipled by the inputed factor are: " +
          str(multiplyList(array1, factor)))
    #print(vectorMultiply(testArray,testArray2))
Exemplo n.º 6
0
def mc_stack_n_data_sum(wrps, merge_mc_key_func=None, use_all_data_lumi=True):
    """
    Stacks MC histos and merges data, input needs to be sorted and grouped.

    Yields tuples of an MC stack, signal histograms, and a data histogram, if
    all kinds of data are present. Raises an exception if no histograms are
    given at all.

    :param wrps:                Iterables of HistoWrapper (grouped)
    :param merge_mc_key_func:   key function for python sorted(...), default
                                tries to sort after stack position
    :yields:                    WrapperWrapper of wrappers for plotting
    """
    if not merge_mc_key_func:
        merge_mc_key_func = analysis.get_stack_position

    for grp in wrps:

        # split stream
        dat, bkg, sig = split_data_bkg_sig(grp)

        # data
        dat_sum = None
        try:
            dat_sum = op.sum(dat)
        except op.TooFewWrpsError:
            monitor.message('generators.mc_stack_n_data_sum',
                            'DEBUG No data histograms present!')
        if dat_sum and not use_all_data_lumi:
            data_lumi = op.lumi(dat_sum)
        else:
            data_lumi = analysis.data_lumi_sum_wrp()

        # background (op.merge normalizes to lumi = 1.)
        bkg = sorted(bkg, key=merge_mc_key_func)
        is_2d = bkg and 'TH2' in bkg[0].type
        bkg = group(bkg, merge_mc_key_func)
        bkg = (op.merge(g) for g in bkg)
        bkg = apply_fillcolor(bkg)
        if settings.stack_line_color:
            bkg = apply_linecolor(bkg, settings.stack_line_color)
        if data_lumi.float != 1.:
            bkg = gen_prod(itertools.izip(bkg, itertools.repeat(data_lumi)))
        try:
            if is_2d:
                bkg_stk = gen_squash_sys_acc(bkg, op.sum)
            else:
                bkg_stk = gen_squash_sys_acc(bkg, op.stack)
        except op.TooFewWrpsError:
            bkg_stk = None
            monitor.message('generators.mc_stack_n_data_sum',
                            'DEBUG No background histograms present!')

        # signal
        sig = sorted(sig, key=merge_mc_key_func)
        sig = group(sig, merge_mc_key_func)
        sig = list(op.merge(g) for g in sig)
        if any(s.sys_info for s in sig):
            sig = sorted(sig, key=lambda s: s.sample)
            sig = group(sig, lambda s: s.sample)
            sig = (gen_squash_sys(s) for s in sig)
        sig = apply_linecolor(sig)
        sig = apply_linewidth(sig)
        sig = list(sig)
        if not sig:
            monitor.message('generators.mc_stack_n_data_sum',
                            'DEBUG No signal histograms present!')

        # return in order for plotting: bkg, signals, data
        res = [bkg_stk] + sig + [dat_sum]
        res = list(r for r in res if r)
        if res:
            yield wrappers.WrapperWrapper(res, name=grp.name)
        else:
            raise op.TooFewWrpsError('No histograms present!')