code: def align_rna(job, fastqs, univ_options, star_options):
      
      star = job.wrapJobFn(run_star, fastqs, univ_options, star_options,
                           cores=star_options['n'],
                           memory=PromisedRequirement(lambda x: int(1.85 * x.size),
                                                      star_options['index']),
                           disk=PromisedRequirement(star_disk, fastqs, star_options['index']))
      s_and_i = job.wrapJobFn(sort_and_index_star, star.rv(), univ_options,
                              star_options).encapsulate()
      job.addChild(star)
      star.addChild(s_and_i)
      return s_and_i.rv()
docs: A wrapper for the entire rna alignment subgraph.
  
      :param list fastqs: The input fastqs for alignment
      :param dict univ_options: Dict of universal options used by almost all tools
      :param dict star_options: Options specific to star
      :return: Dict containing input bam and the generated index (.bam.bai)
      :rtype: dict