#!/usr/bin/env python3
from pprint import pprint
import numpy as np
from os.path import join

from masstodon.data.constants import infinity
from masstodon.masstodon import masstodon_single
from masstodon.data.substance_p_wv_1_5_wh_4500 import mz, i

print("Using Substance-P spectrum collected at wave velocity")
mz = np.array(mz)
i = np.array(i)

threshold         = "0.05Th"
fasta             = 'RPKPQQFFGLM'
modifications     = {'11': {'C_carbo': {'H': 1, 'N': 1, 'O': -1}}}
q                 = 3
min_prob          = .8
isotopic_coverage = .999
std_cnt           = 3
timings           = True
include_zero_intensities = False

target = "."

print("Running masstodon.")
m, t = masstodon_single(mz, i, fasta, q,
    min_mz_diff        = infinity,
    modifications      = modifications,
    orbitrap           = False,
    threshold          = threshold,
    isotopic_coverage  = isotopic_coverage,
    min_prob           = min_prob,
    std_cnt            = std_cnt,
    get_timings        = timings,
    include_zero_intensities = include_zero_intensities)


print("Save spectrum to where you started your python from.")
m.plotly(join(target, "spectrum.html"), shape='rectangles', show=True)

print("Getting stats on inintial and final number of nodes and edges in the deconvolution graph.")
pprint(m.ome.G_stats)

print("Errors: absolute deviations and relative distance between spectra.")
pprint(m.imperator.errors())

print("Estimates of intensities of reactions and fragmentations.")
pprint(m.cz_simple.intensities)
pprint(m.cz_simple.probabilities)

print("Timings.")
pprint(t)

print("That's pretty much it.")
m.write(target)