I am attempting to write a code that will allow me to loop through a series of FITS fies in a folder on my Desktop. This is what I have so far, but no plot as yet. I have included a picture of what the plot should look like after the looping process. import numpy as np import matplotlib.pyplot as plt import glob from astropy.io import fits from astropy.wcs import WCS from pathlib import Path %matplotlib inline %matplotlib widget plt.figure(figsize=(5,5)) legends = [] def plot_fits_file(file_path): # used this data to test ---------- # lam = np.random.random(100) # flux = np.random.random(100) # -------------------- # below code will work when you have file # all the plot will be on single chart hdul = fits.open(file_path) data = hdul[1].data h1 = hdul[1].header flux = data[1] w = WCS(h1, naxis=1, relax=False, fix=False) lam = w.wcs_pix2world(np.arange(len(flux)), 0)[0] plt.plot(lam, flux) plt.ylim(0, ) plt.xlabel('RV[km/s]') plt.ylabel('Normalized CCF') legends.append(file_path) # here use slicing to get whatever name you want otherwise file # name is too big folder_path = '~/Desktop/harpn_sun_release_package_ccf_2018/2018-01-18/' fits_files = glob.glob(folder_path + '*.fits') for file_path in fits_files: plot_fits_file(file_path) plt.show()
I am attempting to write a code that will allow me to loop through a series of FITS fies in a folder on my Desktop.
This is what I have so far, but no plot as yet. I have included a picture of what the plot should look like after the looping process.
import numpy as np
import matplotlib.pyplot as plt
import glob
from astropy.io import fits
from astropy.wcs import WCS
from pathlib import Path
%matplotlib inline
%matplotlib widget
plt.figure(figsize=(5,5))
legends = []
def plot_fits_file(file_path):
# used this data to test ----------
# lam = np.random.random(100)
# flux = np.random.random(100)
# --------------------
# below code will work when you have file
# all the plot will be on single chart
hdul = fits.open(file_path)
data = hdul[1].data
h1 = hdul[1].header
flux = data[1]
w = WCS(h1, naxis=1, relax=False, fix=False)
lam = w.wcs_pix2world(np.arange(len(flux)), 0)[0]
plt.plot(lam, flux)
plt.ylim(0, )
plt.xlabel('RV[km/s]')
plt.ylabel('Normalized CCF')
legends.append(file_path) # here use slicing to get whatever name you want otherwise file
# name is too big
folder_path = '~/Desktop/harpn_sun_release_package_ccf_2018/2018-01-18/'
fits_files = glob.glob(folder_path + '*.fits')
for file_path in fits_files:
plot_fits_file(file_path)
plt.show()
Step by step
Solved in 5 steps with 2 images