diff --git a/data/tabular/choline_transporter_butkiewicz/meta.yaml b/data/tabular/choline_transporter_butkiewicz/meta.yaml index 56df11a58..25e6d7ce0 100644 --- a/data/tabular/choline_transporter_butkiewicz/meta.yaml +++ b/data/tabular/choline_transporter_butkiewicz/meta.yaml @@ -62,56 +62,56 @@ templates: - The polymer with the {compound_name__names__noun} of {compound_name#} has an {Tg_exp__names__noun} of {Tg_exp#} {Tg_exp__units}. - The polymer with the {compound_name__names__noun} of {compound_name#} has a {Tg_calc__names__noun} of {Tg_calc#} {Tg_calc__units}. - The polymer with the {compound_name__names__noun} of {compound_name#} has a {rho_300K_calc__names__noun} of {rho_300K_calc#} {rho_300K_calc__units}. - - What is the {Tg_exp__names__noun} of the polymer with the {PSMILES__description} {PSMILES#}? Answer: {Tg_exp#} {Tg_exp__units}. - - What is the {Tg_calc__names__noun} of the polymer with the {PSMILES__description} {PSMILES#}? Answer: {Tg_calc#} {Tg_calc__units}. - - What is the {rho_300K_calc__names__noun} of the polymer with the {PSMILES__description} {PSMILES#}? Answer: {rho_300K_calc#} {rho_300K_calc__units}. - - What is the {Tg_exp__names__noun} of the polymer with the {compound_name__names__noun} {compound_name#}? Answer: {Tg_exp#} {Tg_exp__units}. - - What is the {Tg_calc__names__noun} of the polymer with the {compound_name__names__noun} {compound_name#}? Answer: {Tg_calc#} {Tg_calc__units}. - - What is the {rho_300K_calc__names__noun} of the polymer with the {compound_name__names__noun} {compound_name#}? Answer: {rho_300K_calc#} {rho_300K_calc__units}. + - What is the {Tg_exp__names__noun} of the polymer with the {PSMILES__description} {PSMILES#}? Answer:{Tg_exp#} {Tg_exp__units}. + - What is the {Tg_calc__names__noun} of the polymer with the {PSMILES__description} {PSMILES#}? Answer:{Tg_calc#} {Tg_calc__units}. + - What is the {rho_300K_calc__names__noun} of the polymer with the {PSMILES__description} {PSMILES#}? Answer:{rho_300K_calc#} {rho_300K_calc__units}. + - What is the {Tg_exp__names__noun} of the polymer with the {compound_name__names__noun} {compound_name#}? Answer:{Tg_exp#} {Tg_exp__units}. + - What is the {Tg_calc__names__noun} of the polymer with the {compound_name__names__noun} {compound_name#}? Answer:{Tg_calc#} {Tg_calc__units}. + - What is the {rho_300K_calc__names__noun} of the polymer with the {compound_name__names__noun} {compound_name#}? Answer:{rho_300K_calc#} {rho_300K_calc__units}. - The polymer with the {PSMILES__description} {PSMILES#} has an {Tg_exp__names__noun} of {Tg_exp#} {Tg_exp__units} and a {Tg_calc__names__noun} of {Tg_calc#} {Tg_calc__units}. - The polymer with the {compound_name__names__noun} {compound_name#} has an {Tg_exp__names__noun} of {Tg_exp#} {Tg_exp__units} and a {Tg_calc__names__noun} of {Tg_calc#} {Tg_calc__units}. - - Compare the {Tg_exp__names__noun} and {Tg_calc__names__noun} for the polymer with the {PSMILES__description} {PSMILES#}. Answer: {Tg_exp#} {Tg_exp__units}, {Tg_calc#} {Tg_calc__units}. - - Compare the {Tg_exp__names__noun} and {Tg_calc__names__noun} for the polymer with the {compound_name__names__noun} {compound_name#}. Answer: {Tg_exp#} {Tg_exp__units}, {Tg_calc#} {Tg_calc__units}. - - What is the {rho_300K_calc__names__noun} of the polymer with the {PSMILES__description} {PSMILES#} at 300K? Answer: {rho_300K_calc#} {rho_300K_calc__units}. - - What is the {rho_300K_calc__names__noun} of the polymer with the {compound_name__names__noun} {compound_name#} at 300K? Answer: {rho_300K_calc#} {rho_300K_calc__units}. - - What is the {Tg_exp__names__noun} of the polymer with the {PSMILES__description} {PSMILES#} in Kelvin? Answer: {Tg_exp#}. - - What is the {Tg_calc__names__noun} of the polymer with the {PSMILES__description} {PSMILES#} in Kelvin? Answer: {Tg_calc#}. - - What is the {rho_300K_calc__names__noun} of the polymer with the {PSMILES__description} {PSMILES#} in g/cm^3? Answer: {rho_300K_calc#}. - - What is the {Tg_exp__names__noun} of the polymer with the {compound_name__names__noun} {compound_name#} in Kelvin? Answer: {Tg_exp#}. - - What is the {Tg_calc__names__noun} of the polymer with the {compound_name__names__noun} {compound_name#} in Kelvin? Answer: {Tg_calc#}. - - What is the {rho_300K_calc__names__noun} of the polymer with the {compound_name__names__noun} {compound_name#} in g/cm^3? Answer: {rho_300K_calc#}. + - Compare the {Tg_exp__names__noun} and {Tg_calc__names__noun} for the polymer with the {PSMILES__description} {PSMILES#}. Answer:{Tg_exp#} {Tg_exp__units}, {Tg_calc#} {Tg_calc__units}. + - Compare the {Tg_exp__names__noun} and {Tg_calc__names__noun} for the polymer with the {compound_name__names__noun} {compound_name#}. Answer:{Tg_exp#} {Tg_exp__units}, {Tg_calc#} {Tg_calc__units}. + - What is the {rho_300K_calc__names__noun} of the polymer with the {PSMILES__description} {PSMILES#} at 300K? Answer:{rho_300K_calc#} {rho_300K_calc__units}. + - What is the {rho_300K_calc__names__noun} of the polymer with the {compound_name__names__noun} {compound_name#} at 300K? Answer:{rho_300K_calc#} {rho_300K_calc__units}. + - What is the {Tg_exp__names__noun} of the polymer with the {PSMILES__description} {PSMILES#} in Kelvin? Answer:{Tg_exp#}. + - What is the {Tg_calc__names__noun} of the polymer with the {PSMILES__description} {PSMILES#} in Kelvin? Answer:{Tg_calc#}. + - What is the {rho_300K_calc__names__noun} of the polymer with the {PSMILES__description} {PSMILES#} in g/cm^3? Answer:{rho_300K_calc#}. + - What is the {Tg_exp__names__noun} of the polymer with the {compound_name__names__noun} {compound_name#} in Kelvin? Answer:{Tg_exp#}. + - What is the {Tg_calc__names__noun} of the polymer with the {compound_name__names__noun} {compound_name#} in Kelvin? Answer:{Tg_calc#}. + - What is the {rho_300K_calc__names__noun} of the polymer with the {compound_name__names__noun} {compound_name#} in g/cm^3? Answer:{rho_300K_calc#}. - The polymer with the {PSMILES__description} {PSMILES#} has an {Tg_exp__names__noun} of {Tg_exp#} {Tg_exp__units} and a {rho_300K_calc__names__noun} of {rho_300K_calc#} {rho_300K_calc__units}. - The polymer with the {compound_name__names__noun} {compound_name#} has an {Tg_exp__names__noun} of {Tg_exp#} {Tg_exp__units} and a {rho_300K_calc__names__noun} of {rho_300K_calc#} {rho_300K_calc__units}. - - Compare the {Tg_exp__names__noun} and {rho_300K_calc__names__noun} for the polymer with the {PSMILES__description} {PSMILES#}. Answer: {Tg_exp#} {Tg_exp__units}, {rho_300K_calc#} {rho_300K_calc__units}. - - Compare the {Tg_exp__names__noun} and {rho_300K_calc__names__noun} for the polymer with the {compound_name__names__noun} {compound_name#}. Answer: {Tg_exp#} {Tg_exp__units}, {rho_300K_calc#} {rho_300K_calc__units}. + - Compare the {Tg_exp__names__noun} and {rho_300K_calc__names__noun} for the polymer with the {PSMILES__description} {PSMILES#}. Answer:{Tg_exp#} {Tg_exp__units}, {rho_300K_calc#} {rho_300K_calc__units}. + - Compare the {Tg_exp__names__noun} and {rho_300K_calc__names__noun} for the polymer with the {compound_name__names__noun} {compound_name#}. Answer:{Tg_exp#} {Tg_exp__units}, {rho_300K_calc#} {rho_300K_calc__units}. - |- Question: What is the {Tg_exp__names__noun} of the polymer with the {PSMILES__description} {PSMILES#}? Constraint: You must pick either {%multiple_choice_enum%3%aA1} without using any other words. Options: {Tg_exp%} - Answer: {%multiple_choice_result} + Answer:{%multiple_choice_result} - Question: What is the {Tg_calc__names__noun} of the polymer with the {PSMILES__description} {PSMILES#}? Constraint: You must pick either {%multiple_choice_enum%3%aA1} without using any other words. Options: {Tg_calc%} - Answer: {%multiple_choice_result} + Answer:{%multiple_choice_result} - Question: What is the {rho_300K_calc__names__noun} of the polymer with the {PSMILES__description} {PSMILES#}? Constraint: You must pick either {%multiple_choice_enum%3%aA1} without using any other words. Options: {rho_300K_calc%} - Answer: {%multiple_choice_result} + Answer:{%multiple_choice_result} - Question: What is the {Tg_exp__names__noun} of the polymer with the {compound_name__names__noun} {compound_name#}? Constraint: You must pick either {%multiple_choice_enum%3%aA1} without using any other words. Options: {Tg_exp%} - Answer: {%multiple_choice_result} + Answer:{%multiple_choice_result} - Question: What is the {Tg_calc__names__noun} of the polymer with the {compound_name__names__noun} {compound_name#}? Constraint: You must pick either {%multiple_choice_enum%3%aA1} without using any other words. Options: {Tg_calc%} - Answer: {%multiple_choice_result} + Answer:{%multiple_choice_result} - Question: What is the {rho_300K_calc__names__noun} of the polymer with the {compound_name__names__noun} {compound_name#}? Constraint: You must pick either {%multiple_choice_enum%3%aA1} without using any other words. Options: {rho_300K_calc%} - Answer: {%multiple_choice_result} + Answer:{%multiple_choice_result} diff --git a/data/tabular/lipophilicity/meta.yaml b/data/tabular/lipophilicity/meta.yaml index a8ee84384..6916dd36d 100644 --- a/data/tabular/lipophilicity/meta.yaml +++ b/data/tabular/lipophilicity/meta.yaml @@ -47,7 +47,7 @@ templates: {exp%} Answer: {%multiple_choice_result} - |- - Question: Please estimate the {exp__names__noun} of {SMILES#} by picking one choice of {%multiple_choice_enum%3-6%aA1}. + Question: Please {#estimate|guess|predict|provide!} the {exp__names__noun} of {SMILES#} by picking one choice of {%multiple_choice_enum%3-6%aA1}. Options: {exp%} Answer: {%multiple_choice_result} @@ -57,3 +57,40 @@ templates: Options: {exp%} Answer:{%multiple_choice_result} + - |- + Question: What is the {exp__names__noun} for the {#molecule|chemical|compound!} represented by the {SMILES__description} {SMILES#}? + + Answer:{exp} + - |- + Task: Determine the {exp__names__noun} for the given {SMILES__description}. + + Molecule: {SMILES#} + + Answer:{exp} + - |- + Task: Please {#estimate|guess|predict|provide!} the {exp__names__noun} for the following {SMILES__description}. + + Molecule: {SMILES#} + + Answer:{exp} + - |- + Question: What is the experimental {exp__names__noun} for the molecule with the {SMILES__description} {SMILES#}? + + Answer:{exp} + - |- + Task: Identify the {exp__names__noun} for the given {#molecule|chemical|compound!}. + + Molecule: {SMILES#} + + Answer:{exp} + - |- + Task: Please select the correct {exp__names__noun} for the {#molecule|chemical|compound!} represented by the {SMILES__description} {SMILES#}. + + Options: + {exp%} + + Answer:{%multiple_choice_result} + - |- + Task: {#Estimate|Guess|Predict|Provide!} the {exp__names__noun} for the {#molecule|chemical|compound!} with the {SMILES__description} {SMILES#}. + + Answer:{exp} diff --git a/data/tabular/melting_points/meta.yaml b/data/tabular/melting_points/meta.yaml index 1f101b454..7cb427be2 100644 --- a/data/tabular/melting_points/meta.yaml +++ b/data/tabular/melting_points/meta.yaml @@ -92,17 +92,17 @@ templates: Compound: {NAME#} - Result: {mp#} {mp__units} + Result:{mp#} {mp__units} - |- Task: Please estimate the {mp_names__noun} of a compound. {SMILES__description}: {SMILES#} - Result: {mp#} {mp__units} + Result:{mp#} {mp__units} - |- Question: What is the {mp_names__noun} of a compound with the {SMILES__description} {SMILES#} in {mp__units}? - Answer: {mp#} + Answer:{mp#} - |- Question: Which molecule has a {mp_names__noun} of {mp#} {mp__units}? Pick {%multiple_choice_enum%3%aA1}. diff --git a/data/tabular/mol_repr_transl/transform.py b/data/tabular/mol_repr_transl/transform.py index 64f140084..b9ce33a07 100644 --- a/data/tabular/mol_repr_transl/transform.py +++ b/data/tabular/mol_repr_transl/transform.py @@ -46,18 +46,18 @@ """User: Can you {#tell me|create|generate!} the {IDENTIFIER__names__noun} of the molecule with the {TARGET__names__noun} {TARGET#}? Assistant: {#Yes|Of course|Sure|Yes, I'm happy to help!}, this molecule has a {IDENTIFIER__names__noun} of {IDENTIFIER#}.""", # noqa: E501 # Benchmarking text templates - "The molecule with the {IDENTIFIER__names__noun} {#representation of |!}{IDENTIFIER#} can also be represented with the {TARGET__names__noun}{# representation|!}: {TARGET#}.", # noqa: E501 - "The molecule with the {TARGET__names__noun} {#representation of |!}{TARGET#} can also be represented with the {IDENTIFIER__names__noun}{# representation|!}: {IDENTIFIER#}.", # noqa: E501 + "The molecule with the {IDENTIFIER__names__noun} {#representation of |!}{IDENTIFIER#} can also be represented with the {TARGET__names__noun}{# representation|!}:{TARGET#}.", # noqa: E501 + "The molecule with the {TARGET__names__noun} {#representation of |!}{TARGET#} can also be represented with the {IDENTIFIER__names__noun}{# representation|!}:{IDENTIFIER#}.", # noqa: E501 """Task: Please {#create|generate!} a molecule representation based on {#the input molecule representation and |!}the description. Description: {#Generate|Create!} the {TARGET__names__noun} from the {IDENTIFIER__names__noun}. {#Molecule |!}{IDENTIFIER__names__noun}: {IDENTIFIER#} Constraint: Even if you are {#uncertain|not sure!}, you must answer with a representation without using any {#other|additional!} words. -Result: {TARGET#}""", # noqa: E501 +Result:{TARGET#}""", # noqa: E501 """Task: Please {#create|generate!} a molecule representation based on {#the input molecule representation and |!}the description. Description: {#Generate|Create!} the {IDENTIFIER__names__noun} from the {TARGET__names__noun}. {#Molecule |!}{TARGET__names__noun}: {TARGET#} Constraint: Even if you are {#uncertain|not sure!}, you must answer with a representation without using any {#other|additional!} words. -Result: {IDENTIFIER#}""", # noqa: E501 +Result:{IDENTIFIER#}""", # noqa: E501 ], } diff --git a/data/tabular/uniprot_binding_single/meta.yaml b/data/tabular/uniprot_binding_single/meta.yaml index 972c0a3f3..b47d37c88 100644 --- a/data/tabular/uniprot_binding_single/meta.yaml +++ b/data/tabular/uniprot_binding_single/meta.yaml @@ -59,9 +59,9 @@ templates: Task: {#Find|Identify|Come up with!} a binding site in the {#AA sequence|amino acid sequence|peptide sequence|protein!} for the {#molecule|chemical|compound!}. {#AA sequence|Amino acid sequence|Peptide sequence|Protein!}: {sequence#} {SMILES__description}{# representation|!}: {SMILES#} - {#Output|Result!}: {start_binding_site#} + {#Output|Result!}:{start_binding_site#} - |- Task: {#Create|Design|Come up with!} a {#molecule|chemical|compound!} that binds to the given {#binding site|site|position|!} in the {#AA sequence|amino acid sequence|peptide sequence|protein!}. {#AA sequence|Amino acid sequence|Peptide sequence|Protein!}: {sequence#} Binding site{# position|!}: {start_binding_site#} - {#Output|Result!}: {SMILES#} + {#Output|Result!}:{SMILES#} diff --git a/data/tabular/uniprot_binding_sites_multiple/meta.yaml b/data/tabular/uniprot_binding_sites_multiple/meta.yaml index 224666e1a..25e96f59d 100644 --- a/data/tabular/uniprot_binding_sites_multiple/meta.yaml +++ b/data/tabular/uniprot_binding_sites_multiple/meta.yaml @@ -64,9 +64,9 @@ templates: Task: {#Find|Identify|Come up with!} a binding site in the {#AA sequence|amino acid sequence|peptide sequence|protein!} for the {#molecule|chemical|compound!}. {#AA sequence|Amino acid sequence|Peptide sequence|Protein!}: {sequence#} {SMILES__description}{# representation|!}: {SMILES#} - {#Output|Result!}: {start_binding_site#}-{end_binding_site#} + {#Output|Result!}:{start_binding_site#}-{end_binding_site#} - |- Task: {#Create|Design|Come up with!} a {#molecule|chemical|compound!} that binds to the given {#binding site|site|position|!} in the {#AA sequence|amino acid sequence|peptide sequence|protein!}. {#AA sequence|Amino acid sequence|Peptide sequence|Protein!}: {sequence#} Binding site{# position|!}: {start_binding_site#}{#-| to !}{end_binding_site#} - {#Output|Result!}: {SMILES#} + {#Output|Result!}:{SMILES#} diff --git a/data/tabular/uniprot_organisms/meta.yaml b/data/tabular/uniprot_organisms/meta.yaml index 5c3c03451..8cf6ca747 100644 --- a/data/tabular/uniprot_organisms/meta.yaml +++ b/data/tabular/uniprot_organisms/meta.yaml @@ -43,4 +43,4 @@ templates: - |- Task: {#Predict|Identify!} the organism in which {#the below|this!} {#protein|amino acid sequence|AA sequence|polypeptide!} can be found. {#Amino acid sequence|Sequence|AA sequence!}: {other#} - Result: {organisms#} + Result:{organisms#} diff --git a/data/tabular/uniprot_reactions/meta.yaml b/data/tabular/uniprot_reactions/meta.yaml index 7d1eca907..e7c4ac94b 100644 --- a/data/tabular/uniprot_reactions/meta.yaml +++ b/data/tabular/uniprot_reactions/meta.yaml @@ -48,8 +48,8 @@ templates: - |- Task: {#Predict|Identify!} a {#biochemical |chemical |!}reaction that can be catalyzed by {#this|the following!} {#protein|amino acid sequence|AA sequence|polypeptide!}. {#Amino acid sequence |Sequence|AA sequence!}: {other#} - Result: {reactions#} + Result:{reactions#} - |- Task: {#Generate|Create|Come up with|Design!} a {#protein|amino acid sequence|AA sequence|polypeptide!} that can catalyze {#a|this!} specific {#biochemical |chemical |!}reaction. Reaction: {reactions#} - {#Output|Result!}: {other#} + {#Output|Result!}:{other#} diff --git a/data/tabular/uniprot_sentences/meta.yaml b/data/tabular/uniprot_sentences/meta.yaml index cfd314375..3fefb81fa 100644 --- a/data/tabular/uniprot_sentences/meta.yaml +++ b/data/tabular/uniprot_sentences/meta.yaml @@ -48,8 +48,8 @@ templates: - |- Task: {#Generate|Create|Come up with!} a description {#of a few sentences |!}for the {#protein|amino acid sequence|AA sequence|polypeptide!}{# below|!}. {#Protein|Amino acid sequence|AA sequence|Polypeptide!}: {sequence#} - {#Output|Result!}: {sentences#} + {#Output|Result!}:{sentences#} - |- Task: {#Generate|Create|Come up with!} a {#protein|amino acid sequence|AA sequence|polypeptide!} based on the description. Description: {sentences#} - {#Output|Result!}: {sequence#} + {#Output|Result!}:{sequence#} diff --git a/src/chemnlp/data/meta_yaml_augmentor.py b/src/chemnlp/data/meta_yaml_augmentor.py index 59a93b434..e9c66e54c 100644 --- a/src/chemnlp/data/meta_yaml_augmentor.py +++ b/src/chemnlp/data/meta_yaml_augmentor.py @@ -25,19 +25,19 @@ - `Is the {SMILES__description} {SMILES#} a {CYP2D6_Substrate__names__noun}:{CYP2D6_Substrate#no&yes}` - `Task: Please {#create|generate!} a {#molecule |!}{SMILES__description} that has a {#bioaffinity|affinity!} to {#the protein |!}{protein_name#} with a {standard_type#} {#value |!}of {standard_value#} {standard_units#}. - Result: {SMILES#}` + Result:{SMILES#}` - `Task: Please {#derive|estimate|approximate!} {#the bioaffinity|the affinity!} of a {#molecule to a protein|protein to a molecule!}. Protein{# name|!}: {protein_name#} {#Molecule |!}{SMILES__description}: {SMILES#} Constraint{#s|!}: The {#resulting|derived|calculated!} {standard_type#} {#value |!}should be in {standard_units#}. Even if you are {#uncertain|not sure!}, you must {#derive|estimate|come up with!} a {standard_type#} {#value |!}without using any {#other|additional!} words. - Result: {standard_value#} {standard_units#}` + Result:{standard_value#} {standard_units#}` - `Question: What is the {#the bioaffinity|the affinity!} of a {#molecule to a protein|protein to a molecule!}? Protein{# name|!}: {protein_name#} {#Molecule |!}{SMILES__description}: {SMILES#} Constraint: The {#shown|listed!} {standard_type#} values {#below |!}are in {standard_units#}. Even if you are {#uncertain|not sure!}, you must pick either {%multiple_choice_enum%3-5%aA1} without using any other words. Options: {standard_value%} - Answer: {%multiple_choice_result}` + Answer:{%multiple_choice_result}` 3. Conditional Statements: - Use {COLUMN#not &NULL} for conditional text based on column values. Note that this only makes sense for columns that are boolean. @@ -46,7 +46,7 @@ - Use {#option1|option2|option3!} for random selection of text. Use this to add variety to the prompts. If there are synonyms or different ways to ask the same question, use this to add variety. For example - `Task: Please {#create|generate!} a {#molecule |!}{SMILES__description} that has a {#bioaffinity|affinity!} to {#the protein |!}{protein_name#} with a {standard_type#} {#value |!}of {standard_value#} {standard_units#}. - Result: {SMILES#}` + Result:{SMILES#}` 5. Use `__` to access a field in the meta data. for example {target__names__noun} will access the noun field of the target names. NEVER hardcode the target names. Always use the templating syntax. This is also crucial for identifiers as we have some post-processing routines that rely on this. @@ -99,7 +99,7 @@ def generate_augmented_meta_yaml( with open(f"{data_dir}/meta.yaml", "r") as f: yaml_content = f.read() - prompt = f"""You are given the following meta.yaml structure for a dataset. Based on the column names and example data provided, augment the meta.yaml structure with appropriate templates. Ensure that the logic in the templates is consistent with the data and existing templates. If you are unsure, do not perform any augmentation. Add at least five new templates. Ensure to add templates in benchmarking style (e.g.., using `Answer:` to seperate questions from the answer, ideally we want to have also questions where the answer after is only one number or string, such as Answer: number. You can do this sometimes by specifying in the question in which unit you want to have the answer). Ensure to use the name/description variables to insert the identifier and target names, for example using `{{target__names__noun}}`. Never hardcode those values. Do not start lines with `{{`. + prompt = f"""You are given the following meta.yaml structure for a dataset. Based on the column names and example data provided, augment the meta.yaml structure with appropriate templates. Ensure that the logic in the templates is consistent with the data and existing templates. If you are unsure, do not perform any augmentation. Add at least five new templates. Ensure to add templates in benchmarking style (e.g.., using `Answer:` to seperate questions from the answer, ideally we want to have also questions where the answer after is only one number or string, such as Answer:number. You can do this sometimes by specifying in the question in which unit you want to have the answer). Ensure to use the name/description variables to insert the identifier and target names, for example using `{{target__names__noun}}`. Never hardcode those values. Do not start lines with `{{`. {yaml_content} """