code: def generate_script(self):
          
          self.script = ""        # Holds the script string
          total = 1               # total number of jobs in this group
  
          # for now, SGE_TASK_ID becomes TASK_ID, but we base it at zero
          self.script += """let "TASK_ID=$SGE_TASK_ID - 1"\n"""
  
          # build the array definitions; force ordering for Python3.5 tests
          for key in sorted(self.arguments.keys()):
              values = self.arguments[key]
              line = ("%s_ARRAY=( " % (key))
              for value in values:
                  line += value
                  line += " "
              line += " )\n"
              self.script += line
              total *= len(values)
          self.script += "\n"
  
          # now, build the decoding logic in the script; force ordering
          for key in sorted(self.arguments.keys()):
              count = len(self.arguments[key])
              self.script += """let "%s_INDEX=$TASK_ID %% %d"\n""" % (key, count)
              self.script += """%s=${%s_ARRAY[$%s_INDEX]}\n""" % (key, key, key)
              self.script += """let "TASK_ID=$TASK_ID / %d"\n""" % (count)
  
          # now, add the command to run the job
          self.script += "\n"
          self.script += self.command
          self.script += "\n"
  
          # set the number of tasks in this group
          self.tasks = total
docs: Create the SGE script that will run the jobs in the JobGroup, with
          the passed arguments.