diff --git a/tests/core/test_custom_logging_code.py b/tests/core/test_custom_logging_code.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/tests/core/test_persistent_data.py b/tests/core/test_persistent_data.py deleted file mode 100644 index 5276f752dd15092382f69d9be3e6875ec63ef2b6..0000000000000000000000000000000000000000 --- a/tests/core/test_persistent_data.py +++ /dev/null @@ -1,380 +0,0 @@ -""" -Module containing tests regarding the persistent_data memory and the ensemble output -""" - -import os -import sys -import time -import json -import textwrap -import binary_c_python_api - -from binarycpython.utils.functions import ( - binarycDecoder, - temp_dir, - inspect_dict, - merge_dicts, -) - -TMP_DIR = temp_dir() -os.makedirs(os.path.join(TMP_DIR, "test"), exist_ok=True) - - -#### -def return_argstring( - m1=15.0, - m2=14.0, - separation=0, - orbital_period=453000000000, - eccentricity=0.0, - metallicity=0.02, - max_evolution_time=15000, - defer_ensemble=0, - ensemble_filters_off=1, - ensemble_filter="SUPERNOVAE", -): - """ - Function to make a argstring that we can use in these tests - """ - - # Make the argstrings - argstring_template = "binary_c M_1 {0:g} M_2 {1:g} separation {2:g} orbital_period {3:g} \ -eccentricity {4:g} metallicity {5:g} max_evolution_time {6:g} ensemble 1 ensemble_defer {7} \ -ensemble_filters_off {8} ensemble_filter_{9} 1 probability 0.1" - - argstring = argstring_template.format( - m1, - m2, - separation, - orbital_period, - eccentricity, - metallicity, - max_evolution_time, - defer_ensemble, - ensemble_filters_off, - ensemble_filter, - ) - - return argstring - - -def test_return_persistent_data_memaddr(): - output = binary_c_python_api.return_persistent_data_memaddr() - - print("function: test_run_system") - print("Binary_c output:") - print(textwrap.indent(str(output), "\t")) - - assert isinstance(output, int), "memory adress has to be an integer" - assert output != 0, "memory adress seems not to have a correct value" - - -def test_passing_persistent_data_to_run_system(): - # Function to test the passing of the persistent data memoery adress, and having ensemble_defer = True - # We should see that the results of multiple systems have been added to the one output json - - # Make argstrings - argstring_1 = return_argstring(defer_ensemble=0) - argstring_1_deferred = return_argstring(defer_ensemble=1) - argstring_2 = return_argstring(defer_ensemble=0) - - # - persistent_data_memaddr = binary_c_python_api.return_persistent_data_memaddr() - - output_1 = binary_c_python_api.run_system(argstring=argstring_1) - ensemble_jsons_1 = [ - line for line in output_1.splitlines() if line.startswith("ENSEMBLE_JSON") - ] - json_1 = json.loads(ensemble_jsons_1[0][len("ENSEMBLE_JSON ") :]) - - # Doing 2 systems in a row. - output_1_deferred = binary_c_python_api.run_system( - argstring=argstring_1_deferred, persistent_data_memaddr=persistent_data_memaddr - ) - output_2 = binary_c_python_api.run_system( - argstring=argstring_2, persistent_data_memaddr=persistent_data_memaddr - ) - ensemble_jsons_2 = [ - line for line in output_2.splitlines() if line.startswith("ENSEMBLE_JSON") - ] - json_2 = json.loads(ensemble_jsons_2[0][len("ENSEMBLE_JSON ") :]) - - # Doing system one again. - output_1_again = binary_c_python_api.run_system(argstring=argstring_1) - ensemble_jsons_1 = [ - line for line in output_1_again.splitlines() if line.startswith("ENSEMBLE_JSON") - ] - json_1_again = json.loads(ensemble_jsons_1[0][len("ENSEMBLE_JSON ") :]) - - assert ( - json_1 == json_1_again - ), "The system with the same initial settings did not give the same output" - assert ( - json_1 != json_2 - ), "The output of the deferred two systems should not be the same as the first undeferred output" - - -def test_full_ensemble_output(): - """ - Function to just output the whole ensemble - """ - - argstring_1 = return_argstring(defer_ensemble=0, ensemble_filters_off=0) - output_1 = binary_c_python_api.run_system(argstring=argstring_1) - ensemble_jsons_1 = [ - line for line in output_1.splitlines() if line.startswith("ENSEMBLE_JSON") - ] - - start = time.time() - json_1 = json.loads( - ensemble_jsons_1[0][len("ENSEMBLE_JSON ") :], cls=binarycDecoder - ) - stop = time.time() - - with open(os.path.join(TMP_DIR, "test", "json_full_ensemble.json"), "w") as f: - f.write(json.dumps(json_1, indent=4)) - - print("took {}s to decode".format(stop - start)) - print("Size of the json in memory: {}".format(sys.getsizeof(json_1))) - - # assert statements: - assert "number_counts" in json_1.keys() - assert "HRD" in json_1.keys() - assert "HRD(t)" in json_1.keys() - assert "Xyield" in json_1.keys() - assert "distributions" in json_1.keys() - assert "scalars" in json_1.keys() - - -def test_adding_ensemble_output(): - """ - Function that adds the output of 2 ensembles and compares it to the output that we get by deferring the first output - """ - - m1 = 2 # Msun - m2 = 0.1 # Msun - extra_mass = 10 - - ############################################################################################# - # The 2 runs below use the ensemble but do not defer the output to anything else, so that the - # results are returned directly after the run - - # Direct output commands - argstring_1 = return_argstring( - m1=m1, m2=m2, ensemble_filter="STELLAR_TYPE_COUNTS", defer_ensemble=0 - ) - argstring_2 = return_argstring( - m1=m1 + extra_mass, - m2=m2, - ensemble_filter="STELLAR_TYPE_COUNTS", - defer_ensemble=0, - ) - - # Get outputs - output_1 = binary_c_python_api.run_system(argstring=argstring_1) - output_2 = binary_c_python_api.run_system(argstring=argstring_2) - - test_1_ensemble_jsons_1 = [ - line for line in output_1.splitlines() if line.startswith("ENSEMBLE_JSON") - ] - test_1_ensemble_jsons_2 = [ - line for line in output_2.splitlines() if line.startswith("ENSEMBLE_JSON") - ] - - test_1_json_1 = json.loads( - test_1_ensemble_jsons_1[0][len("ENSEMBLE_JSON ") :], cls=binarycDecoder - ) - test_1_json_2 = json.loads( - test_1_ensemble_jsons_2[0][len("ENSEMBLE_JSON ") :], cls=binarycDecoder - ) - - test_1_merged_dict = merge_dicts(test_1_json_1, test_1_json_2) - - with open(os.path.join(TMP_DIR, "test", "adding_json_1.json"), "w") as file: - file.write(json.dumps(test_1_json_1, indent=4)) - with open(os.path.join(TMP_DIR, "test", "adding_json_2.json"), "w") as file: - file.write(json.dumps(test_1_json_2, indent=4)) - with open(os.path.join(TMP_DIR, "test", "adding_json_merged.json"), "w") as file: - file.write(json.dumps(test_1_json_2, indent=4)) - - print("Single runs done\n") - - ############################################################################################# - # The 2 runs below use the ensemble and both defer the output so that after they are finished - # nothing is printed. After that we explicitly free the memory of the persistent_data and - # have the output returned in that way - - # Deferred commands - argstring_1_deferred = return_argstring( - m1=m1, m2=m2, ensemble_filter="STELLAR_TYPE_COUNTS", defer_ensemble=1 - ) - argstring_2_deferred = return_argstring( - m1=m1 + extra_mass, - m2=m2, - ensemble_filter="STELLAR_TYPE_COUNTS", - defer_ensemble=1, - ) - - # Get a memory location - test_2_persistent_data_memaddr = ( - binary_c_python_api.return_persistent_data_memaddr() - ) - - # Run the systems and defer the output each time - _ = binary_c_python_api.run_system( - argstring=argstring_1_deferred, - persistent_data_memaddr=test_2_persistent_data_memaddr, - ) - _ = binary_c_python_api.run_system( - argstring=argstring_2_deferred, - persistent_data_memaddr=test_2_persistent_data_memaddr, - ) - - # Have the persistent_memory adress be released and have the json outputted - test_2_output = binary_c_python_api.free_persistent_data_memaddr_and_return_json_output( - test_2_persistent_data_memaddr - ) - test_2_ensemble_json = [ - line for line in test_2_output.splitlines() if line.startswith("ENSEMBLE_JSON") - ] - test_2_json = json.loads( - test_2_ensemble_json[0][len("ENSEMBLE_JSON ") :], cls=binarycDecoder - ) - - with open(os.path.join(TMP_DIR, "test", "adding_json_deferred.json"), "w") as file: - file.write(json.dumps(test_2_json, indent=4)) - - print("Double deferred done\n") - - ############################################################################################# - # The 2 runs below use the ensemble and the first one defers the output to the memory, - # Then the second one uses that memory to combine its results with, but doesn't defer the - # data after that, so it will print it after the second run is done - - test_3_persistent_data_memaddr = ( - binary_c_python_api.return_persistent_data_memaddr() - ) - - # Run the systems and defer the output once and the second time not, so that the second run - # automatically prints out the results - _ = binary_c_python_api.run_system( - argstring=argstring_1_deferred, - persistent_data_memaddr=test_3_persistent_data_memaddr, - ) - test_3_output_2 = binary_c_python_api.run_system( - argstring=argstring_2, persistent_data_memaddr=test_3_persistent_data_memaddr - ) - test_3_ensemble_jsons = [ - line - for line in test_3_output_2.splitlines() - if line.startswith("ENSEMBLE_JSON") - ] - test_3_json = json.loads( - test_3_ensemble_jsons[0][len("ENSEMBLE_JSON ") :], cls=binarycDecoder - ) - - with open( - os.path.join(TMP_DIR, "test", "adding_json_deferred_and_output.json"), "w" - ) as f: - f.write(json.dumps(test_3_json, indent=4)) - - print("Single deferred done\n") - - # - assert_message_1 = """ - The structure of the manually merged is not the same as the merged by double deferring - """ - assert_message_2 = """ - The structure of the manually merged is not the same as the merged by deferring once - and output on the second run - """ - - # - # print(json.dumps(test_1_merged_dict, indent=4)) - # print(json.dumps(test_2_json, indent=4)) - - # - assert inspect_dict(test_1_merged_dict, print_structure=False) == inspect_dict( - test_2_json, print_structure=False - ), assert_message_1 - # assert inspect_dict(test_1_merged_dict, print_structure=False) == inspect_dict(test_3_json, print_structure=False), assert_message_2 - - -def test_combine_with_empty_json(): - argstring_1 = return_argstring(defer_ensemble=0) - output_1 = binary_c_python_api.run_system(argstring=argstring_1) - ensemble_jsons_1 = [ - line for line in output_1.splitlines() if line.startswith("ENSEMBLE_JSON") - ] - json_1 = json.loads( - ensemble_jsons_1[0][len("ENSEMBLE_JSON ") :], cls=binarycDecoder - ) - - assert_message = ( - "combining output json with empty dict should give same result as initial json" - ) - assert merge_dicts(json_1, {}) == json_1, assert_message - - -def test_free_and_json_output(): - """ - Function that tests the freeing of the memory adress and the output of the json - """ - - m1 = 2 # Msun - m2 = 0.1 # Msun - - # Get argstring: - argstring_1 = return_argstring( - m1=m2, m2=m2, ensemble_filter="STELLAR_TYPE_COUNTS", defer_ensemble=1 - ) - - # Get a memory adress: - persistent_data_memaddr = binary_c_python_api.return_persistent_data_memaddr() - - # Evolve and defer output - print("evolving") - output_1_deferred = binary_c_python_api.run_system( - argstring=argstring_1, persistent_data_memaddr=persistent_data_memaddr - ) - print("Evolved") - print("Output:") - print(textwrap.indent(str(output_1_deferred), "\t")) - - # Free memory adress - print("freeing") - json_output_by_freeing = binary_c_python_api.free_persistent_data_memaddr_and_return_json_output( - persistent_data_memaddr - ) - print("Freed") - print("Output:") - print(textwrap.indent(str(json_output_by_freeing), "\t")) - - parsed_json = json.loads( - json_output_by_freeing.splitlines()[0][len("ENSEMBLE_JSON ") :], - cls=binarycDecoder, - ) - print(parsed_json) - # ensemble_jsons_1 = [line for line in output_1.splitlines() if line.startswith("ENSEMBLE_JSON")] - # json_1 = json.loads(ensemble_jsons_1[0][len("ENSEMBLE_JSON "):], cls=binarycDecoder) - - -def test_all(): - test_return_persistent_data_memaddr() - test_passing_persistent_data_to_run_system() - test_full_ensemble_output() - test_adding_ensemble_output() - test_free_and_json_output() - test_combine_with_empty_json() - - -#### -if __name__ == "__main__": - # test_return_persistent_data_memaddr() - # test_passing_persistent_data_to_run_system() - # test_full_ensemble_output() - # test_adding_ensemble_output() - test_free_and_json_output() - # test_combine_with_empty_json() - # test_all() - print("Done") diff --git a/tests/core/test_return_store_memaddr.py b/tests/core/test_return_store_memaddr.py deleted file mode 100644 index 25fdbe75cabfa57af92911344c4b60b2823e43a1..0000000000000000000000000000000000000000 --- a/tests/core/test_return_store_memaddr.py +++ /dev/null @@ -1,27 +0,0 @@ -import binary_c_python_api -import textwrap - - -def test_return_store_memaddr(): - output = binary_c_python_api.return_store_memaddr() - - print("function: test_return_store") - print("store memory adress:") - print(textwrap.indent(str(output), "\t")) - - -def test_unload_store_memaddr(): - output = binary_c_python_api.return_store_memaddr() - - print("function: test_return_store") - print("store memory adress:") - print(textwrap.indent(str(output), "\t")) - print(type(output)) - _ = binary_c_python_api.free_store_memaddr(output) - print("freed store memaddr") - - -#### -if __name__ == "__main__": - test_return_store_memaddr() - test_unload_store_memaddr() diff --git a/tests/core/test_run_system.py b/tests/core/test_run_system.py deleted file mode 100644 index 060496a95dde11ce746258c47f71f64bb0354e24..0000000000000000000000000000000000000000 --- a/tests/core/test_run_system.py +++ /dev/null @@ -1,35 +0,0 @@ -import binary_c_python_api -import textwrap - - -# Evolution functions -def test_run_system(): - m1 = 15.0 # Msun - m2 = 14.0 # Msun - separation = 0 # 0 = ignored, use period - orbital_period = 4530.0 # days - eccentricity = 0.0 - metallicity = 0.02 - max_evolution_time = 15000 - argstring = "binary_c M_1 {0:g} M_2 {1:g} separation {2:g} orbital_period {3:g} eccentricity {4:g} metallicity {5:g} max_evolution_time {6:g} ".format( - m1, - m2, - separation, - orbital_period, - eccentricity, - metallicity, - max_evolution_time, - ) - - output = binary_c_python_api.run_system(argstring=argstring) - - # print("function: test_run_system") - # print("Binary_c output:") - # print(textwrap.indent(output, "\t")) - - assert "SINGLE_STAR_LIFETIME" in output, "Run system not working properly" - - -#### -if __name__ == "__main__": - test_run_system() diff --git a/tests/extra_tests.py b/tests/extra_tests.py deleted file mode 100644 index 85029ded6b366d40672ca53399b66f83854bced8..0000000000000000000000000000000000000000 --- a/tests/extra_tests.py +++ /dev/null @@ -1,44 +0,0 @@ -import subprocess -import os - -# Script containing extra tests -# TODO: store the version somewhere - - -def test_binary_c_installed(): - binary_c_dir = os.getenv("BINARY_C", None) - - assert ( - binary_c_dir is not None - ), "Error: the BINARY_C environment variable is not set." - assert os.path.isfile( - os.path.join(binary_c_dir, "binary_c") - ), "binary_c doesn't exist!" - - -def test_binary_c_version(): - required_binary_c_versions = ["2.1.7"] - - binary_c_dir = os.getenv("BINARY_C", None) - binary_c_config = os.path.join(binary_c_dir, "binary_c-config") - - installed_binary_c_version = ( - subprocess.run([binary_c_config, "version"], stdout=subprocess.PIPE, check=True) - .stdout.decode("utf-8") - .split() - )[0] - - message = """ - The binary_c version that is installed ({}) does not match the binary_c versions ({}) - that this release of the binary_c python module requires. - """.format( - installed_binary_c_version, required_binary_c_versions - ) - assert installed_binary_c_version in required_binary_c_versions, message - - -### - -if __name__ == "__main__": - test_binary_c_version() - test_binary_c_installed() diff --git a/tests/function_tests.py b/tests/function_tests.py deleted file mode 100644 index a440492da98272e4ffdcf4ee6b7c27595de3b0b3..0000000000000000000000000000000000000000 --- a/tests/function_tests.py +++ /dev/null @@ -1,62 +0,0 @@ -from binarycpython.utils.functions import ( - get_help_super, - get_help_all, - get_help, -) - -############################# -# Script that contains unit tests for functions from the binarycpython.utils.functions file - - -def test_get_help_super(): - """ - Function to test the get_help_super function - """ - - get_help_super_output = get_help_super() - get_help_super_keys = get_help_super_output.keys() - - assert "stars" in get_help_super_keys, "missing section" - assert "binary" in get_help_super_keys, "missing section" - assert "nucsyn" in get_help_super_keys, "missing section" - assert "output" in get_help_super_keys, "missing section" - assert "i/o" in get_help_super_keys, "missing section" - assert "algorithms" in get_help_super_keys, "missing section" - assert "misc" in get_help_super_keys, "missing section" - - -def test_get_help_all(): - """ - Function to test the get_help_all function - """ - - get_help_all_output = get_help_all(print_help=False) - get_help_all_keys = get_help_all_output.keys() - - assert "stars" in get_help_all_keys, "missing section" - assert "binary" in get_help_all_keys, "missing section" - assert "nucsyn" in get_help_all_keys, "missing section" - assert "output" in get_help_all_keys, "missing section" - assert "i/o" in get_help_all_keys, "missing section" - assert "algorithms" in get_help_all_keys, "missing section" - assert "misc" in get_help_all_keys, "missing section" - - -def test_get_help(): - """ - Function to test the get_help function - """ - - assert ( - get_help("M_1", print_help=False)["parameter_name"] == "M_1" - ), "get_help('M_1') should return the correct parameter name" - - -def test_all(): - test_get_help() - test_get_help_all() - test_get_help_super() - - -if __name__ == "__main__": - test_all() diff --git a/tests/main.py b/tests/main.py deleted file mode 100644 index 20b1a1fdefb05c5aa426367c2aab3a4289f9b33d..0000000000000000000000000000000000000000 --- a/tests/main.py +++ /dev/null @@ -1,6 +0,0 @@ -# Main file for the tests. This file imports all the combined_test functions from all files. -from population.grid_tests import test_all as test_all_grid_tests -from function_tests import test_all as test_all_function_tests - -test_all_grid_tests() -test_all_function_tests() diff --git a/tests/population/global_variable_for_distributions.py b/tests/population/global_variable_for_distributions.py deleted file mode 100644 index e9114cbc6524c015fe00abddebe5f7b662082e53..0000000000000000000000000000000000000000 --- a/tests/population/global_variable_for_distributions.py +++ /dev/null @@ -1,117 +0,0 @@ -import time - -powerlaw_const = None - -### -# Function/test to see the speed up of making values global so we dont have to calculate them each time -# Theres only a factor ~2 increase here. - - -def with_glob(): - global powerlaw_const - if not powerlaw_const: - # print('not defined') - powerlaw_const = powerlaw_constant(10, 100, -2) - else: - # print('defined') - return powerlaw_const - - -def without_glob(): - powerlaw_const = powerlaw_constant(10, 100, -2) - return powerlaw_const - - -def powerlaw_constant(min_val, max_val, k): - """ - Function that returns the constant to normalise a powerlaw - """ - - k1 = k + 1.0 - # print( - # "Powerlaw consts from {} to {}, k={} where k1={}".format( - # min_val, max_val, k, k1 - # ) - # ) - - global powerlaw_const - powerlaw_const = k1 / (max_val ** k1 - min_val ** k1) - return powerlaw_const - - -def powerlaw(min_val, max_val, k, x): - """ - Single powerlaw with index k at x from min to max - """ - - # Handle faulty value - if k == -1: - print("wrong value for k") - raise ValueError - - if (x < min_val) or (x > max_val): - print("value is out of bounds") - return 0 - - else: - powerlaw_const = powerlaw_constant(min_val, max_val, k) - - # powerlaw - y = powerlaw_const * (x ** k) - # print(y) - # print( - # "Power law from {} to {}: const = {}, y = {}".format( - # min_val, max_val, const, y - # ) - # ) - return y - - -def powerlaw_with(min_val, max_val, k, x): - """ - Single powerlaw with index k at x from min to max - """ - - # Handle faulty value - if k == -1: - print("wrong value for k") - raise ValueError - - if (x < min_val) or (x > max_val): - return 0 - - else: - global powerlaw_const - if not powerlaw_const: - powerlaw_const = powerlaw_constant(min_val, max_val, k) - - # powerlaw - y = powerlaw_const * (x ** k) - # print( - # "Power law from {} to {}: const = {}, y = {}".format( - # min_val, max_val, const, y - # ) - # ) - return y - - -steps = 1000000 - -start_time_without_glob = time.time() -for i in range(steps): - powerlaw(10, 100, -2, 20) -stop_time_without_glob = time.time() - -start_time_with_glob = time.time() -for i in range(steps): - powerlaw_with(10, 100, -2, 20) -stop_time_with_glob = time.time() - -total_time_without = stop_time_without_glob - start_time_without_glob -total_time_with = stop_time_with_glob - start_time_with_glob - -print( - "without: {}\nwith: {}\nRatio: {}".format( - total_time_without, total_time_with, total_time_without / total_time_with - ) -) diff --git a/tests/population/grid_tests.py b/tests/population/grid_tests.py deleted file mode 100644 index e4ca1a1fa950f912c2eeeb6e343dda3362f63bee..0000000000000000000000000000000000000000 --- a/tests/population/grid_tests.py +++ /dev/null @@ -1,464 +0,0 @@ -import os -import json -import time -import pickle -import sys - -# import matplotlib.pyplot as plt - -from binarycpython.utils.grid import Population -from binarycpython.utils.functions import ( - get_help_all, - get_help, - output_lines, -) - - -def test_setup_population(): - """ - Unit test for setting up the population object - """ - - test_pop = Population() - - assert isinstance(test_pop, Population), "Population object not created properly" - - -def test_set_value_population(): - """ - Unit test for setting values in the population object - """ - - test_pop = Population() - - test_pop.set(verbosity=1,) - - test_pop.set( - M_1=10, data_dir="/tmp/binary-c/output", ensemble_filter_SUPERNOVAE=1, - ) - - assert test_pop.bse_options["M_1"] == 10, "BSE options not correctly set" - assert test_pop.grid_options["verbosity"] == 1, "Grid options not correctly set" - assert ( - test_pop.custom_options["data_dir"] == "/tmp/binary-c/output" - ), "Custom options not correctly set" - assert ( - test_pop.bse_options["ensemble_filter_SUPERNOVAE"] == 1 - ), "Parameters are not getting caught correctly (The wildcards of parameters with %d in their name)" - - -def test_set_argline_output_population(): - """ - Unit test for setting values in the population object - """ - - test_pop = Population() - - test_pop.set( - M_1=10, - M_2=14.0, # Msun - separation=0, # 0 = ignored, use period - orbital_period=4530.0, # days - eccentricity=0.0, - metallicity=0.02, - max_evolution_time=15000, - verbosity=1, - ) - - argline = test_pop.return_argline() - assert ( - argline - == "binary_c M_1 10 M_2 14.0 eccentricity 0.0 max_evolution_time 15000 metallicity 0.02 orbital_period 4530.0 separation 0" - ), "Argline not constructed correctly. Check if values are set properly." - - -def test_version_info_dict_population(): - """ - Unit test for setting values in the population object - - TODO: Add status to output of the version_info, with -1 if there are unmatched items - """ - - test_pop = Population() - - # return version info - version_info = test_pop.return_binary_c_version_info(parsed=True) - version_info_keys = version_info.keys() - - assert "L_SUN" in version_info_keys, "Missing item in version info" - assert "ADAPTIVE_RLOF_LOG" in version_info_keys, "Missing item in version info" - assert "GSL_VERSION" in version_info_keys, "Missing item in version info" - assert "git_revision" in version_info_keys, "Missing item in version info" - - -def test_settings_output_population(): - """ - Unit test for outputting the settings of the population dict object - """ - - test_pop = Population() - - # return version info - population_settings = test_pop.return_population_settings() - population_settings_keys = population_settings.keys() - - assert ( - "bse_options" in population_settings_keys - ), "Missing information in the population_settings dict" - assert ( - "grid_options" in population_settings_keys - ), "Missing information in the population_settings dict" - assert ( - "custom_options" in population_settings_keys - ), "Missing information in the population_settings dict" - - -def test_all_info_population(): - """ - Unit test for outputting all information of the population object - """ - - test_pop = Population() - - # return all info: - all_info_dict = test_pop.return_all_info() - all_info_keys = all_info_dict.keys() - - assert ( - "population_settings" in all_info_keys - ), "Missing information in the all_info settings dict" - assert ( - "binary_c_defaults" in all_info_keys - ), "Missing information in the all_info settings dict" - assert ( - "binary_c_version_info" in all_info_keys - ), "Missing information in the all_info settings dict" - assert ( - "binary_c_help_all" in all_info_keys - ), "Missing information in the all_info settings dict" - - -def test_evolve_single_system_population(): - """ - Unit test for the evolve_single_system function of the population object - """ - - test_pop = Population() - - test_pop.set( - M_1=10, - M_2=14.0, # Msun - separation=0, # 0 = ignored, use period - orbital_period=4530.0, # days - eccentricity=0.0, - metallicity=0.02, - max_evolution_time=15000, - verbosity=0, - ) - - output = test_pop.evolve_single() - - assert "SINGLE_STAR_LIFETIME" in output, "Failed to evolve a system" - - -# def test_custom_logging_memory_adress(): - - -def test_C_auto_logging_population(): - """ - Unit test for the creating a custom logging output by setting the - C_auto_logging value with a list containing a headerline as key and a list of parameters as value - """ - - test_pop = Population() - - test_pop.set( - M_1=14, - M_2=10.0, # Msun - separation=0, # 0 = ignored, use period - orbital_period=4530.0, # days - eccentricity=0.0, - metallicity=0.02, - max_evolution_time=15000, - verbosity=0, - ) - - test_pop.set( - C_auto_logging={ - "MY_HEADER_LINE": ["star[0].mass", "star[1].mass", "model.probability"] - } - ) - - output = test_pop.evolve_single() - - first_line = output.splitlines()[0].split() - - assert ( - first_line[0] == "MY_HEADER_LINE" - ), "Failed to set the custom logging correctly" - assert ( - first_line[1] == "14" - ), "Failed to set the custom logging correctly. First mass should be 14" - assert ( - first_line[2] == "10" - ), "Failed to set the custom logging correctly. Second mass should be 10" - assert ( - first_line[3] == "1" - ), "Failed to set the custom logging correctly. Probability should be 1" - - -def test_C_logging_code_population(): - """ - Unit test for the creating a custom logging output by setting the - C_logging_code which contains the exact print statement (including possible logic). - This will be evaluated and put into binary_c - """ - - test_pop = Population() - - test_pop.set( - M_1=14, - M_2=10.0, # Msun - separation=10000, # 0 = ignored, use period - # orbital_period = 4530.0, # days - eccentricity=0.0, - metallicity=0.02, - max_evolution_time=15000, - verbosity=0, - ) - - test_pop.set( - C_logging_code='Printf("MY_STELLAR_DATA mass=%g separation=%g probability=%g\\n", stardata->star[0].mass, stardata->common.orbit.separation, stardata->model.probability);' - ) - - output = test_pop.evolve_single() - first_line = output.splitlines()[0].split() - - assert ( - first_line[0] == "MY_STELLAR_DATA" - ), "Failed to set the custom logging correctly. Headerline should be MY_STELLAR_DATA" - assert ( - first_line[1] == "mass=14" - ), "Failed to set the custom logging correctly. First mass should be 14" - assert ( - first_line[2] == "separation=10000" - ), "Failed to set the custom logging correctly. Separation should be 10000" - assert ( - first_line[3] == "probability=1" - ), "Failed to set the custom logging correctly. Probability should be 1" - - -def parse_function(self, output): - """ - Dummy parse function for handling the output of a system - """ - - parameters = ["mass_1", "separation", "probability"] - separator = "\t" - - outfilename = os.path.join( - self.grid_options["tmp_dir"], "output_parse_function_test.txt" - ) - if os.path.isfile(outfilename): - os.remove(outfilename) - - for el in output_lines(output): - headerline = el.split()[0] - - if headerline == "MY_STELLAR_DATA": - values = el.split()[1:] - if not os.path.exists(outfilename): - with open(outfilename, "w") as f: - f.write(separator.join(parameters) + "\n") - - with open(outfilename, "a") as f: - f.write(separator.join(values) + "\n") - - -def test_parse_function_population(): - """ - Unit test to test the ise of a parsing function for the output - """ - - test_pop = Population() - - test_pop.set( - M_1=10, - M_2=14.0, # Msun - separation=0, # 0 = ignored, use period - orbital_period=4530.0, # days - eccentricity=0.0, - metallicity=0.02, - max_evolution_time=15000, - verbosity=0, - ) - - test_pop.set( - C_logging_code='Printf("MY_STELLAR_DATA mass=%g separation=%g probability=%g\\n", stardata->star[0].mass, stardata->common.orbit.separation, stardata->model.probability);' - ) - - test_pop.set(parse_function=parse_function) - - # Run with parse function - test_pop.evolve_single(parse_function) - - outfilename = os.path.join( - test_pop.grid_options["tmp_dir"], "output_parse_function_test.txt" - ) - assert os.path.isfile(outfilename), "Output file not created!" - - with open(outfilename, "r") as outfile: - output = outfile.readlines() - first_line_split = output[0].strip().split("\t") - - assert first_line_split[0] == "mass_1", "Output header not created correctly" - assert first_line_split[1] == "separation", "Output header not created correctly" - assert first_line_split[2] == "probability", "Output header not created correctly" - assert len(output) > 1, "File doesn't seem to contain any real data" - - -def test_all(): - test_setup_population() - test_set_value_population() - test_set_argline_output_population() - test_version_info_dict_population() - test_settings_output_population() - test_all_info_population() - test_evolve_single_system_population() - test_C_auto_logging_population() - test_C_logging_code_population() - test_parse_function_population() - - -if __name__ == "__main__": - test_all() - print("yo") - -# quit() -# print(len(test_pop.return_binary_c_defaults())) -# print('\n\n') -# print(len(test_pop.cleanup_defaults())) - -## Use custom arg file -# test_pop.evolve_population(custom_arg_file='/home/david/projects/binary_c_root/binary_c-python/tests/population/custom_arg_file.txt') - - -### Grid generating testing -# test_pop.add_grid_variable( -# name="lnm1", -# longname="log primary mass", -# valuerange=[10, 20], -# resolution="10", -# spacingfunc="np.linspace(0.213, 10.2, 10)", -# precode="M_1=math.exp(lnm1)", -# probdist="flat(M_1)", -# # probdist='self.custom_options["extra_prob_function"](M_1)', -# dphasevol="", -# parameter_name="M_1", -# condition="", -# ) - -# ### Grid generating test. -# test_pop.add_grid_variable( -# name="period", -# longname="period", -# valuerange=["M_1", 20], -# resolution="10", -# spacingfunc="np.linspace(1, 10, 10)", -# precode="orbital_period = period**2", -# probdist="flat(orbital_period)", -# parameter_name="orbital_period", -# dphasevol="", -# condition='self.grid_options["binary"]==0', -# ) - -# test_pop.generate_grid_code() - -# test_pop.load_grid_function() - -# test_pop.write_binary_c_calls_to_file(output_dir="/home/david/Desktop") - - -# print(test_pop.grid_options["code_string"]) - -#### -# Dry run: -# test_pop.set(verbose=1) -# test_pop.add_grid_variable( -# name="lnm1", -# longname="log primary mass", -# valuerange=[10, 20], -# resolution="10", -# spacingfunc="np.linspace(0.213, 10.2, 10)", -# precode="M_1=math.exp(lnm1)", -# probdist="flat(M_1)", -# # probdist='self.custom_options["extra_prob_function"](M_1)', -# dphasevol="", -# parameter_name="M_1", -# condition="", -# ) - -# ### Grid generating test. -# test_pop.add_grid_variable( -# name="period", -# longname="period", -# valuerange=["M_1", 20], -# resolution="10", -# spacingfunc="np.linspace(1, 10, 10)", -# precode="orbital_period = period**2", -# probdist="flat(orbital_period)", -# parameter_name="orbital_period", -# dphasevol="", -# condition='self.grid_options["binary"]==0', -# ) - -# test_pop.generate_grid_code(dry_run=True) - -# test_pop.load_grid_function() - -# test_pop.dry_run() - -# ### -# testing population: -# test_pop.set( -# verbose=1, amt_cores=2, binary=0, -# ) - - -# resolution = {"M_1": 10, "per": 10} - -# test_pop.add_grid_variable( -# name="M_1", -# longname="log primary mass", -# valuerange=[10, 100], -# resolution="{}".format(resolution["M_1"]), -# spacingfunc="const(10, 100, {})".format(resolution["M_1"]), -# # precode="M_1=math.exp(lnm1)", -# probdist="flat(M_1)", -# # probdist='self.custom_options["extra_prob_function"](M_1)', -# dphasevol="dM_1", -# parameter_name="M_1", -# ) - -# ### Grid generating test. -# test_pop.add_grid_variable( -# name="period", -# longname="period", -# valuerange=["M_1", 20], -# resolution="{}".format(resolution["per"]), -# spacingfunc="np.linspace(1, 10, {})".format(resolution["per"]), -# precode="orbital_period = period**2", -# probdist="flat(orbital_period)", -# parameter_name="orbital_period", -# dphasevol="dper", -# condition='self.grid_options["binary"]==0', -# ) - -# test_pop.set(verbose=1, amt_cores=2, binary=0, evolution_type="linear") - - -# test_pop.evolve_population() -# test_pop.generate_grid_code() -# test_pop.load_grid_function() -# print(test_pop.grid_options['system_generator']) -# test_pop.grid_options['system_generator'](test_pop) diff --git a/tests/profiling/profile_run.txt b/tests/profiling/profile_run.txt deleted file mode 100644 index ccdeddae2bb5a06ceca311d9b53de11dfb074072..0000000000000000000000000000000000000000 Binary files a/tests/profiling/profile_run.txt and /dev/null differ diff --git a/tests/profiling/profile_test.txt b/tests/profiling/profile_test.txt deleted file mode 100644 index 34a8484623b8fcdd999256a15ff7f525f58c1b78..0000000000000000000000000000000000000000 Binary files a/tests/profiling/profile_test.txt and /dev/null differ diff --git a/tests/profiling/readout_profile.py b/tests/profiling/readout_profile.py deleted file mode 100644 index 654f07514e4287fd9cadb234721574917d6d18c8..0000000000000000000000000000000000000000 --- a/tests/profiling/readout_profile.py +++ /dev/null @@ -1,4 +0,0 @@ -import pstats - -p = pstats.Stats("profile_run.txt") -p.sort_stats("tottime").print_stats(10) diff --git a/tests/python_API_test.py b/tests/python_API_test.py deleted file mode 100755 index 187ecd9992ec44cd16ec51d53e9b965cdbc62797..0000000000000000000000000000000000000000 --- a/tests/python_API_test.py +++ /dev/null @@ -1,182 +0,0 @@ -#!/usr/bin/python3 - -import binary_c_python_api - -from binarycpython.utils.custom_logging_functions import ( - autogen_C_logging_code, - binary_c_log_code, - create_and_load_logging_function, -) -from binarycpython.utils.functions import temp_dir - -import tempfile -import textwrap - -############################################################ -# Test script for the api functions -# unittests -############################################################ - - -# Evolution functions -def test_run_system(): - m1 = 15.0 # Msun - m2 = 14.0 # Msun - separation = 0 # 0 = ignored, use period - orbital_period = 4530.0 # days - eccentricity = 0.0 - metallicity = 0.02 - max_evolution_time = 15000 - argstring = "binary_c M_1 {0:g} M_2 {1:g} separation {2:g} orbital_period {3:g} eccentricity {4:g} metallicity {5:g} max_evolution_time {6:g} ".format( - m1, - m2, - separation, - orbital_period, - eccentricity, - metallicity, - max_evolution_time, - ) - - output = binary_c_python_api.run_system(argstring=argstring) - - print("function: test_run_system") - print("Binary_c output:") - print(textwrap.indent(output, "\t")) - - -def test_run_system_with_log(): - m1 = 15.0 # Msun - m2 = 14.0 # Msun - separation = 0 # 0 = ignored, use period - orbital_period = 4530.0 # days - eccentricity = 0.0 - metallicity = 0.02 - max_evolution_time = 15000 - - log_filename = temp_dir() + "/test_log.txt" - api_log_filename_prefix = temp_dir() + "/test_log" - - argstring = "binary_c M_1 {0:g} M_2 {1:g} separation {2:g} orbital_period {3:g} eccentricity {4:g} metallicity {5:g} max_evolution_time {6:g} log_filename {7:s} api_log_filename_prefix {8:s}".format( - m1, - m2, - separation, - orbital_period, - eccentricity, - metallicity, - max_evolution_time, - log_filename, - api_log_filename_prefix, - ) - - output = binary_c_python_api.run_system(argstring=argstring, write_logfile=1) - - print("function: test_run_system_with_log") - print("Binary_c output:") - print(textwrap.indent(output, "\t")) - - -def test_run_system_with_custom_logging(): - # generate logging lines. Here you can choose whatever you want to have logged, and with what header - # this generates working print statements - logging_line = autogen_C_logging_code( - {"MY_STELLAR_DATA": ["model.time", "star[0].mass"],} - ) - - # Generate entire shared lib code around logging lines - custom_logging_code = binary_c_log_code(logging_line) - - # Load memory adress - func_memaddr, shared_lib_filename = create_and_load_logging_function( - custom_logging_code - ) - - # Some values - m1 = 15.0 # Msun - m2 = 14.0 # Msun - separation = 0 # 0 = ignored, use period - orbital_period = 4530.0 # days - eccentricity = 0.0 - metallicity = 0.02 - max_evolution_time = 15000 - - argstring = "binary_c M_1 {0:g} M_2 {1:g} separation {2:g} orbital_period {3:g} eccentricity {4:g} metallicity {5:g} max_evolution_time {6:g}".format( - m1, - m2, - separation, - orbital_period, - eccentricity, - metallicity, - max_evolution_time, - ) - - output = binary_c_python_api.run_system( - argstring, custom_logging_func_memaddr=func_memaddr - ) - - print("function: test_run_system_with_custom_logging") - print("memory adress of custom logging functions:") - print(textwrap.indent(str(func_memaddr), "\t")) - - print("binary_c output:") - print(textwrap.indent(output, "\t")) - - -# Testing other utility functions -def test_return_help(): - output = binary_c_python_api.return_help("M_1") - - print("function: test_return_help") - print("help output:") - print(textwrap.indent(output, "\t")) - - -def test_return_arglines(): - output = binary_c_python_api.return_arglines() - - print("function: test_return_arglines") - print("arglines output:") - print(textwrap.indent(output, "\t")) - - -def test_return_help_all(): - output = binary_c_python_api.return_help_all("M_1") - - print("function: test_return_help_all") - print("help all output:") - print(textwrap.indent(output, "\t")) - - -def test_return_version_info(): - output = binary_c_python_api.return_version_info() - - print("function: test_return_version_info") - print("version info output:") - print(textwrap.indent(output, "\t")) - - -# Testing other functions -def test_return_store(): - output = binary_c_python_api.return_store_memaddr("") - - print("function: test_return_store") - print("store memory adress:") - print(textwrap.indent(str(output), "\t")) - - -#### -if __name__ == "__main__": - test_run_system() - - test_run_system_with_log() - - test_run_system_with_custom_logging() - - test_return_help() - - test_return_arglines() - - test_return_help_all() - - test_return_version_info() - - test_return_store() diff --git a/tests/scaling/argparse_setup.py b/tests/scaling/argparse_setup.py deleted file mode 100644 index 0765c7f77d0f62e94cb6f9aa300855f0ee9a11a0..0000000000000000000000000000000000000000 --- a/tests/scaling/argparse_setup.py +++ /dev/null @@ -1,38 +0,0 @@ -import os -import json -import time -import pickle -import sys -import numpy as np - -from binarycpython.utils.grid import Population -from binarycpython.utils.functions import get_help_all, get_help, create_hdf5 - - -import argparse - - -parser = argparse.ArgumentParser() - -parser.add_argument( - "resolution_M_1", help="Resolution in M_1", -) - -parser.add_argument( - "resolution_per", help="Resolution in period", -) - -parser.add_argument( - "amt_cores", help="The amount of nodes that are used for the multiprocessing", -) - -parser.add_argument( - "name_testcase", help="The name of the testcase (e.g. laptop, cluster etc)", -) - - -args = parser.parse_args() -res_m_1 = int(args.resolution_M_1) -res_per = int(args.resolution_per) -AMT_CORES = int(args.amt_cores) -name_testcase = args.name_testcase diff --git a/tests/scaling/plot_scaling.py b/tests/scaling/plot_scaling.py deleted file mode 100644 index e1b0be376d112a1b7c59dc08ed195b06ca0d8687..0000000000000000000000000000000000000000 --- a/tests/scaling/plot_scaling.py +++ /dev/null @@ -1,208 +0,0 @@ -import os -import json -import math - -import matplotlib.pyplot as plt -import pandas as pd -import numpy as np - - -# Old plotting routine, needs updating -def plot_runtime(calculated_results, unique_amt_cores, unique_amt_systems): - fig = plt.figure() - ax = fig.add_subplot(111) - - color_options = ["blue", "green", "red", "black", "yellow", "magenta"] - - x_position_shift = 0 - y_position_shift = -0.05 - - colors = [color_options[i] for i in range(len(unique_amt_systems))] - for i, amt_systems in enumerate(unique_amt_systems): - - cores = [] - - mean_times_linear = [] - mean_times_multiprocessing = [] - std_linear = [] - std_mp = [] - - for el in calculated_results: - if el["systems"] == amt_systems: - cores.append(el["cores"] + x_position_shift) - - mean_times_linear.append(el["mean_time_sequential"]) - std_linear.append(el["std_sequential"]) - - mean_times_multiprocessing.append(el["mean_time_multiprocessing"]) - std_mp.append(el["std_multiprocessing"]) - - # # add number of runs its based on - # plt.text(el['cores'] + x_position_shift+0.01, el['mean_ratio']+y_position_shift, el['total_runs']) - - ax.errorbar( - cores, - mean_times_linear, - std_linear, - color=colors[i], - linewidth=1, - marker="P", - label="{} systems linear run".format(amt_systems), - ) - ax.errorbar( - cores, - mean_times_multiprocessing, - std_mp, - linewidth=1, - color=colors[i], - marker="d", - label="{} systems MP run".format(amt_systems), - ) - x_position_shift += 0.1 - - ax.set_title( - "Total time for sequential and MP for different amounts of systems on {}".format( - name_testcase - ) - ) - ax.set_xlabel("Amount of cores used") - ax.set_ylabel("Total time taken (s)") - - ax.set_xlim(0, max(unique_amt_cores) + 20) - ax.set_yscale("log") - ax.grid() - ax.legend() - - fig.savefig( - os.path.join(img_dir, "total_time_scaling_{}.{}".format(name_testcase, "png")) - ) - fig.savefig( - os.path.join(img_dir, "total_time_scaling_{}.{}".format(name_testcase, "pdf")) - ) - fig.savefig( - os.path.join(img_dir, "total_time_scaling_{}.{}".format(name_testcase, "eps")) - ) - - plt.show() - - -def amdahl(f, n): - return 1.0 / ((1 - f) + (f / n)) - - -def plot_speedup_and_efficiency(result_json_filenames, plot_output_dir, name_testcase): - """ - Plotting routine to plot the speedup and efficiency of scaling - - Takes the name_testcase and hostname values of - the first json file to add some info to the plots. - """ - - # Setup figure - fig, ax1 = plt.subplots() - ax2 = ax1.twinx() - - # Go over all result jsons - for i, jsonfile in enumerate(result_json_filenames): - print("Processing {}".format(jsonfile)) - with open(jsonfile, "r") as f: - result_data = json.loads(f.read()) - - # Get linear data - linear_data = result_data["linear"] - linear_mean = np.mean(linear_data) - linear_stdev = np.std(linear_data) - - # Get multiprocessing data - cpus, speedups, efficiencies, stddev_speedups = [], [], [], [] - for amt_cpus in result_data["mp"]: - - # Get mp data - mp_data = result_data["mp"][amt_cpus] - mp_mean = np.mean(mp_data) - mp_stdev = np.std(mp_data) - - # Calc - amt_cpus = int(amt_cpus) - speedup = linear_mean / mp_mean - stddev_speedup = ( - math.sqrt( - (linear_stdev / linear_mean) ** 2 + (mp_stdev / mp_mean) ** 2 - ) - * speedup - ) - efficiency = speedup / int(amt_cpus) - - # Add to lists - cpus.append(amt_cpus) - efficiencies.append(efficiency) - speedups.append(speedup) - stddev_speedups.append(stddev_speedup) - - # Plot - ax1.errorbar( - cpus, - speedups, - stddev_speedups, - linestyle="None", - marker="^", - label="{}".format(os.path.basename(jsonfile)), - # label="Speed up & efficiency of {} systems".format( - # result_data["amt_systems"] - # ), - ) - - # Plot the efficiencies - ax2.plot(cpus, efficiencies, alpha=0.5, linestyle="dotted") - # x_position_shift += 0.1 - - ##################### - # Extra plots - - # 100 % scaling line - ax1.plot([1, max(cpus)], [1, max(cpus)], "--", alpha=0.25, label="100% scaling") - ax2.axhline(y=1, linestyle="--", alpha=0.25, label="100% efficient") - # ax1.plot([1, max(cpus)], [1, max(cpus)], '--', alpha=0.25, label='100% scaling') - - # Amdahls law fitting - # Old stuff - # Do Amdahls law fitting - # cores = np.arange(1, 48, 0.1) - # values_list = [] - # par_step = 0.005 - # par_vals = np.arange(.95, 1, par_step) - - # for par_val in par_vals: - # values = amdahl(par_val, cores) - # values_list.append(values) - - # for i, values in enumerate(values_list): - # ax1.plot(cores, values, label="par_val={}".format(par_vals[i])) - - ################################# - # Adding plot make up - ax1.set_title( - "Speed up ratio (left y, symbols) and efficiency (right y, dotted line) vs amount of cores" - ) - - ax1.set_xlabel("Amount of cores used") - ax1.set_ylabel("Speed up ratio (time_linear/time_parallel)") - - ax1.grid() - ax1.legend(loc=4) - ax1.set_xscale("log") - ax2.set_xscale("log") - - ax2.set_ylim(ymin=0, ymax=None) - - fig.savefig( - os.path.join( - plot_output_dir, "speedup_scaling_{}.{}".format(name_testcase, "png") - ) - ) - fig.savefig( - os.path.join( - plot_output_dir, "speedup_scaling_{}.{}".format(name_testcase, "pdf") - ) - ) - plt.show() diff --git a/tests/scaling/scaling_functions.py b/tests/scaling/scaling_functions.py deleted file mode 100644 index 97a5779576a1235c3ca2829251c40dea6cd0455f..0000000000000000000000000000000000000000 --- a/tests/scaling/scaling_functions.py +++ /dev/null @@ -1,180 +0,0 @@ -""" -Module containing the scaling functions. -""" - -import time -import socket -import os - -import json - -import numpy as np - -from binarycpython.utils.grid import Population - - -def dummy_parsefunction(self, output): - """ - Dummy parsing function - """ - pass - - -def get_mp_results(population, cpu_list, amt_repeats, total_systems): - """ - Function that runs a population <amt_repeats> for each - cpu amount (which is picked from cpu_list) - """ - - population.set(evolution_type="mp") - mp_dict = {} - for cpu_amt in cpu_list: - - mp_times = [] - - population.set(amt_cores=cpu_amt) - - # - for _ in range(amt_repeats): - total_mp_start = time.time() - population.evolve_population() - total_mp = time.time() - total_mp_start - - print( - "MP ({} nodes) run with {} systems: {}".format( - cpu_amt, total_systems, total_mp - ) - ) - mp_times.append(total_mp) - - mp_dict[str(cpu_amt)] = mp_times - - return mp_dict - - -def get_linear_results(population, amt_repeats, total_systems): - """ - Function that runs the population linearly (using 1 core) <amt_repeats> times - """ - - population.set(evolution_type="linear") - linear_times = [] - for _ in range(amt_repeats): - total_lin_start = time.time() - population.evolve_population() - total_lin = time.time() - total_lin_start - - print("linear run with {} systems: {}".format(total_systems, total_lin)) - linear_times.append(total_lin) - - return linear_times - - -def run_systems_for_scaling_comparison(settings_dict): - """ - Function that runs the systems for the scaling comparison - """ - - amount_of_cpus = settings_dict["amount_of_cpus"] - amount_of_cores = settings_dict["amount_of_cores"] - amt_repeats = settings_dict["amt_repeats"] - stepsize_cpus = settings_dict["stepsize_cpus"] - testcase = settings_dict["testcase"] - plot_dir = settings_dict["plot_dir"] - result_dir = settings_dict["result_dir"] - - resolutions = settings_dict["resolutions"] - - # For each set of resolutions - for resolution in resolutions: - # Some calculated values - total_systems = int(np.prod([el for el in resolution.values()])) - hostname = socket.gethostname() - - # Generate the range of cpu numbers - cpu_list = np.arange(1, amount_of_cpus + 1, stepsize_cpus) - if not cpu_list[-1] == amount_of_cpus: - cpu_list = np.append(cpu_list, np.array([amount_of_cpus])) - - ################################################################## - # Create dictionary in which to store all the results: - result_dict = {} - - # - result_dict["amt_systems"] = total_systems - result_dict["hostname"] = hostname - result_dict["amt_logical_cores"] = amount_of_cpus - result_dict["amt_of_physical_cores"] = amount_of_cores - result_dict["testcase"] = testcase - - ################# - # Configuring population - test_pop = Population() - - test_pop.set( - verbose=1, binary=1, parse_function=dummy_parsefunction, - ) - - test_pop.add_grid_variable( - name="lnm1", - longname="Primary mass", - valuerange=[1, 100], - resolution="{}".format(resolution["M_1"]), - spacingfunc="const(math.log(1), math.log(100), {})".format( - resolution["M_1"] - ), - precode="M_1=math.exp(lnm1)", - probdist="three_part_powerlaw(M_1, 0.1, 0.5, 1.0, 100, -1.3, -2.3, -2.3)*M_1", - dphasevol="dlnm1", - parameter_name="M_1", - condition="", # Impose a condition on this grid variable. Mostly for a check for yourself - ) - - test_pop.add_grid_variable( - name="q", - longname="Mass ratio", - valuerange=["0.1/M_1", 1], - resolution="{}".format(resolution["q"]), - spacingfunc="const(0.1/M_1, 1, {})".format(resolution["q"]), - probdist="flatsections(q, [{'min': 0.1/M_1, 'max': 0.8, 'height': 1}, {'min': 0.8, 'max': 1.0, 'height': 1.0}])", - dphasevol="dq", - precode="M_2 = q * M_1", - parameter_name="M_2", - condition="", # Impose a condition on this grid variable. Mostly for a check for yourself - ) - - test_pop.add_grid_variable( - name="logper", - longname="log(Orbital_Period)", - valuerange=[-2, 12], - resolution="{}".format(resolution["per"]), - spacingfunc="np.linspace(-2, 12, {})".format(resolution["per"]), - precode="orbital_period = 10** logper\n", # TODO: - probdist="gaussian(logper,4.8, 2.3, -2.0, 12.0)", - parameter_name="orbital_period", - dphasevol="dln10per", - ) - - ####################################################################################### - # Execute grids - - # Linear runs - linear_times = get_linear_results(test_pop, amt_repeats, total_systems) - result_dict["linear"] = linear_times - - ####################################################################################### - # MP runs - mp_dict = get_mp_results(test_pop, cpu_list, amt_repeats, total_systems) - result_dict["mp"] = mp_dict - - print(result_dict) - - # Write to file and make sure the directory exists. - os.makedirs(result_dir, exist_ok=True) - with open( - os.path.join( - result_dir, "{}_{}_systems.json".format(hostname, total_systems) - ), - "w", - ) as f: - f.write(json.dumps(result_dict, indent=4)) diff --git a/tests/scaling/scaling_plots/speedup_scaling_Astro1.eps b/tests/scaling/scaling_plots/speedup_scaling_Astro1.eps deleted file mode 100644 index db04cdb492269bb70a5f374dd791b1b24f254d19..0000000000000000000000000000000000000000 --- a/tests/scaling/scaling_plots/speedup_scaling_Astro1.eps +++ /dev/null @@ -1,2382 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Title: scaling_plots/speedup_scaling_Astro1.eps -%%Creator: matplotlib version 3.1.2, http://matplotlib.org/ -%%CreationDate: Mon Feb 10 18:09:40 2020 -%%Orientation: portrait -%%BoundingBox: 75.6 223.20000000000002 536.4 568.8 -%%EndComments -%%BeginProlog -/mpldict 8 dict def -mpldict begin -/m { moveto } bind def -/l { lineto } bind def -/r { rlineto } bind def -/c { curveto } bind def -/cl { closepath } bind def -/box { -m -1 index 0 r -0 exch r -neg 0 r -cl -} bind def -/clipbox { -box -clip -newpath -} bind def -%!PS-Adobe-3.0 Resource-Font -%%Title: DejaVu Sans -%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain -%%Creator: Converted from TrueType to type 3 by PPR -25 dict begin -/_d{bind def}bind def -/_m{moveto}_d -/_l{lineto}_d -/_cl{closepath eofill}_d -/_c{curveto}_d -/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d -/_e{exec}_d -/FontName /DejaVuSans def -/PaintType 0 def -/FontMatrix[.001 0 0 .001 0 0]def -/FontBBox[-1021 -463 1793 1232]def -/FontType 3 def -/Encoding [ /space /ampersand /parenleft /parenright /period /slash /zero /one /two /three /four /five /six /seven /eight /A /S /underscore /a /c /d /e /f /i /l /m /n /o /p /r /s /t /u /v /y ] def -/FontInfo 10 dict dup begin -/FamilyName (DejaVu Sans) def -/FullName (DejaVu Sans) def -/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def -/Weight (Book) def -/Version (Version 2.35) def -/ItalicAngle 0.0 def -/isFixedPitch false def -/UnderlinePosition -130 def -/UnderlineThickness 90 def -end readonly def -/CharStrings 36 dict dup begin -/.notdef 0 def -/space{318 0 0 0 0 0 _sc -}_d -/ampersand{{780 0 63 -13 749 742 _sc -243 392 _m -213 366 192 339 178 313 _c -164 287 157 259 157 231 _c -157 183 174 144 209 112 _c -243 80 287 65 339 65 _c -369 65 398 70 425 80 _c -452 90 478 106 502 127 _c -243 392 _l -312 447 _m -560 193 _l -579 221 594 252 605 285 _c -615 318 622 353 624 391 _c -715 391 _l -711 348 700 306 683 264 _c -666 222 643 180 613 139 _c -749 0 _l -626 0 _l -}_e{556 72 _l -522 42 486 21 449 7 _c -412 -6 372 -13 330 -13 _c -251 -13 187 9 137 53 _c -87 97 63 155 63 225 _c -63 267 73 306 95 342 _c -117 378 150 413 194 446 _c -178 466 166 487 158 507 _c -150 527 146 547 146 567 _c -146 619 164 662 200 694 _c -236 726 284 742 344 742 _c -371 742 398 739 425 733 _c -451 727 479 719 507 707 _c -507 618 _l -478 633 451 645 425 653 _c -}_e{399 661 376 665 354 665 _c -320 665 292 656 271 638 _c -249 620 239 596 239 568 _c -239 551 243 534 253 518 _c -263 501 282 477 312 447 _c -_cl}_e}_d -/parenleft{390 0 86 -131 310 759 _sc -310 759 _m -266 683 234 609 213 536 _c -191 463 181 389 181 314 _c -181 238 191 164 213 91 _c -234 17 266 -56 310 -131 _c -232 -131 _l -183 -54 146 20 122 94 _c -98 168 86 241 86 314 _c -86 386 98 459 122 533 _c -146 607 182 682 232 759 _c -310 759 _l -_cl}_d -/parenright{390 0 80 -131 304 759 _sc -80 759 _m -158 759 _l -206 682 243 607 267 533 _c -291 459 304 386 304 314 _c -304 241 291 168 267 94 _c -243 20 206 -54 158 -131 _c -80 -131 _l -123 -56 155 17 177 91 _c -198 164 209 238 209 314 _c -209 389 198 463 177 536 _c -155 609 123 683 80 759 _c -_cl}_d -/period{318 0 107 0 210 124 _sc -107 124 _m -210 124 _l -210 0 _l -107 0 _l -107 124 _l -_cl}_d -/slash{337 0 0 -92 337 729 _sc -254 729 _m -337 729 _l -83 -92 _l -0 -92 _l -254 729 _l -_cl}_d -/zero{636 0 66 -13 570 742 _sc -318 664 _m -267 664 229 639 203 589 _c -177 539 165 464 165 364 _c -165 264 177 189 203 139 _c -229 89 267 64 318 64 _c -369 64 407 89 433 139 _c -458 189 471 264 471 364 _c -471 464 458 539 433 589 _c -407 639 369 664 318 664 _c -318 742 _m -399 742 461 709 505 645 _c -548 580 570 486 570 364 _c -570 241 548 147 505 83 _c -461 19 399 -13 318 -13 _c -236 -13 173 19 130 83 _c -87 147 66 241 66 364 _c -66 486 87 580 130 645 _c -173 709 236 742 318 742 _c -_cl}_d -/one{636 0 110 0 544 729 _sc -124 83 _m -285 83 _l -285 639 _l -110 604 _l -110 694 _l -284 729 _l -383 729 _l -383 83 _l -544 83 _l -544 0 _l -124 0 _l -124 83 _l -_cl}_d -/two{{636 0 73 0 536 742 _sc -192 83 _m -536 83 _l -536 0 _l -73 0 _l -73 83 _l -110 121 161 173 226 239 _c -290 304 331 346 348 365 _c -380 400 402 430 414 455 _c -426 479 433 504 433 528 _c -433 566 419 598 392 622 _c -365 646 330 659 286 659 _c -255 659 222 653 188 643 _c -154 632 117 616 78 594 _c -78 694 _l -118 710 155 722 189 730 _c -223 738 255 742 284 742 _c -}_e{359 742 419 723 464 685 _c -509 647 532 597 532 534 _c -532 504 526 475 515 449 _c -504 422 484 390 454 354 _c -446 344 420 317 376 272 _c -332 227 271 164 192 83 _c -_cl}_e}_d -/three{{636 0 76 -13 556 742 _sc -406 393 _m -453 383 490 362 516 330 _c -542 298 556 258 556 212 _c -556 140 531 84 482 45 _c -432 6 362 -13 271 -13 _c -240 -13 208 -10 176 -4 _c -144 1 110 10 76 22 _c -76 117 _l -103 101 133 89 166 81 _c -198 73 232 69 268 69 _c -330 69 377 81 409 105 _c -441 129 458 165 458 212 _c -458 254 443 288 413 312 _c -383 336 341 349 287 349 _c -}_e{202 349 _l -202 430 _l -291 430 _l -339 430 376 439 402 459 _c -428 478 441 506 441 543 _c -441 580 427 609 401 629 _c -374 649 336 659 287 659 _c -260 659 231 656 200 650 _c -169 644 135 635 98 623 _c -98 711 _l -135 721 170 729 203 734 _c -235 739 266 742 296 742 _c -370 742 429 725 473 691 _c -517 657 539 611 539 553 _c -539 513 527 479 504 451 _c -481 423 448 403 406 393 _c -_cl}_e}_d -/four{636 0 49 0 580 729 _sc -378 643 _m -129 254 _l -378 254 _l -378 643 _l -352 729 _m -476 729 _l -476 254 _l -580 254 _l -580 172 _l -476 172 _l -476 0 _l -378 0 _l -378 172 _l -49 172 _l -49 267 _l -352 729 _l -_cl}_d -/five{{636 0 77 -13 549 729 _sc -108 729 _m -495 729 _l -495 646 _l -198 646 _l -198 467 _l -212 472 227 476 241 478 _c -255 480 270 482 284 482 _c -365 482 429 459 477 415 _c -525 370 549 310 549 234 _c -549 155 524 94 475 51 _c -426 8 357 -13 269 -13 _c -238 -13 207 -10 175 -6 _c -143 -1 111 6 77 17 _c -77 116 _l -106 100 136 88 168 80 _c -199 72 232 69 267 69 _c -}_e{323 69 368 83 401 113 _c -433 143 450 183 450 234 _c -450 284 433 324 401 354 _c -368 384 323 399 267 399 _c -241 399 214 396 188 390 _c -162 384 135 375 108 363 _c -108 729 _l -_cl}_e}_d -/six{{636 0 70 -13 573 742 _sc -330 404 _m -286 404 251 388 225 358 _c -199 328 186 286 186 234 _c -186 181 199 139 225 109 _c -251 79 286 64 330 64 _c -374 64 409 79 435 109 _c -461 139 474 181 474 234 _c -474 286 461 328 435 358 _c -409 388 374 404 330 404 _c -526 713 _m -526 623 _l -501 635 476 644 451 650 _c -425 656 400 659 376 659 _c -310 659 260 637 226 593 _c -}_e{192 549 172 482 168 394 _c -187 422 211 444 240 459 _c -269 474 301 482 336 482 _c -409 482 467 459 509 415 _c -551 371 573 310 573 234 _c -573 159 550 99 506 54 _c -462 9 403 -13 330 -13 _c -246 -13 181 19 137 83 _c -92 147 70 241 70 364 _c -70 479 97 571 152 639 _c -206 707 280 742 372 742 _c -396 742 421 739 447 735 _c -472 730 498 723 526 713 _c -_cl}_e}_d -/seven{636 0 82 0 551 729 _sc -82 729 _m -551 729 _l -551 687 _l -286 0 _l -183 0 _l -432 646 _l -82 646 _l -82 729 _l -_cl}_d -/eight{{636 0 68 -13 568 742 _sc -318 346 _m -271 346 234 333 207 308 _c -180 283 167 249 167 205 _c -167 161 180 126 207 101 _c -234 76 271 64 318 64 _c -364 64 401 76 428 102 _c -455 127 469 161 469 205 _c -469 249 455 283 429 308 _c -402 333 365 346 318 346 _c -219 388 _m -177 398 144 418 120 447 _c -96 476 85 511 85 553 _c -85 611 105 657 147 691 _c -188 725 245 742 318 742 _c -}_e{390 742 447 725 489 691 _c -530 657 551 611 551 553 _c -551 511 539 476 515 447 _c -491 418 459 398 417 388 _c -464 377 501 355 528 323 _c -554 291 568 251 568 205 _c -568 134 546 80 503 43 _c -459 5 398 -13 318 -13 _c -237 -13 175 5 132 43 _c -89 80 68 134 68 205 _c -68 251 81 291 108 323 _c -134 355 171 377 219 388 _c -183 544 _m -183 506 194 476 218 455 _c -}_e{242 434 275 424 318 424 _c -360 424 393 434 417 455 _c -441 476 453 506 453 544 _c -453 582 441 611 417 632 _c -393 653 360 664 318 664 _c -275 664 242 653 218 632 _c -194 611 183 582 183 544 _c -_cl}_e}_d -/A{684 0 8 0 676 729 _sc -342 632 _m -208 269 _l -476 269 _l -342 632 _l -286 729 _m -398 729 _l -676 0 _l -573 0 _l -507 187 _l -178 187 _l -112 0 _l -8 0 _l -286 729 _l -_cl}_d -/S{{635 0 66 -13 579 742 _sc -535 705 _m -535 609 _l -497 627 462 640 429 649 _c -395 657 363 662 333 662 _c -279 662 237 651 208 631 _c -179 610 165 580 165 542 _c -165 510 174 485 194 469 _c -213 452 250 439 304 429 _c -364 417 _l -437 403 491 378 526 343 _c -561 307 579 260 579 201 _c -579 130 555 77 508 41 _c -460 5 391 -13 300 -13 _c -265 -13 228 -9 189 -2 _c -}_e{150 5 110 16 69 32 _c -69 134 _l -109 111 148 94 186 83 _c -224 71 262 66 300 66 _c -356 66 399 77 430 99 _c -460 121 476 152 476 194 _c -476 230 465 258 443 278 _c -421 298 385 313 335 323 _c -275 335 _l -201 349 148 372 115 404 _c -82 435 66 478 66 534 _c -66 598 88 649 134 686 _c -179 723 242 742 322 742 _c -356 742 390 739 426 733 _c -461 727 497 717 535 705 _c -}_e{_cl}_e}_d -/underscore{500 0 -9 -235 510 -165 _sc -510 -165 _m -510 -235 _l --9 -235 _l --9 -165 _l -510 -165 _l -_cl}_d -/a{{613 0 60 -13 522 560 _sc -343 275 _m -270 275 220 266 192 250 _c -164 233 150 205 150 165 _c -150 133 160 107 181 89 _c -202 70 231 61 267 61 _c -317 61 357 78 387 114 _c -417 149 432 196 432 255 _c -432 275 _l -343 275 _l -522 312 _m -522 0 _l -432 0 _l -432 83 _l -411 49 385 25 355 10 _c -325 -5 287 -13 243 -13 _c -187 -13 142 2 109 33 _c -76 64 60 106 60 159 _c -}_e{60 220 80 266 122 298 _c -163 329 224 345 306 345 _c -432 345 _l -432 354 _l -432 395 418 427 391 450 _c -364 472 326 484 277 484 _c -245 484 215 480 185 472 _c -155 464 127 453 100 439 _c -100 522 _l -132 534 164 544 195 550 _c -226 556 256 560 286 560 _c -365 560 424 539 463 498 _c -502 457 522 395 522 312 _c -_cl}_e}_d -/c{{550 0 55 -13 488 560 _sc -488 526 _m -488 442 _l -462 456 437 466 411 473 _c -385 480 360 484 334 484 _c -276 484 230 465 198 428 _c -166 391 150 339 150 273 _c -150 206 166 154 198 117 _c -230 80 276 62 334 62 _c -360 62 385 65 411 72 _c -437 79 462 90 488 104 _c -488 21 _l -462 9 436 0 410 -5 _c -383 -10 354 -13 324 -13 _c -242 -13 176 12 128 64 _c -}_e{79 115 55 185 55 273 _c -55 362 79 432 128 483 _c -177 534 244 560 330 560 _c -358 560 385 557 411 551 _c -437 545 463 537 488 526 _c -_cl}_e}_d -/d{{635 0 55 -13 544 760 _sc -454 464 _m -454 760 _l -544 760 _l -544 0 _l -454 0 _l -454 82 _l -435 49 411 25 382 10 _c -353 -5 319 -13 279 -13 _c -213 -13 159 13 117 65 _c -75 117 55 187 55 273 _c -55 359 75 428 117 481 _c -159 533 213 560 279 560 _c -319 560 353 552 382 536 _c -411 520 435 496 454 464 _c -148 273 _m -148 207 161 155 188 117 _c -215 79 253 61 301 61 _c -}_e{348 61 385 79 413 117 _c -440 155 454 207 454 273 _c -454 339 440 390 413 428 _c -385 466 348 485 301 485 _c -253 485 215 466 188 428 _c -161 390 148 339 148 273 _c -_cl}_e}_d -/e{{615 0 55 -13 562 560 _sc -562 296 _m -562 252 _l -149 252 _l -153 190 171 142 205 110 _c -238 78 284 62 344 62 _c -378 62 412 66 444 74 _c -476 82 509 95 541 113 _c -541 28 _l -509 14 476 3 442 -3 _c -408 -9 373 -13 339 -13 _c -251 -13 182 12 131 62 _c -80 112 55 181 55 268 _c -55 357 79 428 127 481 _c -175 533 241 560 323 560 _c -397 560 455 536 498 489 _c -}_e{540 441 562 377 562 296 _c -472 322 _m -471 371 457 410 431 440 _c -404 469 368 484 324 484 _c -274 484 234 469 204 441 _c -174 413 156 373 152 322 _c -472 322 _l -_cl}_e}_d -/f{352 0 23 0 371 760 _sc -371 760 _m -371 685 _l -285 685 _l -253 685 230 678 218 665 _c -205 652 199 629 199 595 _c -199 547 _l -347 547 _l -347 477 _l -199 477 _l -199 0 _l -109 0 _l -109 477 _l -23 477 _l -23 547 _l -109 547 _l -109 585 _l -109 645 123 690 151 718 _c -179 746 224 760 286 760 _c -371 760 _l -_cl}_d -/i{278 0 94 0 184 760 _sc -94 547 _m -184 547 _l -184 0 _l -94 0 _l -94 547 _l -94 760 _m -184 760 _l -184 646 _l -94 646 _l -94 760 _l -_cl}_d -/l{278 0 94 0 184 760 _sc -94 760 _m -184 760 _l -184 0 _l -94 0 _l -94 760 _l -_cl}_d -/m{{974 0 91 0 889 560 _sc -520 442 _m -542 482 569 511 600 531 _c -631 550 668 560 711 560 _c -767 560 811 540 842 500 _c -873 460 889 403 889 330 _c -889 0 _l -799 0 _l -799 327 _l -799 379 789 418 771 444 _c -752 469 724 482 686 482 _c -639 482 602 466 575 435 _c -548 404 535 362 535 309 _c -535 0 _l -445 0 _l -445 327 _l -445 379 435 418 417 444 _c -398 469 369 482 331 482 _c -}_e{285 482 248 466 221 435 _c -194 404 181 362 181 309 _c -181 0 _l -91 0 _l -91 547 _l -181 547 _l -181 462 _l -201 495 226 520 255 536 _c -283 552 317 560 357 560 _c -397 560 430 550 458 530 _c -486 510 506 480 520 442 _c -_cl}_e}_d -/n{634 0 91 0 549 560 _sc -549 330 _m -549 0 _l -459 0 _l -459 327 _l -459 379 448 417 428 443 _c -408 469 378 482 338 482 _c -289 482 251 466 223 435 _c -195 404 181 362 181 309 _c -181 0 _l -91 0 _l -91 547 _l -181 547 _l -181 462 _l -202 494 227 519 257 535 _c -286 551 320 560 358 560 _c -420 560 468 540 500 501 _c -532 462 549 405 549 330 _c -_cl}_d -/o{612 0 55 -13 557 560 _sc -306 484 _m -258 484 220 465 192 427 _c -164 389 150 338 150 273 _c -150 207 163 156 191 118 _c -219 80 257 62 306 62 _c -354 62 392 80 420 118 _c -448 156 462 207 462 273 _c -462 337 448 389 420 427 _c -392 465 354 484 306 484 _c -306 560 _m -384 560 445 534 490 484 _c -534 433 557 363 557 273 _c -557 183 534 113 490 63 _c -445 12 384 -13 306 -13 _c -227 -13 165 12 121 63 _c -77 113 55 183 55 273 _c -55 363 77 433 121 484 _c -165 534 227 560 306 560 _c -_cl}_d -/p{{635 0 91 -207 580 560 _sc -181 82 _m -181 -207 _l -91 -207 _l -91 547 _l -181 547 _l -181 464 _l -199 496 223 520 252 536 _c -281 552 316 560 356 560 _c -422 560 476 533 518 481 _c -559 428 580 359 580 273 _c -580 187 559 117 518 65 _c -476 13 422 -13 356 -13 _c -316 -13 281 -5 252 10 _c -223 25 199 49 181 82 _c -487 273 _m -487 339 473 390 446 428 _c -418 466 381 485 334 485 _c -}_e{286 485 249 466 222 428 _c -194 390 181 339 181 273 _c -181 207 194 155 222 117 _c -249 79 286 61 334 61 _c -381 61 418 79 446 117 _c -473 155 487 207 487 273 _c -_cl}_e}_d -/r{411 0 91 0 411 560 _sc -411 463 _m -401 469 390 473 378 476 _c -366 478 353 480 339 480 _c -288 480 249 463 222 430 _c -194 397 181 350 181 288 _c -181 0 _l -91 0 _l -91 547 _l -181 547 _l -181 462 _l -199 495 224 520 254 536 _c -284 552 321 560 365 560 _c -371 560 378 559 386 559 _c -393 558 401 557 411 555 _c -411 463 _l -_cl}_d -/s{{521 0 54 -13 472 560 _sc -443 531 _m -443 446 _l -417 458 391 468 364 475 _c -336 481 308 485 279 485 _c -234 485 200 478 178 464 _c -156 450 145 430 145 403 _c -145 382 153 366 169 354 _c -185 342 217 330 265 320 _c -296 313 _l -360 299 405 279 432 255 _c -458 230 472 195 472 151 _c -472 100 452 60 412 31 _c -372 1 316 -13 246 -13 _c -216 -13 186 -10 154 -5 _c -}_e{122 0 89 8 54 20 _c -54 113 _l -87 95 120 82 152 74 _c -184 65 216 61 248 61 _c -290 61 323 68 346 82 _c -368 96 380 117 380 144 _c -380 168 371 187 355 200 _c -339 213 303 226 247 238 _c -216 245 _l -160 257 119 275 95 299 _c -70 323 58 356 58 399 _c -58 450 76 490 112 518 _c -148 546 200 560 268 560 _c -301 560 332 557 362 552 _c -391 547 418 540 443 531 _c -}_e{_cl}_e}_d -/t{392 0 27 0 368 702 _sc -183 702 _m -183 547 _l -368 547 _l -368 477 _l -183 477 _l -183 180 _l -183 135 189 106 201 94 _c -213 81 238 75 276 75 _c -368 75 _l -368 0 _l -276 0 _l -206 0 158 13 132 39 _c -106 65 93 112 93 180 _c -93 477 _l -27 477 _l -27 547 _l -93 547 _l -93 702 _l -183 702 _l -_cl}_d -/u{634 0 85 -13 543 560 _sc -85 216 _m -85 547 _l -175 547 _l -175 219 _l -175 167 185 129 205 103 _c -225 77 255 64 296 64 _c -344 64 383 79 411 110 _c -439 141 453 183 453 237 _c -453 547 _l -543 547 _l -543 0 _l -453 0 _l -453 84 _l -431 50 405 26 377 10 _c -348 -5 315 -13 277 -13 _c -214 -13 166 6 134 45 _c -101 83 85 140 85 216 _c -311 560 _m -311 560 _l -_cl}_d -/v{592 0 30 0 562 547 _sc -30 547 _m -125 547 _l -296 88 _l -467 547 _l -562 547 _l -357 0 _l -235 0 _l -30 547 _l -_cl}_d -/y{592 0 30 -207 562 547 _sc -322 -50 _m -296 -114 271 -157 247 -177 _c -223 -197 191 -207 151 -207 _c -79 -207 _l -79 -132 _l -132 -132 _l -156 -132 175 -126 189 -114 _c -203 -102 218 -75 235 -31 _c -251 9 _l -30 547 _l -125 547 _l -296 119 _l -467 547 _l -562 547 _l -322 -50 _l -_cl}_d -end readonly def - -/BuildGlyph - {exch begin - CharStrings exch - 2 copy known not{pop /.notdef}if - true 3 1 roll get exec - end}_d - -/BuildChar { - 1 index /Encoding get exch get - 1 index /BuildGlyph get exec -}_d - -FontName currentdict end definefont pop -end -%%EndProlog -mpldict begin -75.6 223.2 translate -460.8 345.6 0 0 clipbox -gsave -0 0 m -460.8 0 l -460.8 345.6 l -0 345.6 l -cl -1.000 setgray -fill -grestore -gsave -57.6 38.016 m -414.72 38.016 l -414.72 304.128 l -57.6 304.128 l -cl -1.000 setgray -fill -grestore -0.800 setlinewidth -1 setlinejoin -2 setlinecap -[] 0 setdash -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -57.6 38.016 m -57.6 304.128 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -0 -3.5 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 38.016 o -grestore -/DejaVuSans findfont -10.000 scalefont -setfont -gsave -54.420313 23.422250 translate -0.000000 rotate -0.000000 0.000000 m /zero glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -107.2 38.016 m -107.2 304.128 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -0 -3.5 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -107.2 38.016 o -grestore -gsave -104.020313 23.422250 translate -0.000000 rotate -0.000000 0.000000 m /five glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -156.8 38.016 m -156.8 304.128 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -0 -3.5 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -156.8 38.016 o -grestore -gsave -150.440625 23.422250 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /zero glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -206.4 38.016 m -206.4 304.128 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -0 -3.5 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -206.4 38.016 o -grestore -gsave -200.040625 23.422250 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /five glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -256 38.016 m -256 304.128 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -0 -3.5 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -256 38.016 o -grestore -gsave -249.640625 23.422250 translate -0.000000 rotate -0.000000 0.000000 m /two glyphshow -6.362305 0.000000 m /zero glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -305.6 38.016 m -305.6 304.128 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -0 -3.5 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -305.6 38.016 o -grestore -gsave -299.240625 23.422250 translate -0.000000 rotate -0.000000 0.000000 m /two glyphshow -6.362305 0.000000 m /five glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -355.2 38.016 m -355.2 304.128 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -0 -3.5 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -355.2 38.016 o -grestore -gsave -348.840625 23.422250 translate -0.000000 rotate -0.000000 0.000000 m /three glyphshow -6.362305 0.000000 m /zero glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -404.8 38.016 m -404.8 304.128 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -0 -3.5 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -404.8 38.016 o -grestore -gsave -398.440625 23.422250 translate -0.000000 rotate -0.000000 0.000000 m /three glyphshow -6.362305 0.000000 m /five glyphshow -grestore -gsave -181.308437 9.750375 translate -0.000000 rotate -0.000000 0.000000 m /A glyphshow -6.840820 0.000000 m /m glyphshow -16.582031 0.000000 m /o glyphshow -22.700195 0.000000 m /u glyphshow -29.038086 0.000000 m /n glyphshow -35.375977 0.000000 m /t glyphshow -39.296875 0.000000 m /space glyphshow -42.475586 0.000000 m /o glyphshow -48.593750 0.000000 m /f glyphshow -52.114258 0.000000 m /space glyphshow -55.292969 0.000000 m /c glyphshow -60.791016 0.000000 m /o glyphshow -66.909180 0.000000 m /r glyphshow -71.020508 0.000000 m /e glyphshow -77.172852 0.000000 m /s glyphshow -82.382812 0.000000 m /space glyphshow -85.561523 0.000000 m /u glyphshow -91.899414 0.000000 m /s glyphshow -97.109375 0.000000 m /e glyphshow -103.261719 0.000000 m /d glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -57.6 38.016 m -414.72 38.016 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --3.5 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 38.016 o -grestore -gsave -34.693750 34.219125 translate -0.000000 rotate -0.000000 0.000000 m /zero glyphshow -6.362305 0.000000 m /period glyphshow -9.541016 0.000000 m /zero glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -57.6 74.846409 m -414.72 74.846409 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --3.5 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 74.8464 o -grestore -gsave -34.693750 71.049534 translate -0.000000 rotate -0.000000 0.000000 m /two glyphshow -6.362305 0.000000 m /period glyphshow -9.541016 0.000000 m /five glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -57.6 111.676819 m -414.72 111.676819 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --3.5 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 111.677 o -grestore -gsave -34.693750 107.879944 translate -0.000000 rotate -0.000000 0.000000 m /five glyphshow -6.362305 0.000000 m /period glyphshow -9.541016 0.000000 m /zero glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -57.6 148.507228 m -414.72 148.507228 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --3.5 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 148.507 o -grestore -gsave -34.693750 144.710353 translate -0.000000 rotate -0.000000 0.000000 m /seven glyphshow -6.362305 0.000000 m /period glyphshow -9.541016 0.000000 m /five glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -57.6 185.337638 m -414.72 185.337638 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --3.5 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 185.338 o -grestore -gsave -28.334375 181.540763 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /zero glyphshow -12.724609 0.000000 m /period glyphshow -15.903320 0.000000 m /zero glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -57.6 222.168047 m -414.72 222.168047 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --3.5 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 222.168 o -grestore -gsave -28.334375 218.371172 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /two glyphshow -12.724609 0.000000 m /period glyphshow -15.903320 0.000000 m /five glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -57.6 258.998457 m -414.72 258.998457 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --3.5 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 258.998 o -grestore -gsave -28.334375 255.201582 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /five glyphshow -12.724609 0.000000 m /period glyphshow -15.903320 0.000000 m /zero glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -57.6 295.828866 m -414.72 295.828866 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --3.5 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 295.829 o -grestore -gsave -28.334375 292.031991 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /seven glyphshow -12.724609 0.000000 m /period glyphshow -15.903320 0.000000 m /five glyphshow -grestore -gsave -21.975000 66.790750 translate -90.000000 rotate -0.000000 0.000000 m /S glyphshow -6.347656 0.000000 m /p glyphshow -12.695312 0.000000 m /e glyphshow -18.847656 0.000000 m /e glyphshow -25.000000 0.000000 m /d glyphshow -31.347656 0.000000 m /space glyphshow -34.526367 0.000000 m /u glyphshow -40.864258 0.000000 m /p glyphshow -47.211914 0.000000 m /space glyphshow -50.390625 0.000000 m /r glyphshow -54.501953 0.000000 m /a glyphshow -60.629883 0.000000 m /t glyphshow -64.550781 0.000000 m /i glyphshow -67.329102 0.000000 m /o glyphshow -73.447266 0.000000 m /space glyphshow -76.625977 0.000000 m /parenleft glyphshow -80.527344 0.000000 m /t glyphshow -84.448242 0.000000 m /i glyphshow -87.226562 0.000000 m /m glyphshow -96.967773 0.000000 m /e glyphshow -103.120117 0.000000 m /underscore glyphshow -108.120117 0.000000 m /l glyphshow -110.898438 0.000000 m /i glyphshow -113.676758 0.000000 m /n glyphshow -120.014648 0.000000 m /e glyphshow -126.166992 0.000000 m /a glyphshow -132.294922 0.000000 m /r glyphshow -136.406250 0.000000 m /slash glyphshow -139.775391 0.000000 m /t glyphshow -143.696289 0.000000 m /i glyphshow -146.474609 0.000000 m /m glyphshow -156.215820 0.000000 m /e glyphshow -162.368164 0.000000 m /underscore glyphshow -167.368164 0.000000 m /p glyphshow -173.715820 0.000000 m /a glyphshow -179.843750 0.000000 m /r glyphshow -183.955078 0.000000 m /a glyphshow -190.083008 0.000000 m /l glyphshow -192.861328 0.000000 m /l glyphshow -195.639648 0.000000 m /e glyphshow -201.791992 0.000000 m /l glyphshow -204.570312 0.000000 m /parenright glyphshow -grestore -1.500 setlinewidth -0.122 0.467 0.706 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -97.28 93.11321 m -97.28 94.937504 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -136.96 138.726819 m -136.96 143.152523 l -stroke -grestore -1.000 0.498 0.055 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -98.272 92.6672 m -98.272 94.395781 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -137.952 141.230754 m -137.952 143.810763 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -217.312 234.854494 m -217.312 242.886387 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -376.032 270.31909 m -376.032 272.021243 l -stroke -grestore -0.173 0.627 0.173 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -99.264 93.561171 m -99.264 95.050768 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -138.944 142.690301 m -138.944 144.958992 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -218.304 238.15113 m -218.304 243.654053 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -377.024 272.364581 m -377.024 276.918413 l -stroke -grestore -0.839 0.153 0.157 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -100.256 94.167442 m -100.256 94.827622 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -139.936 143.074747 m -139.936 143.925556 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -219.296 239.160228 m -219.296 249.373902 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -378.016 268.236873 m -378.016 281.090472 l -stroke -grestore -1.000 setlinewidth -0 setlinejoin -0.122 0.467 0.706 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap -0 3 m --3 -3 l -3 -3 l -cl - -gsave -0.122 0.467 0.706 setrgbcolor -fill -grestore -stroke -grestore -} bind def -97.28 94.0254 o -136.96 140.94 o -grestore -1.000 0.498 0.055 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap -0 3 m --3 -3 l -3 -3 l -cl - -gsave -1.000 0.498 0.055 setrgbcolor -fill -grestore -stroke -grestore -} bind def -98.272 93.5315 o -137.952 142.521 o -217.312 238.87 o -376.032 271.17 o -grestore -0.173 0.627 0.173 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap -0 3 m --3 -3 l -3 -3 l -cl - -gsave -0.173 0.627 0.173 setrgbcolor -fill -grestore -stroke -grestore -} bind def -99.264 94.306 o -138.944 143.825 o -218.304 240.903 o -377.024 274.641 o -grestore -0.839 0.153 0.157 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap -0 3 m --3 -3 l -3 -3 l -cl - -gsave -0.839 0.153 0.157 setrgbcolor -fill -grestore -stroke -grestore -} bind def -100.256 94.4975 o -139.936 143.5 o -219.296 244.267 o -378.016 274.664 o -grestore -0.800 setlinewidth -2 setlinecap -[] 0 setdash -0.000 setgray -gsave -57.6 38.016 m -57.6 304.128 l -stroke -grestore -gsave -414.72 38.016 m -414.72 304.128 l -stroke -grestore -gsave -57.6 38.016 m -414.72 38.016 l -stroke -grestore -gsave -57.6 304.128 m -414.72 304.128 l -stroke -grestore -gsave -97.379200 93.288749 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /two glyphshow -grestore -gsave -137.059200 140.203063 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /two glyphshow -grestore -gsave -98.371200 92.794882 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /two glyphshow -grestore -gsave -138.051200 141.784150 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /two glyphshow -grestore -gsave -217.411200 238.133832 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /two glyphshow -grestore -gsave -376.131200 270.433558 translate -0.000000 rotate -0.000000 0.000000 m /four glyphshow -grestore -gsave -99.363200 93.569361 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /one glyphshow -grestore -gsave -139.043200 143.088038 translate -0.000000 rotate -0.000000 0.000000 m /eight glyphshow -grestore -gsave -218.403200 240.165983 translate -0.000000 rotate -0.000000 0.000000 m /eight glyphshow -grestore -gsave -377.123200 273.904889 translate -0.000000 rotate -0.000000 0.000000 m /eight glyphshow -grestore -gsave -100.355200 93.760924 translate -0.000000 rotate -0.000000 0.000000 m /four glyphshow -grestore -gsave -140.035200 142.763544 translate -0.000000 rotate -0.000000 0.000000 m /four glyphshow -grestore -gsave -219.395200 243.530457 translate -0.000000 rotate -0.000000 0.000000 m /four glyphshow -grestore -gsave -378.115200 273.927064 translate -0.000000 rotate -0.000000 0.000000 m /four glyphshow -grestore -/DejaVuSans findfont -12.000 scalefont -setfont -gsave -1.363125 310.128000 translate -0.000000 rotate -0.000000 0.000000 m /S glyphshow -7.617188 0.000000 m /p glyphshow -15.234375 0.000000 m /e glyphshow -22.617188 0.000000 m /e glyphshow -30.000000 0.000000 m /d glyphshow -37.617188 0.000000 m /space glyphshow -41.431641 0.000000 m /u glyphshow -49.037109 0.000000 m /p glyphshow -56.654297 0.000000 m /space glyphshow -60.468750 0.000000 m /r glyphshow -65.402344 0.000000 m /a glyphshow -72.755859 0.000000 m /t glyphshow -77.460938 0.000000 m /i glyphshow -80.794922 0.000000 m /o glyphshow -88.136719 0.000000 m /space glyphshow -91.951172 0.000000 m /v glyphshow -99.052734 0.000000 m /s glyphshow -105.304688 0.000000 m /space glyphshow -109.119141 0.000000 m /a glyphshow -116.472656 0.000000 m /m glyphshow -128.162109 0.000000 m /o glyphshow -135.503906 0.000000 m /u glyphshow -143.109375 0.000000 m /n glyphshow -150.714844 0.000000 m /t glyphshow -155.419922 0.000000 m /space glyphshow -159.234375 0.000000 m /o glyphshow -166.576172 0.000000 m /f glyphshow -170.800781 0.000000 m /space glyphshow -174.615234 0.000000 m /c glyphshow -181.212891 0.000000 m /o glyphshow -188.554688 0.000000 m /r glyphshow -193.488281 0.000000 m /e glyphshow -200.871094 0.000000 m /s glyphshow -207.123047 0.000000 m /space glyphshow -210.937500 0.000000 m /f glyphshow -215.162109 0.000000 m /o glyphshow -222.503906 0.000000 m /r glyphshow -227.437500 0.000000 m /space glyphshow -231.251953 0.000000 m /d glyphshow -238.869141 0.000000 m /i glyphshow -242.203125 0.000000 m /f glyphshow -246.427734 0.000000 m /f glyphshow -250.652344 0.000000 m /e glyphshow -258.035156 0.000000 m /r glyphshow -262.968750 0.000000 m /e glyphshow -270.351562 0.000000 m /n glyphshow -277.957031 0.000000 m /t glyphshow -282.662109 0.000000 m /space glyphshow -286.476562 0.000000 m /a glyphshow -293.830078 0.000000 m /m glyphshow -305.519531 0.000000 m /o glyphshow -312.861328 0.000000 m /u glyphshow -320.466797 0.000000 m /n glyphshow -328.072266 0.000000 m /t glyphshow -332.777344 0.000000 m /s glyphshow -339.029297 0.000000 m /space glyphshow -342.843750 0.000000 m /o glyphshow -350.185547 0.000000 m /f glyphshow -354.410156 0.000000 m /space glyphshow -358.224609 0.000000 m /s glyphshow -364.476562 0.000000 m /y glyphshow -371.578125 0.000000 m /s glyphshow -377.830078 0.000000 m /t glyphshow -382.535156 0.000000 m /e glyphshow -389.917969 0.000000 m /m glyphshow -401.607422 0.000000 m /s glyphshow -407.859375 0.000000 m /space glyphshow -411.673828 0.000000 m /o glyphshow -419.015625 0.000000 m /n glyphshow -426.621094 0.000000 m /space glyphshow -430.435547 0.000000 m /A glyphshow -438.644531 0.000000 m /s glyphshow -444.896484 0.000000 m /t glyphshow -449.601562 0.000000 m /r glyphshow -454.535156 0.000000 m /o glyphshow -461.876953 0.000000 m /one glyphshow -grestore -1.000 setlinewidth -0 setlinecap -0.800 setgray -gsave -173.75125 43.016 m -407.72 43.016 l -409.053333 43.016 409.72 43.682667 409.72 45.016 c -409.72 102.7035 l -409.72 104.036833 409.053333 104.7035 407.72 104.7035 c -173.75125 104.7035 l -172.417917 104.7035 171.75125 104.036833 171.75125 102.7035 c -171.75125 45.016 l -171.75125 43.682667 172.417917 43.016 173.75125 43.016 c -cl -gsave -1.000 setgray -fill -grestore -stroke -grestore -1.500 setlinewidth -1 setlinejoin -[] 0 setdash -0.122 0.467 0.706 setrgbcolor -gsave -185.75125 91.60975 m -185.75125 101.60975 l -stroke -grestore -1.000 setlinewidth -0 setlinejoin -gsave -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap -0 3 m --3 -3 l -3 -3 l -cl - -gsave -0.122 0.467 0.706 setrgbcolor -fill -grestore -stroke -grestore -} bind def -185.751 96.6097 o -grestore -0.000 setgray -/DejaVuSans findfont -10.000 scalefont -setfont -gsave -203.751250 93.109750 translate -0.000000 rotate -0.000000 0.000000 m /S glyphshow -6.347656 0.000000 m /p glyphshow -12.695312 0.000000 m /e glyphshow -18.847656 0.000000 m /e glyphshow -25.000000 0.000000 m /d glyphshow -31.347656 0.000000 m /space glyphshow -34.526367 0.000000 m /u glyphshow -40.864258 0.000000 m /p glyphshow -47.211914 0.000000 m /space glyphshow -50.390625 0.000000 m /ampersand glyphshow -58.188477 0.000000 m /space glyphshow -61.367188 0.000000 m /e glyphshow -67.519531 0.000000 m /f glyphshow -71.040039 0.000000 m /f glyphshow -74.560547 0.000000 m /i glyphshow -77.338867 0.000000 m /c glyphshow -82.836914 0.000000 m /i glyphshow -85.615234 0.000000 m /e glyphshow -91.767578 0.000000 m /n glyphshow -98.105469 0.000000 m /c glyphshow -103.603516 0.000000 m /y glyphshow -109.521484 0.000000 m /space glyphshow -112.700195 0.000000 m /o glyphshow -118.818359 0.000000 m /f glyphshow -122.338867 0.000000 m /space glyphshow -125.517578 0.000000 m /one glyphshow -131.879883 0.000000 m /zero glyphshow -138.242188 0.000000 m /zero glyphshow -144.604492 0.000000 m /zero glyphshow -150.966797 0.000000 m /space glyphshow -154.145508 0.000000 m /s glyphshow -159.355469 0.000000 m /y glyphshow -165.273438 0.000000 m /s glyphshow -170.483398 0.000000 m /t glyphshow -174.404297 0.000000 m /e glyphshow -180.556641 0.000000 m /m glyphshow -190.297852 0.000000 m /s glyphshow -grestore -1.500 setlinewidth -1 setlinejoin -1.000 0.498 0.055 setrgbcolor -gsave -185.75125 76.937875 m -185.75125 86.937875 l -stroke -grestore -1.000 setlinewidth -0 setlinejoin -gsave -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap -0 3 m --3 -3 l -3 -3 l -cl - -gsave -1.000 0.498 0.055 setrgbcolor -fill -grestore -stroke -grestore -} bind def -185.751 81.9379 o -grestore -0.000 setgray -gsave -203.751250 78.437875 translate -0.000000 rotate -0.000000 0.000000 m /S glyphshow -6.347656 0.000000 m /p glyphshow -12.695312 0.000000 m /e glyphshow -18.847656 0.000000 m /e glyphshow -25.000000 0.000000 m /d glyphshow -31.347656 0.000000 m /space glyphshow -34.526367 0.000000 m /u glyphshow -40.864258 0.000000 m /p glyphshow -47.211914 0.000000 m /space glyphshow -50.390625 0.000000 m /ampersand glyphshow -58.188477 0.000000 m /space glyphshow -61.367188 0.000000 m /e glyphshow -67.519531 0.000000 m /f glyphshow -71.040039 0.000000 m /f glyphshow -74.560547 0.000000 m /i glyphshow -77.338867 0.000000 m /c glyphshow -82.836914 0.000000 m /i glyphshow -85.615234 0.000000 m /e glyphshow -91.767578 0.000000 m /n glyphshow -98.105469 0.000000 m /c glyphshow -103.603516 0.000000 m /y glyphshow -109.521484 0.000000 m /space glyphshow -112.700195 0.000000 m /o glyphshow -118.818359 0.000000 m /f glyphshow -122.338867 0.000000 m /space glyphshow -125.517578 0.000000 m /two glyphshow -131.879883 0.000000 m /zero glyphshow -138.242188 0.000000 m /zero glyphshow -144.604492 0.000000 m /zero glyphshow -150.966797 0.000000 m /space glyphshow -154.145508 0.000000 m /s glyphshow -159.355469 0.000000 m /y glyphshow -165.273438 0.000000 m /s glyphshow -170.483398 0.000000 m /t glyphshow -174.404297 0.000000 m /e glyphshow -180.556641 0.000000 m /m glyphshow -190.297852 0.000000 m /s glyphshow -grestore -1.500 setlinewidth -1 setlinejoin -0.173 0.627 0.173 setrgbcolor -gsave -185.75125 62.266 m -185.75125 72.266 l -stroke -grestore -1.000 setlinewidth -0 setlinejoin -gsave -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap -0 3 m --3 -3 l -3 -3 l -cl - -gsave -0.173 0.627 0.173 setrgbcolor -fill -grestore -stroke -grestore -} bind def -185.751 67.266 o -grestore -0.000 setgray -gsave -203.751250 63.766000 translate -0.000000 rotate -0.000000 0.000000 m /S glyphshow -6.347656 0.000000 m /p glyphshow -12.695312 0.000000 m /e glyphshow -18.847656 0.000000 m /e glyphshow -25.000000 0.000000 m /d glyphshow -31.347656 0.000000 m /space glyphshow -34.526367 0.000000 m /u glyphshow -40.864258 0.000000 m /p glyphshow -47.211914 0.000000 m /space glyphshow -50.390625 0.000000 m /ampersand glyphshow -58.188477 0.000000 m /space glyphshow -61.367188 0.000000 m /e glyphshow -67.519531 0.000000 m /f glyphshow -71.040039 0.000000 m /f glyphshow -74.560547 0.000000 m /i glyphshow -77.338867 0.000000 m /c glyphshow -82.836914 0.000000 m /i glyphshow -85.615234 0.000000 m /e glyphshow -91.767578 0.000000 m /n glyphshow -98.105469 0.000000 m /c glyphshow -103.603516 0.000000 m /y glyphshow -109.521484 0.000000 m /space glyphshow -112.700195 0.000000 m /o glyphshow -118.818359 0.000000 m /f glyphshow -122.338867 0.000000 m /space glyphshow -125.517578 0.000000 m /five glyphshow -131.879883 0.000000 m /zero glyphshow -138.242188 0.000000 m /zero glyphshow -144.604492 0.000000 m /zero glyphshow -150.966797 0.000000 m /space glyphshow -154.145508 0.000000 m /s glyphshow -159.355469 0.000000 m /y glyphshow -165.273438 0.000000 m /s glyphshow -170.483398 0.000000 m /t glyphshow -174.404297 0.000000 m /e glyphshow -180.556641 0.000000 m /m glyphshow -190.297852 0.000000 m /s glyphshow -grestore -1.500 setlinewidth -1 setlinejoin -0.839 0.153 0.157 setrgbcolor -gsave -185.75125 47.594125 m -185.75125 57.594125 l -stroke -grestore -1.000 setlinewidth -0 setlinejoin -gsave -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap -0 3 m --3 -3 l -3 -3 l -cl - -gsave -0.839 0.153 0.157 setrgbcolor -fill -grestore -stroke -grestore -} bind def -185.751 52.5941 o -grestore -0.000 setgray -gsave -203.751250 49.094125 translate -0.000000 rotate -0.000000 0.000000 m /S glyphshow -6.347656 0.000000 m /p glyphshow -12.695312 0.000000 m /e glyphshow -18.847656 0.000000 m /e glyphshow -25.000000 0.000000 m /d glyphshow -31.347656 0.000000 m /space glyphshow -34.526367 0.000000 m /u glyphshow -40.864258 0.000000 m /p glyphshow -47.211914 0.000000 m /space glyphshow -50.390625 0.000000 m /ampersand glyphshow -58.188477 0.000000 m /space glyphshow -61.367188 0.000000 m /e glyphshow -67.519531 0.000000 m /f glyphshow -71.040039 0.000000 m /f glyphshow -74.560547 0.000000 m /i glyphshow -77.338867 0.000000 m /c glyphshow -82.836914 0.000000 m /i glyphshow -85.615234 0.000000 m /e glyphshow -91.767578 0.000000 m /n glyphshow -98.105469 0.000000 m /c glyphshow -103.603516 0.000000 m /y glyphshow -109.521484 0.000000 m /space glyphshow -112.700195 0.000000 m /o glyphshow -118.818359 0.000000 m /f glyphshow -122.338867 0.000000 m /space glyphshow -125.517578 0.000000 m /one glyphshow -131.879883 0.000000 m /zero glyphshow -138.242188 0.000000 m /zero glyphshow -144.604492 0.000000 m /zero glyphshow -150.966797 0.000000 m /zero glyphshow -157.329102 0.000000 m /space glyphshow -160.507812 0.000000 m /s glyphshow -165.717773 0.000000 m /y glyphshow -171.635742 0.000000 m /s glyphshow -176.845703 0.000000 m /t glyphshow -180.766602 0.000000 m /e glyphshow -186.918945 0.000000 m /m glyphshow -196.660156 0.000000 m /s glyphshow -grestore -0.800 setlinewidth -1 setlinejoin -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -3.5 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -414.72 38.016 o -grestore -gsave -421.720000 34.219125 translate -0.000000 rotate -0.000000 0.000000 m /zero glyphshow -6.362305 0.000000 m /period glyphshow -9.541016 0.000000 m /zero glyphshow -grestore -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -3.5 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -414.72 91.2384 o -grestore -gsave -421.720000 87.441525 translate -0.000000 rotate -0.000000 0.000000 m /zero glyphshow -6.362305 0.000000 m /period glyphshow -9.541016 0.000000 m /two glyphshow -grestore -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -3.5 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -414.72 144.461 o -grestore -gsave -421.720000 140.663925 translate -0.000000 rotate -0.000000 0.000000 m /zero glyphshow -6.362305 0.000000 m /period glyphshow -9.541016 0.000000 m /four glyphshow -grestore -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -3.5 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -414.72 197.683 o -grestore -gsave -421.720000 193.886325 translate -0.000000 rotate -0.000000 0.000000 m /zero glyphshow -6.362305 0.000000 m /period glyphshow -9.541016 0.000000 m /six glyphshow -grestore -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -3.5 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -414.72 250.906 o -grestore -gsave -421.720000 247.108725 translate -0.000000 rotate -0.000000 0.000000 m /zero glyphshow -6.362305 0.000000 m /period glyphshow -9.541016 0.000000 m /eight glyphshow -grestore -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -3.5 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -414.72 304.128 o -grestore -gsave -421.720000 300.331125 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /period glyphshow -9.541016 0.000000 m /zero glyphshow -grestore -1.500 setlinewidth -2 setlinecap -0.122 0.467 0.706 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -97.28 290.944934 m -136.96 270.409085 l -stroke -grestore -1.000 0.498 0.055 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -98.272 288.714717 m -137.952 273.979049 l -217.312 264.772307 l -376.032 169.626677 l -stroke -grestore -0.173 0.627 0.173 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -99.264 292.212135 m -138.944 276.923119 l -218.304 267.066521 l -377.024 171.586171 l -stroke -grestore -0.839 0.153 0.157 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -100.256 293.077199 m -139.936 276.190438 l -219.296 270.864871 l -378.016 171.598688 l -stroke -grestore -0.800 setlinewidth -0 setlinejoin -[] 0 setdash -0.000 setgray -gsave -57.6 38.016 m -57.6 304.128 l -stroke -grestore -gsave -414.72 38.016 m -414.72 304.128 l -stroke -grestore -gsave -57.6 38.016 m -414.72 38.016 l -stroke -grestore -gsave -57.6 304.128 m -414.72 304.128 l -stroke -grestore - -end -showpage diff --git a/tests/scaling/scaling_plots/speedup_scaling_Astro1.pdf b/tests/scaling/scaling_plots/speedup_scaling_Astro1.pdf deleted file mode 100644 index e8db74de0b8e2096eda9bc8373b85c7a29879285..0000000000000000000000000000000000000000 Binary files a/tests/scaling/scaling_plots/speedup_scaling_Astro1.pdf and /dev/null differ diff --git a/tests/scaling/scaling_plots/speedup_scaling_Astro1.png b/tests/scaling/scaling_plots/speedup_scaling_Astro1.png deleted file mode 100644 index e2cf4fc604300568299fe851838b3f12a73d71f0..0000000000000000000000000000000000000000 Binary files a/tests/scaling/scaling_plots/speedup_scaling_Astro1.png and /dev/null differ diff --git a/tests/scaling/scaling_plots/total_time_scaling_Astro1.eps b/tests/scaling/scaling_plots/total_time_scaling_Astro1.eps deleted file mode 100644 index 924e890f9ffe4a4f7862ef8cce246fa2f5491400..0000000000000000000000000000000000000000 --- a/tests/scaling/scaling_plots/total_time_scaling_Astro1.eps +++ /dev/null @@ -1,2552 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Title: scaling_plots/total_time_scaling_Astro1.eps -%%Creator: matplotlib version 3.1.2, http://matplotlib.org/ -%%CreationDate: Mon Feb 10 18:09:44 2020 -%%Orientation: portrait -%%BoundingBox: 75.6 223.20000000000002 536.4 568.8 -%%EndComments -%%BeginProlog -/mpldict 8 dict def -mpldict begin -/m { moveto } bind def -/l { lineto } bind def -/r { rlineto } bind def -/c { curveto } bind def -/cl { closepath } bind def -/box { -m -1 index 0 r -0 exch r -neg 0 r -cl -} bind def -/clipbox { -box -clip -newpath -} bind def -%!PS-Adobe-3.0 Resource-Font -%%Title: DejaVu Sans -%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain -%%Creator: Converted from TrueType to type 3 by PPR -25 dict begin -/_d{bind def}bind def -/_m{moveto}_d -/_l{lineto}_d -/_cl{closepath eofill}_d -/_c{curveto}_d -/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d -/_e{exec}_d -/FontName /DejaVuSans def -/PaintType 0 def -/FontMatrix[.001 0 0 .001 0 0]def -/FontBBox[-1021 -463 1793 1232]def -/FontType 3 def -/Encoding [ /space /parenleft /parenright /zero /one /two /three /four /five /A /M /P /T /a /c /d /e /f /i /k /l /m /n /o /q /r /s /t /u /y ] def -/FontInfo 10 dict dup begin -/FamilyName (DejaVu Sans) def -/FullName (DejaVu Sans) def -/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def -/Weight (Book) def -/Version (Version 2.35) def -/ItalicAngle 0.0 def -/isFixedPitch false def -/UnderlinePosition -130 def -/UnderlineThickness 90 def -end readonly def -/CharStrings 31 dict dup begin -/.notdef 0 def -/space{318 0 0 0 0 0 _sc -}_d -/parenleft{390 0 86 -131 310 759 _sc -310 759 _m -266 683 234 609 213 536 _c -191 463 181 389 181 314 _c -181 238 191 164 213 91 _c -234 17 266 -56 310 -131 _c -232 -131 _l -183 -54 146 20 122 94 _c -98 168 86 241 86 314 _c -86 386 98 459 122 533 _c -146 607 182 682 232 759 _c -310 759 _l -_cl}_d -/parenright{390 0 80 -131 304 759 _sc -80 759 _m -158 759 _l -206 682 243 607 267 533 _c -291 459 304 386 304 314 _c -304 241 291 168 267 94 _c -243 20 206 -54 158 -131 _c -80 -131 _l -123 -56 155 17 177 91 _c -198 164 209 238 209 314 _c -209 389 198 463 177 536 _c -155 609 123 683 80 759 _c -_cl}_d -/zero{636 0 66 -13 570 742 _sc -318 664 _m -267 664 229 639 203 589 _c -177 539 165 464 165 364 _c -165 264 177 189 203 139 _c -229 89 267 64 318 64 _c -369 64 407 89 433 139 _c -458 189 471 264 471 364 _c -471 464 458 539 433 589 _c -407 639 369 664 318 664 _c -318 742 _m -399 742 461 709 505 645 _c -548 580 570 486 570 364 _c -570 241 548 147 505 83 _c -461 19 399 -13 318 -13 _c -236 -13 173 19 130 83 _c -87 147 66 241 66 364 _c -66 486 87 580 130 645 _c -173 709 236 742 318 742 _c -_cl}_d -/one{636 0 110 0 544 729 _sc -124 83 _m -285 83 _l -285 639 _l -110 604 _l -110 694 _l -284 729 _l -383 729 _l -383 83 _l -544 83 _l -544 0 _l -124 0 _l -124 83 _l -_cl}_d -/two{{636 0 73 0 536 742 _sc -192 83 _m -536 83 _l -536 0 _l -73 0 _l -73 83 _l -110 121 161 173 226 239 _c -290 304 331 346 348 365 _c -380 400 402 430 414 455 _c -426 479 433 504 433 528 _c -433 566 419 598 392 622 _c -365 646 330 659 286 659 _c -255 659 222 653 188 643 _c -154 632 117 616 78 594 _c -78 694 _l -118 710 155 722 189 730 _c -223 738 255 742 284 742 _c -}_e{359 742 419 723 464 685 _c -509 647 532 597 532 534 _c -532 504 526 475 515 449 _c -504 422 484 390 454 354 _c -446 344 420 317 376 272 _c -332 227 271 164 192 83 _c -_cl}_e}_d -/three{{636 0 76 -13 556 742 _sc -406 393 _m -453 383 490 362 516 330 _c -542 298 556 258 556 212 _c -556 140 531 84 482 45 _c -432 6 362 -13 271 -13 _c -240 -13 208 -10 176 -4 _c -144 1 110 10 76 22 _c -76 117 _l -103 101 133 89 166 81 _c -198 73 232 69 268 69 _c -330 69 377 81 409 105 _c -441 129 458 165 458 212 _c -458 254 443 288 413 312 _c -383 336 341 349 287 349 _c -}_e{202 349 _l -202 430 _l -291 430 _l -339 430 376 439 402 459 _c -428 478 441 506 441 543 _c -441 580 427 609 401 629 _c -374 649 336 659 287 659 _c -260 659 231 656 200 650 _c -169 644 135 635 98 623 _c -98 711 _l -135 721 170 729 203 734 _c -235 739 266 742 296 742 _c -370 742 429 725 473 691 _c -517 657 539 611 539 553 _c -539 513 527 479 504 451 _c -481 423 448 403 406 393 _c -_cl}_e}_d -/four{636 0 49 0 580 729 _sc -378 643 _m -129 254 _l -378 254 _l -378 643 _l -352 729 _m -476 729 _l -476 254 _l -580 254 _l -580 172 _l -476 172 _l -476 0 _l -378 0 _l -378 172 _l -49 172 _l -49 267 _l -352 729 _l -_cl}_d -/five{{636 0 77 -13 549 729 _sc -108 729 _m -495 729 _l -495 646 _l -198 646 _l -198 467 _l -212 472 227 476 241 478 _c -255 480 270 482 284 482 _c -365 482 429 459 477 415 _c -525 370 549 310 549 234 _c -549 155 524 94 475 51 _c -426 8 357 -13 269 -13 _c -238 -13 207 -10 175 -6 _c -143 -1 111 6 77 17 _c -77 116 _l -106 100 136 88 168 80 _c -199 72 232 69 267 69 _c -}_e{323 69 368 83 401 113 _c -433 143 450 183 450 234 _c -450 284 433 324 401 354 _c -368 384 323 399 267 399 _c -241 399 214 396 188 390 _c -162 384 135 375 108 363 _c -108 729 _l -_cl}_e}_d -/A{684 0 8 0 676 729 _sc -342 632 _m -208 269 _l -476 269 _l -342 632 _l -286 729 _m -398 729 _l -676 0 _l -573 0 _l -507 187 _l -178 187 _l -112 0 _l -8 0 _l -286 729 _l -_cl}_d -/M{863 0 98 0 765 729 _sc -98 729 _m -245 729 _l -431 233 _l -618 729 _l -765 729 _l -765 0 _l -669 0 _l -669 640 _l -481 140 _l -382 140 _l -194 640 _l -194 0 _l -98 0 _l -98 729 _l -_cl}_d -/P{603 0 98 0 569 729 _sc -197 648 _m -197 374 _l -321 374 _l -367 374 402 385 427 409 _c -452 433 465 467 465 511 _c -465 555 452 588 427 612 _c -402 636 367 648 321 648 _c -197 648 _l -98 729 _m -321 729 _l -402 729 464 710 506 673 _c -548 636 569 582 569 511 _c -569 439 548 384 506 348 _c -464 311 402 293 321 293 _c -197 293 _l -197 0 _l -98 0 _l -98 729 _l -_cl}_d -/T{611 0 -2 0 614 729 _sc --2 729 _m -614 729 _l -614 646 _l -355 646 _l -355 0 _l -256 0 _l -256 646 _l --2 646 _l --2 729 _l -_cl}_d -/a{{613 0 60 -13 522 560 _sc -343 275 _m -270 275 220 266 192 250 _c -164 233 150 205 150 165 _c -150 133 160 107 181 89 _c -202 70 231 61 267 61 _c -317 61 357 78 387 114 _c -417 149 432 196 432 255 _c -432 275 _l -343 275 _l -522 312 _m -522 0 _l -432 0 _l -432 83 _l -411 49 385 25 355 10 _c -325 -5 287 -13 243 -13 _c -187 -13 142 2 109 33 _c -76 64 60 106 60 159 _c -}_e{60 220 80 266 122 298 _c -163 329 224 345 306 345 _c -432 345 _l -432 354 _l -432 395 418 427 391 450 _c -364 472 326 484 277 484 _c -245 484 215 480 185 472 _c -155 464 127 453 100 439 _c -100 522 _l -132 534 164 544 195 550 _c -226 556 256 560 286 560 _c -365 560 424 539 463 498 _c -502 457 522 395 522 312 _c -_cl}_e}_d -/c{{550 0 55 -13 488 560 _sc -488 526 _m -488 442 _l -462 456 437 466 411 473 _c -385 480 360 484 334 484 _c -276 484 230 465 198 428 _c -166 391 150 339 150 273 _c -150 206 166 154 198 117 _c -230 80 276 62 334 62 _c -360 62 385 65 411 72 _c -437 79 462 90 488 104 _c -488 21 _l -462 9 436 0 410 -5 _c -383 -10 354 -13 324 -13 _c -242 -13 176 12 128 64 _c -}_e{79 115 55 185 55 273 _c -55 362 79 432 128 483 _c -177 534 244 560 330 560 _c -358 560 385 557 411 551 _c -437 545 463 537 488 526 _c -_cl}_e}_d -/d{{635 0 55 -13 544 760 _sc -454 464 _m -454 760 _l -544 760 _l -544 0 _l -454 0 _l -454 82 _l -435 49 411 25 382 10 _c -353 -5 319 -13 279 -13 _c -213 -13 159 13 117 65 _c -75 117 55 187 55 273 _c -55 359 75 428 117 481 _c -159 533 213 560 279 560 _c -319 560 353 552 382 536 _c -411 520 435 496 454 464 _c -148 273 _m -148 207 161 155 188 117 _c -215 79 253 61 301 61 _c -}_e{348 61 385 79 413 117 _c -440 155 454 207 454 273 _c -454 339 440 390 413 428 _c -385 466 348 485 301 485 _c -253 485 215 466 188 428 _c -161 390 148 339 148 273 _c -_cl}_e}_d -/e{{615 0 55 -13 562 560 _sc -562 296 _m -562 252 _l -149 252 _l -153 190 171 142 205 110 _c -238 78 284 62 344 62 _c -378 62 412 66 444 74 _c -476 82 509 95 541 113 _c -541 28 _l -509 14 476 3 442 -3 _c -408 -9 373 -13 339 -13 _c -251 -13 182 12 131 62 _c -80 112 55 181 55 268 _c -55 357 79 428 127 481 _c -175 533 241 560 323 560 _c -397 560 455 536 498 489 _c -}_e{540 441 562 377 562 296 _c -472 322 _m -471 371 457 410 431 440 _c -404 469 368 484 324 484 _c -274 484 234 469 204 441 _c -174 413 156 373 152 322 _c -472 322 _l -_cl}_e}_d -/f{352 0 23 0 371 760 _sc -371 760 _m -371 685 _l -285 685 _l -253 685 230 678 218 665 _c -205 652 199 629 199 595 _c -199 547 _l -347 547 _l -347 477 _l -199 477 _l -199 0 _l -109 0 _l -109 477 _l -23 477 _l -23 547 _l -109 547 _l -109 585 _l -109 645 123 690 151 718 _c -179 746 224 760 286 760 _c -371 760 _l -_cl}_d -/i{278 0 94 0 184 760 _sc -94 547 _m -184 547 _l -184 0 _l -94 0 _l -94 547 _l -94 760 _m -184 760 _l -184 646 _l -94 646 _l -94 760 _l -_cl}_d -/k{579 0 91 0 576 760 _sc -91 760 _m -181 760 _l -181 311 _l -449 547 _l -564 547 _l -274 291 _l -576 0 _l -459 0 _l -181 267 _l -181 0 _l -91 0 _l -91 760 _l -_cl}_d -/l{278 0 94 0 184 760 _sc -94 760 _m -184 760 _l -184 0 _l -94 0 _l -94 760 _l -_cl}_d -/m{{974 0 91 0 889 560 _sc -520 442 _m -542 482 569 511 600 531 _c -631 550 668 560 711 560 _c -767 560 811 540 842 500 _c -873 460 889 403 889 330 _c -889 0 _l -799 0 _l -799 327 _l -799 379 789 418 771 444 _c -752 469 724 482 686 482 _c -639 482 602 466 575 435 _c -548 404 535 362 535 309 _c -535 0 _l -445 0 _l -445 327 _l -445 379 435 418 417 444 _c -398 469 369 482 331 482 _c -}_e{285 482 248 466 221 435 _c -194 404 181 362 181 309 _c -181 0 _l -91 0 _l -91 547 _l -181 547 _l -181 462 _l -201 495 226 520 255 536 _c -283 552 317 560 357 560 _c -397 560 430 550 458 530 _c -486 510 506 480 520 442 _c -_cl}_e}_d -/n{634 0 91 0 549 560 _sc -549 330 _m -549 0 _l -459 0 _l -459 327 _l -459 379 448 417 428 443 _c -408 469 378 482 338 482 _c -289 482 251 466 223 435 _c -195 404 181 362 181 309 _c -181 0 _l -91 0 _l -91 547 _l -181 547 _l -181 462 _l -202 494 227 519 257 535 _c -286 551 320 560 358 560 _c -420 560 468 540 500 501 _c -532 462 549 405 549 330 _c -_cl}_d -/o{612 0 55 -13 557 560 _sc -306 484 _m -258 484 220 465 192 427 _c -164 389 150 338 150 273 _c -150 207 163 156 191 118 _c -219 80 257 62 306 62 _c -354 62 392 80 420 118 _c -448 156 462 207 462 273 _c -462 337 448 389 420 427 _c -392 465 354 484 306 484 _c -306 560 _m -384 560 445 534 490 484 _c -534 433 557 363 557 273 _c -557 183 534 113 490 63 _c -445 12 384 -13 306 -13 _c -227 -13 165 12 121 63 _c -77 113 55 183 55 273 _c -55 363 77 433 121 484 _c -165 534 227 560 306 560 _c -_cl}_d -/q{{635 0 55 -207 544 560 _sc -148 273 _m -148 207 161 155 188 117 _c -215 79 253 61 301 61 _c -348 61 385 79 413 117 _c -440 155 454 207 454 273 _c -454 339 440 390 413 428 _c -385 466 348 485 301 485 _c -253 485 215 466 188 428 _c -161 390 148 339 148 273 _c -454 82 _m -435 49 411 25 382 10 _c -353 -5 319 -13 279 -13 _c -213 -13 159 13 117 65 _c -75 117 55 187 55 273 _c -}_e{55 359 75 428 117 481 _c -159 533 213 560 279 560 _c -319 560 353 552 382 536 _c -411 520 435 496 454 464 _c -454 547 _l -544 547 _l -544 -207 _l -454 -207 _l -454 82 _l -_cl}_e}_d -/r{411 0 91 0 411 560 _sc -411 463 _m -401 469 390 473 378 476 _c -366 478 353 480 339 480 _c -288 480 249 463 222 430 _c -194 397 181 350 181 288 _c -181 0 _l -91 0 _l -91 547 _l -181 547 _l -181 462 _l -199 495 224 520 254 536 _c -284 552 321 560 365 560 _c -371 560 378 559 386 559 _c -393 558 401 557 411 555 _c -411 463 _l -_cl}_d -/s{{521 0 54 -13 472 560 _sc -443 531 _m -443 446 _l -417 458 391 468 364 475 _c -336 481 308 485 279 485 _c -234 485 200 478 178 464 _c -156 450 145 430 145 403 _c -145 382 153 366 169 354 _c -185 342 217 330 265 320 _c -296 313 _l -360 299 405 279 432 255 _c -458 230 472 195 472 151 _c -472 100 452 60 412 31 _c -372 1 316 -13 246 -13 _c -216 -13 186 -10 154 -5 _c -}_e{122 0 89 8 54 20 _c -54 113 _l -87 95 120 82 152 74 _c -184 65 216 61 248 61 _c -290 61 323 68 346 82 _c -368 96 380 117 380 144 _c -380 168 371 187 355 200 _c -339 213 303 226 247 238 _c -216 245 _l -160 257 119 275 95 299 _c -70 323 58 356 58 399 _c -58 450 76 490 112 518 _c -148 546 200 560 268 560 _c -301 560 332 557 362 552 _c -391 547 418 540 443 531 _c -}_e{_cl}_e}_d -/t{392 0 27 0 368 702 _sc -183 702 _m -183 547 _l -368 547 _l -368 477 _l -183 477 _l -183 180 _l -183 135 189 106 201 94 _c -213 81 238 75 276 75 _c -368 75 _l -368 0 _l -276 0 _l -206 0 158 13 132 39 _c -106 65 93 112 93 180 _c -93 477 _l -27 477 _l -27 547 _l -93 547 _l -93 702 _l -183 702 _l -_cl}_d -/u{634 0 85 -13 543 560 _sc -85 216 _m -85 547 _l -175 547 _l -175 219 _l -175 167 185 129 205 103 _c -225 77 255 64 296 64 _c -344 64 383 79 411 110 _c -439 141 453 183 453 237 _c -453 547 _l -543 547 _l -543 0 _l -453 0 _l -453 84 _l -431 50 405 26 377 10 _c -348 -5 315 -13 277 -13 _c -214 -13 166 6 134 45 _c -101 83 85 140 85 216 _c -311 560 _m -311 560 _l -_cl}_d -/y{592 0 30 -207 562 547 _sc -322 -50 _m -296 -114 271 -157 247 -177 _c -223 -197 191 -207 151 -207 _c -79 -207 _l -79 -132 _l -132 -132 _l -156 -132 175 -126 189 -114 _c -203 -102 218 -75 235 -31 _c -251 9 _l -30 547 _l -125 547 _l -296 119 _l -467 547 _l -562 547 _l -322 -50 _l -_cl}_d -end readonly def - -/BuildGlyph - {exch begin - CharStrings exch - 2 copy known not{pop /.notdef}if - true 3 1 roll get exec - end}_d - -/BuildChar { - 1 index /Encoding get exch get - 1 index /BuildGlyph get exec -}_d - -FontName currentdict end definefont pop -end -%%EndProlog -mpldict begin -75.6 223.2 translate -460.8 345.6 0 0 clipbox -gsave -0 0 m -460.8 0 l -460.8 345.6 l -0 345.6 l -cl -1.000 setgray -fill -grestore -gsave -57.6 38.016 m -414.72 38.016 l -414.72 304.128 l -57.6 304.128 l -cl -1.000 setgray -fill -grestore -0.800 setlinewidth -1 setlinejoin -2 setlinecap -[] 0 setdash -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -57.6 38.016 m -57.6 304.128 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -0 -3.5 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 38.016 o -grestore -/DejaVuSans findfont -10.000 scalefont -setfont -gsave -54.420313 23.422250 translate -0.000000 rotate -0.000000 0.000000 m /zero glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -126.276923 38.016 m -126.276923 304.128 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -0 -3.5 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -126.277 38.016 o -grestore -gsave -119.917548 23.422250 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /zero glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -194.953846 38.016 m -194.953846 304.128 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -0 -3.5 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -194.954 38.016 o -grestore -gsave -188.594471 23.422250 translate -0.000000 rotate -0.000000 0.000000 m /two glyphshow -6.362305 0.000000 m /zero glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -263.630769 38.016 m -263.630769 304.128 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -0 -3.5 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -263.631 38.016 o -grestore -gsave -257.271394 23.422250 translate -0.000000 rotate -0.000000 0.000000 m /three glyphshow -6.362305 0.000000 m /zero glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -332.307692 38.016 m -332.307692 304.128 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -0 -3.5 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -332.308 38.016 o -grestore -gsave -325.948317 23.422250 translate -0.000000 rotate -0.000000 0.000000 m /four glyphshow -6.362305 0.000000 m /zero glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -400.984615 38.016 m -400.984615 304.128 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m -0 -3.5 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -400.985 38.016 o -grestore -gsave -394.625240 23.422250 translate -0.000000 rotate -0.000000 0.000000 m /five glyphshow -6.362305 0.000000 m /zero glyphshow -grestore -gsave -181.308437 9.750375 translate -0.000000 rotate -0.000000 0.000000 m /A glyphshow -6.840820 0.000000 m /m glyphshow -16.582031 0.000000 m /o glyphshow -22.700195 0.000000 m /u glyphshow -29.038086 0.000000 m /n glyphshow -35.375977 0.000000 m /t glyphshow -39.296875 0.000000 m /space glyphshow -42.475586 0.000000 m /o glyphshow -48.593750 0.000000 m /f glyphshow -52.114258 0.000000 m /space glyphshow -55.292969 0.000000 m /c glyphshow -60.791016 0.000000 m /o glyphshow -66.909180 0.000000 m /r glyphshow -71.020508 0.000000 m /e glyphshow -77.172852 0.000000 m /s glyphshow -82.382812 0.000000 m /space glyphshow -85.561523 0.000000 m /u glyphshow -91.899414 0.000000 m /s glyphshow -97.109375 0.000000 m /e glyphshow -103.261719 0.000000 m /d glyphshow -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -57.6 162.367622 m -414.72 162.367622 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --3.5 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 162.368 o -grestore -gsave -32.600000 157.906684 translate -0.000000 rotate -/DejaVuSans findfont -10.0 scalefont -setfont -0.000000 0.976562 moveto -/one glyphshow - -6.362305 0.976562 moveto -/zero glyphshow - -/DejaVuSans findfont -7.0 scalefont -setfont -12.820312 4.804688 moveto -/two glyphshow - - -grestore -2 setlinecap -0.690 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -57.6 289.116896 m -414.72 289.116896 l -stroke -grestore -0 setlinecap -0.000 setgray -gsave -/o { -gsave -newpath -translate -0.8 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --3.5 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 289.117 o -grestore -gsave -32.600000 284.655958 translate -0.000000 rotate -/DejaVuSans findfont -10.0 scalefont -setfont -0.000000 0.976562 moveto -/one glyphshow - -6.362305 0.976562 moveto -/zero glyphshow - -/DejaVuSans findfont -7.0 scalefont -setfont -12.820312 4.804688 moveto -/three glyphshow - - -grestore -0.600 setlinewidth -gsave -/o { -gsave -newpath -translate -0.6 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --2 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 73.7737 o -grestore -gsave -/o { -gsave -newpath -translate -0.6 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --2 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 96.0931 o -grestore -gsave -/o { -gsave -newpath -translate -0.6 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --2 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 111.929 o -grestore -gsave -/o { -gsave -newpath -translate -0.6 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --2 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 124.212 o -grestore -gsave -/o { -gsave -newpath -translate -0.6 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --2 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 134.248 o -grestore -gsave -/o { -gsave -newpath -translate -0.6 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --2 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 142.734 o -grestore -gsave -/o { -gsave -newpath -translate -0.6 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --2 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 150.084 o -grestore -gsave -/o { -gsave -newpath -translate -0.6 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --2 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 156.568 o -grestore -gsave -/o { -gsave -newpath -translate -0.6 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --2 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 200.523 o -grestore -gsave -/o { -gsave -newpath -translate -0.6 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --2 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 222.842 o -grestore -gsave -/o { -gsave -newpath -translate -0.6 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --2 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 238.678 o -grestore -gsave -/o { -gsave -newpath -translate -0.6 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --2 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 250.962 o -grestore -gsave -/o { -gsave -newpath -translate -0.6 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --2 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 260.998 o -grestore -gsave -/o { -gsave -newpath -translate -0.6 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --2 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 269.483 o -grestore -gsave -/o { -gsave -newpath -translate -0.6 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --2 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 276.834 o -grestore -gsave -/o { -gsave -newpath -translate -0.6 setlinewidth -1 setlinejoin -0 setlinecap -0 0 m --2 0 l - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -57.6 283.317 o -grestore -gsave -26.521875 121.775125 translate -90.000000 rotate -0.000000 0.000000 m /T glyphshow -6.092773 0.000000 m /o glyphshow -12.210938 0.000000 m /t glyphshow -16.131836 0.000000 m /a glyphshow -22.259766 0.000000 m /l glyphshow -25.038086 0.000000 m /space glyphshow -28.216797 0.000000 m /t glyphshow -32.137695 0.000000 m /i glyphshow -34.916016 0.000000 m /m glyphshow -44.657227 0.000000 m /e glyphshow -50.809570 0.000000 m /space glyphshow -53.988281 0.000000 m /t glyphshow -57.909180 0.000000 m /a glyphshow -64.037109 0.000000 m /k glyphshow -69.828125 0.000000 m /e glyphshow -75.980469 0.000000 m /n glyphshow -82.318359 0.000000 m /space glyphshow -85.497070 0.000000 m /parenleft glyphshow -89.398438 0.000000 m /s glyphshow -94.608398 0.000000 m /parenright glyphshow -grestore -1.000 setlinewidth -0.000 0.000 1.000 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -85.070769 163.723345 m -85.070769 164.866354 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -112.541538 163.528633 m -112.541538 164.642327 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -85.070769 90.094555 m -85.070769 91.481994 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -112.541538 56.061391 m -112.541538 58.119284 l -stroke -grestore -0.000 0.502 0.000 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -85.757538 201.165776 m -85.757538 202.673914 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -113.228308 201.635611 m -113.228308 202.784503 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -168.169846 201.5032 m -168.169846 203.061394 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -278.052923 202.156079 m -278.052923 202.92828 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -85.757538 128.32746 m -85.757538 129.47306 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -113.228308 93.963437 m -113.228308 94.77086 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -168.169846 57.911438 m -168.169846 59.05175 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -278.052923 50.112 m -278.052923 50.932844 l -stroke -grestore -1.000 0.000 0.000 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -86.444308 252.197989 m -86.444308 253.425658 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -113.915077 252.285271 m -113.915077 253.365067 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -168.856615 251.558467 m -168.856615 253.254194 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -278.739692 252.152703 m -278.739692 253.089911 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -86.444308 178.729098 m -86.444308 179.326355 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -113.915077 144.03464 m -113.915077 144.562712 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -168.856615 107.660024 m -168.856615 108.431221 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -278.739692 99.398993 m -278.739692 100.181425 l -stroke -grestore -0.000 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -87.131077 291.028651 m -87.131077 291.337948 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -114.601846 290.503925 m -114.601846 291.056957 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -169.543385 290.290069 m -169.543385 292.032 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -279.426462 290.124371 m -279.426462 291.873238 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -87.131077 216.882711 m -87.131077 217.533888 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -114.601846 182.341738 m -114.601846 182.498887 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -169.543385 145.402339 m -169.543385 146.411599 l -stroke -grestore -gsave -357.1 266.1 57.6 38.02 clipbox -279.426462 137.551212 m -279.426462 138.809517 l -stroke -grestore -2 setlinecap -0.000 0.000 1.000 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -85.070769 164.297816 m -112.541538 164.088297 l -stroke -grestore -0 setlinejoin -0 setlinecap -gsave -357.1 266.1 57.6 38.02 clipbox -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap --1 -3 m -1 -3 l -1 -1 l -3 -1 l -3 1 l -1 1 l -1 3 l --1 3 l --1 1 l --3 1 l --3 -1 l --1 -1 l -cl - -gsave -0.000 0.000 1.000 setrgbcolor -fill -grestore -stroke -grestore -} bind def -85.0708 164.298 o -112.542 164.088 o -grestore -1 setlinejoin -2 setlinecap -gsave -357.1 266.1 57.6 38.02 clipbox -85.070769 90.792646 m -112.541538 57.099953 l -stroke -grestore -0 setlinejoin -0 setlinecap -gsave -357.1 266.1 57.6 38.02 clipbox -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap --0 -4.242641 m -2.545584 0 l -0 4.242641 l --2.545584 0 l -cl - -gsave -0.000 0.000 1.000 setrgbcolor -fill -grestore -stroke -grestore -} bind def -85.0708 90.7926 o -112.542 57.1 o -grestore -1 setlinejoin -2 setlinecap -0.000 0.502 0.000 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -85.757538 201.92501 m -113.228308 202.213054 l -168.169846 202.287811 l -278.052923 202.543533 l -stroke -grestore -0 setlinejoin -0 setlinecap -gsave -357.1 266.1 57.6 38.02 clipbox -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap --1 -3 m -1 -3 l -1 -1 l -3 -1 l -3 1 l -1 1 l -1 3 l --1 3 l --1 1 l --3 1 l --3 -1 l --1 -1 l -cl - -gsave -0.000 0.502 0.000 setrgbcolor -fill -grestore -stroke -grestore -} bind def -85.7575 201.925 o -113.228 202.213 o -168.17 202.288 o -278.053 202.544 o -grestore -1 setlinejoin -2 setlinecap -gsave -357.1 266.1 57.6 38.02 clipbox -85.757538 128.90324 m -113.228308 94.368629 l -168.169846 58.484547 l -278.052923 50.523952 l -stroke -grestore -0 setlinejoin -0 setlinecap -gsave -357.1 266.1 57.6 38.02 clipbox -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap --0 -4.242641 m -2.545584 0 l -0 4.242641 l --2.545584 0 l -cl - -gsave -0.000 0.502 0.000 setrgbcolor -fill -grestore -stroke -grestore -} bind def -85.7575 128.903 o -113.228 94.3686 o -168.17 58.4845 o -278.053 50.524 o -grestore -1 setlinejoin -2 setlinecap -1.000 0.000 0.000 setrgbcolor -gsave -357.1 266.1 57.6 38.02 clipbox -86.444308 252.815246 m -113.915077 252.827816 l -168.856615 252.41286 l -278.739692 252.623302 l -stroke -grestore -0 setlinejoin -0 setlinecap -gsave -357.1 266.1 57.6 38.02 clipbox -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap --1 -3 m -1 -3 l -1 -1 l -3 -1 l -3 1 l -1 1 l -1 3 l --1 3 l --1 1 l --3 1 l --3 -1 l --1 -1 l -cl - -gsave -1.000 0.000 0.000 setrgbcolor -fill -grestore -stroke -grestore -} bind def -86.4443 252.815 o -113.915 252.828 o -168.857 252.413 o -278.74 252.623 o -grestore -1 setlinejoin -2 setlinecap -gsave -357.1 266.1 57.6 38.02 clipbox -86.444308 179.028536 m -113.915077 144.299309 l -168.856615 108.046973 l -278.739692 99.791599 l -stroke -grestore -0 setlinejoin -0 setlinecap -gsave -357.1 266.1 57.6 38.02 clipbox -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap --0 -4.242641 m -2.545584 0 l -0 4.242641 l --2.545584 0 l -cl - -gsave -1.000 0.000 0.000 setrgbcolor -fill -grestore -stroke -grestore -} bind def -86.4443 179.029 o -113.915 144.299 o -168.857 108.047 o -278.74 99.7916 o -grestore -1 setlinejoin -2 setlinecap -0.000 setgray -gsave -357.1 266.1 57.6 38.02 clipbox -87.131077 291.183517 m -114.601846 290.781136 l -169.543385 291.167925 l -279.426462 291.005749 l -stroke -grestore -0 setlinejoin -0 setlinecap -gsave -357.1 266.1 57.6 38.02 clipbox -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap --1 -3 m -1 -3 l -1 -1 l -3 -1 l -3 1 l -1 1 l -1 3 l --1 3 l --1 1 l --3 1 l --3 -1 l --1 -1 l -cl - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -87.1311 291.184 o -114.602 290.781 o -169.543 291.168 o -279.426 291.006 o -grestore -1 setlinejoin -2 setlinecap -gsave -357.1 266.1 57.6 38.02 clipbox -87.131077 217.209263 m -114.601846 182.420368 l -169.543385 145.909282 l -279.426462 138.18396 l -stroke -grestore -0 setlinejoin -0 setlinecap -gsave -357.1 266.1 57.6 38.02 clipbox -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap --0 -4.242641 m -2.545584 0 l -0 4.242641 l --2.545584 0 l -cl - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -87.1311 217.209 o -114.602 182.42 o -169.543 145.909 o -279.426 138.184 o -grestore -0.800 setlinewidth -2 setlinecap -[] 0 setdash -gsave -57.6 38.016 m -57.6 304.128 l -stroke -grestore -gsave -414.72 38.016 m -414.72 304.128 l -stroke -grestore -gsave -57.6 38.016 m -414.72 38.016 l -stroke -grestore -gsave -57.6 304.128 m -414.72 304.128 l -stroke -grestore -/DejaVuSans findfont -12.000 scalefont -setfont -gsave -7.214687 310.128000 translate -0.000000 rotate -0.000000 0.000000 m /T glyphshow -7.298828 0.000000 m /o glyphshow -14.640625 0.000000 m /t glyphshow -19.345703 0.000000 m /a glyphshow -26.699219 0.000000 m /l glyphshow -30.033203 0.000000 m /space glyphshow -33.847656 0.000000 m /t glyphshow -38.552734 0.000000 m /i glyphshow -41.886719 0.000000 m /m glyphshow -53.576172 0.000000 m /e glyphshow -60.958984 0.000000 m /space glyphshow -64.773438 0.000000 m /f glyphshow -68.998047 0.000000 m /o glyphshow -76.339844 0.000000 m /r glyphshow -81.273438 0.000000 m /space glyphshow -85.087891 0.000000 m /s glyphshow -91.339844 0.000000 m /e glyphshow -98.722656 0.000000 m /q glyphshow -106.339844 0.000000 m /u glyphshow -113.945312 0.000000 m /e glyphshow -121.328125 0.000000 m /n glyphshow -128.933594 0.000000 m /t glyphshow -133.638672 0.000000 m /i glyphshow -136.972656 0.000000 m /a glyphshow -144.326172 0.000000 m /l glyphshow -147.660156 0.000000 m /space glyphshow -151.474609 0.000000 m /a glyphshow -158.828125 0.000000 m /n glyphshow -166.433594 0.000000 m /d glyphshow -174.050781 0.000000 m /space glyphshow -177.865234 0.000000 m /M glyphshow -188.218750 0.000000 m /P glyphshow -195.455078 0.000000 m /space glyphshow -199.269531 0.000000 m /f glyphshow -203.494141 0.000000 m /o glyphshow -210.835938 0.000000 m /r glyphshow -215.769531 0.000000 m /space glyphshow -219.583984 0.000000 m /d glyphshow -227.201172 0.000000 m /i glyphshow -230.535156 0.000000 m /f glyphshow -234.759766 0.000000 m /f glyphshow -238.984375 0.000000 m /e glyphshow -246.367188 0.000000 m /r glyphshow -251.300781 0.000000 m /e glyphshow -258.683594 0.000000 m /n glyphshow -266.289062 0.000000 m /t glyphshow -270.994141 0.000000 m /space glyphshow -274.808594 0.000000 m /a glyphshow -282.162109 0.000000 m /m glyphshow -293.851562 0.000000 m /o glyphshow -301.193359 0.000000 m /u glyphshow -308.798828 0.000000 m /n glyphshow -316.404297 0.000000 m /t glyphshow -321.109375 0.000000 m /s glyphshow -327.361328 0.000000 m /space glyphshow -331.175781 0.000000 m /o glyphshow -338.517578 0.000000 m /f glyphshow -342.742188 0.000000 m /space glyphshow -346.556641 0.000000 m /s glyphshow -352.808594 0.000000 m /y glyphshow -359.910156 0.000000 m /s glyphshow -366.162109 0.000000 m /t glyphshow -370.867188 0.000000 m /e glyphshow -378.250000 0.000000 m /m glyphshow -389.939453 0.000000 m /s glyphshow -396.191406 0.000000 m /space glyphshow -400.005859 0.000000 m /o glyphshow -407.347656 0.000000 m /n glyphshow -414.953125 0.000000 m /space glyphshow -418.767578 0.000000 m /A glyphshow -426.976562 0.000000 m /s glyphshow -433.228516 0.000000 m /t glyphshow -437.933594 0.000000 m /r glyphshow -442.867188 0.000000 m /o glyphshow -450.208984 0.000000 m /one glyphshow -grestore -1.000 setlinewidth -0 setlinecap -0.800 setgray -gsave -247.860625 110.8845 m -407.72 110.8845 l -409.053333 110.8845 409.72 111.551167 409.72 112.8845 c -409.72 229.2595 l -409.72 230.592833 409.053333 231.2595 407.72 231.2595 c -247.860625 231.2595 l -246.527292 231.2595 245.860625 230.592833 245.860625 229.2595 c -245.860625 112.8845 l -245.860625 111.551167 246.527292 110.8845 247.860625 110.8845 c -cl -gsave -1.000 setgray -fill -grestore -stroke -grestore -1 setlinejoin -[] 0 setdash -0.000 0.000 1.000 setrgbcolor -gsave -259.860625 218.16575 m -259.860625 228.16575 l -stroke -grestore -2 setlinecap -gsave -249.860625 223.16575 m -269.860625 223.16575 l -stroke -grestore -0 setlinejoin -0 setlinecap -gsave -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap --1 -3 m -1 -3 l -1 -1 l -3 -1 l -3 1 l -1 1 l -1 3 l --1 3 l --1 1 l --3 1 l --3 -1 l --1 -1 l -cl - -gsave -0.000 0.000 1.000 setrgbcolor -fill -grestore -stroke -grestore -} bind def -259.861 223.166 o -grestore -0.000 setgray -/DejaVuSans findfont -10.000 scalefont -setfont -gsave -277.860625 219.665750 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /zero glyphshow -12.724609 0.000000 m /zero glyphshow -19.086914 0.000000 m /zero glyphshow -25.449219 0.000000 m /space glyphshow -28.627930 0.000000 m /s glyphshow -33.837891 0.000000 m /y glyphshow -39.755859 0.000000 m /s glyphshow -44.965820 0.000000 m /t glyphshow -48.886719 0.000000 m /e glyphshow -55.039062 0.000000 m /m glyphshow -64.780273 0.000000 m /s glyphshow -69.990234 0.000000 m /space glyphshow -73.168945 0.000000 m /l glyphshow -75.947266 0.000000 m /i glyphshow -78.725586 0.000000 m /n glyphshow -85.063477 0.000000 m /e glyphshow -91.215820 0.000000 m /a glyphshow -97.343750 0.000000 m /r glyphshow -101.455078 0.000000 m /space glyphshow -104.633789 0.000000 m /r glyphshow -108.745117 0.000000 m /u glyphshow -115.083008 0.000000 m /n glyphshow -grestore -1 setlinejoin -0.000 0.000 1.000 setrgbcolor -gsave -259.860625 203.493875 m -259.860625 213.493875 l -stroke -grestore -2 setlinecap -gsave -249.860625 208.493875 m -269.860625 208.493875 l -stroke -grestore -0 setlinejoin -0 setlinecap -gsave -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap --0 -4.242641 m -2.545584 0 l -0 4.242641 l --2.545584 0 l -cl - -gsave -0.000 0.000 1.000 setrgbcolor -fill -grestore -stroke -grestore -} bind def -259.861 208.494 o -grestore -0.000 setgray -gsave -277.860625 204.993875 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /zero glyphshow -12.724609 0.000000 m /zero glyphshow -19.086914 0.000000 m /zero glyphshow -25.449219 0.000000 m /space glyphshow -28.627930 0.000000 m /s glyphshow -33.837891 0.000000 m /y glyphshow -39.755859 0.000000 m /s glyphshow -44.965820 0.000000 m /t glyphshow -48.886719 0.000000 m /e glyphshow -55.039062 0.000000 m /m glyphshow -64.780273 0.000000 m /s glyphshow -69.990234 0.000000 m /space glyphshow -73.168945 0.000000 m /M glyphshow -81.796875 0.000000 m /P glyphshow -87.827148 0.000000 m /space glyphshow -91.005859 0.000000 m /r glyphshow -95.117188 0.000000 m /u glyphshow -101.455078 0.000000 m /n glyphshow -grestore -1 setlinejoin -0.000 0.502 0.000 setrgbcolor -gsave -259.860625 188.822 m -259.860625 198.822 l -stroke -grestore -2 setlinecap -gsave -249.860625 193.822 m -269.860625 193.822 l -stroke -grestore -0 setlinejoin -0 setlinecap -gsave -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap --1 -3 m -1 -3 l -1 -1 l -3 -1 l -3 1 l -1 1 l -1 3 l --1 3 l --1 1 l --3 1 l --3 -1 l --1 -1 l -cl - -gsave -0.000 0.502 0.000 setrgbcolor -fill -grestore -stroke -grestore -} bind def -259.861 193.822 o -grestore -0.000 setgray -gsave -277.860625 190.322000 translate -0.000000 rotate -0.000000 0.000000 m /two glyphshow -6.362305 0.000000 m /zero glyphshow -12.724609 0.000000 m /zero glyphshow -19.086914 0.000000 m /zero glyphshow -25.449219 0.000000 m /space glyphshow -28.627930 0.000000 m /s glyphshow -33.837891 0.000000 m /y glyphshow -39.755859 0.000000 m /s glyphshow -44.965820 0.000000 m /t glyphshow -48.886719 0.000000 m /e glyphshow -55.039062 0.000000 m /m glyphshow -64.780273 0.000000 m /s glyphshow -69.990234 0.000000 m /space glyphshow -73.168945 0.000000 m /l glyphshow -75.947266 0.000000 m /i glyphshow -78.725586 0.000000 m /n glyphshow -85.063477 0.000000 m /e glyphshow -91.215820 0.000000 m /a glyphshow -97.343750 0.000000 m /r glyphshow -101.455078 0.000000 m /space glyphshow -104.633789 0.000000 m /r glyphshow -108.745117 0.000000 m /u glyphshow -115.083008 0.000000 m /n glyphshow -grestore -1 setlinejoin -0.000 0.502 0.000 setrgbcolor -gsave -259.860625 174.150125 m -259.860625 184.150125 l -stroke -grestore -2 setlinecap -gsave -249.860625 179.150125 m -269.860625 179.150125 l -stroke -grestore -0 setlinejoin -0 setlinecap -gsave -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap --0 -4.242641 m -2.545584 0 l -0 4.242641 l --2.545584 0 l -cl - -gsave -0.000 0.502 0.000 setrgbcolor -fill -grestore -stroke -grestore -} bind def -259.861 179.15 o -grestore -0.000 setgray -gsave -277.860625 175.650125 translate -0.000000 rotate -0.000000 0.000000 m /two glyphshow -6.362305 0.000000 m /zero glyphshow -12.724609 0.000000 m /zero glyphshow -19.086914 0.000000 m /zero glyphshow -25.449219 0.000000 m /space glyphshow -28.627930 0.000000 m /s glyphshow -33.837891 0.000000 m /y glyphshow -39.755859 0.000000 m /s glyphshow -44.965820 0.000000 m /t glyphshow -48.886719 0.000000 m /e glyphshow -55.039062 0.000000 m /m glyphshow -64.780273 0.000000 m /s glyphshow -69.990234 0.000000 m /space glyphshow -73.168945 0.000000 m /M glyphshow -81.796875 0.000000 m /P glyphshow -87.827148 0.000000 m /space glyphshow -91.005859 0.000000 m /r glyphshow -95.117188 0.000000 m /u glyphshow -101.455078 0.000000 m /n glyphshow -grestore -1 setlinejoin -1.000 0.000 0.000 setrgbcolor -gsave -259.860625 159.47825 m -259.860625 169.47825 l -stroke -grestore -2 setlinecap -gsave -249.860625 164.47825 m -269.860625 164.47825 l -stroke -grestore -0 setlinejoin -0 setlinecap -gsave -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap --1 -3 m -1 -3 l -1 -1 l -3 -1 l -3 1 l -1 1 l -1 3 l --1 3 l --1 1 l --3 1 l --3 -1 l --1 -1 l -cl - -gsave -1.000 0.000 0.000 setrgbcolor -fill -grestore -stroke -grestore -} bind def -259.861 164.478 o -grestore -0.000 setgray -gsave -277.860625 160.978250 translate -0.000000 rotate -0.000000 0.000000 m /five glyphshow -6.362305 0.000000 m /zero glyphshow -12.724609 0.000000 m /zero glyphshow -19.086914 0.000000 m /zero glyphshow -25.449219 0.000000 m /space glyphshow -28.627930 0.000000 m /s glyphshow -33.837891 0.000000 m /y glyphshow -39.755859 0.000000 m /s glyphshow -44.965820 0.000000 m /t glyphshow -48.886719 0.000000 m /e glyphshow -55.039062 0.000000 m /m glyphshow -64.780273 0.000000 m /s glyphshow -69.990234 0.000000 m /space glyphshow -73.168945 0.000000 m /l glyphshow -75.947266 0.000000 m /i glyphshow -78.725586 0.000000 m /n glyphshow -85.063477 0.000000 m /e glyphshow -91.215820 0.000000 m /a glyphshow -97.343750 0.000000 m /r glyphshow -101.455078 0.000000 m /space glyphshow -104.633789 0.000000 m /r glyphshow -108.745117 0.000000 m /u glyphshow -115.083008 0.000000 m /n glyphshow -grestore -1 setlinejoin -1.000 0.000 0.000 setrgbcolor -gsave -259.860625 144.806375 m -259.860625 154.806375 l -stroke -grestore -2 setlinecap -gsave -249.860625 149.806375 m -269.860625 149.806375 l -stroke -grestore -0 setlinejoin -0 setlinecap -gsave -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap --0 -4.242641 m -2.545584 0 l -0 4.242641 l --2.545584 0 l -cl - -gsave -1.000 0.000 0.000 setrgbcolor -fill -grestore -stroke -grestore -} bind def -259.861 149.806 o -grestore -0.000 setgray -gsave -277.860625 146.306375 translate -0.000000 rotate -0.000000 0.000000 m /five glyphshow -6.362305 0.000000 m /zero glyphshow -12.724609 0.000000 m /zero glyphshow -19.086914 0.000000 m /zero glyphshow -25.449219 0.000000 m /space glyphshow -28.627930 0.000000 m /s glyphshow -33.837891 0.000000 m /y glyphshow -39.755859 0.000000 m /s glyphshow -44.965820 0.000000 m /t glyphshow -48.886719 0.000000 m /e glyphshow -55.039062 0.000000 m /m glyphshow -64.780273 0.000000 m /s glyphshow -69.990234 0.000000 m /space glyphshow -73.168945 0.000000 m /M glyphshow -81.796875 0.000000 m /P glyphshow -87.827148 0.000000 m /space glyphshow -91.005859 0.000000 m /r glyphshow -95.117188 0.000000 m /u glyphshow -101.455078 0.000000 m /n glyphshow -grestore -1 setlinejoin -gsave -259.860625 130.1345 m -259.860625 140.1345 l -stroke -grestore -2 setlinecap -gsave -249.860625 135.1345 m -269.860625 135.1345 l -stroke -grestore -0 setlinejoin -0 setlinecap -gsave -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap --1 -3 m -1 -3 l -1 -1 l -3 -1 l -3 1 l -1 1 l -1 3 l --1 3 l --1 1 l --3 1 l --3 -1 l --1 -1 l -cl - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -259.861 135.134 o -grestore -gsave -277.860625 131.634500 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /zero glyphshow -12.724609 0.000000 m /zero glyphshow -19.086914 0.000000 m /zero glyphshow -25.449219 0.000000 m /zero glyphshow -31.811523 0.000000 m /space glyphshow -34.990234 0.000000 m /s glyphshow -40.200195 0.000000 m /y glyphshow -46.118164 0.000000 m /s glyphshow -51.328125 0.000000 m /t glyphshow -55.249023 0.000000 m /e glyphshow -61.401367 0.000000 m /m glyphshow -71.142578 0.000000 m /s glyphshow -76.352539 0.000000 m /space glyphshow -79.531250 0.000000 m /l glyphshow -82.309570 0.000000 m /i glyphshow -85.087891 0.000000 m /n glyphshow -91.425781 0.000000 m /e glyphshow -97.578125 0.000000 m /a glyphshow -103.706055 0.000000 m /r glyphshow -107.817383 0.000000 m /space glyphshow -110.996094 0.000000 m /r glyphshow -115.107422 0.000000 m /u glyphshow -121.445312 0.000000 m /n glyphshow -grestore -1 setlinejoin -gsave -259.860625 115.462625 m -259.860625 125.462625 l -stroke -grestore -2 setlinecap -gsave -249.860625 120.462625 m -269.860625 120.462625 l -stroke -grestore -0 setlinejoin -0 setlinecap -gsave -/o { -gsave -newpath -translate -1.0 setlinewidth -0 setlinejoin -0 setlinecap --0 -4.242641 m -2.545584 0 l -0 4.242641 l --2.545584 0 l -cl - -gsave -0.000 setgray -fill -grestore -stroke -grestore -} bind def -259.861 120.463 o -grestore -gsave -277.860625 116.962625 translate -0.000000 rotate -0.000000 0.000000 m /one glyphshow -6.362305 0.000000 m /zero glyphshow -12.724609 0.000000 m /zero glyphshow -19.086914 0.000000 m /zero glyphshow -25.449219 0.000000 m /zero glyphshow -31.811523 0.000000 m /space glyphshow -34.990234 0.000000 m /s glyphshow -40.200195 0.000000 m /y glyphshow -46.118164 0.000000 m /s glyphshow -51.328125 0.000000 m /t glyphshow -55.249023 0.000000 m /e glyphshow -61.401367 0.000000 m /m glyphshow -71.142578 0.000000 m /s glyphshow -76.352539 0.000000 m /space glyphshow -79.531250 0.000000 m /M glyphshow -88.159180 0.000000 m /P glyphshow -94.189453 0.000000 m /space glyphshow -97.368164 0.000000 m /r glyphshow -101.479492 0.000000 m /u glyphshow -107.817383 0.000000 m /n glyphshow -grestore - -end -showpage diff --git a/tests/scaling/scaling_plots/total_time_scaling_Astro1.pdf b/tests/scaling/scaling_plots/total_time_scaling_Astro1.pdf deleted file mode 100644 index da2dc313ee909ecdb3c37c12ac67a4b548c6c1ca..0000000000000000000000000000000000000000 Binary files a/tests/scaling/scaling_plots/total_time_scaling_Astro1.pdf and /dev/null differ diff --git a/tests/scaling/scaling_plots/total_time_scaling_Astro1.png b/tests/scaling/scaling_plots/total_time_scaling_Astro1.png deleted file mode 100644 index f9d490fa0c303edcc90ec78a867a62a460614bd8..0000000000000000000000000000000000000000 Binary files a/tests/scaling/scaling_plots/total_time_scaling_Astro1.png and /dev/null differ diff --git a/tests/scaling/scaling_results/david-Lenovo-IdeaPad-S340-14IWL_100_systems.json b/tests/scaling/scaling_results/david-Lenovo-IdeaPad-S340-14IWL_100_systems.json deleted file mode 100644 index cda34fb1607e42f5a893975d7742d15cae740b46..0000000000000000000000000000000000000000 --- a/tests/scaling/scaling_results/david-Lenovo-IdeaPad-S340-14IWL_100_systems.json +++ /dev/null @@ -1 +0,0 @@ -{"amt_systems": 100, "linear": [19.72011685371399, 19.587830066680908, 19.708610773086548, 19.45118284225464, 20.126941442489624], "mp": {"1": [18.83211064338684, 17.930497884750366, 17.592474222183228, 19.59392213821411, 17.999958276748657], "2": [9.893681287765503, 9.778665542602539, 9.639752388000488, 9.601866722106934, 9.518643379211426], "3": [8.624024391174316, 8.044230937957764, 7.8276495933532715, 8.299225568771362, 8.205702066421509], "4": [8.024757623672485, 8.07252287864685, 7.411813259124756, 7.60955548286438, 7.499555349349976]}} \ No newline at end of file diff --git a/tests/scaling/scaling_results/david-Lenovo-IdeaPad-S340-14IWL_200_systems.json b/tests/scaling/scaling_results/david-Lenovo-IdeaPad-S340-14IWL_200_systems.json deleted file mode 100644 index 2ec5e535e94d686ad897976e5ffcf8cd1b229c69..0000000000000000000000000000000000000000 --- a/tests/scaling/scaling_results/david-Lenovo-IdeaPad-S340-14IWL_200_systems.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "amt_systems": 200, - "hostname": "david-Lenovo-IdeaPad-S340-14IWL", - "amt_logical_cores": 4, - "amt_of_physical_cores": 2, - "testcase": "linear vs MP batched", - "linear": [ - 16.011094570159912 - ], - "mp": { - "1": [ - 14.876800060272217 - ], - "2": [ - 8.265092372894287 - ], - "3": [ - 9.207342624664307 - ], - "4": [ - 8.85547423362732 - ] - } -} \ No newline at end of file diff --git a/tests/scaling/scaling_results/david-Lenovo-IdeaPad-S340-14IWL_2500_systems.json b/tests/scaling/scaling_results/david-Lenovo-IdeaPad-S340-14IWL_2500_systems.json deleted file mode 100644 index 3c1be948716bfe135295f9d641f3e84382ab7747..0000000000000000000000000000000000000000 --- a/tests/scaling/scaling_results/david-Lenovo-IdeaPad-S340-14IWL_2500_systems.json +++ /dev/null @@ -1 +0,0 @@ -{"amt_systems": 2500, "linear": [535.2446541786194, 531.679586648941, 503.9523551464081, 516.4467158317566, 419.0196635723114], "mp": {"1": [324.1483242511749, 324.7180655002594, 308.04840874671936, 320.5808265209198, 269.06056094169617], "2": [198.5036120414734, 200.80192279815674, 200.7008581161499, 201.11187481880188, 195.4440987110138], "3": [177.40493178367615, 185.3030173778534, 185.9845471382141, 167.43135380744934, 176.51506352424622], "4": [168.93674492835999, 170.39990496635437, 170.85545444488525, 166.5380687713623, 154.52895426750183]}} \ No newline at end of file diff --git a/tests/scaling/scaling_results/speedup_scaling_Example.pdf b/tests/scaling/scaling_results/speedup_scaling_Example.pdf deleted file mode 100644 index a7cd4fe2086a19953427c09d82dd38a5bb63aac5..0000000000000000000000000000000000000000 Binary files a/tests/scaling/scaling_results/speedup_scaling_Example.pdf and /dev/null differ diff --git a/tests/scaling/scaling_results/speedup_scaling_Example.png b/tests/scaling/scaling_results/speedup_scaling_Example.png deleted file mode 100644 index 20859bdc4cf27d5fa19c60c82513460cf9e828f1..0000000000000000000000000000000000000000 Binary files a/tests/scaling/scaling_results/speedup_scaling_Example.png and /dev/null differ diff --git a/tests/scaling/scaling_script.py b/tests/scaling/scaling_script.py deleted file mode 100644 index 6f578243b85ee66dcbf28b268e4311f773bc9174..0000000000000000000000000000000000000000 --- a/tests/scaling/scaling_script.py +++ /dev/null @@ -1,82 +0,0 @@ -""" -This script will test the scaling and performance of the code on your system. - -It requires some user input, which you can define at the top of the script after the imports. - -The following values should be configured according to your system: -- - -It will then run the population you specified, first linearly <amt_repeats> times, -and then using multiprocessing it will run the population <amt_repeats> times each time -with more cores. (Up until <amount_of_cpus>) - -TODO: get the real evolution time instead of the total as well -TODO: put the methods in functions and put them in a different file -""" - -import os -import json -import socket -import psutil - -import numpy as np - -from binarycpython.utils.grid import Population -from scaling_functions import ( - get_mp_results, - get_linear_results, - run_systems_for_scaling_comparison, -) -from plot_scaling import plot_speedup_and_efficiency - -settings_dict = {} -settings_dict[ - "amt_repeats" -] = 1 # Number of times the population will be repeated per cpu -# number. Better do it several times than only run it once -settings_dict[ - "resolutions" -] = [ # List of resolution of sampling of the population. Useful for checking whether population size has an effect on the results - {"M_1": 10, "per": 10, "q": 2} -] -settings_dict[ - "result_dir" -] = "scaling_results" # Relative of absolute directory where results are writting to -settings_dict["plot_dir"] = "scaling_plots" # Directory where the plots will be stored -settings_dict[ - "testcase" -] = "linear vs MP batched" # 'name' of the calculation. will be used in the plot -settings_dict[ - "stepsize_cpus" -] = 1 # Stepsize for the cpu number generator. Try to keep this -# low, to get the most reliable results -settings_dict[ - "amount_of_cpus" -] = 4 # Amount of logical cpus the machine has (this is not the same as physical cpus!) -# settings_dict['amount_of_cpus'] = psutil.cpu_count() -settings_dict["amount_of_cores"] = 2 # The amount of physical cores. This value -# is not vital bit will be used in the plot -# settings_dict['amount_of_cores'] = psutil.cpu_count(logical=False) # You can also use the psutil function to get -# the amt of physical cores, but this isnt fully -# reliable (in mar 2020 it didnt get this value -# right when there were multiple sockets) - -run_systems_for_scaling_comparison(settings_dict) -################################# -# Files -SCALING_RESULT_DIR = settings_dict["result_dir"] -RESULT_JSONS = [ - os.path.join(SCALING_RESULT_DIR, file) - for file in os.listdir(SCALING_RESULT_DIR) - if file.endswith(".json") -] # Automatically grab all of the stuff, override it - -# FILENAMES = [ -# "david-Lenovo-IdeaPad-S340-14IWL_100_systems.json", -# "david-Lenovo-IdeaPad-S340-14IWL_2500_systems.json" -# ] -# RESULT_JSONS = [] -# for filename in FILENAMES: -# RESULT_JSONS.append(os.path.join(os.path.abspath(SCALING_RESULT_DIR), filename)) - -plot_speedup_and_efficiency(RESULT_JSONS, SCALING_RESULT_DIR, "Example")