code: def read_blast(blast_file, qorder, sorder, is_self=False, ostrip=True):
      
      filtered_blast = []
      seen = set()
      bl = Blast(blast_file)
      for b in bl:
          query, subject = b.query, b.subject
          if query == subject:
              continue
          if ostrip:
              query, subject = gene_name(query), gene_name(subject)
          if query not in qorder or subject not in sorder:
              continue
  
          qi, q = qorder[query]
          si, s = sorder[subject]
  
          if is_self:
              # remove redundant a<->b to one side when doing self-self BLAST
              if qi > si:
                  query, subject = subject, query
                  qi, si = si, qi
                  q, s = s, q
              # Too close to diagonal! possible tandem repeats
              if q.seqid == s.seqid and si - qi < 40:
                  continue
  
          key = query, subject
          if key in seen:
              continue
          seen.add(key)
  
          b.qseqid, b.sseqid = q.seqid, s.seqid
          b.qi, b.si = qi, si
          b.query, b.subject = query, subject
  
          filtered_blast.append(b)
  
      logging.debug("A total of {0} BLAST imported from `{1}`.".\
                    format(len(filtered_blast), blast_file))
  
      return filtered_blast
docs: Read the blast and convert name into coordinates