def tsv_start_end(tsv):
    domain_dict={}
    with open(tsv, mode='r') as file:
        for line in file:
            if not line.startswith('#'):
                prot_list=line.strip().split('\t')
                domain_dict[prot_list[0]]=[int(x) for x in prot_list[1:]]
    return domain_dict
def coordinates_fasta(fasta, tsv_dict, outfile):
    with open(outfile, mode='w') as out:
        with open(fasta, mode='r') as file:
            need_to_write=False
            for line in file:
                if line.startswith('>'):
                    if need_to_write:
                        print(f'>{AC}', file=out)
                        start=tsv_dict[AC][0]
                        end=tsv_dict[AC][1]
                        print(seq[start-1:end], file=out)
                    if line.split('|')[0][1:] in tsv_dict.keys():
                        AC=line.split('|')[0][1:]
                        seq=''
                        need_to_write=True
                        continue
                    else:
                        need_to_write=False
                elif need_to_write:
                    seq+=line.strip()
            if need_to_write:
                print(f'>{AC}', file=out)
                start = tsv_dict[AC][0]
                end = tsv_dict[AC][1]
                print(seq[start - 1:end], file=out)
coordinates_fasta(fasta='protein-matching-aves.fasta', tsv_dict=tsv_start_end('position_in_fasta.tsv'), outfile='aves_domain_seq.fasta')