本文整理汇总了Python中pynestml.utils.logger.Logger.get_log方法的典型用法代码示例。如果您正苦于以下问题:Python Logger.get_log方法的具体用法?Python Logger.get_log怎么用?Python Logger.get_log使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pynestml.utils.logger.Logger
的用法示例。
在下文中一共展示了Logger.get_log方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: parse_model
# 需要导入模块: from pynestml.utils.logger import Logger [as 别名]
# 或者: from pynestml.utils.logger.Logger import get_log [as 别名]
def parse_model(cls, file_path=None):
"""
Parses a handed over model and returns the meta_model representation of it.
:param file_path: the path to the file which shall be parsed.
:type file_path: str
:return: a new ASTNESTMLCompilationUnit object.
:rtype: ASTNestMLCompilationUnit
"""
try:
input_file = FileStream(file_path)
except IOError:
code, message = Messages.get_input_path_not_found(path=file_path)
Logger.log_message(neuron=None, code=None, message=message, error_position=None, log_level=LoggingLevel.ERROR)
return
code, message = Messages.get_start_processing_file(file_path)
Logger.log_message(neuron=None, code=code, message=message, error_position=None, log_level=LoggingLevel.INFO)
# create a lexer and hand over the input
lexer = PyNestMLLexer()
lexer.removeErrorListeners()
lexer.addErrorListener(ConsoleErrorListener())
lexerErrorListener = NestMLErrorListener()
lexer.addErrorListener(lexerErrorListener)
# lexer._errHandler = BailErrorStrategy() # N.B. uncomment this line and the next to halt immediately on lexer errors
# lexer._errHandler.reset(lexer)
lexer.inputStream = input_file
# create a token stream
stream = CommonTokenStream(lexer)
stream.fill()
if lexerErrorListener._error_occurred:
code, message = Messages.get_lexer_error()
Logger.log_message(neuron=None, code=None, message=message, error_position=None, log_level=LoggingLevel.ERROR)
return
# parse the file
parser = PyNestMLParser(None)
parser.removeErrorListeners()
parser.addErrorListener(ConsoleErrorListener())
parserErrorListener = NestMLErrorListener()
parser.addErrorListener(parserErrorListener)
# parser._errHandler = BailErrorStrategy() # N.B. uncomment this line and the next to halt immediately on parse errors
# parser._errHandler.reset(parser)
parser.setTokenStream(stream)
compilation_unit = parser.nestMLCompilationUnit()
if parserErrorListener._error_occurred:
code, message = Messages.get_parser_error()
Logger.log_message(neuron=None, code=None, message=message, error_position=None, log_level=LoggingLevel.ERROR)
return
# create a new visitor and return the new AST
ast_builder_visitor = ASTBuilderVisitor(stream.tokens)
ast = ast_builder_visitor.visit(compilation_unit)
# create and update the corresponding symbol tables
SymbolTable.initialize_symbol_table(ast.get_source_position())
log_to_restore = copy.deepcopy(Logger.get_log())
counter = Logger.curr_message
# replace all derived variables through a computer processable names: e.g. g_in''' -> g_in__ddd
restore_differential_order = []
for ode in ASTUtils.get_all(ast, ASTOdeEquation):
lhs_variable = ode.get_lhs()
if lhs_variable.get_differential_order() > 0:
lhs_variable.differential_order = lhs_variable.get_differential_order() - 1
restore_differential_order.append(lhs_variable)
for shape in ASTUtils.get_all(ast, ASTOdeShape):
lhs_variable = shape.get_variable()
if lhs_variable.get_differential_order() > 0:
lhs_variable.differential_order = lhs_variable.get_differential_order() - 1
restore_differential_order.append(lhs_variable)
# than replace remaining variables
for variable in ASTUtils.get_all(ast, ASTVariable):
if variable.get_differential_order() > 0:
variable.set_name(variable.get_name() + "__" + "d" * variable.get_differential_order())
variable.differential_order = 0
# now also equations have no ' at lhs. replace every occurrence of last d to ' to compensate
for ode_variable in restore_differential_order:
ode_variable.differential_order = 1
Logger.set_log(log_to_restore, counter)
for neuron in ast.get_neuron_list():
neuron.accept(ASTSymbolTableVisitor())
SymbolTable.add_neuron_scope(neuron.get_name(), neuron.get_scope())
return ast