Step-by-step reduction#

The most common way to use IOP4 is by launching the iop4 command to automatically reduce some nights. However, you might be interested in reducing some images step by step (when debugging problems, or implementing new instruments). In this notebook we will do exactly that, which is more or less what iop4.py does when launched from the command line.

%autoawait off
%matplotlib inline
%run 01_notebook_configuration.py

Fetching the data from the telescope archive.#

We might be interested in downloading all files from one night, or just a single night. In any case, you can directly do

# warning: this might clean flags and some other fields:
from iop4lib.db import Epoch

epoch = Epoch.create(epochname="OSN-T090/2022-09-18")
epoch
2024-09-24 16:02 - pid 4082 - [epoch.py:262] - DEBUG - Epoch for OSN-T090/2022-09-18 already exists in the DB, it will be used instead.
2024-09-24 16:02 - pid 4082 - [rawfit.py:229] - DEBUG - DB entry for OSN-T090/2022-09-18/Bias_2x2-0009.fit already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [rawfit.py:229] - DEBUG - DB entry for OSN-T090/2022-09-18/Bias_2x2-0004.fit already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [rawfit.py:229] - DEBUG - DB entry for OSN-T090/2022-09-18/Bias_2x2-0008.fit already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [rawfit.py:229] - DEBUG - DB entry for OSN-T090/2022-09-18/Bias_2x2-0002.fit already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [rawfit.py:229] - DEBUG - DB entry for OSN-T090/2022-09-18/Bias_2x2-0005.fit already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [rawfit.py:229] - DEBUG - DB entry for OSN-T090/2022-09-18/Bias_2x2-0006.fit already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [rawfit.py:229] - DEBUG - DB entry for OSN-T090/2022-09-18/Bias_2x2-0010.fit already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [rawfit.py:229] - DEBUG - DB entry for OSN-T090/2022-09-18/Bias_2x2-0007.fit already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [rawfit.py:229] - DEBUG - DB entry for OSN-T090/2022-09-18/Bias_2x2-0003.fit already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [rawfit.py:229] - DEBUG - DB entry for OSN-T090/2022-09-18/BLLac-0001R.fit already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [rawfit.py:229] - DEBUG - DB entry for OSN-T090/2022-09-18/Bias_2x2-0001.fit already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [rawfit.py:229] - DEBUG - DB entry for OSN-T090/2022-09-18/Bias_2x2-0011.fit already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [rawfit.py:267] - DEBUG - <RawFit 136 | OSN-T090/2022-09-18/Bias_2x2-0009.fit>: procuring local file.
2024-09-24 16:02 - pid 4082 - [rawfit.py:300] - DEBUG - <RawFit 136 | OSN-T090/2022-09-18/Bias_2x2-0009.fit>: classifying
2024-09-24 16:02 - pid 4082 - [osn_cameras.py:135] - DEBUG - Band is not R, assuming it is photometry.
2024-09-24 16:02 - pid 4082 - [rawfit.py:267] - DEBUG - <RawFit 137 | OSN-T090/2022-09-18/Bias_2x2-0004.fit>: procuring local file.
2024-09-24 16:02 - pid 4082 - [rawfit.py:300] - DEBUG - <RawFit 137 | OSN-T090/2022-09-18/Bias_2x2-0004.fit>: classifying
2024-09-24 16:02 - pid 4082 - [osn_cameras.py:135] - DEBUG - Band is not R, assuming it is photometry.
2024-09-24 16:02 - pid 4082 - [rawfit.py:267] - DEBUG - <RawFit 138 | OSN-T090/2022-09-18/Bias_2x2-0008.fit>: procuring local file.
2024-09-24 16:02 - pid 4082 - [rawfit.py:300] - DEBUG - <RawFit 138 | OSN-T090/2022-09-18/Bias_2x2-0008.fit>: classifying
2024-09-24 16:02 - pid 4082 - [osn_cameras.py:135] - DEBUG - Band is not R, assuming it is photometry.
2024-09-24 16:02 - pid 4082 - [rawfit.py:267] - DEBUG - <RawFit 139 | OSN-T090/2022-09-18/Bias_2x2-0002.fit>: procuring local file.
2024-09-24 16:02 - pid 4082 - [rawfit.py:300] - DEBUG - <RawFit 139 | OSN-T090/2022-09-18/Bias_2x2-0002.fit>: classifying
2024-09-24 16:02 - pid 4082 - [osn_cameras.py:135] - DEBUG - Band is not R, assuming it is photometry.
2024-09-24 16:02 - pid 4082 - [rawfit.py:267] - DEBUG - <RawFit 140 | OSN-T090/2022-09-18/Bias_2x2-0005.fit>: procuring local file.
2024-09-24 16:02 - pid 4082 - [rawfit.py:300] - DEBUG - <RawFit 140 | OSN-T090/2022-09-18/Bias_2x2-0005.fit>: classifying
2024-09-24 16:02 - pid 4082 - [osn_cameras.py:135] - DEBUG - Band is not R, assuming it is photometry.
2024-09-24 16:02 - pid 4082 - [rawfit.py:267] - DEBUG - <RawFit 141 | OSN-T090/2022-09-18/Bias_2x2-0006.fit>: procuring local file.
2024-09-24 16:02 - pid 4082 - [rawfit.py:300] - DEBUG - <RawFit 141 | OSN-T090/2022-09-18/Bias_2x2-0006.fit>: classifying
2024-09-24 16:02 - pid 4082 - [osn_cameras.py:135] - DEBUG - Band is not R, assuming it is photometry.
2024-09-24 16:02 - pid 4082 - [rawfit.py:267] - DEBUG - <RawFit 142 | OSN-T090/2022-09-18/Bias_2x2-0010.fit>: procuring local file.
2024-09-24 16:02 - pid 4082 - [rawfit.py:300] - DEBUG - <RawFit 142 | OSN-T090/2022-09-18/Bias_2x2-0010.fit>: classifying
2024-09-24 16:02 - pid 4082 - [osn_cameras.py:135] - DEBUG - Band is not R, assuming it is photometry.
2024-09-24 16:02 - pid 4082 - [rawfit.py:267] - DEBUG - <RawFit 143 | OSN-T090/2022-09-18/Bias_2x2-0007.fit>: procuring local file.
2024-09-24 16:02 - pid 4082 - [rawfit.py:300] - DEBUG - <RawFit 143 | OSN-T090/2022-09-18/Bias_2x2-0007.fit>: classifying
2024-09-24 16:02 - pid 4082 - [osn_cameras.py:135] - DEBUG - Band is not R, assuming it is photometry.
2024-09-24 16:02 - pid 4082 - [rawfit.py:267] - DEBUG - <RawFit 144 | OSN-T090/2022-09-18/Bias_2x2-0003.fit>: procuring local file.
2024-09-24 16:02 - pid 4082 - [rawfit.py:300] - DEBUG - <RawFit 144 | OSN-T090/2022-09-18/Bias_2x2-0003.fit>: classifying
2024-09-24 16:02 - pid 4082 - [osn_cameras.py:135] - DEBUG - Band is not R, assuming it is photometry.
2024-09-24 16:02 - pid 4082 - [rawfit.py:267] - DEBUG - <RawFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: procuring local file.
2024-09-24 16:02 - pid 4082 - [rawfit.py:300] - DEBUG - <RawFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: classifying
2024-09-24 16:02 - pid 4082 - [rawfit.py:267] - DEBUG - <RawFit 146 | OSN-T090/2022-09-18/Bias_2x2-0001.fit>: procuring local file.
2024-09-24 16:02 - pid 4082 - [rawfit.py:300] - DEBUG - <RawFit 146 | OSN-T090/2022-09-18/Bias_2x2-0001.fit>: classifying
2024-09-24 16:02 - pid 4082 - [osn_cameras.py:135] - DEBUG - Band is not R, assuming it is photometry.
2024-09-24 16:02 - pid 4082 - [rawfit.py:267] - DEBUG - <RawFit 147 | OSN-T090/2022-09-18/Bias_2x2-0011.fit>: procuring local file.
2024-09-24 16:02 - pid 4082 - [rawfit.py:300] - DEBUG - <RawFit 147 | OSN-T090/2022-09-18/Bias_2x2-0011.fit>: classifying
2024-09-24 16:02 - pid 4082 - [osn_cameras.py:135] - DEBUG - Band is not R, assuming it is photometry.
Epoch(id 11):
- telescope: OSN-T090
- night: 2022-09-18
- 12 rawfits: 11 bias, 0 flat, 1 light
- summary status: DOWNLOADED, BUILT_REDUCED, CLASSIFIED

When an epoch is created and auto_link_rawfits=True, IOP4 first attempts to list the remote telescope archive, then it reads the local archive. It tries to download missing files. If it cannot list the remote, but finds the local folder for that epoch, it will just give a warning. If it fails at both, it will return an error. This behavior can be tuned with check_remote_list, force_redownload and fallback_to_local arguments to create(). Keep in mind that this will create the corresponding RawFit instances if necessary.

If you only want to fetch or create a raw fit instance you can equivalently do it with

from iop4lib.db import RawFit
rf = RawFit.create(fileloc="OSN-T090/2022-09-18/BLLac-0001R.fit")
rf
2024-09-24 16:02 - pid 4082 - [rawfit.py:218] - INFO - Setting epoch to <Epoch 11 | OSN-T090/2022-09-18>.
2024-09-24 16:02 - pid 4082 - [rawfit.py:229] - DEBUG - DB entry for OSN-T090/2022-09-18/BLLac-0001R.fit already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [rawfit.py:267] - DEBUG - <RawFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: procuring local file.
2024-09-24 16:02 - pid 4082 - [rawfit.py:300] - DEBUG - <RawFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: classifying
RawFit(id=145):
- telescope: OSN-T090
- night: 2022-09-18
- filename: BLLac-0001R.fit
- instrument: AndorT90
- imgtype: LIGHT
- size: 1024x1024
- obsmode: PHOTOMETRY
- band: R
- exptime: 60.0
- flags: DOWNLOADED,CLASSIFIED,BUILT_REDUCED

Since this file was already created by the previous Epoch.create command, it gives a DEBUG message that the entry for this file already exists and re-uses it.

In this examples, epochname and fileloc are simply shorthands for
specifying telescope,night and telescope,night,filename,
in a way that matches the archive directory structure. These params uniquely identify the observing epoch and the raw fits file, respectively.

Creating calibration frames#

Next step on a normal calibration process would be creating the master frames for the current night. This can be done with

epoch.build_master_biases()
epoch.build_master_darks()
epoch.build_master_flats()
2024-09-24 16:02 - pid 4082 - [epoch.py:394] - DEBUG - margs={'epoch': Epoch.objects.get(id=11), 'instrument': 'AndorT90', 'imgsize': '1024x1024'}
2024-09-24 16:02 - pid 4082 - [epoch.py:396] - INFO - Building Master Bias for OSN-T090/2022-09-18 | AndorT90 | 1024x1024.
2024-09-24 16:02 - pid 4082 - [masterbias.py:136] - DEBUG - DB entry for <MasterBias 11 | OSN-T090/2022-09-18 | AndorT90 | 1024x1024> already exists, using it instead.
2024-09-24 16:02 - pid 4082 - [masterbias.py:144] - DEBUG - Found 11 bias raw files for <MasterBias 11 | OSN-T090/2022-09-18 | AndorT90 | 1024x1024>.
2024-09-24 16:02 - pid 4082 - [epoch.py:387] - ERROR - No Master Dark will be built for this epoch since there are no files for it.
2024-09-24 16:02 - pid 4082 - [epoch.py:387] - ERROR - No Master Flat will be built for this epoch since there are no files for it.

This will use all existing biases, darks and flats in epoch to create all calibration frames (for each filter, etc) using as many images as possible.

After this, we can create the reduced images for all images in the night

epoch.reduce()
2024-09-24 16:02 - pid 4082 - [reducedfit.py:121] - DEBUG - DB entry of ReducedFit for OSN-T090/2022-09-18/BLLac-0001R.fit already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [instrument.py:373] - WARNING - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: masterflat in this epoch could not be found, attemptying adjacent epochs.
2024-09-24 16:02 - pid 4082 - [epoch.py:491] - INFO - No files to build.

or just for our image of interest

from iop4lib.db import ReducedFit
redf = ReducedFit.create(rawfit=rf)
redf
2024-09-24 16:02 - pid 4082 - [reducedfit.py:121] - DEBUG - DB entry of ReducedFit for OSN-T090/2022-09-18/BLLac-0001R.fit already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [instrument.py:373] - WARNING - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: masterflat in this epoch could not be found, attemptying adjacent epochs.
ReducedFit(id=145):
- telescope: OSN-T090
- night: 2022-09-18
- filename: BLLac-0001R.fit
- instrument: AndorT90
- imgtype: LIGHT
- size: 1024x1024
- obsmode: PHOTOMETRY
- band: R
- exptime: 60.0
- flags: DOWNLOADED,CLASSIFIED,BUILT_REDUCED

This will automatically select the appropriate master calibration frames from its night (if they exist) or from the closest night. Otherwise, you can specify which files to use by passing it as an argument to the creation function.

By default, ReducedFit.create will not create the reduced FITS file unless you explicitly pass auto_build=True. If you didn’t, you can do it with

redf.build_file()
2024-09-24 16:02 - pid 4082 - [instrument.py:480] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: building file
2024-09-24 16:02 - pid 4082 - [instrument.py:386] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: applying masters
2024-09-24 16:02 - pid 4082 - [instrument.py:395] - WARNING - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: no masterdark found, assuming dark current = 0, is this a CCD camera and it's cold?
2024-09-24 16:02 - pid 4082 - [instrument.py:486] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: performing astrometric calibration
2024-09-24 16:02 - pid 4082 - [astrometry.py:179] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: 27 different combinations of parameters to try.
2024-09-24 16:02 - pid 4082 - [astrometry.py:182] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: attempt 1 / 27, ({'keep_n_seg': 150, 'border_margin_px': 5, 'output_logodds_threshold': 14, 'n_rms_seg': 6.0, 'bkg_filter_size': 11, 'bkg_box_size': 16, 'seg_fwhm': 1.0, 'seg_kernel_size': None, 'npixels': 32, 'allsky': False, 'position_hint': PositionHint(ra_deg=330.7291666666667, dec_deg=42.26611111111111, radius_deg=0.32999999999999996)}) ...
2024-09-24 16:02 - pid 4082 - [astrometry.py:275] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: len(pos_seg)=187
2024-09-24 16:02 - pid 4082 - [astrometry.py:278] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: Keeping only 150 brightest segments.
2024-09-24 16:02 - pid 4082 - [astrometry.py:282] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: Removing segments within 5 px from border.
2024-09-24 16:02 - pid 4082 - [astrometry.py:312] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: trying to solve astrometry with Seg Pos (n=147) (output_logodds_threshold=14).
2024-09-24 16:02 - pid 4110 - [__init__.py:212] - INFO - loaded 240 index files
2024-09-24 16:02 - pid 4110 - [__init__.py:276] - INFO - solve 1: start
2024-09-24 16:02 - pid 4110 - [__init__.py:276] - INFO - solve 1: slice=[0, 25[ (1 / 5), index="5200/index-5200-14.fits" (1 / 5)
2024-09-24 16:02 - pid 4110 - [__init__.py:276] - INFO - solve 1: logodds=380.916, matches=141, conflicts=0, distractors=2, ra=330.695, dec=42.2697, scale=0.773671, index="5200/index-5200-14.fits"
2024-09-24 16:02 - pid 4082 - [astrometry.py:327] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: Seg Pos (n=147) worked.
2024-09-24 16:02 - pid 4082 - [astrometry.py:328] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: bm.index_path=PosixPath('/mnt/astrometry_cache/5200/index-5200-14.fits')
2024-09-24 16:02 - pid 4082 - [astrometry.py:329] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: bm.center_ra_deg=330.6954314398751
2024-09-24 16:02 - pid 4082 - [astrometry.py:330] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: bm.center_dec_deg=42.26972920042598
2024-09-24 16:02 - pid 4082 - [astrometry.py:331] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: bm.scale_arcsec_per_pixel=0.7736712092056637
2024-09-24 16:02 - pid 4082 - [astrometry.py:332] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: bm.logodds=380.9163513183594
2024-09-24 16:02 - pid 4082 - [astrometry.py:192] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: WCS built with attempt 1 / 27 ({'keep_n_seg': 150, 'border_margin_px': 5, 'output_logodds_threshold': 14, 'n_rms_seg': 6.0, 'bkg_filter_size': 11, 'bkg_box_size': 16, 'seg_fwhm': 1.0, 'seg_kernel_size': None, 'npixels': 32, 'allsky': False, 'position_hint': PositionHint(ra_deg=330.7291666666667, dec_deg=42.26611111111111, radius_deg=0.32999999999999996)}).
2024-09-24 16:02 - pid 4082 - [astrometry.py:204] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: building summary images.
2024-09-24 16:02 - pid 4082 - [plotting.py:476] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: plotting astrometry summary image of background substraction results
2024-09-24 16:02 - pid 4082 - [plotting.py:488] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: plotting astrometry summary image of segmentation results
2024-09-24 16:02 - pid 4082 - [plotting.py:582] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: plotting astrometry summary image of astrometry results
2024-09-24 16:02 - pid 4082 - [plotting.py:214] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: found 5 catalog sources in field: [AstroSource.objects.get(name='2200+420'), AstroSource.objects.get(name='BL Lacertae C'), AstroSource.objects.get(name='BL Lacertae H'), AstroSource.objects.get(name='BL Lacertae test 2'), AstroSource.objects.get(name='BL Lacertae test 4')]
2024-09-24 16:02 - pid 4082 - [instrument.py:425] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: saving WCSs to FITS header.
2024-09-24 16:02 - pid 4082 - [instrument.py:497] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: astrometric calibration was successful.
2024-09-24 16:02 - pid 4082 - [instrument.py:500] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: searching for sources in field...
2024-09-24 16:02 - pid 4082 - [instrument.py:503] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: found 5 sources in field.

This will create the reduced FITS file by applying the calibration frames to the raw image, and will give it an appropriate WCS. To check the result, with the astrometry included, you can use the utility function plot_preview_astrometry:

from iop4lib.utils.plotting import plot_preview_astrometry
plot_preview_astrometry(redf)
2024-09-24 16:02 - pid 4082 - [plotting.py:214] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: found 5 catalog sources in field: [AstroSource.objects.get(name='2200+420'), AstroSource.objects.get(name='BL Lacertae C'), AstroSource.objects.get(name='BL Lacertae H'), AstroSource.objects.get(name='BL Lacertae test 2'), AstroSource.objects.get(name='BL Lacertae test 4')]
../_images/fdfea0f8ef7786259ea5353db1343e3b0081118c827db91cccc32c9d36af0b34.png

In the images, we can see the coordiante frames the positions of the sources in the catalog that appear in the image.

Since the image it is a photometry image, we can directly compute the relative photometry results with

redf.compute_relative_photometry()

from iop4lib.db import PhotoPolResult
PhotoPolResult.objects.filter(reducedfits__in=[redf]).first()
2024-09-24 16:02 - pid 4082 - [instrument.py:703] - DEBUG - astrosource_S={AstroSource.objects.get(name='BL Lacertae test 2'), AstroSource.objects.get(name='BL Lacertae test 4'), AstroSource.objects.get(name='2200+420'), AstroSource.objects.get(name='BL Lacertae C'), AstroSource.objects.get(name='BL Lacertae H')}
2024-09-24 16:02 - pid 4082 - [instrument.py:721] - DEBUG - ReducedFit 145 [2200+420] Gaussian FWHM: 4.3 px
2024-09-24 16:02 - pid 4082 - [instrument.py:579] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: computing aperture photometries for <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit> (target_fwhm = 4.3 px, aperpix = 11.1 px, r_in = 12.9 px, r_out = 27.7 px).
2024-09-24 16:02 - pid 4082 - [instrument.py:534] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: computing aperture photometry for <AstroSource 2200+420>
2024-09-24 16:02 - pid 4082 - [aperphotresult.py:68] - DEBUG - AperPhotResult for <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>, <AstroSource 2200+420>, 11.061152937444433, O already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [instrument.py:534] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: computing aperture photometry for <AstroSource BL Lacertae C>
2024-09-24 16:02 - pid 4082 - [aperphotresult.py:68] - DEBUG - AperPhotResult for <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>, <AstroSource BL Lacertae C>, 11.061152937444433, O already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [instrument.py:534] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: computing aperture photometry for <AstroSource BL Lacertae H>
2024-09-24 16:02 - pid 4082 - [aperphotresult.py:68] - DEBUG - AperPhotResult for <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>, <AstroSource BL Lacertae H>, 11.061152937444433, O already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [instrument.py:534] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: computing aperture photometry for <AstroSource BL Lacertae test 2>
2024-09-24 16:02 - pid 4082 - [aperphotresult.py:68] - DEBUG - AperPhotResult for <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>, <AstroSource BL Lacertae test 2>, 11.061152937444433, O already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [instrument.py:534] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: computing aperture photometry for <AstroSource BL Lacertae test 4>
2024-09-24 16:02 - pid 4082 - [aperphotresult.py:68] - DEBUG - AperPhotResult for <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>, <AstroSource BL Lacertae test 4>, 11.061152937444433, O already exists, it will be used instead.
2024-09-24 16:02 - pid 4082 - [instrument.py:585] - DEBUG - <ReducedFit 145 | OSN-T090/2022-09-18/BLLac-0001R.fit>: computing relative photometry.
2024-09-24 16:02 - pid 4082 - [photopolresult.py:204] - DEBUG - Db entry for photopolresult already exists for reducedfits=[ReducedFit.objects.get(id=145)], astrosource=AstroSource.objects.get(name='2200+420') and reduction=REDUCTIONMETHODS.RELPHOT, using it instead.
2024-09-24 16:02 - pid 4082 - [photopolresult.py:204] - DEBUG - Db entry for photopolresult already exists for reducedfits=[ReducedFit.objects.get(id=145)], astrosource=AstroSource.objects.get(name='BL Lacertae C') and reduction=REDUCTIONMETHODS.RELPHOT, using it instead.
2024-09-24 16:02 - pid 4082 - [photopolresult.py:204] - DEBUG - Db entry for photopolresult already exists for reducedfits=[ReducedFit.objects.get(id=145)], astrosource=AstroSource.objects.get(name='BL Lacertae H') and reduction=REDUCTIONMETHODS.RELPHOT, using it instead.
2024-09-24 16:02 - pid 4082 - [photopolresult.py:204] - DEBUG - Db entry for photopolresult already exists for reducedfits=[ReducedFit.objects.get(id=145)], astrosource=AstroSource.objects.get(name='BL Lacertae test 2') and reduction=REDUCTIONMETHODS.RELPHOT, using it instead.
2024-09-24 16:02 - pid 4082 - [photopolresult.py:204] - DEBUG - Db entry for photopolresult already exists for reducedfits=[ReducedFit.objects.get(id=145)], astrosource=AstroSource.objects.get(name='BL Lacertae test 4') and reduction=REDUCTIONMETHODS.RELPHOT, using it instead.
<PhotoPolResult(id: 17
    reducedfits: [145]
    AndorT90 PHOTOMETRY R / 2200+420
    JD: 2459841.46187 (2022-09-18 23:05:05.190)
    mag: 13.309 ± 0.026)>

These results can already be inspected in the web interface.