Spaces:
Sleeping
Sleeping
| """ | |
| plot_spectrum.py | |
| This script provides functionality to load and plot Raman spectra from two-column `.txt` files. | |
| Functions: | |
| - load_spectrum(filepath): Reads a spectrum file and extracts Raman shift and intensity values. | |
| - plot_spectrum(x, y, title): Plots the Raman spectrum with basic styling. | |
| Command-line Usage: | |
| The script can be run directly to load and plot a predefined spectrum file. Modify the `spectrum_file` variable to specify the file path. | |
| Dependencies: | |
| - os: For file path operations. | |
| - matplotlib.pyplot: For plotting the spectrum. | |
| Example: | |
| python plot_spectrum.py | |
| """ | |
| import sys | |
| import os | |
| sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) | |
| import matplotlib.pyplot as plt | |
| def load_spectrum(filepath): | |
| """Loads a Raman spectrum from a two-column .txt file.""" | |
| x_vals, y_vals = [], [] | |
| with open(filepath, 'r', encoding='utf-8') as file: | |
| for line in file: | |
| parts = line.strip().split() | |
| if len(parts) == 2: | |
| try: | |
| x, y = float(parts[0]), float(parts[1]) | |
| x_vals.append(x) | |
| y_vals.append(y) | |
| except ValueError: | |
| continue # Skip lines that can't be converted | |
| return x_vals, y_vals | |
| def plot_spectrum(x, y, title="Raman Spectrum"): | |
| """Plots the spectrum data with basic styling.""" | |
| plt.figure(figsize=(10, 5)) | |
| plt.plot(x, y, linewidth=1.5) | |
| plt.xlabel("Raman Shift (cm⁻¹)") | |
| plt.ylabel("Intensity (a.u.)") | |
| plt.title(title) | |
| plt.grid(True, linestyle='--', alpha=0.6) | |
| plt.tight_layout() | |
| if __name__ == "__main__": | |
| import argparse | |
| parser = argparse.ArgumentParser(description="Plot a Raman spectrum from a .txt file.") | |
| parser.add_argument("--input", type=str, required=True, help="Path to input .txt file") | |
| parser.add_argument("--output", type=str, required=False, help="Path to save .png image") | |
| args = parser.parse_args() | |
| spectrum_file = args.input | |
| output_file = args.output | |
| x, y = load_spectrum(spectrum_file) | |
| plot_spectrum(x, y, title=os.path.basename(spectrum_file)) | |
| if output_file: | |
| plt.savefig(output_file) | |
| print(f"✅ Plot saved to {output_file}") | |
| else: | |
| plt.show() |