let to_json {     name;     rna_gene_fpkm_tracking_file;      rna_min_gene_expression;     rna_transcript_fpkm_tracking_file;     rna_min_transcript_expression;     rna_transcript_fkpm_gtf_file;     mhc_epitope_lengths;     only_novel_epitopes;     ic50_cutoff;     percentile_cutoff;     padding_around_mutation;     self_filter_directory;     skip_variant_errors;     parameters}: Yojson.Basic.json =     `Assoc [       "name"`String name;       "rna_gene_fpkm_tracking_file",          (match rna_gene_fpkm_tracking_file with         | None -> `Null         | Some s -> `String s);       "rna_min_gene_expression"`Float rna_min_gene_expression;       "rna_transcript_fpkm_tracking_file",         (match rna_transcript_fpkm_tracking_file with         | None -> `Null         | Some s -> `String s);       "rna_min_transcript_expression"`Float rna_min_transcript_expression;       "rna_transcript_fkpm_gtf_file",         (match rna_transcript_fkpm_gtf_file with         | None -> `Null         | Some s -> `String s);       "mhc_epitope_lengths",          `List (List.map mhc_epitope_lengths ~f:(fun i -> `Int i));       "only_novel_epitopes"`Bool only_novel_epitopes;       "ic50_cutoff"`Float ic50_cutoff;       "percentile_cutoff"`Float percentile_cutoff;       "padding_around_mutation",         (match padding_around_mutation with         | None -> `Null         | Some i -> `Int i);       "self_filter_directory",         (match self_filter_directory with         | None -> `Null         | Some s -> `String s);       "skip_variant_errors"`Bool skip_variant_errors;       "parameters",         `Assoc (List.map parameters ~f:(fun (k, s) -> k, `String s));     ]