示例#1
0
def main():
    """
    Program entry point.
    """

    args = process_args()

    print('Parsing and resolving model: ' + args.lems_file)
    model = Model()
    if args.I is not None:
        for dir in args.I:
            model.add_include_directory(dir)
    model.import_from_file(args.lems_file)

    resolved_model = model.resolve()

    print('Building simulation')
    sim = SimulationBuilder(resolved_model).build()
    #sim.dump("Afterbuild:")

    if args.dlems:
        print('Exporting as: ' + dlems_info)

        from lems.dlems.exportdlems import export_component

        target = model.targets[0]

        sim_comp = model.components[target]

        target_net = sim_comp.parameters['target']

        target_comp = model.components[target_net]

        dlems_file_name = args.lems_file.replace('.xml', '.json')
        if dlems_file_name == args.lems_file:
            dlems_file_name = args.lems_file + '.json'

        if target_comp.type == 'network':

            for child in target_comp.children:

                if child.type == 'population':

                    comp = model.components[child.parameters['component']]

                    export_component(model,
                                     comp,
                                     sim_comp,
                                     child.id,
                                     file_name=dlems_file_name)
        else:
            export_component(model, sim_comp, target_comp)

    else:
        print('Running simulation')
        sim.run()

        process_simulation_output(sim, args)
示例#2
0
文件: run.py 项目: dokato/pylems
def main(args=None):
    """
    Program entry point.
    """
    
    if args is None:
        args = process_args()
    
    print('Parsing and resolving model: '+args.lems_file)
    model = Model()
    if args.I is not None:
        for dir in args.I:
            model.add_include_directory(dir)
    model.import_from_file(args.lems_file)
    
    resolved_model = model.resolve()
    
    print('Building simulation')
    sim = SimulationBuilder(resolved_model).build()
    #sim.dump("Afterbuild:")

    if args.dlems:
        print('Exporting as: '+dlems_info)
        
        from lems.dlems.exportdlems import export_component
        
        target = model.targets[0]

        sim_comp = model.components[target]

        target_net = sim_comp.parameters['target']

        target_comp = model.components[target_net]
        
        dlems_file_name = args.lems_file.replace('.xml', '.json')
        if dlems_file_name == args.lems_file:
            dlems_file_name = args.lems_file + '.json'

        if target_comp.type == 'network':

            for child in target_comp.children:

                if child.type == 'population':

                    comp =  model.components[child.parameters['component']]

                    export_component(model, comp, sim_comp, child.id, file_name=dlems_file_name)
        else:
            export_component(model, sim_comp, target_comp)
    
    else:
        print('Running simulation')
        sim.run()
        process_simulation_output(sim, model, args)
def validate_model(filename, name=None, config=None):
    """ Check that a model is valid

    Args:
        filename (:obj:`str`): path to model
        name (:obj:`str`, optional): name of model for use in error messages
        config (:obj:`Config`, optional): whether to fail on missing includes

    Returns:
        :obj:`tuple`:

            * nested :obj:`list` of :obj:`str`: nested list of errors (e.g., required ids missing or ids not unique)
            * nested :obj:`list` of :obj:`str`: nested list of errors (e.g., required ids missing or ids not unique)
            * :obj:`Model`: model
    """
    config = config or get_config()

    errors = []
    warnings = []
    model = None

    with StandardOutputErrorCapturer(relay=False, level=StandardOutputErrorCapturerLevel.c):
        valid, output = validate_neuroml2_lems_file(filename, exit_on_fail=False, return_string=True)
        if not valid:
            errors.append(['`{}` is not a valid LEMS file.'.format(filename), [[output]]])
            return (errors, warnings, model)

    core_types_dir = tempfile.mkdtemp()
    jar_filename = get_path_to_jnml_jar()
    with zipfile.ZipFile(jar_filename, 'r') as jar_file:
        neuroml2_core_type_members = (name for name in jar_file.namelist() if name.startswith('NeuroML2CoreTypes/'))
        jar_file.extractall(core_types_dir, members=neuroml2_core_type_members)

    model = Model(include_includes=True, fail_on_missing_includes=config.VALIDATE_IMPORTED_MODEL_FILES)
    model.add_include_directory(os.path.join(core_types_dir, 'NeuroML2CoreTypes'))
    model.import_from_file(filename)
    shutil.rmtree(core_types_dir)

    return (errors, warnings, model)
示例#4
0
    reopen = open(dlems_file_name, 'r')
    print(reopen.read())
    reopen.close()

    print("Written to %s" % dlems_file_name)


if __name__ == '__main__':
    model = Model()

    try:
        lems_file = sys.argv[1]
    except:
        lems_file = '../NeuroML2/LEMSexamples/LEMS_NML2_Ex9_FN.xml'
        model.add_include_directory('../NeuroML2/NeuroML2CoreTypes')

    print('Importing LEMS file from: %s' % lems_file)
    model.import_from_file(lems_file)

    target = model.targets[0]

    sim_comp = model.components[target]

    target_net = sim_comp.parameters['target']

    target_comp = model.components[target_net]

    if target_comp.type == 'network':

        for child in target_comp.children:
示例#5
0
        dlems_file.close()

        print(open(dlems_file_name,'r').read())

        print("Written to %s"%dlems_file_name)
    


if __name__ == '__main__':
    model = Model()

    try:
        lems_file = sys.argv[1] 
    except:
        lems_file = '../NeuroML2/LEMSexamples/LEMS_NML2_Ex9_FN.xml'
        model.add_include_directory('../NeuroML2/NeuroML2CoreTypes')

    print('Importing LEMS file from: %s'%lems_file)
    model.import_from_file(lems_file)

    target = model.targets[0]

    sim_comp = model.components[target]

    target_net = sim_comp.parameters['target']

    target_comp = model.components[target_net]


    if target_comp.type == 'network':