import pandas as pd
import numpy as np
import argparse
import re 
import os

#------------------------------PARSE PARAMETERS--------------------------------
parser = argparse.ArgumentParser(description='test')
parser.add_argument('-p', '--peaks',      dest='peaksFilename',     help='Full path for basename.[forward|reverse].peaks.tsv')
parser.add_argument('-i', '--intergenic', dest='intergenicFilename',help='Full path for genome intergenic table file made by FACoP; genome.intergenic.table')
parser.add_argument('-s', '--strand',     dest='strand',            help='strand [forward or reverse]')
parser.add_argument('-o', '--out',        dest='outFilename',       help='Full path for outputfilename')
parser.add_argument('-a', '--augment',   dest='augment',          help='augment bases of intergenic region on each end', nargs='?', default=10, type=int)
parser.add_argument('-v', '--version',  action='version', version='Anne de Jong, version 1.0, May 2025')
args = parser.parse_args()


peaks_header=["chrom","start","end","count","strand"]
peaks_df      = pd.read_csv(args.peaksFilename, comment='#', sep='\t', names=peaks_header).astype({'start': int, 'end': int})
intergenic_df = pd.read_csv(args.intergenicFilename, comment='#', sep='\t').astype({'start': int, 'end': int})

# Extend intergenic regions
intergenic_df["aug_start"] = intergenic_df["start"] - args.augment
intergenic_df["aug_end"] = intergenic_df["end"] + args.augment

# Filter peaks that fall within any augmented intergenic range
def is_in_intergenic(row, intergenic):
    return ((intergenic["aug_start"] <= row["start"]) & (row["start"] <= intergenic["aug_end"])).any()

peak_filtered_df = peaks_df[peaks_df.apply(lambda row: is_in_intergenic(row, intergenic_df), axis=1)].copy()



peak_filtered_df.sort_values(by=['chrom',"start"]).to_csv(args.outFilename, index=False, header=False, sep='\t' )
