docs: def _write_strain_functional_genes(self, strain_id, ref_functional_genes, orth_matrix, force_rerun=False):
          """Create strain functional genes json file"""
          func_genes_path = op.join(self.model_dir, '{}_funcgenes.json'.format(strain_id))
  
          if ssbio.utils.force_rerun(flag=force_rerun, outfile=func_genes_path):
              gene_to_func = {k:True for k in ref_functional_genes}
              # Get a list of genes which do not have orthology in the strain
              genes_to_remove = orth_matrix[pd.isnull(orth_matrix[strain_id])][strain_id].index.tolist()
  
              # Mark genes non-functional
              genes_to_remove = list(set(genes_to_remove).intersection(set(ref_functional_genes)))
  
              if len(genes_to_remove) > 0:
                  for g in genes_to_remove:
                      gene_to_func[g] = False
  
              with open(func_genes_path, 'w') as f:
                  json.dump(gene_to_func, f)
          else:
              with open(func_genes_path, 'r') as f:
                  gene_to_func = json.load(f)
  
          return strain_id, gene_to_func