From 1099975608f3bf3ab530639c0fcfb0ec8d57f689 Mon Sep 17 00:00:00 2001 From: Pablo Martinez Bulit Date: Thu, 10 Apr 2025 17:47:46 +0100 Subject: [PATCH 1/4] Added ignore_intra flag, removed duplicated call NO_JIRA --- ...mponent_hydrogen_bond_propensity_report.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.py b/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.py index 7adb2dd..f42d0ee 100644 --- a/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.py +++ b/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.py @@ -81,7 +81,7 @@ def calculate(self): print(self.hbp.functional_groups) # Generate Training Dataset - self.hbp.match_fitting_data(count=500) # set to 500 for better representation of functional groups + self.hbp.match_fitting_data(count=50) # set to 500 for better representation of functional groups self.hbp.analyse_fitting_data() @@ -190,13 +190,16 @@ def format_scores(scores, das, d_type): return formatted_scores -def get_mc_scores(propensities, identifier): +def get_mc_scores(propensities, identifier, ignore_intra:bool): # Calculates the multi-component scores from the individual HBP calculation AA_propensities = [] BB_propensities = [] AB_propensities = [] BA_propensities = [] + if ignore_intra is True: + propensities = [p for p in propensities if p.is_intermolecular] + for p in propensities: t = "%s_d" % p.donor_label.split(" ")[0], "%s_a" % p.acceptor_label.split(" ")[0] if '_A_' in t[0] and '_A_' in t[1]: @@ -323,7 +326,7 @@ def make_mc_report(identifier, results, directory, diagram_file, chart_file): launch_word_processor(output_file) -def main(structure, work_directory, failure_directory, library, csdrefcode, force_run): +def main(structure, work_directory, failure_directory, library, csdrefcode, ignore_intra, force_run): # This loads up the CSD if a refcode is requested, otherwise loads the structural file supplied if csdrefcode: try: @@ -371,10 +374,9 @@ def main(structure, work_directory, failure_directory, library, csdrefcode, forc propensities, donors, acceptors = hbp_calculator.calculate() coordination_scores = coordination_scores_calc(crystal, directory) pair_output(crystal.identifier, propensities, donors, acceptors, coordination_scores, directory) + mc_dictionary[coformer_name] = get_mc_scores(propensities, crystal.identifier, ignore_intra) with open(os.path.join(directory, "success.json"), "w") as file: - tdata = get_mc_scores(propensities, crystal.identifier) - json.dump(tdata, file) - mc_dictionary[coformer_name] = get_mc_scores(propensities, crystal.identifier) + json.dump(mc_dictionary[coformer_name], file) except Exception as error_message: print("Propensity calculation failure for %s!" % coformer_name) error_string = f"{coformer_name}: {error_message}" @@ -429,7 +431,8 @@ def main(structure, work_directory, failure_directory, library, csdrefcode, forc default=ccdc_coformers_dir) parser.add_argument('-f', '--failure_directory', type=str, help='The location where the failures file should be generated') - + parser.add_argument('-i', '--ignore_intra', action='store_true', default='False', + help='Ignore intramolecular hydrogen bonds when ranking pairs') parser.add_argument('--force_run_disordered', action="store_true", help='Forces running the script on disordered entries. (NOT RECOMMENDED)', default=False) @@ -447,4 +450,4 @@ def main(structure, work_directory, failure_directory, library, csdrefcode, forc parser.error('%s - library not found.' % args.coformer_library) main(args.input_structure, args.directory, args.failure_directory, args.coformer_library, refcode, - args.force_run_disordered) + args.ignore_intra, args.force_run_disordered) From 28f8b6626fb9ac410fe357c06de0c3712afd76ab Mon Sep 17 00:00:00 2001 From: Pablo Martinez Bulit Date: Thu, 10 Apr 2025 17:49:46 +0100 Subject: [PATCH 2/4] Count back to 500 NO_JIRA --- .../multi_component_hydrogen_bond_propensity_report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.py b/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.py index f42d0ee..cbfff86 100644 --- a/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.py +++ b/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.py @@ -81,7 +81,7 @@ def calculate(self): print(self.hbp.functional_groups) # Generate Training Dataset - self.hbp.match_fitting_data(count=50) # set to 500 for better representation of functional groups + self.hbp.match_fitting_data(count=500) # set to 500 for better representation of functional groups self.hbp.analyse_fitting_data() From 3d3dc59c00d6581dee4047dac8b591a312a3eefd Mon Sep 17 00:00:00 2001 From: Pablo Martinez Bulit Date: Fri, 11 Apr 2025 09:51:39 +0100 Subject: [PATCH 3/4] AM suggestion and added flag to Word template NO_JIRA --- ...onent_hydrogen_bond_propensity_report.docx | Bin 16809 -> 17461 bytes ...mponent_hydrogen_bond_propensity_report.py | 18 +++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.docx b/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.docx index 077b2640bd902cd2ec5429ddafa11b5957b164ab..99512e69a4d4d0aac2f54bffc0651b444cb474eb 100644 GIT binary patch delta 10907 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 y*Ue`24HOi{zw}p&O#s3rCI~Af3;D7!($-l3 delta 10265 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 Mv%YB;{7d-%0PK{i5dZ)H diff --git a/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.py b/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.py index cbfff86..a13dfa0 100644 --- a/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.py +++ b/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.py @@ -196,16 +196,21 @@ def get_mc_scores(propensities, identifier, ignore_intra:bool): BB_propensities = [] AB_propensities = [] BA_propensities = [] - - if ignore_intra is True: - propensities = [p for p in propensities if p.is_intermolecular] + AA_intra_propensities = [] + BB_intra_propensities = [] for p in propensities: + if ignore_intra and not p.is_intermolecular: + continue t = "%s_d" % p.donor_label.split(" ")[0], "%s_a" % p.acceptor_label.split(" ")[0] if '_A_' in t[0] and '_A_' in t[1]: AA_propensities.append(p.propensity) + if not p.is_intermolecular: + AA_intra_propensities.append(p.propensity) elif '_B_' in t[0] and '_B_' in t[1]: BB_propensities.append(p.propensity) + if not p.is_intermolecular: + BB_intra_propensities.append(p.propensity) elif '_A_' in t[0] and '_B_' in t[1]: AB_propensities.append(p.propensity) elif '_B_' in t[0] and '_A_' in t[1]: @@ -215,10 +220,13 @@ def get_mc_scores(propensities, identifier, ignore_intra:bool): max_AB = max(AB_propensities) if len(AB_propensities) > 0 else 0.0 max_BA = max(BA_propensities) if len(BA_propensities) > 0 else 0.0 max_list = [max_AA, max_BB, max_AB, max_BA] - max_keys = ['A:A', 'B:B', 'A:B', 'B:A'] max_mc = max(max_list[2], max_list[3]) max_sc = max(max_list[0], max_list[1]) + max_keys = ['A:A*', 'B:B*', 'A:B', 'B:A'] if max_sc in AA_intra_propensities or max_sc in BB_intra_propensities \ + else ['A:A', 'B:B', 'A:B', 'B:A'] + + return [round((max_mc - max_sc), 2), max_keys[max_list.index(max(max_list))], round(max_mc, 2), @@ -431,7 +439,7 @@ def main(structure, work_directory, failure_directory, library, csdrefcode, igno default=ccdc_coformers_dir) parser.add_argument('-f', '--failure_directory', type=str, help='The location where the failures file should be generated') - parser.add_argument('-i', '--ignore_intra', action='store_true', default='False', + parser.add_argument('-i', '--ignore_intra', action='store_true', default=False, help='Ignore intramolecular hydrogen bonds when ranking pairs') parser.add_argument('--force_run_disordered', action="store_true", help='Forces running the script on disordered entries. (NOT RECOMMENDED)', default=False) From 5ec4aa427b68a70009f1285faee7e0796ccb7537 Mon Sep 17 00:00:00 2001 From: Pablo Martinez Bulit Date: Fri, 11 Apr 2025 10:10:15 +0100 Subject: [PATCH 4/4] Arg type hint NO_JIRA --- .../multi_component_hydrogen_bond_propensity_report.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.py b/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.py index a13dfa0..c3c5a18 100644 --- a/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.py +++ b/scripts/multi_component_hydrogen_bond_propensity/multi_component_hydrogen_bond_propensity_report.py @@ -226,7 +226,6 @@ def get_mc_scores(propensities, identifier, ignore_intra:bool): max_keys = ['A:A*', 'B:B*', 'A:B', 'B:A'] if max_sc in AA_intra_propensities or max_sc in BB_intra_propensities \ else ['A:A', 'B:B', 'A:B', 'B:A'] - return [round((max_mc - max_sc), 2), max_keys[max_list.index(max(max_list))], round(max_mc, 2), @@ -439,7 +438,7 @@ def main(structure, work_directory, failure_directory, library, csdrefcode, igno default=ccdc_coformers_dir) parser.add_argument('-f', '--failure_directory', type=str, help='The location where the failures file should be generated') - parser.add_argument('-i', '--ignore_intra', action='store_true', default=False, + parser.add_argument('-i', '--ignore_intra', type=bool, action='store_true', default=False, help='Ignore intramolecular hydrogen bonds when ranking pairs') parser.add_argument('--force_run_disordered', action="store_true", help='Forces running the script on disordered entries. (NOT RECOMMENDED)', default=False)