87 lines
2.5 KiB
Python
87 lines
2.5 KiB
Python
|
############################################################
|
||
|
# 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
|