def get_model(is_netfree=False, without_reset=False, seeds=None, effective=False):
    try:
        if seeds is not None or is_netfree:
            m = ecell4_base.core.NetfreeModel()
        else:
            m = ecell4_base.core.NetworkModel()
        for sp in SPECIES_ATTRIBUTES:
            m.add_species_attribute(sp)
        for rr in REACTION_RULES:
            m.add_reaction_rule(rr)
        if not without_reset:
            reset_model()
        if seeds is not None:
            return m.expand(seeds)
        if isinstance(m, ecell4_base.core.NetfreeModel):
            m.set_effective(effective)
    except Exception as e:
        reset_model()
        raise e
    return m