From 19de4648363b6be2044877a530a5b719b0826764 Mon Sep 17 00:00:00 2001 From: George Marchment <georgemarchment@yahoo.fr> Date: Tue, 25 Mar 2025 15:25:30 +0100 Subject: [PATCH] Add initialise condition for the code -> so it doesn't initialises every time (only one when you do the file) --- src/call.py | 2 +- src/code_.py | 7 ++++--- src/executor.py | 2 +- src/function.py | 2 +- src/include.py | 2 +- src/main.py | 2 +- src/nextflow_building_blocks.py | 4 ++-- src/nextflow_file.py | 4 +++- src/operation.py | 4 ++-- src/process.py | 2 +- src/root.py | 2 +- src/subworkflow.py | 28 ++++++++++++++-------------- 12 files changed, 32 insertions(+), 29 deletions(-) diff --git a/src/call.py b/src/call.py index 6a03975..8873b57 100644 --- a/src/call.py +++ b/src/call.py @@ -14,7 +14,7 @@ from . import constant class Call(Executor): def __init__(self, code, origin, OG_code = ''): - self.code = Code(code = code, origin = self) + self.code = Code(code = code, origin = self, initialise=False) self.origin = origin self.called = [] self.first_element_called = None diff --git a/src/code_.py b/src/code_.py index 7f529f7..295f564 100644 --- a/src/code_.py +++ b/src/code_.py @@ -4,11 +4,12 @@ import re from . import constant class Code: - def __init__(self, code, origin): + def __init__(self, code, origin, initialise): self.code = code - self.code_wo_comments = "" + self.code_wo_comments = code self.origin = origin - self.initialise() + if(initialise): + self.initialise() #self.check_its_nextflow() diff --git a/src/executor.py b/src/executor.py index 0073716..dca03da 100644 --- a/src/executor.py +++ b/src/executor.py @@ -19,7 +19,7 @@ from .bioflowinsighterror import BioFlowInsightError class Executor(Nextflow_Building_Blocks): def __init__(self, code, origin): self.origin = origin - self.code = Code(code = code, origin = self) + self.code = Code(code = code, origin = self, initialise=False) diff --git a/src/function.py b/src/function.py index 0d04135..8e1a3a4 100644 --- a/src/function.py +++ b/src/function.py @@ -7,7 +7,7 @@ from .nextflow_building_blocks import Nextflow_Building_Blocks class Function(Nextflow_Building_Blocks): def __init__(self, code, name, origin): self.origin = origin - self.code = Code(code, origin = self) + self.code = Code(code, origin = self, initialise=False) self.name = name self.alias = name diff --git a/src/include.py b/src/include.py index e2ee93f..39627e1 100644 --- a/src/include.py +++ b/src/include.py @@ -23,7 +23,7 @@ class Include(Nextflow_Building_Blocks): def __init__(self, code, file, importing, nextflow_file): self.nextflow_file_origin = nextflow_file self.importing = importing - self.code = Code(code = code, origin = self) + self.code = Code(code = code, origin = self, initialise=False) self.nextflow_file = None self.define_file(file) self.defines = {} diff --git a/src/main.py b/src/main.py index 477c0b5..7f1f38b 100644 --- a/src/main.py +++ b/src/main.py @@ -10,7 +10,7 @@ from . import constant class Main(Nextflow_Building_Blocks): def __init__(self, code, nextflow_file): - Nextflow_Building_Blocks.__init__(self, code) + Nextflow_Building_Blocks.__init__(self, code, initialise_code=False) self.nextflow_file = nextflow_file self.initialised = False self.root = None diff --git a/src/nextflow_building_blocks.py b/src/nextflow_building_blocks.py index 0dc2e69..aba604f 100644 --- a/src/nextflow_building_blocks.py +++ b/src/nextflow_building_blocks.py @@ -11,8 +11,8 @@ from .bioflowinsighterror import BioFlowInsightError class Nextflow_Building_Blocks: - def __init__(self, code): - self.code = Code(code = code, origin = self) + def __init__(self, code, initialise_code): + self.code = Code(code = code, origin = self, initialise=initialise_code) #--------------------------------- #AUXILIARY METHODS FOR ALL CLASSES diff --git a/src/nextflow_file.py b/src/nextflow_file.py index 824b613..c4dfcd8 100644 --- a/src/nextflow_file.py +++ b/src/nextflow_file.py @@ -33,7 +33,7 @@ class Nextflow_File(Nextflow_Building_Blocks): self.functions = [] self.initialised = False contents = check_file_exists(self.get_file_address(), self) - Nextflow_Building_Blocks.__init__(self, contents) + Nextflow_Building_Blocks.__init__(self, contents, initialise_code=True) self.check_file_correctness() #---------------------- @@ -338,6 +338,8 @@ class Nextflow_File(Nextflow_Building_Blocks): temp = code code = code.replace(proecess.get_code(), "") if(temp==code): + print(code) + print(proecess.get_code()) raise Exception("This souldn't happen") diff --git a/src/operation.py b/src/operation.py index 3b2b9ff..82b697b 100644 --- a/src/operation.py +++ b/src/operation.py @@ -18,7 +18,7 @@ from . import constant class Operation(Executor): def __init__(self, code, origin, OG_code = ''): self.origin = origin - self.code = Code(code, origin = self) + self.code = Code(code, origin = self, initialise=False) self.origins = [] self.gives = [] self.label = "" @@ -33,7 +33,7 @@ class Operation(Executor): def change_code(self, code): self.OG_code = self.get_code() - self.code = Code(code, origin = self) + self.code = Code(code, origin = self, initialise=False) def set_as_artificial(self): self.artificial = True diff --git a/src/process.py b/src/process.py index c82cac1..f54bbd0 100644 --- a/src/process.py +++ b/src/process.py @@ -13,7 +13,7 @@ from . import constant class Process(Nextflow_Building_Blocks): def __init__(self, code, nextflow_file): self.nextflow_file = nextflow_file - self.code = Code(code, origin = self) + self.code = Code(code, origin = self, initialise=False) #Origin is only used in the case DSL1 self.origin = None self.name = "" diff --git a/src/root.py b/src/root.py index 60c76ee..f5306bb 100644 --- a/src/root.py +++ b/src/root.py @@ -11,7 +11,7 @@ import re class Root(Nextflow_Building_Blocks): def __init__(self, code, origin, modules_defined, subworkflow_inputs = []):#These channels are the inputs of the subworkflow - Nextflow_Building_Blocks.__init__(self, code) + Nextflow_Building_Blocks.__init__(self, code, initialise_code=False) self.origin = origin self.executors = [] self.blocks = [] diff --git a/src/subworkflow.py b/src/subworkflow.py index ad6b204..8c4c057 100644 --- a/src/subworkflow.py +++ b/src/subworkflow.py @@ -165,13 +165,13 @@ class Subworkflow(Main): #Case everything is there if(take_pos!=(0, 0) and main_pos!=(0, 0) and emit_pos!=(0, 0)): if(take_pos[0]<main_pos[0] and main_pos[0]<emit_pos[0]): - self.take = Code(code[take_pos[1]:main_pos[0]].strip(), origin = self) - self.work = Code(code[main_pos[1]:emit_pos[0]].strip(), origin = self) - self.emit = Code(code[emit_pos[1]:code.rfind('}')].strip(), origin = self) + self.take = Code(code[take_pos[1]:main_pos[0]].strip(), origin = self, initialise=False) + self.work = Code(code[main_pos[1]:emit_pos[0]].strip(), origin = self, initialise=False) + self.emit = Code(code[emit_pos[1]:code.rfind('}')].strip(), origin = self, initialise=False) elif(take_pos[0]<emit_pos[0] and emit_pos[0]<main_pos[0]): - self.take = Code(code[take_pos[1]:emit_pos[0]].strip(), origin = self) - self.emit = Code(code[emit_pos[1]:main_pos[0]].strip(), origin = self) - self.work = Code(code[main_pos[1]:code.rfind('}')].strip(), origin = self) + self.take = Code(code[take_pos[1]:emit_pos[0]].strip(), origin = self, initialise=False) + self.emit = Code(code[emit_pos[1]:main_pos[0]].strip(), origin = self, initialise=False) + self.work = Code(code[main_pos[1]:code.rfind('}')].strip(), origin = self, initialise=False) else: raise Exception('You need to add a case') #Case nothing is there @@ -179,33 +179,33 @@ class Subworkflow(Main): #raise Exception(f"Subworkflow {code} doesn't have anything defined") firt_curly = code.find("{") last_curly = code.rfind('}') - self.work = Code(code[firt_curly+1:last_curly], origin = self) + self.work = Code(code[firt_curly+1:last_curly], origin = self, initialise=False) #Case there is an input but no output if(take_pos!=(0, 0) and main_pos!=(0, 0) and emit_pos==(0, 0)): if(take_pos[0]<main_pos[0]): - self.take = Code(code[take_pos[1]:main_pos[0]].strip(), origin = self) - self.work = Code(code[main_pos[1]:code.rfind('}')].strip(), origin = self) + self.take = Code(code[take_pos[1]:main_pos[0]].strip(), origin = self, initialise=False) + self.work = Code(code[main_pos[1]:code.rfind('}')].strip(), origin = self, initialise=False) else: raise Exception('You need to add a case') #Case there is no input but an output if(take_pos==(0, 0) and main_pos!=(0, 0) and emit_pos!=(0, 0)): if(main_pos[0]<emit_pos[0]): - self.work = Code(code[main_pos[1]:emit_pos[0]].strip(), origin = self) - self.emit = Code(code[emit_pos[1]:code.rfind('}')].strip(), origin = self) + self.work = Code(code[main_pos[1]:emit_pos[0]].strip(), origin = self, initialise=False) + self.emit = Code(code[emit_pos[1]:code.rfind('}')].strip(), origin = self, initialise=False) else: raise Exception('You need to add a case') #Case there is a main but no input and no output if(take_pos==(0, 0) and main_pos!=(0, 0) and emit_pos==(0, 0)): - self.work = Code(code[main_pos[1]:code.rfind('}')].strip(), origin = self) + self.work = Code(code[main_pos[1]:code.rfind('}')].strip(), origin = self, initialise=False) if( main_pos==(0, 0) and (take_pos!=(0, 0) or emit_pos!=(0, 0))): if(take_pos!=(0, 0) and emit_pos!=(0, 0)): raise Exception("TODO") elif(take_pos!=(0, 0) and emit_pos==(0, 0)): raise Exception("TODO") elif(take_pos==(0, 0) and emit_pos!=(0, 0)): - self.emit = Code(code[emit_pos[1]:code.rfind('}')].strip(), origin = self) + self.emit = Code(code[emit_pos[1]:code.rfind('}')].strip(), origin = self, initialise=False) firt_curly = code.find("{") - self.work = Code(code[firt_curly+1:emit_pos[0]].strip(), origin = self) + self.work = Code(code[firt_curly+1:emit_pos[0]].strip(), origin = self, initialise=False) else: raise Exception("Not possible!") -- GitLab