import numpy as np
import petpal.kinetic_modeling.tcms_as_convolutions as pet_tcm
import petpal.kinetic_modeling.tac_fitting as pet_fit
import matplotlib.pyplot as plt
import petpal.utils.testing_utils as pet_tst
import petpal.visualizations.tac_plots as tac_plots

tcm_func = pet_tcm.gen_tac_1tcm_cpet_from_tac
pTAC = np.asarray(np.loadtxt('../../../../../data/tcm_tacs/fdg_plasma_clamp_evenly_resampled.txt').T)
tTAC = tcm_func(*pTAC, k1=1.0, k2=0.25, vb=0.05)
tTAC[1] = pet_tst.add_gaussian_noise_to_tac_based_on_max(tTAC[1])

fitter = pet_fit.TACFitter(pTAC=pTAC, tTAC=tTAC, tcm_func=tcm_func)
fitter.run_fit()
fit_params = fitter.fit_results[0]
fit_tac = pet_tcm.gen_tac_1tcm_cpet_from_tac(*pTAC, *fit_params)

plotter = tac_plots.TacFigure()
plotter.add_tac(*pTAC, label='Input TAC', color='black', ls='--')
plotter.add_tac(*tTAC, label='Tissue TAC', color='blue', ls='', marker='o', mec='k')
plotter.add_tac(*fit_tac, label='Fit TAC', color='red', ls='-', marker='', lw=2.5)
plt.legend()
plt.show()