def proper_motion(sources, settings):
    """
    Remove sources based on the proper motion range and signal-to-noise

    input
    ------
    sources - pandas dataframe, SCAMP full catalog
    settings - dictionary, settings parameter:value pairs

    return
    ------
    sources - pandas dataframe, sources data without the sources filtered in this step
    """
    pm_low = settings['PM_LOW']
    pm_up = settings['PM_UP']
    SN = settings['PM_SNR']
    sources = sources[(sources.PM >= pm_low) & (sources.PM <= pm_up)]
    sources = sources[sources.PM / sources.PMERR >= SN]
    return sources
