## {{analysis.name}}

Mass Accuracy: {{analysis.parameters.mass_error_tolerance * (10 ** 6)}} PPM
Grouping Tolerance: {{analysis.parameters.grouping_error_tolerance * (10 ** 6)}} PPM
Adducts: {{analysis.parameters.mass_shifts|join(", ")}}
{% if analysis.parameters.get("network_parameters") is not none %} Network λ: {{"%0.3g" % analysis.parameters.network_parameters.lmbda}}
{% endif %} Scoring Model Features

{% for feature in analysis.parameters.get("scoring_model").features() %}
- {{feature.get_feature_type()}}: {{ feature.get_feature_name().replace( feature.get_feature_type(), "").replace(":", "") }}
{% endfor %}

{% if analysis.parameters.get("network_parameters") is not none %} Neighborhood Parameters

{% for t in analysis.parameters.network_parameters.tau %}
{% if t > 0 %} {{analysis.parameters.network_model.model.neighborhood_names[loop.index0]}} | {{"%0.3g" % t}} {% endif %}
{% endfor %}

{% endif %}
Glycan Hypothesis: {{analysis.hypothesis.name}}
Sample Searched: {{analysis.sample_run.name}}
{{lcms_plot}}
{{composition_abundance_plot}}
{% if analysis.parameters.get("network_model") is not none and analysis.parameters.get("network_model").has_reduction() %}
{{analysis.parameters.network_model.plot_thresholds() | svguri_plot(bbox_inches='tight', patchless=True)}}
{{analysis.parameters.network_model.plot() | svguri_plot(bbox_inches='tight', patchless=True)}}
{% endif %}

Mass | Glycan Composition | Score | Total Abundance | Adducts | Charge States | Start Time | Apex Time | End Time
--- | --- | --- | --- | --- | --- | --- | --- | ---
{% for chrom in glycan_chromatograms %}
{{"%0.5f" % chrom.neutral_mass}} | {{chrom.glycan_composition | glycan_link}} | {{"%0.5f" % chrom.score}} | {{"%0.3e" % chrom.total_signal}} | {{chrom.mass_shifts|join(', ', "name")}} | {{chrom.charge_states|join(', ')}} | {{"%0.4f" % chrom.start_time}} | {{"%0.4f" % chrom.apex_time}} | {{"%0.4f" % chrom.end_time}}
{% endfor %}

{% for chromatogram in glycan_chromatograms %}

### {{chromatogram.glycan_composition}}

Observed Mass: {{chromatogram.neutral_mass}} ({{ "%0.4e" % ((chromatogram.glycan_composition.mass() - chromatogram.neutral_mass ) / chromatogram.neutral_mass) }})
Total Abundance: {{"%0.4e" % chromatogram.total_signal}}
Adduct Signal Fractions

{% for mass_shift, fraction in chromatogram.mass_shift_signal_fractions().items() %}
- {{mass_shift.name}}: {{"%0.4e" % fraction}}
{% endfor %}

Charge States: {{chromatogram.charge_states | join(", ")}}

Chromatogram Score | {{"%0.4g" % chromatogram.score}} | ({{"%0.4g" % chromatogram.logitscore}})
{% for facet_score, value in chromatogram.score_components().items() %}
{{facet_score.replace("_", " ").title()}} | {{"%0.4g" % value}} | {{"%0.4g" % value | logit }}
{% endfor %}

{% if chromatogram.tandem_solutions is defined and chromatogram.tandem_solutions|length > 0 %}

Scan ID | Signature Ion Score
--- | ---
{% for gsm in chromatogram.tandem_solutions if gsm.score > 0.0001 %}
{{gsm.scan_id}} | {{"%0.4g" % gsm.score}}
{% endfor %}

{% endif %} {% if chromatogram.ambiguous_with|length > 0%} Ambiguous Mass Shifts

{% for pair in chromatogram.ambiguous_with %}
- {{pair[0] | glycan_link}} ~ {{pair[1].name}} {% set reference = resolve_key(pair[0]) %} {% if reference is not none %} ({{"%0.4g" % reference.score}}) {% endif %}
{% endfor %}

{% endif %} {% if chromatogram.used_as_mass_shift|length > 0 %} Used As Adduct

{% for pair in chromatogram.used_as_mass_shift %}
- {{pair[0] | glycan_link}} ~ {{pair[1].name}} {% set reference = resolve_key(pair[0]) %} {% if reference is not none %} ({{"%0.4g" % reference.score}}) {% endif %}
{% endfor %}

{% endif %}
{% for svgfig in chromatogram | chromatogram_figures %}
{{svgfig}}
{% endfor %}
{% endfor %}