import argparse
import os
import logging
import time
import yaml
import fibsem
response_yes = ['yes', 'y']
response_no = ['no', 'n']
response_cancel = ['quit', 'q', 'exit', 'cancel']
known_responses = response_yes + response_no + response_cancel
default_response_yes = [''] + response_yes # Blank '' not in known_responses
[docs]def response(message):
user_response = ''
while user_response.lower() not in known_responses:
user_response = input(message + '\n')
return user_response
[docs]def load_config(yaml_filename):
with open(yaml_filename, "r") as f:
settings = yaml.safe_load(f)
for key in settings:
try:
settings[key] = float(settings[key])
except ValueError:
pass
return settings
def _log_file_begins(settings):
"""Initialize logging and begin writing log file.
Parameters
----------
settings : user input settings from config yml file.
Input arguments from user.
Returns
-------
log_filename : str
Filepath to output log text file location.
"""
timestamp = time.strftime('%d-%b-%Y_%H-%M%p', time.localtime())
log_filename = os.path.join(os.path.abspath(os.path.dirname(__file__)),
'..', 'logs', 'logging.conf')
logging.basicConfig(
format="%(asctime)s %(message)s",
level=logging.INFO,
handlers=[
logging.FileHandler("{}".format(log_filename)),
logging.StreamHandler()
])
log = logging.getLogger(__name__)
# Log user input arguments
log.info("DeMarco lab fibsem, version {}".format(fibsem.__version__))
log.info("{}".format(timestamp))
log.info("========== USER CONFIG SETTINGS ==========")
for key, val in settings.items():
log.info("{}: {}".format(key, val))
log.info("=========== END OF USER INPUT ============")
return log_filename