Handling Apertures

from pyird.utils import irdstream
import pathlib

Single Fiber Mode (nap = 21 or nap = 51)

In some observations, only the star fiber (mmf2) is used, without the comb (or speckle) fiber (mmf1). In such cases, extract the desired apertures using aptrace with nap = 21 for H-band images or nap = 51 for Y/J-band images.

#--------SETTINGS--------#
basedir = pathlib.Path('~/pyird/data/20210317/').expanduser()

band = 'h' #'h' or 'y'
mmf = 'mmf2' #'mmf1' (comb fiber) or 'mmf2' (star fiber)
readout_noise_mode = "default" #'real' or 'default'

datadir_flat = basedir/'flat/'
anadir = basedir/'reduc/'

fitsid_flat_star = list(range(41804,41904,2))
#-------------------------#
## FLAT_STAR
flat_star=irdstream.Stream2D("flat_star",datadir_flat,anadir)
flat_star.fitsid=fitsid_flat_star.copy()
# aperture extraction
flat_star.band=band
print(flat_star.band,' band')
if band=='h' and flat_star.fitsid[0]%2==0:
    flat_star.fitsid_increment()
    trace_mmf=flat_star.aptrace(cutrow = 1500,nap=21)
elif band=='y':
    trace_mmf=flat_star.aptrace(cutrow = 1000,nap=51)
No fitsid yet.
h  band
fitsid incremented:  [41805, 41807, 41809, 41811, 41813, 41815, 41817, 41819, 41821, 41823, 41825, 41827, 41829, 41831, 41833, 41835, 41837, 41839, 41841, 41843, 41845, 41847, 41849, 41851, 41853, 41855, 41857, 41859, 41861, 41863, 41865, 41867, 41869, 41871, 41873, 41875, 41877, 41879, 41881, 41883, 41885, 41887, 41889, 41891, 41893, 41895, 41897, 41899, 41901, 41903]
median combine:
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 1032.06it/s]
/Users/yuikasagi/git/pyird/src/pyird/image/aptrace.py:251: UserWarning: Looks a single fiber aperture on the detector.
  warnings.warn("Looks a single fiber aperture on the detector.", UserWarning)
cross-section: row  1502
../_images/aptrace_flat_star_4_3.png
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 21/21 [00:03<00:00,  6.35it/s]
../_images/aptrace_flat_star_4_5.png

Wavelength Calibration with User Defined Apertures (nap < 20 for H or nap < 51 for YJ)

If you want to extract apertures of your choice, you can use aptrace with an arbitrary value for nap.

NOTE: Currently, only single fiber mode is supported. The use of both fibers simultaneously is not accounted for.

Set ign_ord to specify the aperture orders you do not want to trace. Ensure that the condition len(ign_ord) + nap = 21 for H-band images or len(ign_ord) + nap = 51 for Y/J-band images is satisfied.

## FLAT_STAR
flat_star_apcut=irdstream.Stream2D("flat_star_apcut",datadir_flat,anadir)
flat_star_apcut.fitsid=fitsid_flat_star.copy()
# aperture extraction
flat_star_apcut.band=band
print(flat_star_apcut.band,' band')
if band=='h' and flat_star_apcut.fitsid[0]%2==0:
    flat_star_apcut.fitsid_increment()
    ign_ord = [2, 15]
    trace_mmf_apcut=flat_star_apcut.aptrace(cutrow = 1500,nap=19,ign_ord=ign_ord)
elif band=='y':
    ign_ord = [51]
    trace_mmf_apcut=flat_star_apcut.aptrace(cutrow = 1000,nap=50, ign_ord=ign_ord)
No fitsid yet.
h  band
fitsid incremented:  [41805, 41807, 41809, 41811, 41813, 41815, 41817, 41819, 41821, 41823, 41825, 41827, 41829, 41831, 41833, 41835, 41837, 41839, 41841, 41843, 41845, 41847, 41849, 41851, 41853, 41855, 41857, 41859, 41861, 41863, 41865, 41867, 41869, 41871, 41873, 41875, 41877, 41879, 41881, 41883, 41885, 41887, 41889, 41891, 41893, 41895, 41897, 41899, 41901, 41903]
median combine:
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 1111.31it/s]
/Users/yuikasagi/git/pyird/src/pyird/image/aptrace.py:253: UserWarning: nap is not default value. default: nap = 42 for H / 102 for YJ.
  warnings.warn(
cross-section: row  1502
../_images/aptrace_flat_star_6_3.png
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 19/19 [00:03<00:00,  6.32it/s]
../_images/aptrace_flat_star_6_5.png

Additionally, you must set channelfile_path when performing wavelength_calibration.

For example, (1) if you want to ignore orders 2 and 15, create a new channel file in the same format as channel_H.list.

import importlib
import pandas as pd
# load the prepared file
channelfile_path_original = importlib.resources.files('pyird').joinpath('data/channel_H.list')
df_pixwavmap_original = pd.read_csv(channelfile_path_original)
df_pixwavmap_original
ORDER CHANNEL WAVELENGTH ST
0 1 905 1417.25 0
1 1 970 1417.86 0
2 1 1981 1425.31 0
3 2 370 1425.31 0
4 2 437 1426.08 0
... ... ... ... ...
63 20 1319 1738.53 0
64 20 1333 1738.67 0
65 20 1555 1740.67 0
66 21 164 1744.97 0
67 21 1289 1758.93 0

68 rows × 4 columns

# Get indices to be dropped
mask_ind = df_pixwavmap_original[df_pixwavmap_original["ORDER"].isin(ign_ord)].index

# Drop the specified rows
df_pixwavmap_new = df_pixwavmap_original.drop(index=mask_ind)
df_pixwavmap_new
ORDER CHANNEL WAVELENGTH ST
0 1 905 1417.25 0
1 1 970 1417.86 0
2 1 1981 1425.31 0
6 3 689 1442.85 0
7 3 960 1445.57 1
... ... ... ... ...
63 20 1319 1738.53 0
64 20 1333 1738.67 0
65 20 1555 1740.67 0
66 21 164 1744.97 0
67 21 1289 1758.93 0

63 rows × 4 columns

  1. Save df_pixwavmap_new to somewhere.

channelfile_path_new = "/path/to/save/new_channelfile.list"

df_pixwavmap_new.to_csv(channelfile_path_new, index=False)
  1. Do not forget to set channelfle_path.

thar.calibrate_wavelength(channelfile_path=channelfile_path_new, ign_ord=ign_ord)