code: def get_freesasa_annotations_parallelize(self, sc, include_hetatms=False,
                                               representatives_only=True, force_rerun=False):
          
          genes_rdd = sc.parallelize(self.genes)
  
          def get_freesasa_annotation(g):
              g.protein.get_freesasa_annotations(include_hetatms=include_hetatms,
                                                 representative_only=representatives_only,
                                                 force_rerun=force_rerun)
              return g
  
          result = genes_rdd.map(get_freesasa_annotation).collect()
          for modified_g in result:
              original_gene = self.genes.get_by_id(modified_g.id)
              original_gene.copy_modified_gene(modified_g)
docs: Run freesasa on structures and store calculations.
  
          Annotations are stored in the protein structure's chain sequence at:
          ``<chain_prop>.seq_record.letter_annotations['*-freesasa']``
  
          Args:
              include_hetatms (bool): If HETATMs should be included in calculations. Defaults to ``False``.
              representative_only (bool): If analysis should only be run on the representative structure
              force_rerun (bool): If calculations should be rerun even if an output file exists