Greetings again With your awesome help, I now have a plot with several FIT files. How can I simplify this to just loop through the folder that the FITS files are in, this is the path of one of the folders. Desktop • harpn_sun_release_package_ccf_2018 • 2018-01-18 • r.HARPN.2018-01-18T14:25:36.145_CCF_A.fits This is the current code: import numpy as np import matplotlib.pyplot as plt from astropy.io import fits from astropy.wcs import WCS %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 spec_list = [ '~/Desktop/r.HARPN.2018-01-18T14:25:36.145_CCF_A.fits', '~/Desktop/r.HARPN.2018-01-18T14:20:10.645_CCF_A.fits', '~/Desktop/r.HARPN.2018-01-18T14:31:00.875_CCF_A.fits', '~/Desktop/r.HARPN.2018-01-18T14:36:26.373_CCF_A.fits', '~/Desktop/r.HARPN.2018-01-18T14:41:51.487_CCF_A.fits', '~/Desktop/r.HARPN.2018-01-18T14:47:16.601_CCF_A.fits' ] for file_path in spec_list: plot_fits_file(file_path) plt.show()
Greetings again
With your awesome help, I now have a plot with several FIT files. How can I simplify this to just loop through the folder that the FITS files are in, this is the path of one of the folders.
Desktop • harpn_sun_release_package_ccf_2018 • 2018-01-18 • r.HARPN.2018-01-18T14:25:36.145_CCF_A.fits
This is the current code:
import numpy as np
import matplotlib.pyplot as plt
from astropy.io import fits
from astropy.wcs import WCS
%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
spec_list = [
'~/Desktop/r.HARPN.2018-01-18T14:25:36.145_CCF_A.fits',
'~/Desktop/r.HARPN.2018-01-18T14:20:10.645_CCF_A.fits',
'~/Desktop/r.HARPN.2018-01-18T14:31:00.875_CCF_A.fits',
'~/Desktop/r.HARPN.2018-01-18T14:36:26.373_CCF_A.fits',
'~/Desktop/r.HARPN.2018-01-18T14:41:51.487_CCF_A.fits',
'~/Desktop/r.HARPN.2018-01-18T14:47:16.601_CCF_A.fits'
]
for file_path in spec_list:
plot_fits_file(file_path)
plt.show()
Step by step
Solved in 3 steps with 2 images