ListLFCRuns

Bases: KPFFunction

Parameters:
  • ? (str) –

KTL Keywords Used:

  • ``
Source code in kpf/calbench/ListLFCRuns.py
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
class ListLFCRuns(KPFFunction):
    '''

    Args:
        ? (str): 

    KTL Keywords Used:

    - ``
    '''
    @classmethod
    def perform(cls, args):
        ndays = args.get('ndays', 1)
        if args.get('date', '') in ['', 'now']:
            start = datetime.datetime.now() - datetime.timedelta(days=ndays)
            end = datetime.datetime.now()
        else:
            start = datetime.datetime.strptime(args.get('date'), '%Y-%m-%d') - datetime.timedelta(days=ndays)
            end = datetime.datetime.strptime(args.get('date'), '%Y-%m-%d')
        LFC_history = keygrabber.retrieve({'kpfcal': ['OPERATIONMODE']},
                                          begin=start.timestamp(),
                                          end=end.timestamp())
        astrocomb = [x for x in LFC_history if x['ascvalue'] == 'AstroComb']

#         kws = {'kpfcal': ['OPERATIONMODE', 'POS_INTENSITY', 'SPECFLATIR',
#                           'SPECFLATVIS', 'VISFLUX', 'WOBBLE'],
#                'kpfexpose': ['EXPOSE', 'OBJECT', 'FRAMENO']}
        kws = {'kpfexpose': ['EXPOSE', 'OBJECT', 'FRAMENO']}
        for event in astrocomb:
            event_time = datetime.datetime.fromtimestamp(event.get('time')).strftime('%Y-%m-%d %H:%M:%S.%f')
            later_astrocomb = [x for x in LFC_history if x.get('time') > event.get('time')]
            end = event.get('time')
            for later in later_astrocomb:
                if later.get('ascvalue') != 'AstroComb':
                    end = later.get('time')
                    break
            exp_history = keygrabber.retrieve(kws,
                                              begin=event.get('time'),
                                              end=end)
            exp_history = [x for x in exp_history if x.get('time') > event.get('time')]
            duration = end-event.get('time')
            print(f"{event_time}: {event.get('ascvalue'):9s} {later.get('ascvalue'):11s} {duration:<6.1f}s {count_exposures(exp_history)}")


    @classmethod
    def add_cmdline_args(cls, parser):
        parser.add_argument('ndays', type=int,
                            help='Number of days) to examine')
        parser.add_argument('date', type=str, default='',
                            help='Starting date (HST) to examine')
        return super().add_cmdline_args(parser)