Block 2 - Ingest V2
Description
This block additionally ingests images from FITS files into the SPC world.
Basic steps
- Copy FITS images
- Make a list of images
- Update kernels
Set up process_fits
Set up make_sumfiles
Run process_fits and make_sumfiles
Run dynamics
Procedure
Copy FITS images
Install a copy of the FITS images for each day into the NEW_IMAGES_YYYY_DDD location. Use 3 digits for the id (i.e. 012)
ID=339 cp <files> /[path]/OSIRIS_REx/NEW_IMAGES_YYYY_ID
Make a list of images
SPC can ingest images one at a time via process_fits, but we prefer to run it in batch. If newpix.txt exists, then process_fits will use that as input. It will search through all directories in the form of ../OSIRIS_REx/NEW_IMAGES_YYY_DDD .
For tracking purposes, we will name the list of images via data shortName and put it into lsupport. The shortName is the short hand for mission name (Ap, PS, OA, DS, OB, Re) and the sequence number of the images set, i.e. the first delivery is 1, the next is 2, etc.
cd /path/ops/OSIRIS_REx/DATA/NEW_IMAGES_YYYY_$ID ls > ../../newpix.$ID cd ../Approch150B.__ mv ../newpix.$ID lsupport/ relink.sh lsupport/newpix.$ID newpix.txt ls -l newpix.txt | tee -a notes
Note: You may want to hand edit newpix.txt to remove images that you don't want (e.g. color filter images, overexposed for star fields)
Updated kernels
Typically, you will need to update the spacecraft (SPK or file extension bsp) and pointing (CK or file extension bc). It may be necessary to update the spacecraft leap second clock also (lsp). Finally, if you get a new POLE, the planetary constants kernel for Bennu needs to be updated (PCK or file extension tpc).
- Remember that many spacecraft kernels have both a reconstructed past history and a future predicted plan. As such, if you forget to update the SPKs, you could have images that are ingested using the predicted part of an outdated kernel, which won't throw an error.
- Remember that SPICE will load kernels in order and use the last loaded kernel for a given time, so the newest kernels should always be at the end of a list.
Edit make_sumfiles.txt. We want to use chmod to avoid mistakenly over writing such an important file.
chmod 664 make_sumfiles.txt vi make_sumfiles.txt # add the new kernels chmod 444 make_sumfiles.txt
If the PCK has changed, update INIT_LITHOS.TXT also.
Setup process_fits
Provided newpix.txt is in the working directory, then process_fits will run through all of those images.
Review the following
PROCESS_FITS -v | tee ingest ls -l DATA/DN2TEMP.TXT | tee -a ingest ls -l DATA/FLATFILES.TXT | tee -a ingest ls -l newpix.txt | tee -a ingest
Setup make_sumfiles
Review the following
ls -l DATA/BIAS.TXT | tee -a ingest # seldom used ls -l DATA/SCOBJ_SHIFT.TXT | tee -a ingest ls -l DATA/TMP2FOCLEN.TXT | tee -a ingest
Run process_fits, make_sumfiles
For this step, we want to log the output to ensure flat field etc are properly applied. We want to capture the output from make_sumfiles to get the list of new image name, which we put in lsupport/imageList.<shortName>
chmod 664 make_sumfiles.in PROCESS_FITS | tee -a ingest chmod 444 make_sumfiles.in echo 0 | MAKE_SUMFILES | tee out cut -c 1-13 out | sed -e "s/^/ /" | sed '1,3d' > lsupport/imageList.$ID
Note: You can run evalReg.sh with lsupport/imageList.Ap\ to see if there are images that you don't want (here you should focus on overexposed starfield images). If so, you can make a list of them and batchTuck.sh them. imageList won't skip them, so you might want to edit that file (as well as make a backup original copy)
Note: Review the log for PROCESS_FITS to ensure that the threshold amounts make sense. If you receive an 8-bit image, the lower threshold may be wrong and need to be updated for those images (look at the max DN value). You can use batchThreshold.sh to fix that
Run dynamics
Before running dynamics, you need to make sure that DYNAMICS.TXT has been updated with the new images. Take the image list (lsupport/imageList.<shortName>) and add it into DYNAMICS.TXT before the "END". Update the uncertainties as required (for the new images and any update for the old images if needed. Note, if an image is not listed DYNAMICS.TXT, then it will not have it's uncertainties updated.
echo "# Day $ID" >> DYNAMICS.TXT vi DYNAMICS.TXT Gkddpkk :r lsupport/imageList.\
ZZ DYNAMICS
Evaluate the images
At this point, we need to evaluate the images. One needed step is to make thumbnails
These will be copied to ~/send (the place we dump stuff because of running on an external server
thumb.sh lsupport/imageList.$ID
- Check the DN range. When making thumbnails, review the DN range. If the average value is below our threshold, then we need to update them (batchThreshold.sh)
- Are they blank. If so, they can be tucked away (batchTuck.sh)
- Are they over exposed. Again, tucked
Finish the block
We use blockFinish to store all needed artifacts to the log directory.
i.e. blockFinish Ap4
echo 1 | blockFinish ps$ID
(Compiled by EEP)