{% extends "report_base.html" %} {% block title %}{{ title }}{% endblock %} {% block items %}mappings{% endblock %} {% block heading %}{{ fit_id }}{% endblock %} {% block subtitle %}{{ opid }}{% endblock %} {% block placeholder %}Search parameters, mappings, metrics …{% endblock %} {% block badges %}{% for badge in badges %}{{ badge.label }} {{ badge.value }}{% endfor %}{% endblock %} {% block nav %} Overview Results {% if identifiability or fisher %}Identifiability{% endif %} Fit mappings {% endblock %} {% block chips %} {% for kind in kinds %} {% endfor %} {% endblock %} {% block footer %}{% for file in files %}{{ file.label }}{% if not loop.last %} · {% endif %}{% endfor %}{% endblock %} {% block content %}

Overview

Fit

{% for key, value in fit_info.items() %}
{{ key }}
{{ value }}
{% endfor %}

Parameters

{% if versioned_parameters %}{% endif %} {% for pset in parameter_set_ids %}{% endfor %} {% for row in parameters %} {% if versioned_parameters %}{% endif %} {% for value in row.set_values %}{% endfor %} {% endfor %}
parametertarget{{ pset }}lowerupper unit
{{ row.pid }}{{ row.target }}{{ value }}{{ row.lower }}{{ row.upper }} {{ row.unit }}
{% if bound_warnings %}

{% for message in bound_warnings %}{{ message }}
{% endfor %}

{% endif %}

Settings

{% for key, value in settings.items() %} {% endfor %}
settingvalue
{{ key }}{{ value }}

Data

{% for kind in kinds %}{% endfor %} {% for row in data_summary %} {% for count in row.counts %}{% endfor %} {% endfor %} {% for count in data_total.counts %}{% endfor %}
experiment{{ kind }}mappings
{{ row.experiment }}{{ count }}{{ row.total }}
total{{ count }}{{ data_total.total }}

Results

Metrics

{% for column in metrics_columns %} {% endfor %} {% for row in metrics %} {% for value in row %}{% endfor %} {% endfor %}
{{ column.name }}{% if column.hint %}?{% endif %}
{{ value }}
{% if run_plots %}

Optimization runs

{% for plot in run_plots %}
{{ plot.caption }}
{{ plot.caption }}{% if plot.hint %}?{% endif %}
{% endfor %}
{% endif %} {% if result_plots %}

Predictions and costs

{% for plot in result_plots %}
{{ plot.caption }}
{{ plot.caption }}{% if plot.hint %}?{% endif %}
{% endfor %}
{% endif %}

Contribution of the fit mappings

{% for column in mapping_metrics_columns %} {% endfor %} {% for row in mapping_metrics %} {% endfor %}
{{ column }}{% if hints.get(column) %}?{% endif %}
{{ row.parameter_set }}{{ row.experiment }} {{ row.mapping }} {{ row.kind }} {{ row.n }} {{ row.mse }}{{ row.rmse }} {{ row.nrmse }}{{ row.rmse_w }} {{ row.r2 }}
{% if runs %}

Optimization runs ({{ runs | length }})

{% for column in run_columns %} {% endfor %} {% for row in runs %}{% for value in row %}{% endfor %}{% endfor %}
{{ column }}
{{ value }}
{% endif %}
{% if fisher %}
{% if not identifiability %}

Identifiability

{% endif %}

Fisher information

The curvature of the cost at the parameters, FIM = J'J with the jacobian of the weighted residuals, from which the standard errors and the correlations of the parameters follow. It is a local statement: the intervals are exact for a cost which is a quadratic around the optimum and approximate for a non-linear model, where the profile likelihood is the one to trust. The errors and the intervals are computed in the space the optimizer searches, so an interval on a logarithmic scale is not symmetric around the value.

{% if not fisher.identifiable %}

The information does not have full rank: the data does not constrain every direction in parameter space, so the errors and the correlations of the unconstrained directions cannot be read. A parameter which no data informs is such a direction.

{% endif %}

Analysis

{% for key, value in fisher.info.items() %}
{{ key }}
{{ value }}
{% endfor %}
eigenvalues?
{{ fisher.eigenvalues | join(", ") }}

Parameters

{% for column in fisher.columns %} {% endfor %} {% for row in fisher.rows %} {% for value in row %}{% endfor %} {% endfor %}
{{ column.name }}{% if column.hint %}?{% endif %}
{{ value }}

Correlation?

{% for pid in fisher.pids %}{% endfor %} {% for pid in fisher.pids %} {% for value in fisher.correlation[loop.index0] %}{% endfor %} {% endfor %}
{{ pid }}
{{ pid }}{{ value }}
{% endif %} {% if identifiability %}

Identifiability

Profile likelihood of the parameters: every parameter is fixed at values around the optimum and the other parameters are optimized again. A parameter is identifiable if its profile crosses the threshold of the confidence level on both sides of the optimum, i.e., its confidence interval is finite; practically non-identifiable if the profile stays below the threshold up to a bound of the parameter; structurally non-identifiable if the profile is flat. An open side of an interval is shown as the bound of the parameter.

{% if identifiability.better_optimum %}

A profile found a cost below the cost of the parameter set, the fit did not converge to the optimum. The threshold is relative to the lowest cost.

{% endif %}

Analysis

{% for key, value in identifiability.info.items() %}
{{ key }}
{{ value }}
{% endfor %}

Parameters

{% for row in identifiability.rows %} {% endfor %}
parametervalue ci lowerci upper unitidentifiability points
{{ row.pid }}{{ row.value }} {{ row.ci_lower }}{{ row.ci_upper }} {{ row.unit }} {{ row.label }}{% if not row.converged %} not converged{% endif %} {{ row.n_points }}
{% if identifiability.plots %}
{% for plot in identifiability.plots %}
{{ plot.caption }}
{{ plot.caption }}{% if plot.hint %}?{% endif %}
{% endfor %}
{% endif %} {% if identifiability.profile_plots %}

Profiles

{% for plot in identifiability.profile_plots %}
{{ plot.caption }}
{{ plot.caption }}{% if plot.hint %}?{% endif %}
{% endfor %}
{% endif %}
{% endif %}

Fit mappings ({{ mappings | length }})

{% for mapping in mappings %}
{{ mapping.mapping }} {{ mapping.experiment }} · {{ mapping.observable }} {{ mapping.kind }} {% for key, value in mapping.metrics.items() %}{{ key }} {{ value }}{% endfor %}
{% for plot in mapping.plots %}
{{ plot.caption }}
{{ plot.caption }}{% if plot.hint %}?{% endif %}
{% endfor %}
{% endfor %}
{% endblock %}