docs: def _align_sequences(self, input_sequences_path, output_alignment_path,
                           threads):
          '''Align sequences into alignment_file
  
          Parameters
          ----------
          input_sequences_path: str
              path to input sequences in fasta format
          output_alignment_path: str
              path to output alignment path
          threads: str
              number of threads to use
          Returns
          -------
          Nothing
          '''
          logging.debug("Aligning sequences using mafft")
          cmd = "mafft --anysymbol --thread %s --auto /dev/stdin > %s" % (
              threads,
              output_alignment_path)
          inputs = []
          with open(input_sequences_path) as f:
              for name,seq,_ in SequenceIO().each(f):
                  inputs.append('>%s' % name)
                  # Do not include * characters in the HMM, as this means tree
                  # insertion fails.
                  inputs.append(seq.replace('*',''))
          extern.run(cmd, stdin="\n".join(inputs))