Ejemplo n.º 1
0
def generate_single_run_time_series_plots(nff_session, csv=True, plot=True):
    print("Generating single run time series plots...", flush=True)
    for agent in nff_session.time_series:
        for var in nff_session.time_series[agent]:
            print("  " + agent + "." + var, flush=True)
            for e in nff_session.experiments:
                for id in nff_session.single_ids:
                    folder = nff_session.plot_folder + "/TIME_SERIES/INDIVIDUAL/" + e + "/" + str(id) + "/" + agent + "/"
                    utils.create_folder(folder)

                    if plot:
                        save_as_png = (folder + var)
                    else:
                        save_as_png = False
                    if csv:
                        save_as_csv = (folder + var)
                    else:
                        save_as_csv = False

                    try:
                        nff_session.generate_time_series_plot(agent, var, [e], [id], save_as_png=save_as_png, save_as_csv=save_as_csv)
                    except:
                        print("  ERROR: ", agent, var, e, id)

    print(" DONE")
Ejemplo n.º 2
0
    def simulate_model_transient(self, no_cpus, skip=False):
        utils.create_folder(self.workspace)

        if not skip:
            utils.delete_folder(self.transient_folder)

        job_list = []
        for i in range(0, self.no_runs):
            base_folder = self.transient_folder + "/" + str(i) + "/"
            if not os.path.exists(base_folder):
                utils.create_folder(base_folder)
                shutil.copyfile(self.base_xml, base_folder + "0.xml")
                if self.transient > 0:
                    job_list.append(str(i))

        print("Running transient simulations...")
        pool = Pool(processes=no_cpus)
        c = 0.0
        for job in job_list:
            pool.apply_async(self.run_model,
                             (self.transient_folder, job, self.transient,
                              self.transient, c))
            c = (c + 1) % no_cpus

        pool.close()
        pool.join()
        print(" DONE")
Ejemplo n.º 3
0
 def compile_model(self):
     utils.create_folder(self.workspace)
     print("Compiling model code...", end="", flush=True)
     os.chdir(self.model_path)
     with open(self.workspace + "/compiler-out.txt",
               "wb") as out, open(self.workspace + "/compiler-err.txt",
                                  "wb") as err:
         subprocess.run("make", stdout=out, stderr=err)
     print(" DONE")
Ejemplo n.º 4
0
 def parse_model(self):
     print("Parsing model structure...", end="")
     utils.create_folder(self.workspace)
     sys.stdout.flush()
     os.chdir(self.xparser_path)
     with open(self.workspace + "/xparser-out.txt",
               "wb") as out, open(self.workspace + "/xparser-err.txt",
                                  "wb") as err:
         subprocess.run(["./xparser", self.model_xml],
                        stdout=out,
                        stderr=err)
     print(" DONE")
Ejemplo n.º 5
0
def generate_correlation_barcharts_combined(nff_session):
    print("Generating combined correlation bar charts...", flush=True)
    for corr in nff_session.correlation_table:
        print("  " + corr, flush=True)
        for corr_pair in nff_session.correlation_table[corr]:
            folder = nff_session.table_folder + "/CORRELATIONS/COMBINED/BARCHART/" + corr + "/"
            utils.create_folder(folder)
            try:
                nff_session.generate_correlation_barchart(corr_pair, nff_session.experiments, nff_session.single_ids, save_as_png=(folder + utils.get_label_from_corr_pair(corr_pair)))
            except:
                print("  ERROR:", corr, corr_pair)
    print(" DONE")
Ejemplo n.º 6
0
def generate_mean_correlation_tables_combined(nff_session, csv=True, txt=True):
    print("Generating combined single run correlation tables...", flush=True)
    for corr in nff_session.correlation_table:
        print("  " + corr, flush=True)
        folder = nff_session.table_folder + "/CORRELATIONS/COMBINED/MEAN/"
        utils.create_folder(folder)

        if txt:
            save_as_txt = (folder + corr)
        else:
            save_as_txt = False
        if csv:
            save_as_csv = (folder + corr)
        else:
            save_as_csv = False

        try:
            nff_session.generate_correlation_table(nff_session.correlation_table[corr],  nff_session.experiments, nff_session.single_ids, save_as_csv=save_as_csv, save_as_txt=save_as_txt)
        except:
            print("  ERROR:", corr)
    print(" DONE")
Ejemplo n.º 7
0
def generate_single_run_correlation_tables(nff_session, csv=True, txt=True):
    print("Generating single run correlation tables...", flush=True)
    for corr in nff_session.correlation_table:
        print("  " + corr, flush=True)
        for e in nff_session.experiments:
            for id in nff_session.single_ids:
                folder = nff_session.table_folder + "/CORRELATIONS/INDIVIDUAL/" + e + "/" + str(id) + "/"
                utils.create_folder(folder)

                if txt:
                    save_as_txt = (folder + corr)
                else:
                    save_as_txt = False
                if csv:
                    save_as_csv = (folder + corr)
                else:
                    save_as_csv = False
                try:
                    nff_session.generate_correlation_table(nff_session.correlation_table[corr], [e], [id], save_as_csv=save_as_csv, save_as_txt=save_as_txt)
                except:
                    print("  ERROR:", corr, e, id)
    print(" DONE")
Ejemplo n.º 8
0
def generate_overtime_histograms_aggregated_combined(nff_session, csv=True, plot=True):
    print("Generating aggregated overtime histograms...", flush=True)
    for agent in nff_session.overtime_histogram:
        for var in nff_session.overtime_histogram[agent]:
            print("  " + agent + "." + var, flush=True)
            folder = nff_session.plot_folder + "/HISTOGRAM/OVER_TIME/COMBINED/AGG/" + agent + "/"
            utils.create_folder(folder)

            if plot:
                save_as_png = (folder + var)
            else:
                save_as_png = False
            if csv:
                save_as_csv = (folder + var)
            else:
                save_as_csv = False
            try:
                nff_session.generate_overtime_histogram_plot(agent, var, nff_session.experiments, nff_session.single_ids, save_as_png=save_as_png, save_as_csv=save_as_csv)
            except:
                print("  ERROR: ", agent, var)

    print(" DONE")
Ejemplo n.º 9
0
def generate_single_agent_time_series_plots_combined(nff_session, csv=True, plot=True):
    print("Generating single agent time series plots...", flush=True)
    for agent in nff_session.agent_time_series:
        for var in nff_session.agent_time_series[agent]:
            print("  " + agent + "." + var, flush=True)
            for id in nff_session.single_ids:
                folder = nff_session.plot_folder + "/TIME_SERIES/COMBINED/" + str(id) + "/" + agent + "_SINGLE/"
                utils.create_folder(folder)

                if plot:
                    save_as_png = (folder + var)
                else:
                    save_as_png = False
                if csv:
                    save_as_csv = (folder + var)
                else:
                    save_as_csv = False
                try:
                    nff_session.generate_time_series_plot(agent, var, nff_session.experiments, [id], save_as_png=save_as_png, save_as_csv=save_as_csv, agents_aggregated=False, linewidth=0.5)
                except:
                    print("  ERROR: ", agent, var, id)
    print(" DONE")
Ejemplo n.º 10
0
def generate_all_runs_time_series_plots_combined(nff_session, csv=True, plot=True):
    print("Generating combined all runs time series plots...", flush=True)
    for agent in nff_session.time_series:
        for var in nff_session.time_series[agent]:
            print("  " + agent + "." + var, flush=True)
            folder = nff_session.plot_folder + "/TIME_SERIES/COMBINED/ALL/" + agent + "/"
            utils.create_folder(folder)

            if plot:
                save_as_png = (folder + var)
            else:
                save_as_png = False
            if csv:
                save_as_csv = (folder + var)
            else:
                save_as_csv = False

            try:
                nff_session.generate_time_series_plot(agent, var, nff_session.experiments, nff_session.single_ids, save_as_png=save_as_png, save_as_csv=save_as_csv, linewidth=0.5)
            except:
                print("  ERROR: ", agent, var)
    print(" DONE")
Ejemplo n.º 11
0
def generate_agent_histograms_aggregated_combined(nff_session, csv=True, plot=True):
    print("Generating aggregated combined agent histograms...", flush=True)
    for agent in nff_session.agent_histogram:
        for var in nff_session.agent_histogram[agent]:
            print("  " + agent + "." + var, flush=True)
            for t in map(lambda x: int(x * nff_session.agent_histogram_frequency / nff_session.output_frequency), range(0, int((nff_session.iterations-nff_session.burn_in_its) / nff_session.agent_histogram_frequency))):
                folder = nff_session.plot_folder + "/HISTOGRAM/AGENT/COMBINED/AGG/" + agent + "/" + var + "/"
                utils.create_folder(folder)

                if plot:
                    save_as_png = (folder + str(t * nff_session.output_frequency))
                else:
                    save_as_png = False
                if csv:
                    save_as_csv = (folder + str(t * nff_session.output_frequency))
                else:
                    save_as_csv = False

                try:
                    nff_session.generate_agent_histogram_plot(agent, var, nff_session.experiments, nff_session.single_ids, [t], save_as_png=save_as_png, save_as_csv=save_as_csv)
                except:
                    print("  ERROR: ", agent, var, t)
    print(" DONE")
Ejemplo n.º 12
0
    def simulate_model(self, no_cpus, skip=False):
        utils.create_folder(self.workspace)

        # Create folder structure and 0.xml files
        if not skip:
            utils.delete_folder(self.run_folder)

        job_list = []
        for e in self.experiments:
            for i in range(0, self.no_runs):
                base_folder = self.run_folder + e + "/" + str(i) + "/"
                if not os.path.exists(base_folder):
                    utils.create_folder(base_folder)
                    shutil.copyfile(
                        self.transient_folder + "/" + str(i) + "/" +
                        str(self.transient) + ".xml",
                        base_folder + str(self.transient) + ".xml")
                    filemodification.modify0xml(
                        base_folder + str(self.transient) + ".xml",
                        self.experiments[e])
                    job_list.append(e + "/" + str(i))

        # Run model
        print("Running Experiments...", flush=True)
        pool = Pool(processes=no_cpus)

        c = 0.0
        for job in job_list:
            pool.apply_async(
                self.run_model,
                (self.run_folder, job, self.iterations, self.output_frequency,
                 c, str(self.transient) + ".xml"))
            c = (c + 1) % no_cpus

        pool.close()
        pool.join()
        print(" DONE")
Ejemplo n.º 13
0
def generate_overtime_histograms_single_runs(nff_session, csv=True, plot=True):
    print("Generating single run overtime histograms...", flush=True)
    for agent in nff_session.overtime_histogram:
        for var in nff_session.overtime_histogram[agent]:
            print("  " + agent + "." + var, flush=True)
            for e in nff_session.experiments:
                for id in nff_session.single_ids:
                    folder = nff_session.plot_folder + "/HISTOGRAM/OVER_TIME/INDIVIDUAL/" + e + "/" + str(id) + "/" + agent + "/"
                    utils.create_folder(folder)

                    if plot:
                        save_as_png = (folder + var)
                    else:
                        save_as_png = False
                    if csv:
                        save_as_csv = (folder + var)
                    else:
                        save_as_csv = False

                    try:
                        nff_session.generate_overtime_histogram_plot(agent, var, [e], [id], save_as_png=save_as_png, save_as_csv=save_as_csv)
                    except:
                        print("  ERROR: ", agent, var, e, id)
    print(" DONE")
Ejemplo n.º 14
0
def generate_agent_histograms_single_runs(nff_session, csv=True, plot=True):
    print("Generating single run agent histograms...", flush=True)
    for agent in nff_session.agent_histogram:
        for var in nff_session.agent_histogram[agent]:
            print("  " + agent + "." + var, flush=True)
            for e in nff_session.experiments:
                for id in nff_session.single_ids:
                    for t in map(lambda x: int(x * nff_session.agent_histogram_frequency / nff_session.output_frequency), range(0, int((nff_session.iterations-nff_session.burn_in_its) / nff_session.agent_histogram_frequency))):
                        folder = nff_session.plot_folder + "/HISTOGRAM/AGENT/INDIVIDUAL/" + e + "/" + str(id) + "/" + agent + "/" + var + "/"
                        utils.create_folder(folder)

                        if plot:
                            save_as_png = (folder + str(t * nff_session.output_frequency))
                        else:
                            save_as_png = False
                        if csv:
                            save_as_csv = (folder + str(t * nff_session.output_frequency))
                        else:
                            save_as_csv = False
                        try:
                            nff_session.generate_agent_histogram_plot(agent, var, [e], [id], [t], save_as_png=save_as_png, save_as_csv=save_as_csv)
                        except:
                            print("  ERROR: ", agent, var, e, id, t)
    print(" DONE")