def trace_order_edge(data, start):

    ORDER_EDGE_SEARCH_WIDTH = 10
    ORDER_EDGE_BG_WIDTH     = 30
    ORDER_EDGE_JUMP_THRESH  = 1.9
    ORDER_EDGE_JUMP_LIMIT   = 200
        
    trace, nJumps =  tracer.trace_edge(
            data, start, ORDER_EDGE_SEARCH_WIDTH, ORDER_EDGE_BG_WIDTH, ORDER_EDGE_JUMP_THRESH)
    
    if trace is None:
        logger.warning('trace failed')
        return None
    
#     if slit_name.endswith('24'):
#         x = np.arange(len(trace))
#         coeffs = np.polyfit(x, trace, 1)
#         y_fit = np.polyval(coeffs, x)
#         res1 = trace - y_fit
# #         stdev1 = np.std(res1)
# 
#         if abs(coeffs[0]) < 1e-2:
#             logger.warning('long slit edge criteria not met')
#             return None
#         else:
#             return trace
    
    if nJumps > ORDER_EDGE_JUMP_LIMIT:
        
            logger.debug('order edge trace jump limit exceeded')
            logger.debug('reducing search width to {:.1f}'.format(ORDER_EDGE_SEARCH_WIDTH / 2))
            trace, nJumps =  tracer.trace_edge(
            data, start, ORDER_EDGE_SEARCH_WIDTH / 2, ORDER_EDGE_BG_WIDTH, ORDER_EDGE_JUMP_THRESH)
            
            if nJumps > ORDER_EDGE_JUMP_LIMIT:
                ORDER_EDGE_SEARCH_WIDTH = 3
        
                logger.debug('order edge trace jump limit exceeded')
                logger.debug('reducing search width to {:.1f}'.format(ORDER_EDGE_SEARCH_WIDTH))
                trace, nJumps =  tracer.trace_edge(
                data, start, ORDER_EDGE_SEARCH_WIDTH, ORDER_EDGE_BG_WIDTH, ORDER_EDGE_JUMP_THRESH)

                if trace is None:
                    logger.warning('trace failed')
                    return None
                
                if nJumps > ORDER_EDGE_JUMP_LIMIT:
                    logger.warning('order edge trace jump limit exceeded: n jumps=' + 
                            str(nJumps) + ' limit=' + str(ORDER_EDGE_JUMP_LIMIT))
                    if config.params['spatial_jump_override'] is True:
                        logger.warning('spatial jump override enabled, edge not rejected')
                    else:
                        logger.info('edge rejected')
                        return None
    return trace
Exemplo n.º 2
0
def trace_order_edge(data, start):
        
    trace, nJumps =  tracer.trace_edge(
            data, start, ORDER_EDGE_SEARCH_WIDTH, ORDER_EDGE_BG_WIDTH, ORDER_EDGE_JUMP_THRESH)
    
    if trace is None:
        logger.warning('trace failed')
        return None
    
#     if slit_name.endswith('24'):
#         x = np.arange(len(trace))
#         coeffs = np.polyfit(x, trace, 1)
#         y_fit = np.polyval(coeffs, x)
#         res1 = trace - y_fit
# #         stdev1 = np.std(res1)
# 
#         if abs(coeffs[0]) < 1e-2:
#             logger.warning('long slit edge criteria not met')
#             return None
#         else:
#             return trace
    
    if nJumps > ORDER_EDGE_JUMP_LIMIT:
        
            logger.debug('order edge trace jump limit exceeded')
            logger.debug('reducing search width to {:.1f}'.format(ORDER_EDGE_SEARCH_WIDTH / 1.5))
            trace, nJumps =  tracer.trace_edge(
            data, start, ORDER_EDGE_SEARCH_WIDTH / 2, ORDER_EDGE_BG_WIDTH, ORDER_EDGE_JUMP_THRESH)
            
            if trace is None:
                logger.warning('trace failed')
                return None
            
            if nJumps > ORDER_EDGE_JUMP_LIMIT:
                logger.info('order edge trace jump limit exceeded: n jumps=' + 
                        str(nJumps) + ' limit=' + str(ORDER_EDGE_JUMP_LIMIT))
                if config.params['spatial_jump_override'] is True:
                    logger.warning('spatial jump override enabled, edge not rejected')
                else:
                    logger.info('edge rejected')
                    return None
    return trace
Exemplo n.º 3
0
def trace_sky_line(data, start):
    trace, nJumps = tracer.trace_edge(data, start, SKY_LINE_SEARCH_WIDTH,
                                      SKY_LINE_BG_WIDTH, SKY_LINE_JUMP_THRESH)
    if trace is None:
        logger.warning('sky line trace failed')
        return None
    if nJumps > SKY_LINE_JUMP_LIMIT:
        logger.debug('sky line trace jump limit exceeded: n jumps=' +
                     str(nJumps) + ' limit=' + str(SKY_LINE_JUMP_LIMIT))
        return None
    return trace
Exemplo n.º 4
0
def trace_sky_line(data, start):
    trace, nJumps =  tracer.trace_edge(
            data, start, SKY_LINE_SEARCH_WIDTH, SKY_LINE_BG_WIDTH, SKY_LINE_JUMP_THRESH)
    if trace is None:
        logger.warning('sky line trace failed')
        return None
    if nJumps > SKY_LINE_JUMP_LIMIT:
        logger.debug('sky line trace jump limit exceeded: n jumps=' + 
                str(nJumps) + ' limit=' + str(SKY_LINE_JUMP_LIMIT))        
        return None
    return trace