From 0ce141b41f858787ffcaf8930572a3c6b8671c4e Mon Sep 17 00:00:00 2001
From: khalid <khalid.belkhir@umontpellier.fr>
Date: Fri, 3 Dec 2021 16:34:12 +0100
Subject: [PATCH] Add snap index

---
 tools/snap_index/snap_index.rule.snakefile | 25 ++++++++
 tools/snap_index/snap_index.yaml           | 66 ++++++++++++++++++++++
 2 files changed, 91 insertions(+)
 create mode 100755 tools/snap_index/snap_index.rule.snakefile
 create mode 100755 tools/snap_index/snap_index.yaml

diff --git a/tools/snap_index/snap_index.rule.snakefile b/tools/snap_index/snap_index.rule.snakefile
new file mode 100755
index 00000000..fe8c9d8a
--- /dev/null
+++ b/tools/snap_index/snap_index.rule.snakefile
@@ -0,0 +1,25 @@
+rule <step_name>__snap_index:
+    input:
+        **<step_name>__snap_index_inputs()
+    output:
+       index = (
+            config["<step_name>__snap_index_output_dir"]+"/Genome",
+            config["<step_name>__snap_index_output_dir"]+"/GenomeIndex",
+            config["<step_name>__snap_index_output_dir"]+"/GenomeIndexHash",
+            config["<step_name>__snap_index_output_dir"]+"/OverflowTable",
+        ),
+    threads:
+            config["<step_name>__snap_index_threads"]    
+    log:
+        config["results_dir"]+"/logs/" + config["<step_name>__snap_index_output_dir"] + "/index.log"
+    params:
+        command = config["<step_name>__snap_index_command"],
+        snap_index_seed_size = config["<step_name>__snap_index_seed_size"],
+        out_dir = config["<step_name>__snap_index_output_dir"]
+    shell:
+        "{params.command} "
+        "{input.genome_fasta} "   
+        "{params.out_dir} "     
+        "-s  {params.snap_index_seed_size} "        
+        "-t{threads} |& tee {log};" #no space after -t
+       
diff --git a/tools/snap_index/snap_index.yaml b/tools/snap_index/snap_index.yaml
new file mode 100755
index 00000000..7c71ca81
--- /dev/null
+++ b/tools/snap_index/snap_index.yaml
@@ -0,0 +1,66 @@
+{
+  id: snap_index,
+  name: Scalable Nucleotide Alignment Program,
+  article: arXiv:1111.5572v1,
+  website: "https://www.microsoft.com/en-us/research/project/snap/",
+  git: "https://github.com/amplab/snap",
+  description: "fast and accurate aligner for short DNA reads. It is optimized for modern read lengths of 100 bases or higher, and align them quickly through a hash-based indexing scheme.",
+  version: "2.0",
+  documentation: "https://github.com/amplab/snap/tree/master/docs",
+  multiqc: "custom",
+  commands:
+    [
+      {
+        name: snap_index,
+        cname:  "snap index",
+        command: snap-align index,
+        category: "indexing",
+        output_dir: snap/index,
+        inputs: [{ name: genome_fasta, type: "contigs", description: "Fasta reference", from: "parameter" }],
+        outputs: [{ name: index, type: "snap_index", file: index, description: "Index files for snap alignment" }],
+        options:
+          [
+            {
+              name: snap_index_threads,
+              prefix: -t,
+              type: numeric,
+              value: 4,
+              min: 1,
+              max: NA,
+              step: 1,
+              label: "Number of threads to use",
+            },
+            {
+              name: snap_index_genome_fasta,
+              type: input_file,
+              value: "",
+              label: "Path to reference genome fasta file",
+            },
+            {
+              name: snap_index_seed_size,
+              prefix: -s,
+              type: numeric,
+              value: 24,
+              min: 12,
+              max: 64,
+              step: 1,
+              label: "seed size",
+            }
+          ]
+      },
+    ],
+    install:  {
+    snap: [
+      "cd /opt/biotools",
+      "git clone https://github.com/amplab/snap.git",
+      "cd snap",
+      "make -j 8",
+      "ENV PATH /opt/biotools/snap:$PATH",
+    ]
+  },
+  citations:  {
+    snap: [
+      "Faster and More Accurate Sequence Alignment with SNAP. Matei Zaharia, William J. Bolosky, Kristal Curtis, Armando Fox, David Patterson, Scott Shenker, Ion Stoica, Richard M. Karp, and Taylor Sittler. arXiv:1111.5572v1, November 2011."
+    ]
+  }
+}
\ No newline at end of file
-- 
GitLab