def get_pc_align_opts(outprefix, max_displacement=100, align='point-to-plane', source=True, trans_only=False):
    """
    prepares ASP pc_align ICP cmd
    See pc_align documentation here: https://stereopipeline.readthedocs.io/en/latest/tools/pc_align.html
    Parameters
    ----------
    outprefix: str
        prefix with which pc_align results will be saved (can be a path, general convention for repo is some path with run prefix, eg., aligned_to/run)
    max_displacement: float/int 
        Maximum expected displacement between input DEMs, useful for culling outliers before solving for shifts, default: 100 m
    align: str 
        ICP's alignment algorithm to use. default: point-to-plane 
    source: bool 
        if True, this tells the the algorithm to align the source to reference DEM/PC. If false, this tells the program to align reference to source and save inverse transformation. default: True
    trans_only: bool 
        if True, this instructs the program to compute translation only when point cloud optimization. Default: False
    
    Returns
    ----------
    pc_align_opt: list
        list of pc_align parameteres
    """
   
    pc_align_opts = []
    pc_align_opts.extend(['--alignment-method', align])
    pc_align_opts.extend(['--max-displacement', str(max_displacement)])
    pc_align_opts.extend(['--highest-accuracy'])
    if source:
        pc_align_opts.extend(['--save-transformed-source-points'])
    else:
        pc_align_opts.extend(['--save-inv-transformed-reference-points'])
    if trans_only:
        pc_align_opts.extend(['--compute-translation-only'])
    pc_align_opts.extend(['-o', outprefix])
    return pc_align_opts