From 9421845a4bc0b774a5aecbf6b3dbe5057eb4d661 Mon Sep 17 00:00:00 2001 From: Sihyun Jeon Date: Fri, 13 Oct 2023 14:02:38 -0400 Subject: [PATCH 01/10] adding proc cards --- madgraph_gridpack.py | 21 ++++++++++++++++++++- main.py | 29 ++++++++++++++++++++++------- powheg_gridpack.py | 32 +++++++++++++++++++------------- 3 files changed, 61 insertions(+), 21 deletions(-) diff --git a/madgraph_gridpack.py b/madgraph_gridpack.py index d5326f0..18dac74 100644 --- a/madgraph_gridpack.py +++ b/madgraph_gridpack.py @@ -8,7 +8,7 @@ class MadgraphGridpack(Gridpack): def prepare_default_card(self): """ - Copy default cards to local directory + Copy default cards to local directory : proc_card.dat and madspin_card.dat """ cards_path = self.get_cards_path() job_files_path = self.get_job_files_path() @@ -17,6 +17,25 @@ def prepare_default_card(self): if glob.glob(f'{cards_path}/*_cuts.f'): os.system(f'cp {cards_path}/*_cuts.f {job_files_path}') + + def get_proc_card(self): + """ + Read proc card + Glue madspin card if it exists + """ + if glob.glob(f'{cards_path}/*_proc_card.dat'): + with open(f'{cards_path}/*_proc_card.dat') as input_file: + proc_card = input_file.read() + else: + raise Exception(f'Could not find {path} as hadronizer') + + if glob.glob(f'{cards_path}/*_madspin_card.dat'): + with open(f'{cards_path}/*_madpsin_card.dat') as input_file: + madspin_card = input_file.read() + + return proc_card + '\n\n\n\n' + madspin_card + + def get_run_card(self): """ Get cards from "Template" directory and customize them diff --git a/main.py b/main.py index 343e586..6735134 100644 --- a/main.py +++ b/main.py @@ -258,10 +258,10 @@ def get_gridpacks(): return output_text([gridpacks, count]) -@app.route('/api/get_fragment/') -def get_fragment(gridpack_id): +@app.route('/api/get_run_card/') +def get_proc_card(gridpack_id): """ - API to get gridpack's fragment + API to get gridpack's run card """ database = Database() gridpack_json = database.get_gridpack(gridpack_id) @@ -269,10 +269,8 @@ def get_fragment(gridpack_id): return output_text({'message': 'Gridpack not found'}, code=404) gridpack = Gridpack.make(gridpack_json) - fragment_builder = FragmentBuilder() - fragment = fragment_builder.build_fragment(gridpack) - - return output_text(fragment, headers={'Content-Type': 'text/plain'}) + content = gridpack.get_proc_card() + return output_text(content, headers={'Content-Type': 'text/plain'}) @app.route('/api/get_run_card/') @@ -305,6 +303,23 @@ def get_customize_card(gridpack_id): return output_text(content, headers={'Content-Type': 'text/plain'}) +@app.route('/api/get_fragment/') +def get_fragment(gridpack_id): + """ + API to get gridpack's fragment + """ + database = Database() + gridpack_json = database.get_gridpack(gridpack_id) + if not gridpack_json: + return output_text({'message': 'Gridpack not found'}, code=404) + + gridpack = Gridpack.make(gridpack_json) + fragment_builder = FragmentBuilder() + fragment = fragment_builder.build_fragment(gridpack) + + return output_text(fragment, headers={'Content-Type': 'text/plain'}) + + def user_info_dict(): """ Get user name, login, email and authorized flag from request headers diff --git a/powheg_gridpack.py b/powheg_gridpack.py index 8aca2c2..c2c075e 100644 --- a/powheg_gridpack.py +++ b/powheg_gridpack.py @@ -7,9 +7,7 @@ class PowhegGridpack(Gridpack): def get_run_card(self): """ - Get cards from "Template" directory and customize them - Get cards from "ModelParams" directory and customize them - Glue them together + Get cards from "Template" directory and customize them (run card) """ dataset_dict = self.get_dataset_dict() campaign_dict = self.get_campaign_dict() @@ -24,6 +22,14 @@ def get_run_card(self): dataset_dict.get('template_user', []), template_vars) + return run_card + '\n\n' + + def get_customize_card2(self) + """ + Get cards from "ModelParams" directory and customize them (customize card) + """ + dataset_dict = self.get_dataset_dict() + campaign_dict = self.get_campaign_dict() model_params_path = self.get_model_params_path() model_params_name = dataset_dict['model_params'] model_params_vars = dataset_dict.get('model_params_vars', []) @@ -33,7 +39,7 @@ def get_run_card(self): dataset_dict.get('model_params_user', []), model_params_vars) - return run_card + '\n' + customize_card + return customize_card def prepare_run_card(self): """ @@ -41,13 +47,13 @@ def prepare_run_card(self): """ job_files_path = self.get_job_files_path() output_file_name = os.path.join(job_files_path, 'powheg.input') - run_card = self.get_run_card() + run_card = self.get_run_card() + self.get_customize_card() self.logger.debug('Writing customized run card %s', output_file_name) self.logger.debug(run_card) with open(output_file_name, 'w') as output_file: output_file.write(run_card) - def get_customize_card(self): + def get_proc_card(self): """ Create card with just the process name for proper Powheg gridpack production @@ -56,17 +62,17 @@ def get_customize_card(self): template_name = dataset_dict['template'] return template_name.split('.', 1)[0] - def prepare_customize_card(self): + def prepare_proc_card(self): """ - Get customize card and write it to job files dir + Get proc card and write it to job files dir """ job_files_path = self.get_job_files_path() output_file_name = os.path.join(job_files_path, 'process.dat') - customize_card = self.get_customize_card() - self.logger.debug('Writing customized card %s', output_file_name) - self.logger.debug(customize_card) + proc_card = self.get_proc_card() + self.logger.debug('Writing proc card %s', output_file_name) + self.logger.debug(proc_card) with open(output_file_name, 'w') as output_file: - output_file.write(customize_card) + output_file.write(proc_card) def prepare_job_archive(self): """ @@ -75,6 +81,6 @@ def prepare_job_archive(self): job_files_path = self.get_job_files_path() pathlib.Path(job_files_path).mkdir(parents=True, exist_ok=True) self.prepare_run_card() - self.prepare_customize_card() + self.prepare_proc_card() local_dir = self.local_dir() os.system(f'tar -czvf {local_dir}/input_files.tar.gz -C {local_dir} input_files') From c69fbff8c4dc962f9e967aeae09b32163ffa6145 Mon Sep 17 00:00:00 2001 From: Sihyun Jeon Date: Fri, 13 Oct 2023 14:05:24 -0400 Subject: [PATCH 02/10] fix possible bug --- madgraph_gridpack.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/madgraph_gridpack.py b/madgraph_gridpack.py index 18dac74..d7f96c3 100644 --- a/madgraph_gridpack.py +++ b/madgraph_gridpack.py @@ -31,9 +31,9 @@ def get_proc_card(self): if glob.glob(f'{cards_path}/*_madspin_card.dat'): with open(f'{cards_path}/*_madpsin_card.dat') as input_file: - madspin_card = input_file.read() + proc_card += '\n\n\n\n' + input_file.read() - return proc_card + '\n\n\n\n' + madspin_card + return proc_card def get_run_card(self): From 04ff1b87403a13b6fe30cc2e18982c60f68450ba Mon Sep 17 00:00:00 2001 From: Sihyun Jeon Date: Fri, 13 Oct 2023 14:07:32 -0400 Subject: [PATCH 03/10] fix text --- madgraph_gridpack.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/madgraph_gridpack.py b/madgraph_gridpack.py index d7f96c3..dc8d604 100644 --- a/madgraph_gridpack.py +++ b/madgraph_gridpack.py @@ -21,13 +21,13 @@ def prepare_default_card(self): def get_proc_card(self): """ Read proc card - Glue madspin card if it exists + Glue madspin card if it exists """ if glob.glob(f'{cards_path}/*_proc_card.dat'): with open(f'{cards_path}/*_proc_card.dat') as input_file: proc_card = input_file.read() else: - raise Exception(f'Could not find {path} as hadronizer') + raise Exception(f'Could not find {cards_path} as process card') if glob.glob(f'{cards_path}/*_madspin_card.dat'): with open(f'{cards_path}/*_madpsin_card.dat') as input_file: From 843b67e82745d8237b682c583d8a1fa23e5f8466 Mon Sep 17 00:00:00 2001 From: Sihyun Jeon Date: Fri, 13 Oct 2023 14:10:48 -0400 Subject: [PATCH 04/10] add madspin banner --- madgraph_gridpack.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/madgraph_gridpack.py b/madgraph_gridpack.py index dc8d604..b7d1ed3 100644 --- a/madgraph_gridpack.py +++ b/madgraph_gridpack.py @@ -31,7 +31,8 @@ def get_proc_card(self): if glob.glob(f'{cards_path}/*_madspin_card.dat'): with open(f'{cards_path}/*_madpsin_card.dat') as input_file: - proc_card += '\n\n\n\n' + input_file.read() + proc_card += '\n\n\n\n\n\n#### madspin_card.dat\n' + proc_card += input_file.read() return proc_card From c69a683771a3301b6c4d47cca7e8acfd9f2869a9 Mon Sep 17 00:00:00 2001 From: Sihyun Jeon Date: Fri, 13 Oct 2023 14:12:30 -0400 Subject: [PATCH 05/10] fix typo --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.py b/main.py index 6735134..f7dbdcd 100644 --- a/main.py +++ b/main.py @@ -261,7 +261,7 @@ def get_gridpacks(): @app.route('/api/get_run_card/') def get_proc_card(gridpack_id): """ - API to get gridpack's run card + API to get gridpack's proc card """ database = Database() gridpack_json = database.get_gridpack(gridpack_id) From 442d00c6ffa97defd269417d97a47e58147208ed Mon Sep 17 00:00:00 2001 From: Sihyun Jeon Date: Fri, 13 Oct 2023 14:13:17 -0400 Subject: [PATCH 06/10] fix typo --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.py b/main.py index f7dbdcd..0f33ed9 100644 --- a/main.py +++ b/main.py @@ -258,7 +258,7 @@ def get_gridpacks(): return output_text([gridpacks, count]) -@app.route('/api/get_run_card/') +@app.route('/api/get_proc_card/') def get_proc_card(gridpack_id): """ API to get gridpack's proc card From b1957c786c06fe512b17cc973c1c024e2be87cf0 Mon Sep 17 00:00:00 2001 From: Sihyun Jeon Date: Fri, 13 Oct 2023 14:19:33 -0400 Subject: [PATCH 07/10] fix typo --- powheg_gridpack.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powheg_gridpack.py b/powheg_gridpack.py index c2c075e..612dfcc 100644 --- a/powheg_gridpack.py +++ b/powheg_gridpack.py @@ -24,7 +24,7 @@ def get_run_card(self): return run_card + '\n\n' - def get_customize_card2(self) + def get_customize_card(self) """ Get cards from "ModelParams" directory and customize them (customize card) """ From ceecf1042846b9df6ec2e3c8cad382c99fc6becf Mon Sep 17 00:00:00 2001 From: Sihyun Jeon Date: Fri, 13 Oct 2023 14:21:05 -0400 Subject: [PATCH 08/10] add indent in different place --- powheg_gridpack.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/powheg_gridpack.py b/powheg_gridpack.py index 612dfcc..1c028f6 100644 --- a/powheg_gridpack.py +++ b/powheg_gridpack.py @@ -22,7 +22,7 @@ def get_run_card(self): dataset_dict.get('template_user', []), template_vars) - return run_card + '\n\n' + return run_card def get_customize_card(self) """ @@ -47,7 +47,7 @@ def prepare_run_card(self): """ job_files_path = self.get_job_files_path() output_file_name = os.path.join(job_files_path, 'powheg.input') - run_card = self.get_run_card() + self.get_customize_card() + run_card = self.get_run_card() + '\n\n\n\n' + self.get_customize_card() self.logger.debug('Writing customized run card %s', output_file_name) self.logger.debug(run_card) with open(output_file_name, 'w') as output_file: From c70610a45d83e1700d13da4cc4985d2bb25ff9ce Mon Sep 17 00:00:00 2001 From: Sihyun Jeon Date: Fri, 13 Oct 2023 14:23:40 -0400 Subject: [PATCH 09/10] rename run_card to input_card --- powheg_gridpack.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/powheg_gridpack.py b/powheg_gridpack.py index 1c028f6..8f6aacc 100644 --- a/powheg_gridpack.py +++ b/powheg_gridpack.py @@ -41,17 +41,17 @@ def get_customize_card(self) return customize_card - def prepare_run_card(self): + def prepare_input_card(self): """ - Get run card and write it to job files dir + Get run card and cusomize card, glue them together into input card and write it to job files dir """ job_files_path = self.get_job_files_path() output_file_name = os.path.join(job_files_path, 'powheg.input') - run_card = self.get_run_card() + '\n\n\n\n' + self.get_customize_card() - self.logger.debug('Writing customized run card %s', output_file_name) - self.logger.debug(run_card) + input_card = self.get_run_card() + '\n\n\n\n' + self.get_customize_card() + self.logger.debug('Writing customized input card %s', output_file_name) + self.logger.debug(input_card) with open(output_file_name, 'w') as output_file: - output_file.write(run_card) + output_file.write(input_card) def get_proc_card(self): """ @@ -80,7 +80,7 @@ def prepare_job_archive(self): """ job_files_path = self.get_job_files_path() pathlib.Path(job_files_path).mkdir(parents=True, exist_ok=True) - self.prepare_run_card() + self.prepare_input_card() self.prepare_proc_card() local_dir = self.local_dir() os.system(f'tar -czvf {local_dir}/input_files.tar.gz -C {local_dir} input_files') From 028bc18c55bc5df20699d67e4c30238610dad30e Mon Sep 17 00:00:00 2001 From: Sihyun Jeon Date: Fri, 13 Oct 2023 14:24:51 -0400 Subject: [PATCH 10/10] fix typo --- powheg_gridpack.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powheg_gridpack.py b/powheg_gridpack.py index 8f6aacc..64ef9a9 100644 --- a/powheg_gridpack.py +++ b/powheg_gridpack.py @@ -43,7 +43,7 @@ def get_customize_card(self) def prepare_input_card(self): """ - Get run card and cusomize card, glue them together into input card and write it to job files dir + Get run card and customize card, glue them together into input card and write it to job files dir """ job_files_path = self.get_job_files_path() output_file_name = os.path.join(job_files_path, 'powheg.input')