asf.load_assembly(args.infile)

    for segments_file in args.mask:
        asf.add_mask_regions(filename=segments_file)
        asf.merge_masked_regions()

    if args.outfile:
        of = open(args.outfile, "wt")
    else:
        of = sys.stdout
    for ocontig in asf.ocontigs_iter():
        chunk = struct.unpack(
            "<L",
            hashlib.md5(
                ocontig.encode("utf-8")).digest()[:4])[0] % args.nchunks
        if not chunk == args.chunk: continue
        links = {}
        asf.get_links([ocontig],
                      skipI=True,
                      mapq=args.mapq,
                      links=links,
                      contigs=False,
                      raw=True)
        #          print(ocontig,chunk,links)
        process_links(links,
                      args.window,
                      args.min_links,
                      args.max_others,
                      segments=of)
    of.close()
    parser.add_argument(
        "-o",
        "--outfile",
        default=False,
        help="Filename for writing a list of segments on the raw contigs to mask for being promiscuous in linking.",
    )
    # -m 2 -w 1000 -M $( cat {input.threshold} )
    args = parser.parse_args()

    if args.infile:
        asf = HiriseAssembly()
        asf.load_assembly(args.infile)

    for segments_file in args.mask:
        asf.add_mask_regions(filename=segments_file)
        asf.merge_masked_regions()

    if args.outfile:
        of = open(args.outfile, "wt")
    else:
        of = sys.stdout
    for ocontig in asf.ocontigs_iter():
        chunk = struct.unpack("<L", hashlib.md5(ocontig.encode("utf-8")).digest()[:4])[0] % args.nchunks
        if not chunk == args.chunk:
            continue
        links = {}
        asf.get_links([ocontig], skipI=True, mapq=args.mapq, links=links, contigs=False, raw=True)
        #          print(ocontig,chunk,links)
        process_links(links, args.window, args.min_links, args.max_others, segments=of)
    of.close()