From ffff3de3585e79e0d7be82be021a9d9eb047a178 Mon Sep 17 00:00:00 2001
From: "sukanya.denni" <sukanya.denni@inrae.fr>
Date: Thu, 10 Aug 2023 14:26:39 +0200
Subject: [PATCH 1/5] added path helper

---
 workflow/Snakefile                         | 17 +++++++----
 workflow/pre-job_snakefiles/Snakefile1.smk | 16 +++++++---
 workflow/pre-job_snakefiles/Snakefile2.smk | 32 ++++++++++++--------
 workflow/pre-job_snakefiles/Snakefile3.smk | 19 ++++++++----
 workflow/rules/00_runtime.smk              |  6 +---
 workflow/rules/01_qc.smk                   |  2 +-
 workflow/rules/02_asm.smk                  | 34 +++++++++++-----------
 workflow/rules/03_asm_qc.smk               |  2 +-
 workflow/rules/07_report.smk               |  2 +-
 workflow/scripts/path_helper.py            | 13 +++++++++
 10 files changed, 91 insertions(+), 52 deletions(-)
 create mode 100644 workflow/scripts/path_helper.py

diff --git a/workflow/Snakefile b/workflow/Snakefile
index 538fbba..6bc7660 100644
--- a/workflow/Snakefile
+++ b/workflow/Snakefile
@@ -1,13 +1,21 @@
 configfile: ".config/masterconfig.yaml"
 
-res_path=config["root"] + "/" + config["resdir"]
-
 ###### Include all scripts & rules necessary to run the workflow ######
 ### Scripts
 # get parameters from masterconfig
 include: "scripts/from_config/hifiasm_mode.py"
 include: "scripts/from_config/parameters.py"
 include: "scripts/from_config/target_list.py"
+include: "scripts/path_helper.py"
+
+### paths
+if config["root"].startswith("."):
+    abs_root_path = get_abs_root_path()
+    res_path = get_res_path()
+else:
+    abs_root_path = config["root"]
+    res_path = abs_root_path + "/" + config["resdir"]
+
 
 ### Rules
 ## PRE ASSEMBLY QC
@@ -16,11 +24,11 @@ include: "rules/01_qc.smk"
 include: "rules/02_asm.smk"
 # Statistics
 include: "rules/03_asm_qc.smk"
-include: "rules/03.5_A_qc_merqury.smk"
+include: "rules/03.5_asm_qc_merqury.smk"
 # Purging
 include: "rules/04_purge_dups.smk"
 include: "rules/05_purged_asm_qc.smk"
-include: "rules/05.5_PA_qc_merqury.smk"
+include: "rules/05.5_purged_asm_qc_merqury.smk"
 # Link final assembly
 include: "rules/06_sym_link_hap.smk"
 ## AUTOMATIC REPORT
@@ -39,7 +47,6 @@ BID_RUN = run_BFid(bamIDS)
 FID_RUN = run_BFid(fastqIDS)
 
 ###### results path ######
-res_path=config["root"] + "/" + config["resdir"]
 
 ###### Target files ######
 ## raw data stats
diff --git a/workflow/pre-job_snakefiles/Snakefile1.smk b/workflow/pre-job_snakefiles/Snakefile1.smk
index 3314ac7..da27514 100644
--- a/workflow/pre-job_snakefiles/Snakefile1.smk
+++ b/workflow/pre-job_snakefiles/Snakefile1.smk
@@ -29,6 +29,15 @@ def data_ext(dir, id):
                 return(str(config["data"] + "/{id}.tar.gz"))
 
 ######################## Snakemake ########################
+
+### paths
+if config["root"].startswith("."):
+    abs_root_path = get_abs_root_path()
+    res_path = get_res_path()
+else:
+    abs_root_path = config["root"]
+    res_path = abs_root_path + "/" + config["resdir"]
+
 ### get filenames for workflow
 if config["get_all_tar_filename"]:
     IDS=get_tar_name(config["data"])
@@ -36,7 +45,6 @@ else:
     IDS=config["tarIDS"]
 
 ###### results path ######
-res_path=config["root"] + "/" + config["resdir"]
 
 ### target files
 rule all:
@@ -60,9 +68,9 @@ rule extract_targz_data:
 # move bam and fasta + fastq files
 rule move_files:
     params:
-        root=config["root"],
-        bam_path=config["root"] + "/" + config["resdir"] + "/" + config["bamdir"],
-        fastx_path=config["root"] + "/" + config["resdir"] + "/" + config["fastxdir"],
+        root=abs_root_path,
+        bam_path=abs_root_path + "/" + config["resdir"] + "/" + config["bamdir"],
+        fastx_path=abs_root_path + "/" + config["resdir"] + "/" + config["fastxdir"],
     shell:
         "cd {params.root} && "
         "mkdir -p {params.bam_path} {params.fastx_path} && "
diff --git a/workflow/pre-job_snakefiles/Snakefile2.smk b/workflow/pre-job_snakefiles/Snakefile2.smk
index b55585c..1dfcd0d 100644
--- a/workflow/pre-job_snakefiles/Snakefile2.smk
+++ b/workflow/pre-job_snakefiles/Snakefile2.smk
@@ -14,26 +14,34 @@ def get_bams_name(dirpath):
     return(IDS)
 
 ######################## Snakemake ########################
+
+### root path
+if config["root"].startswith("."):
+    abs_root_path = get_abs_root_path()
+    res_path = get_res_path()
+else:
+    abs_root_path = config["root"]
+    res_path = abs_root_path + "/" + config["resdir"]
+
 ###### results path ######
-res_path=config["root"] + "/" + config["resdir"]
 
 ### get filenames
-IDS=get_bams_name(config["root"] + "/" + config["resdir"] + "/" + config["bamdir"])
+IDS=get_bams_name(abs_root_path + "/" + config["resdir"] + "/" + config["bamdir"])
 
 ### target files
 rule all:
     input:
-        expand(config["root"] + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}.fastq.gz", id=IDS),
-        expand(config["root"] + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}.fasta.gz", id=IDS)
+        expand(abs_root_path + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}.fastq.gz", id=IDS),
+        expand(abs_root_path + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}.fasta.gz", id=IDS)
 
 ### rules
 ## PacBio .bam conversion with smrtlink
 # .bam.pbi needed for bam_to_ conversion rules
 rule smrtlink_index:
     input:
-        config["root"] + "/" + config["resdir"] + "/" + config["bamdir"] + "/{id}.bam"
+        abs_root_path + "/" + config["resdir"] + "/" + config["bamdir"] + "/{id}.bam"
     output:
-        config["root"] + "/" + config["resdir"] + "/" + config["bamdir"] + "/{id}.bam.pbi"
+        abs_root_path + "/" + config["resdir"] + "/" + config["bamdir"] + "/{id}.bam.pbi"
     container:
         "docker://registry.forgemia.inra.fr/asm4pg/genomasm4pg/smrtlink9.0"
     shell:
@@ -42,12 +50,12 @@ rule smrtlink_index:
 # convert .bam to .fastq.gz
 rule smrtlink_bam_to_fastq:
     input:
-        bam = config["root"] + "/" + config["resdir"] + "/" + config["bamdir"] + "/{id}.bam",
+        bam = abs_root_path + "/" + config["resdir"] + "/" + config["bamdir"] + "/{id}.bam",
         bam_pbi = rules.smrtlink_index.output
     output:
-        config["root"] + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}.fastq.gz"
+        abs_root_path + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}.fastq.gz"
     params:
-        prefix=config["root"] + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}"
+        prefix=abs_root_path + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}"
     priority: 2
     container:
         "docker://registry.forgemia.inra.fr/asm4pg/genomasm4pg/smrtlink9.0"
@@ -57,12 +65,12 @@ rule smrtlink_bam_to_fastq:
 # convert .bam to .fasta.gz
 rule smrtlink_bam_to_fasta:
     input:
-        bam = config["root"] + "/" + config["resdir"] + "/" + config["bamdir"] + "/{id}.bam",
+        bam = abs_root_path + "/" + config["resdir"] + "/" + config["bamdir"] + "/{id}.bam",
         bam_pbi = rules.smrtlink_index.output
     output:
-        config["root"] + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}.fasta.gz"
+        abs_root_path + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}.fasta.gz"
     params:
-        prefix=config["root"] + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}"
+        prefix=abs_root_path + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}"
     priority: 2
     container:
         "docker://registry.forgemia.inra.fr/asm4pg/genomasm4pg/smrtlink9.0"
diff --git a/workflow/pre-job_snakefiles/Snakefile3.smk b/workflow/pre-job_snakefiles/Snakefile3.smk
index d0ab492..757ab6b 100644
--- a/workflow/pre-job_snakefiles/Snakefile3.smk
+++ b/workflow/pre-job_snakefiles/Snakefile3.smk
@@ -17,26 +17,33 @@ def get_fastq_name(dirpath):
     return(IDS)
 
 ######################## Snakemake ########################
+### root path
+if config["root"].startswith("."):
+    abs_root_path = get_abs_root_path()
+    res_path = get_res_path()
+else:
+    abs_root_path = config["root"]
+    res_path = abs_root_path + "/" + config["resdir"]
+
 ###### results path ######
-res_path=config["root"] + "/" + config["resdir"]
 
 ### get filenames
-IDS = get_fastq_name(config["root"] + "/" + config["resdir"] + "/" + config["fastxdir"])
+IDS = get_fastq_name(abs_root_path + "/" + config["resdir"] + "/" + config["fastxdir"])
 
 ### target files
 rule all:
     input:
-        expand(config["root"] + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}.fasta.gz", id=IDS)
+        expand(abs_root_path + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}.fasta.gz", id=IDS)
 
 ### rules
 # if only fastq : convert to fasta with seqtk + zip
 rule convert_to_fasta:
     input:
-        config["root"] + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}.fastq.gz"
+        abs_root_path + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}.fastq.gz"
     output:
-        config["root"] + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}.fasta.gz"
+        abs_root_path + "/" + config["resdir"] + "/" + config["fastxdir"] + "/{id}.fasta.gz"
     params:
-        path=config["root"] + "/" + config["resdir"] + "/" + config["fastxdir"]
+        path=abs_root_path + "/" + config["resdir"] + "/" + config["fastxdir"]
     threads: 10
     container:
         "docker://registry.forgemia.inra.fr/asm4pg/genomasm4pg/seqtk1.3"
diff --git a/workflow/rules/00_runtime.smk b/workflow/rules/00_runtime.smk
index f53da68..2c408ba 100644
--- a/workflow/rules/00_runtime.smk
+++ b/workflow/rules/00_runtime.smk
@@ -28,8 +28,6 @@ rule elasped_time:
         with open(output[0], "w") as out:
             out.write("Runtime (hh:mm:ss): " + str(td))
 
-        # os.remove(input[0])
-
 
 rule elasped_time_trio:
     input: 
@@ -49,6 +47,4 @@ rule elasped_time_trio:
         td = timedelta(seconds=elapsed_time)
 
         with open(output[0], "w") as out:
-            out.write("Runtime (hh:mm:ss): " + str(td))
-
-        # os.remove(input[0])
\ No newline at end of file
+            out.write("Runtime (hh:mm:ss): " + str(td))
\ No newline at end of file
diff --git a/workflow/rules/01_qc.smk b/workflow/rules/01_qc.smk
index 8493080..bf963a2 100644
--- a/workflow/rules/01_qc.smk
+++ b/workflow/rules/01_qc.smk
@@ -1,7 +1,7 @@
 ### QC on .bam files with LongQC
 rule longqc:
     input:
-        config["root"] + "/" + config["resdir"] + "/" + config["bamdir"] + "/{Bid}.bam"
+        abs_root_path + "/" + config["resdir"] + "/" + config["bamdir"] + "/{Bid}.bam"
     output:
         directory(res_path + "/{Bid}/{run}/01_raw_data_QC/02_longQC")
     benchmark:
diff --git a/workflow/rules/02_asm.smk b/workflow/rules/02_asm.smk
index 83c9b24..ee20083 100644
--- a/workflow/rules/02_asm.smk
+++ b/workflow/rules/02_asm.smk
@@ -5,12 +5,12 @@ rule hifiasm:
     input:
         get_fasta
     output:
-        hap1 = config["root"] + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}.bp.hap1.p_ctg.gfa",
-        hap2 = config["root"] + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}.bp.hap2.p_ctg.gfa"
+        hap1 = abs_root_path + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}.bp.hap1.p_ctg.gfa",
+        hap2 = abs_root_path + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}.bp.hap2.p_ctg.gfa"
     params:
-        prefix = config["root"] + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}"
+        prefix = abs_root_path + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}"
     benchmark:
-        config["root"] + "/" + config["resdir"] + "/{runid}/benchmark/{id}_hifiasm_benchmark.txt"
+        abs_root_path + "/" + config["resdir"] + "/{runid}/benchmark/{id}_hifiasm_benchmark.txt"
     threads: 20
     resources:
         mem_mb=250000
@@ -28,12 +28,12 @@ rule hifiasm_hic:
         # hifi reads
         hifi = get_fasta
     output:
-        hap1 = config["root"] + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}.hic.hap1.p_ctg.gfa",
-        hap2 = config["root"] + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}.hic.hap2.p_ctg.gfa"
+        hap1 = abs_root_path + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}.hic.hap1.p_ctg.gfa",
+        hap2 = abs_root_path + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}.hic.hap2.p_ctg.gfa"
     params:
-        prefix= config["root"] + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}"
+        prefix= abs_root_path + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}"
     benchmark:
-        config["root"] + "/" + config["resdir"] + "/{runid}/benchmark/{id}_hifiasm_hic_benchmark.txt"
+        abs_root_path + "/" + config["resdir"] + "/{runid}/benchmark/{id}_hifiasm_hic_benchmark.txt"
     threads: 20
     resources:
         mem_mb=250000
@@ -48,10 +48,10 @@ rule yak:
         p1 = get_p1,
         p2 = get_p2
     output:
-        p1 = config["root"] + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/yak/{id}_parent1.yak",
-        p2 = config["root"] + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/yak/{id}_parent2.yak"
+        p1 = abs_root_path + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/yak/{id}_parent1.yak",
+        p2 = abs_root_path + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/yak/{id}_parent2.yak"
     benchmark:
-        config["root"] + "/" + config["resdir"] + "/{runid}/benchmark/{id}_yak_benchmark.txt"
+        abs_root_path + "/" + config["resdir"] + "/{runid}/benchmark/{id}_yak_benchmark.txt"
     container:
         "docker://registry.forgemia.inra.fr/asm4pg/genomasm4pg/hifiasm0.16.1"
     shell:
@@ -65,12 +65,12 @@ rule hifiasm_trio:
         p2 = rules.yak.output.p2,
         child = get_fasta
     output:
-        hap1 = config["root"] + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}.dip.hap1.p_ctg.gfa",
-        hap2 = config["root"] + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}.dip.hap2.p_ctg.gfa"
+        hap1 = abs_root_path + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}.dip.hap1.p_ctg.gfa",
+        hap2 = abs_root_path + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}.dip.hap2.p_ctg.gfa"
     params:
-        prefix = config["root"] + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}"
+        prefix = abs_root_path + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}"
     benchmark:
-        config["root"] + "/" + config["resdir"] + "/{runid}/benchmark/{id}_hifiasm_trio_benchmark.txt"
+        abs_root_path + "/" + config["resdir"] + "/{runid}/benchmark/{id}_hifiasm_trio_benchmark.txt"
     threads: 20
     resources:
         mem_mb=250000
@@ -88,8 +88,8 @@ rule hap_gfa_to_fasta:
         hap1 = get_mode_hap1,
         hap2 = get_mode_hap2
     output:
-        hap1_fa =  config["root"] + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}_hap1.fa.gz",
-        hap2_fa =  config["root"] + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}_hap2.fa.gz"
+        hap1_fa =  abs_root_path + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}_hap1.fa.gz",
+        hap2_fa =  abs_root_path + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}_hap2.fa.gz"
     params:
         pigz_p = config["pigz_threads"]
     threads: config["pigz_threads"]
diff --git a/workflow/rules/03_asm_qc.smk b/workflow/rules/03_asm_qc.smk
index c3ea246..f32a480 100644
--- a/workflow/rules/03_asm_qc.smk
+++ b/workflow/rules/03_asm_qc.smk
@@ -1,5 +1,5 @@
 # input haplotypes
-HAP_FA_GZ = config["root"] + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}_hap{n}.fa.gz"
+HAP_FA_GZ = abs_root_path + "/" + config["resdir"] + "/{runid}/02_genome_assembly/01_raw_assembly/00_assembly/{id}_hap{n}.fa.gz"
 
 # unzip fasta
 rule unzip_hap_fasta:
diff --git a/workflow/rules/07_report.smk b/workflow/rules/07_report.smk
index a232165..e84bc94 100644
--- a/workflow/rules/07_report.smk
+++ b/workflow/rules/07_report.smk
@@ -1,6 +1,6 @@
 ### create report at the end of the workflow
+
 # path variables
-res_path=config["root"] + "/" + config["resdir"]
 RAW_QC = res_path + "/{runid}/01_raw_data_QC"
 ASM_QC = res_path + "/{runid}/02_genome_assembly/01_raw_assembly/01_assembly_QC"
 P_ASM_QC = res_path + "/{runid}/02_genome_assembly/02_after_purge_dups_assembly/01_assembly_QC"
diff --git a/workflow/scripts/path_helper.py b/workflow/scripts/path_helper.py
new file mode 100644
index 0000000..1aa7e2e
--- /dev/null
+++ b/workflow/scripts/path_helper.py
@@ -0,0 +1,13 @@
+import os
+
+###### root path ######
+def get_abs_root_path(): 
+    abs_root_path = os.path.abspath(config["root"])
+    return(abs_root_path)
+
+
+###### results path ######
+def get_res_path():
+	abs_root_path = os.path.abspath(config["root"])
+	res_path= abs_root_path + "/" + config["resdir"]
+	return(res_path)
\ No newline at end of file
-- 
GitLab


From bb766507e110b3704df34933d6d33cccd7c55ef5 Mon Sep 17 00:00:00 2001
From: "sukanya.denni" <sukanya.denni@inrae.fr>
Date: Fri, 11 Aug 2023 09:08:52 +0200
Subject: [PATCH 2/5] update config root

---
 .config/masterconfig.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/masterconfig.yaml b/.config/masterconfig.yaml
index 827b73d..6f0f25a 100644
--- a/.config/masterconfig.yaml
+++ b/.config/masterconfig.yaml
@@ -1,5 +1,5 @@
 # absolute path to your desired output path
-root: /output/path
+root: .
 
 ####################### optional prejob - data preparation #######################
 # path to tar data
-- 
GitLab


From dd738a355cc0f235e1accdd232cbfdaa76b4ef55 Mon Sep 17 00:00:00 2001
From: "sukanya.denni" <sukanya.denni@inrae.fr>
Date: Fri, 11 Aug 2023 09:09:11 +0200
Subject: [PATCH 3/5] update pages link

---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 7edeb14..823d889 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@ This workflow uses [Snakemake](https://snakemake.readthedocs.io/en/stable/) to q
 
 A first script (```prejob.sh```) prepares the data until *fasta.gz* files are obtained. A second script (```job.sh```) runs the genome assembly and stats.
 
-doc: [Gitlab pages](https://asm4pg.pages.mia.inra.fr/genomasm4pg)
+doc: [Gitlab pages](https://asm4pg.pages.mia.inra.fr/GenomAsm4pg/)
 
 ![workflow DAG](workflow/doc/fig/rule_dag.svg)
 
-- 
GitLab


From 8073359bf0dcf945ab16cc30adbcc8419e4d684a Mon Sep 17 00:00:00 2001
From: "sukanya.denni" <sukanya.denni@inrae.fr>
Date: Fri, 11 Aug 2023 09:13:57 +0200
Subject: [PATCH 4/5] track slurm_logs directory

---
 .gitignore | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.gitignore b/.gitignore
index bef9246..24af5b9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -51,6 +51,8 @@
 !Snakefile
 !*.smk
 !*.svg
+!slurm_logs/
+
 
 # 3) add a pattern to track the file patterns of section2 even if they are in
     # subdirectories
-- 
GitLab


From 9119964d5456a23b3afb1948874d4d597e43f1ab Mon Sep 17 00:00:00 2001
From: "sukanya.denni" <sukanya.denni@inrae.fr>
Date: Fri, 11 Aug 2023 13:24:58 +0200
Subject: [PATCH 5/5] added bind function

---
 job.sh    | 15 ++++++++++++---
 prejob.sh | 15 ++++++++++++++-
 2 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/job.sh b/job.sh
index 88686b0..1a5b57e 100644
--- a/job.sh
+++ b/job.sh
@@ -35,12 +35,23 @@ echo 'scontrol show job:'
 scontrol show job $SLURM_JOB_ID
 echo '########################################'
 
+## get SNG_BIND abs path using python
+function SNG_BIND_ABS_PATH {
+    SNG_BIND="$(python3 - <<END
+import os
+
+abs_path = os.getcwd()
+print(abs_path)
+
+END
+)"
+}
+SNG_BIND_ABS_PATH
 
 ### variables
 CLUSTER_CONFIG=".config/snakemake_profile/slurm/cluster_config.yml"
 MAX_CORES=10
 PROFILE=".config/snakemake_profile/slurm"
-SNG_BIND="/gpfs/scratch/sdenni/wf/GenomAsm4pg"
 
 ### Module Loading:
 module purge
@@ -48,8 +59,6 @@ module load snakemake/6.5.1
 
 echo 'Starting Snakemake workflow'
 
-### create a log directory for slurm output files
-mkdir -p slurm_logs
 
 ### Snakemake commands
 
diff --git a/prejob.sh b/prejob.sh
index d65a60e..ec05113 100644
--- a/prejob.sh
+++ b/prejob.sh
@@ -35,12 +35,25 @@ echo 'scontrol show job:'
 scontrol show job $SLURM_JOB_ID
 echo '########################################'
 
+
+## get SNG_BIND abs path using python
+function SNG_BIND_ABS_PATH {
+    SNG_BIND="$(python3 - <<END
+import os
+
+abs_path = os.getcwd()
+print(abs_path)
+
+END
+)"
+}
+SNG_BIND_ABS_PATH
+
 ### variables
 CLUSTER_CONFIG=".config/snakemake_profile/slurm/cluster_config.yml"
 MAX_CORES=4
 PROFILE=".config/snakemake_profile/slurm"
 SMK_PATH="workflow/pre-job_snakefiles"
-SNG_BIND="/gpfs/scratch/sdenni/wf/GenomAsm4pg"
 
 ### Module Loading:
 module purge
-- 
GitLab