diff --git a/src/outils.py b/src/outils.py index 5c3e7c6c3b8aff35f8fa9286fcb5ab06ae3507c6..0570b0b89cb2f46ce712bd7e51c364e2e2b87d48 100644 --- a/src/outils.py +++ b/src/outils.py @@ -1053,7 +1053,29 @@ def process_2_DSL2(code): code = re.sub(r'file( | *\()', replace_file_by_path, code) code = re.sub(r'set( | *\()', replace_set_by_tuple, code) - return add_vals_when_necessary(code) + return remove_parentheses_after_thing(add_vals_when_necessary(code)) + +#This function removes the parentheses after a path or a tuple +#For example tuple (val(sample_id), path ('*_trimmed.fq.gz')), emit: (se_aln_ch) becomes tuple val(sample_id), path ('*_trimmed.fq.gz'), emit: (se_aln_ch) +def remove_parentheses_after_thing(line): + line_OG = line + line = line.strip() + for match in re.finditer(r"(tuple|path) *\(", line): + start, end= match.span(0) + if(start==0): + temp = end+1 + parentheses_count = 1 + while(temp<len(line)): + if(line[temp]=='('): + parentheses_count+=1 + if(line[temp]==')'): + parentheses_count-=1 + if(parentheses_count==0): + break + temp+=1 + line_OG = line_OG.replace(line[start:temp+1], line[start:end-1]+" "+line[end:temp]) + break + return line_OG #Function that adds vals around variables in a tuple def add_vals_when_necessary(line): diff --git a/src/process.py b/src/process.py index 83b0ef4e84185a759bbfbf6c19a1aa9246450a5c..522a02afde4f967080aad36e1546fc9182a5a9ff 100644 --- a/src/process.py +++ b/src/process.py @@ -567,7 +567,7 @@ class Process(Nextflow_Building_Blocks): def convert_input_code_to_DSL2(self): code = self.input_code - code = process_2_DSL2(code) + #code = process_2_DSL2(code) lines = [] for line in code.split("\n"): temp = process_2_DSL2(line.split(" from ")[0]) diff --git a/src/workflow.py b/src/workflow.py index 570f00561a28e6d56114a719ab31ba029b3d1f1d..4e6c72843701cc078a0f951a1d9c0f9ec387690d 100644 --- a/src/workflow.py +++ b/src/workflow.py @@ -718,13 +718,14 @@ George Marchment, Bryan Brancotte, Marie Schmit, Frédéric Lemoine, Sarah Cohen code = code.replace(code_to_replace, f"""{start_code}\n\n\n{include_section}\n\n\n{params_section}\n\n\n{function_section}\n\n\n{process_section}\n\n\nworkflow{{\n\n{body}\n}}\n\n""") - params_list = [] - for match in re.finditer(r"params.\w+ *\= *[^\n=]([^\n])*", code): - params_list.append(match.group(0)) - for params in params_list: - code = code.replace(params, "") - params_code = "\n".join(params_list) - code = code.replace(params_section, params_code) + ##I've out this in a comment cause since it's a DSL1 + #params_list = [] + #for match in re.finditer(r"params.\w+ *\= *[^\n=]([^\n])*", code): + # params_list.append(match.group(0)) + #for params in params_list: + # code = code.replace(params, "") + #params_code = "\n".join(params_list) + #code = code.replace(params_section, params_code) #Moving Functions functions = []