예제 #1
0
파일: to_csv.py 프로젝트: LPoppe/veugel
def plot(name, data):
    filename = os.path.join(CSV_DIR, "{name}_{type}.csv".format(name=name, type=get_datapoint_type()))

    headers = list(data.keys())
    amount_of_rows = max(map(len, data.values()))

    rows = [None] * amount_of_rows
    for rownr in range(amount_of_rows):
        rows[rownr] = {daynr: get_datapoint(data, daynr, rownr) for daynr in headers}

    csvfp = csv.DictWriter(open(filename, "w"), fieldnames=headers)
    csvfp.writeheader()
    csvfp.writerows(rows)



if __name__ == '__main__':
    type = get_datapoint_type()

    if type == DAS:
        aggregator = aggregate_das
    elif type == GAP:
        aggregator = aggregate_gap
    elif type == CTIME:
        aggregator = aggregate_ctime
    else:
        assert False, "Not possible :)"

    analyse(chain(*relational.BROTHERS.items()), aggregator=aggregator, plotter=plot, plot_threaded=True)
예제 #2
0
파일: bootstrap.py 프로젝트: LPoppe/veugel
            median, stderr = bootstrapped[day]
        except KeyError:
            # This bird didn't have this day
            yield ""
        else:
            yield "{median}±{stderr}".format(**locals())

def plot(*veugel_tuples):
    all_veugels = list(itertools.chain(*veugel_tuples))

    # Determine all available days
    all_days = set()
    for (name, bootstrapped) in all_veugels:
        for daynr in bootstrapped.keys():
            all_days.add(daynr)
    all_days = list(sorted(all_days))

    # Open CSV file
    filename = os.path.join(CSV_DIR, "bootstrapped.csv")
    file = open(filename, "w")

    csvfp = csv.writer(file)
    csvfp.writerow(["name"] + all_days)

    for name, bootstrapped in all_veugels:
        csvfp.writerow([name] + list(get_row(bootstrapped, all_days)))


if __name__ == '__main__':
    analyse(relational.BROTHERS.items(), aggregator=aggregate, plotter=plot, plot_threaded=False)
예제 #3
0
파일: peaks.py 프로젝트: LPoppe/veugel
    # peaks: een dictionary van bucket (int) -> count (int)
    # buckets: een dictionary van bucket (int) -> count(int)

    # Return an ordered dict of buckets, and their peaks
    return buckets, peaks


def aggregate(veugel):
    # @LINDA: Kies je dagen die je wil berekenen in de onderstaande constructie!
    days = veugel.days # FILTER DUS HIER

    aggregated = [(day.daynr, day_aggregate(day.rows["duration_of_state"])) for day in days]
    aggregated = OrderedDict(aggregated)

    # HACK: als we hier een enkel item teruggeven gaat analyse() over de zeik :<. We geven
    # dus een lijst met een enkel item terug, wat vervolgens weer goed gaat in plot().
    return [aggregated]

def plot(aggregated):
    pyplot.figure()

    for day, (buckets, peaks) in aggregated.items():
        print(day)
        pyplot.plot(list(buckets.keys()), list(buckets.values()))
        pyplot.plot(list(peaks.keys()), list(peaks.values()), 'x')

    pyplot.show()

if __name__ == "__main__":
    analyse([list(BROTHERS.keys())[0]], aggregator=aggregate, plotter=plot, plot_threaded=True)
예제 #4
0
파일: stats.py 프로젝트: LPoppe/veugel
        #print(sorted(Counter(choose_day(iso.days, daynr).rows["duration_of_state"]).items()))
        #print(sorted(Counter(choose_day(self.days, daynr).rows["duration_of_state"]).items()))
        iso_das = choose_day(iso.days, daynr).rows["duration_of_state"]
        self_das = choose_day(self.days, daynr).rows["duration_of_state"]
        yield stats.ks_2samp(iso_das, self_das)


def _aggregate(iso, self):
    yield iso.name
    yield self.name

    yield get_hist_data(iso)
    yield get_hist_data(self)

    yield list(get_ks(iso, self))


def aggregate(iso, self):
    return list(_aggregate(iso, self))


def plot(iso_name, self_name, iso_hist, self_hist, ks):

    print("{} <-> {}".format(iso_name, self_name))
    for day, res in zip(BUCKETS, ks):
        print("{}: {}".format(day, res))


if __name__ == '__main__':
    analyse(list(relational.BROTHERS.items())[:1], plot, aggregate, plot_threaded=True)
예제 #5
0
파일: avg_das.py 프로젝트: LPoppe/veugel
from veugel import relational
from veugel.analyse import analyse

def plot_avg_das(means):
    pyplot.plot(list(means.keys()), list(means.values()), marker='x')

def plot(iso_name, iso_avgs, self_name, self_avgs):
    pyplot.figure()
    pyplot.gca().set_color_cycle(['red', 'blue'])

    plot_avg_das(iso_avgs)
    plot_avg_das(self_avgs)

    pyplot.ylabel('Mean DAS')
    pyplot.xlabel('DPH')
    pyplot.ylim(0, 150)
    pyplot.legend([iso_name, self_name], loc=0)

    pyplot.savefig("das_{iso_name}_{self_name}.png".format(**locals()), bbox_inches='tight')

def get_das_mapping(veugel):
    return OrderedDict((day.daynr, day.get_das_mean()) for day in veugel.days)

def aggregate(iso, self):
    return [iso.name, get_das_mapping(iso), self.name, get_das_mapping(self)]

if __name__ == '__main__':
    analyse(relational.BROTHERS.items(), plot, aggregate, plot_threaded=True)