code: def build_genome_alignment_from_file(ga_path, ref_spec, idx_path=None,
                                       verbose=False):
    
    blocks = []
    if (idx_path is not None):
      bound_iter = functools.partial(genome_alignment_iterator,
                                     reference_species=ref_spec)
      hash_func = JustInTimeGenomeAlignmentBlock.build_hash
      factory = IndexedFile(None, bound_iter, hash_func)
      factory.read_index(idx_path, ga_path, verbose=verbose)
  
      pind = None
      for k in factory:
        if verbose:
          if pind is None:
            total = len(factory)
            pind = ProgressIndicator(totalToDo=total, messagePrefix="completed",
                                     messageSuffix="building alignment blocks ")
          pind.done += 1
          pind.showProgress()
        blocks.append(JustInTimeGenomeAlignmentBlock(factory, k))
    else:
      for b in genome_alignment_iterator(ga_path, ref_spec, verbose=verbose):
        blocks.append(b)
    return GenomeAlignment(blocks, verbose)
docs: build a genome alignment by loading from a single MAF file.
  
    :param ga_path:  the path to the file to load.
    :param ref_spec: which species in the MAF file is the reference?
    :param idx_path: if provided, use this index to generate a just-in-time
                     genome alignment, instead of loading the file immediately.