Skip to content

Commit

Permalink
Merge pull request #46 from lsst-camera-dh/LSSTTD-1440_divisidero_tea…
Browse files Browse the repository at this point in the history
…ring

Lssttd 1440 divisidero tearing
  • Loading branch information
jchiang87 authored Sep 30, 2019
2 parents 55ab4d0 + 3316087 commit 0a8c4f8
Show file tree
Hide file tree
Showing 5 changed files with 122 additions and 2 deletions.
10 changes: 10 additions & 0 deletions harnessed_jobs/tearing_BOT/v0/producer_tearing_BOT.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,21 @@
Producer script for BOT tearing analysis.
"""
import os
from camera_components import camera_info
from tearing_jh_task import tearing_jh_task
from raft_divisidero_tearing import raft_divisidero_tearing
from bot_eo_analyses import get_analysis_types, run_python_task_or_cl_script

if 'tearing' in get_analysis_types():
tearing_jh_task_script \
= os.path.join(os.environ['EOANALYSISJOBSDIR'], 'harnessed_jobs',
'tearing_BOT', 'v0', 'tearing_jh_task.py')
run_python_task_or_cl_script(tearing_jh_task, tearing_jh_task_script)

divisidero_jh_task_script \
= os.path.join(os.environ['EOANALYSISJOBSDIR'], 'harnessed_jobs',
'tearing_BOT', 'v0', 'raft_divisidero_tearing.py')
installed_rafts = camera_info.get_installed_raft_names()
run_python_task_or_cl_script(raft_divisidero_tearing,
divisidero_jh_task_script,
device_names=installed_rafts)
27 changes: 27 additions & 0 deletions harnessed_jobs/tearing_BOT/v0/raft_divisidero_tearing.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/usr/bin/env python
"""
Command-line script for divisidero tearing analysis of BOT data.
"""
def raft_divisidero_tearing(raft_name):
"""JH version of divisidero tearing analysis of BOT data."""
import json
import matplotlib.pyplot as plt
import siteUtils
import lsst.eotest.raft as raftTest
from bot_eo_analyses import get_raft_files_by_slot

run = siteUtils.getRunNumber()

sflat_files = get_raft_files_by_slot(raft_name, 'median_sflat.fits')

max_divisidero_tearing \
= raftTest.ana_divisidero_tearing(sflat_files, raft_name, run)
plt.savefig(f'{raft_name}_{run}_divisidero.png')

with open(f'{raft_name}_{run}_max_divisidero.json', 'w') as fd:
json.dump(max_divisidero_tearing, fd)

if __name__ == '__main__':
import sys
raft_name = sys.argv[1]
raft_divisidero_tearing(raft_name)
29 changes: 29 additions & 0 deletions harnessed_jobs/tearing_detection/v0/producer_tearing_detection.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,37 @@ def run_tearing_detection(sensor_id):
with open('%s_tearing_stats.pkl' % file_prefix, 'wb') as output:
pickle.dump(tearing_stats, output)


if __name__ == '__main__':
import os
import json
import matplotlib.pyplot as plt
import siteUtils
import camera_components
import lsst.eotest.raft as raftTest
from multiprocessor_execution import sensor_analyses

processes = 9 # Reserve 1 process per CCD.
sensor_analyses(run_tearing_detection, processes=processes)

# Divisidero tearing analysis.
run = siteUtils.getRunNumber()
raft_unit_id = siteUtils.getUnitId()
files = siteUtils.dependency_glob('*median_sflat.fits',
jobname='dark_defects_raft',
description='Superflat files:')
raft = camera_components.Raft.create_from_etrav(raft_unit_id,
db_name='Prod')
det_map = dict([(sensor_id, slot) for slot, sensor_id in raft.items()])

sflat_files = dict()
for item in files:
slot = det_map[os.path.basename(item).split('_')[0]]
sflat_files[slot] = item

max_divisidero_tearing \
= raftTest.ana_divisidero_tearing(sflat_files, raft_unit_id, run)
plt.savefig(f'{raft_unit_id}_{run}_divisidero.png')

with open(f'{raft_unit_id}_{run}_max_divisidero.json', 'w') as fd:
json.dump(max_divisidero_tearing, fd)
37 changes: 35 additions & 2 deletions harnessed_jobs/tearing_detection/v0/validator_tearing_detection.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,21 @@
Validator script for raft-level flat pairs analysis.
"""
import glob
import json
import pickle
import lcatr.schema
import siteUtils
import camera_components
from tearing_detection import persist_tearing_png_files

raft_id = siteUtils.getUnitId()
raft = camera_components.Raft.create_from_etrav(raft_id)
raft_unit_id = siteUtils.getUnitId()
raft = camera_components.Raft.create_from_etrav(raft_unit_id)

det_map = dict()
results = []
schema = lcatr.schema.get('tearing_detection')
for slot, sensor_id in raft.items():
det_map[slot] = sensor_id
file_prefix = '%s_%s' % (sensor_id, siteUtils.getRunNumber())
with open('%s_tearing_stats.pkl' % file_prefix, 'rb') as input_:
tearing_stats = pickle.load(input_)
Expand All @@ -27,6 +30,36 @@
png_files = sorted(glob.glob('*_tearing.png'))
results.extend(persist_tearing_png_files(png_files))

divisidero_plot = glob.glob('*_divisidero.png')[0]
md = dict(DATA_PRODUCT='divisidero_tearing_plot',
LsstId=raft_unit_id)
results.append(siteUtils.make_fileref(divisidero_plot, metadata=md))

with open(glob.glob('*max_divisidero.json')[0], 'r') as fd:
max_devs = json.load(fd)

fields = ('max_deviation_10_11',
'max_deviation_11_12',
'max_deviation_12_13',
'max_deviation_13_14',
'max_deviation_14_15',
'max_deviation_15_16',
'max_deviation_16_17',
'max_deviation_00_01',
'max_deviation_01_02',
'max_deviation_02_03',
'max_deviation_03_04',
'max_deviation_04_05',
'max_deviation_05_06',
'max_deviation_06_07')

divisidero_schema = lcatr.schema.get('divisidero_tearing')
for slot, values in max_devs.items():
data = {field: max_dev for field, max_dev in zip(fields, values)}
results.append(lcatr.schema.valid(divisidero_schema, slot=slot,
sensor_id=det_map[slot],
**data))

results.extend(siteUtils.jobInfo())
lcatr.schema.write_file(results)
lcatr.schema.validate_file()
21 changes: 21 additions & 0 deletions schemas/divisidero_tearing.schema
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# -*- python -*-
{
'schema_name' : 'divisidero_tearing',
'schema_version' : 0,
'slot' : str,
'sensor_id' : str,
'max_deviation_10_11' : float,
'max_deviation_11_12' : float,
'max_deviation_12_13' : float,
'max_deviation_13_14' : float,
'max_deviation_14_15' : float,
'max_deviation_15_16' : float,
'max_deviation_16_17' : float,
'max_deviation_00_01' : float,
'max_deviation_01_02' : float,
'max_deviation_02_03' : float,
'max_deviation_03_04' : float,
'max_deviation_04_05' : float,
'max_deviation_05_06' : float,
'max_deviation_06_07' : float
}

0 comments on commit 0a8c4f8

Please sign in to comment.