input: 
  def perform_calculations_and_plots(logfile: str, calib_folder: str) -> None:
      """Perform a series of calculations and plots based on input data. This function requires
      running eval_spectrum.py and calibration.py with appropriate measurements before executing.
      The script imports necessary modules and functions from external sources. The main function
      loads the input data, performs calibration, calculates various values, and generates plots
      based on instructions provided in a separate text file. The generated plots show absorbed
      power vs emitted power, absorbed power vs reflectivity, and dissipated power vs wavelength.
      The script also calculates thermal resistance and displays it on the plot.
  
      >>> perform_calculations_and_plots('../24_LL_ev/20150211_sample21-1-d6/spot333um.csv', '../24_LL_ev/20150204_calib_333um_s21-1-d6')
      # Outputs plots showing absorbed power vs emitted power, absorbed power vs reflectivity, and dissipated power vs wavelength.
      """
  
output:     
      import numpy as np
      import pandas as pd
      import matplotlib.pyplot as plt
      from eval_spectrum import load_spectrum_data
      from calibration import perform_calibration
  
      # Load the logfile data
      data = pd.read_csv(logfile)
  
      # Load the calibration data
      calib_data = perform_calibration(calib_folder)
  
      # Merge the data with calibration
      merged_data = pd.merge(data, calib_data, on='wavelength')
  
      # Calculate absorbed power
      merged_data['absorbed_power'] = merged_data['emitted_power'] - merged_data['reflected_power']
  
      # Calculate dissipated power
      merged_data['dissipated_power'] = merged_data['absorbed_power'] - merged_data['emitted_power']
  
      # Calculate thermal resistance
      thermal_resistance = np.mean(merged_data['dissipated_power'] / merged_data['absorbed_power'])
  
      # Plot absorbed power vs emitted power
      plt.figure(figsize=(10, 6))
      plt.plot(merged_data['emitted_power'], merged_data['absorbed_power'], label='Absorbed Power vs Emitted Power')
      plt.xlabel('Emitted Power')
      plt.ylabel('Absorbed Power')
      plt.title('Absorbed Power vs Emitted Power')
      plt.legend()
      plt.grid(True)
      plt.show()
  
      # Plot absorbed power vs reflectivity
      plt.figure(figsize=(10, 6))
      plt.plot(merged_data['reflected_power'], merged_data['absorbed_power'], label='Absorbed Power vs Reflectivity')
      plt.xlabel('Reflectivity')
      plt.ylabel('Absorbed Power')
      plt.title('Absorbed Power vs Reflectivity')
      plt.legend()
      plt.grid(True)
      plt.show()
  
      # Plot dissipated power vs wavelength
      plt.figure(figsize=(10, 6))
      plt.plot(merged_data['wavelength'], merged_data['dissipated_power'], label='Dissipated Power vs Wavelength')
      plt.xlabel('Wavelength')
      plt.ylabel('Dissipated Power')
      plt.title('Dissipated Power vs Wavelength')
      plt.legend()
      plt.grid(True)
      plt.show()
  
      # Display thermal resistance on the plot
      plt.text(0.5, 0.5, f'Thermal Resistance: {thermal_resistance:.2f}', transform=plt.gca().transAxes, fontsize=12, ha='center')
      plt.show()
  