import pandas as pd

filename = 'hmmsearch5_table.txt'
subfamily = {'A0A017HNP3', 'A0A0A0HI83', 'A0A0H2X731', 'A0A176XC88', 'A0A1H9VHY5', 'A0A1T5H1K2', 'A0A2G1QHL4',
             'A0A2G1VPW8', 'A0A2I7KBG2', 'A0A2S7J4I9', 'A0A2T4J5P5', 'A0A327Y0A5', 'A0A367WQC2', 'A0A367X509',
             'A0A369QD96', 'A0A399REZ5', 'A0A418NII7', 'A0A4R6AQ48', 'A0A502BRU1', 'A0A521DWF5', 'A0A5B8FVD5',
             'A0A657LX67', 'A0A6M1UB34', 'A0A6P1T1S0', 'A0A7W4K034', 'A0A7W6DQY7', 'A0A844ZGW8', 'A0A850HFI7',
             'A0A8J3DDM8', 'A0A8J8SMK4', 'A0A916WLS7', 'A0AAJ6GSI6', 'A0ABQ3FRG1', 'A0ABS1RYS3', 'A0ABS8VV51',
             'A0ABU8PF11', 'A0ABV5I6W1', 'A0ABV7E0C3', 'A0ABV7RAM0', 'A0ABX7DW12', 'A0ABX9A006', 'A0ABY6G7I7',
             'A0ABY7YG48', 'B0RTJ5', 'I3YU51', 'Q2GBR1', 'Q8P8X7'}

df = pd.read_csv(filename, comment='#', sep=r'\s+', header=None, usecols=[0, 5], names=['id', 'score'])
df['id'] = df['id'].str.split('|').str[0]
df['is_target'] = df['id'].isin(subfamily)

subfamily_scores = sorted(df[df['is_target']]['score'].unique())
print(f"{'Score':<8} | {'TP':<4} | {'FP':<4} | {'FN':<4} | {'TN':<4}")
print("-" * 33)

for cutoff in subfamily_scores:
    pred_pos = df['score'] >= cutoff

    TP = (pred_pos & df['is_target']).sum()
    FP = (pred_pos & ~df['is_target']).sum()
    FN = (~pred_pos & df['is_target']).sum()
    TN = (~pred_pos & ~df['is_target']).sum()

    print(f"{cutoff:<8.1f} | {TP:<4} | {FP:<4} | {FN:<4} | {TN:<4}")
