code: #Importation : 
  import pandas as pd
  import numpy as np
  ################################################
  #Parameters : 
  #Planck constant (J/Hz)
  h=6.62607004*10**-34
  #Boltzmann constant (J/K)
  kB=1.38064852*10**-23
  #Light velocity in vaccum (m/s)
  c=299792458.0
  
  ####################################################################################
  #Functions:
  ######################################################################################
  #We check for errors : 
      
  #We check if all values are positiv for initial states
  def CheckPositiv(Data):
      if len(Data)!=len([i for i in Data if (i>0)]):
          print("At least one initial state hasn't every frequency that are positiv")
     
  def error(isH,isD,tsH,tsD):
      CheckPositiv(isH)
      CheckPositiv(isD)  
   
  #####################################################################################
  
  
  #Function which takes the lists of vibration frequencies of 2 states to give the product of the ratio of frequencies
  def Operation(Data1,Data2):
      if len(Data1)!=len(Data2):
          print("The number of frequencies isn't the same for two same states")
          return 
      x=1
      for i in range(len(Data1)):
          x=x*Data1[i]/Data2[i]
      return x
  
  #Function which takes one list of vibration frequencies to give the sinh of Ui = h*x/(kB*T) according to the Biegelheisen equation
  def Ui(Data,T):
      return pd.Series(Data).apply(lambda x : np.sinh(float(x)*((h*100*c)/(2.0*kB*float(T)))))
  
  #Function which takes in entry the lists of frequencies (cm-1) and the temperature (K) and gives the KIE
  #isH is the vibration frequencies of the molecule containing the light isotope at the initial state
  #isD is the vibration frequencies of the molecule containing the heavy isotope at the initial state
  #tsH is the vibration frequencies of the molecule containing the light isotope at the transition state
  #tsD is the vibration frequencies of the molecule containing the heavy isotope at the transition state
  #T is the temperature in Kelvin
  def KIE(isH,isD,tsH,tsD,T):
      error(isH,isD,tsH,tsD)
      #We calculate the sinh of  h*x/(kB*T)
      UisH=Ui(isH,T).tolist()
      UtsH=Ui(tsH,T).tolist()
      UisD=Ui(isD,T).tolist()
      UtsD=Ui(tsD,T).tolist()
      #######################
      #We begin to calculate the ratio of the two imaginary frequencies
      op1=tsH[0]/tsD[0]
      Result=op1
      #We calculate the second factor
      Result=Result*Operation(tsH[1:],tsD[1:])
      #We calculate the third factor
      Result=Result*Operation(isD,isH)
      #We calculate the fourth factor
      Result=Result*Operation(UtsD[1:],UtsH[1:])
      #We calculate the fifth factor
      Result=Result*Operation(UisH,UisD)    
      return Result
  
  
  ####################################################################################
  
  
  
apis: pandas.Series