code: def fasta(args):
      
      from jcvi.formats.sizes import Sizes
      from jcvi.formats.agp import OO, build
  
      p = OptionParser(fasta.__doc__)
      opts, args = p.parse_args(args)
  
      if len(args) != 3:
          sys.exit(not p.print_help())
  
      bedfile, scffasta, pmolfasta = args
      pf = bedfile.rsplit(".", 1)[0]
      bed = Bed(bedfile)
      selected = select_bed(bed)
      oo = OO()
      seen = set()
      sizes = Sizes(scffasta).mapping
      agpfile = pf + ".agp"
      agp = open(agpfile, "w")
      for b in selected:
          scf = range_parse(b.accn).seqid
          chr = b.seqid
          cs = (chr, scf)
          if cs not in seen:
              oo.add(chr, scf, sizes[scf], b.strand)
              seen.add(cs)
          else:
              logging.debug("Seen {0}, ignored.".format(cs))
  
      oo.write_AGP(agp, gaptype="contig")
      agp.close()
      build([agpfile, scffasta, pmolfasta])
docs: %prog fasta bedfile scf.fasta pseudomolecules.fasta
  
      Use OM bed to scaffold and create pseudomolecules. bedfile can be generated
      by running jcvi.assembly.opticalmap bed --blockonly