code: def crossmap(fas, reads, options, no_shrink, keepDB, threads, cluster, nodes):
      if cluster is True:
          threads = '48'
      btc = []
      for fa in fas:
          btd = bowtiedb(fa, keepDB)
          F, R, U = reads
          if F is not False:
              if U is False:
                  u = False
              for i, f in enumerate(F):
                  r = R[i]
                  if U is not False:
                      u = U[i]
                  sam = '%s/%s-vs-%s' % (os.getcwd(), \
                          fa.rsplit('/', 1)[-1], f.rsplit('/', 1)[-1].rsplit('.', 3)[0])
                  btc.append(bowtie(sam, btd, f, r, u, options, no_shrink, threads))
          else:
              f = False
              r = False
              for u in U:
                  sam = '%s/%s-vs-%s' % (os.getcwd(), \
                          fa.rsplit('/', 1)[-1], u.rsplit('/', 1)[-1].rsplit('.', 3)[0])
                  btc.append(bowtie(sam, btd, f, r, u, options, no_shrink, threads))
      if cluster is False:
          for i in btc:
              p = subprocess.Popen(i, shell = True)
              p.communicate()
      else:
          ID = ''.join(random.choice([str(i) for i in range(0, 9)]) for _ in range(5))
          for node, commands in enumerate(chunks(btc, nodes), 1):
              bs = open('%s/crossmap-qsub.%s.%s.sh' % (os.getcwd(), ID, node), 'w')
              print('\n'.join(commands), file=bs)
              bs.close()
              p = subprocess.Popen(\
                      'qsub -V -N crossmap %s' \
                          % (bs.name), \
                      shell = True)
              p.communicate()