diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d7a44e8c1f72ffdabb0deda04538ac2e4191efbf..b70e77af8f95fbabadccba9b585b1368b9efce64 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,39 +3,44 @@ # - Running the dag # - Publishing the release with the dag inside -download_apps: - stage: .pre +shallow_run_workflow: + stage: test tags: - stable - image: + image: name: kaczmarj/apptainer:latest entrypoint: [""] - rules: - - if: '$CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "merge_request_event"' script: - - mkdir apps + ## Downloading apps + - mkdir appimgs #- apptainer build apps/pggb.sif oras://registry.forgemia.inra.fr/alexis.mergez/pangratools/pggb:latest - - apptainer build apps/snakebox.sif oras://registry.forgemia.inra.fr/alexis.mergez/pangratools/snakebox:latest + - apptainer build appimgs/snakebox.sif oras://registry.forgemia.inra.fr/alexis.mergez/pangratools/snakebox:latest #- apptainer build apps/pytools.sif oras://registry.forgemia.inra.fr/alexis.mergez/pangetools/pytools:latest #- apptainer build apps/PanGeTools.sif oras://registry.forgemia.inra.fr/alexis.mergez/pangetools/pangetools:latest -shallow_run_workflow: - stage: test + ## Running workflow + - mkdir -p data/haplotypes + - cp example/*.fa.gz data/haplotypes + - HOME=$(pwd) + - rm config.yaml && mv example/config_CICD.yaml config.yaml + - apptainer run --bind $HOME:/root appimgs/snakebox.sif snakemake -c1 --dag > workflow.dot + artifacts: + paths: + - workflow.dot + +create_graph: + stage: deploy + image: ubuntu:latest tags: - stable - image: - name: kaczmarj/apptainer:latest - entrypoint: [""] - rules: - - if: '$CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "merge_request_event"' script: - - apptainer run apps/snakebox.sif snakemake -c1 --dag | dot -Tsvg > workflow.svg + - apt update -y && apt install graphviz -y + - dot -Tsvg workflow.dot > workflow.svg artifacts: paths: - workflow.svg - diff --git a/README.md b/README.md index 61656e4f17eeae844dd61fbbf28c22cad5260aff..25129741dc8860d82b659d5e1b133db4baf951de 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,52 @@ -# Pan1c +# Pan1c workflow -Snakemake workflow for creating a pangenome at a chromosomic scale. +Pan1c *(Pangenome 1 Chromosome)* : a snakemake workflow for creating a pangenome at a chromosomic scale. Tools used within the workflow : - PanGeTools : https://forgemia.inra.fr/alexis.mergez/pangetools - PanGraTools : https://forgemia.inra.fr/alexis.mergez/pangratools +- Pan1c-Apps : https://forgemia.inra.fr/alexis.mergez/pan1capps The file architecture for the workflow is as follow : ``` Pan1c/ ├── config.yaml +├── example +│  ├── CICC1445.fa.gz +│  ├── config_CICD.yaml +│  ├── R64.fa.gz +│  ├── SX2.fa.gz +│  └── workflow.svg +├── getApps.sh ├── README.md ├── runSnakemake.sh ├── scripts -│ ├── bin_split.py -│ ├── getPanachePAV.sh -│ ├── inputClustering.py -│ ├── ragtagChromInfer.sh -│ └── statsAggregation.py +│  ├── getPanachePAV.sh +│  ├── inputClustering.py +│  ├── ragtagChromInfer.sh +│  ├── statsAggregation.py +│  └── workflowStats.py └── Snakefile ``` + +# Example DAG +This DAG shows the worflow for a pangenome of `Arabidospis Thaliana` using the `TAIR10.1` reference. + + # Prepare your data This workflow can take chromosome level assemblies as well as contig level assemblies. **Fasta files need to be compressed** using **bgzip2** (included in [PanGeTools](https://forgemia.inra.fr/alexis.mergez/pangetools)). -Records id **must follow this pattern** : `<haplotype name>#<ctg|chr name>`. (`CHM13#chr01` for example where the fasata file is named CHM13.fa.gz). +Records id **must follow this pattern** : `<haplotype name>#<ctg|chr name>`. (`CHM13#chr01` for example where the fasta file is named CHM13.fa.gz). Because of the clustering step, this pattern is only needed for the reference assembly. -Input files should be read only to prevent snakemake to mess with them (which seems to happen in some rare cases). +> Note : Input files should be read-only to prevent snakemake to mess with them (which seems to happen in some rare cases). # Download apptainer images -Before running the worflow, some apptainer images needs to be downloaded : -``` -apptainer build <your_apptainer_image_directory>/PanGeTools.sif oras://registry.forgemia.inra.fr/alexis.mergez/pangetools/pangetools:latest -apptainer build <your_apptainer_image_directory>/pytools.sif oras://registry.forgemia.inra.fr/alexis.mergez/pangetools/pytools:latest -apptainer build <your_apptainer_image_directory>/pggb.sif oras://registry.forgemia.inra.fr/alexis.mergez/pangratools/pggb:latest -apptainer build <your_apptainer_image_directory>/snakebox.sif oras://registry.forgemia.inra.fr/alexis.mergez/pangratools/snakebox:latest +Before running the worflow, some apptainer images needs to be downloaded. Use the script getApps.sh to do so : ``` +./getApps.sh -a <apps directory> +``` -# Usage -Clone this repo and create `data/haplotypes`. Place all your haplotypes in it. -Change the reference name and the apptainer image directory in `config.yaml`. -Finally, change variables in `runSnakemake.sh` to match your needs (threads, memory, job name, mail, etc...). -Go in the root directory of the repo and run `sbatch runSnakemake.sh` ! \ No newline at end of file +# Running the workflow +Clone this repository and create a `data/haplotypes` directory where you will place all your haplotypes. +Update the reference name and the apptainer image directory in `config.yaml`. +Then, modify the variables in `runSnakemake.sh` to match your requirements (number of threads, memory, job name, email, etc.). +Navigate to the root directory of the repository and execute `sbatch runSnakemake.sh`! \ No newline at end of file diff --git a/Snakefile b/Snakefile index 35bf42d125566ad5d96fb2d4f76237f76c0cfd7d..72fa1e82fcf8ec100466251da1daed494fc23307 100644 --- a/Snakefile +++ b/Snakefile @@ -3,8 +3,13 @@ configfile: "config.yaml" import os import numpy as np import gzip +import re -SAMPLES = np.unique([os.path.basename(f).split('.fa')[0] for f in os.listdir("data/haplotypes/")]) +SAMPLES = np.unique([ + os.path.basename(f).split('.fa')[0] + for f in os.listdir("data/haplotypes/") + if re.search(r".fa", f) + ]) nHAP = len(SAMPLES) # Getting the list of chromosomes @@ -68,7 +73,7 @@ rule clustering: shell: """ mkdir -p $(dirname {output[0]}) - apptainer run {params.apppath}/pytools.sif python scripts/inputClustering.py \ + apptainer run {params.apppath}/pan1c-env.sif python scripts/inputClustering.py \ --fasta {input} --output $(dirname {output[0]}) for file in $(dirname {output[0]})/*.fa; do apptainer run --app bgzip {params.apppath}/PanGeTools.sif -@ {threads} $file @@ -178,7 +183,7 @@ rule aggregate_stats: panname=config['name'] shell: """ - apptainer run {params.apppath}/pytools.sif python scripts/statsAggregation.py \ + apptainer run {params.apppath}/pan1c-env.sif python scripts/statsAggregation.py \ --input {input} --output {output} --panname {params.panname} """ @@ -236,6 +241,6 @@ rule workflow_statistics: shell: """ mkdir -p {output.dir} - apptainer run {params.apppath}/pytools.sif python scripts/workflowStats.py \ + apptainer run {params.apppath}/pan1c-env.sif python scripts/workflowStats.py \ -i {input.tar} -l {input.chrLen} -g {input.chrGraphStats} -o {output.tsv} -f {output.dir} """ \ No newline at end of file diff --git a/config.yaml b/config.yaml index be94960a6ee680a62ebbd63caf96e8ad5c35bad8..190b4bb7316bb49454f97d36999fcfe6536ebe17 100644 --- a/config.yaml +++ b/config.yaml @@ -1,7 +1,6 @@ name: '02H' reference: 'CHM13v2.0.fa.gz' app.path: '/home/amergez/work/apptainer' -wfmash.params: '--approx-map' pggb.params: '-X --skip-viz' odgi.1Dviz.params: '-x 500 -b' odgi.pcov.params: '-x 500 -O' \ No newline at end of file diff --git a/example/config_CICD.yaml b/example/config_CICD.yaml new file mode 100644 index 0000000000000000000000000000000000000000..775a7fc6d3036b53d11b000ba4ecc1deea96c9e2 --- /dev/null +++ b/example/config_CICD.yaml @@ -0,0 +1,6 @@ +name: '03SC_CICD' +reference: 'R64.fa.gz' +app.path: 'appimgs/' +pggb.params: '-X --skip-viz' +odgi.1Dviz.params: '-x 500 -b' +odgi.pcov.params: '-x 500 -O' \ No newline at end of file diff --git a/example/workflow.svg b/example/workflow.svg new file mode 100644 index 0000000000000000000000000000000000000000..f7ebd6a3d35f6a29e0a7d293577e1ffc0b6fdd4e --- /dev/null +++ b/example/workflow.svg @@ -0,0 +1,538 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.40.1 (0) + --> +<!-- Title: snakemake_dag Pages: 1 --> +<svg width="1460pt" height="764pt" + viewBox="0.00 0.00 1459.69 764.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 760)"> +<title>snakemake_dag</title> +<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-760 1455.6904,-760 1455.6904,4 -4,4"/> +<!-- 0 --> +<g id="node1" class="node"> +<title>0</title> +<path fill="none" stroke="#56d8b9" stroke-width="2" d="M625.1904,-36C625.1904,-36 595.1904,-36 595.1904,-36 589.1904,-36 583.1904,-30 583.1904,-24 583.1904,-24 583.1904,-12 583.1904,-12 583.1904,-6 589.1904,0 595.1904,0 595.1904,0 625.1904,0 625.1904,0 631.1904,0 637.1904,-6 637.1904,-12 637.1904,-12 637.1904,-24 637.1904,-24 637.1904,-30 631.1904,-36 625.1904,-36"/> +<text text-anchor="middle" x="610.1904" y="-15.5" font-family="sans" font-size="10.00" fill="#000000">all</text> +</g> +<!-- 1 --> +<g id="node2" class="node"> +<title>1</title> +<path fill="none" stroke="#d8a456" stroke-width="2" d="M514.1904,-252C514.1904,-252 448.1904,-252 448.1904,-252 442.1904,-252 436.1904,-246 436.1904,-240 436.1904,-240 436.1904,-228 436.1904,-228 436.1904,-222 442.1904,-216 448.1904,-216 448.1904,-216 514.1904,-216 514.1904,-216 520.1904,-216 526.1904,-222 526.1904,-228 526.1904,-228 526.1904,-240 526.1904,-240 526.1904,-246 520.1904,-252 514.1904,-252"/> +<text text-anchor="middle" x="481.1904" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">graph_squeeze</text> +</g> +<!-- 1->0 --> +<g id="edge1" class="edge"> +<title>1->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M482.8589,-215.9733C486.5972,-184.0921 498.0916,-116.8957 531.1904,-72 542.2117,-57.0505 558.6732,-44.8596 573.7214,-35.8689"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="575.8785,-38.6691 582.8471,-30.6885 572.4227,-32.5815 575.8785,-38.6691"/> +</g> +<!-- 2 --> +<g id="node3" class="node"> +<title>2</title> +<path fill="none" stroke="#56d86b" stroke-width="2" d="M727.6904,-396C727.6904,-396 638.6904,-396 638.6904,-396 632.6904,-396 626.6904,-390 626.6904,-384 626.6904,-384 626.6904,-372 626.6904,-372 626.6904,-366 632.6904,-360 638.6904,-360 638.6904,-360 727.6904,-360 727.6904,-360 733.6904,-360 739.6904,-366 739.6904,-372 739.6904,-372 739.6904,-384 739.6904,-384 739.6904,-390 733.6904,-396 727.6904,-396"/> +<text text-anchor="middle" x="683.1904" y="-375.5" font-family="sans" font-size="10.00" fill="#000000">generate_graph_list</text> +</g> +<!-- 2->1 --> +<g id="edge6" class="edge"> +<title>2->1</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M644.0426,-359.7935C624.7805,-350.1644 601.5922,-337.5438 582.1904,-324 554.4781,-304.655 526.0082,-278.6214 506.3883,-259.5307"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="508.6488,-256.8448 499.0654,-252.3272 503.7399,-261.8351 508.6488,-256.8448"/> +</g> +<!-- 26 --> +<g id="node27" class="node"> +<title>26</title> +<path fill="none" stroke="#56d892" stroke-width="2" d="M653.1904,-324C653.1904,-324 603.1904,-324 603.1904,-324 597.1904,-324 591.1904,-318 591.1904,-312 591.1904,-312 591.1904,-300 591.1904,-300 591.1904,-294 597.1904,-288 603.1904,-288 603.1904,-288 653.1904,-288 653.1904,-288 659.1904,-288 665.1904,-294 665.1904,-300 665.1904,-300 665.1904,-312 665.1904,-312 665.1904,-318 659.1904,-324 653.1904,-324"/> +<text text-anchor="middle" x="628.1904" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">graph_stats</text> +</g> +<!-- 2->26 --> +<g id="edge48" class="edge"> +<title>2->26</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M669.3115,-359.8314C662.9768,-351.5386 655.352,-341.557 648.3978,-332.4533"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="651.1079,-330.2353 642.2561,-324.4133 645.5451,-334.4847 651.1079,-330.2353"/> +</g> +<!-- 27 --> +<g id="node28" class="node"> +<title>27</title> +<path fill="none" stroke="#567bd8" stroke-width="2" d="M771.6904,-180C771.6904,-180 728.6904,-180 728.6904,-180 722.6904,-180 716.6904,-174 716.6904,-168 716.6904,-168 716.6904,-156 716.6904,-156 716.6904,-150 722.6904,-144 728.6904,-144 728.6904,-144 771.6904,-144 771.6904,-144 777.6904,-144 783.6904,-150 783.6904,-156 783.6904,-156 783.6904,-168 783.6904,-168 783.6904,-174 777.6904,-180 771.6904,-180"/> +<text text-anchor="middle" x="750.1904" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">graph_figs</text> +</g> +<!-- 2->27 --> +<g id="edge49" class="edge"> +<title>2->27</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M688.7875,-359.9555C700.4879,-322.235 727.603,-234.8188 741.5548,-189.8399"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="744.9422,-190.7331 744.562,-180.1451 738.2565,-188.6592 744.9422,-190.7331"/> +</g> +<!-- 28 --> +<g id="node29" class="node"> +<title>28</title> +<path fill="none" stroke="#56a9d8" stroke-width="2" d="M810.1904,-108C810.1904,-108 778.1904,-108 778.1904,-108 772.1904,-108 766.1904,-102 766.1904,-96 766.1904,-96 766.1904,-84 766.1904,-84 766.1904,-78 772.1904,-72 778.1904,-72 778.1904,-72 810.1904,-72 810.1904,-72 816.1904,-72 822.1904,-78 822.1904,-84 822.1904,-84 822.1904,-96 822.1904,-96 822.1904,-102 816.1904,-108 810.1904,-108"/> +<text text-anchor="middle" x="794.1904" y="-87.5" font-family="sans" font-size="10.00" fill="#000000">get_pav</text> +</g> +<!-- 2->28 --> +<g id="edge50" class="edge"> +<title>2->28</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M697.4143,-359.9967C722.6307,-326.77 774.2089,-252.5564 792.1904,-180 797.1952,-159.805 797.5357,-136.2758 796.7095,-118.3412"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="800.1957,-118.006 796.0952,-108.2369 793.2086,-118.4308 800.1957,-118.006"/> +</g> +<!-- 3 --> +<g id="node4" class="node"> +<title>3</title> +<path fill="none" stroke="#b6d856" stroke-width="2" d="M139.6904,-468C139.6904,-468 50.6904,-468 50.6904,-468 44.6904,-468 38.6904,-462 38.6904,-456 38.6904,-456 38.6904,-444 38.6904,-444 38.6904,-438 44.6904,-432 50.6904,-432 50.6904,-432 139.6904,-432 139.6904,-432 145.6904,-432 151.6904,-438 151.6904,-444 151.6904,-444 151.6904,-456 151.6904,-456 151.6904,-462 145.6904,-468 139.6904,-468"/> +<text text-anchor="middle" x="95.1904" y="-453" font-family="sans" font-size="10.00" fill="#000000">pggb_on_chr</text> +<text text-anchor="middle" x="95.1904" y="-442" font-family="sans" font-size="10.00" fill="#000000">chromosome: chr01</text> +</g> +<!-- 3->2 --> +<g id="edge7" class="edge"> +<title>3->2</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M151.8372,-443.0637C260.9419,-429.7039 499.74,-400.4633 616.3919,-386.1794"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="617.1128,-389.6174 626.6132,-384.9278 616.2619,-382.6693 617.1128,-389.6174"/> +</g> +<!-- 4 --> +<g id="node5" class="node"> +<title>4</title> +<path fill="none" stroke="#56d0d8" stroke-width="2" d="M703.6904,-612C703.6904,-612 662.6904,-612 662.6904,-612 656.6904,-612 650.6904,-606 650.6904,-600 650.6904,-600 650.6904,-588 650.6904,-588 650.6904,-582 656.6904,-576 662.6904,-576 662.6904,-576 703.6904,-576 703.6904,-576 709.6904,-576 715.6904,-582 715.6904,-588 715.6904,-588 715.6904,-600 715.6904,-600 715.6904,-606 709.6904,-612 703.6904,-612"/> +<text text-anchor="middle" x="683.1904" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">clustering</text> +</g> +<!-- 4->3 --> +<g id="edge14" class="edge"> +<title>4->3</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M650.4252,-592.6076C518.1195,-586.8296 29.2788,-563.9233 7.1904,-540 -3.6635,-528.2445 -.6233,-517.9623 7.1904,-504 14.3739,-491.1638 25.9945,-481.0081 38.4695,-473.1336"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="40.3243,-476.1036 47.1984,-468.0415 36.7971,-470.0572 40.3243,-476.1036"/> +</g> +<!-- 12 --> +<g id="node13" class="node"> +<title>12</title> +<path fill="none" stroke="#d85656" stroke-width="2" d="M162.1904,-540C162.1904,-540 28.1904,-540 28.1904,-540 22.1904,-540 16.1904,-534 16.1904,-528 16.1904,-528 16.1904,-516 16.1904,-516 16.1904,-510 22.1904,-504 28.1904,-504 28.1904,-504 162.1904,-504 162.1904,-504 168.1904,-504 174.1904,-510 174.1904,-516 174.1904,-516 174.1904,-528 174.1904,-528 174.1904,-534 168.1904,-540 162.1904,-540"/> +<text text-anchor="middle" x="95.1904" y="-525" font-family="sans" font-size="10.00" fill="#000000">samtools_index</text> +<text text-anchor="middle" x="95.1904" y="-514" font-family="sans" font-size="10.00" fill="#000000">sample: data/chrInputs/chr01</text> +</g> +<!-- 4->12 --> +<g id="edge28" class="edge"> +<title>4->12</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M650.6376,-591.3851C571.2941,-584.8083 361.71,-566.2112 188.1904,-540 186.9098,-539.8066 185.62,-539.608 184.3228,-539.4048"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="184.6943,-535.9192 174.2614,-537.7645 183.5679,-542.828 184.6943,-535.9192"/> +</g> +<!-- 13 --> +<g id="node14" class="node"> +<title>13</title> +<path fill="none" stroke="#b6d856" stroke-width="2" d="M353.6904,-468C353.6904,-468 264.6904,-468 264.6904,-468 258.6904,-468 252.6904,-462 252.6904,-456 252.6904,-456 252.6904,-444 252.6904,-444 252.6904,-438 258.6904,-432 264.6904,-432 264.6904,-432 353.6904,-432 353.6904,-432 359.6904,-432 365.6904,-438 365.6904,-444 365.6904,-444 365.6904,-456 365.6904,-456 365.6904,-462 359.6904,-468 353.6904,-468"/> +<text text-anchor="middle" x="309.1904" y="-453" font-family="sans" font-size="10.00" fill="#000000">pggb_on_chr</text> +<text text-anchor="middle" x="309.1904" y="-442" font-family="sans" font-size="10.00" fill="#000000">chromosome: chr02</text> +</g> +<!-- 4->13 --> +<g id="edge29" class="edge"> +<title>4->13</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M650.5311,-592.6443C549.9196,-588.1366 249.7442,-572.0856 221.1904,-540 210.5536,-528.0476 213.3767,-517.9623 221.1904,-504 228.3739,-491.1638 239.9945,-481.0081 252.4695,-473.1336"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="254.3243,-476.1036 261.1984,-468.0415 250.7971,-470.0572 254.3243,-476.1036"/> +</g> +<!-- 14 --> +<g id="node15" class="node"> +<title>14</title> +<path fill="none" stroke="#d85656" stroke-width="2" d="M376.1904,-540C376.1904,-540 242.1904,-540 242.1904,-540 236.1904,-540 230.1904,-534 230.1904,-528 230.1904,-528 230.1904,-516 230.1904,-516 230.1904,-510 236.1904,-504 242.1904,-504 242.1904,-504 376.1904,-504 376.1904,-504 382.1904,-504 388.1904,-510 388.1904,-516 388.1904,-516 388.1904,-528 388.1904,-528 388.1904,-534 382.1904,-540 376.1904,-540"/> +<text text-anchor="middle" x="309.1904" y="-525" font-family="sans" font-size="10.00" fill="#000000">samtools_index</text> +<text text-anchor="middle" x="309.1904" y="-514" font-family="sans" font-size="10.00" fill="#000000">sample: data/chrInputs/chr02</text> +</g> +<!-- 4->14 --> +<g id="edge31" class="edge"> +<title>4->14</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M650.3094,-587.6959C597.8411,-577.6331 491.9428,-557.3096 402.1904,-540 400.9187,-539.7548 399.6373,-539.5076 398.3479,-539.2588"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="398.8189,-535.7851 388.3368,-537.3261 397.492,-542.6582 398.8189,-535.7851"/> +</g> +<!-- 15 --> +<g id="node16" class="node"> +<title>15</title> +<path fill="none" stroke="#b6d856" stroke-width="2" d="M567.6904,-468C567.6904,-468 478.6904,-468 478.6904,-468 472.6904,-468 466.6904,-462 466.6904,-456 466.6904,-456 466.6904,-444 466.6904,-444 466.6904,-438 472.6904,-432 478.6904,-432 478.6904,-432 567.6904,-432 567.6904,-432 573.6904,-432 579.6904,-438 579.6904,-444 579.6904,-444 579.6904,-456 579.6904,-456 579.6904,-462 573.6904,-468 567.6904,-468"/> +<text text-anchor="middle" x="523.1904" y="-453" font-family="sans" font-size="10.00" fill="#000000">pggb_on_chr</text> +<text text-anchor="middle" x="523.1904" y="-442" font-family="sans" font-size="10.00" fill="#000000">chromosome: chr03</text> +</g> +<!-- 4->15 --> +<g id="edge32" class="edge"> +<title>4->15</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M650.3716,-591.8146C589.2779,-586.9896 461.8685,-573.1121 435.1904,-540 425.1521,-527.5408 427.3767,-517.9623 435.1904,-504 442.3739,-491.1638 453.9945,-481.0081 466.4695,-473.1336"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="468.3243,-476.1036 475.1984,-468.0415 464.7971,-470.0572 468.3243,-476.1036"/> +</g> +<!-- 16 --> +<g id="node17" class="node"> +<title>16</title> +<path fill="none" stroke="#d85656" stroke-width="2" d="M590.1904,-540C590.1904,-540 456.1904,-540 456.1904,-540 450.1904,-540 444.1904,-534 444.1904,-528 444.1904,-528 444.1904,-516 444.1904,-516 444.1904,-510 450.1904,-504 456.1904,-504 456.1904,-504 590.1904,-504 590.1904,-504 596.1904,-504 602.1904,-510 602.1904,-516 602.1904,-516 602.1904,-528 602.1904,-528 602.1904,-534 596.1904,-540 590.1904,-540"/> +<text text-anchor="middle" x="523.1904" y="-525" font-family="sans" font-size="10.00" fill="#000000">samtools_index</text> +<text text-anchor="middle" x="523.1904" y="-514" font-family="sans" font-size="10.00" fill="#000000">sample: data/chrInputs/chr03</text> +</g> +<!-- 4->16 --> +<g id="edge34" class="edge"> +<title>4->16</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M650.4259,-579.256C628.0508,-569.1872 597.9953,-555.6622 572.714,-544.2856"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="573.84,-540.9543 563.2845,-540.0423 570.9674,-547.3378 573.84,-540.9543"/> +</g> +<!-- 17 --> +<g id="node18" class="node"> +<title>17</title> +<path fill="none" stroke="#b6d856" stroke-width="2" d="M727.6904,-468C727.6904,-468 638.6904,-468 638.6904,-468 632.6904,-468 626.6904,-462 626.6904,-456 626.6904,-456 626.6904,-444 626.6904,-444 626.6904,-438 632.6904,-432 638.6904,-432 638.6904,-432 727.6904,-432 727.6904,-432 733.6904,-432 739.6904,-438 739.6904,-444 739.6904,-444 739.6904,-456 739.6904,-456 739.6904,-462 733.6904,-468 727.6904,-468"/> +<text text-anchor="middle" x="683.1904" y="-453" font-family="sans" font-size="10.00" fill="#000000">pggb_on_chr</text> +<text text-anchor="middle" x="683.1904" y="-442" font-family="sans" font-size="10.00" fill="#000000">chromosome: chr04</text> +</g> +<!-- 4->17 --> +<g id="edge35" class="edge"> +<title>4->17</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M668.0763,-575.7768C660.8355,-565.8586 652.938,-552.9858 649.1904,-540 644.7539,-524.6274 644.7539,-519.3726 649.1904,-504 651.9425,-494.4635 656.9328,-484.9881 662.2574,-476.6989"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="665.3018,-478.4483 668.0763,-468.2232 659.5309,-474.4863 665.3018,-478.4483"/> +</g> +<!-- 18 --> +<g id="node19" class="node"> +<title>18</title> +<path fill="none" stroke="#d85656" stroke-width="2" d="M804.1904,-540C804.1904,-540 670.1904,-540 670.1904,-540 664.1904,-540 658.1904,-534 658.1904,-528 658.1904,-528 658.1904,-516 658.1904,-516 658.1904,-510 664.1904,-504 670.1904,-504 670.1904,-504 804.1904,-504 804.1904,-504 810.1904,-504 816.1904,-510 816.1904,-516 816.1904,-516 816.1904,-528 816.1904,-528 816.1904,-534 810.1904,-540 804.1904,-540"/> +<text text-anchor="middle" x="737.1904" y="-525" font-family="sans" font-size="10.00" fill="#000000">samtools_index</text> +<text text-anchor="middle" x="737.1904" y="-514" font-family="sans" font-size="10.00" fill="#000000">sample: data/chrInputs/chr04</text> +</g> +<!-- 4->18 --> +<g id="edge37" class="edge"> +<title>4->18</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M696.8169,-575.8314C703.0364,-567.5386 710.5226,-557.557 717.3504,-548.4533"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="720.1804,-550.5133 723.3804,-540.4133 714.5804,-546.3133 720.1804,-550.5133"/> +</g> +<!-- 19 --> +<g id="node20" class="node"> +<title>19</title> +<path fill="none" stroke="#b6d856" stroke-width="2" d="M888.6904,-468C888.6904,-468 799.6904,-468 799.6904,-468 793.6904,-468 787.6904,-462 787.6904,-456 787.6904,-456 787.6904,-444 787.6904,-444 787.6904,-438 793.6904,-432 799.6904,-432 799.6904,-432 888.6904,-432 888.6904,-432 894.6904,-432 900.6904,-438 900.6904,-444 900.6904,-444 900.6904,-456 900.6904,-456 900.6904,-462 894.6904,-468 888.6904,-468"/> +<text text-anchor="middle" x="844.1904" y="-453" font-family="sans" font-size="10.00" fill="#000000">pggb_on_chr</text> +<text text-anchor="middle" x="844.1904" y="-442" font-family="sans" font-size="10.00" fill="#000000">chromosome: chr05</text> +</g> +<!-- 4->19 --> +<g id="edge38" class="edge"> +<title>4->19</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M715.9366,-590.5401C748.537,-585.3056 797.5841,-572.2659 825.1904,-540 839.7315,-523.0046 844.0486,-497.6656 844.9765,-478.2004"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="848.4782,-478.1515 845.1867,-468.081 841.4797,-478.0061 848.4782,-478.1515"/> +</g> +<!-- 20 --> +<g id="node21" class="node"> +<title>20</title> +<path fill="none" stroke="#d85656" stroke-width="2" d="M1018.1904,-540C1018.1904,-540 884.1904,-540 884.1904,-540 878.1904,-540 872.1904,-534 872.1904,-528 872.1904,-528 872.1904,-516 872.1904,-516 872.1904,-510 878.1904,-504 884.1904,-504 884.1904,-504 1018.1904,-504 1018.1904,-504 1024.1904,-504 1030.1904,-510 1030.1904,-516 1030.1904,-516 1030.1904,-528 1030.1904,-528 1030.1904,-534 1024.1904,-540 1018.1904,-540"/> +<text text-anchor="middle" x="951.1904" y="-525" font-family="sans" font-size="10.00" fill="#000000">samtools_index</text> +<text text-anchor="middle" x="951.1904" y="-514" font-family="sans" font-size="10.00" fill="#000000">sample: data/chrInputs/chr05</text> +</g> +<!-- 4->20 --> +<g id="edge40" class="edge"> +<title>4->20</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M715.7845,-585.2434C754.8377,-574.7515 821.5647,-556.8248 874.0259,-542.7308"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="875.2307,-546.0313 883.9801,-540.0565 873.4145,-539.271 875.2307,-546.0313"/> +</g> +<!-- 21 --> +<g id="node22" class="node"> +<title>21</title> +<path fill="none" stroke="#b6d856" stroke-width="2" d="M1101.1904,-468C1101.1904,-468 1015.1904,-468 1015.1904,-468 1009.1904,-468 1003.1904,-462 1003.1904,-456 1003.1904,-456 1003.1904,-444 1003.1904,-444 1003.1904,-438 1009.1904,-432 1015.1904,-432 1015.1904,-432 1101.1904,-432 1101.1904,-432 1107.1904,-432 1113.1904,-438 1113.1904,-444 1113.1904,-444 1113.1904,-456 1113.1904,-456 1113.1904,-462 1107.1904,-468 1101.1904,-468"/> +<text text-anchor="middle" x="1058.1904" y="-453" font-family="sans" font-size="10.00" fill="#000000">pggb_on_chr</text> +<text text-anchor="middle" x="1058.1904" y="-442" font-family="sans" font-size="10.00" fill="#000000">chromosome: chrM</text> +</g> +<!-- 4->21 --> +<g id="edge41" class="edge"> +<title>4->21</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M715.9475,-591.1541C799.5281,-583.5992 1015.7806,-562.1006 1039.1904,-540 1055.7267,-524.3884 1059.745,-498.2958 1060.0551,-478.2136"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1063.5527,-478.0145 1059.9141,-468.0641 1056.5534,-478.1118 1063.5527,-478.0145"/> +</g> +<!-- 22 --> +<g id="node23" class="node"> +<title>22</title> +<path fill="none" stroke="#d85656" stroke-width="2" d="M1229.6904,-540C1229.6904,-540 1098.6904,-540 1098.6904,-540 1092.6904,-540 1086.6904,-534 1086.6904,-528 1086.6904,-528 1086.6904,-516 1086.6904,-516 1086.6904,-510 1092.6904,-504 1098.6904,-504 1098.6904,-504 1229.6904,-504 1229.6904,-504 1235.6904,-504 1241.6904,-510 1241.6904,-516 1241.6904,-516 1241.6904,-528 1241.6904,-528 1241.6904,-534 1235.6904,-540 1229.6904,-540"/> +<text text-anchor="middle" x="1164.1904" y="-525" font-family="sans" font-size="10.00" fill="#000000">samtools_index</text> +<text text-anchor="middle" x="1164.1904" y="-514" font-family="sans" font-size="10.00" fill="#000000">sample: data/chrInputs/chrM</text> +</g> +<!-- 4->22 --> +<g id="edge43" class="edge"> +<title>4->22</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M715.8137,-590.0901C782.7829,-581.9275 940.5488,-561.9978 1072.1904,-540 1073.6451,-539.7569 1075.1122,-539.5085 1076.5888,-539.2554"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1077.2016,-542.7014 1086.4455,-537.5244 1075.9908,-535.8069 1077.2016,-542.7014"/> +</g> +<!-- 23 --> +<g id="node24" class="node"> +<title>23</title> +<path fill="none" stroke="#b6d856" stroke-width="2" d="M1312.1904,-468C1312.1904,-468 1228.1904,-468 1228.1904,-468 1222.1904,-468 1216.1904,-462 1216.1904,-456 1216.1904,-456 1216.1904,-444 1216.1904,-444 1216.1904,-438 1222.1904,-432 1228.1904,-432 1228.1904,-432 1312.1904,-432 1312.1904,-432 1318.1904,-432 1324.1904,-438 1324.1904,-444 1324.1904,-444 1324.1904,-456 1324.1904,-456 1324.1904,-462 1318.1904,-468 1312.1904,-468"/> +<text text-anchor="middle" x="1270.1904" y="-453" font-family="sans" font-size="10.00" fill="#000000">pggb_on_chr</text> +<text text-anchor="middle" x="1270.1904" y="-442" font-family="sans" font-size="10.00" fill="#000000">chromosome: chrC</text> +</g> +<!-- 4->23 --> +<g id="edge44" class="edge"> +<title>4->23</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M715.8595,-593.0948C830.5391,-589.621 1209.986,-575.5145 1250.1904,-540 1267.2735,-524.9096 1271.5397,-498.7583 1271.9621,-478.5215"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1275.4599,-478.2499 1271.8695,-468.282 1268.4602,-478.3133 1275.4599,-478.2499"/> +</g> +<!-- 24 --> +<g id="node25" class="node"> +<title>24</title> +<path fill="none" stroke="#d85656" stroke-width="2" d="M1439.6904,-540C1439.6904,-540 1310.6904,-540 1310.6904,-540 1304.6904,-540 1298.6904,-534 1298.6904,-528 1298.6904,-528 1298.6904,-516 1298.6904,-516 1298.6904,-510 1304.6904,-504 1310.6904,-504 1310.6904,-504 1439.6904,-504 1439.6904,-504 1445.6904,-504 1451.6904,-510 1451.6904,-516 1451.6904,-516 1451.6904,-528 1451.6904,-528 1451.6904,-534 1445.6904,-540 1439.6904,-540"/> +<text text-anchor="middle" x="1375.1904" y="-525" font-family="sans" font-size="10.00" fill="#000000">samtools_index</text> +<text text-anchor="middle" x="1375.1904" y="-514" font-family="sans" font-size="10.00" fill="#000000">sample: data/chrInputs/chrC</text> +</g> +<!-- 4->24 --> +<g id="edge46" class="edge"> +<title>4->24</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M715.9047,-592.2792C806.5508,-587.2488 1068.4953,-570.9343 1284.1904,-540 1285.4906,-539.8135 1286.8004,-539.6207 1288.1177,-539.422"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1289.0088,-542.8243 1298.334,-537.7954 1287.9081,-535.9114 1289.0088,-542.8243"/> +</g> +<!-- 5 --> +<g id="node6" class="node"> +<title>5</title> +<path fill="none" stroke="#8fd856" stroke-width="2" d="M364.1904,-684C364.1904,-684 266.1904,-684 266.1904,-684 260.1904,-684 254.1904,-678 254.1904,-672 254.1904,-672 254.1904,-660 254.1904,-660 254.1904,-654 260.1904,-648 266.1904,-648 266.1904,-648 364.1904,-648 364.1904,-648 370.1904,-648 376.1904,-654 376.1904,-660 376.1904,-660 376.1904,-672 376.1904,-672 376.1904,-678 370.1904,-684 364.1904,-684"/> +<text text-anchor="middle" x="315.1904" y="-669" font-family="sans" font-size="10.00" fill="#000000">ragtag_scaffolding</text> +<text text-anchor="middle" x="315.1904" y="-658" font-family="sans" font-size="10.00" fill="#000000">haplotype: BANI-C-12</text> +</g> +<!-- 5->4 --> +<g id="edge16" class="edge"> +<title>5->4</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M376.2116,-650.0315C379.2429,-649.3253 382.2485,-648.6439 385.1904,-648 475.5562,-628.2212 582.4638,-610.1234 640.4953,-600.7379"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="641.0886,-604.1876 650.4054,-599.1431 639.9763,-597.2765 641.0886,-604.1876"/> +</g> +<!-- 6 --> +<g id="node7" class="node"> +<title>6</title> +<path fill="none" stroke="#d85656" stroke-width="2" d="M762.6904,-756C762.6904,-756 603.6904,-756 603.6904,-756 597.6904,-756 591.6904,-750 591.6904,-744 591.6904,-744 591.6904,-732 591.6904,-732 591.6904,-726 597.6904,-720 603.6904,-720 603.6904,-720 762.6904,-720 762.6904,-720 768.6904,-720 774.6904,-726 774.6904,-732 774.6904,-732 774.6904,-744 774.6904,-744 774.6904,-750 768.6904,-756 762.6904,-756"/> +<text text-anchor="middle" x="683.1904" y="-741" font-family="sans" font-size="10.00" fill="#000000">samtools_index</text> +<text text-anchor="middle" x="683.1904" y="-730" font-family="sans" font-size="10.00" fill="#000000">sample: data/haplotypes/TAIR10.1</text> +</g> +<!-- 6->5 --> +<g id="edge22" class="edge"> +<title>6->5</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M591.5529,-723.1609C534.9784,-713.5834 460.7202,-700.2675 386.2429,-684.1556"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="386.7276,-680.6791 376.2116,-681.9685 385.2365,-687.5184 386.7276,-680.6791"/> +</g> +<!-- 7 --> +<g id="node8" class="node"> +<title>7</title> +<path fill="none" stroke="#8fd856" stroke-width="2" d="M508.1904,-684C508.1904,-684 406.1904,-684 406.1904,-684 400.1904,-684 394.1904,-678 394.1904,-672 394.1904,-672 394.1904,-660 394.1904,-660 394.1904,-654 400.1904,-648 406.1904,-648 406.1904,-648 508.1904,-648 508.1904,-648 514.1904,-648 520.1904,-654 520.1904,-660 520.1904,-660 520.1904,-672 520.1904,-672 520.1904,-678 514.1904,-684 508.1904,-684"/> +<text text-anchor="middle" x="457.1904" y="-669" font-family="sans" font-size="10.00" fill="#000000">ragtag_scaffolding</text> +<text text-anchor="middle" x="457.1904" y="-658" font-family="sans" font-size="10.00" fill="#000000">haplotype: BROU-A-10</text> +</g> +<!-- 6->7 --> +<g id="edge23" class="edge"> +<title>6->7</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M626.4527,-719.9243C595.2886,-709.9959 556.4593,-697.6255 523.8548,-687.2382"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="524.542,-683.7839 513.9513,-684.0831 522.417,-690.4536 524.542,-683.7839"/> +</g> +<!-- 8 --> +<g id="node9" class="node"> +<title>8</title> +<path fill="none" stroke="#8fd856" stroke-width="2" d="M670.1904,-684C670.1904,-684 550.1904,-684 550.1904,-684 544.1904,-684 538.1904,-678 538.1904,-672 538.1904,-672 538.1904,-660 538.1904,-660 538.1904,-654 544.1904,-648 550.1904,-648 550.1904,-648 670.1904,-648 670.1904,-648 676.1904,-648 682.1904,-654 682.1904,-660 682.1904,-660 682.1904,-672 682.1904,-672 682.1904,-678 676.1904,-684 670.1904,-684"/> +<text text-anchor="middle" x="610.1904" y="-669" font-family="sans" font-size="10.00" fill="#000000">ragtag_scaffolding</text> +<text text-anchor="middle" x="610.1904" y="-658" font-family="sans" font-size="10.00" fill="#000000">haplotype: IP-Hum-2.9549</text> +</g> +<!-- 6->8 --> +<g id="edge24" class="edge"> +<title>6->8</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M664.7694,-719.8314C656.0374,-711.219 645.4586,-700.7851 635.9481,-691.4048"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="638.1829,-688.6931 628.6055,-684.1628 633.2674,-693.6769 638.1829,-688.6931"/> +</g> +<!-- 9 --> +<g id="node10" class="node"> +<title>9</title> +<path fill="none" stroke="#8fd856" stroke-width="2" d="M800.1904,-684C800.1904,-684 712.1904,-684 712.1904,-684 706.1904,-684 700.1904,-678 700.1904,-672 700.1904,-672 700.1904,-660 700.1904,-660 700.1904,-654 706.1904,-648 712.1904,-648 712.1904,-648 800.1904,-648 800.1904,-648 806.1904,-648 812.1904,-654 812.1904,-660 812.1904,-660 812.1904,-672 812.1904,-672 812.1904,-678 806.1904,-684 800.1904,-684"/> +<text text-anchor="middle" x="756.1904" y="-669" font-family="sans" font-size="10.00" fill="#000000">ragtag_scaffolding</text> +<text text-anchor="middle" x="756.1904" y="-658" font-family="sans" font-size="10.00" fill="#000000">haplotype: IP-Met-6</text> +</g> +<!-- 6->9 --> +<g id="edge25" class="edge"> +<title>6->9</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M701.6114,-719.8314C710.3433,-711.219 720.9221,-700.7851 730.4327,-691.4048"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="733.1133,-693.6769 737.7753,-684.1628 728.1978,-688.6931 733.1133,-693.6769"/> +</g> +<!-- 10 --> +<g id="node11" class="node"> +<title>10</title> +<path fill="none" stroke="#8fd856" stroke-width="2" d="M932.1904,-684C932.1904,-684 842.1904,-684 842.1904,-684 836.1904,-684 830.1904,-678 830.1904,-672 830.1904,-672 830.1904,-660 830.1904,-660 830.1904,-654 836.1904,-648 842.1904,-648 842.1904,-648 932.1904,-648 932.1904,-648 938.1904,-648 944.1904,-654 944.1904,-660 944.1904,-660 944.1904,-672 944.1904,-672 944.1904,-678 938.1904,-684 932.1904,-684"/> +<text text-anchor="middle" x="887.1904" y="-669" font-family="sans" font-size="10.00" fill="#000000">ragtag_scaffolding</text> +<text text-anchor="middle" x="887.1904" y="-658" font-family="sans" font-size="10.00" fill="#000000">haplotype: TAIR10.1</text> +</g> +<!-- 6->10 --> +<g id="edge26" class="edge"> +<title>6->10</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M734.4049,-719.9243C762.2929,-710.0815 796.981,-697.8386 826.253,-687.5073"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="827.6898,-690.7119 835.9548,-684.0831 825.36,-684.1109 827.6898,-690.7119"/> +</g> +<!-- 11 --> +<g id="node12" class="node"> +<title>11</title> +<path fill="none" stroke="#8fd856" stroke-width="2" d="M1086.1904,-684C1086.1904,-684 974.1904,-684 974.1904,-684 968.1904,-684 962.1904,-678 962.1904,-672 962.1904,-672 962.1904,-660 962.1904,-660 962.1904,-654 968.1904,-648 974.1904,-648 974.1904,-648 1086.1904,-648 1086.1904,-648 1092.1904,-648 1098.1904,-654 1098.1904,-660 1098.1904,-660 1098.1904,-672 1098.1904,-672 1098.1904,-678 1092.1904,-684 1086.1904,-684"/> +<text text-anchor="middle" x="1030.1904" y="-669" font-family="sans" font-size="10.00" fill="#000000">ragtag_scaffolding</text> +<text text-anchor="middle" x="1030.1904" y="-658" font-family="sans" font-size="10.00" fill="#000000">haplotype: Tanz-1.10024</text> +</g> +<!-- 6->11 --> +<g id="edge27" class="edge"> +<title>6->11</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M774.8851,-720.4229C824.6544,-710.7012 887.4899,-698.1367 951.8588,-684.2595"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="952.7489,-687.6479 961.7825,-682.1121 951.2684,-680.8063 952.7489,-687.6479"/> +</g> +<!-- 7->4 --> +<g id="edge17" class="edge"> +<title>7->4</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M513.928,-647.9243C553.3684,-635.3592 605.0858,-618.8829 640.9251,-607.465"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="642.1235,-610.7567 650.5892,-604.3862 639.9986,-604.087 642.1235,-610.7567"/> +</g> +<!-- 8->4 --> +<g id="edge18" class="edge"> +<title>8->4</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M628.6114,-647.8314C637.3433,-639.219 647.9221,-628.7851 657.4327,-619.4048"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="660.1133,-621.6769 664.7753,-612.1628 655.1978,-616.6931 660.1133,-621.6769"/> +</g> +<!-- 9->4 --> +<g id="edge19" class="edge"> +<title>9->4</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M737.7694,-647.8314C729.0374,-639.219 718.4586,-628.7851 708.9481,-619.4048"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="711.1829,-616.6931 701.6055,-612.1628 706.2674,-621.6769 711.1829,-616.6931"/> +</g> +<!-- 10->4 --> +<g id="edge20" class="edge"> +<title>10->4</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M835.9759,-647.9243C801.8556,-635.8819 757.5563,-620.2468 725.4508,-608.9154"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="726.4981,-605.5735 715.9033,-605.5457 724.1683,-612.1745 726.4981,-605.5735"/> +</g> +<!-- 11->4 --> +<g id="edge21" class="edge"> +<title>11->4</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M961.7825,-649.8879C958.8813,-649.2427 956.0079,-648.6109 953.1904,-648 873.2592,-630.669 779.5683,-612.3836 726.2128,-602.1607"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="726.575,-598.6666 716.0956,-600.2263 725.2604,-605.5421 726.575,-598.6666"/> +</g> +<!-- 12->3 --> +<g id="edge15" class="edge"> +<title>12->3</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M95.1904,-503.8314C95.1904,-496.131 95.1904,-486.9743 95.1904,-478.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="98.6905,-478.4132 95.1904,-468.4133 91.6905,-478.4133 98.6905,-478.4132"/> +</g> +<!-- 13->2 --> +<g id="edge8" class="edge"> +<title>13->2</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M365.9929,-439.0647C433.1878,-426.1288 544.908,-404.6212 616.2452,-390.8878"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="617.3092,-394.2474 626.4672,-388.92 615.9858,-387.3736 617.3092,-394.2474"/> +</g> +<!-- 14->13 --> +<g id="edge30" class="edge"> +<title>14->13</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M309.1904,-503.8314C309.1904,-496.131 309.1904,-486.9743 309.1904,-478.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="312.6905,-478.4132 309.1904,-468.4133 305.6905,-478.4133 312.6905,-478.4132"/> +</g> +<!-- 15->2 --> +<g id="edge9" class="edge"> +<title>15->2</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M563.5651,-431.8314C584.8691,-422.2446 611.1887,-410.4008 633.7115,-400.2655"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="635.423,-403.3334 643.1059,-396.038 632.5504,-396.95 635.423,-403.3334"/> +</g> +<!-- 16->15 --> +<g id="edge33" class="edge"> +<title>16->15</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M523.1904,-503.8314C523.1904,-496.131 523.1904,-486.9743 523.1904,-478.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="526.6905,-478.4132 523.1904,-468.4133 519.6905,-478.4133 526.6905,-478.4132"/> +</g> +<!-- 17->2 --> +<g id="edge10" class="edge"> +<title>17->2</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M683.1904,-431.8314C683.1904,-424.131 683.1904,-414.9743 683.1904,-406.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="686.6905,-406.4132 683.1904,-396.4133 679.6905,-406.4133 686.6905,-406.4132"/> +</g> +<!-- 18->17 --> +<g id="edge36" class="edge"> +<title>18->17</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M723.5639,-503.8314C717.3443,-495.5386 709.8581,-485.557 703.0304,-476.4533"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="705.8004,-474.3133 697.0003,-468.4133 700.2004,-478.5133 705.8004,-474.3133"/> +</g> +<!-- 19->2 --> +<g id="edge11" class="edge"> +<title>19->2</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M803.5633,-431.8314C782.0305,-422.2018 755.4055,-410.295 732.6752,-400.1299"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="734.0829,-396.9254 723.5253,-396.038 731.2252,-403.3155 734.0829,-396.9254"/> +</g> +<!-- 20->19 --> +<g id="edge39" class="edge"> +<title>20->19</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M924.1898,-503.8314C910.7572,-494.7927 894.3431,-483.7476 879.8865,-474.0198"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="881.4329,-470.8418 871.1824,-468.1628 877.525,-476.6494 881.4329,-470.8418"/> +</g> +<!-- 21->2 --> +<g id="edge12" class="edge"> +<title>21->2</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1002.8578,-439.3762C935.532,-426.4496 821.9491,-404.6417 749.866,-390.8017"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="750.4599,-387.3519 739.9793,-388.9035 749.1399,-394.2263 750.4599,-387.3519"/> +</g> +<!-- 22->21 --> +<g id="edge42" class="edge"> +<title>22->21</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1137.4421,-503.8314C1124.1351,-494.7927 1107.8744,-483.7476 1093.5529,-474.0198"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1095.1689,-470.8864 1084.9301,-468.1628 1091.2357,-476.677 1095.1689,-470.8864"/> +</g> +<!-- 23->2 --> +<g id="edge13" class="edge"> +<title>23->2</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1216.019,-443.3555C1108.1874,-430.1291 866.9961,-400.5452 749.738,-386.1626"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="750.1593,-382.6881 739.8075,-384.9445 749.307,-389.636 750.1593,-382.6881"/> +</g> +<!-- 24->23 --> +<g id="edge45" class="edge"> +<title>24->23</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1348.6944,-503.8314C1335.513,-494.7927 1319.4056,-483.7476 1305.2193,-474.0198"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1306.9045,-470.9316 1296.6778,-468.1628 1302.9458,-476.7047 1306.9045,-470.9316"/> +</g> +<!-- 25 --> +<g id="node26" class="node"> +<title>25</title> +<path fill="none" stroke="#d87d56" stroke-width="2" d="M641.6904,-252C641.6904,-252 570.6904,-252 570.6904,-252 564.6904,-252 558.6904,-246 558.6904,-240 558.6904,-240 558.6904,-228 558.6904,-228 558.6904,-222 564.6904,-216 570.6904,-216 570.6904,-216 641.6904,-216 641.6904,-216 647.6904,-216 653.6904,-222 653.6904,-228 653.6904,-228 653.6904,-240 653.6904,-240 653.6904,-246 647.6904,-252 641.6904,-252"/> +<text text-anchor="middle" x="606.1904" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">aggregate_stats</text> +</g> +<!-- 25->0 --> +<g id="edge2" class="edge"> +<title>25->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M582.0294,-215.8469C571.3167,-206.4046 559.6878,-193.9282 553.1904,-180 532.8555,-136.4091 525.9215,-115.6217 546.1904,-72 552.3523,-58.7387 563.5524,-47.5619 574.8802,-38.8788"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="576.9908,-41.6723 583.0811,-33.0028 572.9137,-35.9822 576.9908,-41.6723"/> +</g> +<!-- 29 --> +<g id="node30" class="node"> +<title>29</title> +<path fill="none" stroke="#68d856" stroke-width="2" d="M653.1904,-108C653.1904,-108 567.1904,-108 567.1904,-108 561.1904,-108 555.1904,-102 555.1904,-96 555.1904,-96 555.1904,-84 555.1904,-84 555.1904,-78 561.1904,-72 567.1904,-72 567.1904,-72 653.1904,-72 653.1904,-72 659.1904,-72 665.1904,-78 665.1904,-84 665.1904,-84 665.1904,-96 665.1904,-96 665.1904,-102 659.1904,-108 653.1904,-108"/> +<text text-anchor="middle" x="610.1904" y="-87.5" font-family="sans" font-size="10.00" fill="#000000">workflow_statistics</text> +</g> +<!-- 25->29 --> +<g id="edge52" class="edge"> +<title>25->29</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M585.3326,-215.6461C576.0364,-206.0709 566.0925,-193.54 561.1904,-180 555.7436,-164.9557 555.4277,-158.9262 561.1904,-144 565.3096,-133.3306 572.624,-123.4665 580.3653,-115.1681"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="582.9251,-117.558 587.5154,-108.0091 577.9723,-112.6113 582.9251,-117.558"/> +</g> +<!-- 30 --> +<g id="node31" class="node"> +<title>30</title> +<path fill="none" stroke="#d8cb56" stroke-width="2" d="M686.1904,-180C686.1904,-180 582.1904,-180 582.1904,-180 576.1904,-180 570.1904,-174 570.1904,-168 570.1904,-168 570.1904,-156 570.1904,-156 570.1904,-150 576.1904,-144 582.1904,-144 582.1904,-144 686.1904,-144 686.1904,-144 692.1904,-144 698.1904,-150 698.1904,-156 698.1904,-156 698.1904,-168 698.1904,-168 698.1904,-174 692.1904,-180 686.1904,-180"/> +<text text-anchor="middle" x="634.1904" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">pggb_log_compression</text> +</g> +<!-- 25->30 --> +<g id="edge53" class="edge"> +<title>25->30</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M613.256,-215.8314C616.3164,-207.9617 619.9683,-198.5712 623.3585,-189.8533"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="626.6672,-191.0019 627.0297,-180.4133 620.1431,-188.4647 626.6672,-191.0019"/> +</g> +<!-- 26->25 --> +<g id="edge47" class="edge"> +<title>26->25</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M622.6388,-287.8314C620.2601,-280.0463 617.4265,-270.7729 614.7871,-262.1347"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="618.0861,-260.954 611.8166,-252.4133 611.3917,-262.9996 618.0861,-260.954"/> +</g> +<!-- 27->0 --> +<g id="edge3" class="edge"> +<title>27->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M736.4524,-143.9817C721.8321,-125.2411 697.6217,-95.4219 674.1904,-72 664.0306,-61.8444 652.1788,-51.4834 641.4549,-42.5886"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="643.4776,-39.7214 633.5208,-36.1002 639.0462,-45.1402 643.4776,-39.7214"/> +</g> +<!-- 28->0 --> +<g id="edge4" class="edge"> +<title>28->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M765.8436,-78.9078C733.8695,-66.3962 681.7758,-46.0117 646.761,-32.3102"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="647.9567,-29.0197 637.3688,-28.635 645.4058,-35.5384 647.9567,-29.0197"/> +</g> +<!-- 29->0 --> +<g id="edge5" class="edge"> +<title>29->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M610.1904,-71.8314C610.1904,-64.131 610.1904,-54.9743 610.1904,-46.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="613.6905,-46.4132 610.1904,-36.4133 606.6905,-46.4133 613.6905,-46.4132"/> +</g> +<!-- 30->29 --> +<g id="edge51" class="edge"> +<title>30->29</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M628.1342,-143.8314C625.5392,-136.0463 622.448,-126.7729 619.5686,-118.1347"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="622.8109,-116.7933 616.3281,-108.4133 616.1701,-119.0069 622.8109,-116.7933"/> +</g> +</g> +</svg> diff --git a/getApps.sh b/getApps.sh new file mode 100755 index 0000000000000000000000000000000000000000..76fed73122e8cb06c897154413c3458be8817887 --- /dev/null +++ b/getApps.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# +# This script download apps used by the workflow in the designated folder +# @author : alexis.mergez@inrae.fr + +# Initializing arguments +appdir="" + +while getopts "a:" option; do + case "$option" in + a) appdir="$OPTARG";; + \?) echo "Usage: $0 [-a apptainer dir]" >&2 + exit 1;; + esac +done + +# Script +apptainer build $appdir/PanGeTools.sif oras://registry.forgemia.inra.fr/alexis.mergez/pangetools/pangetools:latest +apptainer build $appdir/pan1c-env.sif oras://registry.forgemia.inra.fr/alexis.mergez/pan1capps/pan1cenv:latest +apptainer build $appdir/pggb.sif oras://registry.forgemia.inra.fr/alexis.mergez/pangratools/pggb:latest +apptainer build $appdir/pan1c-box.sif oras://registry.forgemia.inra.fr/alexis.mergez/pan1capps/pan1cbox:latest diff --git a/runSnakemake.sh b/runSnakemake.sh index d3dd88e0a93243bd33325c595f65a94d1bc7f53a..5f63d8d1715590abab5f8cfebd110a5844f67bad 100755 --- a/runSnakemake.sh +++ b/runSnakemake.sh @@ -8,10 +8,9 @@ module purge module load containers/Apptainer/1.2.5 -module load devel/Miniconda/Miniconda3 -source ~/.bashrc -mamba activate snakemake +# Creating DAG +apptainer run <path_to_pan1c-box>/pan1c-box.sif snakemake -c $(nproc) --dag | dot -Tsvg > workflow.svg +# Running the workflow +apptainer run <path_to_pan1c-box>/pan1c-box.sif snakemake -c $(nproc) -snakemake -c $(nproc) --dag | dot -Tsvg > workflow.svg -snakemake -c $(nproc)