docs: def get_dG_at_T(seq, temp):
      """Predict dG at temperature T, using best predictions from Dill or Oobatake methods.
  
      Args:
          seq (str, Seq, SeqRecord): Amino acid sequence
          temp (float): Temperature in degrees C
  
      Returns:
          (tuple): tuple containing:
  
              dG (float) Free energy of unfolding dG (cal/mol)
              keq (float): Equilibrium constant Keq
              method (str): Method used to calculate
              
      """
      # R (molar gas constant) in calories
      r_cal = scipy.constants.R / scipy.constants.calorie
  
      seq = ssbio.protein.sequence.utils.cast_to_str(seq)
  
      oobatake = {}
      for t in range(20, 51):
          oobatake[t] = calculate_oobatake_dG(seq, t)
  
      stable = [i for i in oobatake.values() if i > 0]
  
      if len(stable) == 0:
          # If oobatake dG < 0 for all tempertures [20,50], use Dill dG
          # and convert the number from J/mol to cal/mol
          dG = 0.238846 * calculate_dill_dG(len(seq), temp)
          method='Dill'
      else:
          dG = oobatake[temp]
          method='Oobatake'
  
      keq = math.exp(-1 * dG / (r_cal * (temp + 273.15)))
  
      return dG, keq, method