mima_ghost_busters_performanceΒΆ

A script to test the performance of ghostbusters for MIMA.

The first version (2019-12-02) of ghost busters is taking ~30 sec for a single 3-D matrix processing in MacMini 2018.

""" A script to test the performance of ghostbusters for MIMA.

The first version (2019-12-02) of ghost busters is taking ~30 sec for a single 3-D matrix processing in MacMini 2018.
"""

import time
import datetime
import random
from irfpy.mima import scidata_util, rawdata

import pickle

import logging
logging.basicConfig()
logger = logging.getLogger(__name__)

logger.setLevel(logging.DEBUG)

def make_dataset(filename):

    t0 = datetime.datetime(2006, 8, 10)
    t1 = datetime.datetime(2018, 12, 5)
    delta = t1 - t0
    delta_s = delta.total_seconds()
    logger.debug(f'{delta_s}')

    dc = rawdata.DataCenterCount3d()

    with open(filename, 'wb') as fp:
        for i in range(10):

            dt = int(random.random() * delta_s)
            t = t0 + datetime.timedelta(seconds=dt)

            # Loading 3D data
            t, d = dc.nearest(t)

            pickle.dump(t, fp)
            pickle.dump(d, fp)


def ghost_buster(t, d):

        logger.debug(f'Time = {t:%FT%T}')

        t_start = time.time()

        print(f'Total before = {d.matrix.sum()}')
        scidata_util.ghost_reduction_rule_based_3d_rev1(d)
        print(f'Total after = {d.matrix.sum()}')

        t_stop = time.time()
        t_ellapsed = t_stop - t_start

        print(f'Time ellapsed = {t_ellapsed} s')


def main():

    import os

    filename = 'mima_ghost_busters_performance_samples.pickle'

    if not os.path.exists(filename):
        make_dataset(filename)

    n = 0
    maxn = 10

    with open(filename, 'rb') as fp:
        while n < maxn:
            t = pickle.load(fp)
            d = pickle.load(fp)

            ghost_buster(t, d)

            n = n + 1

if __name__ == "__main__":
    main()