# -*- coding: utf-8 -*-
"""
Created on Wed Dec  1 13:27:01 2021

@author: William Fahy
"""

import pandas as pd
import numpy as np



def decomposeFreeze(rawSpectra, what, basis='chebyshev'):
    
    rawSpectrumSanitized = rawSpectra
    rawSpectrumSanitized.replace([np.inf, -np.inf], np.nan, inplace=True)
    rawSpectrumSanitized.dropna(inplace=True)
    
    if basis == 'chebyshev':
        vec = np.polynomial.chebyshev.chebfit(rawSpectrumSanitized['Temp'], rawSpectrumSanitized[what], 10, w=np.sqrt(abs(rawSpectrumSanitized[what])))
    
    return vec

def freezeDiv(orig, aged, what):
    origvec = decomposeFreeze(orig, what)
    agedvec = decomposeFreeze(aged, what)
    
    div = origvec/agedvec
    
    return div

def freezeDiff(orig, aged, what):
    origvec = decomposeFreeze(orig, what)
    agedvec = decomposeFreeze(aged, what)
    
    diff = origvec - agedvec
    
    return diff

def INfromdivide(diff, orig, what):
    origvec=decomposeFreeze(orig, what)
    aged = origvec/diff
    return aged

def INfromdiff(diff, orig, what):
    origvec = decomposeFreeze(orig, what)
    aged= origvec - diff
    return aged


def decomposeFreezeOld(freeze, what, basis='chebyshev'):
    rawSpectrumSanitized = freeze.spectra
    rawSpectrumSanitized.replace([np.inf, -np.inf], np.nan, inplace=True)
    rawSpectrumSanitized.dropna(inplace=True)
    
    if basis == 'chebyshev':
        vec = np.polynomial.chebyshev.chebfit(rawSpectrumSanitized['Temp'], rawSpectrumSanitized[what], 10)
    
    return vec


def freezeDiffOld(orig, aged, what):
    origvec = decomposeFreezeOld(orig, what)
    agedvec = decomposeFreezeOld(aged, what)
    
    diff = origvec - agedvec
    
    return diff
