def multiple_align_mafft(prediction, hits)
      raise unless prediction.is_a?(Query) && hits[0].is_a?(Query)

      opt = ['--maxiterate', '1000', '--localpair', '--anysymbol', '--quiet',
             '--thread', @num_threads.to_s]
      mafft = Bio::MAFFT.new('mafft', opt)
      sequences = hits.map do |h|
        # remove the seq id - as MAFFT sometimes has an issue with this
        f = Bio::FastaFormat.new(h.raw_sequence)
        # check if fasta sequence otherwise returne original entry
        f.seq.empty? ? h.raw_sequence : f.seq
      end
      sequences.push(prediction.protein_translation)

      report = mafft.query_align(sequences)
      alignment = report.alignment.map(&:to_s)
      raise NoMafftInstallationError if alignment.empty?
      alignment
    rescue StandardError
      raise NoMafftInstallationError
    end
def multiple_align_mafft(prediction, hits)
      raise unless prediction.is_a?(Query) && hits[0].is_a?(Query)

      opt = ['--maxiterate', '1000', '--localpair', '--anysymbol', '--quiet',
             '--thread', @num_threads.to_s]
      mafft = Bio::MAFFT.new('mafft', opt)
      sequences = hits.map do |h|
        # remove the seq id - as MAFFT sometimes has an issue with this
        f = Bio::FastaFormat.new(h.raw_sequence)
        # check if fasta sequence otherwise returne original entry
        f.seq.empty? ? h.raw_sequence : f.seq
      end
      sequences.push(prediction.protein_translation)

      report = mafft.query_align(sequences)
      alignment = report.alignment.map(&:to_s)
      raise NoMafftInstallationError if alignment.empty?
      alignment
    rescue StandardError
      raise NoMafftInstallationError
    end
Builds the multiple alignment between
 all the hits and the prediction
 using MAFFT tool
 Also creates a fasta file with the alignment
 Params:
 +prediction+: a +Sequence+ object representing the blast query
 +hits+: a vector of +Sequience+ objects (usually representing blast hits)
 +path+: path of mafft installation
 Output:
 Array of +String+s, corresponding to the multiple aligned sequences
 the prediction is the last sequence in the vector