Source code for snntoolbox.simulation.backends.megasim.megasim

# -*- coding: utf-8 -*-
""" MegaSim spiking neuron simulator.

A collection of helper functions used to get MegaSim's path and executable.

the configuration file will be stored at
$HOME/.snntoolbox/preferences/megasim_config.json

Assumes that have write access to the home folder.

@author: evan
"""

import os
import sys
import json


[docs]def megasim_path(): """ Returns ------- """ # first check if the .snntoolbox folder exists home_path = os.environ["HOME"] snntoobox_path_root = home_path+"/.snntoolbox/" snntoobox_preferences_path = snntoobox_path_root+"preferences/" megasim_config_json_fname = "megasim_config.json" if os.path.isdir(snntoobox_path_root): # config folder found, check if the preferences folder is there if os.path.isdir(snntoobox_preferences_path): try: megasim_file_config = open(snntoobox_preferences_path + megasim_config_json_fname, "r") megaconfig = json.load(megasim_file_config) megasim_path_is = megaconfig["MegaSim_path"] print("MegaSim folder is "+megasim_path_is) except FileNotFoundError: # megasim config json file not found, ask the user for megasims # path and check if the executable is there print("MegaSim's config file not found.") new_path_is = input("Please enter the full path to megasim" " executable: ") if new_path_is[-1] != "/": new_path_is = new_path_is+"/" print("Checking if MegaSim executable exists at "+new_path_is) if not os.path.isfile(new_path_is+"megasim"): print("MegaSim executable not found in "+new_path_is) sys.exit(1) print("Creating the MegaSim config file") f = open(snntoobox_preferences_path+megasim_config_json_fname, "w") build_line = '{"MegaSim_path": "'+new_path_is+'"}' f.write(build_line) f.write("\n") f.close() megasim_path_is = new_path_is else: print("snntoolbox preferences directory not found") megasim_path_is = " " else: print("snntoolbox config directory not found") cur_dir = os.getcwd() os.chdir(home_path) os.makedirs(snntoobox_preferences_path) print("MegaSim's config file not found.") new_path_is = input("Please enter the full path to megasim executable:" " ") if new_path_is[-1] != "/": new_path_is = new_path_is + "/" print("Checking if MegaSim executable exists at " + new_path_is) if not os.path.isfile(new_path_is + "megasim"): print("MegaSim executable not found in " + new_path_is) sys.exit(1) print("Creating the MegaSim config file") f = open(snntoobox_preferences_path + megasim_config_json_fname, "w") build_line = '{"MegaSim_path": "' + new_path_is + '"}' f.write(build_line) f.write("\n") f.close() # megasim_path_is = new_path_is os.chdir(cur_dir) megasim_path_is = " " return megasim_path_is