Load header files

def load_headers(fsns:List[int]):
    """Load header files
    """
    ip = get_ipython()
    ip.user_ns['_headers'] = {}
    for type_ in ['raw', 'processed']:
        print("Loading %d headers (%s)" % (len(fsns), type_), flush=True)
        processed = type_ == 'processed'
        headers = []
        for f in fsns:
            for l in [l_ for l_ in ip.user_ns['_loaders'] if l_.processed == processed]:
                try:
                    headers.append(l.loadheader(f))
                    break
                except FileNotFoundError:
                    continue
        allsamplenames = {h.title for h in headers}
        if not headers:
            print('NO HEADERS READ FOR TYPE "%s"' % type_)
        else:
            print("%d headers (%s) out of %d have been loaded successfully." % (len(headers), type_, len(fsns)))
            print('Read FSN range:', min([h.fsn for h in headers]), 'to', max([h.fsn for h in headers]))
            print("Samples covered by these headers:")
            print("    " + "\n    ".join(sorted(allsamplenames)), flush=True)
        if processed:
            ip.user_ns['allsamplenames'] = allsamplenames
        ip.user_ns['_headers'][type_] = headers