code: def run_fast(aligned, threads, cluster, node):
      
      tree = '%s.fasttree.nwk' % (aligned.rsplit('.', 1)[0])
      if check(tree) is False:
          if 'FastTreeV' in os.environ:
              ft = os.environ['FastTreeV']
              os.environ['OMP_NUM_THREADS'] = str(threads)
          else:
              ft = 'FastTreeMP'
              os.environ['OMP_NUM_THREADS'] = str(threads)
          if check_type(aligned) == 'nucl':
              type = '-nt -gamma -spr 4 -mlacc 2 -slownni'
          else:
              type = '-spr 4 -mlacc 2 -slownni'
          dir = os.getcwd()
          command = 'cat %s/%s | cut -d \' \' -f 1 | %s -log %s/%s.log %s > %s/%s 2>>%s/%s.log' % \
                  (dir, aligned, ft, dir, tree, type, dir, tree, dir, tree)
          if cluster is False:
              p = Popen(command, shell = True)
          else:
              if int(threads) > 24:
                  ppn = 24
              else:
                  ppn = threads
              re_call = 'cd %s; %s --no-rax' % (dir.rsplit('/', 1)[0], ' '.join(sys.argv))
              if node is False:
                  node = '1'
              qsub = 'qsub -l nodes=%s:ppn=%s -m e -N FastTree' % (node, ppn)
              p = Popen('echo "%s;%s" | %s' % (command, re_call, qsub), shell = True)
          p.communicate()
      return tree
docs: run FastTree