############################################################ # Program is part of MintPy # # Copyright (c) 2013, Zhang Yunjun, Heresh Fattahi # # Author: Zhang Yunjun, Mar 2020 # ############################################################ # recommend usage: # from mintpy.defaults.template import STEP_LIST, get_template_content # import os import re import mintpy STEP_LIST4OFFSET = [ 'load_data', 'modify_network', 'invert_network', 'deramp', 'velocity', 'geocode', 'google_earth', ] STEP_LIST = [ 'load_data', 'modify_network', 'reference_point', 'quick_overview', 'correct_unwrap_error', 'invert_network', 'correct_LOD', 'correct_SET', 'correct_troposphere', 'deramp', 'correct_topography', 'residual_RMS', 'reference_date', 'velocity', 'geocode', 'google_earth', 'hdfeos5', ] def get_template_content(step_name, template_file=None, indentation=2, header_footer=True): """Grab the related template content for each step To avoid duplication in each utility script. Parameters: step_name - str, step name template_file - str, path of the template file Returns: step_content - str, comments and options of the step """ # check if step_name not in STEP_LIST: raise ValueError('input step name "{}" not found! STEP_LIST={}'.format(step_name, STEP_LIST)) # read template file into a list of strings if template_file is None: template_file = os.path.join(os.path.dirname(mintpy.__file__), 'defaults/smallbaselineApp.cfg') lines = open(template_file, 'r').readlines() lines = [line.strip(' ') for line in lines] # get starting line index pattern = r"^##########[ ]?\d{0,2}\.*\d{0,2} " + step_name inds = [lines.index(line) for line in lines if re.match(pattern, line)] if len(inds) > 0: ind0 = inds[0] + 1 else: raise ValueError('pattern "{}" is not found in file: {}!'.format(pattern, template_file)) # get ending line index: the next line with ten of # ind1 = -1 for i in range(ind0+1, len(lines)): if lines[i].startswith('########## '): ind1 = i break # merge the related list of strings into one string step_content = ''.join(' '*indentation + line for line in lines[ind0:ind1]) step_content = step_content.rstrip() if header_footer: step_content = 'template options:\n' + step_content + '\n' return step_content